# Docs Layout Build documentation sites with sidebar navigation, table of contents, and surround links. ## When to use - Technical documentation sites - Knowledge bases, help centers - Any content-heavy site with hierarchical navigation > Requires `@nuxt/content` — see [conventions](../guidelines/conventions.md#content-module-integration) for setup (module order + `@source`). ## Component tree ``` UApp ├── UHeader ├── UMain │ └── NuxtLayout (docs) │ └── UPage │ ├── #left → UPageAside → UContentNavigation │ └── NuxtPage │ ├── UPageHeader │ ├── UPageBody → ContentRenderer + UContentSurround │ └── #right → UContentToc └── UFooter ``` ## App shell ```vue [app.vue] ``` ## Layout ```vue [layouts/docs.vue] ``` ## Page ```vue [pages/docs/[...slug].vue] ``` ### How nesting works The outer `UPage` in the layout handles the **left sidebar**. The inner `UPage` in the page handles the **right sidebar**. They nest correctly — this is intentional. ### Common mistakes - Not providing navigation via `provide`/`inject` — the layout needs it from the app shell. - Forgetting `UContentSearch` in app.vue — search won't work without it. - Using `UContentSearchButton` without `UContentSearch` — the button opens search, but the search component must exist. ## Key components - `UPage` — multi-column grid with `#left`, `#default`, `#right` slots - `UPageAside` — sticky sidebar wrapper (visible from `lg` breakpoint) - `UContentNavigation` — sidebar navigation tree from Nuxt Content - `UContentToc` — table of contents from page headings - `UContentSurround` — prev/next links - `UContentSearch` / `UContentSearchButton` — search command palette - `UPageAnchors` — simpler alternative to full TOC