trieve-search-component
Version:
The easiest way to get up and running in your app using trieve search.
186 lines • 6.37 kB
TypeScript
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