Menu de contexto
Menu de contexto com as ações de uma coisa só, abertas com o clique direito, um toque longo ou o teclado. É um atalho, então toda ação nele também precisa de um caminho visível.
Instalação
Configure o Camaleo uma vez (Instalação) e importe as partes que precisar. O popup vai para um portal, na posição do ponteiro, e mantém o estilo, o modo e a cor da marca da página em volta.
import { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuSeparator } from "@camaleo/react";Anatomia
O ContextMenu guarda o estado de aberto. O ContextMenuTrigger (data-slot="context-menu-trigger") é a área que a pessoa clica com o botão direito; o ContextMenuContent renderiza o popup abaixo num portal. Cada parte tem um data-slot que você pode usar no CSS.
Exemplos
Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a marca da barra acima, e todos começam fechados: clique neles com o botão direito.
Numa linha de arquivo
O uso clássico: as ações de um arquivo, onde o ponteiro já está. O tabIndex={0} deixa quem usa teclado focar a linha e abrir o menu com Shift+F10 ou a tecla Menu.
Numa área de desenho
Num quadro vazio não há onde pôr um botão, então o clique direito é onde a pessoa procura. Mantenha os mesmos comandos numa barra de ferramentas.
Grupos e separadores
Um ContextMenuGroupLabel em cada grupo ajuda a pessoa a percorrer um menu mais longo; o grupo destrutivo vem por último.
Com atalhos
Quem clica com o botão direito está aprendendo. Mostre o atalho com Kbd e use aria-keyshortcuts, para que da próxima vez a pessoa pule o menu.
Agir e avisar
Clique na nota com o botão direito e escolha uma ação. O foco volta à nota, e uma linha com role="status" diz o que aconteceu.
Também num menu visível
Um menu de contexto é escondido por natureza. Coloque as mesmas ações atrás de um botão "⋯", a partir de uma lista só, para quem usa toque, teclado ou leitor de tela encontrar.
Itens de marcar e de opção
Clique no quadro com o botão direito e mude as configurações: o ContextMenuCheckboxItem e o ContextMenuRadioItem mantêm o menu aberto e informam aria-checked, então dá para mudar várias de uma vez.
Submenu
Ponha uma lista de destinos atrás de um item "Mover para" em vez de esticar o menu; → abre o submenu, ← volta, e a pasta atual fica desativada.
Em contexto
O menu de contexto acelera um trabalho que já tem um caminho visível. Estas são telas inteiras que você pode copiar, no estilo que escolheu.
- Contrato de locação 2027.pdf2,4 MB
- Orçamento 2027.xlsx860 KB
- Planta baixa.png3,1 MB
Redesenhar a página de checkout
Prazo 12/11/2026 · Rafael Moreira
O novo checkout está em homologação. Alguém consegue testar o campo de cupom antes de sexta?
Boas práticas
O clique direito é um atalho para quem já conhece; o botão "⋯" é a entrada para todo mundo.
Nada na tela diz que elas existem, e no celular ou com leitor de tela ninguém as encontra.
Clique direito num comentário: responder, editar, copiar. O menu responde "o que posso fazer com isto?".
Configurações e Sair não têm nada a ver com o comentário, e ficam no cabeçalho, onde a pessoa espera.
Props
danger pinta uma ação destrutiva. Coloque por último, depois de um separador.<a> para um link.Estas são as props do ContextMenuItem. O ContextMenu recebe as props da raiz do Base UI: open, onOpenChange, disabled e actionsRef. O ContextMenuCheckboxItem recebe checked, defaultChecked, onCheckedChange e shortcut; o ContextMenuRadioGroup recebe value, defaultValue e onValueChange, e cada ContextMenuRadioItem, um value. Envolva o ContextMenuSubTrigger e o ContextMenuSubContent num ContextMenuSub. O ContextMenuTrigger renderiza uma <div>: passe tabIndex={0} para ela receber foco, ou render para usar outro elemento.
Styling hooks
Mude o visual sem fazer fork: use os atributos ou defina os tokens num elemento pai, num estilo ou no próprio popup.
Atributos
Tokens que ele lê
Cor
Forma e tamanho
Tipografia e movimento
Só deste componente
Acessibilidade
- Nada na tela avisa que existe um menu de contexto. Toda ação dele precisa estar também num botão ou menu visível.
- Os itens são menuitem; os de marcar são menuitemcheckbox e os de opção, menuitemradio, os dois com aria-checked. O gatilho do submenu informa aria-haspopup e aria-expanded.
- O gatilho é uma <div>: passe tabIndex={0} para quem usa teclado conseguir focar e abrir o menu com Shift+F10 ou a tecla Menu. Linhas que já têm um botão "⋯" podem dispensar isso e economizar uma parada de Tab.
- Em telas de toque, um toque longo abre o menu; quem usa leitor de tela raramente o encontra, mais um motivo para o caminho visível.
- O popup vai para um portal mas mantém o estilo pelo PortalScope, e o contraste passa no WCAG 2.2 AA nos 13 estilos.