import { useEffect, useRef, useState } from 'react' import { ChevronDown } from 'lucide-react' export interface ThemedSelectOption { value: string label: string } interface ThemedSelectProps { id?: string value: string options: ThemedSelectOption[] onChange: (value: string) => void disabled?: boolean } export default function ThemedSelect({ id, value, options, onChange, disabled = false }: ThemedSelectProps) { const [open, setOpen] = useState(false) const rootRef = useRef(null) const selected = options.find((option) => option.value === value) useEffect(() => { if (!open) return const closeOnOutsideClick = (event: MouseEvent) => { if (rootRef.current && !rootRef.current.contains(event.target as Node)) { setOpen(false) } } const closeOnEscape = (event: KeyboardEvent) => { if (event.key === 'Escape') setOpen(false) } document.addEventListener('mousedown', closeOnOutsideClick) document.addEventListener('keydown', closeOnEscape) return () => { document.removeEventListener('mousedown', closeOnOutsideClick) document.removeEventListener('keydown', closeOnEscape) } }, [open]) const selectOption = (nextValue: string) => { onChange(nextValue) setOpen(false) } return (
{open && ( )}
) }