Skip to content

Commit 17e72a3

Browse files
committed
Use the same inine script for pagesdir and appdir
1 parent bdb9197 commit 17e72a3

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

src/next-pagesdir.tsx

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,99 @@ export function createNextDsfrIntegrationApi(
197197
/>
198198
</>
199199
)}
200+
<script
201+
dangerouslySetInnerHTML={{
202+
"__html": `
203+
204+
{
205+
206+
window.ssrWasPerformedWithIsDark = "${defaultColorScheme}" === "dark";
207+
208+
const isDark = (() => {
209+
210+
const isDarkExplicitlyProvidedAsParameter = (() => {
211+
if ("${defaultColorScheme}" === "system") {
212+
return undefined;
213+
}
214+
215+
switch ("${defaultColorScheme}") {
216+
case "dark": return true;
217+
case "light": return false;
218+
}
219+
})();
220+
221+
const isDarkFromLocalStorage = (() => {
222+
const colorSchemeReadFromLocalStorage = localStorage.getItem("scheme");
223+
224+
if (colorSchemeReadFromLocalStorage === null) {
225+
return undefined;
226+
}
227+
228+
if (colorSchemeReadFromLocalStorage === "system") {
229+
return undefined;
230+
}
231+
232+
switch (colorSchemeReadFromLocalStorage) {
233+
case "dark":
234+
return true;
235+
case "light":
236+
return false;
237+
}
238+
})();
239+
240+
const isDarkFromOsPreference = (() => {
241+
if (!window.matchMedia) {
242+
return undefined;
243+
}
244+
245+
return window.matchMedia("(prefers-color-scheme: dark)").matches;
246+
})();
247+
248+
const isDarkFallback = false;
249+
250+
return (
251+
isDarkFromLocalStorage ??
252+
isDarkExplicitlyProvidedAsParameter ??
253+
isDarkFromOsPreference ??
254+
isDarkFallback
255+
);
256+
257+
})();
258+
259+
["${data_fr_scheme}", "${data_fr_theme}"].forEach(attr => document.documentElement.setAttribute(attr, isDark ? "dark" : "light"));
260+
261+
{
262+
263+
const element = document.createElement("style");
264+
265+
element.id = "${rootColorSchemeStyleTagId}";
266+
267+
element.innerHTML = \`:root { color-scheme: \${isDark ? "dark" : "light"}; }\`;
268+
269+
document.head.appendChild(element);
270+
271+
}
272+
273+
{
274+
275+
const element = document.createElement("meta");
276+
277+
element.name = "theme-color";
278+
279+
element.content = isDark ? "${
280+
getColors(true).decisions.background.default.grey.default
281+
}" : "${
282+
getColors(false).decisions.background.default.grey.default
283+
}";
284+
285+
document.head.appendChild(element);
286+
287+
}
288+
289+
}
290+
`
291+
}}
292+
/>
200293
</Head>
201294
{isBrowser ? (
202295
<App {...(props as any)} />

0 commit comments

Comments
 (0)