From c8af1c35e7a41eaaee40b356d202b67c18699292 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sun, 1 Mar 2026 15:41:27 +0300 Subject: [PATCH] Improve Save for browsers without File System Access API - Save As prompts for filename via prompt() before downloading - Save reuses the filename from last Save As (no repeated prompts) - Banner in Safari/Firefox explaining the limitation with Chrome link - Banner is dismissible --- components.d.ts | 1 + src/App.vue | 2 ++ src/components/SafariBanner.vue | 25 +++++++++++++++++++++++++ src/stores/editor.ts | 8 +++++++- 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/components/SafariBanner.vue diff --git a/components.d.ts b/components.d.ts index c575c11cf..2e1d45ee3 100644 --- a/components.d.ts +++ b/components.d.ts @@ -84,6 +84,7 @@ declare module 'vue' { PagesPanel: typeof import('./src/components/PagesPanel.vue')['default'] PositionSection: typeof import('./src/components/properties/PositionSection.vue')['default'] PropertiesPanel: typeof import('./src/components/PropertiesPanel.vue')['default'] + SafariBanner: typeof import('./src/components/SafariBanner.vue')['default'] ScrubInput: typeof import('./src/components/ScrubInput.vue')['default'] StrokeSection: typeof import('./src/components/properties/StrokeSection.vue')['default'] Toolbar: typeof import('./src/components/Toolbar.vue')['default'] diff --git a/src/App.vue b/src/App.vue index 5abf627c3..51e800ea9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -10,6 +10,7 @@ import { provideEditorStore } from './stores/editor' import EditorCanvas from './components/EditorCanvas.vue' import LayersPanel from './components/LayersPanel.vue' import PropertiesPanel from './components/PropertiesPanel.vue' +import SafariBanner from './components/SafariBanner.vue' import Toolbar from './components/Toolbar.vue' const store = provideEditorStore() @@ -35,6 +36,7 @@ if (!('test' in params)) {