diff --git a/apps/web/src/app/(dashboard)/api-keys/page.tsx b/apps/web/src/app/(dashboard)/api-keys/page.tsx deleted file mode 100644 index c9a66fd..0000000 --- a/apps/web/src/app/(dashboard)/api-keys/page.tsx +++ /dev/null @@ -1,44 +0,0 @@ -"use client"; - -import ApiList from "./api-list"; -import AddApiKey from "./add-api-key"; -import Smtp from "./smtp"; -import { Tabs, TabsList, TabsTrigger, TabsContent } from "@unsend/ui/src/tabs"; -import { useState } from 'react'; - -export default function ApiKeysPage() { - const [activeTab, setActiveTab] = useState("apiKeys"); - const disableSmtp = true; - const handleTabChange = (value: any) => { - if (value === "smtp" && disableSmtp) { - return; - } - setActiveTab(value); - }; - - return ( -
- - - API keys - - SMTP - - - -
-

API Keys

- -
- -
- - - -
-
- ); -} diff --git a/apps/web/src/app/(dashboard)/dasboard-layout.tsx b/apps/web/src/app/(dashboard)/dasboard-layout.tsx index 83e4fc5..740972e 100644 --- a/apps/web/src/app/(dashboard)/dasboard-layout.tsx +++ b/apps/web/src/app/(dashboard)/dasboard-layout.tsx @@ -76,7 +76,7 @@ export function DashboardLayout({ children }: { children: React.ReactNode }) { Campaigns - + Developer settings diff --git a/apps/web/src/app/(dashboard)/api-keys/add-api-key.tsx b/apps/web/src/app/(dashboard)/dev-settings/api-keys/add-api-key.tsx similarity index 100% rename from apps/web/src/app/(dashboard)/api-keys/add-api-key.tsx rename to apps/web/src/app/(dashboard)/dev-settings/api-keys/add-api-key.tsx diff --git a/apps/web/src/app/(dashboard)/api-keys/api-list.tsx b/apps/web/src/app/(dashboard)/dev-settings/api-keys/api-list.tsx similarity index 100% rename from apps/web/src/app/(dashboard)/api-keys/api-list.tsx rename to apps/web/src/app/(dashboard)/dev-settings/api-keys/api-list.tsx diff --git a/apps/web/src/app/(dashboard)/api-keys/delete-api-key.tsx b/apps/web/src/app/(dashboard)/dev-settings/api-keys/delete-api-key.tsx similarity index 100% rename from apps/web/src/app/(dashboard)/api-keys/delete-api-key.tsx rename to apps/web/src/app/(dashboard)/dev-settings/api-keys/delete-api-key.tsx diff --git a/apps/web/src/app/(dashboard)/dev-settings/api-keys/page.tsx b/apps/web/src/app/(dashboard)/dev-settings/api-keys/page.tsx new file mode 100644 index 0000000..61a49f1 --- /dev/null +++ b/apps/web/src/app/(dashboard)/dev-settings/api-keys/page.tsx @@ -0,0 +1,16 @@ +"use client"; + +import AddApiKey from "./add-api-key"; +import ApiList from "./api-list"; + +export default function ApiKeysPage() { + return ( +
+
+

API Keys

+ +
+ +
+ ); +} diff --git a/apps/web/src/app/(dashboard)/dev-settings/layout.tsx b/apps/web/src/app/(dashboard)/dev-settings/layout.tsx new file mode 100644 index 0000000..f128e43 --- /dev/null +++ b/apps/web/src/app/(dashboard)/dev-settings/layout.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { Tabs, TabsList, TabsTrigger, TabsContent } from "@unsend/ui/src/tabs"; +import { useState } from "react"; +import { SettingsNavButton } from "./settings-nav-button"; + +export const dynamic = "force-static"; + +export default function ApiKeysPage({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
+

Developer settings

+
+ + API Keys + + SMTP +
+
{children}
+
+ ); +} diff --git a/apps/web/src/app/(dashboard)/dev-settings/page.tsx b/apps/web/src/app/(dashboard)/dev-settings/page.tsx new file mode 100644 index 0000000..365314c --- /dev/null +++ b/apps/web/src/app/(dashboard)/dev-settings/page.tsx @@ -0,0 +1,16 @@ +"use client"; + +import AddApiKey from "./api-keys/add-api-key"; +import ApiList from "./api-keys/api-list"; + +export default function ApiKeysPage() { + return ( +
+
+

API Keys

+ +
+ +
+ ); +} diff --git a/apps/web/src/app/(dashboard)/dev-settings/settings-nav-button.tsx b/apps/web/src/app/(dashboard)/dev-settings/settings-nav-button.tsx new file mode 100644 index 0000000..44afe8e --- /dev/null +++ b/apps/web/src/app/(dashboard)/dev-settings/settings-nav-button.tsx @@ -0,0 +1,41 @@ +"use client"; + +import { LogOut } from "lucide-react"; +import { signOut } from "next-auth/react"; +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import React from "react"; + +export const SettingsNavButton: React.FC<{ + href: string; + children: React.ReactNode; + comingSoon?: boolean; +}> = ({ href, children, comingSoon }) => { + const pathname = usePathname(); + + const isActive = pathname?.startsWith(href); + + if (comingSoon) { + return ( +
+
+ {children} +
+
+ soon +
+
+ ); + } + + return ( + + {children} + + ); +}; diff --git a/apps/web/src/app/(dashboard)/api-keys/smtp.tsx b/apps/web/src/app/(dashboard)/dev-settings/smtp/page.tsx similarity index 50% rename from apps/web/src/app/(dashboard)/api-keys/smtp.tsx rename to apps/web/src/app/(dashboard)/dev-settings/smtp/page.tsx index 930a014..e0fa68b 100644 --- a/apps/web/src/app/(dashboard)/api-keys/smtp.tsx +++ b/apps/web/src/app/(dashboard)/dev-settings/smtp/page.tsx @@ -17,35 +17,51 @@ export default function ExampleCard() { smtp: "smtp.example.com", port: "587", user: "user@example.com", - password: "supersecretpassword" + password: "supersecretpassword", }; return ( - + SMTP - Send emails using SMTP instead of the REST API. See documentation for more information. + Send emails using SMTP instead of the REST API. See documentation for + more information.
Host: - +
Port: - -

For encrypted/TLS connections use 2465, 587 or 2587

+ +

+ For encrypted/TLS connections use 2465,{" "} + 587 or 2587 +

User: - +
Password: - +