49 lines
940 B
Vue
49 lines
940 B
Vue
<template>
|
|
<v-app>
|
|
<nuxt-loading-indicator color="white" />
|
|
<nuxt-layout>
|
|
<nuxt-page />
|
|
</nuxt-layout>
|
|
</v-app>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { useTheme } from "vuetify"
|
|
import "@unocss/reset/tailwind.css"
|
|
|
|
const theme = useTheme()
|
|
const auth = useUserinfo()
|
|
|
|
const { locale } = useI18n()
|
|
|
|
watch(locale, (value) => {
|
|
useHead({
|
|
htmlAttrs: {
|
|
lang: value,
|
|
},
|
|
})
|
|
}, { deep: true, immediate: true })
|
|
|
|
onMounted(() => {
|
|
theme.global.name.value = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"
|
|
|
|
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", event => {
|
|
theme.global.name.value = event.matches ? "dark" : "light"
|
|
})
|
|
|
|
auth.readProfiles()
|
|
})
|
|
</script>
|
|
|
|
<style>
|
|
.page-enter-active,
|
|
.page-leave-active {
|
|
transition: all 0.25s ease-in-out;
|
|
}
|
|
.page-enter-from,
|
|
.page-leave-to {
|
|
opacity: 0;
|
|
filter: blur(1rem);
|
|
}
|
|
</style>
|