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.
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.
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.
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.
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
Tokens de design
design-tokens-v2.json · 1,4 MB
Convide o time
Quem tiver este link entra no Acme Studio como editor até 30/11.
Boas práticas
Poucas palavras, lidas de relance: o que foi feito e, se ajudar, onde encontrar.
Ele some sozinho, e quem usa teclado pode nem chegar até ele. Para escolhas obrigatórias, use um diálogo.
"4 conversas arquivadas" diz tudo de uma vez e deixa a tela limpa.
Uma pilha de toasts cobre a página, e o leitor de tela lê cada um deles.
Props
0, eles ficam até a pessoa fechar.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
Tokens que ele lê
Cor
Forma e tamanho
Tipografia e movimento
Só deste componente
Acessibilidade
- O toast é lido sem pressa, depois do que o leitor de tela está falando. Com priority: "high", ele interrompe.
- O toast nunca pega o foco, então nunca atrapalha quem está digitando.
- O tempo para enquanto o ponteiro está sobre a pilha ou o foco está dentro dela.
- Se o toast tem uma ação, garanta que dá para fazer a mesma coisa em outro lugar da página, ou use timeout: 0. Nem todo mundo chega nele em 5 segundos.