diff --git a/web/src/components/overlay/detail/SearchDetailDialog.tsx b/web/src/components/overlay/detail/SearchDetailDialog.tsx index 43c5681e5..e38ae469f 100644 --- a/web/src/components/overlay/detail/SearchDetailDialog.tsx +++ b/web/src/components/overlay/detail/SearchDetailDialog.tsx @@ -37,7 +37,6 @@ import { FaChevronLeft, FaChevronRight, FaMicrophone, - FaRedo, FaCheck, FaTimes, } from "react-icons/fa"; @@ -92,6 +91,7 @@ import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; import { DialogPortal } from "@radix-ui/react-dialog"; import { useDetailStream } from "@/context/detail-stream-context"; import { PiSlidersHorizontalBold } from "react-icons/pi"; +import { HiSparkles } from "react-icons/hi"; const SEARCH_TABS = ["snapshot", "tracking_details"] as const; export type SearchTab = (typeof SEARCH_TABS)[number]; @@ -1122,7 +1122,7 @@ function ObjectDetailsTab({ const canRegenerate = !!( config?.cameras[search.camera].objects.genai.enabled && search.end_time ); - const showAiPlaceholder = !!( + const showGenAIPlaceholder = !!( config?.cameras[search.camera].objects.genai.enabled && !search.end_time && (config.cameras[search.camera].objects.genai.required_zones.length === 0 || @@ -1396,16 +1396,16 @@ function ObjectDetailsTab({ )}
-
+
{t("details.description.label")}
-
+
- - - {t("details.button.regenerate.title")} - - - + + + + {t("details.button.regenerate.title")} + + {search.has_snapshot && ( {!isEditingDesc ? ( - showAiPlaceholder ? ( + showGenAIPlaceholder ? (
@@ -1504,27 +1504,42 @@ function ObjectDetailsTab({ onBlur={handleDescriptionBlur} autoFocus /> -
- - +
+ + + + + + {t("button.save", { ns: "common" })} + + + + + + + + + {t("button.cancel", { ns: "common" })} + +
)}