// Icon set — line-based, 24px viewBox, currentColor stroke
const Icon = ({ d, size = 22, fill = false, stroke = 2, children, ...rest }) => (
  <svg width={size} height={size} viewBox="0 0 24 24"
    fill={fill ? 'currentColor' : 'none'}
    stroke={fill ? 'none' : 'currentColor'}
    strokeWidth={stroke} strokeLinecap="round" strokeLinejoin="round"
    {...rest}>
    {d ? <path d={d} /> : children}
  </svg>
);

const I = {
  home: (p) => <Icon size={p?.size||22} stroke={p?.stroke||2}><path d="M3 11l9-8 9 8"/><path d="M5 10v10h14V10"/></Icon>,
  wallet: (p) => <Icon size={p?.size||22}><rect x="3" y="6" width="18" height="14" rx="3"/><path d="M3 10h18"/><circle cx="17" cy="15" r="1.2" fill="currentColor"/></Icon>,
  chart: (p) => <Icon size={p?.size||22}><path d="M3 20h18"/><path d="M6 16V9"/><path d="M11 16V5"/><path d="M16 16v-7"/><path d="M21 16v-4"/></Icon>,
  user: (p) => <Icon size={p?.size||22}><circle cx="12" cy="8" r="4"/><path d="M4 21c0-4.4 3.6-8 8-8s8 3.6 8 8"/></Icon>,
  trade: (p) => <Icon size={p?.size||22} stroke={2.5}><path d="M3 17l6-6 4 4 8-8"/><path d="M14 7h7v7"/></Icon>,
  bolt: (p) => <Icon size={p?.size||22} stroke={2.2}><path d="M13 2L4 14h7l-1 8 9-12h-7l1-8z"/></Icon>,
  bell: (p) => <Icon size={p?.size||22}><path d="M18 8a6 6 0 1 0-12 0c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.7 21a2 2 0 0 1-3.4 0"/></Icon>,
  back: (p) => <Icon size={p?.size||20} stroke={2.4}><path d="M15 18l-6-6 6-6"/></Icon>,
  close: (p) => <Icon size={p?.size||20} stroke={2.4}><path d="M18 6L6 18"/><path d="M6 6l12 12"/></Icon>,
  eye: (p) => <Icon size={p?.size||20}><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>,
  eyeOff: (p) => <Icon size={p?.size||20}><path d="M17.9 17.9C16.2 19.2 14.2 20 12 20 5.5 20 2 13 2 13a17.5 17.5 0 0 1 4.2-5"/><path d="M9.9 4.2A10.4 10.4 0 0 1 12 4c6.5 0 10 7 10 7a17.5 17.5 0 0 1-2 2.9"/><path d="M3 3l18 18"/></Icon>,
  chevR: (p) => <Icon size={p?.size||18} stroke={2.4}><path d="M9 6l6 6-6 6"/></Icon>,
  chevD: (p) => <Icon size={p?.size||18} stroke={2.4}><path d="M6 9l6 6 6-6"/></Icon>,
  plus: (p) => <Icon size={p?.size||20} stroke={2.4}><path d="M12 5v14"/><path d="M5 12h14"/></Icon>,
  copy: (p) => <Icon size={p?.size||18}><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></Icon>,
  check: (p) => <Icon size={p?.size||18} stroke={2.4}><path d="M20 6L9 17l-5-5"/></Icon>,
  arrowUp: (p) => <Icon size={p?.size||18} stroke={2.4}><path d="M12 19V5"/><path d="M5 12l7-7 7 7"/></Icon>,
  arrowDown: (p) => <Icon size={p?.size||18} stroke={2.4}><path d="M12 5v14"/><path d="M5 12l7 7 7-7"/></Icon>,
  swap: (p) => <Icon size={p?.size||18} stroke={2.2}><path d="M7 4v16"/><path d="M3 8l4-4 4 4"/><path d="M17 20V4"/><path d="M21 16l-4 4-4-4"/></Icon>,
  gift: (p) => <Icon size={p?.size||20}><rect x="3" y="8" width="18" height="4" rx="1"/><path d="M5 12v9h14v-9"/><path d="M12 8v13"/><path d="M12 8s-2-4-4-4-2 4 4 4"/><path d="M12 8s2-4 4-4 2 4-4 4"/></Icon>,
  shield: (p) => <Icon size={p?.size||20}><path d="M12 2l8 4v6c0 5-3.5 9-8 10-4.5-1-8-5-8-10V6l8-4z"/></Icon>,
  lock: (p) => <Icon size={p?.size||20}><rect x="4" y="11" width="16" height="10" rx="2"/><path d="M8 11V7a4 4 0 0 1 8 0v4"/></Icon>,
  globe: (p) => <Icon size={p?.size||20}><circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3a14 14 0 0 1 0 18"/><path d="M12 3a14 14 0 0 0 0 18"/></Icon>,
  mail: (p) => <Icon size={p?.size||20}><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 6 9-6"/></Icon>,
  phone: (p) => <Icon size={p?.size||20}><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3.1-8.7A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.5 2.1L8 9.6a16 16 0 0 0 6 6l1.1-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.7 2z"/></Icon>,
  search: (p) => <Icon size={p?.size||18}><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.4-4.4"/></Icon>,
  more: (p) => <Icon size={p?.size||20}><circle cx="5" cy="12" r="1.5" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.5" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1.5" fill="currentColor" stroke="none"/></Icon>,
  qr: (p) => <Icon size={p?.size||18}><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"/><path d="M14 14h3v3h-3z"/><path d="M21 14v3"/><path d="M14 21h7"/><path d="M21 21v-2"/></Icon>,
  external: (p) => <Icon size={p?.size||16} stroke={2.2}><path d="M14 4h6v6"/><path d="M20 4l-8 8"/><path d="M19 13v5a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5"/></Icon>,
  star: (p) => <Icon size={p?.size||16}><path d="M12 2l3 7h7l-5.5 4.5L18 21l-6-4-6 4 1.5-7.5L2 9h7z"/></Icon>,
  trash: (p) => <Icon size={p?.size||18}><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><path d="M5 6v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6"/></Icon>,
  flame: (p) => <Icon size={p?.size||18}><path d="M12 2s4 5 4 9-2 6-4 6-4-2-4-6 4-9 4-9z"/><path d="M12 22a6 6 0 0 0 6-6"/></Icon>,
  info: (p) => <Icon size={p?.size||18}><circle cx="12" cy="12" r="9"/><path d="M12 8v.5"/><path d="M12 12v4"/></Icon>,
  logout: (p) => <Icon size={p?.size||20}><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><path d="M16 17l5-5-5-5"/><path d="M21 12H9"/></Icon>,
  filter: (p) => <Icon size={p?.size||18}><path d="M3 5h18"/><path d="M6 12h12"/><path d="M10 19h4"/></Icon>,
  cube: (p) => <Icon size={p?.size||20}><path d="M12 2l9 5v10l-9 5-9-5V7z"/><path d="M3 7l9 5 9-5"/><path d="M12 12v10"/></Icon>,
  bitcoin: () => (
    <svg viewBox="0 0 32 32" width="32" height="32"><circle cx="16" cy="16" r="16" fill="#F7931A"/><path fill="#fff" d="M22 14.2c.3-1.9-1.2-3-3.2-3.6l.7-2.6-1.6-.4-.6 2.5-1.3-.3.6-2.5-1.6-.4-.7 2.6-1-.2-2.2-.6-.4 1.7s1.2.3 1.2.3c.7.2.8.6.8 1l-.8 3-2 7.4c-.1.3-.5.7-1.2.5l-1.2-.3-.7 1.8 2.1.5 1.2.3-.7 2.6 1.6.4.7-2.6 1.3.3-.7 2.6 1.6.4.7-2.6c2.7.5 4.7.3 5.5-2.1.7-2-.1-3.1-1.5-3.9 1-.2 1.8-.9 2-2.3zm-3.6 5c-.5 1.9-3.7.9-4.7.6l.9-3.4c1 .3 4.3.7 3.8 2.8zm.5-5c-.4 1.7-3.1.9-4 .6l.8-3c.9.2 3.6.6 3.2 2.4z"/></svg>
  ),
  ethereum: () => (
    <svg viewBox="0 0 32 32" width="32" height="32"><circle cx="16" cy="16" r="16" fill="#627EEA"/><g fill="#fff"><path fillOpacity=".6" d="M16.5 4v8.9l7.5 3.4z"/><path d="M16.5 4L9 16.3l7.5-3.4z"/><path fillOpacity=".6" d="M16.5 21.97v6.03L24 17.4z"/><path d="M16.5 28v-6L9 17.4z"/><path fillOpacity=".2" d="M16.5 20.6l7.5-4.3-7.5-3.4z"/><path fillOpacity=".6" d="M9 16.3l7.5 4.3v-7.7z"/></g></svg>
  ),
  tether: () => (
    <svg viewBox="0 0 32 32" width="32" height="32"><circle cx="16" cy="16" r="16" fill="#26A17B"/><path fill="#fff" d="M17.9 14.6v-2.2h5V9H9.1v3.4h5v2.2c-4.1.2-7.1 1-7.1 2 0 1 3 1.8 7.1 2v6.6h3.8v-6.6c4-.2 7-1 7-2 0-1-3-1.8-7-2zm0 3.4v0c-.1 0-.5 0-1.9 0-1 0-1.7 0-2 0v0c-3.4-.2-5.9-.7-5.9-1.4 0-.6 2.5-1.2 5.9-1.4V18c.3 0 1 0 2 0 1.4 0 1.8 0 1.9 0v-2.2c3.4.2 5.9.7 5.9 1.4 0 .6-2.5 1.2-5.9 1.4z"/></svg>
  ),
};

window.I = I;
window.Icon = Icon;
