"use client"; import { type KeyboardEvent } from "react"; export interface TabItem { id: T; label: string; } interface TabsProps { items: TabItem[]; activeId: T; onChange: (id: T) => void; } export function Tabs({ items, activeId, onChange }: TabsProps) { function handleKeyDown(event: KeyboardEvent) { const currentIndex = items.findIndex((item) => item.id === activeId); if (event.key === "ArrowRight") { event.preventDefault(); const next = items.at((currentIndex + 1) % items.length); if (next) onChange(next.id); } else if (event.key === "ArrowLeft") { event.preventDefault(); const prev = items.at((currentIndex - 1 + items.length) % items.length); if (prev) onChange(prev.id); } } return (
{items.map((item) => { const selected = item.id === activeId; return ( ); })}
); }