Skip to content

Dress /bills in the house style - #89

Merged
mikaalnaik merged 1 commit into
mainfrom
mikaal/bills-brand-redesign
Sep 16, 2026
Merged

mikaalnaik merged 1 commit into
mainfrom
mikaal/bills-brand-redesign

Conversation

@mikaalnaik

Copy link
Copy Markdown
Contributor

The bills index was a shadcn island — rounded cards floating on the linen canvas, a boxed filter sidebar, type that ignored the brand scale. It read as a different product from /memos or /tracker. This rebuilds it out of the parts every other index page uses.

Layout

  • The bordered page frame (mx-[10px] my-[10px] border) and the shared PageHeader, matching /memos, /posts, /polls.
  • Hairline-ruled section on the standard 1080px measure; sidebar narrowed to 280px.
  • Dropped the dead <Markdown>{getParliament45Header()}</Markdown> — that helper returns undefined.

Surfaces

White panels on the linen ground, the way /tracker already does it, so the page isn't beige on beige.

  • Each bill is its own white card with a full hairline border and gap-3 between; border darkens to charcoal on hover, fill lifts to linen-50.
  • Sidebar is a white panel capped by a linen-100 header strip; the fields inside it sit on linen-50 so they read as recessed rather than dissolving into the white.

Filter sidebar

Rewritten in house markup instead of shadcn Card/Input/Checkbox/Select: square appearance-none checkboxes, type-label group headings in <details> disclosures reusing the site's answer-reveal transition, the memos-style search box, and a native styled select. Props and the FilterState/FilterOptions contract are unchanged.

Cards and type

  • Mono Bill C-12 · Sponsor eyebrow, type-h4 title going auburn on hover, square mono tags in place of the coloured pills, a "Read the analysis" footer.
  • The Judgement pill now uses type-label/type-label-sm. This also reaches the bill detail page, where it reads more consistently.
  • FAQ modal moved onto the brand type scale and the linen canvas.

Housekeeping

  • PageHeader grows an optional action slot so the FAQ trigger can sit beside the title. Additive; existing callers untouched.
  • Deleted bills/components/ui/{badge,checkbox,input,label,select}.tsx — no remaining callers once the filter panel stopped using them.

Testing

tsc --noEmit and npm run lint are clean (4 pre-existing warnings, 0 errors). /bills and /bills/C-12 both return 200 against the local dev server.

Not verified visually. No browser was available in the session — the Chrome extension wasn't connected and there's no Chromium binary on the machine — so this needs an eyeball at desktop and mobile width before merge.

Follow-up

The detail page (/bills/[id]) is still the old bare max-w-[1100px] layout with shadcn Cards, so it now looks a step behind the index. Left out of scope.

🤖 Generated with Claude Code

The bills index was a shadcn island: rounded cards floating on the linen
canvas, a boxed filter sidebar, and type that ignored the brand scale. It
read as a different product from /memos or /tracker.

Rebuild the page out of the same parts every other index uses — the
bordered page frame, the shared PageHeader, hairline-ruled sections on a
1080px measure — and give the two data-heavy regions a real surface:
white panels on the linen ground, the way /tracker already does it, so
the page is not beige on beige.

The filter sidebar drops shadcn Card/Input/Checkbox/Select for house
markup: square appearance-none checkboxes, type-label group headings in
<details> disclosures reusing the site's answer-reveal transition, and a
native select. Its props are unchanged. The five primitives that left
behind no other caller are deleted.

PageHeader grows an optional `action` slot so the FAQ trigger can sit
beside the title; existing callers are untouched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mikaalnaik
mikaalnaik merged commit bd59c6b into main Sep 16, 2026
1 check passed
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