import { SearchPanelEmits, SearchPanelItem, SearchPanelProps } from './src/types';
import { default as TxSearchPanel } from './src/TxSearchPanel.vue';
/**
* TxSearchPanel — inline command search: field, live results and empty state in
* one card. Unlike `TxCommandPalette` it is not modal — no overlay, no focus
* trap — so it can sit inside a page, a sidebar or a popover.
*
* @example
* ```ts
* import { TxSearchPanel } from '@talex-touch/tuffex'
*
* //
* ```
*
* @public
*/
declare const SearchPanel: {
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins & Readonly<{
onSelect?: ((item: SearchPanelItem) => any) | undefined;
onClear?: (() => any) | undefined;
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
onQueryChange?: ((value: string) => any) | undefined;
}>, {
focus: () => void | undefined;
blur: () => void | undefined;
clear: () => void;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
select: (item: SearchPanelItem) => any;
clear: () => any;
"update:modelValue": (value: string) => any;
queryChange: (value: string) => any;
}, import('vue').PublicProps, {
disabled: boolean;
placeholder: string;
modelValue: string;
items: SearchPanelItem[];
minHeight: number | string;
clearable: boolean;
idleCount: number;
emptyThreshold: number;
emptyTitle: string;
emptyDescription: string;
clearLabel: string;
listLabel: string;
}, false, {}, {}, Record, Record, string, {
inputRef: HTMLInputElement;
}, HTMLDivElement, import('vue').ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly & Readonly<{
onSelect?: ((item: SearchPanelItem) => any) | undefined;
onClear?: (() => any) | undefined;
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
onQueryChange?: ((value: string) => any) | undefined;
}>, {
focus: () => void | undefined;
blur: () => void | undefined;
clear: () => void;
}, {}, {}, {}, {
disabled: boolean;
placeholder: string;
modelValue: string;
items: SearchPanelItem[];
minHeight: number | string;
clearable: boolean;
idleCount: number;
emptyThreshold: number;
emptyTitle: string;
emptyDescription: string;
clearLabel: string;
listLabel: string;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import('vue').ComponentOptionsBase & Readonly<{
onSelect?: ((item: SearchPanelItem) => any) | undefined;
onClear?: (() => any) | undefined;
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
onQueryChange?: ((value: string) => any) | undefined;
}>, {
focus: () => void | undefined;
blur: () => void | undefined;
clear: () => void;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
select: (item: SearchPanelItem) => any;
clear: () => any;
"update:modelValue": (value: string) => any;
queryChange: (value: string) => any;
}, string, {
disabled: boolean;
placeholder: string;
modelValue: string;
items: SearchPanelItem[];
minHeight: number | string;
clearable: boolean;
idleCount: number;
emptyThreshold: number;
emptyTitle: string;
emptyDescription: string;
clearLabel: string;
listLabel: string;
}, {}, string, {}, Record, Record, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
$slots: Readonly<{
item?: (props: {
item: SearchPanelItem;
active: boolean;
query: string;
}) => any;
empty?: (props: {
query: string;
}) => any;
footer?: () => any;
}> & {
item?: (props: {
item: SearchPanelItem;
active: boolean;
query: string;
}) => any;
empty?: (props: {
query: string;
}) => any;
footer?: () => any;
};
}) & import('vue').Plugin;
export { SearchPanel, TxSearchPanel };
export type { SearchPanelEmits, SearchPanelItem, SearchPanelProps };
export type TxSearchPanelInstance = InstanceType;
export default SearchPanel;