import { useState, useRef, useEffect } from 'react' import { Icon, arrowUp } from '@/components/icons' export interface DropdownOption { value: T label: string } interface DropdownProps { label: string description?: string value: T options: DropdownOption[] onChange: (value: T) => void disabled?: boolean className?: string } /** * Dropdown component for selecting from a list of options */ const Dropdown = ({ label, description, value, options, onChange, disabled = false, className = '', }: DropdownProps) => { const [isOpen, setIsOpen] = useState(false) const dropdownRef = useRef(null) // Close dropdown when clicking outside useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false) } } if (isOpen) { document.addEventListener('mousedown', handleClickOutside) return () => document.removeEventListener('mousedown', handleClickOutside) } }, [isOpen]) const selectedOption = options.find((opt) => opt.value === value) const handleSelect = (optionValue: T) => { onChange(optionValue) setIsOpen(false) } return (
{description &&

{description}

}
{isOpen && !disabled && (
{options.map((option) => ( ))}
)}
) } export default Dropdown