import type { SVGProps } from "react";

// Einheitliche Linien-Icons (24×24, currentColor, runde Enden).
// Mehrere Subpfade je Icon sind in einem d-String zusammengefasst.
const PATHS: Record<string, string> = {
  dashboard: "M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM14 14h6v6h-6z",
  chat:
    "M21 11.5a7.5 7.5 0 0 1-10.9 6.7L4 20l1.8-5A7.5 7.5 0 1 1 21 11.5zM8.5 11.5h.01M12 11.5h.01M15.5 11.5h.01",
  kanban: "M4 5h4v14H4zM10 5h4v9h-4zM16 5h4v12h-4z",
  projects:
    "M12 3l8.5 4.7-8.5 4.7-8.5-4.7zM3.5 12l8.5 4.7 8.5-4.7M3.5 16.5l8.5 4.7 8.5-4.7",
  creators:
    "M9 11a3.2 3.2 0 1 0 0-6.4 3.2 3.2 0 0 0 0 6.4zM2.5 20a6.5 6.5 0 0 1 13 0M17 11a3.2 3.2 0 0 0 0-6.4M21.5 20a6.5 6.5 0 0 0-4.2-6.1",
  time: "M12 7.5V12l3 1.8M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z",
  absences:
    "M12 8.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7zM12 2.5v2M12 19.5v2M2.5 12h2M19.5 12h2M5.1 5.1l1.4 1.4M17.5 17.5l1.4 1.4M5.1 18.9l1.4-1.4M17.5 6.5l1.4-1.4",
  calendar: "M4 6h16v15H4zM4 10h16M8 3v4M16 3v4M8 14h3",
  meetings: "M4 7h11v10H4zM15 10.5l5-3v9l-5-3z",
  admin: "M12 3l8 3v6c0 4.6-3.2 7.8-8 9-4.8-1.2-8-4.4-8-9V6zM9 12l2 2 4-4",
  logout:
    "M15 12H5m0 0l3-3m-3 3l3 3M11 6V5a2 2 0 0 1 2-2h5a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5a2 2 0 0 1-2-2v-1",
  user: "M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM4.5 20.5a7.5 7.5 0 0 1 15 0",
  // Zeichnung um 2,25 nach links und 0,4 nach unten gerückt: Die zweite
  // Person rechts machte das Symbol im 24×24-Feld sonst kopflastig nach rechts.
  users:
    "M9.8 12.4a3.4 3.4 0 1 0 0-6.8 3.4 3.4 0 0 0 0 6.8zM14.3 18.4a4.5 4.5 0 0 0-9 0M15.8 11.9a3 3 0 0 0 0-5.8M18.8 17.9a4 4 0 0 0-3-3.6",
  bell: "M6 9a6 6 0 0 1 12 0c0 4.5 1.5 5.5 2 6H4c.5-.5 2-1.5 2-6zM9.5 20.5a2.5 2.5 0 0 0 5 0",
  plus: "M12 5v14M5 12h14",
  search: "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.3-4.3",
  check: "M5 12.5l4.5 4.5L19.5 7",
  checks: "M2 12.5l4 4 7.5-8M10 16.5l1.5 1.5 8.5-9.5",
  chevron: "M9 6l6 6-6 6",
  shield: "M12 3l8 3v6c0 4.6-3.2 7.8-8 9-4.8-1.2-8-4.4-8-9V6z",
  settings:
    "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM19 12a7 7 0 0 0-.1-1l2-1.5-2-3.4-2.3 1a7 7 0 0 0-1.7-1l-.4-2.6h-4l-.4 2.6a7 7 0 0 0-1.7 1l-2.3-1-2 3.4L5.1 11a7 7 0 0 0 0 2l-2 1.5 2 3.4 2.3-1a7 7 0 0 0 1.7 1l.4 2.6h4l.4-2.6a7 7 0 0 0 1.7-1l2.3 1 2-3.4-2-1.5a7 7 0 0 0 .1-1z",
  send: "M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z",
  hash: "M9 4L7 20M17 4l-2 16M5 9h15M4 15h15",
  at: "M16 12a4 4 0 1 0-1.2 2.8M16 8v5a2.5 2.5 0 0 0 5 0v-1a9 9 0 1 0-3.5 7.1",
  close: "M6 6l12 12M18 6L6 18",
  dots: "M5 12h.01M12 12h.01M19 12h.01",
  pin: "M9 4h6l-1 6 3 3v2H7v-2l3-3-1-6zM12 17v4",
  mic: "M12 3a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3zM5 11a7 7 0 0 0 14 0M12 18v3M8 21h8",
  stop: "M7 7h10v10H7z",
  reply: "M9 7L4 12l5 5M4 12h9a7 7 0 0 1 7 7v1",
  trash: "M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M6 7l1 13h10l1-13M10 11v6M14 11v6",
  copy: "M8 8h11v11H8zM5 16H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1",
  smile: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zM9 10h.01M15 10h.01M8.5 14.5a4 4 0 0 0 7 0",
  play: "M8 5l12 7-12 7V5z",
  pause: "M9 5v14M15 5v14",
  mail: "M4 6h16v12H4zM4 7l8 6 8-6",
  lock: "M6 10V8a6 6 0 0 1 12 0v2M5 10h14v10H5zM12 14v3",
  key: "M14.5 4a5.5 5.5 0 1 0 4.9 8H21l-1-1 1-1-1-1h-1.6a5.5 5.5 0 0 0-4.9-4zM10 10l-7 7v3h3l1-1v-2h2v-2h2",
  star: "M12 3l2.6 5.6 6.1.8-4.5 4.2 1.2 6.1L12 17l-5.4 2.7 1.2-6.1L3.3 9.4l6.1-.8z",
  edit: "M4 20h4l10-10-4-4L4 16v4zM13.5 6.5l4 4",
  filter: "M4 5h16l-6 8v5l-4 2v-7z",
  eye: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",
  youtube: "M3 8a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zM10 9l5 3-5 3z",
  twitch: "M4 4h16v10l-4 4h-4l-3 3v-3H4zM10 8v4M15 8v4",
  tiktok: "M14 4v10.5a3.5 3.5 0 1 1-3-3.46M14 4a5 5 0 0 0 5 5",
  instagram: "M4 7a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3zM12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7zM17 7h.01",
  trending: "M3 17l6-6 4 4 8-8M15 7h6v6",
  discord: "M8 5.5a13 13 0 0 1 8 0M8 18.5a13 13 0 0 0 8 0M8 5.5C6 6 4.5 8 4 11c-.6 3.5.2 6 1 7 1 .5 2 1 2.5.5l.7-1.2M16 5.5c2 .5 3.5 2.5 4 5.5.6 3.5-.2 6-1 7-1 .5-2 1-2.5.5l-.7-1.2M9.5 12.5h.01M14.5 12.5h.01",
  globe: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zM3.5 12h17M12 3c2.5 2.5 3.8 5.7 4 9-.2 3.3-1.5 6.5-4 9-2.5-2.5-3.8-5.7-4-9 .2-3.3 1.5-6.5 4-9z",
  list: "M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01",
  grid: "M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM14 14h6v6h-6z",
  columns: "M4 4h4v16H4zM10 4h4v16h-4zM16 4h4v16h-4z",
  alert: "M12 8v5M12 17h.01M10.3 3.9L2.4 18a2 2 0 0 0 1.7 3h15.8a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z",
  activity: "M3 12h4l3 8 4-16 3 8h4",
  phone: "M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L20 13l1 4v2a1 1 0 0 1-1 1A16 16 0 0 1 4 5a1 1 0 0 1 1-1z",
  cake: "M4 21h16M5 21v-7a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v7M4 14c1.5 1.5 3 1.5 4 0s2.5-1.5 4 0 2.5 1.5 4 0 2.5-1.5 4 0M12 8V5M12 5l1.5-1.5M12 5l-1.5-1.5",
  target: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zM12 16.5a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9zM12 12h.01",
  clock: "M12 7.5V12l3 1.8M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z",
  cloud: "M7 19a4.5 4.5 0 0 1-.5-9 6 6 0 0 1 11.4 1.6A3.7 3.7 0 0 1 17 19z",
  history: "M3 4v5h5M3.5 13a8.5 8.5 0 1 0 2.2-6.3L3 9M12 8v4.5l3.2 1.9",
  vault: "M4 5h16v14H4zM12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7zM12 8.5V6M12 18v-2.5M15.5 12H18M6 12h2.5",
  folder: "M3 7.5a2 2 0 0 1 2-2h3.8a2 2 0 0 1 1.6.8l1 1.2H19a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
  download: "M12 3.5v11M7.5 10.5l4.5 4.5 4.5-4.5M4.5 20h15",
  share:
    "M17.5 8.2a2.6 2.6 0 1 0 0-5.2 2.6 2.6 0 0 0 0 5.2zM6.5 14.6a2.6 2.6 0 1 0 0-5.2 2.6 2.6 0 0 0 0 5.2zM17.5 21a2.6 2.6 0 1 0 0-5.2 2.6 2.6 0 0 0 0 5.2zM8.8 10.9l6.4-3.3M8.8 13.1l6.4 3.3",
  music: "M9 18V6l11-2v12M9 18a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zM20 16a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z",
  image: "M4 5h16v14H4zM4 16l4.5-4.5 3 3L15 11l5 5M15.5 8.5h.01",
  video: "M3 5h18v14H3zM3 9h18M3 15h18M8 5v14M16 5v14",
  document: "M6.5 3h7l4.5 4.5V21h-11.5zM13.5 3v4.5H18M9.5 12.5h5M9.5 16h5",
  file: "M6.5 3h7l4.5 4.5V21h-11.5zM13.5 3v4.5H18",
  archive: "M3.5 6.5h17v4h-17zM5.5 10.5V20h13v-9.5M10 14h4",
};

type Props = SVGProps<SVGSVGElement> & {
  name: keyof typeof PATHS | string;
  size?: number;
};

export function Icon({ name, size = 20, ...rest }: Props) {
  const d = PATHS[name] ?? PATHS.dashboard;
  return (
    <svg
      width={size}
      height={size}
      viewBox="0 0 24 24"
      fill="none"
      stroke="currentColor"
      strokeWidth={1.7}
      strokeLinecap="round"
      strokeLinejoin="round"
      aria-hidden="true"
      {...rest}
    >
      <path d={d} />
    </svg>
  );
}
