'use client' import type { KeyboardEvent } from 'react' import { Check } from 'lucide-react' import { cn } from '@/lib/utils' import { PALETTE_VALUES, type Palette } from '@/lib/theme/palettes' interface PalettePickerProps { value: Palette onChange: (palette: Palette) => void labels: Record 'aria-label': string } export function PalettePicker({ value, onChange, labels, 'aria-label': ariaLabel, }: PalettePickerProps) { function handleKeyDown(event: KeyboardEvent) { const direction = event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : event.key === 'ArrowLeft' || event.key === 'ArrowUp' ? -1 : 0 if (direction === 0) return event.preventDefault() const currentIndex = PALETTE_VALUES.indexOf(value) const nextIndex = (currentIndex + direction + PALETTE_VALUES.length) % PALETTE_VALUES.length const nextPalette = PALETTE_VALUES[nextIndex] onChange(nextPalette) event.currentTarget .querySelector(`[data-palette-option="${nextPalette}"]`) ?.focus() } return (
{PALETTE_VALUES.map((palette) => { const selected = palette === value return ( ) })}
) }