feat(frontend): new strip components, suggestions dropdown, empty state

CorrespondenzPersonBar (Row 1), CorrespondenzFilterControls (Row 2 with
live count + sort), CorrespondentSuggestionsDropdown (fetch-on-focus,
keyboard nav), SinglePersonHintBar, CorrespondenzEmptyState (recent
persons from localStorage). New i18n shim in messages-extra.ts until
root-owned paraglide files can be regenerated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-03-30 12:50:40 +02:00
parent e942699078
commit 48286b9f77
6 changed files with 547 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
<script lang="ts">
import {
conv_hint_single_person,
conv_hint_single_person_filtered,
conv_strip_sort_newest,
conv_strip_sort_oldest
} from '$lib/messages-extra';
interface Props {
senderName: string;
fromDate?: string;
toDate?: string;
sortDir?: string;
}
let { senderName, fromDate = '', toDate = '', sortDir = 'DESC' }: Props = $props();
let hasDateFilter = $derived(!!(fromDate || toDate));
let sortLabel = $derived(sortDir === 'ASC' ? conv_strip_sort_oldest() : conv_strip_sort_newest());
</script>
<div
class="flex items-center gap-[5px] border-b border-[#FDBA74] bg-[#FFF7ED] px-[18px] py-[6px] text-xs text-[#92400E]"
>
<span class="text-sm" aria-hidden="true">📋</span>
{#if hasDateFilter}
{conv_hint_single_person_filtered({
name: senderName,
from: fromDate ?? '',
to: toDate ?? '',
sortLabel
})}
{:else}
{conv_hint_single_person({ name: senderName })}
{/if}
</div>