import { color, record } from '@synnaxlabs/x'; import { ReactElement, ReactNode } from 'react'; import { Button } from '../button'; import { RenderProp } from '../component/renderProp'; import { Haul } from '../haul'; import { Icon } from '../icon'; import { Tag } from '../tag'; export interface MultipleEntry extends record.KeyedNamed { icon?: Icon.ReactElement; color?: color.Crude; alias?: string; } export interface MultipleTagProps extends Omit { itemKey: K; onDragStart: (key: K) => void; renderIcon?: (entry: unknown) => Icon.ReactElement | undefined; } /** Props for {@link MultipleTrigger}. */ export interface MultipleTriggerProps | undefined = MultipleEntry | undefined> extends Pick { /** Haul item type this trigger accepts as a drop. Empty accepts nothing. */ haulType?: string; /** Builds the haul item for an entry dragged out of the trigger. */ createHaulItem?: (entry: NonNullable) => Haul.Item; placeholder?: ReactNode; icon?: Icon.ReactElement; /** Whether to show only a count instead of one tag per entry. */ hideTags?: boolean; children?: RenderProp>; renderIcon?: (entry: unknown) => Icon.ReactElement | undefined; } /** @returns whether a drag carries at least one entry of the type not already selected. */ export declare const staticCanDrop: ({ items: entities }: Haul.DraggingState, haulType: string, value: K[] | readonly K[], disabled?: boolean) => boolean; /** The button of a {@link Multiple} selection, showing one removable tag per entry. */ export declare const MultipleTrigger: | undefined = MultipleEntry | undefined>({ haulType, createHaulItem, disabled, placeholder, variant, preview, icon, hideTags, children, renderIcon, }: MultipleTriggerProps) => ReactElement | null; //# sourceMappingURL=MultipleTrigger.d.ts.map