64 lines
2.0 KiB
Vue
64 lines
2.0 KiB
Vue
<template>
|
|
<div class="app">
|
|
<div class="page">
|
|
<div class="sidebar">
|
|
<div>
|
|
<NuxtLink class="link left-center" :class="{ active: useRoute().fullPath === '/' }" to="/"><UiIcon>house</UiIcon>Home</NuxtLink>
|
|
<NuxtLink class="link left-center" :class="{ active: useRoute().fullPath.startsWith('/artifacts') }" to="/artifacts"><UiIcon>box</UiIcon>Artifacts</NuxtLink>
|
|
<NuxtLink class="link left-center" :class="{ active: useRoute().fullPath.startsWith('/groups') }" to="/groups"><UiIcon>stacks</UiIcon>Groups</NuxtLink>
|
|
</div>
|
|
<NuxtLink class="link left-center" :class="{ active: useRoute().fullPath.startsWith('/settings') }" to="/settings"><UiIcon>settings</UiIcon>Settings</NuxtLink>
|
|
<a class="link left-center" :href="useRuntimeConfig().public.logoutUrl"><UiIcon>logout</UiIcon> Log Out</a>
|
|
</div>
|
|
<div class="page-content">
|
|
<NuxtPage></NuxtPage>
|
|
</div>
|
|
</div>
|
|
<PopupTemplate v-if="popup" :heading="popup.config.heading" :size="popup.config.size">
|
|
<component :is="popup.component"></component>
|
|
</PopupTemplate>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import {usePopup} from "~/components/ui/popup/Popup";
|
|
import PopupTemplate from "~/components/ui/popup/PopupTemplate.vue";
|
|
import {useAccountStore} from "~/auth/useAccountStore";
|
|
|
|
const popup = computed(() => usePopup().get());
|
|
|
|
onMounted(() => {
|
|
useAccountStore().init();
|
|
})
|
|
</script>
|
|
|
|
<style>
|
|
.app {
|
|
height: 100vh;
|
|
width: 100vw;
|
|
}
|
|
.page {
|
|
display: grid;
|
|
grid-template-columns: auto 1fr;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
}
|
|
.page-content {
|
|
padding: 2rem;
|
|
}
|
|
.sidebar {
|
|
padding: 1rem;
|
|
background-color: var(--tile-color);
|
|
border-right: 1px solid #cddaff;
|
|
display: grid;
|
|
grid-template-rows: 1fr auto;
|
|
}
|
|
.link {
|
|
padding: 0.5rem 1rem;
|
|
border-radius: 0.25rem;
|
|
}
|
|
.link.active, .link.active * {
|
|
background-color: #3c74ff;
|
|
color: white;
|
|
}
|
|
</style> |