diff --git a/src/components/clinical-dashboard/differentials-home.tsx b/src/components/clinical-dashboard/differentials-home.tsx
index 548b224f..dcc9caa0 100644
--- a/src/components/clinical-dashboard/differentials-home.tsx
+++ b/src/components/clinical-dashboard/differentials-home.tsx
@@ -883,7 +883,6 @@ function SearchResultsView({
sortValue={sortValue}
onSortChange={setSortValue}
/>
-
) : null}
+
+
Clinical decision support only. Review before use.
diff --git a/src/components/clinical-dashboard/document-search-results.tsx b/src/components/clinical-dashboard/document-search-results.tsx
index dce916db..41889eb7 100644
--- a/src/components/clinical-dashboard/document-search-results.tsx
+++ b/src/components/clinical-dashboard/document-search-results.tsx
@@ -896,7 +896,6 @@ function DocumentSearchResultsPanelImpl({
onSortChange={setSortValue}
/>
-
>
) : null}
{recordMatchCount > 0 ||
@@ -1140,6 +1139,8 @@ function DocumentSearchResultsPanelImpl({
>
)}
+
+ {trimmedQuery && !shouldShowHome ? : null}
);
}
diff --git a/src/components/clinical-dashboard/favourites-command-library-page.tsx b/src/components/clinical-dashboard/favourites-command-library-page.tsx
index f47cc51b..7e5a8147 100644
--- a/src/components/clinical-dashboard/favourites-command-library-page.tsx
+++ b/src/components/clinical-dashboard/favourites-command-library-page.tsx
@@ -1005,8 +1005,6 @@ export function FavouritesCommandLibraryPage({ query = "" }: { query?: string })
-
-
)}
+
+
-
Medication search
@@ -693,6 +692,8 @@ function MedicationResults({
})}
+
+
-
{query.trim() && displayedMatches.length === 0 ? (
>
)}
+
>
) : null}
diff --git a/src/components/formulation/formulation-home-page.tsx b/src/components/formulation/formulation-home-page.tsx
index a64b0e3f..00f95761 100644
--- a/src/components/formulation/formulation-home-page.tsx
+++ b/src/components/formulation/formulation-home-page.tsx
@@ -202,8 +202,6 @@ function FormulationResults({ query }: { query: string }) {
-
-
)}
+
+
);
diff --git a/src/components/services/services-navigator-page.tsx b/src/components/services/services-navigator-page.tsx
index d4a3fc94..17097e55 100644
--- a/src/components/services/services-navigator-page.tsx
+++ b/src/components/services/services-navigator-page.tsx
@@ -515,7 +515,6 @@ export function ServicesNavigatorPage() {
sortValue={sortValue}
onSortChange={setSortValue}
/>
-
>
}
sidebar={
@@ -644,6 +643,7 @@ export function ServicesNavigatorPage() {
>
)}
+
);
}
diff --git a/tests/ui-universal-search.spec.ts b/tests/ui-universal-search.spec.ts
index 478c4e98..eca05478 100644
--- a/tests/ui-universal-search.spec.ts
+++ b/tests/ui-universal-search.spec.ts
@@ -228,6 +228,36 @@ test.describe("universal search typeahead", () => {
expect(new URL((await universalRequest).url()).searchParams.get("domains")?.split(",")).not.toContain("services");
});
+ test("places submitted cross-mode matches after the owning mode results", async ({ page }) => {
+ // "13YARN" matches the demo service fixture so service-search-results renders.
+ // Use an inline mock that echoes back the same query so universal-also-matches renders.
+ await page.route(/\/api\/search\/universal(?:\?.*)?$/, async (route) => {
+ const url = new URL(route.request().url());
+ const mode = url.searchParams.get("mode") ?? "services";
+ const q = url.searchParams.get("q") ?? "13YARN";
+ await fulfillUniversalSearch(route, {
+ ...universalPayload,
+ query: q,
+ contextMode: mode,
+ preferredDomains: [],
+ domainOrder: universalPayload.groups.map((g) => g.kind),
+ });
+ });
+ await page.goto("/services?q=13YARN&run=1", { waitUntil: "domcontentloaded" });
+
+ const results = page.getByTestId("service-search-results");
+ const alsoMatches = page.getByTestId("universal-also-matches");
+ await expect(results).toBeVisible();
+ await expect(alsoMatches).toBeVisible();
+ expect(
+ await alsoMatches.evaluate((node) => {
+ const resultNode = document.querySelector('[data-testid="service-search-results"]');
+ return Boolean((resultNode?.compareDocumentPosition(node) ?? 0) & Node.DOCUMENT_POSITION_FOLLOWING);
+ }),
+ "universal-also-matches panel must appear after primary results in the DOM",
+ ).toBe(true);
+ });
+
test("shows submitted cross-mode matches on phones outside hidden desktop headers", async ({ page }) => {
await page.setViewportSize({ width: 390, height: 844 });
await mockUniversalSearch(page);