--- phase: 31-mobile-polish plan: 01 subsystem: client-routes tags: [mobile, responsive, icons, accessibility] key-files: created: [] modified: - src/client/routes/items/$itemId.tsx - src/client/routes/threads/$threadId/candidates/$candidateId.tsx metrics: tasks: 2 commits: 3 files_changed: 2 --- # Plan 01 Summary: Item Detail + Candidate Detail Icon Buttons ## What Was Built Added responsive icon-based action buttons to item detail and candidate detail pages. On mobile viewports (below md: breakpoint / 768px), action buttons display as icon-only with 44px minimum touch targets. Desktop viewports retain full text buttons unchanged. ## Commits | Task | Commit | Description | |------|--------|-------------| | 1 | 7effede | Add responsive icon buttons to item detail page | | 2 | b6f12fa | Add responsive icon buttons to candidate detail page | | fix | 97b1936 | Fix biome lint formatting for JSX expressions | ## Changes ### Item Detail ($itemId.tsx) - Duplicate button: paired desktop text / mobile icon (copy icon) - Delete/Remove button: paired desktop text / mobile icon (trash-2 icon), dynamic aria-label for reference vs owned items - Edit button: paired desktop text / mobile icon (pencil icon) ### Candidate Detail ($candidateId.tsx) - Header Edit button: split into desktop (text+icon) / mobile (icon-only) - Pick as Winner button: paired desktop text+icon / mobile icon (trophy icon) - Delete button: paired desktop text+icon / mobile icon (trash-2 icon) ## Deviations None. ## Self-Check: PASSED - [x] All icon buttons have aria-label attributes - [x] All icon buttons have title attributes for tooltip - [x] All icon buttons have min-w-[44px] min-h-[44px] for touch targets - [x] md: breakpoint used consistently (matching BottomTabBar) - [x] Desktop buttons unchanged - [x] Edit mode Cancel/Save buttons not affected - [x] Lint passes - [x] Build succeeds