import dynamic from "next/dynamic.js"; import { SearchProvider as SearchProviderType, SearchProviderConfig, } from "../types"; const AlgoliaSearchProvider = dynamic( async () => { return await import("./Algolia").then((mod) => mod.AlgoliaSearchProvider); }, { ssr: false } ); const AlgoliaSearchContext = dynamic( async () => { return await import("./Algolia").then( (mod) => mod.AlgoliaSearchContext.Consumer ); }, { ssr: false } ); const KBarProvider = dynamic( async () => { return await import("./KBar").then((mod) => mod.KBarSearchProvider); }, { ssr: false } ); const KBarSearchContext = dynamic( async () => { return await import("kbar").then((mod) => mod.KBarContext.Consumer); }, { ssr: false } ); export const SearchProvider = ({ searchConfig, children, }: { searchConfig: SearchProviderConfig; children: React.ReactNode; }) => { switch (searchConfig?.provider) { case "algolia": return ( {children} ); case "kbar": return ( {children} ); default: return <>{children}; } }; export const SearchContext = (provider: SearchProviderType) => { switch (provider) { case "algolia": return AlgoliaSearchContext; case "kbar": return KBarSearchContext; default: return undefined; } };