diff --git a/web/src/pages/Settings.tsx b/web/src/pages/Settings.tsx index 1141763ef..cd723bf4c 100644 --- a/web/src/pages/Settings.tsx +++ b/web/src/pages/Settings.tsx @@ -17,8 +17,6 @@ import { } from "@/components/ui/alert-dialog"; import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import { Drawer, DrawerContent, DrawerTrigger } from "@/components/ui/drawer"; -import MotionTuner from "@/components/settings/MotionTuner"; -import MasksAndZones from "@/components/settings/MasksAndZones"; import { Button } from "@/components/ui/button"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import useOptimisticState from "@/hooks/use-optimistic-state"; @@ -26,14 +24,16 @@ import { isMobile } from "react-device-detect"; import { FaVideo } from "react-icons/fa"; import { CameraConfig, FrigateConfig } from "@/types/frigateConfig"; import useSWR from "swr"; -import General from "@/components/settings/General"; import FilterSwitch from "@/components/filter/FilterSwitch"; import { ZoneMaskFilterButton } from "@/components/filter/ZoneMaskFilter"; import { PolygonType } from "@/types/canvas"; -import ObjectSettings from "@/components/settings/ObjectSettings"; import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; import scrollIntoView from "scroll-into-view-if-needed"; import Authentication from "@/components/settings/Authentication"; +import GeneralSettingsView from "@/views/settings/GeneralSettingsVIew"; +import ObjectSettingsView from "@/views/settings/ObjectSettingsView"; +import MotionTunerView from "@/views/settings/MotionTunerView"; +import MasksAndZonesView from "@/views/settings/MasksAndZonesView"; export default function Settings() { const settingsViews = [ @@ -156,17 +156,19 @@ export default function Settings() { )}
- {page == "general" && } - {page == "debug" && } + {page == "general" && } + {page == "debug" && ( + + )} {page == "masks / zones" && ( - )} {page == "motion tuner" && ( - diff --git a/web/src/components/settings/General.tsx b/web/src/views/settings/GeneralSettingsVIew.tsx similarity index 95% rename from web/src/components/settings/General.tsx rename to web/src/views/settings/GeneralSettingsVIew.tsx index 31510cd8e..57c110fb2 100644 --- a/web/src/components/settings/General.tsx +++ b/web/src/views/settings/GeneralSettingsVIew.tsx @@ -4,8 +4,8 @@ import { Switch } from "@/components/ui/switch"; import { useCallback, useEffect } from "react"; import { Toaster } from "sonner"; import { toast } from "sonner"; -import { Separator } from "../ui/separator"; -import { Button } from "../ui/button"; +import { Separator } from "../../components/ui/separator"; +import { Button } from "../../components/ui/button"; import useSWR from "swr"; import { FrigateConfig } from "@/types/frigateConfig"; import { del as delData } from "idb-keyval"; @@ -17,11 +17,11 @@ import { SelectGroup, SelectItem, SelectTrigger, -} from "../ui/select"; +} from "../../components/ui/select"; const PLAYBACK_RATE_DEFAULT = isSafari ? [0.5, 1, 2] : [0.5, 1, 2, 4, 8, 16]; -export default function General() { +export default function GeneralSettingsView() { const { data: config } = useSWR("config"); const clearStoredLayouts = useCallback(() => { diff --git a/web/src/components/settings/MasksAndZones.tsx b/web/src/views/settings/MasksAndZonesView.tsx similarity index 97% rename from web/src/components/settings/MasksAndZones.tsx rename to web/src/views/settings/MasksAndZonesView.tsx index 628f99d5e..6fea1b91b 100644 --- a/web/src/components/settings/MasksAndZones.tsx +++ b/web/src/views/settings/MasksAndZonesView.tsx @@ -12,7 +12,7 @@ import { import { PolygonCanvas } from "./PolygonCanvas"; import { Polygon, PolygonType } from "@/types/canvas"; import { interpolatePoints, parseCoordinates } from "@/utils/canvasUtil"; -import { Skeleton } from "../ui/skeleton"; +import { Skeleton } from "@/components/ui/skeleton"; import { useResizeObserver } from "@/hooks/resize-observer"; import { LuExternalLink, LuPlus } from "react-icons/lu"; import { @@ -22,29 +22,33 @@ import { } from "@/components/ui/hover-card"; import copy from "copy-to-clipboard"; import { toast } from "sonner"; -import { Toaster } from "../ui/sonner"; -import { Button } from "../ui/button"; -import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip"; -import Heading from "../ui/heading"; -import ZoneEditPane from "./ZoneEditPane"; -import MotionMaskEditPane from "./MotionMaskEditPane"; -import ObjectMaskEditPane from "./ObjectMaskEditPane"; -import PolygonItem from "./PolygonItem"; +import { Toaster } from "@/components/ui/sonner"; +import { Button } from "@/components/ui/button"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import Heading from "@/components/ui/heading"; +import ZoneEditPane from "@/components/settings/ZoneEditPane"; +import MotionMaskEditPane from "@/components/settings/MotionMaskEditPane"; +import ObjectMaskEditPane from "@/components/settings/ObjectMaskEditPane"; +import PolygonItem from "@/components/settings/PolygonItem"; import { Link } from "react-router-dom"; import { isDesktop } from "react-device-detect"; import { StatusBarMessagesContext } from "@/context/statusbar-provider"; -type MasksAndZoneProps = { +type MasksAndZoneViewProps = { selectedCamera: string; selectedZoneMask?: PolygonType[]; setUnsavedChanges: React.Dispatch>; }; -export default function MasksAndZones({ +export default function MasksAndZonesView({ selectedCamera, selectedZoneMask, setUnsavedChanges, -}: MasksAndZoneProps) { +}: MasksAndZoneViewProps) { const { data: config } = useSWR("config"); const [allPolygons, setAllPolygons] = useState([]); const [editingPolygons, setEditingPolygons] = useState([]); diff --git a/web/src/components/settings/MotionTuner.tsx b/web/src/views/settings/MotionTunerView.tsx similarity index 97% rename from web/src/components/settings/MotionTuner.tsx rename to web/src/views/settings/MotionTunerView.tsx index ad149de54..ad08c4f42 100644 --- a/web/src/components/settings/MotionTuner.tsx +++ b/web/src/views/settings/MotionTunerView.tsx @@ -12,17 +12,17 @@ import { useMotionContourArea, useMotionThreshold, } from "@/api/ws"; -import { Skeleton } from "../ui/skeleton"; -import { Button } from "../ui/button"; -import { Switch } from "../ui/switch"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Button } from "@/components/ui/button"; +import { Switch } from "@/components/ui/switch"; import { Toaster } from "@/components/ui/sonner"; import { toast } from "sonner"; -import { Separator } from "../ui/separator"; +import { Separator } from "@/components/ui/separator"; import { Link } from "react-router-dom"; import { LuExternalLink } from "react-icons/lu"; import { StatusBarMessagesContext } from "@/context/statusbar-provider"; -type MotionTunerProps = { +type MotionTunerViewProps = { selectedCamera: string; setUnsavedChanges: React.Dispatch>; }; @@ -33,10 +33,10 @@ type MotionSettings = { improve_contrast?: boolean; }; -export default function MotionTuner({ +export default function MotionTunerView({ selectedCamera, setUnsavedChanges, -}: MotionTunerProps) { +}: MotionTunerViewProps) { const { data: config, mutate: updateConfig } = useSWR("config"); const [changedValue, setChangedValue] = useState(false); diff --git a/web/src/components/settings/ObjectSettings.tsx b/web/src/views/settings/ObjectSettingsView.tsx similarity index 96% rename from web/src/components/settings/ObjectSettings.tsx rename to web/src/views/settings/ObjectSettingsView.tsx index 3054acb5f..4ec43f3e5 100644 --- a/web/src/components/settings/ObjectSettings.tsx +++ b/web/src/views/settings/ObjectSettingsView.tsx @@ -5,19 +5,19 @@ import { CameraConfig, FrigateConfig } from "@/types/frigateConfig"; import { Toaster } from "@/components/ui/sonner"; import { Label } from "@/components/ui/label"; import useSWR from "swr"; -import Heading from "../ui/heading"; -import { Switch } from "../ui/switch"; +import Heading from "@/components/ui/heading"; +import { Switch } from "@/components/ui/switch"; import { usePersistence } from "@/hooks/use-persistence"; -import { Skeleton } from "../ui/skeleton"; +import { Skeleton } from "@/components/ui/skeleton"; import { useCameraActivity } from "@/hooks/use-camera-activity"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { ObjectType } from "@/types/ws"; import useDeepMemo from "@/hooks/use-deep-memo"; -import { Card } from "../ui/card"; +import { Card } from "@/components/ui/card"; import { getIconForLabel } from "@/utils/iconUtil"; import { capitalizeFirstLetter } from "@/utils/stringUtil"; -type ObjectSettingsProps = { +type ObjectSettingsViewProps = { selectedCamera?: string; }; @@ -25,9 +25,9 @@ type Options = { [key: string]: boolean }; const emptyObject = Object.freeze({}); -export default function ObjectSettings({ +export default function ObjectSettingsView({ selectedCamera, -}: ObjectSettingsProps) { +}: ObjectSettingsViewProps) { const { data: config } = useSWR("config"); const DEBUG_OPTIONS = [