feat(GeschichteListRow): show DRAFT badge on desktop meta column and mobile row
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1042,6 +1042,10 @@
|
|||||||
"geschichten_filter_document_chip": "Gefiltert nach Brief:",
|
"geschichten_filter_document_chip": "Gefiltert nach Brief:",
|
||||||
"geschichten_filter_remove_document_chip": "Brief {title} aus Filter entfernen",
|
"geschichten_filter_remove_document_chip": "Brief {title} aus Filter entfernen",
|
||||||
"geschichten_empty_for_document": "Noch keine Geschichten zu diesem Brief",
|
"geschichten_empty_for_document": "Noch keine Geschichten zu diesem Brief",
|
||||||
|
"geschichten_published_heading": "Veröffentlicht",
|
||||||
|
"geschichten_drafts_heading": "Entwürfe",
|
||||||
|
"geschichten_draft_badge": "Entwurf",
|
||||||
|
"geschichten_drafts_unfiltered_caption": "(alle Entwürfe)",
|
||||||
"geschichten_back_to_index": "Zurück zu Geschichten",
|
"geschichten_back_to_index": "Zurück zu Geschichten",
|
||||||
"geschichten_published_on": "veröffentlicht am {date}",
|
"geschichten_published_on": "veröffentlicht am {date}",
|
||||||
"journey_compiled_on": "zusammengestellt am {date}",
|
"journey_compiled_on": "zusammengestellt am {date}",
|
||||||
|
|||||||
@@ -1042,6 +1042,10 @@
|
|||||||
"geschichten_filter_document_chip": "Filtered by letter:",
|
"geschichten_filter_document_chip": "Filtered by letter:",
|
||||||
"geschichten_filter_remove_document_chip": "Remove letter {title} from filter",
|
"geschichten_filter_remove_document_chip": "Remove letter {title} from filter",
|
||||||
"geschichten_empty_for_document": "No stories reference this letter yet",
|
"geschichten_empty_for_document": "No stories reference this letter yet",
|
||||||
|
"geschichten_published_heading": "Published",
|
||||||
|
"geschichten_drafts_heading": "Drafts",
|
||||||
|
"geschichten_draft_badge": "Draft",
|
||||||
|
"geschichten_drafts_unfiltered_caption": "(all drafts)",
|
||||||
"geschichten_back_to_index": "Back to stories",
|
"geschichten_back_to_index": "Back to stories",
|
||||||
"geschichten_published_on": "published on {date}",
|
"geschichten_published_on": "published on {date}",
|
||||||
"journey_compiled_on": "compiled on {date}",
|
"journey_compiled_on": "compiled on {date}",
|
||||||
|
|||||||
@@ -1042,6 +1042,10 @@
|
|||||||
"geschichten_filter_document_chip": "Filtrado por carta:",
|
"geschichten_filter_document_chip": "Filtrado por carta:",
|
||||||
"geschichten_filter_remove_document_chip": "Quitar la carta {title} del filtro",
|
"geschichten_filter_remove_document_chip": "Quitar la carta {title} del filtro",
|
||||||
"geschichten_empty_for_document": "Aún no hay historias sobre esta carta",
|
"geschichten_empty_for_document": "Aún no hay historias sobre esta carta",
|
||||||
|
"geschichten_published_heading": "Publicadas",
|
||||||
|
"geschichten_drafts_heading": "Borradores",
|
||||||
|
"geschichten_draft_badge": "Borrador",
|
||||||
|
"geschichten_drafts_unfiltered_caption": "(todos los borradores)",
|
||||||
"geschichten_back_to_index": "Volver a Historias",
|
"geschichten_back_to_index": "Volver a Historias",
|
||||||
"geschichten_published_on": "publicada el {date}",
|
"geschichten_published_on": "publicada el {date}",
|
||||||
"journey_compiled_on": "recopilada el {date}",
|
"journey_compiled_on": "recopilada el {date}",
|
||||||
|
|||||||
@@ -7,12 +7,13 @@ import type { components } from '$lib/generated/api';
|
|||||||
|
|
||||||
type GeschichteRow = Pick<
|
type GeschichteRow = Pick<
|
||||||
components['schemas']['GeschichteSummary'],
|
components['schemas']['GeschichteSummary'],
|
||||||
'id' | 'title' | 'body' | 'type' | 'author' | 'publishedAt'
|
'id' | 'title' | 'body' | 'type' | 'status' | 'author' | 'publishedAt'
|
||||||
>;
|
>;
|
||||||
|
|
||||||
let { geschichte }: { geschichte: GeschichteRow } = $props();
|
let { geschichte }: { geschichte: GeschichteRow } = $props();
|
||||||
|
|
||||||
const isJourney = $derived(geschichte.type === 'JOURNEY');
|
const isJourney = $derived(geschichte.type === 'JOURNEY');
|
||||||
|
const isDraft = $derived(geschichte.status === 'DRAFT');
|
||||||
|
|
||||||
const publishedAt = $derived(formatPublishedAt(geschichte.publishedAt, 'short'));
|
const publishedAt = $derived(formatPublishedAt(geschichte.publishedAt, 'short'));
|
||||||
|
|
||||||
@@ -44,12 +45,20 @@ const authorName = $derived(formatAuthorName(geschichte.author));
|
|||||||
{m.journey_badge_list()}
|
{m.journey_badge_list()}
|
||||||
</span>
|
</span>
|
||||||
{/if}
|
{/if}
|
||||||
|
{#if isDraft}
|
||||||
|
<span
|
||||||
|
data-testid="draft-badge"
|
||||||
|
class="inline-flex items-center rounded-sm border border-line bg-canvas px-1.5 py-px font-sans text-xs font-bold tracking-wide text-ink-3 uppercase"
|
||||||
|
>
|
||||||
|
{m.geschichten_draft_badge()}
|
||||||
|
</span>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Content column -->
|
<!-- Content column -->
|
||||||
<div class="min-w-0 flex-1 p-3 sm:px-4">
|
<div class="min-w-0 flex-1 p-3 sm:px-4">
|
||||||
<!-- Compact meta line (mobile only) -->
|
<!-- Compact meta line (mobile only) -->
|
||||||
<div class="mb-1 flex items-center gap-1.5 sm:hidden">
|
<div class="mb-1 flex flex-wrap items-center gap-1.5 sm:hidden">
|
||||||
<!-- 7px initials render as smudge at this size — a plain color dot reads better -->
|
<!-- 7px initials render as smudge at this size — a plain color dot reads better -->
|
||||||
<span
|
<span
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -57,6 +66,14 @@ const authorName = $derived(formatAuthorName(geschichte.author));
|
|||||||
style="background-color: {personAvatarColor(authorName)}"
|
style="background-color: {personAvatarColor(authorName)}"
|
||||||
></span>
|
></span>
|
||||||
<span class="font-sans text-sm font-semibold text-ink">{authorName}</span>
|
<span class="font-sans text-sm font-semibold text-ink">{authorName}</span>
|
||||||
|
{#if isDraft}
|
||||||
|
<span
|
||||||
|
data-testid="draft-badge-mobile"
|
||||||
|
class="inline-flex shrink-0 items-center rounded-sm border border-line bg-canvas px-1.5 py-px font-sans text-xs font-bold tracking-wide text-ink-3 uppercase"
|
||||||
|
>
|
||||||
|
{m.geschichten_draft_badge()}
|
||||||
|
</span>
|
||||||
|
{/if}
|
||||||
{#if publishedAt}
|
{#if publishedAt}
|
||||||
<span class="ml-auto font-sans text-sm text-ink-3">{publishedAt}</span>
|
<span class="ml-auto font-sans text-sm text-ink-3">{publishedAt}</span>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user