/** * SearchableMultiSelect - A searchable multi-select component for React Ink * * This component combines text input for filtering with multi-select functionality, * which is not available in ink-ui out of the box. */ import type React from "react"; export interface Choice { /** Unique identifier for the choice */ id: string; /** Primary text (title) - displayed in cyan when focused */ title: string; /** Secondary text (e.g., authors) */ subtitle?: string; /** Tertiary text (e.g., year, type, identifiers) */ meta?: string; /** Associated value */ value: T; /** Date when the item was last updated (custom.timestamp) */ updatedDate?: Date; /** Date when the item was created (custom.created_at) */ createdDate?: Date; /** Date when the item was published (for sorting) */ publishedDate?: Date; } /** Sort option identifier */ export type SortOption = "updated-desc" | "updated-asc" | "created-desc" | "created-asc" | "published-desc" | "published-asc" | "relevance"; export interface SearchableMultiSelectProps { /** Available choices */ choices: Choice[]; /** Filter function for search */ filterFn?: (query: string, choices: Choice[]) => Choice[]; /** Maximum visible items */ visibleCount?: number; /** Callback when selection is confirmed */ onSubmit: (selected: Choice[]) => void; /** Callback when cancelled */ onCancel: () => void; /** Placeholder text for search input */ placeholder?: string; /** Header text */ header?: string; /** Footer text */ footer?: string; /** Default sort option */ defaultSort?: SortOption; /** Debounce delay in milliseconds for search filtering */ debounceMs?: number; } export declare function SearchableMultiSelect({ choices, filterFn, visibleCount: visibleCountProp, onSubmit, onCancel, placeholder, header, footer, defaultSort, debounceMs, }: SearchableMultiSelectProps): React.ReactElement; //# sourceMappingURL=SearchableMultiSelect.d.ts.map