From 634552e5eacc36b7e548c872589b5903238072f8 Mon Sep 17 00:00:00 2001 From: "[._.]/ Adam Eivy" Date: Wed, 2 Sep 2026 06:23:13 +0000 Subject: [PATCH 1/3] fix: give four- and five-column stat grids a phone breakpoint (#5679) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eight grids hard-coded four to five columns with no breakpoint prefix, so at 360px each card got ~65px of outer width and its label wrapped to four or five lines. AgentList's stat bar was the worst case: it is the first thing on the Agents page, so the entire above-the-fold region was unreadable. Each grid now gets a narrow phone default and opts into the wide layout at a breakpoint. The two Big Five readouts stay five-across — they are a fixed five-trait bar chart whose cells are one bar plus a five-character label — but shrink the gap and the label below `sm`. `responsiveGridConventions.test.js` enforces the rule tree-wide rather than per component: a className carrying a bare `grid-cols-N` for N >= 4 must also carry a prefixed `...:grid-cols-*`. The allowlist holds the month grid (inherently seven days) and the two Big Five grids, and a companion assertion fails if an allowlisted file stops having the grid it was exempted for. --- client/src/AGENTS.md | 2 +- client/src/components/IconPicker.jsx | 2 +- client/src/components/agents/AgentList.jsx | 4 +- .../src/components/cos/DailyTrendsChart.jsx | 2 +- .../src/components/cos/tabs/LearningTab.jsx | 2 +- .../digital-twin/InterviewAnalysisCard.jsx | 4 +- .../digital-twin/tabs/ImportTab.jsx | 4 +- .../src/components/sync/SyncDetailDrawer.jsx | 2 +- client/src/pages/ChiefOfStaff.jsx | 2 +- client/src/responsiveGridConventions.test.js | 159 ++++++++++++++++++ 10 files changed, 171 insertions(+), 12 deletions(-) create mode 100644 client/src/responsiveGridConventions.test.js diff --git a/client/src/AGENTS.md b/client/src/AGENTS.md index c2ef406c94..45ee3151ac 100644 --- a/client/src/AGENTS.md +++ b/client/src/AGENTS.md @@ -6,7 +6,7 @@ These apply to React/Vite client code. Universal constraints (functional program - **No window.alert/confirm** - use inline confirmations or toast notifications - **Form labels need `htmlFor`/`id` pairing** - when adding a settings/config form field, wire `