Remove COLOR_SCHEME affection in useTheme.ts

This commit is contained in:
2026-01-15 22:45:15 +05:00
parent c0524494e9
commit b72fd8a12f
2 changed files with 2 additions and 21 deletions

View File

@ -1,6 +1,6 @@
<template> <template>
<Select v-model="selectedPreset" @update:model-value="handleThemeChange"> <Select v-model="selectedPreset" @update:model-value="handleThemeChange">
<SelectTrigger class="w-[180px]"> <SelectTrigger class="w-48">
<SelectValue placeholder="Select theme..." /> <SelectValue placeholder="Select theme..." />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>

View File

@ -10,23 +10,15 @@ export type ThemePreset =
| 'sunset' | 'supabase' | 't3chat' | 'tangerine' | 'twitter' | 'sunset' | 'supabase' | 't3chat' | 'tangerine' | 'twitter'
| 'vercel' | 'vintage' | 'violet' | 'vercel' | 'vintage' | 'violet'
interface ThemeState {
colorScheme: ColorScheme
themePreset: ThemePreset
}
const DEFAULT_COLOR_SCHEME: ColorScheme = 'system'
const DEFAULT_THEME_PRESET: ThemePreset = 'default' const DEFAULT_THEME_PRESET: ThemePreset = 'default'
const COLOR_SCHEME_KEY = 'vite-ui-color-scheme' const COLOR_SCHEME_KEY = 'vite-ui-color-scheme'
const THEME_PRESET_KEY = 'vite-ui-theme-preset' const THEME_PRESET_KEY = 'vite-ui-theme-preset'
export const useTheme = () => { export const useTheme = () => {
const colorScheme = ref<ColorScheme>(DEFAULT_COLOR_SCHEME)
const themePreset = ref<ThemePreset>(DEFAULT_THEME_PRESET) const themePreset = ref<ThemePreset>(DEFAULT_THEME_PRESET)
const initFromStorage = () => { const initFromStorage = () => {
if (import.meta.client) { if (import.meta.client) {
colorScheme.value = (localStorage.getItem(COLOR_SCHEME_KEY) as ColorScheme) || DEFAULT_COLOR_SCHEME
themePreset.value = (localStorage.getItem(THEME_PRESET_KEY) as ThemePreset) || DEFAULT_THEME_PRESET themePreset.value = (localStorage.getItem(THEME_PRESET_KEY) as ThemePreset) || DEFAULT_THEME_PRESET
applyTheme() applyTheme()
} }
@ -38,13 +30,6 @@ export const useTheme = () => {
const root = document.documentElement const root = document.documentElement
root.classList.remove('light', 'dark') root.classList.remove('light', 'dark')
let effectiveScheme = colorScheme.value
if (effectiveScheme === 'system') {
effectiveScheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
}
root.classList.add(effectiveScheme)
const link = document.createElement('link') const link = document.createElement('link')
link.rel = 'stylesheet' link.rel = 'stylesheet'
link.href = `/themes/${themePreset.value}.css` link.href = `/themes/${themePreset.value}.css`
@ -72,17 +57,14 @@ export const useTheme = () => {
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)') const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
const handleChange = () => { const handleChange = () => {
if (colorScheme.value === 'system') {
applyTheme() applyTheme()
} }
}
mediaQuery.addEventListener('change', handleChange) mediaQuery.addEventListener('change', handleChange)
return () => mediaQuery.removeEventListener('change', handleChange) return () => mediaQuery.removeEventListener('change', handleChange)
} }
const setColorScheme = (scheme: ColorScheme) => { const setColorScheme = (scheme: ColorScheme) => {
colorScheme.value = scheme
if (import.meta.client) { if (import.meta.client) {
localStorage.setItem(COLOR_SCHEME_KEY, scheme) localStorage.setItem(COLOR_SCHEME_KEY, scheme)
applyTheme() applyTheme()
@ -103,7 +85,6 @@ export const useTheme = () => {
}) })
return { return {
colorScheme: readonly(colorScheme),
themePreset: readonly(themePreset), themePreset: readonly(themePreset),
setColorScheme, setColorScheme,
setThemePreset setThemePreset