non ai theme

This commit is contained in:
mats committed 2026-09-12 18:41:42 +02:00
1 parent 9d444cc0ec
commit 61df5e3dcc
28 files changed
+3347 -448

No files matched your search

+23 -3
View File
@@ -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 }