import { motion, AnimatePresence } from "framer-motion"; import { cn } from "@/public/lib/utils"; import { Check, ChevronDown } from "lucide-react"; import { useState } from "react"; interface SettingOption { label: string; value: string; } interface SelectDropdownProps { dropdownId: string; label: string; options: SettingOption[]; value: string; placeholder?: string; onChange: (value: string) => void; } export const SelectDropdown = ( { dropdownId, label, options, value, placeholder, onChange }: SelectDropdownProps ) => { const [openDropdown, setOpenDropdown] = useState(null); const handleDropdownToggle = (dropdownId: string) => { setOpenDropdown(openDropdown === dropdownId ? null : dropdownId); }; return (
handleDropdownToggle(dropdownId)} whileHover={{ scale: 1.01 }} whileTap={{ scale: 0.99 }} >
{options.find(opt => opt.value === value)?.label || value} {placeholder && {placeholder}}
{openDropdown === dropdownId && ( {options.map((option) => ( { onChange(option.value); handleDropdownToggle(dropdownId); }} whileHover={{ x: 4 }} > {option.label} {value === option.value && } ))} )}
) };