From dff203d526fcdf4a3671cb14dfc78f46b1684a55 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 24 Apr 2026 21:06:50 +0200 Subject: [PATCH] feat(transcribe): wire coach into TranscriptionEditView, hide training footer when empty Co-Authored-By: Claude Sonnet 4.6 --- .../components/TranscriptionEditView.svelte | 23 ++++--------------- .../TranscriptionEditView.svelte.spec.ts | 16 +++++++++++-- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/frontend/src/lib/components/TranscriptionEditView.svelte b/frontend/src/lib/components/TranscriptionEditView.svelte index c156f6c0..c4188982 100644 --- a/frontend/src/lib/components/TranscriptionEditView.svelte +++ b/frontend/src/lib/components/TranscriptionEditView.svelte @@ -2,6 +2,7 @@ import { m } from '$lib/paraglide/messages.js'; import TranscriptionBlock from './TranscriptionBlock.svelte'; import OcrTrigger from './OcrTrigger.svelte'; +import TranscribeCoachEmptyState from './TranscribeCoachEmptyState.svelte'; import type { TranscriptionBlockData } from '$lib/types'; import { createBlockAutoSave } from '$lib/hooks/useBlockAutoSave.svelte'; import { createBlockDragDrop } from '$lib/hooks/useBlockDragDrop.svelte'; @@ -231,28 +232,12 @@ async function handleLabelToggle(label: string) { {:else} -
- - - - -

- {m.transcription_empty_draw_hint()} -

+
+
{/if} - {#if canWrite} + {#if canWrite && hasBlocks}

Für Training vormerken

diff --git a/frontend/src/lib/components/TranscriptionEditView.svelte.spec.ts b/frontend/src/lib/components/TranscriptionEditView.svelte.spec.ts index b076e590..a48f0148 100644 --- a/frontend/src/lib/components/TranscriptionEditView.svelte.spec.ts +++ b/frontend/src/lib/components/TranscriptionEditView.svelte.spec.ts @@ -61,9 +61,21 @@ describe('TranscriptionEditView — rendering', () => { await expect.element(page.getByText(/Block 3/)).toBeInTheDocument(); }); - it('shows empty state when no blocks', async () => { + it('shows coach card when no blocks', async () => { renderView({ blocks: [] }); - await expect.element(page.getByText(/Zeichnen Sie Bereiche/)).toBeInTheDocument(); + await expect + .element(page.getByRole('heading', { level: 2 })) + .toHaveTextContent('Erste Transkription?'); + }); + + it('hides training footer when no blocks', async () => { + renderView({ blocks: [], canWrite: true }); + await expect.element(page.getByText('Für Training vormerken')).not.toBeInTheDocument(); + }); + + it('shows training footer when blocks exist', async () => { + renderView({ blocks: [block1], canWrite: true }); + await expect.element(page.getByText('Für Training vormerken')).toBeInTheDocument(); }); });