// Inline SVG icons. Stroke-based, 1.6 line. Match Linear's restraint.
const I = ({ d, size = 16, stroke = "currentColor", fill = "none", sw = 1.6, ...rest }) => (
  <svg viewBox="0 0 24 24" width={size} height={size} fill={fill} stroke={stroke} strokeWidth={sw}
    strokeLinecap="round" strokeLinejoin="round" {...rest}>
    {typeof d === "string" ? <path d={d} /> : d}
  </svg>
);

const Icons = {
  Dashboard: (p) => <I {...p} d={<>
    <rect x="3" y="3" width="7" height="9" rx="1.5"/>
    <rect x="14" y="3" width="7" height="5" rx="1.5"/>
    <rect x="14" y="12" width="7" height="9" rx="1.5"/>
    <rect x="3" y="16" width="7" height="5" rx="1.5"/>
  </>} />,
  Portfolio: (p) => <I {...p} d={<>
    <circle cx="12" cy="12" r="9"/>
    <path d="M12 3 A9 9 0 0 1 21 12 L12 12 Z" fill="currentColor" stroke="none" opacity="0.35"/>
    <path d="M12 12 L3 12 A9 9 0 0 1 12 3" />
  </>} />,
  Planner: (p) => <I {...p} d={<>
    <path d="M4 20 L8 20 L8 14 L12 14 L12 9 L16 9 L16 4 L20 4"/>
    <circle cx="8" cy="14" r="1.4" fill="currentColor" stroke="none"/>
    <circle cx="12" cy="9" r="1.4" fill="currentColor" stroke="none"/>
    <circle cx="16" cy="4" r="1.4" fill="currentColor" stroke="none"/>
  </>} />,
  Simulator: (p) => <I {...p} d={<>
    <path d="M3 17 C 7 10, 10 14, 13 7 S 19 5, 21 4"/>
    <path d="M3 21 L21 21" opacity="0.4"/>
  </>} />,
  Regret: (p) => <I {...p} d={<>
    <path d="M3 6 L9 14 L13 10 L21 18"/>
    <path d="M15 18 L21 18 L21 12"/>
  </>} />,
  Reports: (p) => <I {...p} d={<>
    <path d="M7 3 H15 L19 7 V20 A1 1 0 0 1 18 21 H6 A1 1 0 0 1 5 20 V4 A1 1 0 0 1 6 3 Z"/>
    <path d="M15 3 V7 H19"/>
    <path d="M8 12 H16 M8 16 H13"/>
  </>} />,
  Settings: (p) => <I {...p} d={<>
    <circle cx="12" cy="12" r="3"/>
    <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06A2 2 0 1 1 4.27 16.96l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06A2 2 0 1 1 7.04 4.27l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z"/>
  </>} />,
  Plus: (p) => <I {...p} d="M12 5 V19 M5 12 H19" />,
  Close: (p) => <I {...p} d="M6 6 L18 18 M18 6 L6 18" />,
  Check: (p) => <I {...p} d="M4 12 L10 18 L20 6" />,
  Chevron: (p) => <I {...p} d="M9 6 L15 12 L9 18" />,
  ChevronDown: (p) => <I {...p} d="M6 9 L12 15 L18 9" />,
  Up: (p) => <I {...p} d="M6 14 L12 8 L18 14" />,
  Down: (p) => <I {...p} d="M6 10 L12 16 L18 10" />,
  Refresh: (p) => <I {...p} d={<>
    <path d="M3 12 A9 9 0 0 1 18.5 6"/>
    <path d="M18.5 3 V8 H13.5"/>
    <path d="M21 12 A9 9 0 0 1 5.5 18"/>
    <path d="M5.5 21 V16 H10.5"/>
  </>}/>,
  Search: (p) => <I {...p} d={<>
    <circle cx="11" cy="11" r="6.5"/>
    <path d="M16 16 L20 20"/>
  </>}/>,
  Trash: (p) => <I {...p} d={<>
    <path d="M4 7 H20 M9 7 V4 H15 V7 M6 7 L7 20 A1 1 0 0 0 8 21 H16 A1 1 0 0 0 17 20 L18 7"/>
    <path d="M10 11 V17 M14 11 V17"/>
  </>}/>,
  Pencil: (p) => <I {...p} d={<>
    <path d="M4 20 H8 L19 9 L15 5 L4 16 Z"/>
    <path d="M14 6 L18 10"/>
  </>}/>,
  Sun: (p) => <I {...p} d={<>
    <circle cx="12" cy="12" r="4"/>
    <path d="M12 2 V4 M12 20 V22 M2 12 H4 M20 12 H22 M4.9 4.9 L6.3 6.3 M17.7 17.7 L19.1 19.1 M4.9 19.1 L6.3 17.7 M17.7 6.3 L19.1 4.9"/>
  </>}/>,
  Moon: (p) => <I {...p} d="M21 13 A9 9 0 1 1 11 3 A7 7 0 0 0 21 13 Z" />,
  Download: (p) => <I {...p} d={<>
    <path d="M12 4 V16 M6 11 L12 17 L18 11"/>
    <path d="M4 20 H20"/>
  </>}/>,
  Upload: (p) => <I {...p} d={<>
    <path d="M12 20 V8 M6 13 L12 7 L18 13"/>
    <path d="M4 4 H20"/>
  </>}/>,
  Sparkle: (p) => <I {...p} d={<>
    <path d="M12 3 L13.5 9.5 L20 11 L13.5 12.5 L12 19 L10.5 12.5 L4 11 L10.5 9.5 Z" fill="currentColor" stroke="none" opacity="0.95"/>
    <path d="M19 4 L19.6 6.4 L22 7 L19.6 7.6 L19 10 L18.4 7.6 L16 7 L18.4 6.4 Z" fill="currentColor" stroke="none" opacity="0.6"/>
  </>}/>,
  Warning: (p) => <I {...p} d={<>
    <path d="M12 3 L22 20 H2 Z"/>
    <path d="M12 10 V14 M12 17 V17.5"/>
  </>}/>,
  Shield: (p) => <I {...p} d="M12 3 L20 6 V12 C20 17 16 20 12 21 C8 20 4 17 4 12 V6 Z" />,
  Trophy: (p) => <I {...p} d={<>
    <path d="M7 4 H17 V10 A5 5 0 0 1 7 10 Z"/>
    <path d="M7 6 H4 V8 A3 3 0 0 0 7 11"/>
    <path d="M17 6 H20 V8 A3 3 0 0 1 17 11"/>
    <path d="M9 15 H15 V18 H9 Z M8 21 H16"/>
  </>}/>,
  Gauge: (p) => <I {...p} d={<>
    <path d="M4 17 A8 8 0 1 1 20 17"/>
    <path d="M12 17 L16 9"/>
    <circle cx="12" cy="17" r="1.4" fill="currentColor" stroke="none"/>
  </>}/>,
  Logo: (p) => <I {...p} d={<>
    <path d="M5 5 L19 19" />
    <path d="M19 5 L12 12" />
    <path d="M5 19 L8 16" />
  </>}/>,
  Menu: (p) => <I {...p} d="M4 7 H20 M4 12 H20 M4 17 H20" />,
};

window.Icons = Icons;
