UNPKG

trieve-search-component

Version:

The easiest way to get up and running in your app using trieve search.

186 lines 6.37 kB
import React from "react"; import { Chunk, ChunkWithHighlights, GroupChunk } from "../types"; import { ChunkFilter, ChunkGroup, SearchChunksReqPayload, TrieveSDK } from "trieve-ts-sdk"; import { InferenceFilterFormStep } from "../../TrieveModal/FilterSidebarComponents"; export declare const ALL_TAG: { tag: string; label: string; icon: null; iconClassName: string; }; type simpleSearchReqPayload = Omit<SearchChunksReqPayload, "query" | "highlight_options">; type customAutoCompleteAddOn = { use_autocomplete?: boolean; }; export type PagefindApi = any; export type currencyPosition = "before" | "after"; export type ModalTypes = "ecommerce" | "docs" | "pdf"; export type SearchModes = "chat" | "search"; export type searchOptions = simpleSearchReqPayload & customAutoCompleteAddOn; export interface PagefindOptions { usePagefind: boolean; cdnBaseUrl?: string; } export interface TagProp { tag: string; label?: string; selected?: boolean; iconClassName?: string; icon?: () => JSX.Element; description?: string; child?: FilterSidebarSection; } export interface FilterSidebarSection { key: string; title: string; selectionType: "single" | "multiple"; filterType: "match_any" | "match_all"; options: TagProp[]; } export interface FilterSidebarProps { sections: FilterSidebarSection[]; } export interface InferenceFiltersFormProps { steps: InferenceFilterFormStep[]; } export interface SearchPageProps { filterSidebarProps?: FilterSidebarProps; inferenceFiltersFormProps?: InferenceFiltersFormProps; display?: boolean; } export type ModalProps = { datasetId: string; apiKey: string; partnerSettings?: { partnerCompanyName?: string; partnerCompanyUrl?: string; partnerCompanyFaviconUrl?: string; }; baseUrl?: string; onResultClick?: (chunk: Chunk) => void; theme?: "light" | "dark"; searchOptions?: searchOptions; chatFilters?: ChunkFilter; placeholder?: string; chatPlaceholder?: string; chat?: boolean; analytics?: boolean; analyticsSelectors?: { checkout: { querySelector: string; }; }; ButtonEl?: JSX.ElementType; suggestedQueries?: boolean; followupQuestions?: boolean; numberOfSuggestions?: number; defaultSearchQueries?: string[]; defaultAiQuestions?: string[]; brandLogoImgSrcUrl?: string; brandName?: string; problemLink?: string; brandColor?: string; brandFontFamily?: string; openKeyCombination?: { key?: string; label?: string; ctrl?: boolean; }[]; tags?: TagProp[]; defaultSearchMode?: SearchModes; usePagefind?: boolean; type?: ModalTypes; useGroupSearch?: boolean; allowSwitchingModes?: boolean; defaultCurrency?: string; currencyPosition?: currencyPosition; responsive?: boolean; open?: boolean; openLinksInNewTab?: boolean; onOpenChange?: (open: boolean) => void; debounceMs?: number; buttonTriggers?: { selector: string; mode: SearchModes; removeListeners?: boolean; }[]; inline?: boolean; inlineCarousel?: boolean; zIndex?: number; showFloatingButton?: boolean; floatingButtonPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right"; floatingButtonVersion?: "brand-logo" | "brand-color"; floatingSearchIconPosition?: "left" | "right"; showFloatingSearchIcon?: boolean; disableFloatingSearchIconClick?: boolean; showFloatingInput?: boolean; inlineHeader?: string; groupTrackingId?: string; cleanGroupName?: string; cssRelease?: string; hideOpenButton?: boolean; defaultImageQuestion?: string; onAddToCart?: (chunk: Chunk) => Promise<void> | void; getCartQuantity?: (trackingId: string) => Promise<number> | number; showResultHighlights?: boolean; initialAiMessage?: string; ignoreEventListeners?: boolean; hideOverlay?: boolean; hidePrice?: boolean; hideChunkHtml?: boolean; componentName?: string; displayModal?: boolean; searchPageProps?: SearchPageProps; recommendOptions?: { queriesToTriggerRecommendations: string[]; productId: string; filter?: ChunkFilter; }; usePortal?: boolean; previewTopicId?: string; }; declare const ModalProvider: ({ children, onLoadProps, }: { children: React.ReactNode; onLoadProps: ModalProps; }) => React.JSX.Element; declare function useModalState(): { props: ModalProps; trieveSDK: TrieveSDK; query: string; imageUrl: string; audioBase64: string | undefined; uploadingImage: boolean; fingerprint: string; setFingerprint: React.Dispatch<React.SetStateAction<string>>; setQuery: React.Dispatch<React.SetStateAction<string>>; setImageUrl: React.Dispatch<React.SetStateAction<string>>; setAudioBase64: React.Dispatch<React.SetStateAction<string | undefined>>; setUploadingImage: React.Dispatch<React.SetStateAction<boolean>>; results: ChunkWithHighlights[] | GroupChunk[][]; setResults: React.Dispatch<React.SetStateAction<ChunkWithHighlights[] | GroupChunk[][]>>; requestID: string; setRequestID: React.Dispatch<React.SetStateAction<string>>; loadingResults: boolean; setLoadingResults: React.Dispatch<React.SetStateAction<boolean>>; open: boolean; setOpen: React.Dispatch<React.SetStateAction<boolean>>; inputRef: React.RefObject<HTMLInputElement>; mode: string; setMode: React.Dispatch<React.SetStateAction<SearchModes>>; modalRef: React.RefObject<HTMLDivElement>; setContextProps: (props: ModalProps) => void; selectedTags: TagProp[]; setSelectedTags: React.Dispatch<React.SetStateAction<TagProp[] | undefined>>; currentGroup: ChunkGroup | null; setCurrentGroup: React.Dispatch<React.SetStateAction<ChunkGroup | null>>; pagefind?: PagefindApi; isRecording: boolean; setIsRecording: React.Dispatch<React.SetStateAction<boolean>>; selectedSidebarFilters: Record<string, string[]>; setSelectedSidebarFilters: React.Dispatch<React.SetStateAction<Record<string, string[]>>>; minHeight: number; resetHeight: () => void; addHeight: (height: number) => void; }; export { ModalProvider, useModalState }; //# sourceMappingURL=modal-context.d.ts.map