@vertisanpro/flowbite-react
Version:
Non-Official React components built for Flowbite and Tailwind CSS
22 lines (20 loc) • 859 B
JavaScript
import React from 'react';
export const ThemeModeScript = ({ mode, ...others }) => {
return (React.createElement("script", { ...others, "data-flowbite-theme-mode-script": true, dangerouslySetInnerHTML: {
__html: getScript({ mode, defaultMode: 'light', localStorageKey: 'flowbite-theme-mode' }),
} }));
};
function getScript({ mode, defaultMode, localStorageKey, }) {
return `
try {
const mode = window.localStorage.getItem('${localStorageKey}') ?? '${mode}' ?? '${defaultMode}';
const computedMode =
mode === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : mode;
if (computedMode === 'dark') {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
} catch (e) {}
`;
}