| "use client"; | |
| import { ThemeProvider } from "next-themes"; | |
| import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; | |
| import { useState, type ReactNode } from "react"; | |
| import { I18nProvider } from "@/i18n/context"; | |
| import type { Dictionary } from "@/i18n/dictionaries"; | |
| import type { Locale } from "@/i18n/config"; | |
| export function ThemeRoot({ children }: { children: ReactNode }) { | |
| return ( | |
| <ThemeProvider | |
| attribute="class" | |
| defaultTheme="dark" | |
| enableSystem | |
| disableTransitionOnChange | |
| > | |
| {children} | |
| </ThemeProvider> | |
| ); | |
| } | |
| export function Providers({ | |
| dict, | |
| locale, | |
| children, | |
| }: { | |
| dict: Dictionary; | |
| locale: Locale; | |
| children: ReactNode; | |
| }) { | |
| const [qc] = useState( | |
| () => | |
| new QueryClient({ | |
| defaultOptions: { | |
| queries: { staleTime: 30_000, refetchOnWindowFocus: false }, | |
| }, | |
| }) | |
| ); | |
| return ( | |
| <I18nProvider dict={dict} locale={locale}> | |
| <QueryClientProvider client={qc}>{children}</QueryClientProvider> | |
| </I18nProvider> | |
| ); | |
| } | |