Template
non ai theme
This commit is contained in:
1 parent
9d444cc0ec
commit
61df5e3dcc
28 files changed
+3347
-448
No files matched your search
@@ -9,13 +9,33 @@ type TopbarProps = {
|
||||
|
||||
/** App theme is a data attribute on <html>; tokens.css defines both palettes. */
|
||||
function useTheme() {
|
||||
const [theme, setTheme] = useState<'dark' | 'light'>(() =>
|
||||
localStorage.getItem('ns-theme') === 'light' ? 'light' : 'dark',
|
||||
)
|
||||
const [theme, setTheme] = useState<'dark' | 'light'>(() => {
|
||||
const saved = typeof window !== 'undefined' ? localStorage.getItem('ns-theme') : null
|
||||
const initial = saved === 'light' ? 'light' : 'dark'
|
||||
if (typeof document !== 'undefined') {
|
||||
document.documentElement.dataset.theme = initial
|
||||
if (initial === 'dark') {
|
||||
document.documentElement.classList.add('dark')
|
||||
document.documentElement.classList.remove('light')
|
||||
} else {
|
||||
document.documentElement.classList.add('light')
|
||||
document.documentElement.classList.remove('dark')
|
||||
}
|
||||
}
|
||||
return initial
|
||||
})
|
||||
|
||||
const toggle = () => {
|
||||
const next = theme === 'dark' ? 'light' : 'dark'
|
||||
setTheme(next)
|
||||
document.documentElement.dataset.theme = next
|
||||
if (next === 'dark') {
|
||||
document.documentElement.classList.add('dark')
|
||||
document.documentElement.classList.remove('light')
|
||||
} else {
|
||||
document.documentElement.classList.add('light')
|
||||
document.documentElement.classList.remove('dark')
|
||||
}
|
||||
localStorage.setItem('ns-theme', next)
|
||||
}
|
||||
return { theme, toggle }
|
||||
|
||||
Reference in new issue
Block a user