aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/app')
-rw-r--r--apps/web/app/dashboard/settings/page.tsx60
-rw-r--r--apps/web/app/settings/ai/page.tsx5
-rw-r--r--apps/web/app/settings/api-keys/page.tsx9
-rw-r--r--apps/web/app/settings/import/page.tsx9
-rw-r--r--apps/web/app/settings/info/page.tsx11
-rw-r--r--apps/web/app/settings/layout.tsx34
-rw-r--r--apps/web/app/settings/page.tsx6
7 files changed, 74 insertions, 60 deletions
diff --git a/apps/web/app/dashboard/settings/page.tsx b/apps/web/app/dashboard/settings/page.tsx
deleted file mode 100644
index 11883d55..00000000
--- a/apps/web/app/dashboard/settings/page.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import AISettings from "@/components/dashboard/settings/AISettings";
-import ApiKeySettings from "@/components/dashboard/settings/ApiKeySettings";
-import { ChangePassword } from "@/components/dashboard/settings/ChangePassword";
-import ImportExport from "@/components/dashboard/settings/ImportExport";
-import UserDetails from "@/components/dashboard/settings/UserDetails";
-import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
-import { Download, KeyRound, Sparkle, User } from "lucide-react";
-
-export default async function Settings() {
- return (
- <Tabs
- defaultValue="info"
- orientation="horizontal"
- className="flex flex-col gap-1"
- >
- <TabsList className="flex justify-start overflow-x-auto overflow-y-hidden">
- <TabsTrigger className="flex items-center gap-2 p-3" value="info">
- <User className="size-4" />
- User Info
- </TabsTrigger>
- <TabsTrigger className="flex items-center gap-2 p-3" value="ai">
- <Sparkle className="size-4" />
- AI Settings
- </TabsTrigger>
- <TabsTrigger
- className="flex items-center gap-2 p-3"
- value="importexport"
- >
- <Download className="size-4" />
- Import / Export
- </TabsTrigger>
- <TabsTrigger className="flex items-center gap-2 p-3" value="apikeys">
- <KeyRound className="size-4" />
- API Keys
- </TabsTrigger>
- </TabsList>
- <div className="w-full">
- <TabsContent value="info">
- <div className="rounded-md border bg-background p-4">
- <UserDetails />
- <ChangePassword />
- </div>
- </TabsContent>
- <TabsContent value="ai">
- <AISettings />
- </TabsContent>
- <TabsContent value="importexport">
- <div className="rounded-md border bg-background p-4">
- <ImportExport />
- </div>
- </TabsContent>
- <TabsContent value="apikeys">
- <div className="rounded-md border bg-background p-4">
- <ApiKeySettings />
- </div>
- </TabsContent>
- </div>
- </Tabs>
- );
-}
diff --git a/apps/web/app/settings/ai/page.tsx b/apps/web/app/settings/ai/page.tsx
new file mode 100644
index 00000000..2b3d7a8d
--- /dev/null
+++ b/apps/web/app/settings/ai/page.tsx
@@ -0,0 +1,5 @@
+import AISettings from "@/components/settings/AISettings";
+
+export default function AISettingsPage() {
+ return <AISettings />;
+}
diff --git a/apps/web/app/settings/api-keys/page.tsx b/apps/web/app/settings/api-keys/page.tsx
new file mode 100644
index 00000000..1c3718d6
--- /dev/null
+++ b/apps/web/app/settings/api-keys/page.tsx
@@ -0,0 +1,9 @@
+import ApiKeySettings from "@/components/settings/ApiKeySettings";
+
+export default async function ApiKeysPage() {
+ return (
+ <div className="rounded-md border bg-background p-4">
+ <ApiKeySettings />
+ </div>
+ );
+}
diff --git a/apps/web/app/settings/import/page.tsx b/apps/web/app/settings/import/page.tsx
new file mode 100644
index 00000000..e27aa9a8
--- /dev/null
+++ b/apps/web/app/settings/import/page.tsx
@@ -0,0 +1,9 @@
+import ImportExport from "@/components/settings/ImportExport";
+
+export default function ImportSettingsPage() {
+ return (
+ <div className="rounded-md border bg-background p-4">
+ <ImportExport />
+ </div>
+ );
+}
diff --git a/apps/web/app/settings/info/page.tsx b/apps/web/app/settings/info/page.tsx
new file mode 100644
index 00000000..8027b09f
--- /dev/null
+++ b/apps/web/app/settings/info/page.tsx
@@ -0,0 +1,11 @@
+import { ChangePassword } from "@/components/settings/ChangePassword";
+import UserDetails from "@/components/settings/UserDetails";
+
+export default async function InfoPage() {
+ return (
+ <div className="rounded-md border bg-background p-4">
+ <UserDetails />
+ <ChangePassword />
+ </div>
+ );
+}
diff --git a/apps/web/app/settings/layout.tsx b/apps/web/app/settings/layout.tsx
new file mode 100644
index 00000000..0ab6c624
--- /dev/null
+++ b/apps/web/app/settings/layout.tsx
@@ -0,0 +1,34 @@
+import Header from "@/components/dashboard/header/Header";
+import DemoModeBanner from "@/components/DemoModeBanner";
+import MobileSidebar from "@/components/settings/sidebar/ModileSidebar";
+import Sidebar from "@/components/settings/sidebar/Sidebar";
+import { Separator } from "@/components/ui/separator";
+import ValidAccountCheck from "@/components/utils/ValidAccountCheck";
+
+import serverConfig from "@hoarder/shared/config";
+
+export default async function SettingsLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+ <div>
+ <Header />
+ <div className="flex min-h-[calc(100vh-64px)] w-screen flex-col sm:h-[calc(100vh-64px)] sm:flex-row">
+ <ValidAccountCheck />
+ <div className="hidden flex-none sm:flex">
+ <Sidebar />
+ </div>
+ <main className="flex-1 bg-muted sm:overflow-y-auto">
+ {serverConfig.demoMode && <DemoModeBanner />}
+ <div className="block w-full sm:hidden">
+ <MobileSidebar />
+ <Separator />
+ </div>
+ <div className="min-h-30 container p-4">{children}</div>
+ </main>
+ </div>
+ </div>
+ );
+}
diff --git a/apps/web/app/settings/page.tsx b/apps/web/app/settings/page.tsx
new file mode 100644
index 00000000..de935c84
--- /dev/null
+++ b/apps/web/app/settings/page.tsx
@@ -0,0 +1,6 @@
+import { redirect } from "next/navigation";
+
+export default function SettingsHomepage() {
+ redirect("/settings/info");
+ return null;
+}