Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
2bb2f5f
feat(mockups): restyle the shared filter sheet, and give the segment …
claude Aug 12, 2026
2f69b23
chore(agents): commit the next dev generated agent-rules block
claude Aug 12, 2026
1fa0113
docs(review): record filter sheet restyle handoff
claude Aug 12, 2026
1f08781
Merge branch 'main' into claude/filter-popup-design-mockups-x6sbjv
BigSimmo Aug 12, 2026
e34a617
Derive CURRENT_SUBSET from searchFormulationMechanisms
BigSimmo Aug 12, 2026
9434ffa
fix(mockups): ground filter scope counts in search
BigSimmo Aug 12, 2026
7054858
Merge remote-tracking branch 'refs/remotes/origin/main' into HEAD
BigSimmo Aug 12, 2026
442b709
Merge commit 'bbcbe673e' into HEAD
BigSimmo Aug 12, 2026
b34be0c
Merge main into PR #1846 and resolve conflicts
BigSimmo Aug 12, 2026
50b5538
Merge remote-tracking branch 'origin/main' into claude/filter-popup-d…
claude Aug 12, 2026
899bd34
Merge remote-tracking branch 'origin/claude/filter-popup-design-mocku…
claude Aug 12, 2026
56b20ef
Merge branch 'main' into claude/filter-popup-design-mockups-x6sbjv
BigSimmo Aug 12, 2026
0d8d3db
fix(ledger): restore two review rows dropped by the concurrent main sync
claude Aug 12, 2026
9a051fd
Merge remote-tracking branch 'origin/claude/filter-popup-design-mocku…
claude Aug 12, 2026
faa8093
Merge branch 'main' into claude/filter-popup-design-mockups-x6sbjv
BigSimmo Aug 12, 2026
d1d0ffc
ci: add one-use PR 1846 conflict resolver
BigSimmo Aug 12, 2026
a5e5ba7
Merge main into PR #1846 and resolve ledger conflict
github-actions[bot] Aug 12, 2026
a394efd
Merge latest main into PR #1846
BigSimmo Aug 12, 2026
facb7db
ci: add one-use PR 1846 review fixer
BigSimmo Aug 12, 2026
9f3d20f
fix(mockups): address PR #1846 review feedback and sync main
github-actions[bot] Aug 12, 2026
e31bb57
chore(ci): apply final PR 1846 review fixes
BigSimmo Aug 12, 2026
7960623
fix(ci): make PR 1846 review repair deterministic
BigSimmo Aug 12, 2026
e39acb3
fix(ci): target final PR 1846 review repair precisely
BigSimmo Aug 12, 2026
3fdb14f
fix(ci): isolate PR 1846 dense-list repair
BigSimmo Aug 12, 2026
549c6f4
fix(ci): target PR 1846 dense-list repair precisely
BigSimmo Aug 12, 2026
07247af
fix(mockups): scale dense bars to active scope
github-actions[bot] Aug 12, 2026
cbcb344
chore(ci): remove superseded PR 1846 repair workflow
BigSimmo Aug 12, 2026
f5b123a
chore(ci): remove final PR 1846 repair workflow
BigSimmo Aug 12, 2026
e470c7d
Merge branch 'main' into claude/filter-popup-design-mockups-x6sbjv
BigSimmo Aug 12, 2026
9dd9dde
Merge branch 'main' into claude/filter-popup-design-mockups-x6sbjv
BigSimmo Aug 12, 2026
297241b
Merge branch 'main' into claude/filter-popup-design-mockups-x6sbjv
BigSimmo Aug 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions docs/branch-review-ledger.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/site-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -1018,6 +1018,7 @@ This file is generated by `npm run docs:update` (or `npm run sitemap:update` dir
- `/mockups/favourites-review-console` - Route discovered from app directory Source: `src/app/mockups/favourites-review-console/page.tsx`.
- `/mockups/favourites-set-board` - Route discovered from app directory Source: `src/app/mockups/favourites-set-board/page.tsx`.
- `/mockups/favourites-set-navigator` - Route discovered from app directory Source: `src/app/mockups/favourites-set-navigator/page.tsx`.
- `/mockups/filter-sheet-restyle` - Route discovered from app directory Source: `src/app/mockups/filter-sheet-restyle/page.tsx`.
- `/mockups/medication-prescribing` - Route discovered from app directory Source: `src/app/mockups/medication-prescribing/page.tsx`.
- `/mockups/mode-dropdown` - Route discovered from app directory Source: `src/app/mockups/mode-dropdown/page.tsx`.
- `/mockups/phone-inpage-navigation` - Route discovered from app directory Source: `src/app/mockups/phone-inpage-navigation/page.tsx`.
Expand Down
32 changes: 32 additions & 0 deletions mockups/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,35 @@ has to be unpicked afterwards.
The facet engine, chips, band and sheet shell are imported from the round-one study rather than
copied — the ~1KB bitmask table would otherwise be duplicated against a finite `mockups` bundle
budget, and two studies quoting different numbers for the same catalogue would discredit both.

### Round three — restyle, and a job for the segment bar (2026-08-12)

Runnable study at [`/mockups/filter-sheet-restyle`](../src/app/mockups/filter-sheet-restyle/page.tsx). Rounds one and
two settled the information architecture; this one is about craft, drawn on the **formulation** sheet because that is
the specimen that stresses the layout hardest — four domain themes, twelve domains, twelve mechanisms, four presets, thirteen domain chips, and the longest title in the app.

**The segment bar carries scope, not a verb.** Round two used it for "narrow these / start a new search", which is a
mode set once and rarely changed — a poor use of the most valuable strip in the sheet. Here it is
`These results 2 | All mechanisms 12`, with live counts on both segments. That is a decision the reader makes
constantly and which nothing in the product currently answers: filtering two results by twelve domains is close to
pointless, and today the only way to reach the full set is to clear the query and lose it. It also makes the empty
state recoverable — the commit button becomes "Show N in all mechanisms" instead of a dead end.

| Style | Shape | Best for |
| -------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| A — Refined clinical | Shipped structure, craft fixed: tinted header, eyebrow/title/live-count, ghost close, uniform counted chips | Cheapest adoption, no new containers |
| B — Themed cards | Each theme a card with icon, label and the library's own description, tinting when it holds a selection | Many options without a word cloud |
| C — Dense list | Full-width rows, proportion bar, right-aligned count column, sticky group headings | Scanning to a known domain |

Three defects the study documents, all verifiable in source:

1. **Biological, Social and Cultural match zero of the twelve mechanisms.** They are offered as domain chips and can
never return anything. Counts expose this on sight; without them it is invisible.
2. **`formulationDomainGroups` already exists** in `src/lib/formulation.ts` — four themes, each with a written
description — and the sheet ignores it, rendering one flat ragged wrap of twelve chips.
3. **`formulationSearchPresets.slice(0, 4)` of five** means "If it is not perfect" is unreachable from the filter.

One deliberate departure from the services study: the per-option count here is the **intrinsic** count (how many
mechanisms carry that domain), not "the total if I added this". Domains are a single OR group, so the union contract
reports the unchanged total for an empty domain — Cultural would read `7`, indistinguishable from a full one. The
commit button remains the thing that predicts the outcome.
13 changes: 13 additions & 0 deletions src/app/mockups/filter-sheet-restyle/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import type { Metadata } from "next";

import { FilterSheetRestyleMockupsPage } from "@/components/filter-sheet-restyle-mockups";

export const metadata: Metadata = {
title: "Filter sheet restyle · three styles - Clinical KB",
description:
"Three style directions for the shared filter sheet, drawn on the formulation specimen, with the segmented bar repurposed as a result-scope control.",
};

export default function FilterSheetRestyleMockupPage() {
return <FilterSheetRestyleMockupsPage />;
}
6 changes: 6 additions & 0 deletions src/app/mockups/mockups-layout-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
// beside it — that is the concept under judgement, so the shared composer
// above it would be a second, real search bar competing with the proposal.
const isServicesFilterOptionsMockup = pathname === "/mockups/services-filter-options";
// Draws its own formulation band and an in-frame filter sheet in every device
// frame; the shared composer would read as a second, real search bar over a
// study about the control that opens from that band.
const isFilterSheetRestyleMockup = pathname === "/mockups/filter-sheet-restyle";
const isPhoneInPageNavigationMockup = pathname === "/mockups/phone-inpage-navigation";
// Draws its own composer in every frame, and the notice under study is the one
// the shared composer renders — showing both would put two different privacy
Expand Down Expand Up @@ -94,6 +98,7 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isSearchBandDirectionsMockup &&
!isServicesFilterRefinedMockup &&
!isServicesFilterOptionsMockup &&
!isFilterSheetRestyleMockup &&
!isTherapyNavigationMockup &&
!isWarningConsolidationMockup &&
!isWarningLineMockup &&
Expand All @@ -111,6 +116,7 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isSearchBandDirectionsMockup &&
!isServicesFilterRefinedMockup &&
!isServicesFilterOptionsMockup &&
!isFilterSheetRestyleMockup &&
!isPhoneInPageNavigationMockup &&
!isTherapyNavigationMockup &&
!isWarningConsolidationMockup &&
Expand Down
Loading
Loading