import { Badge } from "@/components/ui/badge"; import { cn } from "@/lib/utils"; export interface PaletteRole { name: string; dark: { oklch: string; hex: string; wcagAA: boolean }; light: { oklch: string; hex: string; wcagAA: boolean }; } interface ThemePaletteGridProps { palette: PaletteRole[]; variant?: "dark" | "light"; className?: string; } const ROLE_LABELS: Record = { background: "Background", surface: "Surface", overlay: "Overlay", text: "Text", "accent-1": "Accent-1", "accent-2": "Accent-2", "accent-3": "Accent-3", }; function Swatch({ role, variant, }: { role: PaletteRole; variant: "dark" | "light"; }) { const entry = variant === "dark" ? role.dark : role.light; const label = ROLE_LABELS[role.name] ?? role.name; return (
{entry.hex} {entry.wcagAA ? ( AA ) : ( Fails AA )}
); } function PaletteRow({ palette, variant, }: { palette: PaletteRole[]; variant: "dark" | "light"; }) { return (
{variant}
{palette.map((role) => ( ))}
); } export function ThemePaletteGrid({ palette, variant = "dark", className, }: ThemePaletteGridProps) { if (palette.length === 0) { return (

No palette yet

Pick a seed color to generate a full OKLCH palette with dark and light variants.

); } return (
); }