"use client"; type ToggleButtonOption = { value: T; label: string; className?: string; activeClassName?: string; inactiveClassName?: string; disabled?: boolean; ariaLabel?: string; onClick?: () => void; }; type ToggleButtonGroupProps = { value?: T | null; options: ToggleButtonOption[]; onChange?: (value: T) => void; ariaLabel?: string; role?: "group" | "radiogroup"; className?: string; buttonBaseClassName?: string; buttonClassName?: string; activeClassName?: string; inactiveClassName?: string; sizeClassName?: string; }; function joinClasses(parts: Array) { return parts.filter(Boolean).join(" "); } export default function ToggleButtonGroup({ value, options, onChange, ariaLabel, role = "group", className = "flex items-center gap-0 rounded-full border border-accent-weak bg-panel", buttonBaseClassName = "rounded-full", buttonClassName, activeClassName = "btn-accent", inactiveClassName = "text-muted", sizeClassName = "px-3 py-2 text-xs font-semibold" }: ToggleButtonGroupProps) { return (
{options.map(option => { const isActive = value != null && option.value === value; const onClick = option.onClick ? option.onClick : onChange ? () => onChange(option.value) : undefined; return ( ); })}
); }