/* Vendoo Icons 1.0 — compact local SVG icon set based on Lucide geometry (ISC). */ (() => { const ICONS = { check: '', heart: '', 'heart-filled': '', pencil: '', mail: '', plus: '', download: '', 'trash-2': '', 'zoom-in': '', 'zoom-out': '', maximize: '', x: '', 'triangle-alert': '', sparkles: '', image: '', list: '', folder: '', 'folder-open': '', copy: '', 'external-link': '', puzzle: '', 'shield-check': '', 'shield-alert': '', 'alert-triangle': '', 'database-backup': '', 'calendar-clock': '', 'scan-check': '', 'package-check': '', 'package-x': '', 'plug-zap': '', 'file-archive': '', 'package-open': '', 'radio-tower': '', 'badge-check': '', 'upload-cloud': '', 'check-circle-2': '', 'archive': '', 'refresh-cw': '', 'rotate-ccw': '', 'circle-help': '', chrome: '', firefox: '', compass: '', edge: '', }; function svg(name, options = {}) { const size = Number(options.size || 18); const label = options.label ? ` role="img" aria-label="${String(options.label).replace(/"/g, '"')}"` : ' aria-hidden="true"'; return `${ICONS[name] || ICONS.image}`; } function render(root = document) { root.querySelectorAll('[data-vd-icon]').forEach(node => { const name = node.dataset.vdIcon; const size = node.dataset.vdIconSize || 18; node.innerHTML = svg(name, { size }); node.classList.add('vd-icon-host'); }); } window.VendooIcons = Object.freeze({ svg, render, names: Object.keys(ICONS) }); document.addEventListener('DOMContentLoaded', () => render()); })();