trieve-search-component
Version:
The easiest way to get up and running in your app using trieve search.
243 lines • 8.3 kB
TypeScript
import React from "react";
import { Chunk, ChunkWithHighlights, GroupChunk } from "../types";
import { ChunkFilter, ChunkGroup, SearchChunksReqPayload, TrieveSDK, DefaultSearchQuery } from "trieve-ts-sdk";
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;
description?: string;
range?: {
min?: number;
max?: number;
};
}
export declare const defaultRelevanceToolCallOptions: RelevanceToolCallOptions;
export interface RelevanceToolCallOptions {
userMessageTextPrefix?: string;
includeImages?: boolean;
toolDescription: string;
highDescription?: string;
mediumDescription?: string;
lowDescription?: string;
}
export interface SearchToolCallOptions {
userMessageTextPrefix?: string;
toolDescription: string;
}
export declare const defaultSearchToolCallOptions: SearchToolCallOptions;
export declare const defaultNotFilterToolCallOptions: NotFilterToolCallOptions;
export declare const defaultPriceToolCallOptions: PriceToolCallOptions;
export interface PriceToolCallOptions {
toolDescription: string;
minPriceDescription?: string;
maxPriceDescription?: string;
}
export interface NotFilterToolCallOptions {
userMessageTextPrefix?: string;
toolDescription: string;
}
export interface FilterSidebarSection {
key: string;
filterKey: string;
title: string;
selectionType: "single" | "multiple" | "range";
filterType: "match_any" | "match_all" | "range";
options: TagProp[];
}
export interface FilterSidebarProps {
sections: FilterSidebarSection[];
}
export interface SearchPageProps {
filterSidebarProps?: FilterSidebarProps;
display?: boolean;
}
export interface AiQuestion {
questionText: string;
promptForAI?: string;
products?: {
id: string;
groupId: string;
}[];
}
export declare function isAiQuestion(question: string | AiQuestion | DefaultSearchQuery): question is AiQuestion;
export declare function isDefaultSearchQuery(question: string | AiQuestion | DefaultSearchQuery): question is DefaultSearchQuery;
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;
ButtonEl?: JSX.ElementType;
suggestedQueries?: boolean;
allowRefreshSuggestedQueries?: boolean;
followupQuestions?: boolean;
numberOfSuggestions?: number;
defaultSearchQueries?: DefaultSearchQuery[] | string[];
defaultAiQuestions?: AiQuestion[] | DefaultSearchQuery[] | string[];
brandLogoImgSrcUrl?: string;
brandName?: string;
problemLink?: string;
brandColor?: string;
brandFontFamily?: string;
openKeyCombination?: {
key?: string;
label?: string;
ctrl?: boolean;
}[];
tags?: TagProp[];
relevanceToolCallOptions?: RelevanceToolCallOptions;
priceToolCallOptions?: PriceToolCallOptions;
searchToolCallOptions?: SearchToolCallOptions;
notFilterToolCallOptions?: NotFilterToolCallOptions;
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;
showTrieve?: boolean;
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;
overrideFetch?: boolean;
searchBar?: boolean;
defaultSearchQuery?: string;
experimentIds?: string[];
systemPrompt?: string;
imageStarterText?: 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: {
section: FilterSidebarSection;
range?: {
min?: number;
max?: number;
};
tags?: string[];
}[];
setSelectedSidebarFilters: React.Dispatch<React.SetStateAction<{
section: FilterSidebarSection;
range?: {
min?: number;
max?: number;
};
tags?: string[];
}[]>>;
minHeight: number;
resetHeight: () => void;
addHeight: (height: number) => void;
display: boolean;
abTreatment?: string;
transcribedQuery: string;
setTranscribedQuery: React.Dispatch<React.SetStateAction<string>>;
};
export { ModalProvider, useModalState };
//# sourceMappingURL=modal-context.d.ts.map