// icons.jsx — SVG icon set. All accept `size` and `color` (default currentColor).
// Stroke-based, 1.5px stroke for crispness.

const _Icon = ({ size = 20, color, children, fill = false, strokeWidth = 1.6 }) => (
  <svg width={size} height={size} viewBox="0 0 24 24" fill="none"
       stroke={color || 'currentColor'} strokeWidth={strokeWidth}
       strokeLinecap="round" strokeLinejoin="round"
       style={{ display: 'block', flexShrink: 0 }}>
    {children}
  </svg>
);

const Icons = {
  Search:   (p) => <_Icon {...p}><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></_Icon>,
  Plus:     (p) => <_Icon {...p}><path d="M12 5v14M5 12h14"/></_Icon>,
  Play:     (p) => <_Icon {...p}><path d="M7 5l12 7-12 7V5z" fill={p?.fillTri ? (p.color||'currentColor') : 'none'}/></_Icon>,
  Pause:    (p) => <_Icon {...p}><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></_Icon>,
  Stop:     (p) => <_Icon {...p}><rect x="6" y="6" width="12" height="12" rx="2"/></_Icon>,
  Mic:      (p) => <_Icon {...p}><rect x="9" y="3" width="6" height="12" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></_Icon>,
  Camera:   (p) => <_Icon {...p}><path d="M3 8a2 2 0 0 1 2-2h2l2-2h6l2 2h2a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8z"/><circle cx="12" cy="13" r="3.5"/></_Icon>,
  Image:    (p) => <_Icon {...p}><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="1.6"/><path d="M3 17l5-5 5 5 3-3 5 5"/></_Icon>,
  Type:     (p) => <_Icon {...p}><path d="M5 6h14M12 6v13"/></_Icon>,
  Back:     (p) => <_Icon {...p}><path d="M15 5l-7 7 7 7"/></_Icon>,
  Forward:  (p) => <_Icon {...p}><path d="M9 5l7 7-7 7"/></_Icon>,
  Close:    (p) => <_Icon {...p}><path d="M6 6l12 12M6 18L18 6"/></_Icon>,
  Check:    (p) => <_Icon {...p}><path d="M4 12l5 5 11-12"/></_Icon>,
  More:     (p) => <_Icon {...p}><circle cx="5" cy="12" r="1.5" fill={p?.color||'currentColor'}/><circle cx="12" cy="12" r="1.5" fill={p?.color||'currentColor'}/><circle cx="19" cy="12" r="1.5" fill={p?.color||'currentColor'}/></_Icon>,
  Cog:      (p) => <_Icon {...p}><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.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-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 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 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.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.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.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>,
  Home:     (p) => <_Icon {...p}><path d="M4 11l8-7 8 7v9a1 1 0 0 1-1 1h-4v-6h-6v6H5a1 1 0 0 1-1-1v-9z"/></_Icon>,
  User:     (p) => <_Icon {...p}><circle cx="12" cy="8" r="4"/><path d="M4 21c0-4 3.6-7 8-7s8 3 8 7"/></_Icon>,
  Bag:      (p) => <_Icon {...p}><path d="M5 8h14l-1 12a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1L5 8z"/><path d="M9 8V6a3 3 0 0 1 6 0v2"/></_Icon>,
  Trash:    (p) => <_Icon {...p}><path d="M4 7h16M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2M6 7l1 13a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-13"/></_Icon>,
  Wifi:     (p) => <_Icon {...p}><path d="M2 9a16 16 0 0 1 20 0M5 12.5a11 11 0 0 1 14 0M8 16a6 6 0 0 1 8 0"/><circle cx="12" cy="19" r="0.8" fill={p?.color||'currentColor'}/></_Icon>,
  Plane:    (p) => <_Icon {...p}><path d="M10 19l1.5-5L4 11l1-2 8 1 4-6 2 1-2 7 4 4-2 1-5-3-1 5-2-1z"/></_Icon>,
  Heart:    (p) => <_Icon {...p}><path d="M12 20s-7-4.5-7-10a4 4 0 0 1 7-2.5A4 4 0 0 1 19 10c0 5.5-7 10-7 10z"/></_Icon>,
  Warning:  (p) => <_Icon {...p}><path d="M12 4l10 17H2L12 4z"/><path d="M12 10v5M12 18v.5"/></_Icon>,
  Info:     (p) => <_Icon {...p}><circle cx="12" cy="12" r="9"/><path d="M12 11v6M12 7.5v.5"/></_Icon>,
  Sparkle:  (p) => <_Icon {...p}><path d="M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5L12 3zM19 14l.7 2 2 .7-2 .7-.7 2-.7-2-2-.7 2-.7.7-2zM5 14l.7 2 2 .7-2 .7-.7 2-.7-2-2-.7 2-.7.7-2z"/></_Icon>,
  ChevronR: (p) => <_Icon {...p}><path d="M9 6l6 6-6 6"/></_Icon>,
  ChevronD: (p) => <_Icon {...p}><path d="M6 9l6 6 6-6"/></_Icon>,
  ChevronU: (p) => <_Icon {...p}><path d="M6 15l6-6 6 6"/></_Icon>,
  Volume:   (p) => <_Icon {...p}><path d="M5 9v6h3l5 4V5L8 9H5z"/><path d="M16 8a5 5 0 0 1 0 8"/></_Icon>,
  Refresh:  (p) => <_Icon {...p}><path d="M3 12a9 9 0 0 1 15-6.7L21 8M21 4v4h-4M21 12a9 9 0 0 1-15 6.7L3 16M3 20v-4h4"/></_Icon>,
  Heart2:   (p) => <_Icon {...p}><path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1L12 21l7.8-7.6 1-1a5.5 5.5 0 0 0 0-7.8z"/></_Icon>,
  Globe:    (p) => <_Icon {...p}><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/></_Icon>,
  Mail:     (p) => <_Icon {...p}><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 7 9-7"/></_Icon>,
  Edit:     (p) => <_Icon {...p}><path d="M4 20l1-5L17 3l4 4L9 19l-5 1z"/></_Icon>,
  Share:    (p) => <_Icon {...p}><path d="M12 4v12M8 8l4-4 4 4M5 14v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4"/></_Icon>,
  Grid:     (p) => <_Icon {...p}><rect x="4" y="4" width="7" height="7" rx="1"/><rect x="13" y="4" width="7" height="7" rx="1"/><rect x="4" y="13" width="7" height="7" rx="1"/><rect x="13" y="13" width="7" height="7" rx="1"/></_Icon>,
  List:     (p) => <_Icon {...p}><path d="M8 6h12M8 12h12M8 18h12"/><circle cx="4" cy="6" r="1" fill={p?.color||'currentColor'}/><circle cx="4" cy="12" r="1" fill={p?.color||'currentColor'}/><circle cx="4" cy="18" r="1" fill={p?.color||'currentColor'}/></_Icon>,
  Sun:      (p) => <_Icon {...p}><circle cx="12" cy="12" r="4"/><path d="M12 3v2M12 19v2M3 12h2M19 12h2M5.6 5.6l1.4 1.4M17 17l1.4 1.4M5.6 18.4L7 17M17 7l1.4-1.4"/></_Icon>,
  Moon:     (p) => <_Icon {...p}><path d="M20 14a8 8 0 1 1-10-10 6 6 0 0 0 10 10z"/></_Icon>,
  Eye:      (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>,
  Question: (p) => <_Icon {...p}><circle cx="12" cy="12" r="9"/><path d="M9.5 9a2.5 2.5 0 1 1 3.5 2.3c-.7.3-1 .8-1 1.5v.7M12 17v.5"/></_Icon>,
  Clipboard:(p) => <_Icon {...p}><rect x="6" y="4" width="12" height="17" rx="2"/><rect x="9" y="2.5" width="6" height="3.5" rx="1"/><path d="M9 11h6M9 14h6M9 17h4"/></_Icon>,
  Star:     (p) => <_Icon {...p}><path d="M12 3.5l2.7 5.5 6 .9-4.4 4.2 1 6L12 17.3 6.6 20l1-6L3.3 9.9l6-.9L12 3.5z" fill={p?.filled ? (p.color||'currentColor') : 'none'}/></_Icon>,
  Mascot:   (p) => <_Icon {...p}><circle cx="12" cy="13" r="6"/><path d="M7 8.5C7 7 8 6 9 6M17 8.5c0-1.5-1-2.5-2-2.5"/><circle cx="10" cy="12.5" r="0.6" fill={p?.color||'currentColor'}/><circle cx="14" cy="12.5" r="0.6" fill={p?.color||'currentColor'}/><path d="M11 15c.4.3.7.4 1 .4s.6-.1 1-.4"/></_Icon>,
  Seed:     (p) => <_Icon {...p}><path d="M12 3C8.5 6.8 6.5 10.4 6.5 14a5.5 5.5 0 0 0 11 0c0-3.6-2-7.2-5.5-11z" fill={p?.filled ? (p.color||'currentColor') : 'none'}/></_Icon>,
};

window.Icons = Icons;
