diff --git a/src/App.vue b/src/App.vue index b02be06fb2a4e33682c075c3ce2ac2c036747a73..ee6510a265ad8ef54e2ec8730091082d9dd9d676 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,9 +2,15 @@ import { RouterView } from 'vue-router' </script> -<template class="app"> - <RouterView /> +<template> + <div class="app"> + <RouterView /> + </div> </template> <style scoped> +.app{ + height: 100vh; + width: 100vw; +} </style> diff --git a/src/assets/base.css b/src/assets/base.css index ef9aa2129e6fcceddbc2bdcfc9dcddf877b616b9..042ed2f0993ac8087c1869cbca9b13185f6fa6ab 100644 --- a/src/assets/base.css +++ b/src/assets/base.css @@ -48,6 +48,7 @@ --color-header: var(--vt-c-kellyGreen); --color-heading: var(--vt-c-kellyGreen); + --color-headerText: var(--vt-c-white); --color-hamburgerMenu: var(--vt-c-white); --color-emptyProgress: var(--vt-c-white); @@ -64,6 +65,8 @@ --color-text: var(--vt-c-text-light-1); + --color-shadow: rgba(0, 0, 0, 0.2); + --section-gap: 160px; } @@ -79,6 +82,8 @@ --color-border-hover: var(--vt-c-borderGreyDark); --color-text: var(--vt-c-text-dark-1); + + --color-shadow: rgba(255, 255, 255, 0.2); } } diff --git a/src/assets/pig.png b/src/assets/pig.png new file mode 100644 index 0000000000000000000000000000000000000000..dca0784955d88541148cb5ae5359b8b50693799d Binary files /dev/null and b/src/assets/pig.png differ diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue deleted file mode 100644 index 49d8f7354f7d0f22c6abf7d8be239f47ddc34c09..0000000000000000000000000000000000000000 --- a/src/components/TheWelcome.vue +++ /dev/null @@ -1,88 +0,0 @@ -<script setup lang="ts"> -import WelcomeItem from './WelcomeItem.vue' -import DocumentationIcon from './icons/IconDocumentation.vue' -import ToolingIcon from './icons/IconTooling.vue' -import EcosystemIcon from './icons/IconEcosystem.vue' -import CommunityIcon from './icons/IconCommunity.vue' -import SupportIcon from './icons/IconSupport.vue' -</script> - -<template> - <WelcomeItem> - <template #icon> - <DocumentationIcon /> - </template> - <template #heading>Documentation</template> - - Vue’s - <a href="https://vuejs.org/" target="_blank" rel="noopener">official documentation</a> - provides you with all information you need to get started. - </WelcomeItem> - - <WelcomeItem> - <template #icon> - <ToolingIcon /> - </template> - <template #heading>Tooling</template> - - This project is served and bundled with - <a href="https://vitejs.dev/guide/features.html" target="_blank" rel="noopener">Vite</a>. The - recommended IDE setup is - <a href="https://code.visualstudio.com/" target="_blank" rel="noopener">VSCode</a> + - <a href="https://github.com/johnsoncodehk/volar" target="_blank" rel="noopener">Volar</a>. If - you need to test your components and web pages, check out - <a href="https://www.cypress.io/" target="_blank" rel="noopener">Cypress</a> and - <a href="https://on.cypress.io/component" target="_blank" rel="noopener" - >Cypress Component Testing</a - >. - - <br /> - - More instructions are available in <code>README.md</code>. - </WelcomeItem> - - <WelcomeItem> - <template #icon> - <EcosystemIcon /> - </template> - <template #heading>Ecosystem</template> - - Get official tools and libraries for your project: - <a href="https://pinia.vuejs.org/" target="_blank" rel="noopener">Pinia</a>, - <a href="https://router.vuejs.org/" target="_blank" rel="noopener">Vue Router</a>, - <a href="https://test-utils.vuejs.org/" target="_blank" rel="noopener">Vue Test Utils</a>, and - <a href="https://github.com/vuejs/devtools" target="_blank" rel="noopener">Vue Dev Tools</a>. If - you need more resources, we suggest paying - <a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">Awesome Vue</a> - a visit. - </WelcomeItem> - - <WelcomeItem> - <template #icon> - <CommunityIcon /> - </template> - <template #heading>Community</template> - - Got stuck? Ask your question on - <a href="https://chat.vuejs.org" target="_blank" rel="noopener">Vue Land</a>, our official - Discord server, or - <a href="https://stackoverflow.com/questions/tagged/vue.js" target="_blank" rel="noopener" - >StackOverflow</a - >. You should also subscribe to - <a href="https://news.vuejs.org" target="_blank" rel="noopener">our mailing list</a> and follow - the official - <a href="https://twitter.com/vuejs" target="_blank" rel="noopener">@vuejs</a> - twitter account for latest news in the Vue world. - </WelcomeItem> - - <WelcomeItem> - <template #icon> - <SupportIcon /> - </template> - <template #heading>Support Vue</template> - - As an independent project, Vue relies on community backing for its sustainability. You can help - us by - <a href="https://vuejs.org/sponsor/" target="_blank" rel="noopener">becoming a sponsor</a>. - </WelcomeItem> -</template> diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue deleted file mode 100644 index 6d7086aea08fbb770b2f570dbeb4f8fcd86cb291..0000000000000000000000000000000000000000 --- a/src/components/WelcomeItem.vue +++ /dev/null @@ -1,87 +0,0 @@ -<template> - <div class="item"> - <i> - <slot name="icon"></slot> - </i> - <div class="details"> - <h3> - <slot name="heading"></slot> - </h3> - <slot></slot> - </div> - </div> -</template> - -<style scoped> -.item { - margin-top: 2rem; - display: flex; - position: relative; -} - -.details { - flex: 1; - margin-left: 1rem; -} - -i { - display: flex; - place-items: center; - place-content: center; - width: 32px; - height: 32px; - - color: var(--color-text); -} - -h3 { - font-size: 1.2rem; - font-weight: 500; - margin-bottom: 0.4rem; - color: var(--color-heading); -} - -@media (min-width: 1024px) { - .item { - margin-top: 0; - padding: 0.4rem 0 1rem calc(var(--section-gap) / 2); - } - - i { - top: calc(50% - 25px); - left: -26px; - position: absolute; - border: 1px solid var(--color-border); - background: var(--color-background); - border-radius: 8px; - width: 50px; - height: 50px; - } - - .item:before { - content: ' '; - border-left: 1px solid var(--color-border); - position: absolute; - left: 0; - bottom: calc(50% + 25px); - height: calc(50% - 25px); - } - - .item:after { - content: ' '; - border-left: 1px solid var(--color-border); - position: absolute; - left: 0; - top: calc(50% + 25px); - height: calc(50% - 25px); - } - - .item:first-of-type:before { - display: none; - } - - .item:last-of-type:after { - display: none; - } -} -</style> diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue deleted file mode 100644 index 2dc8b055253af30fb797037e2fe260505f0cf711..0000000000000000000000000000000000000000 --- a/src/components/icons/IconCommunity.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"> - <path - d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z" - /> - </svg> -</template> diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue deleted file mode 100644 index 6d4791cfbcf2782b3e5ffbabd042d4c47b2fbbed..0000000000000000000000000000000000000000 --- a/src/components/icons/IconDocumentation.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor"> - <path - d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z" - /> - </svg> -</template> diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue deleted file mode 100644 index c3a4f078c0bd340a33c61ea9ecd8a755d03571ed..0000000000000000000000000000000000000000 --- a/src/components/icons/IconEcosystem.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor"> - <path - d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z" - /> - </svg> -</template> diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue deleted file mode 100644 index 7452834d3ef961ce24c3a072ddba2620b6158bae..0000000000000000000000000000000000000000 --- a/src/components/icons/IconSupport.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"> - <path - d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z" - /> - </svg> -</template> diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue deleted file mode 100644 index 660598d7c76644ffe126a1a1feb1606650bfb937..0000000000000000000000000000000000000000 --- a/src/components/icons/IconTooling.vue +++ /dev/null @@ -1,19 +0,0 @@ -<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license--> -<template> - <svg - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - aria-hidden="true" - role="img" - class="iconify iconify--mdi" - width="24" - height="24" - preserveAspectRatio="xMidYMid meet" - viewBox="0 0 24 24" - > - <path - d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z" - fill="currentColor" - ></path> - </svg> -</template> diff --git a/src/components/icons/navigation/challenge.svg b/src/components/icons/navigation/challenge.svg new file mode 100644 index 0000000000000000000000000000000000000000..c7987bf5112f3e89dd2166bc03cddc5626989158 --- /dev/null +++ b/src/components/icons/navigation/challenge.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24"> + <path d="m24,7v12c0,2.757-2.243,5-5,5-.552,0-1-.447-1-1s.448-1,1-1c1.654,0,3-1.346,3-3v-9h-1c-.552,0-1-.447-1-1s.448-1,1-1h1v-1c0-1.654-1.346-3-3-3H5c-1.654,0-3,1.346-3,3v1h11c.552,0,1,.447,1,1s-.448,1-1,1H2v9c0,1.654,1.346,3,3,3,.552,0,1,.447,1,1s-.448,1-1,1c-2.757,0-5-2.243-5-5V7C0,4.243,2.243,2,5,2h1v-1c0-.553.448-1,1-1s1,.447,1,1v1h8v-1c0-.553.448-1,1-1s1,.447,1,1v1h1c2.757,0,5,2.243,5,5Zm-7,10c-.552,0-1,.447-1,1,0,2.206-1.794,4-4,4s-4-1.794-4-4,1.794-4,4-4c.552,0,1-.447,1-1s-.448-1-1-1c-3.309,0-6,2.691-6,6s2.691,6,6,6,6-2.691,6-6c0-.553-.448-1-1-1Zm-.448-7.744l-.966.966c-.375.375-.586.884-.586,1.414v1.95l-2.482,2.482c-.165-.044-.339-.068-.518-.068-1.105,0-2,.895-2,2s.895,2,2,2,2-.895,2-2c0-.179-.024-.353-.068-.518l2.482-2.482h1.95c.53,0,1.039-.211,1.414-.586l.966-.966c.535-.535.156-1.448-.6-1.448h-2.144v-2.144c0-.756-.914-1.135-1.448-.6Z"/> +</svg> diff --git a/src/components/icons/navigation/cross.svg b/src/components/icons/navigation/cross.svg new file mode 100644 index 0000000000000000000000000000000000000000..c7d8f0af8f441650efb9a0f3b645e1e0e74cbfa8 --- /dev/null +++ b/src/components/icons/navigation/cross.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512.021 512.021" style="enable-background:new 0 0 512.021 512.021;" xml:space="preserve" width="512" height="512"> +<g> + <path d="M301.258,256.01L502.645,54.645c12.501-12.501,12.501-32.769,0-45.269c-12.501-12.501-32.769-12.501-45.269,0l0,0 L256.01,210.762L54.645,9.376c-12.501-12.501-32.769-12.501-45.269,0s-12.501,32.769,0,45.269L210.762,256.01L9.376,457.376 c-12.501,12.501-12.501,32.769,0,45.269s32.769,12.501,45.269,0L256.01,301.258l201.365,201.387 c12.501,12.501,32.769,12.501,45.269,0c12.501-12.501,12.501-32.769,0-45.269L301.258,256.01z"/> +</g> + + + + + + + + + + + + + + + +</svg> diff --git a/src/components/icons/navigation/economy.svg b/src/components/icons/navigation/economy.svg new file mode 100644 index 0000000000000000000000000000000000000000..8df3874b0fdbf01042ff2ab133e9bb5524e3e761 --- /dev/null +++ b/src/components/icons/navigation/economy.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" id="Outline" viewBox="0 0 24 24" width="512" height="512"><path d="M23,22H3a1,1,0,0,1-1-1V1A1,1,0,0,0,0,1V21a3,3,0,0,0,3,3H23a1,1,0,0,0,0-2Z"/><path d="M15,20a1,1,0,0,0,1-1V12a1,1,0,0,0-2,0v7A1,1,0,0,0,15,20Z"/><path d="M7,20a1,1,0,0,0,1-1V12a1,1,0,0,0-2,0v7A1,1,0,0,0,7,20Z"/><path d="M19,20a1,1,0,0,0,1-1V7a1,1,0,0,0-2,0V19A1,1,0,0,0,19,20Z"/><path d="M11,20a1,1,0,0,0,1-1V7a1,1,0,0,0-2,0V19A1,1,0,0,0,11,20Z"/></svg> diff --git a/src/components/icons/navigation/house-chimney.svg b/src/components/icons/navigation/house-chimney.svg new file mode 100644 index 0000000000000000000000000000000000000000..33d6f9b04eff73d321e968d5613078d91643f049 --- /dev/null +++ b/src/components/icons/navigation/house-chimney.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="512" height="512"><path d="M22,5.724V2c0-.552-.447-1-1-1s-1,.448-1,1v2.366L14.797,.855c-1.699-1.146-3.895-1.146-5.594,0L2.203,5.579c-1.379,.931-2.203,2.48-2.203,4.145v9.276c0,2.757,2.243,5,5,5h3c.553,0,1-.448,1-1V15c0-.551,.448-1,1-1h4c.552,0,1,.449,1,1v8c0,.552,.447,1,1,1h3c2.757,0,5-2.243,5-5V9.724c0-1.581-.744-3.058-2-4Zm0,13.276c0,1.654-1.346,3-3,3h-2v-7c0-1.654-1.346-3-3-3h-4c-1.654,0-3,1.346-3,3v7h-2c-1.654,0-3-1.346-3-3V9.724c0-.999,.494-1.929,1.322-2.487L10.322,2.513c1.02-.688,2.336-.688,3.355,0l7,4.724c.828,.558,1.322,1.488,1.322,2.487v9.276Z"/></svg> diff --git a/src/components/icons/navigation/lightbulb-on.svg b/src/components/icons/navigation/lightbulb-on.svg new file mode 100644 index 0000000000000000000000000000000000000000..b4c80fe87eb34bc9a8999fff7f56f924f4a33a5b --- /dev/null +++ b/src/components/icons/navigation/lightbulb-on.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24"> + <path d="m11.864,4.001c-4.184.069-7.709,3.526-7.858,7.705-.088,2.428.914,4.733,2.75,6.326.791.687,1.244,1.743,1.244,2.968,0,1.654,1.346,3,3,3h2c1.654,0,3-1.346,3-3v-.375c0-.966.455-1.898,1.282-2.626,1.728-1.518,2.718-3.704,2.718-5.999,0-2.161-.849-4.187-2.39-5.703-1.541-1.516-3.583-2.345-5.746-2.296Zm2.136,16.999c0,.552-.448,1-1,1h-2c-.552,0-1-.448-1-1.069,0-.316-.031-.626-.077-.931h4.118c-.025.206-.041.415-.041.625v.375Zm1.962-4.503c-.511.449-.923.957-1.24,1.503h-1.722v-4.184c1.161-.414,2-1.514,2-2.816,0-.553-.447-1-1-1s-1,.447-1,1-.448,1-1,1-1-.448-1-1-.447-1-1-1-1,.447-1,1c0,1.302.839,2.402,2,2.816v4.184h-1.746c-.31-.558-.707-1.06-1.188-1.478-1.376-1.195-2.128-2.924-2.062-4.744.112-3.134,2.756-5.726,5.894-5.777.034,0,.067,0,.102,0,1.586,0,3.077.609,4.208,1.723,1.156,1.137,1.793,2.656,1.793,4.277,0,1.72-.743,3.358-2.038,4.497Zm.823-14.023l1.235-2.01c.288-.472.904-.619,1.375-.328.471.289.618.904.328,1.375l-1.235,2.01c-.188.308-.517.477-.853.477-.179,0-.359-.048-.522-.148-.471-.289-.618-.904-.328-1.375Zm6.628,4.148l-1.933.872c-.133.061-.273.089-.41.089-.382,0-.745-.219-.912-.589-.228-.503-.004-1.096.5-1.322l1.933-.872c.506-.229,1.096-.003,1.322.5.228.503.004,1.096-.5,1.322ZM4.194,1.51c-.289-.471-.141-1.087.33-1.375.473-.288,1.087-.14,1.375.33l1.232,2.011c.289.471.141,1.087-.33,1.375-.163.1-.344.147-.521.147-.337,0-.665-.17-.854-.478l-1.232-2.011Zm-.483,5.551c-.171.359-.529.568-.902.568-.145,0-.292-.031-.431-.099l-1.798-.861c-.498-.238-.709-.835-.47-1.333.237-.499.837-.712,1.333-.47l1.798.861c.498.238.709.835.47,1.333Z"/> +</svg> diff --git a/src/components/icons/navigation/menu-burger.svg b/src/components/icons/navigation/menu-burger.svg new file mode 100644 index 0000000000000000000000000000000000000000..c4aa2e39fb1ab858d5252254929b31b5cca151f6 --- /dev/null +++ b/src/components/icons/navigation/menu-burger.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generator: Adobe Illustrator 25.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 490.667 490.667" style="enable-background:new 0 0 490.667 490.667;" xml:space="preserve" width="512" height="512"> +<g> + <path d="M469.333,224h-448C9.551,224,0,233.551,0,245.333c0,11.782,9.551,21.333,21.333,21.333h448 c11.782,0,21.333-9.551,21.333-21.333C490.667,233.551,481.115,224,469.333,224z"/> + <path d="M21.333,117.333h448c11.782,0,21.333-9.551,21.333-21.333s-9.551-21.333-21.333-21.333h-448C9.551,74.667,0,84.218,0,96 S9.551,117.333,21.333,117.333z"/> + <path d="M469.333,373.333h-448C9.551,373.333,0,382.885,0,394.667C0,406.449,9.551,416,21.333,416h448 c11.782,0,21.333-9.551,21.333-21.333C490.667,382.885,481.115,373.333,469.333,373.333z"/> +</g> + + + + + + + + + + + + + + + +</svg> diff --git a/src/components/icons/navigation/piggy-bank.svg b/src/components/icons/navigation/piggy-bank.svg new file mode 100644 index 0000000000000000000000000000000000000000..3e480fbf6c6a0b03409c09e3bb6ffc30099562d1 --- /dev/null +++ b/src/components/icons/navigation/piggy-bank.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="512" height="512"><path d="M18,12c0,.552-.448,1-1,1s-1-.448-1-1,.448-1,1-1,1,.448,1,1ZM7,5c.552,0,1-.447,1-1,0-1.103,.897-2,2-2s2,.897,2,2c0,.553,.448,1,1,1s1-.447,1-1c0-2.206-1.794-4-4-4S6,1.794,6,4c0,.553,.448,1,1,1ZM24,13v2c0,1.106-.748,1.779-1.568,1.954-.661,1.654-1.872,3.051-3.432,3.954v.092c0,1.654-1.346,3-3,3-1.304,0-2.416-.836-2.829-2h-2.343c-.413,1.164-1.525,2-2.829,2-1.654,0-3-1.346-3-3v-.079c-2.635-1.519-4.182-4.377-3.983-7.451,.063-.978,.31-1.907,.705-2.756-1.017-.481-1.723-1.516-1.723-2.714,0-1.654,1.346-3,3-3,.552,0,1,.447,1,1s-.448,1-1,1-1,.448-1,1c0,.491,.356,.9,.823,.984,1.521-1.823,3.853-2.984,6.443-2.984h5.363c.733-1.478,2.102-2.512,3.927-2.946,.591-.139,1.203-.003,1.681,.374,.485,.384,.764,.958,.764,1.576v3.715c.608,.691,1.094,1.481,1.432,2.327,.821,.175,1.568,.848,1.568,1.954Zm-2,0h-.294c-.442,0-.832-.291-.958-.715-.274-.92-.78-1.776-1.463-2.477-.183-.187-.285-.438-.285-.698V5.004c-.975,.232-2.265,.83-2.764,2.335-.141,.423-.553,.714-.99,.684-.068-.003-5.98-.022-5.98-.022-3.303,0-6.05,2.459-6.253,5.599-.16,2.469,1.181,4.752,3.417,5.815,.349,.166,.57,.518,.57,.903v.683c0,.552,.449,1,1,1s1-.448,1-1,.448-1,1-1h4c.552,0,1,.447,1,1s.449,1,1,1,1-.448,1-1v-.694c0-.385,.221-.736,.569-.902,1.542-.736,2.7-2.081,3.179-3.688,.126-.424,.516-.715,.958-.715h.294v-2Z"/></svg> diff --git a/src/components/icons/navigation/user.svg b/src/components/icons/navigation/user.svg new file mode 100644 index 0000000000000000000000000000000000000000..3145a9db43babd2838dfcf13389e5f697871a54f --- /dev/null +++ b/src/components/icons/navigation/user.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="512" height="512"><g id="_01_align_center" data-name="01 align center"><path d="M21,24H19V18.957A2.96,2.96,0,0,0,16.043,16H7.957A2.96,2.96,0,0,0,5,18.957V24H3V18.957A4.963,4.963,0,0,1,7.957,14h8.086A4.963,4.963,0,0,1,21,18.957Z"/><path d="M12,12a6,6,0,1,1,6-6A6.006,6.006,0,0,1,12,12ZM12,2a4,4,0,1,0,4,4A4,4,0,0,0,12,2Z"/></g></svg> diff --git a/src/components/navigation/DropNav.vue b/src/components/navigation/DropNav.vue new file mode 100644 index 0000000000000000000000000000000000000000..47bf42aaae76c33a997ae2a6ed7e579e4ff59a66 --- /dev/null +++ b/src/components/navigation/DropNav.vue @@ -0,0 +1,122 @@ +<script setup lang="ts"> + import { useRouter } from 'vue-router' + import { defineEmits } from 'vue' + const emit = defineEmits(['route-pushed']); + + + const router = useRouter(); + const navigateTo = (path: string) => { + router.push(path); + emit('route-pushed', false); + } +</script> + +<template> + <div class="burger-menu-component"> + <div class="button-menu"> + <button class="menu-button" @click="navigateTo('/homepage/home')"> + <img src="/src/components/icons/navigation/house-chimney.svg" alt="Home Icon" class="icon"> + <label class="button-label">Hjem</label> + </button> + <button class="menu-button" @click="navigateTo('/homepage/discover')"> + <img src="/src/components/icons/navigation/lightbulb-on.svg" alt="Discover Icon" class="icon"> + <label class="button-label">Sparetips</label> + </button> + <button class="menu-button" @click="navigateTo('/homepage/milestone')"> + <img src="/src/components/icons/navigation/piggy-bank.svg" alt="Milestone Icon" class="icon"> + <label class="button-label">Sparemål</label> + </button> + <button class="menu-button" @click="navigateTo('/homepage/challenge')"> + <img src="/src/components/icons/navigation/challenge.svg" alt="Challenge Icon" class="icon"> + <label class="button-label">Utfordringer</label> + </button> + <button class="menu-button" @click="navigateTo('/homepage/economy')"> + <img src="/src/components/icons/navigation/economy.svg" alt="Economy Icon" class="icon"> + <label class="button-label">Forbruk</label> + </button> + <button class="menu-button" @click="navigateTo('/homepage/profile')"> + <img src="/src/components/icons/navigation/user.svg" alt="Profile Icon" class="icon"> + <label class="button-label">Profil</label> + </button> + </div> + </div> +</template> + +<style scoped> + +.burger-menu-component{ + display: flex; + flex-direction: column; + + align-items: center; + place-items: center; + + width: 100vw; + height: 100vh; + min-height: 650px; + overflow-y: scroll; + + padding: 5.0%; + + background-color: var(--color-background); +} + +.button-menu{ + display: flex; + flex-direction: column; + + align-items: center; + place-content: center; + justify-content: space-evenly; + + height: 100%; + width: 100%; + + gap: 2.5%; +} + +.menu-button{ + display: flex; + flex-direction: row; + + align-items: center; + place-content: center; + + height: 12%; + width: 100%; + gap: 2.5%; + + border: 2px solid var(--color-border); + border-radius: 20px; + background-color: transparent; +} + +.menu-button:hover{ + transform: scale(1.05); + cursor: pointer; +} + +.icon{ + width: 15%; + height: 80%; + margin: 0; +} + +@media (prefers-color-scheme: dark) { + .icon { + filter: invert(1); /* Invert colors of the image in dark mode */ + } +} + +.button-label{ + margin: 0; + font-size: medium; + color: var(--color-text); +} + +.button-label:hover{ + cursor: pointer; +} + + +</style> \ No newline at end of file diff --git a/src/components/navigation/SideNav.vue b/src/components/navigation/SideNav.vue new file mode 100644 index 0000000000000000000000000000000000000000..6712b5b7a28fb41eb6337e0ddbac2ef32125d5fe --- /dev/null +++ b/src/components/navigation/SideNav.vue @@ -0,0 +1,147 @@ +<script setup lang="ts"> +import { useRouter } from 'vue-router' +import { ref, watch } from 'vue' + +const router = useRouter(); +const currentRoute = router.currentRoute; +const selectedPath = ref(currentRoute.value.path) +const navigateTo = (path: string) => { + router.push(path) +} + +watch(currentRoute, () => { + selectedPath.value = currentRoute.value.path; +}) + +</script> + +<template> + <div class="side-navigation"> + <div class="button-menu"> + <button + class="menu-button" + :class="{ 'active': currentRoute.path == '/homepage/home' || currentRoute.path == '/homepage' }" + @click="navigateTo('/homepage/home')"> + <img src="/src/components/icons/navigation/house-chimney.svg" alt="Home Icon" class="icon"> + <label class="button-label">Hjem</label> + </button> + <button + class="menu-button" + :class="{ 'active': currentRoute.path == '/homepage/discover' }" + @click="navigateTo('/homepage/discover')"> + <img src="/src/components/icons/navigation/lightbulb-on.svg" alt="Discover Icon" class="icon"> + <label class="button-label">Sparetips</label> + </button> + <button + class="menu-button" + :class="{ 'active': currentRoute.path == '/homepage/milestone' }" + @click="navigateTo('/homepage/milestone')"> + <img src="/src/components/icons/navigation/piggy-bank.svg" alt="Milestone Icon" class="icon"> + <label class="button-label">Sparemål</label> + </button> + <button + class="menu-button" + :class="{ 'active': currentRoute.path == '/homepage/challenge' }" + @click="navigateTo('/homepage/challenge')"> + <img src="/src/components/icons/navigation/challenge.svg" alt="Challenge Icon" class="icon"> + <label class="button-label">Utfordringer</label> + </button> + <button + class="menu-button" + :class="{ 'active': currentRoute.path == '/homepage/economy' }" + @click="navigateTo('/homepage/economy')"> + <img src="/src/components/icons/navigation/economy.svg" alt="Economy Icon" class="icon"> + <label class="button-label">Forbruk</label> + </button> + <button + class="menu-button" + :class="{ 'active': currentRoute.path == '/homepage/profile' }" + @click="navigateTo('/homepage/profile')"> + <img src="/src/components/icons/navigation/user.svg" alt="Profile Icon" class="icon"> + <label class="button-label">Profil</label> + </button> + </div> + <img src="/src/assets/pig.png" alt="Pig Logo" class="logo"> + </div> +</template> + + +<style scoped> +.side-navigation{ + display: flex; + flex-direction: column; + + align-items: center; + + height: 100%; + width: 100%; + background-color: var(--color-background); +} + +.button-menu{ + display: flex; + flex-direction: column; + + align-items: center; + place-content: start; + justify-content: space-evenly; + + height: 65%; + width: 100%; + + gap: 5.0%; +} + +.menu-button{ + display: flex; + flex-direction: row; + + align-items: center; + place-content: center; + + height: 12%; + width: 100%; + gap: 2.5%; + + border: 2px solid var(--color-border); + border-radius: 20px; + background-color: transparent; +} + +.menu-button.active { + border-color: var(--color-heading); /* Change to your desired color */ +} + +.menu-button:hover{ + transform: scale(1.05); + cursor: pointer; +} + +.icon{ + width: 15%; + height: 80%; + margin: 0; +} +@media (prefers-color-scheme: dark) { + .icon { + filter: invert(1); /* Invert colors of the image in dark mode */ + } +} + +.button-label{ + margin: 0; + font-size: medium; + color: var(--color-text); +} + +.button-label:hover{ + cursor: pointer; +} + +.logo{ + height: 35%; + max-width: 100%; + padding-top: 5.0%; +} + +</style> \ No newline at end of file diff --git a/src/components/navigation/TopNav.vue b/src/components/navigation/TopNav.vue new file mode 100644 index 0000000000000000000000000000000000000000..1fbbaf82e98dad827a29df5eb8d8b98b10305575 --- /dev/null +++ b/src/components/navigation/TopNav.vue @@ -0,0 +1,129 @@ +<script setup lang="ts"> +import { ref } from 'vue' +import DropDownMenu from '@/components/navigation/DropNav.vue' +import { useRouter } from 'vue-router' + +const router = useRouter(); +const isBurgerMenuOpen = ref(false); + +const openBurgerMenu = () => { + if(isBurgerMenuOpen.value) { + isBurgerMenuOpen.value = false; + } else { + isBurgerMenuOpen.value = true + } +} + +const handleRoutePushed = (value: boolean) => { + isBurgerMenuOpen.value = value; + console.log('Menu Closed!'); +} + +const navigate = (path: string) => { + router.push(path) +} + +</script> + +<template> + <div class="top-nav"> + <div class="title-box"> + <h1 class="title" @click="navigate('/homepage/home')">Sparesti</h1> + </div> + <div class="button-menu"> + <img src="/src/components/icons/navigation/menu-burger.svg" v-if="!isBurgerMenuOpen" alt="Menu Options" class="burger-menu" @click="openBurgerMenu"> + <img src="/src/components/icons/navigation/cross.svg" v-if="isBurgerMenuOpen" alt="Exit Options" class="exit-burger-menu" @click="openBurgerMenu"> + <button class="profile-button" @click="navigate('/homepage/profile')"> + <img src="/src/components/icons/navigation/user.svg" alt="Home Icon" class="profile-icon"> + </button> + </div> + </div> + <DropDownMenu class="burger" v-if="isBurgerMenuOpen" @route-pushed="handleRoutePushed"></DropDownMenu> +</template> + +<style scoped> +.top-nav{ + display: flex; + flex-direction: row; + + height: 100%; + width: 100%; + padding: max(1.0%, 15px); + + background-color: var(--color-header); + box-shadow: 0 4px 6px var(--color-shadow); +} + +.title-box{ + display: flex; + flex-direction: row; + place-items: start; + align-items: center; + + width: 50%; + height: 100%; +} + +.title{ + color: var(--color-headerText); +} + +.title:hover{ + cursor: pointer; + transform: scale(1.05); +} + +.button-menu{ + display: flex; + flex-direction: row; + + place-content: end; + place-items: center; + + height: 100%; + width: 50%; + gap: 8.0%; +} + +.profile-button{ + height: 100%; + aspect-ratio: 1 / 1; + border-radius: 50%; + border: 0; + background-color: var(--color-headerText); +} + +.profile-button:hover{ + transform: scale(1.05); +} + +.profile-icon{ + height: 85%; + aspect-ratio: 1/1; +} + +.burger-menu{ + height: 80%; + aspect-ratio: 1 / 1; + filter: invert(1); +} + +.exit-burger-menu{ + height: 70%; + aspect-ratio: 1/1; + filter: invert(1); +} + +.burger-menu:hover{ + transform: scale(1.05); +} + +.exit-burger-menu:hover{ + transform: scale(1.05); +} +@media only screen and (min-width: 1000px){ + .burger-menu{ + display: none; + } +} +</style> \ No newline at end of file diff --git a/src/views/HomePageView.vue b/src/views/HomePageView.vue index c971863ef8f97f1ce1d7116325c041875d05c45e..ed7864f363a951802a5a74d7b038ce46762a8b28 100644 --- a/src/views/HomePageView.vue +++ b/src/views/HomePageView.vue @@ -1,11 +1,67 @@ <script setup lang="ts"> +import TopNav from '@/components/navigation/TopNav.vue' +import SideNav from '@/components/navigation/SideNav.vue' </script> <template> - <router-view></router-view> + <div class="home-page"> + <div class="top"> + <TopNav></TopNav> + </div> + <div class="main"> + <div class="side-nav"> + <SideNav></SideNav> + </div> + <div class="view-element"> + <router-view></router-view> + </div> + </div> + </div> </template> <style scoped> +.home-page{ + display: flex; + flex-direction: column; + place-items: start; + align-items: start; + height: 100%; + width: 100%; +} + +.top{ + z-index: 1; + width: 100%; + height: 12%; + min-height: 75px; +} + +.main{ + display: flex; + flex-direction: row; + height: 100%; + width: 100%; + overflow-y: scroll; +} + +.side-nav{ + width: 15%; + min-height: 650px; + padding: 2.0% 1.0% 2.0% 1.0% ; + box-shadow: 0 2px 5px var(--color-shadow); +} + +.view-element{ + width: 85%; + padding: 2.0%; +} + +@media only screen and (max-width: 1000px){ + .side-nav{ + display: none; + } +} + </style> \ No newline at end of file