diff --git a/web/src/App.tsx b/web/src/App.tsx
index d7a9ec3e9..82ca2b1e0 100644
--- a/web/src/App.tsx
+++ b/web/src/App.tsx
@@ -27,6 +27,7 @@ const Settings = lazy(() => import("@/pages/Settings"));
const UIPlayground = lazy(() => import("@/pages/UIPlayground"));
const FaceLibrary = lazy(() => import("@/pages/FaceLibrary"));
const Classification = lazy(() => import("@/pages/ClassificationModel"));
+const Chat = lazy(() => import("@/pages/Chat"));
const Logs = lazy(() => import("@/pages/Logs"));
const AccessDenied = lazy(() => import("@/pages/AccessDenied"));
@@ -106,6 +107,7 @@ function DefaultAppView() {
} />
} />
} />
+ } />
} />
} />
diff --git a/web/src/hooks/use-navigation.ts b/web/src/hooks/use-navigation.ts
index 860b02e81..e32b28b62 100644
--- a/web/src/hooks/use-navigation.ts
+++ b/web/src/hooks/use-navigation.ts
@@ -6,7 +6,7 @@ import { isDesktop } from "react-device-detect";
import { FaCompactDisc, FaVideo } from "react-icons/fa";
import { IoSearch } from "react-icons/io5";
import { LuConstruction } from "react-icons/lu";
-import { MdCategory, MdVideoLibrary } from "react-icons/md";
+import { MdCategory, MdChat, MdVideoLibrary } from "react-icons/md";
import { TbFaceId } from "react-icons/tb";
import useSWR from "swr";
import { useIsAdmin } from "./use-is-admin";
@@ -18,6 +18,7 @@ export const ID_EXPORT = 4;
export const ID_PLAYGROUND = 5;
export const ID_FACE_LIBRARY = 6;
export const ID_CLASSIFICATION = 7;
+export const ID_CHAT = 8;
export default function useNavigation(
variant: "primary" | "secondary" = "primary",
@@ -82,7 +83,14 @@ export default function useNavigation(
url: "/classification",
enabled: isDesktop && isAdmin,
},
+ {
+ id: ID_CHAT,
+ variant,
+ icon: MdChat,
+ url: "/chat",
+ enabled: isDesktop && isAdmin && config?.genai?.model !== "none",
+ },
] as NavData[],
- [config?.face_recognition?.enabled, variant, isAdmin],
+ [config?.face_recognition?.enabled, config?.genai?.model, variant, isAdmin],
);
}
diff --git a/web/src/pages/Chat.tsx b/web/src/pages/Chat.tsx
new file mode 100644
index 000000000..a642668c6
--- /dev/null
+++ b/web/src/pages/Chat.tsx
@@ -0,0 +1,29 @@
+import { Button } from "@/components/ui/button";
+import { Input } from "@/components/ui/input";
+import { FaArrowUpLong } from "react-icons/fa6";
+
+export default function ChatPage() {
+ return (
+
+ );
+}
+
+function ChatEntry() {
+ return (
+
+ );
+}