Skip to content

fix(dashboard): show member names in full, size months to their digits - #49

Merged
parameshjava merged 2 commits into
mainfrom
fix/member-month-matrix-widths
Aug 8, 2026
Merged

fix(dashboard): show member names in full, size months to their digits#49
parameshjava merged 2 commits into
mainfrom
fix/member-month-matrix-widths

Conversation

@parameshjava

Copy link
Copy Markdown
Owner

Follow-up to #48.

Problem

Two symptoms, one cause. The month columns carried a 3.5rem (56px) floor that most of them never needed — monthly contributions run 3–6 digits, so a column's real content is ~40–54px — and the table stretches to fill its container. Every spare pixel was being shared out as gaps between the numbers, while the member names sat truncated behind an ellipsis you had to hover to read.

Fix

Inverted which columns are elastic:

  • Numeric columns keep a floor only (months 3.5rem2.75rem, Total 4.5rem4rem) and size to their widest amount.
  • Member becomes the slack sinkwidth: 100%. Under table-layout: auto the other columns are satisfied at their content width first and the remainder lands there, so leftover space shows up as trailing whitespace after the names rather than as holes between the months.
  • whitespace-nowrap on the name cell means the column can never be narrower than the longest name (~35 chars: "Rallabandi Venkata Narasimha Charlu"), so names always render in full. The truncating span and its hover title are gone.

This is the ordinary spreadsheet convention — tight numeric columns, an elastic label column — and it's self-correcting: if the roster gains a longer name or an amount grows a digit, the columns re-fit on their own.

Trade-off worth knowing

On a phone there is no slack, so the Member column sits at its content width (~233px of a ~358px viewport) and, being frozen, it stays there — leaving roughly two months visible per screen instead of the ~2.5 that the truncated column allowed. Full names cost about half a month column on mobile. If that reads badly on a real device, a max-w cap below sm restores the old behaviour on phones only, without touching desktop.

Verification

npm run build, npm run lint (one pre-existing warning in pending-interest-panel.tsx), npm test (338 passing) all pass. Widths are from measurement, not a browser — the dashboard is behind Google OAuth.

🤖 Generated with Claude Code

The month columns were carrying a 3.5rem floor that most of them never
needed — monthly contributions run 3–6 digits — and the table stretches
to fill its container, so every spare pixel was being shared out as gaps
between the numbers while the member names sat truncated behind an
ellipsis.

Inverted: the numeric columns keep only a small `minWidth` floor and size
to their widest amount, and the Member column becomes the slack sink
(`width: 100%`). Under `table-layout: auto` the other columns are
satisfied at their content width first and the remainder lands there, so
the months hug their digits and the leftover shows up as trailing space
in the name column instead of as holes in the grid.

`whitespace-nowrap` on the name cell means the column can never be
narrower than the longest name (~35 chars), so names always render in
full — the truncating span and its hover `title` are gone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
aits-fcf-tracker Ready Ready Preview Aug 8, 2026 4:13pm

Uncapped, the name column measures ~233px of a ~358px viewport — and
being frozen, it holds that width permanently, so barely two months stay
on screen. Below `sm` the name cell is capped and ellipsised (full text
still on `title`); `sm:max-w-none` hands the whole name back everywhere
else, where there is slack to absorb it.

The inline `minWidth` drops to match the cap — it cannot be responsive,
and at 11rem it would have overridden the cap outright. On wider screens
the names themselves push the column well past that floor, so nothing
changes above `sm`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@parameshjava

Copy link
Copy Markdown
Owner Author

Added the phone cap (a4795bb) — the trade-off flagged in the description is now closed.

Below sm the name cell is capped at 9.5rem and ellipsised, with the full text on title; sm:max-w-none hands the whole name back everywhere else, where there is slack to absorb it. So desktop keeps full names, phones keep their month columns.

One thing that needed care: the inline minWidth was 11rem, which is wider than the 9.5rem cap — and inline styles can't be responsive, so it would have overridden the cap and left the phone exactly where it started. It drops to 9.5rem to match. Nothing changes above sm, because there the names themselves push the column well past that floor; the value only acts as an empty-state floor.

truncate's overflow: hidden stays applied once uncapped, which is harmless — the span still measures at its full text width under white-space: nowrap, so table auto-layout still sizes the column to the longest name.

npm run build, npm run lint, npm test (338) pass.

@parameshjava
parameshjava merged commit 7b47d3c into main Aug 8, 2026
3 checks passed
@parameshjava
parameshjava deleted the fix/member-month-matrix-widths branch August 8, 2026 16:14
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