setPageLayout

Исходный код
Функция setPageLayout позволяет динамически менять лейаут страницы.
setPageLayout позволяет динамически изменять лейаут страницы. Функция зависит от доступа к контексту Nuxt и поэтому может быть вызвана только в пределах Nuxt-контекста.
middleware/custom-layout.ts
export default defineNuxtRouteMiddleware((to) => {
  // Установите лейаут на маршрут, по которому вы _перемещаетесь_.
  setPageLayout('other')
})

Передача пропсов в лейаут

Пропсы можно передать вторым аргументом — объектом:

middleware/admin-layout.ts
export default defineNuxtRouteMiddleware((to) => {
  setPageLayout('admin', {
    sidebar: true,
    title: 'Dashboard',
  })
})

Лейаут принимает их через defineProps:

layouts/admin.vue
<script setup lang="ts">
const props = defineProps<{
  sidebar?: boolean
  title?: string
}>()
</script>

<template>
  <div>
    <aside v-if="sidebar">
      Sidebar
    </aside>
    <main>
      <h1>{{ title }}</h1>
      <slot />
    </main>
  </div>
</template>
Если вы задаёте лейаут динамически на сервере, сделайте это до отрисовки лейаута Vue (в плагине или middleware маршрута), иначе возможен сбой гидратации.