diff --git a/src/app/labs/page.tsx b/src/app/labs/page.tsx
index d0b685f1c..8ef9835e3 100644
--- a/src/app/labs/page.tsx
+++ b/src/app/labs/page.tsx
@@ -3,12 +3,18 @@
import { useCallback, useEffect, useState } from "react";
import { useRouter } from "next/navigation";
import { useQueryClient } from "@tanstack/react-query";
-import { FlaskConical, Loader2, Plus } from "lucide-react";
+import { FlaskConical, Loader2, MoreVertical, Plus } from "lucide-react";
import { BiomarkerManager } from "@/components/labs/biomarker-manager";
import { LabForm } from "@/components/labs/lab-form";
import { LabList } from "@/components/labs/lab-list";
import { Button } from "@/components/ui/button";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@/components/ui/dropdown-menu";
import { PullToRefreshIndicator } from "@/components/ui/pull-to-refresh-indicator";
import { ResponsiveSheet } from "@/components/ui/responsive-sheet";
import { useAuth } from "@/hooks/use-auth";
@@ -25,6 +31,9 @@ export default function LabsPage() {
const { t } = useTranslations();
const [dialogOpen, setDialogOpen] = useState(false);
const [manageOpen, setManageOpen] = useState(false);
+ // Sticky-footer slot element for the add-result sheet (filled by the
+ // ResponsiveSheet `footer` ref so the form portals its action row there).
+ const [addFooterEl, setAddFooterEl] = useState(null);
const refreshVisible = useCallback(
() => queryClient.invalidateQueries({ type: "active" }),
@@ -61,17 +70,7 @@ export default function LabsPage() {
{t("labs.subtitle")}
-
-
+
+ {/* Secondary actions fold into one overflow kebab beside the primary
+ Add, mirroring the medication-card header (one cluster, not a
+ two-button row). */}
+
+
+
+
+
+ setManageOpen(true)}>
+
+ {t("labs.biomarker.manage")}
+
+
+
@@ -87,8 +107,10 @@ export default function LabsPage() {
onOpenChange={setDialogOpen}
title={t("labs.addResult")}
description={t("labs.addDescription")}
+ footer={}
>
{
setDialogOpen(false);
queryClient.invalidateQueries({
diff --git a/src/app/measurements/page.tsx b/src/app/measurements/page.tsx
index c1dfcfacd..1689ed852 100644
--- a/src/app/measurements/page.tsx
+++ b/src/app/measurements/page.tsx
@@ -120,7 +120,10 @@ export default function MeasurementsPage() {
{t("measurements.subtitle")}
-