From d8124100390b54164c8631add78c5335dc9b49ad Mon Sep 17 00:00:00 2001 From: Jake Date: Fri, 15 May 2026 08:54:24 +0100 Subject: [PATCH] =?UTF-8?q?v0.2=20Phase=207.2:=20FilesPage=20=E2=80=94=20w?= =?UTF-8?q?rapper=20sweep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migrated FilesPage chrome to the new grammar; the drop-zone affordance and transcript textarea (the page's identity surfaces) stay verbatim. - Card import → LumotiaCard - EmptyState import → LumotiaEmptyState - "Browse Files" filled button → LumotiaButton variant=primary size=lg - Bottom "Copy" / "Export" toolbar → LumotiaButton variant=tertiary - Custom export dropdown → LumotiaMenu (Bits UI DropdownMenu) - Inline danger error → LumotiaNotice tone=danger - Custom progress bar → LumotiaProgress Banks the LumotiaField + LumotiaNotice patterns the plan called out; Field stays on the textarea (transcript surface is intentionally naked inside the card per brand spec). Per-page gate: npm run check (0/0/5704 files). Vitest / browser-mode / e2e baselines unchanged (no behaviour change to the smoke surface). Co-Authored-By: Claude Opus 4.7 (1M context) --- src/lib/pages/FilesPage.svelte | 69 +++++++++++++++------------------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/src/lib/pages/FilesPage.svelte b/src/lib/pages/FilesPage.svelte index aa17200..abcc61a 100644 --- a/src/lib/pages/FilesPage.svelte +++ b/src/lib/pages/FilesPage.svelte @@ -5,8 +5,12 @@ import { listen } from "@tauri-apps/api/event"; import { settings, addToHistory } from "$lib/stores/page.svelte.js"; import { profilesStore } from "$lib/stores/profiles.svelte.ts"; - import Card from "$lib/components/Card.svelte"; - import EmptyState from "$lib/components/EmptyState.svelte"; + import LumotiaCard from "$lib/ui/LumotiaCard.svelte"; + import LumotiaEmptyState from "$lib/ui/LumotiaEmptyState.svelte"; + import LumotiaButton from "$lib/ui/LumotiaButton.svelte"; + import LumotiaNotice from "$lib/ui/LumotiaNotice.svelte"; + import LumotiaProgress from "$lib/ui/LumotiaProgress.svelte"; + import LumotiaMenu from "$lib/ui/LumotiaMenu.svelte"; import { exportTranscript } from "$lib/utils/export.js"; import { hasTauriRuntime } from "$lib/utils/runtime"; import { toasts } from "$lib/stores/toasts.svelte.js"; @@ -190,7 +194,7 @@ aria-label="Audio file drop zone" > {#if !fileTranscript && !transcribing} - @@ -210,14 +214,9 @@
- +
{#if progressText} {progressText} @@ -227,21 +226,14 @@ {#if error}
-
- {error} -
+ {error}
{/if} {#if progress > 0}
-
-
-
+ {#if fileName}

{fileName}

{/if} @@ -250,7 +242,7 @@
- + - +
-
- -
- - {#if showExportMenu} -
- {#each [["txt", "Plain Text"], ["md", "Markdown"], ["csv", "CSV"], ["html", "HTML"], ["srt", "SRT Subtitles"], ["vtt", "WebVTT"]] as [fmt, label]} - - {/each} -
- {/if} -
+
+ Copy + handleExport("txt") }, + { value: "md", label: "Markdown", onSelect: () => handleExport("md") }, + { value: "csv", label: "CSV", onSelect: () => handleExport("csv") }, + { value: "html", label: "HTML", onSelect: () => handleExport("html") }, + { value: "srt", label: "SRT Subtitles", onSelect: () => handleExport("srt") }, + { value: "vtt", label: "WebVTT", onSelect: () => handleExport("vtt") }, + ]} + > + {#snippet trigger()} + Export + {/snippet} +