From 1e67fa6e0bede8c055d9e4cb9bf7f97423bc9bdf Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 15 Apr 2022 12:21:09 +0200 Subject: [PATCH] feat: mobile friendly menu --- src/components/MenuLayout.vue | 47 +++++++++++++++++ src/layouts/base.layout.vue | 97 +++++++++++++++++++++++------------ src/layouts/tool.layout.vue | 6 ++- src/stores/style.store.ts | 6 ++- 4 files changed, 121 insertions(+), 35 deletions(-) create mode 100644 src/components/MenuLayout.vue diff --git a/src/components/MenuLayout.vue b/src/components/MenuLayout.vue new file mode 100644 index 00000000..48150c16 --- /dev/null +++ b/src/components/MenuLayout.vue @@ -0,0 +1,47 @@ + + + + + \ No newline at end of file diff --git a/src/layouts/base.layout.vue b/src/layouts/base.layout.vue index 1d1480c4..d20e4a0f 100644 --- a/src/layouts/base.layout.vue +++ b/src/layouts/base.layout.vue @@ -2,15 +2,15 @@ import { NIcon } from 'naive-ui'; import { h, ref, type Component } from 'vue'; import { RouterLink, useRoute } from 'vue-router'; -import { Heart, BrandGithub, BrandTwitter, Moon, Sun } from '@vicons/tabler' +import { Heart, BrandGithub, BrandTwitter, Moon, Sun, Menu2, Home2 } from '@vicons/tabler' import { toolsByCategory } from '@/tools'; import SearchBar from '../components/SearchBar.vue'; import { useStyleStore } from '@/stores/style.store'; import HeroGradient from '../assets/hero-gradient.svg?component' import { useThemeVars } from 'naive-ui' +import MenuLayout from '../components/MenuLayout.vue' const themeVars = useThemeVars() -const collapsed = ref(false) const activeKey = ref(null) const route = useRoute() const styleStore = useStyleStore() @@ -32,10 +32,9 @@ const m = toolsByCategory.map(category => ({ \ No newline at end of file diff --git a/src/layouts/tool.layout.vue b/src/layouts/tool.layout.vue index 01c8cc16..2705a507 100644 --- a/src/layouts/tool.layout.vue +++ b/src/layouts/tool.layout.vue @@ -45,19 +45,23 @@ useHead(head) .tool-header { padding: 40px 0; + .n-h1 { opacity: 0.9; font-size: 40px; font-weight: 400; margin: 0; + line-height: 1; } + .separator { width: 200px; height: 2px; background: rgb(161, 161, 161); - margin-bottom: 10px; + margin: 10px 0; } + .description { margin: 0; diff --git a/src/stores/style.store.ts b/src/stores/style.store.ts index 6026d8b1..79c372cf 100644 --- a/src/stores/style.store.ts +++ b/src/stores/style.store.ts @@ -1,9 +1,11 @@ -import { useStorage } from '@vueuse/core'; +import { useMediaQuery, useStorage } from '@vueuse/core'; import { defineStore } from 'pinia'; import type { Ref } from 'vue'; export const useStyleStore = defineStore('style', { state: () => ({ - isDarkTheme: useStorage('useDarkTheme', false) as Ref, + isDarkTheme: useStorage('isDarkTheme', true) as Ref, + isMenuCollapsed: useStorage('isMenuCollapsed', false) as Ref, + isSmallScreen: useMediaQuery('(max-width: 700px)'), }), });