refactor(ui): adopt PageHeader on mode pages and Button in sidebar - #2426
Conversation
Mode homes and compare/detail routes still hand-rolled headers, and the sidebar used raw buttons. Adopt PageHeader and Button so those surfaces share the same chrome and type weight as the rest of the shell. Co-authored-by: Cursor <cursoragent@cursor.com>
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Warning Review limit reachedNext included review available in 34 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 102 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (21)
Comment |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_1011ccb9-654a-4b03-804e-eac4e33e6237) |
CI triageCI failed on this PR. Automated classification of the 5 failed job(s):
Compared with main CI run #14242 (failure). Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger. |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_5806d4e1-2a57-4710-9836-6f939bd0891d) |
…ader # Conflicts: # src/components/differentials/differential-detail-page.tsx
- Drop aria-hidden from the factsheet print portal: it is already display:none on screen via CSS, and hiding it from the accessibility tree also strips the printed document's semantic outline (h1, row headers) that issue #295 deliberately guards. - Restore the "Side-by-side review" eyebrow on the specifier compare page header, dropped when the hand-rolled header was swapped for PageHeader.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_0ccff217-47d6-47b5-974b-09eba7f24ea2) |
…ader # Conflicts: # docs/design-system/COMPONENTS.md
Uh oh!
There was an error while loading. Please reload this page.
Resolve conflicts in favour of main, which has since landed the same design-system intent through the shared recipes and Button/PageHeader adoption (PRs #2420, #2424, #2425, #2426): - ui-primitives.tsx: main split the module into primitive-recipes/*; the branch's compact-meta edits to `interactiveCompact` and `tableMicroActionRow` are already present verbatim in recipes.ts. - specifier compare/map/record/builder, differential-detail: main's `primaryControl` / `Button` adoption carries the same `min-h-tap` floor through `controlBase`, so the hand-rolled classes are superseded. - formulation-builder: main's `fieldControlPlain` recipe supersedes the hand-rolled textarea classes. - pathways-screen: main's therapy-pathways redesign (#2413) already removed the arbitrary spacing literals this branch was ratcheting. Regenerate the contract baseline against the merged tree.
Two failures the merge surfaced, both from this branch replaying work that main has since taken in a different shape: - factsheet-detail-page: drop `aria-hidden="true"` from the print portal. It came from this branch's local replay of PR #2426, but the version that merged to main deliberately does not carry it — hiding the portal removes the printed document's `<h1>` and its fact-table row headers from the accessibility tree, which is what `tests/factsheet-detail-header.dom.test.tsx` exists to prevent. - design-system-contract-utils: ratchet the globals.css raw CSS z-index pin from 8 (set by #2421) to 4. The motion/z tokenisation in this branch legitimately paid that debt down; the pin is a floor to lower, not raise. Evidence: 898 test files / 10862 tests passed; lint, typecheck and check:design-system-contract clean.
Summary
Verification
pm run format on changed files (included in this commit)
pm run verify:pr-local
Verification not run: approved 6-PR split publication; local format applied to the replayed slice. �erify:pr-local, lint, typecheck, unit, and hosted CI were left unrun by request.
UI verification not run: �erify:ui left unrun by request.
pm run verify:ui when UI, routing, styling, browser behavior, reduced-motion, or forced-colors behavior changed
pm run verify:release before release or handoff confidence claims
For retrieval, ranking, selection, chunking, source/citation rendering, or answer-contract changes, �erify:pr-local runs eval:rag:offline automatically. Run the offline command directly during iteration before spending a live eval.
pm run eval:retrieval:quality (must stay 36/36) when retrieval, ranking, selection, chunking, or scoring behavior changed** — CI cannot run it (needs live keys), so run it locally and paste the summary. A metadata/governance-weighting change once buried correct docs (recall 1.0→0.76) and only this eval caught it.
pm run eval:rag -- --limit 15 +
pm run eval:quality -- --rag-only when answer generation, the synthesis prompt, or answer post-processing changed (grounded-supported must not drop; citation-failure 0)
pm run check:production-readiness when clinical workflow, privacy, environment, Supabase, source governance, or deployment behavior changed
pm run check:deployment-readiness when deployment startup, hosting, or rollout behavior changed
Risk and rollout
Complete this section for clinical, data, API, auth/privacy, workflow, dependency, build, or deployment changes.
Clinical Governance Preflight
N/A — design-system tap/chrome/tokens only; no ingestion, answer generation, search/ranking, source rendering, document access, privacy, production env, or clinical-output contract changes.
Notes
Note
Low Risk
UI-only refactors to shared header and button components; no auth, data, or retrieval changes, with minor visual/regression risk on sidebar and catalogue headers.
Overview
Standardizes clinical mode chrome by replacing hand-rolled page headers with
PageHeader/InformationPageHeaderacross dictionary, differentials, factsheets, formulation, and specifiers (including compare queues, map/builder flows, and diagnosis detail).ClinicalSidebarswaps many raw<button>elements for the sharedButtonprimitive (ghost/primary, icons,testId).Alongside layout consolidation, interactive and link copy shifts from
font-bold/font-extraboldtowardfont-semiboldfor consistent tap-weight. Formulation builder textareas usefocus-visibleoutline instead of ring styling. Design-system adoption manifest and COMPONENTS inventory reflect newButtonandPageHeaderimport sites. A small favourites mockup tweak applies--text-mutedfor readable body copy per DS-P0-06.Reviewed by Cursor Bugbot for commit 884fbbb. Configure here.