feat: Themen-Inhaltsverzeichnis — Dashboard-Widget + dedizierte Seite /themen #664
@@ -59,37 +59,40 @@ const greetingText = $derived.by(() => {
|
|||||||
<h1 class="font-serif text-[2rem] text-ink">{greetingText}</h1>
|
<h1 class="font-serif text-[2rem] text-ink">{greetingText}</h1>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<div class="grid grid-cols-1 gap-5 lg:grid-cols-[1fr_320px] lg:items-start">
|
<div class="flex flex-col gap-5">
|
||||||
<div class="flex flex-col gap-5">
|
<DashboardResumeStrip resumeDoc={data.resumeDoc ?? null} />
|
||||||
<DashboardResumeStrip resumeDoc={data.resumeDoc ?? null} />
|
|
||||||
|
|
||||||
<EnrichmentBlock
|
<ThemenWidget tags={data.tagTree ?? []} />
|
||||||
topDocs={data.incompleteDocs ?? []}
|
|
||||||
totalCount={data.incompleteTotal ?? 0}
|
|
||||||
bannerCount={bannerCount}
|
|
||||||
onBannerClose={() => (bannerCount = 0)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<section aria-label={m.dashboard_mission_caption()}>
|
<div class="grid grid-cols-1 gap-5 lg:grid-cols-[1fr_320px] lg:items-start">
|
||||||
<h2 class="mb-3 font-sans text-xs font-bold tracking-widest text-ink-3 uppercase">
|
<div class="flex flex-col gap-5">
|
||||||
{m.dashboard_mission_caption()}
|
<EnrichmentBlock
|
||||||
</h2>
|
topDocs={data.incompleteDocs ?? []}
|
||||||
<MissionControlStrip
|
totalCount={data.incompleteTotal ?? 0}
|
||||||
segmentationDocs={data.segmentationDocs ?? []}
|
bannerCount={bannerCount}
|
||||||
transcriptionDocs={data.transcriptionDocs ?? []}
|
onBannerClose={() => (bannerCount = 0)}
|
||||||
readyDocs={data.readyDocs ?? []}
|
|
||||||
weeklyStats={data.weeklyStats ?? null}
|
|
||||||
/>
|
/>
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex flex-col gap-5 lg:sticky lg:top-[80px]">
|
<section aria-label={m.dashboard_mission_caption()}>
|
||||||
<DashboardFamilyPulse pulse={data.pulse ?? null} />
|
<h2 class="mb-3 font-sans text-xs font-bold tracking-widest text-ink-3 uppercase">
|
||||||
<ThemenWidget tags={data.tagTree ?? []} compact={true} />
|
{m.dashboard_mission_caption()}
|
||||||
<DashboardActivityFeed feed={data.activityFeed ?? []} />
|
</h2>
|
||||||
{#if data.canWrite}
|
<MissionControlStrip
|
||||||
<DropZone onUploadComplete={(count) => (bannerCount = count)} />
|
segmentationDocs={data.segmentationDocs ?? []}
|
||||||
{/if}
|
transcriptionDocs={data.transcriptionDocs ?? []}
|
||||||
|
readyDocs={data.readyDocs ?? []}
|
||||||
|
weeklyStats={data.weeklyStats ?? null}
|
||||||
|
/>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-col gap-5 lg:sticky lg:top-[80px]">
|
||||||
|
<DashboardFamilyPulse pulse={data.pulse ?? null} />
|
||||||
|
<DashboardActivityFeed feed={data.activityFeed ?? []} />
|
||||||
|
{#if data.canWrite}
|
||||||
|
<DropZone onUploadComplete={(count) => (bannerCount = count)} />
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user