mirror of
https://github.com/linsa-io/linsa.git
synced 2026-04-23 16:58:38 +02:00
Move to TanStack Start from Next.js (#184)
This commit is contained in:
25
web/app/hooks/use-theme.ts
Normal file
25
web/app/hooks/use-theme.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import * as React from "react"
|
||||
|
||||
export const useTheme = () => {
|
||||
const [isDarkMode, setIsDarkMode] = React.useState(false)
|
||||
|
||||
React.useEffect(() => {
|
||||
const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
|
||||
setIsDarkMode(darkModeMediaQuery.matches)
|
||||
|
||||
const handleChange = (e: MediaQueryListEvent) => {
|
||||
const newDarkMode = e.matches
|
||||
setIsDarkMode(newDarkMode)
|
||||
}
|
||||
|
||||
darkModeMediaQuery.addEventListener("change", handleChange)
|
||||
|
||||
return () => {
|
||||
darkModeMediaQuery.removeEventListener("change", handleChange)
|
||||
}
|
||||
}, [])
|
||||
|
||||
return isDarkMode
|
||||
}
|
||||
|
||||
export default useTheme
|
||||
Reference in New Issue
Block a user