diff --git a/src/components/clinical-dashboard/differentials-home.tsx b/src/components/clinical-dashboard/differentials-home.tsx index 81d914bc27..12fa4d3fbf 100644 --- a/src/components/clinical-dashboard/differentials-home.tsx +++ b/src/components/clinical-dashboard/differentials-home.tsx @@ -824,10 +824,10 @@ function SearchResultsView({ /> -
+
Compare selected ({selectedCount}) diff --git a/src/components/clinical-dashboard/global-mockup-search-shell.tsx b/src/components/clinical-dashboard/global-mockup-search-shell.tsx index 30ce1c45c7..31cc310b23 100644 --- a/src/components/clinical-dashboard/global-mockup-search-shell.tsx +++ b/src/components/clinical-dashboard/global-mockup-search-shell.tsx @@ -321,11 +321,6 @@ function GlobalMockupSearchShellClient({ (desktopSearchPlacement === "hero" || isFormsOnlyShell) && isStandaloneModeHome ? "hero" : "default" } searchComposerVisible={shouldShowSearchComposer} - workflowCopyText={ - isDifferentialPresentationWorkflow - ? "Acute confusion / encephalopathy differential comparison. Stabilise ABCs, check BGL, sats, attention test, collateral, and review medications/substances before handoff." - : undefined - } desktopHomeComposerSlotId={isStandaloneModeHome ? modeHomeDesktopComposerSlotId : undefined} heroComposerFromTablet={isStandaloneModeHome} /> diff --git a/src/components/clinical-dashboard/master-search-header.tsx b/src/components/clinical-dashboard/master-search-header.tsx index 5d90778715..81704772c2 100644 --- a/src/components/clinical-dashboard/master-search-header.tsx +++ b/src/components/clinical-dashboard/master-search-header.tsx @@ -19,8 +19,6 @@ import { Check, CheckCircle2, ChevronDown, - Cloud, - Copy, FileText, Filter, Globe2, @@ -34,7 +32,6 @@ import { Send, ShieldCheck, Sparkles, - AlertCircle, ArrowLeft, X, Lock, @@ -199,7 +196,6 @@ export function MasterSearchHeader({ mobileSearchPlacement = "default", desktopSearchPlacement = "default", searchComposerVisible = true, - workflowCopyText, desktopHomeComposerSlotId, heroComposerFromTablet = false, mobileLeadingAction = "menu", @@ -237,7 +233,6 @@ export function MasterSearchHeader({ mobileSearchPlacement?: "default" | "bottom"; desktopSearchPlacement?: "default" | "hero"; searchComposerVisible?: boolean; - workflowCopyText?: string; desktopHomeComposerSlotId?: string; /** Portal the composer into the hero slot from the tablet breakpoint (sm) up, * rather than the default desktop (lg) breakpoint. */ @@ -1229,20 +1224,6 @@ export function MasterSearchHeader({
{isWorkflowHeader ? ( <> -
- - - Local only - - - - Offline ready - - - - Source pending review - -
- ) : null} {!isWorkflowHeader ? ( diff --git a/src/components/differentials/differential-detail-page.tsx b/src/components/differentials/differential-detail-page.tsx index 9056fcb0e4..f3e8f21ea8 100644 --- a/src/components/differentials/differential-detail-page.tsx +++ b/src/components/differentials/differential-detail-page.tsx @@ -402,12 +402,6 @@ function HeaderChrome() {
- - Local only - - - Source pending review -
-
- - - Compare ({acuteConfusionPresentationWorkflow.selectedCount} selected) - +
@@ -529,12 +550,11 @@ function MobileTabs() { export function DifferentialPresentationWorkflowPage({ query = "" }: { query?: string }) { const workflow = acuteConfusionPresentationWorkflow; const candidates = getCandidates(); - const selectedCandidates = candidates.filter((candidate) => candidate.selected); return (
@@ -605,23 +625,21 @@ export function DifferentialPresentationWorkflowPage({ query = "" }: { query?: s + {/* Tablet / mid (md–lg): safety leads, then the scrollable table, then + the review panels reflow into a grid below — no fixed side rail. */} +
+ +
+
+ +
diff --git a/tests/ui-tools.spec.ts b/tests/ui-tools.spec.ts index 60a153e8b0..eeee5c89fa 100644 --- a/tests/ui-tools.spec.ts +++ b/tests/ui-tools.spec.ts @@ -550,15 +550,19 @@ test.describe("Clinical KB applications launcher", () => { await expect(page.getByRole("button", { name: "Mode Differentials" })).toBeVisible(); await expect(page.getByTestId("differential-presentation-page")).toBeVisible(); await expect(page.getByRole("heading", { level: 1, name: "Acute confusion / encephalopathy" })).toBeVisible(); - await expect(page.getByText("Selected differentials (6 of 8)")).toBeVisible(); + await expect( + page.getByLabel("Differential review sidebar").getByText("Selected differentials (6 of 8)"), + ).toBeVisible(); await expect(page.getByRole("link", { name: "Back" })).toHaveAttribute("href", "/differentials"); await expect(page.getByRole("heading", { name: "Safety snapshot" }).first()).toBeVisible(); await expect(page.getByText("Service details")).toHaveCount(0); await expect(page.getByText("Transport order")).toHaveCount(0); - await expect(page.getByText("Local only")).toBeVisible(); - await expect(page.getByText("Offline ready")).toBeVisible(); - await expect(page.getByText("Source pending review").first()).toBeVisible(); - await expect(page.locator("header").getByRole("button", { name: "Copy after review" })).toBeVisible(); + // Page-specific status now lives in the page (Source status panel), not the + // shared global header — the header carries no differential trust chips. + await expect(page.locator("header").getByText("Local only")).toHaveCount(0); + await expect(page.locator("header").getByText("Offline ready")).toHaveCount(0); + await expect(page.locator("header").getByText("Source pending review")).toHaveCount(0); + await expect(page.locator("header").getByRole("button", { name: "Copy after review" })).toHaveCount(0); await expect(page.getByTestId("global-search-input")).toHaveCount(0); const tableScrolls = await page.getByTestId("differential-comparison-scroll").evaluate((element) => { @@ -569,6 +573,14 @@ test.describe("Clinical KB applications launcher", () => { expect(desktopTableBox?.width ?? 0).toBeGreaterThan(900); await expectNoPageHorizontalOverflow(page); + // Mid-size (tablet): the scrollable comparison table replaces the phone + // accordions, and the review panels reflow below it instead of a side rail. + await page.setViewportSize({ width: 900, height: 1000 }); + await gotoLauncher(page, "/differentials/presentations"); + await expect(page.getByTestId("differential-comparison-scroll")).toBeVisible(); + await expect(page.getByLabel("Mobile differential comparison")).toBeHidden(); + await expectNoPageHorizontalOverflow(page); + await page.setViewportSize({ width: 390, height: 844 }); await gotoLauncher(page, "/differentials/presentations");