diff options
| author | Mohamed Bassem <me@mbassem.com> | 2024-10-27 12:03:14 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-10-27 12:03:14 +0000 |
| commit | eb7da996a7c2d617d276f296cac07a6fd5648664 (patch) | |
| tree | 4711de55b6f5fed3ac0cf3539099a9c0f115647e /apps/web/app | |
| parent | 801ba36af5900c84af5a88dea37aa7d2f793fed9 (diff) | |
| download | karakeep-eb7da996a7c2d617d276f296cac07a6fd5648664.tar.zst | |
ui: Redesign the settings page and move it to its own layout
Diffstat (limited to 'apps/web/app')
| -rw-r--r-- | apps/web/app/dashboard/settings/page.tsx | 60 | ||||
| -rw-r--r-- | apps/web/app/settings/ai/page.tsx | 5 | ||||
| -rw-r--r-- | apps/web/app/settings/api-keys/page.tsx | 9 | ||||
| -rw-r--r-- | apps/web/app/settings/import/page.tsx | 9 | ||||
| -rw-r--r-- | apps/web/app/settings/info/page.tsx | 11 | ||||
| -rw-r--r-- | apps/web/app/settings/layout.tsx | 34 | ||||
| -rw-r--r-- | apps/web/app/settings/page.tsx | 6 |
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; +} |
