Skip to content
Snippets Groups Projects
App.vue 1.38 KiB
Newer Older
  <template v-if="authStore.currentUser">
    <div :key="locale" class="app tw-flex tw-flex-col md:tw-grid">
      <ABreadcrumbs
        v-if="navStore.breadcrumbs.length > 0"
        class="tw-px-6 tw-border-solid tw-border-gray-200 tw-border-0 tw-border-b"
        :breadcrumbs="navStore.breadcrumbs"
        style="grid-area: breadcrumbs"
      />
      <main class="tw-h-full tw-p-6" style="grid-area: main">
        <RouterView v-if="authStore.steeringUser" class="tw-h-full" />
      </main>
      <ANavSidebar style="grid-area: nav" />
      <div id="sidebar-right" style="grid-area: slot"></div>
    </div>
    <AppFooter />
  </template>

  <LoginScreen v-else />
<script lang="ts" setup>
import AppFooter from './components/Footer.vue'
import { useI18n } from '@/i18n'
import { useAuthStore } from '@/stores/auth'
import ANavSidebar from '@/components/nav/ANavSidebar.vue'
import { useNavStore } from '@/stores/nav'
import ABreadcrumbs from '@/components/nav/ABreadcrumbs.vue'
import LoginScreen from '@/Pages/LoginScreen.vue'
const { locale } = useI18n()
const authStore = useAuthStore()
const navStore = useNavStore()

<style scoped>
.app {
  min-height: calc(100dvh - 40px);
  grid-template-areas: 'nav breadcrumbs breadcrumbs' 'nav main slot';
  grid-template-columns: 360px minmax(320px, 1200px) auto;
  grid-template-rows: min-content minmax(0, 1fr);