UNPKG

1.04 kBTypeScriptView Raw
1"use client";
2
3import React, { useMemo, useEffect } from "react";
4import type { ReactNode } from "react";
5import { isBrowser } from "../tools/isBrowser";
6import { SsrIsDarkProvider } from "../useIsDark/server";
7import { dsfrEffect } from "./zz_internal/start";
8import { getDefaultColorSchemeClientSide } from "./zz_internal/defaultColorScheme";
9import { setUseLang } from "../i18n";
10
11export type DsfrProviderProps = {
12 children: ReactNode;
13 lang?: string;
14};
15
16export function DsfrProvider(props: DsfrProviderProps) {
17 const { children, lang } = props;
18
19 useEffect(() => {
20 dsfrEffect();
21 }, []);
22
23 useMemo(() => {
24 if (lang === undefined) {
25 return;
26 }
27
28 setUseLang({ "useLang": () => lang });
29 }, [lang]);
30
31 if (isBrowser) {
32 return <>{children}</>;
33 }
34
35 const defaultColorScheme = getDefaultColorSchemeClientSide();
36
37 const isDark = defaultColorScheme === "dark" ? true : false;
38
39 return <SsrIsDarkProvider value={isDark}>{children}</SsrIsDarkProvider>;
40}