aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app/settings
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-10-27 12:03:14 +0000
committerMohamed Bassem <me@mbassem.com>2024-10-27 12:03:14 +0000
commiteb7da996a7c2d617d276f296cac07a6fd5648664 (patch)
tree4711de55b6f5fed3ac0cf3539099a9c0f115647e /apps/web/app/settings
parent801ba36af5900c84af5a88dea37aa7d2f793fed9 (diff)
downloadkarakeep-eb7da996a7c2d617d276f296cac07a6fd5648664.tar.zst
ui: Redesign the settings page and move it to its own layout
Diffstat (limited to 'apps/web/app/settings')
-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
6 files changed, 74 insertions, 0 deletions
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;
+}