import * as React from "react"; export interface SearchResult { id: string; title: string; description?: string; path?: string; type?: string; icon?: React.ReactNode; metadata?: Record; } export interface FilterChipData { id: string; label: string; variant?: "selected" | "category" | "subcategory" | "tag"; } export interface SearchInputProps { /** Placeholder text shown in the input */ placeholder?: string; /** Controlled value */ value?: string; /** Default value for uncontrolled mode */ defaultValue?: string; /** Called when input value changes (raw, not debounced) */ onChange?: (value: string) => void; /** Called when user presses Enter */ onSubmit?: (value: string) => void; /** Search results to display in the dropdown */ results?: SearchResult[]; /** Whether results are loading */ isLoading?: boolean; /** Called when a result row is selected. * * `modifiers` carries the click event's modifier-key state when the * user picked the row via mouse — pass through so the consumer can * honor cmd/ctrl/shift/middle-click for background-tab navigation * (the row is a `
` rather than an ``, so the * browser doesn't background-tab natively even with `target="_blank"`). * Empty `{}` when the row was selected via keyboard Enter. */ onResultSelect?: (result: SearchResult, modifiers?: { metaKey?: boolean; ctrlKey?: boolean; shiftKey?: boolean; altKey?: boolean; button?: number; }) => void; /** Debounce delay in ms. 0 disables debounce. Default 300 */ debounceMs?: number; /** Custom renderer for a single result row */ renderResult?: (result: SearchResult, isHighlighted: boolean) => React.ReactNode; /** Group results by a key derived from each result */ groupBy?: (result: SearchResult) => string; /** Text shown when query meets minQueryLength but no results */ emptyResultsText?: string; /** Force-control dropdown visibility. Default: auto */ showDropdown?: boolean; /** Filter chips rendered inline before the input */ filterChips?: FilterChipData[]; /** Called when a filter chip is removed */ onFilterRemove?: (id: string) => void; /** Element rendered before the input. Default: SearchIcon */ startAdornment?: React.ReactNode; /** Element rendered after the input */ endAdornment?: React.ReactNode; /** Extra class names for the outer container */ className?: string; /** Extra class names for the dropdown */ dropdownClassName?: string; /** Minimum characters before showing results. Default 2 */ minQueryLength?: number; /** Maximum visible filter chips. "auto" measures available width. Default "auto" */ limitTags?: number | "auto"; /** Custom render for the "+N" overflow text */ getLimitTagsText?: (more: number) => React.ReactNode; } export declare function SearchInput({ placeholder, value, defaultValue, onChange, onSubmit, results, isLoading, onResultSelect, debounceMs, renderResult, groupBy, emptyResultsText, showDropdown: showDropdownProp, filterChips, onFilterRemove, startAdornment, endAdornment, className, dropdownClassName, minQueryLength, limitTags, getLimitTagsText, }: SearchInputProps): React.JSX.Element; export default SearchInput; //# sourceMappingURL=search-input.d.ts.map