Skip to content

Sidebar

Componente de layout com barra lateral colapsável e área de conteúdo principal.

Uso

vue
<script setup lang="ts">
import { Sidebar } from '@halfbyte/maka'
import { ref } from 'vue'

const aberta = ref(true)
</script>

<template>
  <Sidebar v-model="aberta" style="height: 500px">
    <template #sidebar>
      <nav style="padding: 16px">
        <p><strong>Navegação</strong></p>
        <ul style="list-style:none;padding:0;margin:8px 0;display:flex;flex-direction:column;gap:4px">
          <li><a href="#">Dashboard</a></li>
          <li><a href="#">Configurações</a></li>
          <li><a href="#">Perfil</a></li>
        </ul>
      </nav>
    </template>

    <div style="padding: 24px">
      <h2>Conteúdo principal</h2>
      <p>A sidebar aparece ao lado esquerdo.</p>
    </div>
  </Sidebar>
</template>

Lado direito

vue
<Sidebar v-model="aberta" side="right" style="height: 400px">
  <template #sidebar>
    <div style="padding:16px">Sidebar direita</div>
  </template>
  <div style="padding:16px">Conteúdo</div>
</Sidebar>

Props

PropTipoPadrão
modelValuebooleantrue
side"left" | "right""left"
widthstring"260px"
collapsiblebooleantrue

Slots

SlotDescrição
sidebarConteúdo da barra lateral
defaultConteúdo principal (área ao lado da sidebar)

Events

EventoPayloadDescrição
update:modelValuebooleanEmitido ao abrir/fechar a sidebar