Files
logos-web/apps/web/components/theme-toggle.tsx
T
2026-04-20 22:24:39 +09:00

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>
}