UNPKG

fumadocs-ui

Version:

The Radix UI version of Fumadocs UI

112 lines (111 loc) 3.65 kB
import { SharedProps } from "../../contexts/search.js"; import { ComponentProps, ReactNode } from "react"; import { DialogContent, DialogOverlay } from "@radix-ui/react-dialog"; import { HighlightedText, ReactSortedResult } from "fumadocs-core/search"; //#region src/components/dialog/search.d.ts type SearchItemType = (ReactSortedResult & { external?: boolean; }) | { id: string; type: 'action'; node: ReactNode; onSelect: () => void; }; interface SearchDialogProps extends SharedProps { search: string; onSearchChange: (v: string) => void; onSelect?: (item: SearchItemType) => void; isLoading?: boolean; children: ReactNode; } declare function SearchDialog({ open, onOpenChange, search, onSearchChange, isLoading, onSelect: onSelectProp, children }: SearchDialogProps): import("react").JSX.Element; declare function SearchDialogHeader(props: ComponentProps<'div'>): import("react").JSX.Element; declare function SearchDialogInput(props: ComponentProps<'input'>): import("react").JSX.Element; declare function SearchDialogClose({ children, className, ...props }: ComponentProps<'button'>): import("react").JSX.Element; declare function SearchDialogFooter(props: ComponentProps<'div'>): import("react").JSX.Element; declare function SearchDialogOverlay(props: ComponentProps<typeof DialogOverlay>): import("react").JSX.Element; declare function SearchDialogContent({ children, ...props }: ComponentProps<typeof DialogContent>): import("react").JSX.Element; declare function SearchDialogList({ items, Empty, Item, ...props }: Omit<ComponentProps<'div'>, 'children'> & { items: SearchItemType[] | null | undefined; /** * Renderer for empty list UI */ Empty?: () => ReactNode; /** * Renderer for items */ Item?: (props: { item: SearchItemType; onClick: () => void; }) => ReactNode; }): import("react").JSX.Element; declare function SearchDialogListItem({ item, className, children, renderMarkdown, renderHighlights: _, ...props }: ComponentProps<'button'> & { renderMarkdown?: (v: string) => ReactNode; /** @deprecated highlight blocks is now wrapped in `<mark />`, use `renderMarkdown` to handle instead. */ renderHighlights?: (blocks: HighlightedText<ReactNode>[]) => ReactNode; item: SearchItemType; }): import("react").JSX.Element; declare function SearchDialogIcon(props: ComponentProps<'svg'>): import("react").JSX.Element; interface TagsListProps extends ComponentProps<'div'> { tag?: string; onTagChange: (tag: string | undefined) => void; allowClear?: boolean; } declare function TagsList({ tag, onTagChange, allowClear, ...props }: TagsListProps): import("react").JSX.Element; declare function TagsListItem({ value, className, ...props }: ComponentProps<'button'> & { value: string; }): import("react").JSX.Element; declare function useSearch(): { open: boolean; onOpenChange: (open: boolean) => void; search: string; onSearchChange: (v: string) => void; onSelect: (item: SearchItemType) => void; isLoading: boolean; }; declare function useTagsList(): { value?: string; onValueChange: (value: string | undefined) => void; allowClear: boolean; }; declare function useSearchList(): { active: string | null; setActive: (v: string | null) => void; }; //#endregion export { SearchDialog, SearchDialogClose, SearchDialogContent, SearchDialogFooter, SearchDialogHeader, SearchDialogIcon, SearchDialogInput, SearchDialogList, SearchDialogListItem, SearchDialogOverlay, SearchDialogProps, SearchItemType, type SharedProps, TagsList, TagsListItem, TagsListProps, useSearch, useSearchList, useTagsList };