Refactor combatant row: single-click rename, book icon for stat blocks

Replace 250ms click timer and double-click detection with immediate
single-click rename for all combatant types. Add a BookOpen icon before
the name on bestiary rows as the dedicated stat block trigger. Remove
auto-show stat block on turn advance. Update specs to match: consistent
collapse/expand terminology, book icon requirements, no row-click stat
block behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lukas
2026-03-15 16:47:02 +01:00
parent e68145319f
commit 46b444caba
7 changed files with 77 additions and 177 deletions

View File

@@ -419,16 +419,15 @@ Acceptance scenarios:
3. **Given** any combatant row, **When** hovered and concentration is inactive, **Then** the Brain icon becomes visible.
4. **Given** the remove button appears on hover, **Then** no layout shift occurs — space is reserved.
**Story ROW-3 — Row Click Opens Stat Block (P1)**
As a DM, I want to click anywhere on a bestiary combatant row to open its stat block so I have a large click target and a cleaner row without a dedicated book icon.
**Story ROW-3 — Book Icon Opens Stat Block (P1)**
As a DM, I want a dedicated book icon on bestiary combatant rows so I can open the stat block with an explicit, discoverable control — while clicking the name always starts a rename.
Acceptance scenarios:
1. **Given** a combatant has a linked bestiary creature, **When** the user clicks the name text or empty row space, **Then** the stat block panel opens.
2. **Given** the user clicks an interactive element (initiative, HP, AC, condition icon, "+", "x", concentration), **Then** the stat block does NOT open — the element's own action fires.
3. **Given** a combatant does NOT have a linked creature, **When** the row is clicked, **Then** nothing happens.
4. **Given** viewing any bestiary combatant row, **Then** no BookOpen icon is visible.
5. **Given** a bestiary combatant row, **When** the user hovers over non-interactive areas, **Then** the cursor indicates clickability.
6. **Given** the stat block is already open for a creature, **When** the same row is clicked, **Then** the panel closes (toggle behavior).
1. **Given** a combatant has a linked bestiary creature, **When** the user views the row, **Then** a small BookOpen icon is visible next to the name.
2. **Given** a combatant does NOT have a linked creature, **When** the user views the row, **Then** no BookOpen icon is displayed.
3. **Given** a bestiary combatant row, **When** the user clicks the BookOpen icon, **Then** the stat block panel opens for that creature.
4. **Given** the user clicks the combatant's name, **Then** inline rename mode is entered — the stat block does NOT open.
5. **Given** the stat block is already open for a creature, **When** the user clicks its BookOpen icon again, **Then** the panel closes (toggle behavior).
### Requirements
@@ -436,10 +435,10 @@ Acceptance scenarios:
- **FR-081**: The "+" condition button MUST be hidden at rest and appear on row hover (or touch/focus on touch devices).
- **FR-082**: The remove (x) button MUST be hidden at rest and appear on row hover (or touch/focus on touch devices).
- **FR-083**: Layout space for the remove button MUST be reserved so appearing/disappearing does not cause layout shifts.
- **FR-084**: Clicking non-interactive areas of a bestiary combatant row MUST open the stat block panel.
- **FR-085**: Clicking interactive elements (initiative, HP, AC, conditions, "+", "x", concentration) MUST NOT trigger the stat block — only the element's own action.
- **FR-086**: The BookOpen icon MUST be removed from the combatant row.
- **FR-087**: Bestiary combatant rows MUST show a pointer cursor on hover over non-interactive areas.
- **FR-084**: Bestiary-linked combatant rows MUST display a BookOpen icon as the dedicated stat block trigger (see also `specs/004-bestiary/spec.md`, FR-062).
- **FR-085**: Clicking the combatant name MUST enter inline rename mode, not open the stat block.
- **FR-086**: Non-bestiary combatant rows MUST NOT display the BookOpen icon.
- **FR-087**: The BookOpen icon MUST have a tooltip ("View stat block") and `aria-label="View stat block"` for accessibility.
- **FR-088**: All existing interactions (condition add/remove, HP adjustment, AC editing, initiative editing/rolling, concentration toggle, combatant removal) MUST continue to work.
- **FR-089**: Browser scrollbars MUST be styled to match the dark UI theme (thin, dark-colored scrollbar thumbs).
- **FR-090**: Turn navigation (Previous/Next) MUST use StepBack/StepForward icons in outline button style with foreground-colored borders. Utility actions (d20/trash) MUST use ghost button style to create clear visual hierarchy.
@@ -452,8 +451,8 @@ Acceptance scenarios:
- When a combatant has so many conditions that they exceed the available inline space, they wrap within the name column; row height increases but width does not.
- The condition picker dropdown positions relative to the "+" button, flipping vertically if near the viewport edge.
- When the stat block panel is already open and the user clicks the same row again, the panel closes.
- Clicking the initiative area starts editing; it does not open the stat block.
- When the stat block panel is already open and the user clicks the same BookOpen icon again, the panel closes.
- Clicking the combatant name starts inline rename; it does not open the stat block.
- Tablet-width screens (>= 768 px / Tailwind `md`): popovers and inline edits MUST remain accessible and not overflow or clip.
---