# 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`
