Menubar
Barra de menus de aplicação desktop, com itens, checkbox, radio e submenus abertos por clique ou teclado.
Instalação
Recebe correções por update de versão. O caminho recomendado.
npm i @trdr/ui
import { Menubar } from "@trdr/ui/menubar"Uso
import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarMenu } from "@trdr/ui/menubar"
export function Exemplo() {
return <Menubar />
}Props
MenubarPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>MenubarTriggerPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>MenubarContentPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>MenubarItemPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item>| Prop | Tipo | Descrição |
|---|---|---|
| inset? | boolean | Acrescenta um recuo a esquerda para alinhar com itens que tem indicador (checkbox/radio). |
MenubarCheckboxItemPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>MenubarRadioGroupPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioGroup>MenubarRadioItemPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>MenubarLabelPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label>| Prop | Tipo | Descrição |
|---|---|---|
| inset? | boolean |
MenubarSeparatorPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>MenubarSubTriggerPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger>| Prop | Tipo | Descrição |
|---|---|---|
| inset? | boolean |
MenubarSubContentPropsestende React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>Quando usar
Use o Menubar quando o produto se comporta como uma aplicacao desktop e precisa do
vocabulario de menu classico: Arquivo, Editar, Exibir, cada um abrindo uma lista de comandos,
alternancias e opcoes agrupadas. Faz sentido especialmente num terminal com controles de janela
proprios (minimizar, maximizar, fechar), onde uma barra de menus reforça essa identidade de
aplicativo nativo em vez de site.
Quando nao usar
Nao use para a navegacao principal entre areas do produto (Mercado, Portfolio...): isso e o
NavigationMenu, que tem semantica de rota, nao de comando. Nao use para um menu de acoes de
um unico elemento (o "..." de uma linha, o menu de um card): o dropdown-menu e mais leve e
nao carrega a semantica de barra fixa com varios menus lado a lado.
Anatomia
Menubar(data-slot="menubar"): a raiz, a barra em si (role="menubar").MenubarMenu: agrupa umMenubarTriggercom seuMenubarContent. Nao renderiza elemento proprio, e so contexto.MenubarTrigger(data-slot="menubar-trigger"): o nome do menu na barra ("Arquivo").MenubarPortal: o portal que leva o conteudo do menu para fora da arvore local.MenubarContenteMenubarSubContentja o usam por baixo dos panos; fica exportado para quem precisar compor um portal proprio (por exemplo, apontarcontainerpara outro no do DOM).MenubarContent(data-slot="menubar-content"): o painel do menu.MenubarItem(data-slot="menubar-item"): um comando simples. Aceitainsetpara alinhar com itens vizinhos que tem indicador de checkbox ou radio.MenubarCheckboxItem(data-slot="menubar-checkbox-item"): alternancia independente dentro do menu, com marca de check quando ativa.MenubarRadioGroup/MenubarRadioItem(data-slot="menubar-radio-group"/"menubar-radio-item"): escolha unica entre opcoes do grupo, com uma bolinha marcando a selecionada.MenubarLabel(data-slot="menubar-label"): titulo de uma secao dentro do menu, sem interacao.MenubarSeparator(data-slot="menubar-separator"): linha divisoria entre grupos de itens.MenubarSub/MenubarSubTrigger/MenubarSubContent(data-slot="menubar-sub-trigger"/"menubar-sub-content"): submenu aninhado, aberto a partir de um item que tem mais opcoes (por exemplo "Tema" abrindo "Escuro" e "Claro").
Acessibilidade
A barra usa o padrao WAI-ARIA de menubar: Seta esquerda e Seta direita trocam de menu sem
precisar fechar e reabrir, Seta para baixo entra no menu aberto e navega pelos itens, Enter
ou Espaco ativa o item focado, Esc fecha o menu atual e devolve o foco ao trigger que o
abriu. Cada item usa data-highlighted (nao :hover) para marcar o item ativo por teclado ou
mouse, entao o estado visual e o mesmo nos dois casos. Todo MenubarCheckboxItem e
MenubarRadioItem expõe o estado via aria-checked, herdado do Radix.
Slots e tokens
Todo elemento renderizado carrega um data-slot para estilizar partes internas sem depender de classe da biblioteca. Os tokens listados são extraídos do código fonte.
[data-slot="menubar"][data-slot="menubar-checkbox-item"][data-slot="menubar-checkbox-item-indicator"][data-slot="menubar-content"][data-slot="menubar-item"][data-slot="menubar-label"][data-slot="menubar-radio-group"][data-slot="menubar-radio-item"][data-slot="menubar-radio-item-indicator"][data-slot="menubar-separator"][data-slot="menubar-sub-content"][data-slot="menubar-sub-trigger"][data-slot="menubar-trigger"]17 tokens usados
bg-border-subtlebg-currentbg-popoverbg-surface-primarybg-surface-secondaryborder-border-subtleoutline-nonering-offset-1ring-offset-2ring-offset-backgroundring-ringtext-b3text-b4text-content-secondarytext-content-tertiarytext-foregroundtext-popover-foreground