diff --git a/apps/web/src/app/settings/page.tsx b/apps/web/src/app/settings/page.tsx
new file mode 100644
index 0000000..871aeaa
--- /dev/null
+++ b/apps/web/src/app/settings/page.tsx
@@ -0,0 +1,51 @@
+import { getSeededOperator } from "@/lib/operator";
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
+import { Separator } from "@/components/ui/separator";
+import { ThemeToggle } from "@/components/theme-toggle";
+
+export default async function SettingsPage() {
+ const op = await getSeededOperator();
+ return (
+
+
Settings
+
+
+
+ Operator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Appearance
+
+
+ Theme
+
+
+
+
+
+ cm WhatsApp Bot ยท self-hosted
+
+
+ );
+}
+
+function Row({ label, value, mono }: { label: string; value: string; mono?: boolean }) {
+ return (
+
+
{label}
+ {value}
+
+ );
+}
diff --git a/apps/web/src/components/theme-toggle.tsx b/apps/web/src/components/theme-toggle.tsx
new file mode 100644
index 0000000..b7b0927
--- /dev/null
+++ b/apps/web/src/components/theme-toggle.tsx
@@ -0,0 +1,42 @@
+"use client";
+
+import { useTheme } from "next-themes";
+import { Moon, Sun, Monitor } from "lucide-react";
+import { Button } from "@/components/ui/button";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@/components/ui/dropdown-menu";
+
+export function ThemeToggle() {
+ const { setTheme, theme } = useTheme();
+ return (
+
+
+
+
+
+ setTheme("light")}>
+ Light
+
+ setTheme("dark")}>
+ Dark
+
+ setTheme("system")}>
+ System
+
+
+
+ );
+}