// ---------- Inline SVG icons ----------
const SvgWrap = (props) => (
  <svg
    width={props.size || 16} height={props.size || 16}
    viewBox="0 0 24 24" fill="none"
    stroke={props.stroke || 'currentColor'} strokeWidth={props.strokeWidth || 1.8}
    strokeLinecap="round" strokeLinejoin="round" {...props.svgProps}
  >{props.children}</svg>
);

window.Icon = {
  Star: (p) => (
    <SvgWrap {...p} svgProps={{ fill: p.filled ? p.fillColor || '#f59e0b' : 'none' }}>
      <polygon points="12 2 15 9 22 9.5 17 14.5 18.5 22 12 18 5.5 22 7 14.5 2 9.5 9 9 12 2"/>
    </SvgWrap>
  ),
  Flame: (p) => (
    <SvgWrap {...p} svgProps={{ fill: p.filled ? p.fillColor || '#ef4444' : 'none' }}>
      <path d="M12 2c1 3 4 4 4 8a4 4 0 0 1-8 0c0-1 .5-2 1-3 0 2 1 3 2 3-1-3 1-5 1-8z"/>
      <path d="M7 13a5 5 0 1 0 10 0c0 4-2 8-5 9-3-1-5-5-5-9z"/>
    </SvgWrap>
  ),
  Plus: (p) => (<SvgWrap {...p}><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></SvgWrap>),
  X: (p) => (<SvgWrap {...p}><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></SvgWrap>),
  Chevron: (p) => (<SvgWrap {...p}><polyline points={p.dir === 'left' ? '15 6 9 12 15 18' : p.dir === 'down' ? '6 9 12 15 18 9' : p.dir === 'up' ? '6 15 12 9 18 15' : '9 6 15 12 9 18'}/></SvgWrap>),
  Calendar: (p) => (
    <SvgWrap {...p}>
      <rect x="3" y="4" width="18" height="17" rx="2"/>
      <line x1="3" y1="9" x2="21" y2="9"/>
      <line x1="8" y1="2" x2="8" y2="6"/><line x1="16" y1="2" x2="16" y2="6"/>
    </SvgWrap>
  ),
  List: (p) => (
    <SvgWrap {...p}>
      <line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/>
      <circle cx="4" cy="6" r="1"/><circle cx="4" cy="12" r="1"/><circle cx="4" cy="18" r="1"/>
    </SvgWrap>
  ),
  Filter: (p) => (<SvgWrap {...p}><polygon points="22 3 2 3 10 12.5 10 19 14 21 14 12.5 22 3"/></SvgWrap>),
  Drag: (p) => (
    <SvgWrap {...p}>
      <circle cx="9" cy="6" r="1.2"/><circle cx="15" cy="6" r="1.2"/>
      <circle cx="9" cy="12" r="1.2"/><circle cx="15" cy="12" r="1.2"/>
      <circle cx="9" cy="18" r="1.2"/><circle cx="15" cy="18" r="1.2"/>
    </SvgWrap>
  ),
  Trash: (p) => (
    <SvgWrap {...p}>
      <polyline points="3 6 5 6 21 6"/>
      <path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/>
      <path d="M10 11v6M14 11v6"/>
      <path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/>
    </SvgWrap>
  ),
  Lock: (p) => (
    <SvgWrap {...p}>
      <rect x="4" y="11" width="16" height="10" rx="2"/>
      <path d="M8 11V7a4 4 0 0 1 8 0v4"/>
    </SvgWrap>
  ),
  Pin: (p) => (
    <SvgWrap {...p}>
      <path d="M12 21l-5-7a5 5 0 1 1 10 0l-5 7z"/><circle cx="12" cy="11" r="2"/>
    </SvgWrap>
  ),
  Tag: (p) => (
    <SvgWrap {...p}>
      <path d="M20 12l-8 8-9-9V4h7l10 8z"/><circle cx="7.5" cy="7.5" r="1"/>
    </SvgWrap>
  ),
  Clock: (p) => (
    <SvgWrap {...p}>
      <circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15.5 14"/>
    </SvgWrap>
  ),
  Note: (p) => (
    <SvgWrap {...p}>
      <path d="M4 4h13l3 3v13H4z"/><line x1="8" y1="10" x2="16" y2="10"/><line x1="8" y1="14" x2="14" y2="14"/>
    </SvgWrap>
  ),
  Download: (p) => (<SvgWrap {...p}><path d="M12 3v12"/><polyline points="7 11 12 16 17 11"/><line x1="4" y1="21" x2="20" y2="21"/></SvgWrap>),
  Upload: (p) => (<SvgWrap {...p}><path d="M12 21V9"/><polyline points="7 14 12 9 17 14"/><line x1="4" y1="4" x2="20" y2="4"/></SvgWrap>),
  Settings: (p) => (
    <SvgWrap {...p}>
      <circle cx="12" cy="12" r="3"/>
      <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.6 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09A1.65 1.65 0 0 0 15 4.6a1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>
    </SvgWrap>
  ),
  Search: (p) => (<SvgWrap {...p}><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.5" y2="16.5"/></SvgWrap>),
  Check: (p) => (<SvgWrap {...p}><polyline points="20 6 9 17 4 12"/></SvgWrap>),
  Today: (p) => (
    <SvgWrap {...p}>
      <rect x="3" y="4" width="18" height="17" rx="2"/>
      <line x1="3" y1="9" x2="21" y2="9"/>
      <rect x="7" y="13" width="4" height="4" rx="0.5" fill="currentColor" stroke="none"/>
    </SvgWrap>
  ),
};
