Final integration step. The page shell is now a thin composition of useCanaryTokens + the previously-extracted children: - CanaryTokens.tsx: 1,334 -> 210 LOC. Page owns only the pure-UI state (tab, search/state/scope filters, modal visibility, drawer selection, local fileDrops log) and the thin handlers that translate hook results into confirm/alert prompts. Initial parallel fetch + deleteBlob mutation moved to useCanaryTokens in the prior commit. - Modals plug directly into the hook's optimistic helpers (prependToken / prependBlob / markTokenRevoked) so the page doesn't reach into the data shape. Coverage floor bumped after the split: lines 11 -> 14 functions 10 -> 13 branches 8 -> 11 statements 11 -> 13 Phase 3 final scoreboard: 28 test files, 131 tests, all green.
2.2 KiB
2.2 KiB