- Strip heading: "Mitarbeiten" → "Was braucht Aufmerksamkeit?" - Column 1 heading: "Segmentierung" → "Rahmen einzeichnen"; add green skill pill "✓ Ohne Vorkenntnisse"; heading color gray → ink (navy) - Column 2 heading: "Transkription" → "Text eintippen"; add navy skill pill "Kurrent hilfreich"; heading color gray → ink; weekly pulse color green → ink (task, not achievement); progress bar track bg-gray-200/h-1.5 → bg-ink/20/h-1; add transition-all to fill - Column 3 heading: "Lesefertig" → "Lesefertig ✓"; heading color gray → green-800; add "N Dokumente bereit" subtitle in green; add "Alle N lesen →" link at bottom; reviewed % color gray → green-800 - All columns: add CTA buttons at bottom (Jetzt einzeichnen / Jetzt tippen); empty state removed from cols 1 & 2 (columns hide when empty); empty-state ghost CTA in col 3 restyled as bordered button with hover:bg-ink - Strip: add visibility guard — hides when all three lists are empty - i18n: add mission_control_seg_skill_pill, mission_control_trans_skill_pill, mission_control_ready_subtitle, mission_control_ready_all_cta in de/en/es; update heading and CTA copy in all three locales Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
51 lines
1.5 KiB
Svelte
51 lines
1.5 KiB
Svelte
<script lang="ts">
|
|
import * as m from '$lib/paraglide/messages.js';
|
|
import SegmentationColumn from './SegmentationColumn.svelte';
|
|
import TranscriptionColumn from './TranscriptionColumn.svelte';
|
|
import ReadyColumn from './ReadyColumn.svelte';
|
|
|
|
type TranscriptionQueueItemDTO = {
|
|
id: string;
|
|
title: string;
|
|
documentDate?: string;
|
|
needsExpert: boolean;
|
|
annotationCount: number;
|
|
textedBlockCount: number;
|
|
reviewedBlockCount: number;
|
|
};
|
|
|
|
type TranscriptionWeeklyStatsDTO = {
|
|
segmentationCount: number;
|
|
transcriptionCount: number;
|
|
readyCount: number;
|
|
};
|
|
|
|
interface Props {
|
|
segmentationDocs: TranscriptionQueueItemDTO[];
|
|
transcriptionDocs: TranscriptionQueueItemDTO[];
|
|
readyDocs: TranscriptionQueueItemDTO[];
|
|
weeklyStats: TranscriptionWeeklyStatsDTO | null;
|
|
}
|
|
|
|
let { segmentationDocs, transcriptionDocs, readyDocs, weeklyStats }: Props = $props();
|
|
</script>
|
|
|
|
{#if segmentationDocs.length > 0 || transcriptionDocs.length > 0 || readyDocs.length > 0}
|
|
<section class="mt-4 rounded-sm border border-line bg-white p-6">
|
|
<h2 class="mb-4 font-sans text-xs font-bold tracking-widest text-gray-400 uppercase">
|
|
{m.mission_control_heading()}
|
|
</h2>
|
|
<div class="grid grid-cols-1 gap-4 sm:grid-cols-3">
|
|
<SegmentationColumn
|
|
docs={segmentationDocs}
|
|
weeklyCount={weeklyStats?.segmentationCount ?? 0}
|
|
/>
|
|
<TranscriptionColumn
|
|
docs={transcriptionDocs}
|
|
weeklyCount={weeklyStats?.transcriptionCount ?? 0}
|
|
/>
|
|
<ReadyColumn docs={readyDocs} weeklyCount={weeklyStats?.readyCount ?? 0} />
|
|
</div>
|
|
</section>
|
|
{/if}
|