Page shell and navigation
One shell, many pages
BrandStageShell belongs in the shared SvelteKit layout. It owns the persistent stage,
theme and model resources while collection and detail routes change inside it. Keeping it mounted
makes transitions possible.
Use the Spatial Elements ContentPage for collections and mixed spatial content,
with an explicit hdr for lighting. It wraps the Page Sections content layout and
registers the page with the shared stage. For ordinary documentation without 3D, use Page Sections
directly; no stage is required.
The page object supplies metadata and breadcrumbs. It does not create a visible
page heading. Place a Page Sections HeadingSection with headingLevel: 1 among the children, or use a Hero section. Its background and position
are yours to choose.
Collection and detail routes
Choose URLs that suit your content, such as /showcase/, /gallery/ and /products/[slug]/. Transitions match registered
elements across spatial grids, carousels and detail pages. The theme ID identifies the
collection; it does not have to match a URL prefix. Keep it and your element IDs stable.
Use native links so navigation also works without JavaScript. getSpatialListItems derives detail links from your element data and an explicit route prefix. You can also provide
each item's own href. Spatial sections register those destinations
automatically. Supply a poster for each model so cards and detail pages stay useful without
WebGPU.
Build the complete collection and detail example, then explore the interactive collection playground.