mirror of
https://github.com/mastermindzh/rickvanlieshout.com
synced 2024-12-25 14:29:36 +01:00
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { RenderBodyArgs } from "gatsby";
|
|
import React from "react";
|
|
|
|
const setColorTheme = `
|
|
(function() {
|
|
const mode = localStorage.getItem('theme');
|
|
if (mode !== null && ['light', 'dark'].includes(mode)) {
|
|
document.documentElement.dataset.theme = mode;
|
|
return;
|
|
}
|
|
|
|
const preferredColorScheme = window.matchMedia('(prefers-color-scheme: dark)');
|
|
const hasMediaQueryPreference = typeof preferredColorScheme.matches === 'boolean';
|
|
if (hasMediaQueryPreference && preferredColorScheme.matches === true) {
|
|
document.documentElement.dataset.theme = 'dark';
|
|
} else {
|
|
document.documentElement.dataset.theme = 'light'
|
|
}
|
|
})();
|
|
`;
|
|
export const onRenderBody = ({
|
|
setPreBodyComponents,
|
|
setHeadComponents,
|
|
pathname,
|
|
}: RenderBodyArgs) => {
|
|
const currentUrl = `https://www.rickvanlieshout.com${pathname}`;
|
|
|
|
setHeadComponents([
|
|
<meta data-url="currentUrl" key="og:url" property="og:url" content={currentUrl} />,
|
|
<link data-url="currentUrl" key="canonical" rel="canonical" href={currentUrl} />,
|
|
<meta data-url="currentUrl" property="test:rick" key="test:rick" content={currentUrl} />,
|
|
]);
|
|
|
|
setPreBodyComponents([
|
|
React.createElement("script", {
|
|
key: "theme",
|
|
dangerouslySetInnerHTML: {
|
|
__html: setColorTheme,
|
|
},
|
|
}),
|
|
]);
|
|
};
|