initial implementation

This commit is contained in:
2025-01-26 01:22:33 +00:00
parent 8b4c9ea6ee
commit 672917ac92
14 changed files with 538 additions and 212 deletions

23
app/use-ui-mode.ts Normal file
View File

@@ -0,0 +1,23 @@
import { useEffect, useState } from "react"
function useUiMode() {
const [mode, setMode] = useState<"light" | "dark">("light")
useEffect(() => {
const query = window.matchMedia("(prefers-color-scheme: dark)")
setMode(query.matches ? "dark" : "light")
function onChange(event: MediaQueryListEvent) {
setMode(event.matches ? "dark" : "light")
}
query.addEventListener("change", onChange)
return () => {
query.removeEventListener("change", onChange)
}
}, [])
return mode
}
export { useUiMode }