diff --git a/app/rigs/page.tsx b/app/rigs/page.tsx
index f7bf1a9f..08a67007 100644
--- a/app/rigs/page.tsx
+++ b/app/rigs/page.tsx
@@ -1,30 +1,36 @@
-// app/rigs/page.tsx
-import RigBuilderServer from "./RigBuilderServer";
-import RigsListClient from "./RigsListClient";
+// app/portal/rigs/page.tsx
+import { cookies } from "next/headers";
+import { redirect } from "next/navigation";
+import RigsSwitcher from "@/components/portal/RigsSwitcher";
-export default function Page() {
- return (
-
-
+type Opt = { id: string | number; label: string };
-
- {/* Left: existing rigs */}
-
+export default async function Page() {
+ const jar = await cookies(); // Next 15: async
+ const ma_at = jar.get("ma_at")?.value;
+ if (!ma_at) {
+ redirect("/auth/sign-in?next=/portal/rigs");
+ }
- {/* Right: create a new rig (server-provided rig types) */}
-
-
-
+ const DIRECTUS = (process.env.DIRECTUS_URL || "").replace(/\/$/, "");
+ const res = await fetch(
+ `${DIRECTUS}/items/user_rig_type?fields=id,name&sort=sort`,
+ {
+ headers: {
+ Authorization: `Bearer ${ma_at}`,
+ Accept: "application/json",
+ "Cache-Control": "no-store",
+ },
+ cache: "no-store",
+ }
);
+
+ // Be resilient: if this fails, just show no options so the page still builds
+ const json = res.ok ? await res.json().catch(() => ({ data: [] })) : { data: [] };
+ const rigTypes: Opt[] = (json?.data ?? []).map((r: any) => ({
+ id: r.id,
+ label: r.name ?? String(r.id),
+ }));
+
+ return ;
}
diff --git a/components/portal/RigsSwitcher.tsx b/components/portal/RigsSwitcher.tsx
index dddec8d3..244c5ba0 100644
--- a/components/portal/RigsSwitcher.tsx
+++ b/components/portal/RigsSwitcher.tsx
@@ -6,12 +6,14 @@ import { cn } from "@/lib/utils";
import RigsListClient from "@/app/rigs/RigsListClient";
import RigBuilderClient from "@/app/rigs/RigBuilderClient";
+type Opt = { id: string | number; label: string };
+
const TABS = [
{ key: "my", label: "My Rigs" },
{ key: "add", label: "Add Rig" },
];
-function Panel({ tab }: { tab: string }) {
+function Panel({ tab, rigTypes }: { tab: string; rigTypes: Opt[] }) {
switch (tab) {
case "my":
return (
@@ -22,7 +24,7 @@ function Panel({ tab }: { tab: string }) {
case "add":
return (
-
+
);
default:
@@ -30,7 +32,7 @@ function Panel({ tab }: { tab: string }) {
}
}
-export default function RigsSwitcher() {
+export default function RigsSwitcher({ rigTypes }: { rigTypes: Opt[] }) {
const router = useRouter();
const sp = useSearchParams();
const active = sp.get("t") || "my";
@@ -50,7 +52,9 @@ export default function RigsSwitcher() {
onClick={() => setTab(key)}
className={cn(
"rounded-md border px-3 py-1.5 text-sm transition",
- active === key ? "bg-primary text-primary-foreground" : "hover:bg-muted"
+ active === key
+ ? "bg-primary text-primary-foreground"
+ : "hover:bg-muted"
)}
>
{label}
@@ -58,7 +62,7 @@ export default function RigsSwitcher() {
))}
-
+
);
}