chore: add dark mode support

This commit is contained in:
syy11cn 2022-04-02 17:06:31 +08:00 committed by sunyiyang.11
parent 708afd2560
commit cb15f0d00c
5 changed files with 26 additions and 3 deletions

View File

@ -6,8 +6,16 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>React TypeScript Vite Template</title>
</head>
<body>
<body class="dark:text-white dark:bg-hex-121212">
<div id="root"></div>
<script>
(function() {
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
const setting = localStorage.getItem('color-schema') || 'auto'
if (setting === 'dark' || (prefersDark && setting !== 'light'))
document.documentElement.classList.toggle('dark', true)
})()
</script>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

View File

@ -2,10 +2,10 @@ import { useRoutes } from 'react-router-dom'
import { routes } from './routes'
const App = () => {
return <div>
return <>
<p>hello world</p>
{useRoutes(routes)}
</div>
</>
}
export default App

View File

@ -6,6 +6,7 @@ import App from './App'
import '@unocss/reset/tailwind.css'
import 'uno.css'
import '~/styles/main.css'
const root = createRoot(document.getElementById('root') as HTMLElement)

13
src/utils/dark.tsx Normal file
View File

@ -0,0 +1,13 @@
export function useDark() {
const [value, setValue] = useState<string>(window.localStorage.getItem('colorSchema') || 'auto')
const toggleDark = () => {
setValue(value === 'auto' ? 'dark' : 'auto')
window.localStorage.setItem('colorSchema', value)
}
const isDark = value === 'dark'
if (document)
useEffect(() => { document.documentElement.classList.toggle('dark', isDark) })
return [isDark, toggleDark]
}

1
src/utils/index.ts Normal file
View File

@ -0,0 +1 @@
export { useDark } from './dark'