diff --git a/src/App.vue b/src/App.vue
index 6e51525..fe1d9ce 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -6,6 +6,7 @@ import ElementPopup from './components/ElementPopup.vue';
import PreviewLoader from './components/PreviewLoader.vue';
import SaveButton from './components/SaveButton.vue';
import PrintButton from './components/PrintButton.vue';
+import ZoomControls from './components/ui/ZoomControls.vue';
import { onMounted, ref, computed, provide } from 'vue';
import { useStylesheetStore } from './stores/stylesheet';
import { useNarrativeStore } from './stores/narrative';
@@ -73,6 +74,10 @@ const { handleKeyboardShortcut, isMac } = useKeyboardShortcuts({
// Attach keyboard shortcut handler to renderer
setKeyboardShortcutHandler(handleKeyboardShortcut);
+// Zoom
+const zoomControls = ref(null);
+const zoomStyle = computed(() => zoomControls.value?.zoomStyle ?? {});
+
// Lifecycle: Initialize app on mount
onMounted(async () => {
// Load narrative data (narrativeUrl constructed from location, always present)
@@ -99,11 +104,13 @@ onMounted(async () => {
ref="previewFrame1"
class="preview-frame"
:class="{ shifted: activeTab.length > 0 }"
+ :style="zoomStyle"
>