diff --git a/frontend/messages/de.json b/frontend/messages/de.json index 3931b8a3..58b1f589 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -337,5 +337,6 @@ "person_danger_zone_heading": "Gefahrenzone", "persons_new_birth_year": "Geburtsjahr", "persons_new_death_year": "Todesjahr", - "persons_new_notes": "Notizen" + "persons_new_notes": "Notizen", + "person_save_changes": "Änderungen speichern" } diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 07dd1e6c..83401231 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -337,5 +337,6 @@ "person_danger_zone_heading": "Danger zone", "persons_new_birth_year": "Birth year", "persons_new_death_year": "Death year", - "persons_new_notes": "Notes" + "persons_new_notes": "Notes", + "person_save_changes": "Save changes" } diff --git a/frontend/messages/es.json b/frontend/messages/es.json index fdb95ee4..cb11ae92 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -337,5 +337,6 @@ "person_danger_zone_heading": "Zona de peligro", "persons_new_birth_year": "Año de nacimiento", "persons_new_death_year": "Año de fallecimiento", - "persons_new_notes": "Notas" + "persons_new_notes": "Notas", + "person_save_changes": "Guardar cambios" } diff --git a/frontend/src/routes/persons/+page.svelte b/frontend/src/routes/persons/+page.svelte index 2ee01017..dbae1ea6 100644 --- a/frontend/src/routes/persons/+page.svelte +++ b/frontend/src/routes/persons/+page.svelte @@ -11,7 +11,6 @@ let { data } = $props(); let q = $state(untrack(() => data.q || '')); let qFocused = $state(false); -// Sync URL → local state after navigation, but not while the user is typing. $effect(() => { if (!qFocused) q = data.q || ''; }); @@ -31,41 +30,22 @@ function handleSearch() {
- -
+ +
-

{m.persons_heading()}

-

- {m.persons_subtitle()} -

-
+

{m.page_title_persons()}

+
- {#if data.canWrite} - - - {m.persons_btn_new()} - - {/if}
- -
- +
+
+ (qFocused = true)} onblur={() => (qFocused = false)} - class="block w-full rounded-sm border border-line bg-surface py-2.5 pr-10 pl-4 font-sans text-sm text-ink placeholder-ink-3 shadow-sm focus:border-ink focus:ring-1 focus:ring-ink focus:outline-none" + class="block w-56 rounded-sm border border-line bg-surface py-2.5 pr-10 pl-4 font-sans text-sm text-ink placeholder-ink-3 shadow-sm focus:border-ink focus:ring-1 focus:ring-ink focus:outline-none" />
+ + + {#if data.canWrite} + + + {m.persons_btn_new()} + + {/if}
{#if data.persons.length === 0} {:else} -
+
{#each data.persons as person (person.id)} - +
- -
- -
-
- {person.firstName?.[0]}{person.lastName?.[0]} -
+
+ {person.firstName?.[0]}{person.lastName?.[0]}
- -
-

- {person.firstName} - {person.lastName} + +

+ {person.firstName} + {person.lastName} +

+ + + {#if person.alias} +

„{person.alias}"

+ {/if} + + + {#if person.birthYear || person.deathYear} +

+ {formatLifeDateRange(person.birthYear, person.deathYear)}

- {#if person.alias} -

"{person.alias}"

- {/if} - {#if person.birthYear || person.deathYear} -

- {formatLifeDateRange(person.birthYear, person.deathYear)} -

- {/if} - {#if (person.documentCount ?? 0) > 0} - - {person.documentCount} - - {/if} -
+ {/if} + + + {#if (person.documentCount ?? 0) > 0} + + {person.documentCount} docs + + {/if}
{/each} diff --git a/frontend/src/routes/persons/PersonsStatsBar.svelte b/frontend/src/routes/persons/PersonsStatsBar.svelte index 67f1e4db..9e733c91 100644 --- a/frontend/src/routes/persons/PersonsStatsBar.svelte +++ b/frontend/src/routes/persons/PersonsStatsBar.svelte @@ -1,6 +1,4 @@ -

- {personsLabel} · {documentsLabel} -

+
+
+ {totalPersons} + + Persons + +
+ · +
+ {totalDocuments} + + Documents + +
+
diff --git a/frontend/src/routes/persons/[id]/PersonCard.svelte b/frontend/src/routes/persons/[id]/PersonCard.svelte index e7f8341e..a14217bc 100644 --- a/frontend/src/routes/persons/[id]/PersonCard.svelte +++ b/frontend/src/routes/persons/[id]/PersonCard.svelte @@ -19,81 +19,70 @@ let { } = $props(); -
-
+
+ +
-
- -
-
-
- {person.firstName[0]}{person.lastName[0]} -
-
- -
-
-

- {person.firstName} - {person.lastName} -

-
- {#if canWrite} - - - {m.btn_edit()} - - {/if} -
-
- -
- {#if person.alias} -
- {m.form_label_alias()} - "{person.alias}" -
- {/if} - - {#if person.birthYear || person.deathYear} -
- - {#if person.birthYear && person.deathYear}{m.person_label_birth_year()} / {m.person_label_death_year()}{:else if person.birthYear}{m.person_label_birth_year()}{:else}{m.person_label_death_year()}{/if} - - - {formatLifeDateRange(person.birthYear, person.deathYear)} - -
- {/if} - - {#if person.notes} -
- {m.person_label_notes()} -

- {person.notes} -

-
- {/if} -
+
+ +
+
+ {person.firstName[0]}{person.lastName[0]}
+ + +

+ {person.firstName} + {person.lastName} +

+ + + {#if person.alias} +

„{person.alias}"

+ {/if} + + + {#if person.birthYear || person.deathYear} +

+ {formatLifeDateRange(person.birthYear, person.deathYear)} +

+ {:else} +
+ {/if} + + + {#if person.notes} +
+ + {m.person_label_notes()} + +

+ {person.notes} +

+
+ {/if} + + + {#if canWrite} + + + {m.btn_edit()} + + {/if}
diff --git a/frontend/src/routes/persons/[id]/PersonDocumentList.svelte b/frontend/src/routes/persons/[id]/PersonDocumentList.svelte index 56905999..0fbe5d95 100644 --- a/frontend/src/routes/persons/[id]/PersonDocumentList.svelte +++ b/frontend/src/routes/persons/[id]/PersonDocumentList.svelte @@ -2,6 +2,7 @@ import { m } from '$lib/paraglide/messages.js'; import { formatDate } from '$lib/utils/date'; import { sortDocumentsByDate, type SortDir } from '$lib/utils/sort'; +import { formatDocumentStatus } from '$lib/utils/documentStatusLabel'; const DOCS_PREVIEW_LIMIT = 5; @@ -106,7 +107,7 @@ const visibleDocuments = $derived( ? 'border-accent/50 bg-accent/20 text-ink' : 'border-yellow-200 bg-yellow-50 text-yellow-800'}" > - {doc.status} + {formatDocumentStatus(doc.status)} - {m.btn_save()} + {m.person_save_changes()}