// Lucide-style stroke icons. All inherit currentColor.
const Icon = ({ children, size = 20, className = "", strokeWidth = 2 }) => (
  <svg xmlns="http://www.w3.org/2000/svg" width={size} height={size} viewBox="0 0 24 24"
       fill="none" stroke="currentColor" strokeWidth={strokeWidth}
       strokeLinecap="round" strokeLinejoin="round" className={className}>
    {children}
  </svg>
);

const IconSearch    = (p) => <Icon {...p}><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></Icon>;
const IconDownload  = (p) => <Icon {...p}><path d="M12 3v12"/><path d="m7 10 5 5 5-5"/><path d="M5 21h14"/></Icon>;
const IconPrinter   = (p) => <Icon {...p}><path d="M6 9V3h12v6"/><rect x="3" y="9" width="18" height="9" rx="2"/><path d="M6 14h12v7H6z"/></Icon>;
const IconStar      = (p) => <Icon {...p}><path d="m12 3 2.7 5.7 6.3.9-4.6 4.4 1.1 6.2L12 17.3 6.5 20.2l1.1-6.2L3 9.6l6.3-.9z"/></Icon>;
const IconHeart     = (p) => <Icon {...p}><path d="M12 20s-7-4.4-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.6-7 10-7 10z"/></Icon>;
const IconSparkle   = (p) => <Icon {...p}><path d="M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8"/></Icon>;
const IconCloud     = (p) => <Icon {...p}><path d="M7 18a5 5 0 1 1 1.7-9.7A6 6 0 0 1 20 11a4 4 0 0 1-1 7.9H7z"/></Icon>;
const IconUpload    = (p) => <Icon {...p}><path d="M12 21V9"/><path d="m7 14 5-5 5 5"/><path d="M5 3h14"/></Icon>;
const IconPlus      = (p) => <Icon {...p}><path d="M12 5v14M5 12h14"/></Icon>;
const IconMenu      = (p) => <Icon {...p}><path d="M4 7h16M4 12h16M4 17h16"/></Icon>;
const IconClose     = (p) => <Icon {...p}><path d="M6 6l12 12M18 6 6 18"/></Icon>;
const IconChevronR  = (p) => <Icon {...p}><path d="m9 6 6 6-6 6"/></Icon>;
const IconChevronL  = (p) => <Icon {...p}><path d="m15 6-6 6 6 6"/></Icon>;
const IconArrowR    = (p) => <Icon {...p}><path d="M5 12h14"/><path d="m13 5 7 7-7 7"/></Icon>;
const IconHome      = (p) => <Icon {...p}><path d="M3 11 12 3l9 8"/><path d="M5 10v10h14V10"/></Icon>;
const IconGrid      = (p) => <Icon {...p}><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></Icon>;
const IconChart     = (p) => <Icon {...p}><path d="M4 20V8"/><path d="M10 20V4"/><path d="M16 20v-8"/><path d="M22 20H2"/></Icon>;
const IconSettings  = (p) => <Icon {...p}><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.9.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.9 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.9l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.9.3h.1a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.9-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.9v.1a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></Icon>;
const IconImage     = (p) => <Icon {...p}><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-5-5L5 21"/></Icon>;
const IconTag       = (p) => <Icon {...p}><path d="M3 12V5a2 2 0 0 1 2-2h7l9 9-9 9z"/><circle cx="8" cy="8" r="1.5"/></Icon>;
const IconTrophy    = (p) => <Icon {...p}><path d="M8 4h8v5a4 4 0 0 1-8 0z"/><path d="M4 5h4v3a3 3 0 0 1-3-3z" /><path d="M20 5h-4v3a3 3 0 0 0 3-3z"/><path d="M10 14h4v3h-4z"/><path d="M8 21h8"/></Icon>;
const IconFilter    = (p) => <Icon {...p}><path d="M3 5h18"/><path d="M6 12h12"/><path d="M10 19h4"/></Icon>;
const IconEye       = (p) => <Icon {...p}><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/></Icon>;
const IconEdit      = (p) => <Icon {...p}><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 1 1 3 3L7 19l-4 1 1-4z"/></Icon>;
const IconTrash     = (p) => <Icon {...p}><path d="M3 6h18"/><path d="M8 6V4h8v2"/><path d="M5 6v14h14V6"/><path d="M10 11v5M14 11v5"/></Icon>;
const IconUser      = (p) => <Icon {...p}><circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/></Icon>;
const IconBell      = (p) => <Icon {...p}><path d="M6 8a6 6 0 1 1 12 0c0 6 3 7 3 7H3s3-1 3-7"/><path d="M10 21a2 2 0 0 0 4 0"/></Icon>;
const IconCheck     = (p) => <Icon {...p}><path d="m5 12 5 5 9-12"/></Icon>;
const IconBrush     = (p) => <Icon {...p}><path d="M9.06 11.9a3 3 0 1 1-4.24 4.24c1.18 0 2-1 2-2 0-1.18 1.06-2.24 2.24-2.24z"/><path d="m9 12 9.5-9.5a2.1 2.1 0 1 1 3 3L12 15z"/></Icon>;
const IconPalette   = (p) => <Icon {...p}><path d="M12 22a10 10 0 1 1 10-10c0 2.5-2 4-4 4h-2a2 2 0 0 0-2 2v2c0 1.1-.9 2-2 2z"/><circle cx="7.5" cy="10.5" r="1"/><circle cx="12" cy="7.5" r="1"/><circle cx="16.5" cy="10.5" r="1"/></Icon>;
const IconShield    = (p) => <Icon {...p}><path d="M12 3 4 6v6c0 5 4 8 8 9 4-1 8-4 8-9V6z"/></Icon>;

Object.assign(window, {
  Icon, IconSearch, IconDownload, IconPrinter, IconStar, IconHeart, IconSparkle,
  IconCloud, IconUpload, IconPlus, IconMenu, IconClose, IconChevronR, IconChevronL,
  IconArrowR, IconHome, IconGrid, IconChart, IconSettings, IconImage, IconTag,
  IconTrophy, IconFilter, IconEye, IconEdit, IconTrash, IconUser, IconBell,
  IconCheck, IconBrush, IconPalette, IconShield,
});
