import React from "react"; import { ChessPawn, Hourglass } from "lucide-react"; import { GradientIcon } from "~/components/ui/GradientIcon"; import { cn } from "~/lib/utils"; export interface TimerModeSelectorProps { value: "chess_clock" | "standard"; onChange: (v: "chess_clock" | "standard") => void; disabled?: boolean; } const MODES = [ { value: "chess_clock" as const, label: "Chess Clock", icon: ChessPawn, desc: "Time bank + bonus per pick; bank early to save time for tough decisions", }, { value: "standard" as const, label: "Standard", icon: Hourglass, desc: "Traditional fixed timer; each pick gets the same amount of time, no banking or carry-over", }, ]; export function TimerModeSelector({ value, onChange, disabled }: TimerModeSelectorProps) { function handleGroupKeyDown(e: React.KeyboardEvent) { if (disabled) return; if (!["ArrowDown", "ArrowRight", "ArrowUp", "ArrowLeft"].includes(e.key)) return; e.preventDefault(); const idx = MODES.findIndex((m) => m.value === value); const next = e.key === "ArrowDown" || e.key === "ArrowRight" ? (idx + 1) % MODES.length : (idx - 1 + MODES.length) % MODES.length; const nextValue = MODES[next].value; onChange(nextValue); e.currentTarget.querySelector(`[data-radio-value="${nextValue}"]`)?.focus(); } return (
{MODES.map((mode) => { const selected = value === mode.value; return ( ); })}
); }