PageBody

GitLab
O conteúdo principal da sua página.

Uso

O componente PageBody envolve o seu conteúdo principal e adiciona um espaçamento interno para um espaçamento consistente.

Use-o dentro do slot padrão do componente Page, após o componente PageHeader:

<template>
  <NPage>
    <NPageHeader />

    <NPageBody />
  </NPage>
</template>

Exemplos

Embora estes exemplos usem o Nuxt Content, os componentes podem ser integrados a qualquer sistema de gerenciamento de conteúdo.

Dentro de uma página

Use o componente PageBody em uma página para exibir o conteúdo da página:

pages/[...slug].vue
<script setup lang="ts">
const route = useRoute()

definePageMeta({
  layout: 'docs'
})

const { data: page } = await useAsyncData(route.path, () => {
  return queryCollection('docs').path(route.path).first()
})

const { data: surround } = await useAsyncData(`${route.path}-surround`, () => {
  return queryCollectionItemSurroundings('content', route.path)
})
</script>

<template>
  <NPage>
    <NPageHeader :title="page.title" :description="page.description" />

    <NPageBody>
      <ContentRenderer :value="page" />

      <NSeparator />

      <NContentSurround :surround="surround" />
    </NPageBody>

    <template #right>
      <NContentToc :links="page.body.toc.links" />
    </template>
  </NPage>
</template>
Neste exemplo, usamos o componente ContentRenderer do @nuxt/content para renderizar o conteúdo da página.

API

Props

Prop Default Type
as'div'any

The element or component this component should render as.

ui { base?: any; }

Slots

Slot Type
default{}

Tema

app.config.ts
export default defineAppConfig({
  ui: {
    pageBody: {
      base: 'mt-8 pb-24 space-y-12'
    }
  }
})
vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nitro/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      ui: {
        pageBody: {
          base: 'mt-8 pb-24 space-y-12'
        }
      }
    })
  ]
})

Changelog

No recent changes