diff --git a/src/App.vue b/src/App.vue index 4e5878f2020b368bbd1fa5e23eab4c2ed89c0c64..391af9c022ca043acd26a9e611636ca202cdf03f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,71 +1,23 @@ <script setup lang="ts"> -import { RouterLink, RouterView } from "vue-router"; +import { RouterView } from "vue-router"; +import SideNavBar from "@/components/SideNavBar.vue"; +import TopNavBar from "@/components/TopNavBar.vue"; </script> <template> - <nav> - <RouterLink to="/">Home</RouterLink> - <RouterLink to="/about">About</RouterLink> - </nav> - - <RouterView /> + <el-container> + <el-header> + <TopNavBar /> + </el-header> + <el-container> + <el-aside width="300px"> + <SideNavBar /> + </el-aside> + <el-main> + <RouterView /> + </el-main> + </el-container> + </el-container> </template> -<style scoped> -header { - line-height: 1.5; - max-height: 100vh; -} - -nav { - width: 100%; - font-size: 12px; - text-align: center; - margin-top: 2rem; -} - -nav a.router-link-exact-active { - color: var(--color-text); -} - -nav a.router-link-exact-active:hover { - background-color: transparent; -} - -nav a { - display: inline-block; - padding: 0 1rem; - border-left: 1px solid var(--color-border); -} - -nav a:first-of-type { - border: 0; -} - -@media (min-width: 1024px) { - header { - display: flex; - place-items: center; - padding-right: calc(var(--section-gap) / 2); - } - - .logo { - margin: 0 2rem 0 0; - } - - header .wrapper { - display: flex; - place-items: flex-start; - flex-wrap: wrap; - } - - nav { - text-align: left; - margin-left: -1rem; - font-size: 1rem; - - padding: 1rem 0; - margin-top: 1rem; - } -} -</style> +<style scoped></style> diff --git a/src/components/SideNavBar.vue b/src/components/SideNavBar.vue new file mode 100644 index 0000000000000000000000000000000000000000..ece2e47dd886f67f1790ac38fd07f6db82b0db1e --- /dev/null +++ b/src/components/SideNavBar.vue @@ -0,0 +1,80 @@ +<template> + <el-menu default-active="2" @open="handleOpen" @close="handleClose"> + <el-sub-menu> + <template #title> + <el-icon> + <HomeFilled /> + </el-icon> + <span>Husholding</span> + </template> + <el-menu-item + v-for="household in households" + :key="household.id" + :index="`1-${household.id}`" + > + {{ household.name }} + </el-menu-item> + </el-sub-menu> + <el-menu-item index="1"> + <el-icon> + <List /> + </el-icon> + <span>Handleliste</span> + </el-menu-item> + <el-menu-item index="2"> + <el-icon> + <Management /> + </el-icon> + <span>Oversikt</span> + </el-menu-item> + <el-menu-item index="3" disabled> + <el-icon> + <DataAnalysis /> + </el-icon> + <span>Statistikk</span> + </el-menu-item> + <el-menu-item index="4" disabled> + <el-icon> + <Dish /> + </el-icon> + <span>Oppskrifter</span> + </el-menu-item> + <el-menu-item index="5"> + <el-icon> + <Setting /> + </el-icon> + <span>Rediger husholdning</span> + </el-menu-item> + </el-menu> +</template> + +<script lang="ts" setup> +import { + DataAnalysis, + Dish, + HomeFilled, + House, + List, + Location, + Management, + Setting, +} from "@element-plus/icons-vue"; + +const handleOpen = (key: string, keyPath: string[]) => { + console.log(key, keyPath); +}; +const handleClose = (key: string, keyPath: string[]) => { + console.log(key, keyPath); +}; + +const households = [ + { + id: 1, + name: "Hjemme", + }, + { + id: 2, + name: "Arbeid", + }, +]; +</script> diff --git a/src/components/TopNavBar.vue b/src/components/TopNavBar.vue new file mode 100644 index 0000000000000000000000000000000000000000..2938220fa62abe997f343784c6d089bfec43fdb5 --- /dev/null +++ b/src/components/TopNavBar.vue @@ -0,0 +1,38 @@ +<template> + <el-menu :default-active="activeIndex" mode="horizontal" :ellipsis="false" @select="handleSelect"> + <el-menu-item index="0">LOGO</el-menu-item> + <div class="flex-grow" /> + <el-menu-item index="1"> + <el-icon> + <User /> + </el-icon> + <span>Profil</span> + </el-menu-item> + <el-button type="primary" class="menu-item-button"> + <el-icon> + <TurnOff /> + </el-icon> + <span>Logg ut</span> + </el-button> + </el-menu> +</template> +<script lang="ts" setup> +import { ref } from "vue"; +import { Switch, TurnOff, User } from "@element-plus/icons-vue"; + +const activeIndex = ref("1"); +const handleSelect = (key: string, keyPath: string[]) => { + console.log(key, keyPath); +}; +</script> + +<style scoped> +.flex-grow { + flex-grow: 1; +} + +.menu-item-button { + margin: auto 1rem; + align-content: center; +} +</style>