refactor(card-item): tokenize list-mode palette (cleanup Brief 1) #128

Merged
varutasu merged 1 commit from cleanup-brief-1-card-item-list-mode into main 2026-06-04 17:55:36 -04:00

1 commit

Author SHA1 Message Date
Randall Stillwell
fa0f6b3a43 refactor(card-item): tokenize list-mode palette (Brief 1)
Brief 1 of cleanup-card-item-list-and-share-modal-palette convoy.
Pure token sweep across lines ~181-295 of components/CardItem.js
(the list-mode branch only — grid-mode at L290+ stays untouched
per Brief 1 § Known constraints).

Migrations:
- Outer row container:
  - `border-purple-500 bg-purple-50 shadow-md` (selected) →
    `borderColor: 'var(--accent-ember)' + backgroundColor:
    'rgba(255, 110, 0, 0.08)' + boxShadow: 'var(--rim-light-inner)'`.
  - `border-gray-200 hover:border-gray-300 hover:shadow-sm` (default) →
    `borderColor: 'var(--border)' + nav-item-hover` class for the
    ember-tinted hover state from the unify convoy.
  - `rounded-lg` → `rounded-xl` (convoy-wide rounding consistency).
- Image placeholder:
  - `bg-gray-200` → `var(--bg-tertiary)`.
  - `text-gray-400` on the "No Image" fallback → `var(--text-secondary)`.
- Card info text:
  - `text-gray-900` → `var(--text-primary)` (card name).
  - `text-gray-600` / `text-gray-500` → `var(--text-secondary)` (set/rarity/type).
- Game badge:
  - `bg-blue-100 text-blue-800` → `var(--bg-tertiary)` + `var(--text-primary)`
    + `1px solid var(--border)` for visible delimiter in both themes.
- Price:
  - `text-green-600` → `var(--accent-flame)`. Decision: chose brand-warm
    over semantic-green because the rest of the row is on the ember
    palette and a single warm-tone price tag reads as "primary value"
    rather than "positive delta from baseline". Easy to revert to
    `#16a34a` literal if dark-mode reviewers prefer the green.
- Favorite button:
  - `text-red-500 hover:text-red-600` (favorited) →
    `var(--accent-ember)`.
  - `text-gray-400 hover:text-red-500` (default) →
    `var(--text-secondary)` + nav-item-hover.
- Add-to-collection button:
  - `text-blue-600 hover:text-blue-700 hover:bg-blue-50` →
    `var(--accent-ember)` + nav-item-hover.
- Add-to-deck button:
  - `text-green-600 hover:text-green-700 hover:bg-green-50` →
    `var(--accent-flame)` + nav-item-hover. Distinguishes from
    add-to-collection by warm-tier (flame vs ember).
- `rounded-lg` on all action buttons → `rounded-xl`.

Verification:
- `sed -n '181,295p' components/CardItem.js | grep -nE
  'bg-(purple|blue|gray|red|green)-[0-9]|text-(...)|border-(...)'`
  → 0 matches. 
- `npm run lint` passes (1 pre-existing unrelated warning).
- `npm run test:run`: 118/118 tests pass.

Grid-mode (L290+) intentionally untouched per Brief 1 scope.
The 5 remaining palette hardcodes in CardItem.js are all in
grid-mode getRarityEffects() at L150/157/172/350/359 — out of
scope for this brief; the convoy didn't target those because the
grid render path has its own visual treatment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 16:49:17 -05:00