vaiperui

componentes / banner

Banner

Mensagem de página inteira, com ação opcional e botão de fechar.

Como usar

Ocupa a largura do container, sem arredondamento, então coloque-o no topo da página. Use para janelas de manutenção, anúncios e avisos de teste. Mesmos roles de status do `Alert`.

preview
Manutenção programada hoje às 22h.
Banner.tsx
import { Banner, Button } from "vaiperui";
<Banner
action={<Button size="sm" variant="transparent">Saiba mais</Button>}
onDismiss={() => setOpen(false)}
>
Manutenção programada hoje às 22h.
</Banner>

Cores

preview
primary
primary
success
success
warning
danger
cores.tsx
<Banner variantColor="primary">primary</Banner>
<Banner variantColor="success">success</Banner>
<Banner variantColor="warning">warning</Banner>
<Banner variantColor="danger">danger</Banner>

Tamanhos

preview
sm
sm
md
md
lg
lg
tamanhos.tsx
<Banner size="sm">sm</Banner>
<Banner size="md">md</Banner>
<Banner size="lg">lg</Banner>

Cor personalizada

preview
Violeta
Violeta
cor-personalizada.tsx
<Banner customColor="#8b5cf6">Violeta</Banner>

Props

PropValoresPadrãoDescrição
variantColorprimary | success | warning | dangerprimaryCor e ícone padrão. warning e danger usam role=alert, os demais role=status
customColorstring | { light, dark }nenhumQualquer cor CSS (ou um par por tema). Substitui o variantColor
sizesm | md | lgmdEspaçamento e tamanho do texto
iconReactNode | falseícone de statusSeu próprio ícone, ou false para ocultar
actionReactNodenenhumEspaço para uma ação, como um Button pequeno transparente ou um link
onDismiss() => voidnenhumMostra o botão de fechar e roda ao clicar; você decide se desmonta
dismissLabelstringDismissNome acessível do botão de fechar
(nativas)HTMLAttributes<HTMLDivElement>nenhumrole (substitui o padrão), className, style, aria-*, ref etc.

Acessibilidade

  • Mesmos roles do `Alert`: `role="alert"` para `warning` e `danger`, `role="status"` para `primary` e `success`; `role` pode ser sobrescrito.
  • O banner é um `div` simples, não um landmark; ele não recebe `role="banner"`.
  • O ícone de status é `aria-hidden`.
  • O botão de fechar é um `<button>` real com `aria-label` vindo de `dismissLabel` (padrão "Dismiss").
  • O slot `action` renderiza o seu elemento; mantenha-o um botão ou link focável.

Tenha em mente

  • Traduza `dismissLabel`; o padrão é em inglês.
  • Não dependa só da cor; o texto da mensagem deve dizer o que aconteceu.
  • Fechar não gerencia o foco, e um banner exibido no carregamento pode não ser anunciado por todos os leitores de tela.