import { useState } from "react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { cn, truncateMiddle } from "@/lib/utils"; export interface DropdownSelectorOption { value: T; label: string; } interface DropdownSelectorProps { value: T; options: DropdownSelectorOption[]; onChange: (value: T) => void; triggerClassName?: string; contentClassName?: string; } function ChevronDownIcon() { return ( ); } function ChevronUpIcon() { return ( ); } export function DropdownSelector({ value, options, onChange, triggerClassName, contentClassName, }: DropdownSelectorProps) { const selectedOption = options.find((opt) => opt.value === value); const [isOpen, setIsOpen] = useState(false); return ( {truncateMiddle(selectedOption?.label ?? value, 30)} {isOpen ? : } onChange(v as T)} > {options.map((option) => ( {truncateMiddle(option.label)} ))} ); }