7.0.1 Mobile Responsiveness Pass — Design¶
Ticket: PHON-199 Date: 2026-07-21 Scope: Therapy Pack editor + landing/nav — primary MVP flow, end-to-end on a phone-width viewport (390px reference). Aesthetic/responsiveness patch before the 7.0.0 staging build is promoted to prod.
Problem¶
Live staging review at 390px surfaced two crowding defects plus one adjacent issue in the pack editor:
- My Materials dialog rows — each
ListItemuses MUIsecondaryActionholding four icon buttons (Open / Rename / Duplicate / Delete), absolutely-positioned and vertically centered over a 3-line text block (title + twocaptionlines) with onlypr: 2of clearance. On narrow widths the icon cluster overlaps the metadata text ("N contrasts · N sentences"), which is cramped and partly unreadable/untappable. - "+ Add pair" row (
ContrastAddField) — a single non-wrapping flex row with twomaxWidth: 140fields + the Add button. On narrow viewports it compresses instead of wrapping, and the "Add pair" label breaks across two lines. - Adjacent:
ManualAddFieldandSentenceAddFieldshare the same non-wrapping pattern;PackSectionheader row (title + "Add from {tool}" button) does not wrap.
Landing target tiles, AppHeader, and AppSidebar (temporary drawer on mobile) already respond correctly — verified live, left unchanged.
Changes¶
Fix 1 — MyPacksDialog.tsx¶
- Convert each row's primary content to a tappable
ListItemButtonwhose action is Open the set (primary action). - Replace the four inline icon buttons with a single trailing overflow menu (
MoreVert→Menu) containing Rename / Duplicate / Delete. One trailing control eliminates the overlap and declutters desktop as well. Rename continues to swap an inlineTextField. - Make the
DialogfullScreenat thexsbreakpoint (useMediaQuery(theme.breakpoints.down('sm'))) so the list has full phone width.
Fix 2 — add-field rows (ContrastAddField, ManualAddField, SentenceAddField)¶
Consistent responsive treatment:
- Container: flexWrap: 'wrap', alignItems handled so wrapped items align left.
- Inputs: flex: 1 with a min basis; drop the hard maxWidth cap at xs, keep a cap at sm+ so fields don't stretch awkwardly on desktop.
- Add button: flexShrink: 0 so it wraps to its own full-width line on xs rather than compressing/breaking its label.
Fix 3 — PackSection.tsx¶
- Header
StackgetsflexWrap: 'wrap'+gapso the "Add from {tool}" button drops below the title on narrow widths instead of crowding it.
Version¶
- Bump
7.0.0 → 7.0.1inpackages/web/frontend/package.jsonandpackages/web/workers/package.json(the product-metadata drift test requires both). All display strings derive fromPRODUCT.version; no literals to touch.
Non-goals¶
- No changes to the six standalone tools, export pipeline, data, or API.
- No redesign of the editor information architecture — this is a responsiveness/crowding patch only.
Verification¶
- Re-screenshot the editor, My Materials dialog, and add-pair row at 390px against a local build.
npm run build+ type-check + lint (frontend);npm test(workers) before opening the PR.- PR targets
develop(staging), consistent with git-flow.