mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
import { Head, Html, Main, NextScript } from 'next/document'
|
|
|
|
const modeScript = `
|
|
let darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
|
|
|
|
updateMode()
|
|
darkModeMediaQuery.addEventListener('change', updateModeWithoutTransitions)
|
|
window.addEventListener('storage', updateModeWithoutTransitions)
|
|
|
|
function updateMode() {
|
|
let isSystemDarkMode = darkModeMediaQuery.matches
|
|
let isDarkMode = window.localStorage.isDarkMode === 'true' || (!('isDarkMode' in window.localStorage) && isSystemDarkMode)
|
|
|
|
if (isDarkMode) {
|
|
document.documentElement.classList.add('dark')
|
|
} else {
|
|
document.documentElement.classList.remove('dark')
|
|
}
|
|
|
|
if (isDarkMode === isSystemDarkMode) {
|
|
delete window.localStorage.isDarkMode
|
|
}
|
|
}
|
|
|
|
function disableTransitionsTemporarily() {
|
|
document.documentElement.classList.add('[&_*]:!transition-none')
|
|
window.setTimeout(() => {
|
|
document.documentElement.classList.remove('[&_*]:!transition-none')
|
|
}, 0)
|
|
}
|
|
|
|
function updateModeWithoutTransitions() {
|
|
disableTransitionsTemporarily()
|
|
updateMode()
|
|
}
|
|
`
|
|
|
|
export default function Document() {
|
|
return (
|
|
<Html lang="en">
|
|
<Head>
|
|
<script dangerouslySetInnerHTML={{ __html: modeScript }} />
|
|
</Head>
|
|
<body className="bg-white antialiased dark:bg-zinc-900">
|
|
<Main />
|
|
<NextScript />
|
|
</body>
|
|
</Html>
|
|
)
|
|
}
|