// icons.jsx — minimal line icons (1.6 stroke, rounded). Calm, consistent.
const Ic = ({ d, size = 20, fill, stroke = 1.7, children, ...rest }) => (
  <svg width={size} height={size} viewBox="0 0 24 24" fill={fill || 'none'}
       stroke="currentColor" strokeWidth={stroke} strokeLinecap="round" strokeLinejoin="round"
       aria-hidden="true" {...rest}>
    {children || <path d={d} />}
  </svg>
);

const Icons = {
  home: (p) => <Ic {...p}><path d="M3 10.5 12 3l9 7.5" /><path d="M5 9.5V20a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5" /><path d="M9.5 21v-6h5v6" /></Ic>,
  budget: (p) => <Ic {...p}><circle cx="12" cy="12" r="9" /><path d="M12 3a9 9 0 0 1 9 9h-9z" /></Ic>,
  receipt: (p) => <Ic {...p}><path d="M6 3h12v18l-2.2-1.4L13.5 21l-1.5-1.4L10.5 21l-2.3-1.4L6 21z" /><path d="M9 8h6M9 12h6" /></Ic>,
  doc: (p) => <Ic {...p}><path d="M7 3h7l4 4v14a0 0 0 0 1 0 0H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z" /><path d="M14 3v4h4" /><path d="M9 13h6M9 16.5h4" /></Ic>,
  people: (p) => <Ic {...p}><circle cx="9" cy="8" r="3.2" /><path d="M3.5 20a5.5 5.5 0 0 1 11 0" /><path d="M16 6.2a3 3 0 0 1 0 5.6" /><path d="M17 14.2a5.4 5.4 0 0 1 3.5 5" /></Ic>,
  spark: (p) => <Ic {...p}><path d="M12 3v4M12 17v4M3 12h4M17 12h4M6 6l2.5 2.5M15.5 15.5 18 18M18 6l-2.5 2.5M8.5 15.5 6 18" /></Ic>,
  goal: (p) => <Ic {...p}><circle cx="12" cy="12" r="8.5" /><circle cx="12" cy="12" r="4.5" /><circle cx="12" cy="12" r="1" fill="currentColor" stroke="none" /></Ic>,
  plus: (p) => <Ic {...p}><path d="M12 5v14M5 12h14" /></Ic>,
  chevR: (p) => <Ic {...p}><path d="m9 6 6 6-6 6" /></Ic>,
  chevL: (p) => <Ic {...p}><path d="m15 6-6 6 6 6" /></Ic>,
  chevD: (p) => <Ic {...p}><path d="m6 9 6 6 6-6" /></Ic>,
  check: (p) => <Ic {...p}><path d="m5 12.5 4.5 4.5L19 7" /></Ic>,
  checkCircle: (p) => <Ic {...p}><circle cx="12" cy="12" r="9" /><path d="m8.5 12 2.5 2.5 4.5-5" /></Ic>,
  clock: (p) => <Ic {...p}><circle cx="12" cy="12" r="9" /><path d="M12 7.5V12l3 2" /></Ic>,
  alert: (p) => <Ic {...p}><circle cx="12" cy="12" r="9" /><path d="M12 7.5v5M12 16h.01" /></Ic>,
  x: (p) => <Ic {...p}><path d="M6 6l12 12M18 6 6 18" /></Ic>,
  search: (p) => <Ic {...p}><circle cx="11" cy="11" r="7" /><path d="m20 20-3.2-3.2" /></Ic>,
  upload: (p) => <Ic {...p}><path d="M12 16V5M8 9l4-4 4 4" /><path d="M5 16v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2" /></Ic>,
  download: (p) => <Ic {...p}><path d="M12 4v11M8 11l4 4 4-4" /><path d="M5 19h14" /></Ic>,
  filter: (p) => <Ic {...p}><path d="M4 6h16M7 12h10M10 18h4" /></Ic>,
  calendar: (p) => <Ic {...p}><rect x="3.5" y="4.5" width="17" height="16" rx="2.5" /><path d="M3.5 9h17M8 3v3M16 3v3" /></Ic>,
  info: (p) => <Ic {...p}><circle cx="12" cy="12" r="9" /><path d="M12 11v5M12 8h.01" /></Ic>,
  help: (p) => <Ic {...p}><circle cx="12" cy="12" r="9" /><path d="M9.5 9.5a2.5 2.5 0 0 1 4.5 1.5c0 1.5-2 2-2 3M12 16h.01" /></Ic>,
  heart: (p) => <Ic {...p}><path d="M12 20s-7-4.6-7-9.5A4 4 0 0 1 12 7a4 4 0 0 1 7 3.5C19 15.4 12 20 12 20z" /></Ic>,
  send: (p) => <Ic {...p}><path d="M4 12 20 4l-6 16-3-7-7-1z" /></Ic>,
  card: (p) => <Ic {...p}><rect x="3" y="5" width="18" height="14" rx="2.5" /><path d="M3 9.5h18" /></Ic>,
  arrowR: (p) => <Ic {...p}><path d="M5 12h14M13 6l6 6-6 6" /></Ic>,
  paperclip: (p) => <Ic {...p}><path d="M20 11.5 12 19.5a4.5 4.5 0 0 1-6.4-6.4l8-8a3 3 0 0 1 4.3 4.3l-8 8a1.5 1.5 0 0 1-2.2-2.2l7.3-7.3" /></Ic>,
  gear: (p) => <Ic {...p}><circle cx="12" cy="12" r="3.3" /><path d="M12 2.8v2.5M12 18.7v2.5M21.2 12h-2.5M5.3 12H2.8M18.4 5.6l-1.8 1.8M7.4 16.6l-1.8 1.8M18.4 18.4l-1.8-1.8M7.4 7.4 5.6 5.6" /></Ic>,
  trash: (p) => <Ic {...p}><path d="M4.5 7h15M9.5 7V4.5h5V7M6.5 7l.9 13h9.2l.9-13" /><path d="M10 11v5.5M14 11v5.5" /></Ic>,
  pencil: (p) => <Ic {...p}><path d="M4 20l1-4.5 11-11L19.5 8l-11 11L4 20z" /><path d="M13.5 7l3.5 3.5" /></Ic>,
  sparkles: (p) => <Ic {...p}><path d="M12 4l1.6 4.4L18 10l-4.4 1.6L12 16l-1.6-4.4L6 10l4.4-1.6z" /><path d="M18 15l.7 1.9L20.5 17.5l-1.8.7L18 20l-.7-1.8L15.5 17.5l1.8-.6z" /></Ic>,
};

window.Icons = Icons;
