Índice da vitrine
Ações
Formulários
Retorno
Conteúdo
Retorno
Alerts em oito tons, modais nativos e os dois jeitos de dizer que algo está a caminho.
Alerts
Avisos em oito tons, a mesma paleta das intenções: os quatro semânticos de status e os quatro tonais, nomeados.
Modais
O dialog nativo em superfície opaca do tema: foco preso, Esc fecha, a página atrás trava e o fundo fica embaçado, ilegível, para o foco ser só o modal; clique fora não fecha. O modal aceita as mesmas intenções dos botões: a cunha da borda, como nos alerts, e a ação primária seguem o tom.
.es-dialog
.es-dialog--sm … .es-dialog--xxl
.es-dialog + .es-i--*
Modais de conta
Entrar, criar conta, recuperar e trocar a senha, e a sessão bloqueada: cinco composições prontas sobre o mesmo echo-modal. Nenhuma delas fala com a rede — cada uma emite submit com os dados e espera as props pending e error de quem chamou.
<auth-login-modal> · <auth-register-modal> · <auth-forgot-password-modal>
Os três conversam: os links de dentro de cada um trocam de modal sem fechar o fluxo.
<auth-update-password-modal> · <auth-lock-modal>
O bloqueio não tem botão de fechar e recusa o Escape; nesta amostra, qualquer senha com 8 caracteres desbloqueia.
Bloqueio e esqueletos
Os dois jeitos de dizer que algo está a caminho: o véu que cobre a região pronta e a mancha que ocupa o lugar do que ainda não chegou.
<echo-block>
Clique no botão para ver a região ser coberta. Enquanto o véu está no ar, o conteúdo fica inerte: o Tab não entra nele.
.es-skeleton
Toasts
O aviso que flutua sobre a página, empilhado por um composable global. A região de anúncio fica montada sempre, mesmo vazia: uma que só aparece junto com a mensagem costuma não ser lida.
useToast().push()
position + align
A posição mora no estado global, então qualquer lugar da aplicação pode pedir onde o aviso aparece.
timeout: 0
Com timeout zero o aviso fica até alguém fechar; o padrão some em 4,5 segundos.
Rodízios
Sempre aria-hidden: quem anuncia que algo carrega é o aria-busy da região, e um rodízio anunciado sozinho não diz o que está acontecendo.
.es-spinner
.es-spinner + .es-i--*