Skip to content

feat(ui): re-clothe Bridge issue card onto the DS .cx-card (RIG-2126) - #403

Open
rigel-mintaka wants to merge 2 commits into
mainfrom
compass-ux/rig-2126-bridge-card-cx-card
Open

feat(ui): re-clothe Bridge issue card onto the DS .cx-card (RIG-2126)#403
rigel-mintaka wants to merge 2 commits into
mainfrom
compass-ux/rig-2126-bridge-card-cx-card

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

This PR is part of a stack containing 2 PRs:

  1. main
  2. "feat(ui): re-clothe Bridge issue card onto the DS .cx-card (RIG-2126)" (this PR)
  3. style(ui): route CheckRuns pane CI pips through the --cx-ci-* namespace (RIG-2127) #406

T3 of the Bridge re-clothe (RIG-2111). Adopts the design-system .cx-card primitive for the Bridge issue card, matching the rigel.build reference's flat, quiet-key board card (design record docs/designs/product/compass-bridge-reclothe/design.md, G5/G6).

What changed

  • Wire design/components/card.css into the cascade (App.tsx, after base.css/badge-glyph.css, before app.css — preserving the frozen cutover load order).
  • IssueCard container flips class="card" + classList={{ selected }}class="cx-card" + data-selected (presence toggle, mirroring the established data-compact idiom). The priority left-stripe is dropped — selection now owns the accent left rule (card.css).
  • .card-issue quieted (G6): --cx-text-faint + 0.5px tracking, drop the accent color / 600 weight. .card-title is left to inherit --cx-text at rest and --cx-text-bright when the card is selected (bright-title by inheritance).
  • Board-scoped layout block (F3): .bridge-cell > .cx-card re-adds the dense flex column (gap: 6px, padding: 9px 10px, left-aligned), overriding the DS card's block/12px default for the board only, scoped so it never leaks to other .cx-card surfaces.
  • Legacy .card rules deleted from app.css (base/hover/active/selected/priority) — the grandfathered raw transitions die with them; the .cx-card transition is already tokenized. Sub-parts (.card-top/-issue/-pr/-title/-foot/-author/-diff) are kept.

Cross-surface note (F6)

DoneView renders the shared .card-issue/.card-pr/.card-diff sub-parts, so the quiet-key restyle intentionally propagates to the Done view (one convention, not two). done.png is regenerated to cover it.

Tests / baselines

  • Three container-selector sites updated for the .card.cx-card rename: boot-fixture.test.ts, Bridge.test.tsx, visual-smoke.spec.ts.
  • Regenerated exactly the three card-bearing baselines (bridge.png, bridge-card.png, done.png); the other seven shots are byte-identical.
  • vitest green (the 4 env-secrecy failures are the known secondary-workspace .git environmental pattern — pass in the default workspace + GHA CI); typecheck + stylelint green.

Spec-impact: none. Refs RIG-2126

Co-authored-by: Matt Wilkinson matt@rigel.build

@linear-code

linear-code Bot commented Aug 19, 2026

Copy link
Copy Markdown

RIG-2126

@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-ux-rig-2126-bridge-c.compass-eng-docs.pages.dev

Deployed from compass-ux/rig-2126-bridge-card-cx-card at d58ad7e.

rigel-mintaka and others added 2 commits August 19, 2026 00:24
T3 of the Bridge re-clothe (RIG-2111). Adopts the design-system `.cx-card` primitive for the Bridge issue card, matching the rigel.build reference's flat, quiet-key board card (design record `docs/designs/product/compass-bridge-reclothe/design.md`, G5/G6).

### What changed

- **Wire `design/components/card.css` into the cascade** (`App.tsx`, after `base.css`/`badge-glyph.css`, before `app.css` — preserving the frozen cutover load order).
- **`IssueCard` container** flips `class="card"` + `classList={{ selected }}` → `class="cx-card"` + `data-selected` (presence toggle, mirroring the established `data-compact` idiom). The priority left-stripe is dropped — selection now owns the accent left rule (`card.css`).
- **`.card-issue` quieted** (G6): `--cx-text-faint` + 0.5px tracking, drop the accent color / 600 weight. `.card-title` is left to inherit `--cx-text` at rest and `--cx-text-bright` when the card is selected (bright-title by inheritance).
- **Board-scoped layout block (F3):** `.bridge-cell > .cx-card` re-adds the dense flex column (`gap: 6px`, `padding: 9px 10px`, left-aligned), overriding the DS card's block/12px default for the board only, scoped so it never leaks to other `.cx-card` surfaces.
- **Legacy `.card` rules deleted** from `app.css` (base/hover/active/selected/priority) — the grandfathered raw transitions die with them; the `.cx-card` transition is already tokenized. Sub-parts (`.card-top/-issue/-pr/-title/-foot/-author/-diff`) are kept.

### Cross-surface note (F6)

`DoneView` renders the shared `.card-issue`/`.card-pr`/`.card-diff` sub-parts, so the quiet-key restyle intentionally propagates to the Done view (one convention, not two). `done.png` is regenerated to cover it.

### Tests / baselines

- Three container-selector sites updated for the `.card` → `.cx-card` rename: `boot-fixture.test.ts`, `Bridge.test.tsx`, `visual-smoke.spec.ts`.
- Regenerated exactly the three card-bearing baselines (`bridge.png`, `bridge-card.png`, `done.png`); the other seven shots are byte-identical.
- vitest green (the 4 `env-secrecy` failures are the known secondary-workspace `.git` environmental pattern — pass in the default workspace + GHA CI); typecheck + stylelint green.

Spec-impact: none. Refs RIG-2126

Co-authored-by: Matt Wilkinson <matt@rigel.build>
Review follow-up (low finding, PR #403): the T3 selection encoding `data-selected={sel ? "" : undefined}` had no unit test, so an inverted toggle or a dropped attribute would ship green (the pre-T3 `classList={{ selected }}` had the same gap; this closes it).

Selects a fixture issue via the store and asserts exactly one `.cx-card[data-selected]` renders, and that selecting a different issue keeps it at exactly one — red-checked by inverting the toggle (9 cards match instead of 1).

Co-authored-by: Matt Wilkinson <matt@rigel.build>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant