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

Toast

Notificação (toast) — um retorno curto depois de uma ação, que aparece num canto da tela e some em poucos segundos. Use para confirmar o que aconteceu sem tirar a pessoa do que ela está fazendo.

Feito com Base UIPadrão WAI-ARIA statusComponente clienteCódigo ↗
minimal · light · #3fa34d
type

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar.

import { ToastProvider, useToast } from "@camaleo/react";

Um provider para o app inteiro

Coloque o ToastProvider uma vez só, perto da raiz, dentro do StyleProvider. Ele cria o canto onde os toasts se empilham e a região que o leitor de tela lê. Com dois providers, você tem duas pilhas uma sobre a outra e o leitor de tela fala em dobro.

app/layout.tsx
import { StyleProvider, ToastProvider } from "@camaleo/react";

export default function RootLayout({ children }: { children: React.ReactNode }) {
	return (
		<html lang="pt-BR">
			<body>
				<StyleProvider styleName="editorial">
					<ToastProvider closeLabel="Fechar">{children}</ToastProvider>
				</StyleProvider>
			</body>
		</html>
	);
}

Depois é só chamar useToast() em qualquer componente abaixo dele:

const toast = useToast();
toast.add({ title: "Preferências salvas", type: "success" });

Anatomia

Um canto da tela (o viewport) que empilha os toasts. Cada toast tem o ícone do tom, um título, uma descrição e uma ação opcionais e um botão de fechar.

viewporttoastPreferências salvas
[data-slot="toast-viewport"][data-slot="toast"]título · descrição · ação · fechar

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima. Cada um tem seu próprio ToastProvider só para funcionar sozinho nesta página; no seu app, use o da raiz.

minimal · light · #3fa34d

Tons

Clique em cada um. O type define a cor e o ícone: informação para andamento, sucesso quando deu certo, atenção quando pode dar errado, erro quando falhou.

Com desfazer

Clique em arquivar e depois em desfazer. Ofereça desfazer em ações fáceis de reverter, em vez de perguntar "Tem certeza?" antes.

Mais tempo na tela

O timeout é em milissegundos, e o padrão é 5000. Dê mais tempo a uma mensagem longa, para a pessoa conseguir terminar de ler.

Fica até fechar

Com timeout: 0, o toast fica até a pessoa agir ou fechar. Use quando a mensagem ainda importa depois, como uma versão nova para recarregar.

Carregando, depois pronto

Clique em enviar. O toast.promise() mostra um toast de carregamento com spinner e depois o troca pelo de sucesso ou de erro quando a promise termina. Um toast só conta a história toda.

Urgente

O priority: "high" interrompe o leitor de tela. Guarde para problemas que a pessoa precisa saber na hora, como a internet cair.

Um toast para o lote

Depois de uma ação em lote, resuma num toast só: "12 contatos atualizados", e não doze toasts.

Lido sem mexer no foco

O toast é lido quando o leitor de tela fica livre, e o foco continua onde estava. A pessoa segue digitando.

Em contexto

O toast confirma ações feitas em outro ponto da página. São pedaços inteiros de interface para copiar, no estilo que você escolheu.

Revisão do planejamento do 3º trimestre

Marcus Lee · 4 respostas · última em 24/10

Arquivar uma conversaCard · Toast · Button

Tokens de design

design-tokens-v2.json · 1,4 MB

Exportar um arquivoCard · Toast · Button

Convide o time

Quem tiver este link entra no Acme Studio como editor até 30/11.

Copiar um link de conviteCard · Toast · Button

Boas práticas

FaçaConfirme o que acabou de acontecer.

Poucas palavras, lidas de relance: o que foi feito e, se ajudar, onde encontrar.

EvitePedir uma decisão num toast.

Ele some sozinho, e quem usa teclado pode nem chegar até ele. Para escolhas obrigatórias, use um diálogo.

FaçaUm toast para uma ação em lote.

"4 conversas arquivadas" diz tudo de uma vez e deixa a tela limpa.

EviteUm toast por item.

Uma pilha de toasts cobre a página, e o leitor de tela lê cada um deles.

Props

PropriedadeTipoPadrãoDescrição
closeLabelstring"Close"Nome do botão de fechar de cada toast, lido pelo leitor de tela. Traduza para o idioma da página.
timeoutnumber5000Tempo padrão na tela, em milissegundos, para todos os toasts. Com 0, eles ficam até a pessoa fechar.
limitnumber3Quantos toasts aparecem ao mesmo tempo. Os mais antigos recebem data-limited e ficam escondidos até um mais novo fechar.

O useToast() devolve add, update, close, promise e a lista toasts. O add recebe title, description, type, timeout, priority, actionProps e onClose, e devolve o id do toast. O type é info, success, warning ou danger; loading (com spinner) e error (igual a danger) também funcionam, e são os que o promise usa.

Styling hooks

Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou no viewport.

Atributos

data-toneinfo · success · warning · danger

Tokens que ele lê

Cor

--cml-border--cml-fg--cml-fg-muted--cml-focus-offset--cml-focus-ring--cml-focus-width--cml-popover-bg--cml-popover-border--cml-radius-surface--cml-shadow-popover--cml-surface-raised

Forma e tamanho

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

Tipografia e movimento

--cml-duration-base--cml-ease-standard--cml-motion-distance

Só deste componente

--cml-corner-shape--cml-item-highlight

Acessibilidade

F6Leva o foco para a pilha de toasts, de qualquer lugar da página.
TabPassa pelos botões de ação e de fechar dos toasts.
EscapeFecha o toast que está com o foco.

Relacionados

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