← snapshot
1589 bytes
/**
* Hand-drawn 24×24 stroke icons — no icon library, matching the console's
* approach. Version-control glyphs (commit, branch, gate) are drawn rather
* than borrowed so they can carry loom language where it helps.
*/
const PATHS: Record<string, string> = {
// a stack of cloth bolts
repos: "M3 7l9-4 9 4-9 4-9-4zM3 12l9 4 9-4M3 17l9 4 9-4",
// sketches leaving for the registry
registry: "M12 3v7M12 3l-3 3M12 3l3 3M4 14v5a1 1 0 001 1h14a1 1 0 001-1v-5M8 14h.01M12 14h.01M16 14h.01",
// warping: threads onto the beam
loom: "M4 4v16M20 4v16M8 4v16M16 4v16M2 9h20M2 15h20",
// overview: the cloth inspected
overview: "M3 4h7v7H3zM14 4h7v4h-7zM14 12h7v8h-7zM3 15h7v5H3z",
// commit graph
log: "M12 4v5M12 15v5M6 12h3M15 12h3M12 12a3 3 0 100-.01M18 12a3 3 0 100-.01M6 12a3 3 0 100-.01",
// a punched card
decisions: "M5 3h11l3 3v15H5zM16 3v3h3M8 10h8M8 14h8M8 18h4",
// the gate
promote: "M12 19V5M12 5l-5 5M12 5l5 5M4 21h16",
// branch
refs: "M6 4v10a4 4 0 004 4h4M6 4a2 2 0 100-.01M18 14a2 2 0 100-.01M18 4a2 2 0 100-.01M18 6v6",
dot: "M12 12a1 1 0 100-.01",
};
export function JacIcon({
name,
size = 17,
className,
}: {
name: string;
size?: number;
className?: string;
}) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth={1.7}
strokeLinecap="round"
strokeLinejoin="round"
aria-hidden="true"
focusable="false"
>
<path d={PATHS[name] ?? PATHS.dot} />
</svg>
);
}