next-static-search
Version:
A powerful react search based on pagefind with beautiful UI
67 lines (63 loc) • 1.69 kB
TypeScript
import React from 'react';
declare global {
interface Window {
pagefind: {
search: (query: string, options?: IPagefindSearchOptions) => Promise<IPagefindResults>;
preload: () => Promise<void>;
};
}
}
interface IPagefindSearchOptions {
filters?: Record<string, string[]>;
sort?: string;
excerptLength?: number;
verbose?: boolean;
}
interface IPagefindResultDataWeightedLocations {
balanced_score: number;
location: number;
weight: number;
}
interface IPagefindResultDataPatch {
excerpt: string;
locations: Array<number>;
url: string;
weighted_locations: Array<IPagefindResultDataWeightedLocations>;
}
interface IPagefindResultData extends IPagefindResultDataPatch {
anchors: Array<any>;
content: string;
filters: Record<any, any>;
meta: {
title: string;
};
raw_content: string;
raw_url: string;
word_count: number;
sub_results: Array<IPagefindResultDataPatch & {
title: string;
}>;
}
interface IPagefindResult {
id: string;
score: number;
words: Array<any>;
data: () => Promise<IPagefindResultData>;
}
interface IPagefindResults {
results: Array<IPagefindResult>;
query: string;
}
interface INextStaticSearch {
placeholder?: string;
searchClassName?: string;
macSymbol?: React.JSX.Element | string;
windowsSymbol?: React.JSX.Element | string;
searchBoxTitle?: string;
errorMessage?: string;
notFoundMessage?: string;
searchBoxType: "modal" | "inline";
pagesToIgnore?: Array<string>;
}
declare const NextStaticSearch: React.FC<Partial<INextStaticSearch>>;
export { NextStaticSearch };