interface TabOption { id: T; label: string } interface Props { tabs: Array>; active: T; onChange: (tab: T) => void; ariaLabel: string; className?: string; } export function TabList({ tabs, active, onChange, ariaLabel, className = "" }: Props) { const move = (event: React.KeyboardEvent) => { if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return; event.preventDefault(); const index = tabs.findIndex((entry) => entry.id === active); const next = (index + (event.key === "ArrowRight" ? 1 : -1) + tabs.length) % tabs.length; onChange(tabs[next].id); event.currentTarget.querySelectorAll('[role="tab"]')[next]?.focus(); }; return
{tabs.map((entry) => )}
; }