feat: unify public and admin interfaces

This commit is contained in:
admin_gitea
2026-08-04 06:45:30 +08:00
parent 2db49418ec
commit eafa0549f7
17 changed files with 3018 additions and 6640 deletions
+36
View File
@@ -0,0 +1,36 @@
import { computed, ref } from 'vue'
const isDarkMode = ref(false)
let initialized = false
const applyTheme = (dark) => {
isDarkMode.value = Boolean(dark)
document.documentElement.classList.toggle('dark-mode', isDarkMode.value)
document.body.classList.toggle('dark-mode', isDarkMode.value)
document.documentElement.style.colorScheme = isDarkMode.value ? 'dark' : 'light'
}
export const initializeTheme = () => {
if (initialized || typeof window === 'undefined') return
const savedTheme = localStorage.getItem('darkMode')
const prefersDark = window.matchMedia?.('(prefers-color-scheme: dark)').matches
applyTheme(savedTheme === null ? prefersDark : savedTheme === 'true')
initialized = true
}
export const useTheme = () => {
initializeTheme()
const toggleTheme = () => {
applyTheme(!isDarkMode.value)
localStorage.setItem('darkMode', String(isDarkMode.value))
}
return {
isDarkMode,
themeIcon: computed(() => (isDarkMode.value ? 'fas fa-sun' : 'fas fa-moon')),
themeLabel: computed(() => (isDarkMode.value ? '切换到浅色模式' : '切换到深色模式')),
toggleTheme,
}
}