Files
familienarchiv/frontend/src/lib/person
Marcel 23d93d492d
All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m25s
CI / OCR Service Tests (pull_request) Successful in 25s
CI / Backend Unit Tests (pull_request) Successful in 4m14s
CI / fail2ban Regex (pull_request) Successful in 45s
CI / Semgrep Security Scan (pull_request) Successful in 21s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m4s
CI / Unit & Component Tests (push) Successful in 3m49s
CI / OCR Service Tests (push) Successful in 22s
CI / Backend Unit Tests (push) Successful in 3m37s
CI / fail2ban Regex (push) Successful in 44s
CI / Semgrep Security Scan (push) Successful in 22s
CI / Compose Bucket Idempotency (push) Successful in 1m5s
nightly / deploy-staging (push) Successful in 2m1s
refactor(stammbaum): TestNode type alias drops generation cast (#361)
Introduces a local `type TestNode = { id: string; generation: number | null }`
so the three AC3 test fixtures can write `generation: null` directly,
without the awkward `as number | null` cast next to the literal `generation:
2`. Sara cycle-3 cosmetic; same predicate, cleaner reading.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 21:16:49 +02:00
..

person (frontend)

UI for historical family members: typeahead selection, chip display, hover cards, genealogy graph, relationship management.

What this domain owns

Components: PersonTypeahead.svelte, PersonMultiSelect.svelte, PersonChip.svelte, PersonChipRow.svelte, PersonHoverCard.svelte, PersonTypeBadge.svelte, PersonTypeSelector.svelte. Utilities: personFormat.ts (full-name formatting), personLifeDates.ts (birth/death display), person-validation.ts (form validation), personHoverCard.ts (hover-card controller). Sub-folders: genealogy/ (Stammbaum view components), relationship/ (relationship graph components).

What this domain does NOT own

  • Document content — displayed in document/
  • AppUser accounts — managed in user/

Key components

Component Used in Notes
PersonTypeahead.svelte document edit, geschichte, search filters Single-person selector with debounced typeahead. Exported for use by other domains.
PersonMultiSelect.svelte document edit (receivers) Chip-based multi-person selector
PersonChip.svelte document rows, conversation view Compact display chip with link and hover card
PersonHoverCard.svelte person chips Floating card with person summary on hover

Cross-domain imports

  • shared/primitives/ — generic UI primitives
  • shared/hooks/useTypeahead.svelte.ts — typeahead keyboard/focus logic

Accessibility notes

  • PersonChip focus ring: focus-visible:ring-2 focus-visible:ring-brand-navy
  • PersonTypeahead dropdown navigable via keyboard (↑↓ Enter Escape)

Backend counterpart

backend/src/main/java/org/raddatz/familienarchiv/person/README.md