import type { Component, Snippet } from 'svelte'; export interface DropdownItem { id: string; label: string; description?: string; /** Lucide (or any) Svelte icon component: `import { Pencil } from '@lucide/svelte'` */ icon?: Component<{ class?: string; size?: number | string; strokeWidth?: number | string; }>; disabled?: boolean; destructive?: boolean; separator?: boolean; shortcut?: string; checked?: boolean; children?: DropdownItem[]; } type DropdownSize = 'sm' | 'md'; type DropdownAlign = 'start' | 'end'; type DropdownSide = 'bottom' | 'top'; interface DropdownMenuProps { id?: string; items?: DropdownItem[]; label?: string; align?: DropdownAlign; side?: DropdownSide; size?: DropdownSize; disabled?: boolean; open?: boolean; closeOnSelect?: boolean; matchTriggerWidth?: boolean; minWidth?: number; /** Soft cap — only applied when `scrollable` is true (default 320). */ maxHeight?: number; /** * Opt-in internal scrolling for long lists. * Default false: action menus grow / flip, never show a scrollbar. */ scrollable?: boolean; /** * On open, drill into the submenu path of the last selected item * and highlight it. */ flyToSelected?: boolean; loop?: boolean; class?: string; trigger?: Snippet; onselect?: (id: string, item: DropdownItem) => void; onopenchange?: (open: boolean) => void; } declare const DropdownMenu: Component; type DropdownMenu = ReturnType; export default DropdownMenu;