// icons.jsx — Lucide-style stroke icons as React components
(function () {
  const S = ({ size = 20, stroke = 'currentColor', sw = 2, children, style }) =>
    React.createElement('svg', {
      width: size, height: size, viewBox: '0 0 24 24', fill: 'none',
      stroke, strokeWidth: sw, strokeLinecap: 'round', strokeLinejoin: 'round', style,
    }, children);
  const P = (d, key) => React.createElement('path', { d, key });
  const L = (x1, y1, x2, y2, key) => React.createElement('line', { x1, y1, x2, y2, key });
  const C = (cx, cy, r, key) => React.createElement('circle', { cx, cy, r, key });
  const R = (x, y, w, h, rx, key) => React.createElement('rect', { x, y, width: w, height: h, rx, key });

  const Icon = {
    home:   (p) => S({ ...p, children: [P('M3 9.5 12 3l9 6.5', '1'), P('M5 10v10h14V10', '2')] }),
    grid:   (p) => S({ ...p, children: [R(3,3,7,7,1.5,'1'), R(14,3,7,7,1.5,'2'), R(14,14,7,7,1.5,'3'), R(3,14,7,7,1.5,'4')] }),
    incomeNav: (p) => S({ ...p, children: [C(12,12,9,'1'), P('M12 8v8M8.5 12.5 12 16l3.5-3.5','2')] }),
    expenseNav:(p) => S({ ...p, children: [C(12,12,9,'1'), P('M12 16V8M8.5 11.5 12 8l3.5 3.5','2')] }),
    credits:(p) => S({ ...p, children: [R(2,5,20,14,2.5,'1'), L(2,10,22,10,'2')] }),
    reports:(p) => S({ ...p, children: [L(4,20,4,10,'1'), L(10,20,10,4,'2'), L(16,20,16,13,'3'), L(20,20,20,8,'4'), L(3,21,21,21,'5')] }),
    settings:(p) => S({ ...p, children: [C(12,12,3,'1'), P('M19.4 15a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-2.7.7 1.6 1.6 0 0 0-1 1.5V22a2 2 0 0 1-4 0v-.1A1.6 1.6 0 0 0 8 20.4a1.6 1.6 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.6 1.6 0 0 0-.7-2.7 1.6 1.6 0 0 0-1.5-1H1a2 2 0 0 1 0-4h.1A1.6 1.6 0 0 0 3.6 8a1.6 1.6 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.6 1.6 0 0 0 1.8.3H8a1.6 1.6 0 0 0 1-1.5V1a2 2 0 0 1 4 0v.1a1.6 1.6 0 0 0 1 1.5 1.6 1.6 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0-.3 1.8V8a1.6 1.6 0 0 0 1.5 1H23a2 2 0 0 1 0 4h-.1a1.6 1.6 0 0 0-1.5 1z','2')] }),
    plus:   (p) => S({ ...p, children: [L(12,5,12,19,'1'), L(5,12,19,12,'2')] }),
    minus:  (p) => S({ ...p, children: [L(5,12,19,12,'1')] }),
    plusCircle: (p) => S({ ...p, children: [C(12,12,9,'1'), L(12,8.5,12,15.5,'2'), L(8.5,12,15.5,12,'3')] }),
    minusCircle:(p) => S({ ...p, children: [C(12,12,9,'1'), L(8.5,12,15.5,12,'2')] }),
    search: (p) => S({ ...p, children: [C(11,11,7,'1'), L(21,21,16.5,16.5,'2')] }),
    filter: (p) => S({ ...p, children: [P('M3 5h18l-7 8v6l-4-2v-4z','1')] }),
    x:      (p) => S({ ...p, children: [L(6,6,18,18,'1'), L(18,6,6,18,'2')] }),
    chevL:  (p) => S({ ...p, children: [P('M15 6l-6 6 6 6','1')] }),
    chevR:  (p) => S({ ...p, children: [P('M9 6l6 6-6 6','1')] }),
    chevDown:(p) => S({ ...p, children: [P('M6 9l6 6 6-6','1')] }),
    arrowRight:(p) => S({ ...p, children: [L(5,12,19,12,'1'), P('M13 6l6 6-6 6','2')] }),
    download:(p) => S({ ...p, children: [P('M12 3v12','1'), P('M8 11l4 4 4-4','2'), P('M4 19h16','3')] }),
    check:  (p) => S({ ...p, children: [P('M5 12.5 10 17 19 7','1')] }),
    checkCircle:(p) => S({ ...p, children: [C(12,12,9,'1'), P('M8.5 12.2 11 14.7l4.5-5','2')] }),
    bell:   (p) => S({ ...p, children: [P('M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9','1'), P('M13.7 21a2 2 0 0 1-3.4 0','2')] }),
    user:   (p) => S({ ...p, children: [C(12,8,4,'1'), P('M4 21a8 8 0 0 1 16 0','2')] }),
    calendar:(p) => S({ ...p, children: [R(3,4.5,18,17,2.5,'1'), L(3,9,21,9,'2'), L(8,2.5,8,6,'3'), L(16,2.5,16,6,'4')] }),
    repeat: (p) => S({ ...p, children: [P('M17 2l4 4-4 4','1'), P('M3 11V9a4 4 0 0 1 4-4h14','2'), P('M7 22l-4-4 4-4','3'), P('M21 13v2a4 4 0 0 1-4 4H3','4')] }),
    trend:  (p) => S({ ...p, children: [P('M3 17l6-6 4 4 8-8','1'), P('M17 7h4v4','2')] }),
    // category icons
    briefcase:(p) => S({ ...p, children: [R(3,7,18,13,2,'1'), P('M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2','2')] }),
    laptop: (p) => S({ ...p, children: [R(4,5,16,11,2,'1'), L(2,20,22,20,'2')] }),
    cart:   (p) => S({ ...p, children: [C(9,20,1.4,'1'), C(18,20,1.4,'2'), P('M2 3h2l2.5 12h11l2-8H6','3')] }),
    food:   (p) => S({ ...p, children: [P('M4 3v7a2 2 0 0 0 4 0V3M6 10v11','1'), P('M16 3c-1.5 0-2.5 2-2.5 5s1 4 2.5 4 2.5-1 2.5-4-1-5-2.5-5zM16 12v9','2')] }),
    house:  (p) => S({ ...p, children: [P('M3 10 12 3l9 7','1'), P('M5 10v10h14V10','2')] }),
    car:    (p) => S({ ...p, children: [P('M3 13l2-5a3 3 0 0 1 3-2h8a3 3 0 0 1 3 2l2 5v5h-3v-2H6v2H3z','1'), C(7.5,15.5,1,'2'), C(16.5,15.5,1,'3')] }),
    zap:    (p) => S({ ...p, children: [P('M13 2 4 14h7l-1 8 9-12h-7z','1')] }),
    heart:  (p) => S({ ...p, children: [P('M12 20s-7-4.5-9.5-9A4.5 4.5 0 0 1 12 6a4.5 4.5 0 0 1 9.5 5c-2.5 4.5-9.5 9-9.5 9z','1')] }),
    gift:   (p) => S({ ...p, children: [R(3,8,18,4,1,'1'), P('M5 12v8h14v-8','2'), L(12,8,12,20,'3'), P('M12 8C12 5 10 3 8.5 4S7 8 12 8zM12 8c0-3 2-5 3.5-4S17 8 12 8z','4')] }),
    book:   (p) => S({ ...p, children: [P('M4 4h11a3 3 0 0 1 3 3v13H7a3 3 0 0 1-3-3z','1'), P('M18 4h2v16','2')] }),
    phone:  (p) => S({ ...p, children: [R(7,2,10,20,3,'1'), L(11,18,13,18,'2')] }),
    tag:    (p) => S({ ...p, children: [P('M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z','1'), C(7.5,7.5,1.2,'2')] }),
    wallet: (p) => S({ ...p, children: [R(3,6,18,13,2.5,'1'), P('M16 12.5h.01','2'), P('M3 9h13a2 2 0 0 1 0 4','3')] }),
    coins:  (p) => S({ ...p, children: [C(8,8,5,'1'), P('M16 8.5a5 5 0 1 1 0 9 5 5 0 0 1-4.5-3','2')] }),
    truck:  (p) => S({ ...p, children: [R(2,6,12,9,1,'1'), P('M14 9h4l3 3v3h-7z','2'), C(6,18,1.5,'3'), C(17,18,1.5,'4')] }),
    sparkle:(p) => S({ ...p, children: [P('M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z','1')] }),
    logout: (p) => S({ ...p, children: [P('M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4','1'), P('M16 17l5-5-5-5','2'), L(21,12,9,12,'3')] }),
  };
  window.Icon = Icon;
})();
