mirror of
https://github.com/vercel/ai-elements.git
synced 2026-09-14 19:48:26 +08:00
30cbcfec97
* Migrate to oxlint / oxfmt * Initial fixes * Misc fixes * Temporary fixes * Update Ultracite * Update .oxlintrc.json * Update .oxlintrc.json * Start running manual fixes * Update .oxlintrc.json * AI Fixes Part 2 * AI Fixes Part 3 * AI Fixes Part 4 * AI Fixes Part 5 * AI Fixes Part 6 * AI Fixes Part 7 * AI Fixes Part 8 * AI Fixes Part 9 * AI Fixes Part 10 * AI Fixes Part 11 * AI Fixes Part 12 * Fix tests * Lint / test fixes * Update chat.tsx * Fix AI SDK React version * Misc fixes * Build fixes
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
"use client";
|
|
|
|
import type { SharedProps } from "fumadocs-ui/contexts/search";
|
|
import type { ComponentProps } from "react";
|
|
|
|
import { Toaster } from "@repo/shadcn-ui/components/ui/sonner";
|
|
import { TooltipProvider } from "@repo/shadcn-ui/components/ui/tooltip";
|
|
import { useIsMobile } from "@repo/shadcn-ui/hooks/use-mobile";
|
|
import { cn } from "@repo/shadcn-ui/lib/utils";
|
|
import { Analytics } from "@vercel/analytics/next";
|
|
import { SpeedInsights } from "@vercel/speed-insights/next";
|
|
import { RootProvider } from "fumadocs-ui/provider/next";
|
|
import { useCallback } from "react";
|
|
|
|
import { useChatContext } from "@/hooks/geistdocs/use-chat";
|
|
import { i18n, i18nProvider } from "@/lib/geistdocs/i18n";
|
|
|
|
import { SearchDialog } from "./search";
|
|
|
|
type GeistdocsProviderProps = ComponentProps<typeof RootProvider> & {
|
|
basePath: string | undefined;
|
|
className?: string;
|
|
lang?: string;
|
|
};
|
|
|
|
export const GeistdocsProvider = ({
|
|
basePath,
|
|
search,
|
|
className,
|
|
lang = i18n.defaultLanguage,
|
|
...props
|
|
}: GeistdocsProviderProps) => {
|
|
const { isOpen } = useChatContext();
|
|
const isMobile = useIsMobile();
|
|
const isSidebarVisible = isOpen && !isMobile;
|
|
|
|
const SearchDialogComponent = useCallback(
|
|
(sdProps: SharedProps) => <SearchDialog basePath={basePath} {...sdProps} />,
|
|
[basePath]
|
|
);
|
|
|
|
return (
|
|
<div
|
|
className={cn(
|
|
"transition-all",
|
|
isSidebarVisible ? "pr-96!" : null,
|
|
className
|
|
)}
|
|
>
|
|
<TooltipProvider>
|
|
<RootProvider
|
|
i18n={i18nProvider(lang)}
|
|
search={{
|
|
SearchDialog: SearchDialogComponent,
|
|
...search,
|
|
}}
|
|
{...props}
|
|
/>
|
|
</TooltipProvider>
|
|
<Analytics />
|
|
<Toaster />
|
|
<SpeedInsights />
|
|
</div>
|
|
);
|
|
};
|