AISR / web /src /App.vue
zhzabcd's picture
Upload 101 files
755dd12 verified
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { useAppStore } from './store';
import { useI18n } from 'vue-i18n';
import { AppSettings, ToolBar } from './components';
const { t, locale } = useI18n();
const appStore = useAppStore();
const showSettings = ref(false);
function followSystemLanguage() {
const lan = window.navigator.language;
if (!appStore.language) {
if (lan.includes('zh')) appStore.updateLanguage('zh');
else if (lan.includes('ptBR')) appStore.updateLanguage('ptBR');
else appStore.updateLanguage('en');
}
locale.value = appStore.language ?? 'en';
}
onMounted(() => {
followSystemLanguage();
document.title = t('title');
if (appStore.theme) appStore.updateTheme(appStore.theme);
else {
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.documentElement.setAttribute('theme-mode', 'dark');
appStore.updateTheme('dark');
} else {
document.documentElement.removeAttribute('theme-mode');
appStore.updateTheme('light');
}
}
});
</script>
<template>
<div class="size-full w-full dark:bg-black">
<ToolBar @show="showSettings = true" />
<AppSettings v-model="showSettings" />
<router-view />
</div>
</template>