# Data Model: Combatant Row Declutter **Feature**: 019-combatant-row-declutter **Date**: 2026-03-06 ## No Data Model Changes This feature is a purely visual/interaction refactor within the web adapter layer. No domain entities, application state, or persistence formats are affected. ### Existing entities (unchanged) - **Combatant**: `id`, `name`, `initiative`, `maxHp`, `currentHp`, `ac`, `conditions`, `isConcentrating` — no fields added, removed, or modified. ### Existing callbacks (unchanged) - `onAdjustHp(id: CombatantId, delta: number)` — same signature, now triggered from popover instead of inline QuickHpInput. - `onSetAc(id: CombatantId, value: number | undefined)` — same signature, now triggered from click-to-edit instead of always-visible input. ### UI State (component-local only) New component-local state introduced in the HP popover (not persisted): - **popoverOpen**: boolean — whether the HP adjustment popover is visible. - **inputValue**: string — the draft delta value in the popover input. New component-local state in the AC click-to-edit (not persisted): - **editing**: boolean — whether the inline AC edit input is visible. - **draft**: string — the draft AC value being edited. These follow the same patterns as existing component-local state (`EditableName.editing`, `ConditionPicker` open state).