// Lucide-style icon set
const Icon = ({ name, size = 16, className = '', strokeWidth = 1.6, ...rest }) => {
  const paths = ICONS[name];
  if (!paths) return null;
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width={size} height={size}
      viewBox="0 0 24 24"
      fill="none"
      stroke="currentColor"
      strokeWidth={strokeWidth}
      strokeLinecap="round"
      strokeLinejoin="round"
      className={className}
      {...rest}
    >
      {paths}
    </svg>
  );
};

const ICONS = {
  // generic
  home:        <><path d="M3 11.5 12 4l9 7.5" /><path d="M5 10v10h4v-6h6v6h4V10" /></>,
  search:      <><circle cx="11" cy="11" r="7" /><path d="m21 21-4.3-4.3" /></>,
  plus:        <><path d="M12 5v14M5 12h14" /></>,
  check:       <><path d="M20 6 9 17l-5-5" /></>,
  checkCircle: <><circle cx="12" cy="12" r="10" /><path d="m9 12 2 2 4-4" /></>,
  x:           <><path d="M18 6 6 18M6 6l12 12" /></>,
  alert:       <><circle cx="12" cy="12" r="10" /><path d="M12 8v4M12 16h.01" /></>,
  clock:       <><circle cx="12" cy="12" r="10" /><path d="M12 6v6l4 2" /></>,
  calendar:    <><rect x="3" y="4" width="18" height="18" rx="2" /><path d="M16 2v4M8 2v4M3 10h18" /></>,
  download:    <><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" /><path d="M7 10l5 5 5-5M12 15V3" /></>,
  print:       <><path d="M6 9V2h12v7" /><rect x="6" y="14" width="12" height="8" /><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" /></>,
  filter:      <><path d="M22 3H2l8 9.46V19l4 2v-8.54L22 3z" /></>,
  chevronDown: <><path d="m6 9 6 6 6-6" /></>,
  chevronRight:<><path d="m9 18 6-6-6-6" /></>,
  chevronLeft: <><path d="m15 18-6-6 6-6" /></>,
  arrowRight:  <><path d="M5 12h14M12 5l7 7-7 7" /></>,
  bell:        <><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" /><path d="M10 21a2 2 0 0 0 4 0" /></>,
  edit:        <><path d="M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4z" /></>,
  trash:       <><path d="M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" /></>,
  more:        <><circle cx="5" cy="12" r="1" /><circle cx="12" cy="12" r="1" /><circle cx="19" cy="12" r="1" /></>,
  settings:    <><circle cx="12" cy="12" r="3" /><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1A1.7 1.7 0 0 0 9 19.4a1.7 1.7 0 0 0-1.9.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.9 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1A1.7 1.7 0 0 0 4.6 9a1.7 1.7 0 0 0-.3-1.9l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.9.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.9-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.9V9a1.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" /></>,
  // accounting
  balance:  <><path d="M3 5h18M5 5v14h14V5" /><path d="M8 9h8M8 13h8" /></>,
  pnl:      <><path d="M4 19V5" /><path d="M4 19h16" /><path d="m8 14 3-4 3 2 5-7" /></>,
  cash:     <><rect x="3" y="6" width="18" height="12" rx="1.5" /><circle cx="12" cy="12" r="2.5" /><path d="M3 10h18M3 14h18" /></>,
  ledger:   <><path d="M5 4h12a2 2 0 0 1 2 2v14H7a2 2 0 0 1-2-2V4z" /><path d="M9 8h6M9 12h6M9 16h4" /></>,
  journal:  <><path d="M5 4h14v16H5z" /><path d="M5 8h14M9 4v16" /></>,
  expense:  <><path d="M4 7h16v10H4z" /><circle cx="12" cy="12" r="2.4" /><path d="M7 7v10M17 7v10" /></>,
  assets:   <><path d="M4 21V10l8-6 8 6v11" /><path d="M9 21V13h6v8" /></>,
  dot:      <><circle cx="12" cy="12" r="2.5" /></>,
};

window.Icon = Icon;
