'use client'; import { LeaderboardDriver } from '@/lib/schemas/leaderboard'; function randomColor(): string { return '#' + Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, '0'); } interface DriversEditorProps { drivers: LeaderboardDriver[]; onChange: (drivers: LeaderboardDriver[]) => void; } export function DriversEditor({ drivers, onChange }: DriversEditorProps) { const update = (index: number, patch: Partial) => { const next = drivers.map((d, i) => (i === index ? { ...d, ...patch } : d)); onChange(next); }; const moveUp = (index: number) => { if (index === 0) return; const next = [...drivers]; [next[index - 1], next[index]] = [next[index], next[index - 1]]; onChange(next); }; const moveDown = (index: number) => { if (index === drivers.length - 1) return; const next = [...drivers]; [next[index], next[index + 1]] = [next[index + 1], next[index]]; onChange(next); }; const remove = (index: number) => { onChange(drivers.filter((_, i) => i !== index)); }; const add = () => { onChange([...drivers, { name: 'New Driver', initials: 'ND', color: randomColor() }]); }; return (
{drivers.map((driver, i) => (
update(i, { name: e.target.value })} className="rounded bg-gray-600 px-2 py-1 text-sm text-white" />
update(i, { initials: e.target.value })} className="w-24 rounded bg-gray-600 px-2 py-1 text-sm text-white" />
update(i, { color: e.target.value })} className="h-8 w-8 cursor-pointer rounded border-0 bg-transparent" /> { if (/^#[0-9a-fA-F]{6}$/.test(e.target.value)) { update(i, { color: e.target.value }); } }} className="w-24 rounded bg-gray-600 px-2 py-1 font-mono text-sm text-white" />
))}
); }