Componentes
Sidebar
betaA navegação lateral inteira: provider, grupos, menu, estado recolhido e comportamento em celular. Nas telas do produto ela entra pelo slot nav da casca, não montada à mão.
Ainda não é estável porque Rota não varrida pelo sensor. Ausência de medição não é aprovação. O contrato de maturidade explica o que cada requisito exige.
@voxmente/ui/components/ui/sidebar
Orientação
A navegação lateral inteira: provider, grupos, menu, estado recolhido e comportamento em celular. Nas telas do produto ela entra pelo slot nav da casca, nunca montada à mão.
Quando usar
- A tela é autenticada e precisa da navegação persistente entre as frentes do produto.
- A navegação tem grupos com rótulo, e o usuário precisa reconhecer onde está.
- É preciso recolher a barra para dar espaço ao conteúdo sem perder o acesso aos destinos.
Quando não usar
- Para ações. Barra lateral navega; ação é botão, e ação contextual é Dropdown Menu.
- Em página institucional pública, onde a navegação é de topo — ali o componente é o Navigation Menu.
- Montada solta numa tela: em produto, quem posiciona a barra é a Casca de tela.
<SidebarMenuButton>
<ChalkboardTeacher />
<span>Turmas</span>
</SidebarMenuButton>Anatomia
SidebarProvider
└─ Sidebar
└─ SidebarContent
└─ SidebarGroup
└─ SidebarGroupLabel
└─ SidebarGroupAction
└─ SidebarGroupContent
└─ SidebarMenu
└─ SidebarMenuItem
└─ SidebarMenuButton
└─ SidebarMenuBadge
└─ SidebarMenuItem
└─ SidebarMenuButton
└─ SidebarMenuActionExportadas, mas sem demonstração nesta página: SidebarInput, SidebarInset, SidebarMenuSkeleton, SidebarSeparator.
Composição
SidebarProvider ├── Sidebar │ ├── SidebarHeader │ ├── SidebarContent │ │ └── SidebarGroup │ │ ├── SidebarGroupLabel │ │ ├── SidebarGroupAction │ │ └── SidebarGroupContent │ │ └── SidebarMenu │ │ └── SidebarMenuItem │ │ ├── SidebarMenuButton │ │ ├── SidebarMenuAction │ │ ├── SidebarMenuBadge │ │ └── SidebarMenuSub │ │ └── SidebarMenuSubItem │ │ └── SidebarMenuSubButton │ ├── SidebarFooter │ └── SidebarRail ├── SidebarInset └── SidebarTrigger
SidebarProvider
Largura por variável: --sidebar-width e --sidebar-width-icon, definidas pelo provider e sobrescritíveis por style.
Modos de recolhimento
Variantes e lado
Gatilho e trilho
Uso
Variantes do item
Tamanhos do item
Contador e ação
Na tela
Acessibilidade
- Em telas estreitas a barra vira camada; o gatilho precisa continuar alcançável e anunciar que abre a navegação.
- O item atual precisa ser marcado como atual, não apenas pintado diferente.
- A ordem de foco tem que sair da barra para o conteúdo sem armadilha — verifique com Tab antes de considerar a tela pronta.
Em contexto de produto
No painel do professor a barra entra pela casca, com os grupos da operação e o rodapé de identidade da pessoa logada.
Ver o painel do professorComponentes relacionados
Referência da API
Sidebar
| Prop | Tipo | Padrão |
|---|---|---|
| collapsible | "none" | "icon" | "offcanvas" | "offcanvas" |
| side | "left" | "right" | "left" |
| variant | "sidebar" | "floating" | "inset" | "sidebar" |
Também aceita as props de React, incluindo className e os atributos de DOM.
SidebarMenuAction
| Prop | Tipo | Padrão |
|---|---|---|
| showOnHover | boolean | false |
Também aceita as props de Base UI e React, incluindo className e os atributos de DOM.
SidebarMenuButton
| Prop | Tipo | Padrão |
|---|---|---|
| isActive | boolean | false |
| size | "md" | "sm" | "lg" | null | "md" |
| tooltip | string | (TooltipPopupProps & Pick<TooltipPositionerProps, "align" | "side" | "sideOffset" | "alignOffset">) | — |
| variant | "default" | "outline" | null | "default" |
Também aceita as props de Base UI e React, incluindo className e os atributos de DOM.
SidebarMenuSkeleton
| Prop | Tipo | Padrão |
|---|---|---|
| showIcon | boolean | false |
Também aceita as props de React, incluindo className e os atributos de DOM.
SidebarMenuSubButton
| Prop | Tipo | Padrão |
|---|---|---|
| isActive | boolean | false |
| size | "md" | "sm" | "md" |
Também aceita as props de Base UI e React, incluindo className e os atributos de DOM.
SidebarProvider
| Prop | Tipo | Padrão |
|---|---|---|
| defaultOpen | boolean | true |
| onOpenChange | ((open: boolean) => void) | — |
| open | boolean | — |
Também aceita as props de React, incluindo className e os atributos de DOM.
SidebarTrigger
| Prop | Tipo | Padrão |
|---|---|---|
| size | "md" | "xs" | "sm" | "lg" | "icon-md" | "icon-xs" | "icon-sm" | "icon-lg" | null | — |
| variant | "link" | "default" | "outline" | "secondary" | "ghost" | "destructive" | null | — |
Também aceita as props de Base UI e React, incluindo className e os atributos de DOM.
SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuBadge, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubItem, SidebarRail, SidebarSeparator não têm props próprias — aceitam apenas as props herdadas, incluindo className e os atributos de DOM.
- Orientação, acessibilidade e relacionados: documentação
- Anatomia: exemplo desta página
- Demonstrações e playground: componente real de @voxmente/ui
- Referência da API: TypeScript do pacote
- Cor, espaçamento e raio das demonstrações: tokens de theme.css