add router for navbar and default routes for the non existing pages

This commit is contained in:
2023-11-14 11:10:14 +01:00
parent fee9acfd6d
commit 1761a03afb
2 changed files with 90 additions and 45 deletions

View File

@ -1,61 +1,64 @@
<template> <template>
<aside :class="['navbar', darkMode ? 'navbar-darkmode' : 'navbar-lightmode', isExpanded ? 'is-expanded' : 'is-not-expanded']" > <aside
:class="['navbar', darkMode ? 'navbar-darkmode' : 'navbar-lightmode', isExpanded ? 'is-expanded' : 'is-not-expanded']">
<div class="toggle"> <div class="toggle">
<div v-if="isExpanded" :class="['icon', darkMode ? 'back-darkmode' : 'back-lightmode']" id="back-icon"> <div v-if="isExpanded" :class="['icon', darkMode ? 'back-darkmode' : 'back-lightmode']" id="back-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/Back-Icon.svg" />
loading="lazy" src="../icons/Back-Icon.svg" />
</div> </div>
<div :class="['icon', darkMode ? 'indicator-darkmode' : 'indicator-lightmode' ]" id="indicator-icon" @click="toggleSidebar"> <div :class="['icon', darkMode ? 'indicator-darkmode' : 'indicator-lightmode']" id="indicator-icon"
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" @click="toggleSidebar">
loading="lazy" src="../icons/navbar-icons/Nav-Indicator-Icon-Opened.svg" /> <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/navbar-icons/Nav-Indicator-Icon-Opened.svg" />
</div> </div>
</div> </div>
<div class="menus"> <div class="menus">
<nav id="home-menu" :class="[darkMode ? 'menu-darkmode' : 'menu-lightmode']"> <nav id="home-menu" :class="[darkMode ? 'menu-darkmode' : 'menu-lightmode']">
<button :class="[ darkMode ? 'button-darkmode' : 'button-lightmode' ]" id="home-button"> <router-link to="/home" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']"
id="home-button">
<div class="icon" id="home-icon"> <div class="icon" id="home-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
loading="lazy" src="../icons/navbar-icons/Home-Icon.svg" /> src="../icons/navbar-icons/Home-Icon.svg" />
</div> </div>
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode' ]">Home</pre> <span v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Home</span>
</button> </router-link>
</nav> </nav>
<nav id="site-menu"> <nav id="site-menu">
<button :class="[ darkMode ? 'button-darkmode' : 'button-lightmode' ]" id="checklists-button"> <router-link to="/home" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="checklists-button">
<div class="icon" id="checklists-icon"> <div class="icon" id="checklists-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
loading="lazy" src="../icons/navbar-icons/Checklists-Icon.svg" /> src="../icons/navbar-icons/Checklists-Icon.svg" />
</div> </div>
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode' ]">Checklists</pre> <span v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Checklists</span>
</button> </router-link>
<button :class="[ darkMode ? 'button-darkmode' : 'button-lightmode' ]" id="assets-button"> <router-link to="/home" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="assets-button">
<div class="icon" id="assets-icon"> <div class="icon" id="assets-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
loading="lazy" src="../icons/navbar-icons/Assets-Icon.svg" /> src="../icons/navbar-icons/Assets-Icon.svg" />
</div> </div>
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode' ]">Config Items</pre> <span v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Config Items</span>
</button> </router-link>
<button :class="[ darkMode ? 'button-darkmode' : 'button-lightmode' ]" id="solutions-button"> <router-link to="/home" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="solutions-button">
<div class="icon" id="solutions-icon"> <div class="icon" id="solutions-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
loading="lazy" src="../icons/navbar-icons/Solutions-Icon.svg" /> src="../icons/navbar-icons/Solutions-Icon.svg" />
</div> </div>
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode' ]">Solutions</pre> <span v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Solutions</span>
</button> </router-link>
<button :class="[ darkMode ? 'button-darkmode' : 'button-lightmode' ]" id="accounting-button"> <router-link to="/clients" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="accounting-button">
<div class="icon" id="accounting-icon"> <div class="icon" id="accounting-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
loading="lazy" src="../icons/navbar-icons/Accounting-Icon.svg" /> src="../icons/navbar-icons/Accounting-Icon.svg" />
</div> </div>
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode' ]">Accounting</pre> <span v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Accounting</span>
</button> </router-link>
<button :class="[ darkMode ? 'button-darkmode' : 'button-lightmode' ]" id="clients-button"> <router-link to="/clients" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']"
id="clients-button">
<div class="icon" id="clients-icon"> <div class="icon" id="clients-icon">
<img :class="[ darkMode ? 'img-darkmode' : 'img-lightmode' ]" <img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
loading="lazy" src="../icons/navbar-icons/Clients-Icon.svg" /> src="../icons/navbar-icons/Clients-Icon.svg" />
</div> </div>
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode' ]">Clients</pre> <span v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Clients</span>
</button> </router-link>
</nav> </nav>
</div> </div>
</aside> </aside>
@ -64,7 +67,6 @@
<script> <script>
export default { export default {
name: "Navigationbar", name: "Navigationbar",
data() { data() {
@ -97,6 +99,7 @@ aside {
width: 3.125rem; width: 3.125rem;
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
} }
aside.is-expanded { aside.is-expanded {
width: 12.5rem; width: 12.5rem;
} }
@ -105,6 +108,7 @@ aside.is-expanded {
opacity: 1; opacity: 1;
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
} }
.is-not-expanded #indicator-icon { .is-not-expanded #indicator-icon {
transform: rotate(180deg); transform: rotate(180deg);
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
@ -122,10 +126,12 @@ aside.is-expanded {
padding: 0.9375rem; padding: 0.9375rem;
margin: 0; margin: 0;
} }
.navbar-darkmode { .navbar-darkmode {
box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25); box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25);
background-color: #2C2C2C; background-color: #2C2C2C;
} }
.navbar-lightmode { .navbar-lightmode {
box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25); box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25);
background-color: #FFFFFF; background-color: #FFFFFF;
@ -149,6 +155,7 @@ aside.is-expanded {
padding: 1.25rem 0; padding: 1.25rem 0;
gap: 1.875rem; gap: 1.875rem;
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
align-items: center;
} }
@ -158,17 +165,21 @@ nav {
justify-content: center; justify-content: center;
padding: 0.9375rem 0; padding: 0.9375rem 0;
gap: 1.875rem; gap: 1.875rem;
width: 92%;
} }
.menu-darkmode { .menu-darkmode {
border-bottom: 0.0625rem solid #8E8E8E; border-bottom: 0.0625rem solid #8E8E8E;
} }
.menu-lightmode { .menu-lightmode {
border-bottom: 0.0625rem solid #BABABA; border-bottom: 0.0625rem solid #BABABA;
} }
button { button,
a {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-self: stretch; align-self: stretch;
@ -179,13 +190,18 @@ button {
gap: 0.3125rem; gap: 0.3125rem;
border: none; border: none;
transition: 0.5s ease-in-out; transition: 0.5s ease-in-out;
text-decoration: none;
width: 100%;
} }
.button-darkmode { .button-darkmode {
background-color: #2C2C2C; background-color: #2C2C2C;
} }
.button-lightmode { .button-lightmode {
background-color: #FFFFFF; background-color: #FFFFFF;
} }
.button-darkmode:hover, .button-darkmode:hover,
.indicator-darkmode:hover, .indicator-darkmode:hover,
.back-darkmode:hover { .back-darkmode:hover {
@ -198,7 +214,6 @@ button {
background-color: #ACACAC; background-color: #ACACAC;
} }
.icon { .icon {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -208,7 +223,9 @@ button {
justify-content: center; justify-content: center;
transition: 0.2s ease-in-out; transition: 0.2s ease-in-out;
} }
#back-icon, #indicator-icon {
#back-icon,
#indicator-icon {
width: 2.5rem; width: 2.5rem;
height: 2.5rem; height: 2.5rem;
border-radius: 0.3125rem; border-radius: 0.3125rem;
@ -225,6 +242,7 @@ img {
overflow: hidden; overflow: hidden;
transition: 0.2s ease-out; transition: 0.2s ease-out;
} }
.img-darkmode { .img-darkmode {
filter: invert(100%); filter: invert(100%);
} }
@ -238,9 +256,11 @@ img {
opacity: 0; opacity: 0;
transition: opacity 0.5s ease-out; transition: opacity 0.5s ease-out;
} }
.label-darkmode { .label-darkmode {
color: #FFFFFF; color: #FFFFFF;
} }
.label-lightmode { .label-lightmode {
color: #000000; color: #000000;
} }

25
routerFrontend/index.js Normal file
View File

@ -0,0 +1,25 @@
import { createRouter, createWebHistory } from 'vue-router';
import HomePage from '../pages/home.vue';
import ClientsPage from '../pages/clients.vue';
import LoginPage from '../pages/login.vue';
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/',
component: LoginPage
},
{
path: '/home',
component: HomePage
},
{
path: '/clients',
component: ClientsPage
},
]
})
export default router