mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-07-30 13:48:07 +02:00
Update web deps (#16983)
* Update vite * Update LuIcons * Update radix packages * Fix other icons * Use correct node version * Remove superfluous web build on python tests * Move web build to test
This commit is contained in:
parent
30acd26898
commit
433da8ffce
13
.github/workflows/pull_request.yml
vendored
13
.github/workflows/pull_request.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@master
|
- uses: actions/setup-node@master
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 20.x
|
||||||
- name: Install devcontainer cli
|
- name: Install devcontainer cli
|
||||||
run: npm install --global @devcontainers/cli
|
run: npm install --global @devcontainers/cli
|
||||||
- name: Build devcontainer
|
- name: Build devcontainer
|
||||||
@ -64,6 +64,9 @@ jobs:
|
|||||||
node-version: 20.x
|
node-version: 20.x
|
||||||
- run: npm install
|
- run: npm install
|
||||||
working-directory: ./web
|
working-directory: ./web
|
||||||
|
- name: Build web
|
||||||
|
run: npm run build
|
||||||
|
working-directory: ./web
|
||||||
# - name: Test
|
# - name: Test
|
||||||
# run: npm run test
|
# run: npm run test
|
||||||
# working-directory: ./web
|
# working-directory: ./web
|
||||||
@ -99,14 +102,6 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@master
|
|
||||||
with:
|
|
||||||
node-version: 16.x
|
|
||||||
- run: npm install
|
|
||||||
working-directory: ./web
|
|
||||||
- name: Build web
|
|
||||||
run: npm run build
|
|
||||||
working-directory: ./web
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
|
2446
web/package-lock.json
generated
2446
web/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -14,45 +14,45 @@
|
|||||||
"coverage": "vitest run --coverage"
|
"coverage": "vitest run --coverage"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cycjimmy/jsmpeg-player": "^6.1.1",
|
"@cycjimmy/jsmpeg-player": "^6.1.2",
|
||||||
"@hookform/resolvers": "^3.9.0",
|
"@hookform/resolvers": "^3.9.0",
|
||||||
"@melloware/react-logviewer": "^6.1.2",
|
"@melloware/react-logviewer": "^6.1.2",
|
||||||
"@radix-ui/react-alert-dialog": "^1.1.2",
|
"@radix-ui/react-alert-dialog": "^1.1.6",
|
||||||
"@radix-ui/react-aspect-ratio": "^1.1.0",
|
"@radix-ui/react-aspect-ratio": "^1.1.2",
|
||||||
"@radix-ui/react-checkbox": "^1.1.2",
|
"@radix-ui/react-checkbox": "^1.1.4",
|
||||||
"@radix-ui/react-context-menu": "^2.2.2",
|
"@radix-ui/react-context-menu": "^2.2.6",
|
||||||
"@radix-ui/react-dialog": "^1.1.2",
|
"@radix-ui/react-dialog": "^1.1.6",
|
||||||
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
"@radix-ui/react-dropdown-menu": "^2.1.6",
|
||||||
"@radix-ui/react-hover-card": "^1.1.2",
|
"@radix-ui/react-hover-card": "^1.1.6",
|
||||||
"@radix-ui/react-label": "^2.1.0",
|
"@radix-ui/react-label": "^2.1.2",
|
||||||
"@radix-ui/react-popover": "^1.1.2",
|
"@radix-ui/react-popover": "^1.1.6",
|
||||||
"@radix-ui/react-radio-group": "^1.2.1",
|
"@radix-ui/react-radio-group": "^1.2.3",
|
||||||
"@radix-ui/react-scroll-area": "^1.2.0",
|
"@radix-ui/react-scroll-area": "^1.2.3",
|
||||||
"@radix-ui/react-select": "^2.1.2",
|
"@radix-ui/react-select": "^2.1.6",
|
||||||
"@radix-ui/react-separator": "^1.1.0",
|
"@radix-ui/react-separator": "^1.1.2",
|
||||||
"@radix-ui/react-slider": "^1.2.1",
|
"@radix-ui/react-slider": "^1.2.3",
|
||||||
"@radix-ui/react-slot": "^1.1.2",
|
"@radix-ui/react-slot": "^1.1.2",
|
||||||
"@radix-ui/react-switch": "^1.1.1",
|
"@radix-ui/react-switch": "^1.1.3",
|
||||||
"@radix-ui/react-tabs": "^1.1.1",
|
"@radix-ui/react-tabs": "^1.1.3",
|
||||||
"@radix-ui/react-toggle": "^1.1.0",
|
"@radix-ui/react-toggle": "^1.1.2",
|
||||||
"@radix-ui/react-toggle-group": "^1.1.0",
|
"@radix-ui/react-toggle-group": "^1.1.2",
|
||||||
"@radix-ui/react-tooltip": "^1.1.3",
|
"@radix-ui/react-tooltip": "^1.1.8",
|
||||||
"apexcharts": "^3.52.0",
|
"apexcharts": "^3.52.0",
|
||||||
"axios": "^1.7.7",
|
"axios": "^1.7.7",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"cmdk": "^1.0.0",
|
"cmdk": "^1.0.0",
|
||||||
"copy-to-clipboard": "^3.3.3",
|
"copy-to-clipboard": "^3.3.3",
|
||||||
"date-fns": "^3.6.0",
|
"date-fns": "^3.6.0",
|
||||||
"embla-carousel-react": "^8.2.0",
|
"embla-carousel-react": "^8.2.0",
|
||||||
"framer-motion": "^11.5.4",
|
"framer-motion": "^11.5.4",
|
||||||
"hls.js": "^1.5.17",
|
"hls.js": "^1.5.20",
|
||||||
"idb-keyval": "^6.2.1",
|
"idb-keyval": "^6.2.1",
|
||||||
"immer": "^10.1.1",
|
"immer": "^10.1.1",
|
||||||
"konva": "^9.3.16",
|
"konva": "^9.3.18",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"lucide-react": "^0.407.0",
|
"lucide-react": "^0.477.0",
|
||||||
"monaco-yaml": "^5.2.2",
|
"monaco-yaml": "^5.3.1",
|
||||||
"next-themes": "^0.3.0",
|
"next-themes": "^0.3.0",
|
||||||
"nosleep.js": "^0.12.0",
|
"nosleep.js": "^0.12.0",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
@ -62,10 +62,10 @@
|
|||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
"react-grid-layout": "^1.5.0",
|
"react-grid-layout": "^1.5.0",
|
||||||
"react-hook-form": "^7.52.1",
|
"react-hook-form": "^7.52.1",
|
||||||
"react-icons": "^5.2.1",
|
"react-icons": "^5.5.0",
|
||||||
"react-konva": "^18.2.10",
|
"react-konva": "^18.2.10",
|
||||||
"react-router-dom": "^6.26.0",
|
"react-router-dom": "^6.26.0",
|
||||||
"react-swipeable": "^7.0.1",
|
"react-swipeable": "^7.0.2",
|
||||||
"react-tracked": "^2.0.1",
|
"react-tracked": "^2.0.1",
|
||||||
"react-transition-group": "^4.4.5",
|
"react-transition-group": "^4.4.5",
|
||||||
"react-use-websocket": "^4.8.1",
|
"react-use-websocket": "^4.8.1",
|
||||||
@ -75,7 +75,7 @@
|
|||||||
"sonner": "^1.5.0",
|
"sonner": "^1.5.0",
|
||||||
"sort-by": "^1.2.0",
|
"sort-by": "^1.2.0",
|
||||||
"strftime": "^0.10.3",
|
"strftime": "^0.10.3",
|
||||||
"swr": "^2.2.5",
|
"swr": "^2.3.2",
|
||||||
"tailwind-merge": "^2.4.0",
|
"tailwind-merge": "^2.4.0",
|
||||||
"tailwind-scrollbar": "^3.1.0",
|
"tailwind-scrollbar": "^3.1.0",
|
||||||
"tailwindcss-animate": "^1.0.7",
|
"tailwindcss-animate": "^1.0.7",
|
||||||
@ -97,8 +97,8 @@
|
|||||||
"@types/strftime": "^0.9.8",
|
"@types/strftime": "^0.9.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^7.5.0",
|
"@typescript-eslint/eslint-plugin": "^7.5.0",
|
||||||
"@typescript-eslint/parser": "^7.5.0",
|
"@typescript-eslint/parser": "^7.5.0",
|
||||||
"@vitejs/plugin-react-swc": "^3.7.1",
|
"@vitejs/plugin-react-swc": "^3.8.0",
|
||||||
"@vitest/coverage-v8": "^2.0.5",
|
"@vitest/coverage-v8": "^3.0.7",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
@ -115,8 +115,8 @@
|
|||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"prettier-plugin-tailwindcss": "^0.6.5",
|
"prettier-plugin-tailwindcss": "^0.6.5",
|
||||||
"tailwindcss": "^3.4.9",
|
"tailwindcss": "^3.4.9",
|
||||||
"typescript": "^5.5.4",
|
"typescript": "^5.8.2",
|
||||||
"vite": "^5.4.0",
|
"vite": "^6.2.0",
|
||||||
"vitest": "^2.0.5"
|
"vitest": "^3.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ import {
|
|||||||
PopoverTrigger,
|
PopoverTrigger,
|
||||||
} from "@/components/ui/popover";
|
} from "@/components/ui/popover";
|
||||||
import { getUnitSize } from "@/utils/storageUtil";
|
import { getUnitSize } from "@/utils/storageUtil";
|
||||||
import { LuAlertCircle } from "react-icons/lu";
|
import { CiCircleAlert } from "react-icons/ci";
|
||||||
|
|
||||||
type CameraStorage = {
|
type CameraStorage = {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
@ -199,7 +199,7 @@ export function CombinedStorageGraph({
|
|||||||
className="focus:outline-none"
|
className="focus:outline-none"
|
||||||
aria-label="Unused Storage Information"
|
aria-label="Unused Storage Information"
|
||||||
>
|
>
|
||||||
<LuAlertCircle
|
<CiCircleAlert
|
||||||
className="size-5"
|
className="size-5"
|
||||||
aria-label="Unused Storage Information"
|
aria-label="Unused Storage Information"
|
||||||
/>
|
/>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { LuLoader2 } from "react-icons/lu";
|
import { AiOutlineLoading3Quarters } from "react-icons/ai";
|
||||||
|
|
||||||
export default function ActivityIndicator({ className = "w-full", size = 30 }) {
|
export default function ActivityIndicator({ className = "w-full", size = 30 }) {
|
||||||
return (
|
return (
|
||||||
@ -7,7 +7,7 @@ export default function ActivityIndicator({ className = "w-full", size = 30 }) {
|
|||||||
className={cn("flex items-center justify-center", className)}
|
className={cn("flex items-center justify-center", className)}
|
||||||
aria-label="Loading…"
|
aria-label="Loading…"
|
||||||
>
|
>
|
||||||
<LuLoader2 className="animate-spin" size={size} />
|
<AiOutlineLoading3Quarters className="animate-spin" size={size} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import {
|
|||||||
LuList,
|
LuList,
|
||||||
LuLogOut,
|
LuLogOut,
|
||||||
LuMoon,
|
LuMoon,
|
||||||
LuPenSquare,
|
LuSquarePen,
|
||||||
LuRotateCw,
|
LuRotateCw,
|
||||||
LuSettings,
|
LuSettings,
|
||||||
LuSun,
|
LuSun,
|
||||||
@ -200,7 +200,7 @@ export default function GeneralSettings({ className }: GeneralSettingsProps) {
|
|||||||
}
|
}
|
||||||
aria-label="Configuration editor"
|
aria-label="Configuration editor"
|
||||||
>
|
>
|
||||||
<LuPenSquare className="mr-2 size-4" />
|
<LuSquarePen className="mr-2 size-4" />
|
||||||
<span>Configuration editor</span>
|
<span>Configuration editor</span>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -4,7 +4,8 @@ import { FrigateConfig } from "@/types/frigateConfig";
|
|||||||
import { baseUrl } from "@/api/baseUrl";
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { LuCamera, LuDownload, LuMoreVertical, LuTrash2 } from "react-icons/lu";
|
import { LuCamera, LuDownload, LuTrash2 } from "react-icons/lu";
|
||||||
|
import { FiMoreVertical } from "react-icons/fi";
|
||||||
import { FaArrowsRotate } from "react-icons/fa6";
|
import { FaArrowsRotate } from "react-icons/fa6";
|
||||||
import { MdImageSearch } from "react-icons/md";
|
import { MdImageSearch } from "react-icons/md";
|
||||||
import FrigatePlusIcon from "@/components/icons/FrigatePlusIcon";
|
import FrigatePlusIcon from "@/components/icons/FrigatePlusIcon";
|
||||||
@ -216,7 +217,7 @@ export default function SearchResultActions({
|
|||||||
|
|
||||||
<DropdownMenu>
|
<DropdownMenu>
|
||||||
<DropdownMenuTrigger>
|
<DropdownMenuTrigger>
|
||||||
<LuMoreVertical className="size-5 cursor-pointer text-primary-variant hover:text-primary" />
|
<FiMoreVertical className="size-5 cursor-pointer text-primary-variant hover:text-primary" />
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent align="end">{menuItems}</DropdownMenuContent>
|
<DropdownMenuContent align="end">{menuItems}</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
|
@ -23,7 +23,6 @@ import {
|
|||||||
LuEar,
|
LuEar,
|
||||||
LuFolderX,
|
LuFolderX,
|
||||||
LuPlay,
|
LuPlay,
|
||||||
LuPlayCircle,
|
|
||||||
LuSettings,
|
LuSettings,
|
||||||
LuTruck,
|
LuTruck,
|
||||||
} from "react-icons/lu";
|
} from "react-icons/lu";
|
||||||
@ -54,6 +53,7 @@ import {
|
|||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { ObjectPath } from "./ObjectPath";
|
import { ObjectPath } from "./ObjectPath";
|
||||||
import { getLifecycleItemDescription } from "@/utils/lifecycleUtil";
|
import { getLifecycleItemDescription } from "@/utils/lifecycleUtil";
|
||||||
|
import { IoPlayCircleOutline } from "react-icons/io5";
|
||||||
|
|
||||||
type ObjectLifecycleProps = {
|
type ObjectLifecycleProps = {
|
||||||
className?: string;
|
className?: string;
|
||||||
@ -733,7 +733,7 @@ export function LifecycleIcon({
|
|||||||
case "gone":
|
case "gone":
|
||||||
return <IoMdExit className={cn(className)} />;
|
return <IoMdExit className={cn(className)} />;
|
||||||
case "active":
|
case "active":
|
||||||
return <LuPlayCircle className={cn(className)} />;
|
return <IoPlayCircleOutline className={cn(className)} />;
|
||||||
case "stationary":
|
case "stationary":
|
||||||
return <LuCircle className={cn(className)} />;
|
return <LuCircle className={cn(className)} />;
|
||||||
case "entered_zone":
|
case "entered_zone":
|
||||||
|
@ -3,7 +3,7 @@ import { isDesktop, isIOS, isMobileOnly, isSafari } from "react-device-detect";
|
|||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { useApiHost } from "@/api";
|
import { useApiHost } from "@/api";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { LuArrowRightCircle } from "react-icons/lu";
|
import { BsArrowRightCircle } from "react-icons/bs";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import {
|
import {
|
||||||
Tooltip,
|
Tooltip,
|
||||||
@ -183,7 +183,7 @@ function ThumbnailRow({
|
|||||||
>
|
>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger>
|
<TooltipTrigger>
|
||||||
<LuArrowRightCircle
|
<BsArrowRightCircle
|
||||||
className="ml-2 text-secondary-foreground transition-all duration-300 hover:text-primary"
|
className="ml-2 text-secondary-foreground transition-all duration-300 hover:text-primary"
|
||||||
size={24}
|
size={24}
|
||||||
/>
|
/>
|
||||||
|
@ -20,7 +20,8 @@ import { zodResolver } from "@hookform/resolvers/zod";
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { useCallback, useContext, useEffect, useMemo, useState } from "react";
|
import { useCallback, useContext, useEffect, useMemo, useState } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { LuAlertCircle, LuCheck, LuExternalLink, LuX } from "react-icons/lu";
|
import { LuCheck, LuExternalLink, LuX } from "react-icons/lu";
|
||||||
|
import { CiCircleAlert } from "react-icons/ci";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
@ -311,7 +312,7 @@ export default function NotificationView({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Alert variant="destructive">
|
<Alert variant="destructive">
|
||||||
<LuAlertCircle className="size-5" />
|
<CiCircleAlert className="size-5" />
|
||||||
<AlertTitle>Notifications Unavailable</AlertTitle>
|
<AlertTitle>Notifications Unavailable</AlertTitle>
|
||||||
|
|
||||||
<AlertDescription>
|
<AlertDescription>
|
||||||
|
@ -8,7 +8,7 @@ import {
|
|||||||
PopoverTrigger,
|
PopoverTrigger,
|
||||||
} from "@/components/ui/popover";
|
} from "@/components/ui/popover";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { LuAlertCircle } from "react-icons/lu";
|
import { CiCircleAlert } from "react-icons/ci";
|
||||||
import { FrigateConfig } from "@/types/frigateConfig";
|
import { FrigateConfig } from "@/types/frigateConfig";
|
||||||
import { useTimezone } from "@/hooks/use-date-utils";
|
import { useTimezone } from "@/hooks/use-date-utils";
|
||||||
import { RecordingsSummary } from "@/types/review";
|
import { RecordingsSummary } from "@/types/review";
|
||||||
@ -86,7 +86,7 @@ export default function StorageMetrics({
|
|||||||
className="focus:outline-none"
|
className="focus:outline-none"
|
||||||
aria-label="Unused Storage Information"
|
aria-label="Unused Storage Information"
|
||||||
>
|
>
|
||||||
<LuAlertCircle
|
<CiCircleAlert
|
||||||
className="size-5"
|
className="size-5"
|
||||||
aria-label="Unused Storage Information"
|
aria-label="Unused Storage Information"
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user