fumadocs-ui
Version:
The Radix UI version of Fumadocs UI
76 lines • 3.59 kB
TypeScript
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 };