DashboardNavbar

GitLab
Uma navbar responsiva para exibir em um dashboard.

Uso

O componente DashboardNavbar é uma barra de navegação responsiva que se integra ao componente DashboardSidebar. Ele inclui um botão de alternância para mobile que habilita a navegação responsiva em layouts de dashboard.

Use-o dentro do slot header do componente DashboardPanel:

pages/index.vue
<script setup lang="ts">
definePageMeta({
  layout: 'dashboard'
})
</script>

<template>
  <NDashboardPanel>
    <template #header>
      <NDashboardNavbar />
    </template>
  </NDashboardPanel>
</template>

Use os slots left, default e right para personalizar a navbar.

Caixa de entrada

4
Neste exemplo, usamos o componente Tabs no slot right para exibir algumas abas.

Título

Use a prop title para definir o título da navbar.

Dashboard

<template>
  <NDashboardNavbar title="Dashboard" />
</template>

Ícone

Use a prop icon para definir o ícone da navbar.

Dashboard

<template>
  <NDashboardNavbar title="Dashboard" icon="i-lucide-house" />
</template>

Alternar

Use a prop toggle para personalizar o botão de alternância exibido no mobile que abre o componente DashboardSidebar.

Você pode passar qualquer propriedade do componente Button para personalizá-lo.

Lado do toggle

Use a prop toggle-side para alterar o lado do botão de toggle. O padrão é right.

API

Props

Prop Default Type
as'div'any

The element or component this component should render as.

iconany

The icon displayed next to the title.

title string
toggletrueboolean | Omit<ButtonProps, LinkPropsKeys>

Customize the toggle button to open the sidebar. { color: 'neutral', variant: 'ghost' }

toggleSide'left' "left" | "right"

The side to render the toggle button on.

ui { root?: SlotClass; left?: SlotClass; icon?: SlotClass; title?: SlotClass; center?: SlotClass; right?: SlotClass; toggle?: SlotClass; }

Slots

Slot Type
title{}
leadingDashboardNavbarSlotsProps & { ui: object; }
trailingDashboardNavbarSlotsProps & { ui: object; }
leftDashboardNavbarSlotsProps
defaultDashboardNavbarSlotsProps
rightDashboardNavbarSlotsProps
toggleDashboardNavbarSlotsProps & { ui: object; }

Tema

app.config.ts
export default defineAppConfig({
  ui: {
    dashboardNavbar: {
      slots: {
        root: 'h-(--ui-header-height) shrink-0 flex items-center justify-between px-4 sm:px-6 gap-1.5',
        left: 'flex items-center gap-1.5 min-w-0',
        icon: 'shrink-0 size-5 self-center me-1.5',
        title: 'flex items-center gap-1.5 font-semibold text-highlighted truncate',
        center: 'hidden lg:flex',
        right: 'flex items-center shrink-0 gap-1.5',
        toggle: ''
      },
      variants: {
        toggleSide: {
          left: {
            toggle: ''
          },
          right: {
            toggle: ''
          }
        }
      }
    }
  }
})
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: {
        dashboardNavbar: {
          slots: {
            root: 'h-(--ui-header-height) shrink-0 flex items-center justify-between px-4 sm:px-6 gap-1.5',
            left: 'flex items-center gap-1.5 min-w-0',
            icon: 'shrink-0 size-5 self-center me-1.5',
            title: 'flex items-center gap-1.5 font-semibold text-highlighted truncate',
            center: 'hidden lg:flex',
            right: 'flex items-center shrink-0 gap-1.5',
            toggle: ''
          },
          variants: {
            toggleSide: {
              left: {
                toggle: ''
              },
              right: {
                toggle: ''
              }
            }
          }
        }
      }
    })
  ]
})

Changelog

No recent changes