import * as React from "react"; export interface GlobalSearchItem { /** Identifiant stable de l'entrée : sert de clé React et de `value` cmdk. */ key: string; label: string; /** Seconde ligne, en plus discret : module parent, référence, date… */ description?: string; icon?: React.ElementType; /** * Classes de la pastille d'icône : fond et couleur du glyphe, qui hérite de * `currentColor` — par exemple `"bg-blue-500/10 text-blue-500"`. Sans valeur, * la pastille est neutre. */ iconClassName?: string; /** Chemin de destination, laissé à la charge de l'appelant dans `onSelect`. */ path?: string; } export interface GlobalSearchGroup { heading: string; items: GlobalSearchItem[]; } export interface GlobalSearchProps { /** Résultats déjà filtrés et ordonnés par l'appelant, groupés par section. */ groups: GlobalSearchGroup[]; search: string; onSearch: (value: string) => void; onSelect: (item: GlobalSearchItem) => void; loading?: boolean; /** Mode contrôlé : sans ces props, la palette gère son ouverture elle-même. */ open?: boolean; onOpenChange?: (open: boolean) => void; /** Bouton loupe intégré. `false` quand l'application fournit son propre déclencheur. */ trigger?: boolean; triggerLabel?: string; /** Raccourci ⌘K / Ctrl+K. */ shortcut?: boolean; shortcutLabel?: string; /** * Termes déjà recherchés, proposés tant que la saisie est vide — la plus récente en premier. * La persistance et l'ordre restent à la charge de l'appelant : le composant ne fait que * les afficher. Masqué dès qu'une saisie est en cours, pour laisser place aux résultats. */ history?: string[]; /** Clic sur une entrée d'historique : à l'appelant de relancer la recherche sur ce terme. */ onHistorySelect?: (term: string) => void; /** Sans ce callback, aucune entrée d'historique n'affiche sa croix de suppression. */ onHistoryRemove?: (term: string) => void; /** Intitulé du groupe d'historique. */ historyHeading?: string; /** Libellé accessible de la croix qui retire une entrée de l'historique. */ removeFromHistoryLabel?: string; placeholder?: string; emptyLabel?: string; loadingLabel?: string; title?: string; description?: string; /** Ligne d'aide sous la liste, visible seulement quand il y a des résultats. */ hint?: React.ReactNode; className?: string; } /** * Recherche globale : un bouton loupe qui ouvre une palette de commande * (⌘K / Ctrl+K) listant des résultats groupés. * * Le composant ne sait rien des données : il affiche les `groups` qu'on lui donne, * remonte la saisie via `onSearch` et la sélection via `onSelect`. Les requêtes, * le filtrage (pages, droits) et la navigation restent dans l'application. * * Le filtrage interne de cmdk est désactivé (`shouldFilter={false}`) : les résultats * arrivent déjà filtrés en amont — côté serveur pour les données, sans accents pour * les pages — et cmdk en masquerait une partie en refiltrant sur la saisie brute. * * Tant que la saisie est vide, l'historique (`history`) est proposé : chaque terme * relance une recherche (`onHistorySelect`) et peut être retiré via sa croix * (`onHistoryRemove`). Sa persistance reste à la charge de l'appelant. */ export declare const GlobalSearch: ({ groups, search, onSearch, onSelect, loading, open, onOpenChange, trigger, triggerLabel, shortcut, shortcutLabel, history, onHistorySelect, onHistoryRemove, historyHeading, removeFromHistoryLabel, placeholder, emptyLabel, loadingLabel, title, description, hint, className, }: GlobalSearchProps) => React.ReactElement; //# sourceMappingURL=GlobalSearch.d.ts.map