Toast
Mensagens breves que se empilham com ordem, expandem no hover, saem com deslize e transformam um estado de carregamento em sucesso ou erro no próprio lugar.
pnpm dlx shadcn@latest add https://hextaui.com/r/toast.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react @tabler/icons-react cnCopie e cole o código a seguir no seu projeto.
components/ui/toast.tsx components/ui/button.tsx components/ui/spinner.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Adicione <Toaster /> uma vez, perto da raiz do seu app.
Depois chame toast de qualquer lugar, inclusive fora de componentes React.
Os toasts se empilham numa pilha organizada, com o mais novo na frente. Passe o mouse ou foque a pilha para abri-la em leque; todos os temporizadores pausam enquanto você lê. Deslize um toast em direção à borda para dispensá-lo.
Tipos
Todo toast usa a mesma superfície calma; apenas o ícone leva a cor.
Promise
toast.promise mostra um spinner e depois se transforma em um toast de sucesso ou erro no mesmo lugar, com o ícone surgindo ao mudar.
Ação
Passe action para um botão como Undo. Clicar nele também dispensa o toast.
Atualizar no lugar
Guarde o id de toast.loading e altere-o com toast.update, inclusive o tipo.
Sem duplicatas
Dê um id a um toast e chamá-lo de novo atualiza o existente em vez de empilhar uma cópia.
| Tecla | Ação |
|---|---|
| F6 | Move o foco para os toasts e os abre em leque. |
| Tab | Move entre as ações dos toasts e os botões de fechar. |
| Esc | Dispensa o toast com foco. |
- Os toasts são anunciados de forma educada;
toast.erroré anunciado imediatamente. - Os temporizadores pausam enquanto o ponteiro ou o foco está nos toasts, então ninguém precisa correr contra uma contagem regressiva.
- Os botões de fechar aparecem no hover e no foco, e ficam sempre visíveis em telas touch.
- Com movimento reduzido, os toasts aparecem com fade em vez de deslizar.
| Prop | Tipo | Padrão |
|---|---|---|
positionCelulares sempre usam a largura total. | "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | "bottom-right" |
limitToasts exibidos ao mesmo tempo; os mais antigos desaparecem. | number | 3 |
timeoutTempo padrão na tela, em ms. | number | 5000 |
| Atributo | Descrição |
|---|---|
data-slot="toaster" | O viewport, com data-position. |
data-slot="toast" | Cada toast, com data-type, data-expanded e data-swiping. |
| Prop | Tipo | Padrão |
|---|---|---|
description | ReactNode | – |
action | { label: ReactNode; onClick?: (event) => void } | – |
idReutilize para atualizar em vez de duplicar. | string | – |
timeoutO padrão é o timeout do Toaster. Mensagens longas ficam mais tempo, cerca de 250 palavras por minuto. | number | – |
priority | "low" | "high" | "low" |
onClose | () => void | – |
onRemove | () => void | – |
Também toast.success, toast.error, toast.warning, toast.info, toast.loading, toast.promise, toast.update e toast.dismiss. Cada um retorna ou recebe o id do toast.
- ButtonBotões em todas as variantes e tamanhos, com um fluxo integrado de carregamento, sucesso e erro que dispensa o spinner em requisições rápidas.
- SpinnerUm indicador de carregamento com tracinhos no estilo Apple ou um anel que "respira", que pode esperar antes de aparecer e permanecer o suficiente para não piscar.
- AlertMensagens inline para status e feedback, com uma superfície neutra, um ícone colorido e um botão de dispensar que recolhe suavemente.
- EmptyUm espaço reservado para telas que ainda não têm nada a mostrar, com ícone, mensagem e a próxima ação.
- ProgressUma barra ou anel que mostra o quanto uma tarefa avançou, suaviza entre as atualizações e desliza enquanto o total é desconhecido.
- SkeletonPlaceholders que esperam 150ms antes de aparecer, assumem o tamanho exato do conteúdo que envolvem e o fazem surgir com fade sem mover nada.
Usado em blocos
Blocos que se baseiam em Toast.
- API keysA página de chaves de API de um produto de IA, como nos consoles da OpenAI e da Anthropic. Crie chaves com permissões restritas e uma expiração, veja o segredo uma única vez com uma cópia que confirma, revogue com desfazer, renomeie no próprio lugar, faça a rotação com um período de tolerância e veja o uso por chave.
- ArtifactO painel ao lado de um chat de IA que mostra o que o modelo criou. Páginas web, SVGs, documentos e código chegam em streaming ao vivo e depois passam para uma prévia isolada em sandbox, com versões que você pode comparar e restaurar, uma divisão redimensionável e um bottom sheet no celular.
- Chat SidebarA barra lateral de um app de chat. Logo, busca e Novo chat no topo, seus próprios links abaixo, chats fixados, projetos que se expandem para mostrar seus chats, recentes agrupados por dia e linhas com menus de hover e de clique direito, renomeação inline, exclusão com desfazer e estados de resposta ao vivo.
- HextaAIUm app de chat de IA completo, construído com todos os blocos de IA do HextaUI. Conversas em uma barra lateral, raciocínio com fontes, chamadas de ferramentas com diffs e aprovações, um plano que você revisa antes de o agente executar, Markdown e código em streaming e modo de voz silencioso, tudo movido por partes de mensagem do AI SDK.