Base Layer

Layouts and routing

The layouts and header and footer components you can replace, and how content files become routes.

This page covers the layouts, the components you can replace and the routes the layer adds, for app developers. Set up the layer first: Overview.

Layouts

The layer ships two layouts.

LayoutRenders
defaultAppHeader, the page in a UMain, then AppFooter.
pageThe same, with the page wrapped in a UContainer.

Both hide the header when the route sets meta.header = false, and the footer with meta.footer = false.

Components

Replace any of these components with a file at the same path in your app.

ComponentPurpose
AppHeaderThe site header: logo, main menu (useMenu('main') when @frigear-nu/menu is installed, else the configured navigation), language select (only with more than one locale), colour mode button (header.colorMode).
AppHeaderLogo, AppHeaderCenter, AppHeaderBody, AppHeaderRight, AppHeaderCTAHeader slots. AppHeaderRight and AppHeaderCTA are empty placeholders meant to be overridden.
AppFooter, AppFooterLeft, AppFooterRightThe footer, built from config.footer.
AppLogoThe logo from config.logo, falling back to the site name.
LanguageSelectLocale dropdown that navigates with localizePath.
IconMenuToggleThe mobile menu toggle.
ContactFormA content component with a contact form (its text is Norwegian). It posts to /api/_submit, which the layer does not provide.
HeroBackgroundA decorative hero background for content pages.

Routing

Two files turn your content into routes:

  • A catch-all page, app/pages/[[lang]]/[...path].vue, renders the pages document for the current route. It answers 404 when there is none.
  • A landing page template, app/templates/LandingPage.vue, which the routing module registers at /.

With locales, routing adds one landing route per locale (the default at /, others at /<code>). It also splits the catch-all into one route per locale, so each route name carries its locale.

An app/pages/index.vue in your app replaces the landing page, with a warning. Your app then routes locale roots such as /en itself.

Next steps

Copyright © 2026