update: game core flow pages

This commit is contained in:
Vick Scarlet
2026-08-12 02:38:37 +08:00
parent 5d50a4ea37
commit cd339c2103
34 changed files with 890 additions and 768 deletions
+21 -3
View File
@@ -1,13 +1,31 @@
import { useState, useEffect } from 'react'
import './ThemeToggle.css'
export const updateThemeColor = () => {
let metas = document.querySelectorAll('meta[name="theme-color"]')
if (!metas.length) return
const element = document.body
const end = Date.now() + 300
const update = () => {
const { backgroundColor } = getComputedStyle(element)
metas.forEach(meta => meta.setAttribute('content', backgroundColor))
if (Date.now() < end) requestAnimationFrame(update)
}
requestAnimationFrame(update)
}
export function ThemeToggle() {
const [isDark, setIsDark] = useState(
() => matchMedia('(prefers-color-scheme: dark)').matches,
)
const [isDark, setIsDark] = useState(() => {
const storedTheme = localStorage.getItem('theme')
if (storedTheme === 'dark') return true
if (storedTheme === 'light') return false
return matchMedia('(prefers-color-scheme: dark)').matches
})
useEffect(() => {
document.documentElement.dataset.theme = isDark ? 'dark' : 'light'
updateThemeColor()
localStorage.setItem('theme', isDark ? 'dark' : 'light')
}, [isDark])
return (