import React, { useState } from "react" import * as DropdownMenu from "@radix-ui/react-dropdown-menu" import { cn } from "@/lib/utils" import { Icons } from "../icons" interface DropdownItemProps { label: string value?: string | number } export interface DropdownProps { label: React.ReactNode items?: DropdownItemProps[] defaultItem?: string | number onChange?: (value: DropdownItemProps["value"]) => void disabled?: boolean className?: string width?: number } const Dropdown = ({ label, onChange, defaultItem, disabled, items, className, width, }: DropdownProps) => { const [selected, setSelected] = useState(defaultItem) const onSelectCallback = ({ value }: DropdownItemProps) => { setSelected(value) if (typeof onChange === "function") onChange(value) } const selectedLabel = items?.find((item) => item.value === selected)?.label return ( {items?.map((item, index) => { const active = selected === item.value return ( onSelectCallback(item)} > {active && (
)} {item.label}
) })}
) } Dropdown.displayName = "Dropdown" export { Dropdown }