Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Drilling the category tree gave a 0–300 ms feedback gap between click and the next render — no disabled state, no visible change — so users re-tapped (one real session: 9 of 22 clicks were rage clicks, 158 s, zero results). Add an immediate, prominent pending state on all three category views: - grid: track the clicked card in `pendingId`; the button goes disabled + aria-busy and a 28px centred spinner overlays the card (both card variants) until the route swap unmounts the grid. - tree: disable the expand button + aria-busy while children fetch; grow the chevron-slot spinner 14px → 20px and tint it primary. - columns: disable the row + aria-busy while the child column lazy-fetches; same 20px primary spinner. Tests: grid click paints disabled+aria-busy on the tapped card only; tree/columns rows lock + show a spinner while the fetch is in flight. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>