Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions docs/site-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -1194,9 +1194,13 @@ This file is generated by `npm run docs:update` (or `npm run sitemap:update` dir
- `/mockups/development` - Route discovered from app directory Source: `src/app/mockups/development/page.tsx`.
- `/mockups/development/clinical-trust` - Route discovered from app directory Source: `src/app/mockups/development/clinical-trust/page.tsx`.
- `/mockups/development/ledger` - Route discovered from app directory Source: `src/app/mockups/development/ledger/page.tsx`.
- `/mockups/dictionary-az-filter` - Route discovered from app directory Source: `src/app/mockups/dictionary-az-filter/page.tsx`.
- `/mockups/dictionary-az-state` - Route discovered from app directory Source: `src/app/mockups/dictionary-az-state/page.tsx`.
- `/mockups/dictionary-browse-header` - Route discovered from app directory Source: `src/app/mockups/dictionary-browse-header/page.tsx`.
- `/mockups/dictionary-browse-header-compact` - Route discovered from app directory Source: `src/app/mockups/dictionary-browse-header-compact/page.tsx`.
- `/mockups/dictionary-control-row` - Route discovered from app directory Source: `src/app/mockups/dictionary-control-row/page.tsx`.
- `/mockups/dictionary-heading-controls` - Route discovered from app directory Source: `src/app/mockups/dictionary-heading-controls/page.tsx`.
- `/mockups/dictionary-trailing-toolbar` - Route discovered from app directory Source: `src/app/mockups/dictionary-trailing-toolbar/page.tsx`.
- `/mockups/document-navigation-contract` - Route discovered from app directory Source: `src/app/mockups/document-navigation-contract/page.tsx`.
- `/mockups/document-navigation-final` - Route discovered from app directory Source: `src/app/mockups/document-navigation-final/page.tsx`.
- `/mockups/document-navigation-final-review` - Route discovered from app directory Source: `src/app/mockups/document-navigation-final-review/page.tsx`.
Expand Down
60 changes: 60 additions & 0 deletions mockups/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,66 @@ row in place on the page. Shared mockup chrome is suppressed because each frame
The tab rail reads Terms · Topics · More rather than Search · Browse · More: this round assumes Search and Browse have
merged into one destination, with the site-wide composer as the mode’s only search surface.

## Dictionary — compact trailing toolbar (2026-08-24)

Runnable study at [`/mockups/dictionary-trailing-toolbar`](../src/app/mockups/dictionary-trailing-toolbar/page.tsx). Two frames.

The original Filter band stays on browse and search (count, optional query, Filter). Compact Terms / Abbreviations and A–Z sit **under that band on the right**. Topics live inside Filter, not on the title row.

Shared mockup chrome is suppressed because each frame draws its own top bar, mode nav and composer.

## Dictionary — browse vs search (recommended split, 2026-08-24)

Runnable study at [`/mockups/dictionary-az-state`](../src/app/mockups/dictionary-az-state/page.tsx). Two frames only.

Filter is the shared `ResultFilterTrigger`. Abbreviations live inside that sheet as Show. A–Z is browse navigation: while the query is empty, A–Z and Filter sit together in the trailing corner of the heading row; as soon as a search runs, A–Z stands down and Filter occupies the original results band. Tap the composer (or the clear X) to feel the handoff.

| State | A–Z | Filter |
| ------ | ----------------------------------- | --------------------------------------- |
| Browse | Trailing corner, paired with Filter | Original trigger, same trailing cluster |
| Search | Hidden | Original trigger, in the results band |

The earlier three-home study at [`/mockups/dictionary-az-filter`](../src/app/mockups/dictionary-az-filter/page.tsx) asked A–Z to live on a search screen. This page is the recommended alternative.

Shared mockup chrome is suppressed because each frame draws its own top bar, mode nav and composer.

## Dictionary — original Filter at the top, three A–Z homes (2026-08-24)

Runnable study at [`/mockups/dictionary-az-filter`](../src/app/mockups/dictionary-az-filter/page.tsx). Three frames only.

The Filter button is the shared `ResultFilterTrigger` used on every search page, sitting in the results band under the title. Abbreviations leave the page and become a Show lens inside that sheet. A–Z is the remaining placement question.

| Direction | A–Z home | Trade-off |
| --------- | ------------------------------------------ | --------------------------------------------------------------------- |
| 01 Title | Next to **Clinical terms** | Band stays count + query + Filter, like other modes |
| 02 Band | Beside Filter in the original results band | Two narrowing controls on the one line that already carries the query |
| 03 Filter | Inside Filter, under Show | Quietest band; A–Z is one extra tap |

Shared mockup chrome is suppressed because each frame draws its own top bar, mode nav and composer.

## Dictionary — Filter in the bar, Terms and A–Z beside the title (2026-08-23)

Runnable study at [`/mockups/dictionary-heading-controls`](../src/app/mockups/dictionary-heading-controls/page.tsx).
This is a layout question, not a production change.

Round 1 asked whether Filter can leave the control row. Round 2 moved the query display **under** the Terms / Abbreviations buttons once text is there. Round 3 asks where **A–Z** goes during that search: production and directions 03–06 hide it, because a letter jump does not rank a result set. If it must stay visible, 07–10 try four homes on the 06 query-field chrome.

| Direction | When text is there | Trade-off |
| --------------------- | ---------------------------------------------------------------- | --------------------------------------------------- |
| Now | Band above the toggle | Count and query share one truncated line |
| 01 Persistent bar | Toggle on the heading; Filter always in a slim bar | A bar is present even with no query |
| 02 Ribbon only | Toggle on the heading; no bar until a search | You cannot facet the idle catalogue |
| 03 Band under buttons | Title → toggle → production band | Query still truncates against Filter |
| 04 Query chip | Title → toggle → count + dismissible query chip + Filter | Chip and Filter can wrap at 320 px |
| 05 Query owns a line | Title → toggle → full query, then count / clear / Filter | Extra row, but both words of the query stay visible |
| 06 Query field | Title → toggle → query field + Filter; count lives on the toggle | Field is a second composer echo |
| 07 Beside the toggle | A–Z stays on the button row during search | Competes with Abbreviations on a 390 px row |
| 08 In the query row | A–Z sits with Filter beside the query field | The field is narrower; query may truncate |
| 09 Next to the title | A–Z is a heading companion | Title row wraps on 320 px |
| 10 Inside Filter | No page chip; letter jump lives in the Filter sheet | A–Z is one extra tap, and not visible while reading |

Shared mockup chrome is suppressed because each frame draws its own top bar, mode nav and composer.

## Phone Choose mode sheet YES comps

Runnable study at [`/mockups/phone-mode-sheet-yes`](../src/app/mockups/phone-mode-sheet-yes/page.tsx): design review of the shipping phone mode sheet plus **YES 01 perfected** (sectioned clinical list — shipping recommendation) and YES 02 (icon deck alternate). Shared mockup chrome is suppressed so only the in-frame sheet is judged.
Expand Down
5 changes: 5 additions & 0 deletions src/app/mockups/dictionary-az-filter/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { DictionaryAzFilterMockupsPage } from "@/components/dictionary-az-filter-mockups";

export default function DictionaryAzFilterMockupRoute() {
return <DictionaryAzFilterMockupsPage />;
}
5 changes: 5 additions & 0 deletions src/app/mockups/dictionary-az-state/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { DictionaryAzStateMockupsPage } from "@/components/dictionary-az-state-mockups";

export default function DictionaryAzStateMockupRoute() {
return <DictionaryAzStateMockupsPage />;
}
5 changes: 5 additions & 0 deletions src/app/mockups/dictionary-heading-controls/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { DictionaryHeadingControlsMockupsPage } from "@/components/dictionary-heading-controls-mockups";

export default function DictionaryHeadingControlsMockupRoute() {
return <DictionaryHeadingControlsMockupsPage />;
}
5 changes: 5 additions & 0 deletions src/app/mockups/dictionary-trailing-toolbar/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { DictionaryTrailingToolbarMockupsPage } from "@/components/dictionary-trailing-toolbar-mockups";

export default function DictionaryTrailingToolbarMockupRoute() {
return <DictionaryTrailingToolbarMockupsPage />;
}
17 changes: 6 additions & 11 deletions src/app/mockups/mockups-layout-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,10 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
const isStandaloneDocumentFlow = pathname === "/mockups/document-search";
const isUniversalSearchRedesignMockup = pathname === "/mockups/universal-search-redesign";
const isSearchHeadingMockup = pathname === "/mockups/search-heading";
// Draws its own phone/desktop frames with a top bar, mode nav and composer in
// every frame, because the header under study sits directly beneath them.
const isDictionaryBrowseHeaderMockup = pathname.startsWith("/mockups/dictionary-browse-header");
// Same reason: this study draws its own tab rail, page card and site-wide
// composer inside every frame, so shared chrome would read as a second real
// header and a second real search bar over the row under review.
const isDictionaryControlRowMockup = pathname === "/mockups/dictionary-control-row";
// Dictionary chrome studies draw their own top bar, mode nav, page card and
// composer inside every frame, so shared mockup chrome would read as a second
// real header and a second real search bar over the row under review.
const isDictionaryChromeStudyMockup = pathname.startsWith("/mockups/dictionary-");
// Renders the results header inside its own device frames; the shared composer
// would read as a second, real search bar over the study.
const isSearchRefineAdaptiveMockup = pathname === "/mockups/search-refine-adaptive";
Expand Down Expand Up @@ -139,8 +136,7 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isSidebarLiveMockup &&
!isCaringContactMockup &&
!isCarePlanMockup &&
!isDictionaryBrowseHeaderMockup &&
!isDictionaryControlRowMockup
!isDictionaryChromeStudyMockup
}
chromeVisible={
!isSourceOverlayRedesignMockup &&
Expand All @@ -165,8 +161,7 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isSidebarLiveMockup &&
!isCaringContactMockup &&
!isCarePlanMockup &&
!isDictionaryBrowseHeaderMockup &&
!isDictionaryControlRowMockup
!isDictionaryChromeStudyMockup
}
>
{children}
Expand Down
Loading
Loading