interface DropdownItem { value: T label: string } interface DropdownItemWithIcon extends DropdownItem { icon?: string image?: never | undefined } interface DropdownItemWithImage extends DropdownItem { icon?: never | undefined image?: string } export type DropdownItemDefinition = DropdownItemWithIcon | DropdownItemWithImage; export type DropdownItemArray = DropdownItemDefinition[]; export type DropdownItemGroups = Record>; export type { DropdownItemWithIcon }; export type { DropdownItemWithImage }; export interface DropdownItemProps { selected: boolean checkbox?: boolean item: DropdownItemDefinition } export interface DropdownProps { size?: 36 | 44 icon?: string placeholder?: string searchable?: boolean modelValue: DropdownItemDefinition | null items: DropdownItemArray | DropdownItemGroups disabled?: boolean loading?: boolean error?: boolean searchHandler?: (searchTerm: string, items?: DropdownItemArray | DropdownItemGroups) => void } export interface DropdownListProps { selected: DropdownItemArray | DropdownItemDefinition | null items: DropdownItemArray | DropdownItemGroups searchable?: boolean loading?: boolean multiple?: boolean show?: boolean searchHandler?: (searchTerm: string, items?: DropdownItemArray | DropdownItemGroups) => void } export interface MultiselectDropdownProps { icon?: string label: string searchable?: boolean loading?: boolean modelValue: DropdownItemDefinition[] items: DropdownItemArray | DropdownItemGroups error?: boolean }