// Minimalist line icons — tight, editorial feel
const Icon = ({ d, size = 18, sw = 1.5, ...rest }) => (
  <svg width={size} height={size} viewBox="0 0 24 24" fill="none"
       stroke="currentColor" strokeWidth={sw} strokeLinecap="round" strokeLinejoin="round" {...rest}>
    {d}
  </svg>
);

const Icons = {
  Upload:    (p) => <Icon {...p} d={<><path d="M12 4v12"/><path d="M6 10l6-6 6 6"/><path d="M4 20h16"/></>} />,
  Download:  (p) => <Icon {...p} d={<><path d="M12 4v12"/><path d="M6 14l6 6 6-6"/><path d="M4 20h16" style={{display:'none'}}/></>} />,
  Photo:     (p) => <Icon {...p} d={<><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="M21 16l-5-5-8 8"/></>} />,
  Grid:      (p) => <Icon {...p} d={<><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"/></>} />,
  Sparkles:  (p) => <Icon {...p} d={<><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/><path d="M19 3v4M21 5h-4" /></>} />,
  Home:      (p) => <Icon {...p} d={<><path d="M3 11l9-7 9 7"/><path d="M5 10v10h14V10"/></>} />,
  Settings:  (p) => <Icon {...p} d={<><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 00.3 1.8l.1.1a2 2 0 11-2.8 2.8l-.1-.1a1.7 1.7 0 00-1.8-.3 1.7 1.7 0 00-1 1.5V21a2 2 0 11-4 0v-.1a1.7 1.7 0 00-1-1.5 1.7 1.7 0 00-1.8.3l-.1.1a2 2 0 11-2.8-2.8l.1-.1a1.7 1.7 0 00.3-1.8 1.7 1.7 0 00-1.5-1H3a2 2 0 110-4h.1a1.7 1.7 0 001.5-1 1.7 1.7 0 00-.3-1.8l-.1-.1a2 2 0 112.8-2.8l.1.1a1.7 1.7 0 001.8.3h0a1.7 1.7 0 001-1.5V3a2 2 0 114 0v.1a1.7 1.7 0 001 1.5 1.7 1.7 0 001.8-.3l.1-.1a2 2 0 112.8 2.8l-.1.1a1.7 1.7 0 00-.3 1.8v0a1.7 1.7 0 001.5 1H21a2 2 0 110 4h-.1a1.7 1.7 0 00-1.5 1z"/></>} />,
  Arrow:     (p) => <Icon {...p} d={<><path d="M5 12h14"/><path d="M13 5l7 7-7 7"/></>} />,
  Check:     (p) => <Icon {...p} d={<path d="M4 12l5 5L20 6"/>} />,
  X:         (p) => <Icon {...p} d={<><path d="M6 6l12 12"/><path d="M18 6l-12 12"/></>} />,
  Plus:      (p) => <Icon {...p} d={<><path d="M12 5v14"/><path d="M5 12h14"/></>} />,
  Search:    (p) => <Icon {...p} d={<><circle cx="11" cy="11" r="7"/><path d="M20 20l-4-4"/></>} />,
  Logout:    (p) => <Icon {...p} d={<><path d="M15 4h4v16h-4"/><path d="M10 8l-4 4 4 4"/><path d="M6 12h12"/></>} />,
  Menu:      (p) => <Icon {...p} d={<><path d="M4 7h16"/><path d="M4 12h16"/><path d="M4 17h16"/></>} />,
  Moon:      (p) => <Icon {...p} d={<path d="M20 15A8 8 0 119 4a6 6 0 0011 11z"/>} />,
  Sun:       (p) => <Icon {...p} d={<><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></>} />,
  Trash:     (p) => <Icon {...p} d={<><path d="M4 7h16"/><path d="M10 11v6M14 11v6"/><path d="M6 7l1 13a2 2 0 002 2h6a2 2 0 002-2l1-13"/><path d="M9 7V4a1 1 0 011-1h4a1 1 0 011 1v3"/></>} />,
  Clock:     (p) => <Icon {...p} d={<><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></>} />,
  Heart:     (p) => <Icon {...p} d={<path d="M12 20s-7-4.35-7-10a4 4 0 017-2.65A4 4 0 0119 10c0 5.65-7 10-7 10z"/>} />,
  Zap:       (p) => <Icon {...p} d={<path d="M13 2L4 14h7l-1 8 9-12h-7z"/>} />,
  Eye:       (p) => <Icon {...p} d={<><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12z"/><circle cx="12" cy="12" r="3"/></>} />,
  Star:      (p) => <Icon {...p} d={<path d="M12 3l2.8 6 6.2.9-4.5 4.3 1 6.3L12 17.8 6.5 20.5l1-6.3L3 9.9 9.2 9z"/>} />,
  Folder:    (p) => <Icon {...p} d={<path d="M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2z"/>} />,
  Filter:    (p) => <Icon {...p} d={<path d="M3 5h18l-7 9v6l-4-2v-4z"/>} />,
};
window.Icons = Icons;
