|
@@ -1,19 +1,21 @@
|
|
-import { Metadata } from "next"
|
|
|
|
-import Image from "next/image"
|
|
|
|
|
|
+import { Metadata } from "next";
|
|
|
|
+import Image from "next/image";
|
|
|
|
|
|
-import { Separator } from "@/components/ui/separator"
|
|
|
|
-import { SidebarNav } from "@/components/sidebar-nav"
|
|
|
|
-import SiteProvider from "@app/providers/SiteProvider"
|
|
|
|
-import { internal } from "@app/api"
|
|
|
|
-import { GetSiteResponse } from "@server/routers/site"
|
|
|
|
-import { AxiosResponse } from "axios"
|
|
|
|
-import { redirect } from "next/navigation"
|
|
|
|
-import { authCookieHeader } from "@app/api/cookies"
|
|
|
|
|
|
+import { Separator } from "@/components/ui/separator";
|
|
|
|
+import { SidebarNav } from "@/components/sidebar-nav";
|
|
|
|
+import SiteProvider from "@app/providers/SiteProvider";
|
|
|
|
+import { internal } from "@app/api";
|
|
|
|
+import { GetSiteResponse } from "@server/routers/site";
|
|
|
|
+import { AxiosResponse } from "axios";
|
|
|
|
+import { redirect } from "next/navigation";
|
|
|
|
+import { authCookieHeader } from "@app/api/cookies";
|
|
|
|
+import Link from "next/link";
|
|
|
|
+import { ArrowLeft, ChevronLeft } from "lucide-react";
|
|
|
|
|
|
export const metadata: Metadata = {
|
|
export const metadata: Metadata = {
|
|
title: "Forms",
|
|
title: "Forms",
|
|
description: "Advanced form example using react-hook-form and Zod.",
|
|
description: "Advanced form example using react-hook-form and Zod.",
|
|
-}
|
|
|
|
|
|
+};
|
|
|
|
|
|
const sidebarNavItems = [
|
|
const sidebarNavItems = [
|
|
{
|
|
{
|
|
@@ -32,21 +34,27 @@ const sidebarNavItems = [
|
|
title: "Display",
|
|
title: "Display",
|
|
href: "/{orgId}/sites/{siteId}/display",
|
|
href: "/{orgId}/sites/{siteId}/display",
|
|
},
|
|
},
|
|
-]
|
|
|
|
|
|
+];
|
|
|
|
|
|
interface SettingsLayoutProps {
|
|
interface SettingsLayoutProps {
|
|
- children: React.ReactNode,
|
|
|
|
- params: { siteId: string, orgId: string }
|
|
|
|
|
|
+ children: React.ReactNode;
|
|
|
|
+ params: { siteId: string; orgId: string };
|
|
}
|
|
}
|
|
|
|
|
|
-export default async function SettingsLayout({ children, params }: SettingsLayoutProps) {
|
|
|
|
|
|
+export default async function SettingsLayout({
|
|
|
|
+ children,
|
|
|
|
+ params,
|
|
|
|
+}: SettingsLayoutProps) {
|
|
let site = null;
|
|
let site = null;
|
|
if (params.siteId !== "create") {
|
|
if (params.siteId !== "create") {
|
|
try {
|
|
try {
|
|
- const res = await internal.get<AxiosResponse<GetSiteResponse>>(`/site/${params.siteId}`, authCookieHeader());
|
|
|
|
|
|
+ const res = await internal.get<AxiosResponse<GetSiteResponse>>(
|
|
|
|
+ `/site/${params.siteId}`,
|
|
|
|
+ authCookieHeader(),
|
|
|
|
+ );
|
|
site = res.data.data;
|
|
site = res.data.data;
|
|
} catch {
|
|
} catch {
|
|
- redirect(`/${params.orgId}/sites`)
|
|
|
|
|
|
+ redirect(`/${params.orgId}/sites`);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -68,25 +76,47 @@ export default async function SettingsLayout({ children, params }: SettingsLayou
|
|
className="hidden dark:block"
|
|
className="hidden dark:block"
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ <div className="mb-4">
|
|
|
|
+ <Link
|
|
|
|
+ href={`/${params.orgId}/sites`}
|
|
|
|
+ className="text-primary font-medium"
|
|
|
|
+ >
|
|
|
|
+ <div className="flex items-center gap-0.5 hover:underline">
|
|
|
|
+ <ChevronLeft />
|
|
|
|
+ <span>View all sites</span>
|
|
|
|
+ </div>
|
|
|
|
+ </Link>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
<div className="hidden space-y-6 0 pb-16 md:block">
|
|
<div className="hidden space-y-6 0 pb-16 md:block">
|
|
<div className="space-y-0.5">
|
|
<div className="space-y-0.5">
|
|
- <h2 className="text-2xl font-bold tracking-tight">Settings</h2>
|
|
|
|
|
|
+ <h2 className="text-2xl font-bold tracking-tight">
|
|
|
|
+ {params.siteId == "create"
|
|
|
|
+ ? "New Site"
|
|
|
|
+ : site?.name + " Settings" || "Site Settings"
|
|
|
|
+ }
|
|
|
|
+ </h2>
|
|
<p className="text-muted-foreground">
|
|
<p className="text-muted-foreground">
|
|
- {params.siteId == "create" ? "Create site..." : "Manage settings on " + site?.name || ""}.
|
|
|
|
|
|
+ {params.siteId == "create"
|
|
|
|
+ ? "Create a new site"
|
|
|
|
+ : "Configure the settings on your site: " +
|
|
|
|
+ site?.name || ""}
|
|
|
|
+ .
|
|
</p>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
- <Separator className="my-6" />
|
|
|
|
- <div className="flex flex-col space-y-8 lg:flex-row lg:space-x-12 lg:space-y-0">
|
|
|
|
|
|
+ <div className="flex flex-col space-y-6 lg:flex-row lg:space-x-12 lg:space-y-0">
|
|
<aside className="-mx-4 lg:w-1/5">
|
|
<aside className="-mx-4 lg:w-1/5">
|
|
- <SidebarNav items={sidebarNavItems} disabled={params.siteId == "create"} />
|
|
|
|
|
|
+ <SidebarNav
|
|
|
|
+ items={sidebarNavItems}
|
|
|
|
+ disabled={params.siteId == "create"}
|
|
|
|
+ />
|
|
</aside>
|
|
</aside>
|
|
<div className="flex-1 lg:max-w-2xl">
|
|
<div className="flex-1 lg:max-w-2xl">
|
|
- <SiteProvider site={site}>
|
|
|
|
- {children}
|
|
|
|
- </SiteProvider>
|
|
|
|
|
|
+ <SiteProvider site={site}>{children}</SiteProvider>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</>
|
|
</>
|
|
- )
|
|
|
|
|
|
+ );
|
|
}
|
|
}
|