Controls
Atom
Controls organiza filtros, buscas e ações relacionadas. Ele não decide prioridade: a hierarquia vem dos botões, labels e estados dentro do grupo.
Use Controls para manter ritmo entre campos compactos, botões de ação e seletores em toolbars operacionais. O grupo deve deixar claro o que é entrada, o que é filtro e o que executa uma ação.
Exemplos copiáveis
React
React
import * as React from "react"
type PulsoControlsProps = {
children: React.ReactNode
label?: string
align?: "start" | "center" | "end"
}
export function PulsoControls({ children, label = "Controles", align = "center" }: PulsoControlsProps) {
return (
<div
role="group"
aria-label={label}
data-align={align}
className="flex flex-wrap items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border)] bg-[var(--card)] p-2 data-[align=end]:justify-end data-[align=start]:items-start"
>
{children}
</div>
)
}<PulsoControls label="Filtros do monitoramento">
<input
aria-label="Buscar caso"
placeholder="Buscar caso"
className="h-9 min-w-56 rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--background)] px-3 text-sm"
/>
<button className="h-9 rounded-[var(--radius-sm)] border border-[var(--border)] px-3 text-sm">
Período: 7d
</button>
<button className="h-9 rounded-[var(--radius-sm)] bg-[var(--primary)] px-3 text-sm font-medium text-[var(--primary-foreground)]">
Aplicar
</button>
</PulsoControls>Quando usar
- Toolbars de busca, filtro e ordenação.
- Ações secundárias agrupadas por contexto.
- Controles compactos acima de tabela, lista ou painel.
- Preferências temporárias de visualização.
Quando não usar
- Para agrupar ações sem relação entre si.
- Para esconder hierarquia entre ação primária e secundária.
- Como substituto de formulário completo com labels, ajuda e validação.
- Para navegação persistente; use menu, tabs ou sidebar.
Acessibilidade
- Use
role="group"comaria-labelquando o agrupamento ajuda a compreensão. - Cada controle interno precisa de label próprio.
- Mantenha foco visível em todos os elementos do grupo.
- Preserve altura consistente para evitar desequilíbrio visual entre ações lado a lado.
Regras
- Um grupo deve ter um objetivo claro.
- Ação primária aparece no fim do fluxo do grupo.
- Não misture filtros permanentes com ações destrutivas.
- Use wrap em telas estreitas; não reduza labels até ficarem ambíguas.
- Mantenha o mesmo ritmo de altura entre input, select e button.
Last updated on