feat(ui): note-template picker before starting a recording (T8.1, FR-NOTE-5)
This commit is contained in:
1 parent
21d2b40961
commit
db838d9741
1 file changed
+22
-2
+22
-2
@@ -11,11 +11,17 @@
|
||||
import { recording } from "./lib/stores/recording.svelte";
|
||||
import { settings } from "./lib/stores/settings.svelte";
|
||||
import { meetings } from "./lib/stores/meetings.svelte";
|
||||
import { api, type NoteTemplate } from "./lib/api";
|
||||
import { onMount } from "svelte";
|
||||
|
||||
let showSettings = $state(false);
|
||||
let showConsent = $state(false);
|
||||
|
||||
// Note templates (T8.1, FR-NOTE-5) — picked before starting a recording,
|
||||
// applied to notes.md's structure once the meeting finalizes.
|
||||
let noteTemplates = $state<NoteTemplate[]>([]);
|
||||
let selectedTemplateId = $state("");
|
||||
|
||||
// Theme (T7.2, FR-UX-2): "system" tracks the OS preference live; "light"/"dark" override it.
|
||||
let systemPrefersDark = $state(false);
|
||||
let resolvedTheme = $derived(
|
||||
@@ -30,6 +36,10 @@
|
||||
recording.init();
|
||||
settings.load();
|
||||
meetings.init();
|
||||
api
|
||||
.listNoteTemplates()
|
||||
.then((t) => (noteTemplates = t))
|
||||
.catch(() => (noteTemplates = []));
|
||||
|
||||
const media = window.matchMedia("(prefers-color-scheme: dark)");
|
||||
systemPrefersDark = media.matches;
|
||||
@@ -45,7 +55,7 @@
|
||||
|
||||
function startRecording() {
|
||||
meetings.deselect(); // show the live view, not whatever past meeting was open
|
||||
recording.start(undefined, settings.settings.default_record);
|
||||
recording.start(undefined, settings.settings.default_record, selectedTemplateId || undefined);
|
||||
}
|
||||
|
||||
function toggleRecording() {
|
||||
@@ -54,7 +64,6 @@
|
||||
}
|
||||
|
||||
// Global shortcuts (T7.4, FR-UX-3): record start/stop, view toggles.
|
||||
// "Template apply" isn't included — there's no template UI yet (Phase 8, T8.1).
|
||||
function isEditableTarget(target: EventTarget | null): boolean {
|
||||
if (!(target instanceof HTMLElement)) return false;
|
||||
return (
|
||||
@@ -124,6 +133,17 @@
|
||||
<span class="muted">local · private</span>
|
||||
<div class="spacer"></div>
|
||||
{#if recording.state === "idle"}
|
||||
<select
|
||||
class="theme-select"
|
||||
bind:value={selectedTemplateId}
|
||||
aria-label="Note template"
|
||||
title="Note template"
|
||||
>
|
||||
<option value="">No template</option>
|
||||
{#each noteTemplates as t (t.id)}
|
||||
<option value={t.id}>{t.name}</option>
|
||||
{/each}
|
||||
</select>
|
||||
<button
|
||||
onclick={startRecording}
|
||||
title="Start recording (Ctrl+Shift+R)"
|
||||
|
||||
Reference in new issue
Block a user