CardIcon.tsx

2.0 KB · raw

1import type { StackIconKind } from "./types";23interface CardIconProps {4  kind: StackIconKind;5}67export function CardIcon(props: CardIconProps) {8  const common = {9    width: 16,10    height: 16,11    viewBox: "0 0 16 16",12    fill: "none",13    stroke: "currentColor",14    "stroke-width": "1.25",15    "stroke-linecap": "round",16    "stroke-linejoin": "round",17    "aria-hidden": true,18  } as const;1920  switch (props.kind) {21    case "shield":22      return (23        <svg {...common}>24          <path d="M8 2.2 3.4 4.4v3.2c0 3 2.1 5.1 4.6 6.2 2.5-1.1 4.6-3.2 4.6-6.2V4.4L8 2.2Z" />25          <path d="M6.3 8.1 7.4 9.2 9.9 6.6" />26        </svg>27      );28    case "lock":29      return (30        <svg {...common}>31          <rect x="3" y="7" width="10" height="7" rx="1.6" />32          <path d="M5.8 7V5.4a2.2 2.2 0 0 1 4.4 0V7" />33        </svg>34      );35    case "sync":36      return (37        <svg {...common}>38          <path d="M4 8a4 4 0 0 1 6.8-2.8" />39          <path d="M11 3.6v2.2H8.8" />40          <path d="M12 8a4 4 0 0 1-6.8 2.8" />41          <path d="M5 12.4v-2.2h2.2" />42        </svg>43      );44    case "sun":45      return (46        <svg {...common}>47          <circle cx="8" cy="8" r="2.8" />48          <path d="M8 1.8v1.3M8 12.9v1.3M1.8 8h1.3M12.9 8h1.3M3.6 3.6l.9.9M11.5 11.5l.9.9M12.4 3.6l-.9.9M4.5 11.5l-.9.9" />49        </svg>50      );51    case "keys":52      return (53        <svg {...common}>54          <rect x="2" y="5" width="5" height="4" rx="1" />55          <rect x="9" y="7" width="5" height="4" rx="1" />56          <path d="M7 7h2M7 9h2" />57        </svg>58      );59    case "spark":60      return (61        <svg {...common}>62          <path d="M8 1.8 9.2 6l4.1 1.2-4.1 1.2L8 12.6 6.8 8.4 2.7 7.2 6.8 6 8 1.8Z" />63          <path d="m12 11 .5 1.5L14 13l-1.5.5L12 15l-.5-1.5L10 13l1.5-.5L12 11Z" />64        </svg>65      );66    case "bubble":67      return (68        <svg {...common}>69          <path d="M3 4.2h10a1 1 0 0 1 1 1v5.6a1 1 0 0 1-1 1H6l-3.2 2V5.2a1 1 0 0 1 1-1Z" />70          <path d="M5.5 7h5M5.5 9.2h3.2" />71        </svg>72      );73  }74}