Pular para o conteúdo
// visualizar em
salvo em todas as páginas

Toolbar

Barra de ferramentas — uma fileira de controles relacionados, como os botões de formatação de um editor, que ocupa uma só parada do Tab. As setas andam entre eles.

Feito com Base UIPadrão WAI-ARIA ToolbarComponente clienteCódigo ↗
minimal · light · #3fa34d
orientation
loopFocus
disabled

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar. Ele renderiza no cliente.

import { Toolbar, ToolbarGroup, ToolbarButton, ToolbarToggle, ToolbarLink, ToolbarInput, ToolbarSeparator } from "@camaleo/react";

Anatomia

Um div com role="toolbar". Só um controle dele fica na ordem do Tab por vez; as setas mudam qual é. Um ToggleGroup dentro entra na mesma ordem quando os toggles são renderizados pelo ToolbarButton.

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima. Clique num deles e use o Tab e as setas.

minimal · light · #3fa34d
Horário de funcionamento nas festasDe 24/12 a 02/01 a loja abre das 9h às 14h. Pedidos feitos pelo site saem no dia 05/01.
2 selecionados
  • nº 4821Padaria EstrelaR$ 932,00
  • nº 4822Café AuroraR$ 460,00
  • nº 4823Mercado SolR$ 2.063,75

Ações para as linhas selecionadas

Selecione pedidos e clique em Exportar. A busca fica ao lado da toolbar, não dentro: ela procura na tabela, não na seleção, então tem sua própria parada do Tab.

Planta da lojaFerramenta: Caneta

Paleta de ferramentas vertical

Com orientation="vertical", as setas para cima e para baixo movem o foco. As ferramentas são um ToggleGroup, então só uma fica pressionada.

Botões de ícone com nome

Todo botão só de ícone precisa de aria-label. Um tooltip com as mesmas palavras mostra esse nome também para quem enxerga.

Ana Ribeiro12/03/2026Tabela de preços de marçoOi! Seguem os preços novos dos pacotes de 250 g. Você confere antes de sexta?

O que não cabe vai para Mais

Estreite a janela. Abaixo de 420 px ficam só Responder e Responder a todos; o resto vai para o menu Mais em vez de quebrar a linha.

Ainda não há o que desfazer.

Desativado, mas alcançável

Botões desativados continuam na ordem das setas, então a pessoa encontra o Desfazer e ouve por que ele está desligado. Passe focusableWhenDisabled={false} para pular um deles.

Um campo dentro da toolbar

Digite um número de página e aperte Enter. O ToolbarInput entra na ordem das setas; dentro dele as setas movem o cursor e só saem do campo nas pontas do texto.

Página inicialRascunho · editado por Ana

Links ao lado de botões

O ToolbarLink leva a outra página e o ToolbarButton age nesta; os dois dividem a mesma ordem das setas.

Em contexto

São pedaços inteiros de interface para copiar, no estilo que você escolheu.

Ana Ribeiro12/03/2026
Tabela de preços de marçoOi! Seguem os preços novos dos pacotes de 250 g. Você confere antes de sexta?

Leitor de e-mailCard · Toolbar · Tooltip · Menu · Avatar
Arquivos
  • Contratos—
  • nota-0326.pdf182 KB
  • tabela-precos-abril.xlsx48 KB
  • fachada.jpg2.4 MB
Gerenciador de arquivosCard · Toolbar · ToggleGroup · Tooltip · Menu
fachada.jpg · 2400 × 1600
100%
Visualizador de imagemCard · Toolbar · Tooltip

Boas práticas

FaçaAgrupe controles relacionados.

Histórico, formatação e inserir ganham cada um seu ToolbarGroup com nome, separados por divisórias.

EviteUma fileira comprida sem ordem.

Negrito ao lado de Desfazer ao lado de Imagem: a pessoa varre a fileira inteira toda vez.

FaçaPalavras para ações pouco conhecidas.

Negrito e Desfazer são reconhecidos pelo ícone. "Níveis" e "Vinheta", não.

EviteSó ícones, para ações que ninguém reconhece.

O leitor de tela ouve os nomes, mas o resto das pessoas precisa adivinhar ou passar o mouse em cada um.

Props

PropriedadeTipoPadrãoDescrição
aria-labelstring—Dá nome à toolbar, por exemplo "Formatação do texto".
disabledboolean—Desativa todos os controles da toolbar.
orientation"horizontal" | "vertical"'horizontal'Quais setas movem o foco: esquerda e direita, ou cima e baixo. Também coloca a toolbar em coluna.
loopFocusbooleantrueSe as setas voltam do último controle para o primeiro.

O ToolbarToggle recebe pressed e é controlado: inverta o valor no onClick. O ToolbarButton recebe disabled e focusableWhenDisabled (padrão true). O ToolbarGroup recebe disabled e um aria-label. O ToolbarInput recebe as props de <input>; dê nome a ele com aria-label.

Styling hooks

Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou na própria toolbar.

Atributos

data-orientationhorizontal · vertical
aria-pressed · data-pressednum ToolbarToggle pressionado
data-disablednum controle desativado
data-focusablenum controle desativado que continua focável

Tokens que ele lê

Cor

--cml-border-control--cml-border-subtle--cml-brand-50--cml-brand-700--cml-fg--cml-fg-secondary--cml-focus-ring--cml-surface-raised

Forma e tamanho

--cml-border-width--cml-radius-control

Tipografia e movimento

--cml-font-body

Só deste componente

--cml-item-hover--cml-toolbar-bg--cml-toolbar-btn-size--cml-toolbar-radius--cml-toolbar-shadow--cml-toolbar-toggle-active-fg
/* alvos maiores no app de desenho */
.canvas-tools [data-slot="toolbar"] {
  --cml-toolbar-btn-size: 2.5rem;
}

Acessibilidade

TabEntra na toolbar, no controle que teve o foco por último, e depois sai dela. A toolbar inteira é uma parada do Tab.
Seta direita / Seta esquerdaVai para o controle seguinte ou anterior, incluindo os toggles de um ToggleGroup. Do último volta para o primeiro (loopFocus).
Seta para baixo / Seta para cimaO mesmo, numa toolbar com orientation="vertical". Ali, esquerda e direita não fazem nada.
Enter / SpaceAtiva o botão, pressiona ou solta o toggle, ou abre o menu com o foco no primeiro item.
Home / EndVai para o primeiro ou o último controle. Num ToolbarInput, movem o cursor do texto.
EscapeNum menu aberto pela toolbar, fecha o menu e devolve o foco ao botão dele.

Relacionados

Esta página foi útil? · Editar esta página no GitHub