diff --git a/app/[workspace]/project/[projectId]/design/page.tsx b/app/[workspace]/project/[projectId]/design/page.tsx index 2f5298e..caa89c1 100644 --- a/app/[workspace]/project/[projectId]/design/page.tsx +++ b/app/[workspace]/project/[projectId]/design/page.tsx @@ -1,6 +1,7 @@ "use client"; -import { use, useState, useEffect } from "react"; +import { use, useState, useEffect, Suspense } from "react"; +import { useSearchParams } from "next/navigation"; import { toast } from "sonner"; import { SCAFFOLD_REGISTRY, THEME_REGISTRY, @@ -958,8 +959,9 @@ function SurfacePicker({ // Page // --------------------------------------------------------------------------- -export default function DesignPage({ params }: { params: Promise<{ workspace: string; projectId: string }> }) { - const { projectId } = use(params); +function DesignPageInner({ projectId }: { projectId: string }) { + const searchParams = useSearchParams(); + const requestedSurface = searchParams.get("surface"); const [surfaces, setSurfaces] = useState([]); const [surfaceThemes, setSurfaceThemes] = useState>({}); @@ -979,7 +981,11 @@ export default function DesignPage({ params }: { params: Promise<{ workspace: st setSurfaces(loaded); setSurfaceThemes(d.surfaceThemes ?? {}); setSelectedThemes(d.surfaceThemes ?? {}); - if (loaded.length > 0) setActiveSurfaceId(loaded[0]); + // Honour ?surface= param if valid, otherwise default to first + const initial = requestedSurface && loaded.includes(requestedSurface) + ? requestedSurface + : loaded[0] ?? null; + setActiveSurfaceId(initial); return loaded; }); @@ -1137,3 +1143,12 @@ export default function DesignPage({ params }: { params: Promise<{ workspace: st ); } + +export default function DesignPage({ params }: { params: Promise<{ workspace: string; projectId: string }> }) { + const { projectId } = use(params); + return ( + Loading…}> + + + ); +} diff --git a/components/layout/vibn-sidebar.tsx b/components/layout/vibn-sidebar.tsx index 75d008c..2e75c97 100644 --- a/components/layout/vibn-sidebar.tsx +++ b/components/layout/vibn-sidebar.tsx @@ -338,12 +338,12 @@ export function VIBNSidebar({ workspace }: VIBNSidebarProps) { key={s} icon={SURFACE_ICONS[s] ?? "◌"} label={SURFACE_LABELS[s] ?? s} - href={`${base}/design`} + href={`${base}/design?surface=${encodeURIComponent(s)}`} collapsed={collapsed} /> )) ) : ( - + )}