"use client"; import clsx from "clsx"; import { useFocusRing } from "react-aria"; import { Text } from "../Text"; import styles from "./tabs.module.css"; interface TabsProps extends React.PropsWithChildren { tabs: { title: string; value: string; icon?: JSX.Element }[]; selected?: string; setSelected?: (value: string) => void; disabled?: boolean; } const Tabs: React.ComponentType = ({ tabs, selected, setSelected, disabled, }) => { return (
{tabs.map((tab) => { return ( ); })}
); }; export default Tabs; const Tab = ({ title, value, selected, setSelected, icon, disabled }) => { let { focusProps, isFocusVisible } = useFocusRing(); return (
{ if (!disabled) setSelected?.(value); }} onKeyDown={(e) => { if (e.key === " " && !disabled) { e.preventDefault(); // prevent page scroll setSelected?.(value); } }} >
{icon ?
{icon}
: null} {title}
); };