mirror of
https://github.com/logos-co/logos-web.git
synced 2026-08-27 12:11:14 +00:00
29 lines
824 B
TypeScript
29 lines
824 B
TypeScript
'use client'
|
|
|
|
import { useEffect, useState } from 'react'
|
|
|
|
export default function ThemeToggle() {
|
|
const [theme, setTheme] = useState<'light' | 'dark'>('light')
|
|
|
|
useEffect(() => {
|
|
const savedTheme = localStorage.getItem('theme') as 'light' | 'dark'
|
|
const systemTheme = window.matchMedia('(prefers-color-scheme: dark)')
|
|
.matches
|
|
? 'dark'
|
|
: 'light'
|
|
const initialTheme = savedTheme || systemTheme
|
|
|
|
setTheme(initialTheme)
|
|
document.documentElement.setAttribute('data-theme', initialTheme)
|
|
}, [])
|
|
|
|
const toggleTheme = () => {
|
|
const newTheme = theme === 'dark' ? 'light' : 'dark'
|
|
setTheme(newTheme)
|
|
document.documentElement.setAttribute('data-theme', newTheme)
|
|
localStorage.setItem('theme', newTheme)
|
|
}
|
|
|
|
return <button onClick={toggleTheme}>Theme Toggle</button>
|
|
}
|