import * as React from 'react'; import { cn } from '#utils'; import { DropdownButton } from '../DropdownButton/DropdownButton.tsx'; import { DropdownMenu } from '../DropdownMenu/DropdownMenu.tsx'; import type { ButtonProps } from '../Button/Button.tsx'; export type ListboxDropdownOption = { key: string; label: string; }; export type ListboxDropdownProps = { checkPosition?: 'left' | 'right'; className?: string; contentClassName?: string; disabled?: boolean; options: T[]; selected: T[]; setSelected: React.Dispatch>; title: string; triggerClassName?: string; variant?: ButtonProps['variant']; widthFull?: boolean; }; export const ListboxDropdown = ({ contentClassName, disabled, options, selected, setSelected, title, triggerClassName, widthFull }: ListboxDropdownProps) => { return ( {title} {options.map((option) => { const checked = Boolean(selected.find((selectedOption) => selectedOption.key === option.key)); return ( { event.preventDefault(); if (checked) { setSelected((prevSelected) => { return prevSelected.filter((selectedOption) => selectedOption.key !== option.key); }); } else { setSelected((prevSelected) => [...prevSelected, option]); } }} > {option.label} ); })} ); };