diff --git a/packages/theme/src/client/components/Nav/NavBar.vue b/packages/theme/src/client/components/Nav/NavBar.vue new file mode 100644 index 00000000..9b6aed79 --- /dev/null +++ b/packages/theme/src/client/components/Nav/NavBar.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/packages/theme/src/client/components/Nav/NavBarTitle.vue b/packages/theme/src/client/components/Nav/NavBarTitle.vue new file mode 100644 index 00000000..24c92803 --- /dev/null +++ b/packages/theme/src/client/components/Nav/NavBarTitle.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/packages/theme/src/client/components/Nav/NavScreen.vue b/packages/theme/src/client/components/Nav/NavScreen.vue new file mode 100644 index 00000000..6b4c19a0 --- /dev/null +++ b/packages/theme/src/client/components/Nav/NavScreen.vue @@ -0,0 +1 @@ + diff --git a/packages/theme/src/client/components/Nav/index.vue b/packages/theme/src/client/components/Nav/index.vue new file mode 100644 index 00000000..071199a8 --- /dev/null +++ b/packages/theme/src/client/components/Nav/index.vue @@ -0,0 +1,14 @@ + + diff --git a/packages/theme/src/client/components/Navbar/index.vue b/packages/theme/src/client/components/Navbar/index.vue deleted file mode 100644 index 6f0ce0e1..00000000 --- a/packages/theme/src/client/components/Navbar/index.vue +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/packages/theme/src/client/components/VImage.vue b/packages/theme/src/client/components/VImage.vue new file mode 100644 index 00000000..466a6789 --- /dev/null +++ b/packages/theme/src/client/components/VImage.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/packages/theme/src/client/composables/nav.ts b/packages/theme/src/client/composables/nav.ts new file mode 100644 index 00000000..1fe0244f --- /dev/null +++ b/packages/theme/src/client/composables/nav.ts @@ -0,0 +1,45 @@ +import type { Ref } from 'vue' +import { ref, watch } from 'vue' +import { useRoute } from 'vue-router' + +export interface UseNavReturn { + isScreenOpen: Ref + openScreen: () => void + closeScreen: () => void + toggleScreen: () => void +} + +export function useNav(): UseNavReturn { + const isScreenOpen = ref(false) + + function openScreen(): void { + isScreenOpen.value = true + window.addEventListener('resize', closeScreenOnTabletWindow) + } + + function closeScreen(): void { + isScreenOpen.value = false + window.removeEventListener('resize', closeScreenOnTabletWindow) + } + + function toggleScreen(): void { + isScreenOpen.value ? closeScreen() : openScreen() + } + + /** + * Close screen when the user resizes the window wider than tablet size. + */ + function closeScreenOnTabletWindow(): void { + window.outerWidth >= 768 && closeScreen() + } + + const route = useRoute() + watch(() => route.path, closeScreen) + + return { + isScreenOpen, + openScreen, + closeScreen, + toggleScreen, + } +} diff --git a/packages/theme/src/client/composables/sidebar.ts b/packages/theme/src/client/composables/sidebar.ts new file mode 100644 index 00000000..ac3e0a3b --- /dev/null +++ b/packages/theme/src/client/composables/sidebar.ts @@ -0,0 +1,11 @@ +import { computed } from 'vue' + +export function useSidebar() { + const hasSidebar = computed(() => { + return false + }) + + return { + hasSidebar, + } +} diff --git a/packages/theme/src/client/layouts/Layout.vue b/packages/theme/src/client/layouts/Layout.vue index 4fb39628..0c904404 100644 --- a/packages/theme/src/client/layouts/Layout.vue +++ b/packages/theme/src/client/layouts/Layout.vue @@ -1,5 +1,5 @@