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 @@
-
+