Use Modal quando a interface precisar de diálogo com foco contido, fechamento explícito e backdrop.
Modal
Diálogo com foco contido, fechamento explícito e backdrop. A documentação abaixo separa composição, comportamento e adaptação visual de cada variante.
Evite a família quando uma composição semântica mais simples comunicar a mesma ação com menos carga visual.
A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Básico (default)
Básico (default), preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-primary" type="button" data-modal-open="demoModal">Abrir modal</button>
<button class="sc-btn sc-btn-outline" type="button" data-modal-open="demoModal">Abrir (outline)</button>
</div><div class="sc-modal" id="demoModal">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Modal Smart UI</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<p class="doc-muted">Este modal fecha por backdrop, botão, ESC e faz trap de TAB dentro.</p>
<input class="sc-input" placeholder="Campo para testar foco">
<button class="sc-btn sc-btn-glass" type="button">Outro foco</button>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-glass" type="button" data-modal-close="">Cancelar</button>
<button class="sc-btn sc-btn-primary" type="button" data-modal-close="">OK</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Confirmação
Confirmação, preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-glass" type="button" data-modal-open="demoModal2">Abrir confirmação</button>
</div><div class="sc-modal" id="demoModal2">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Confirmação</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<p class="doc-muted">Modelo rápido para confirmação.</p>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-outline" type="button" data-modal-close="">Voltar</button>
<button class="sc-btn sc-btn-primary" type="button" data-modal-close="">Confirmar</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Small
Small, preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-outline" type="button" data-modal-open="demoModalSm">Abrir small</button>
</div><div class="sc-modal" id="demoModalSm">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel sc-modal-panel--sm" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Modal pequeno</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<p class="doc-muted">Ideal para confirmações.</p>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-glass" type="button" data-modal-close="">OK</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Large (grid)
Large (grid), preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-outline" type="button" data-modal-open="demoModalLg">Abrir large</button>
</div><div class="sc-modal" id="demoModalLg">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel sc-modal-panel--lg" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Modal grande</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<div class="sc-grid sc-cols-2 sc-gap-4">
<div class="sc-card sc-card-outline sc-card-compact">Coluna A</div>
<div class="sc-card sc-card-outline sc-card-compact">Coluna B</div>
</div>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-outline" type="button" data-modal-close="">Cancelar</button>
<button class="sc-btn sc-btn-primary" type="button" data-modal-close="">Salvar</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Fullscreen
Fullscreen, preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-outline" type="button" data-modal-open="demoModalFull">Abrir fullscreen</button>
</div><div class="sc-modal" id="demoModalFull">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel sc-modal-panel--fullscreen" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Fullscreen</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<p class="doc-muted">atil para editores, fluxos complexos e telas cheias.</p>
<div class="sc-card sc-card-outline">Conteúdo</div>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-glass" type="button" data-modal-close="">Fechar</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Side sheet
Side sheet, preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-outline" type="button" data-modal-open="demoModalSide">Abrir side sheet</button>
</div><div class="sc-modal" id="demoModalSide">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel sc-modal-panel--side" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Side sheet</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<div class="sc-field">
<label class="sc-label" for="sideTitle">Título</label>
<input id="sideTitle" class="sc-input" placeholder="Ex.: Meu item">
</div>
<div class="sc-field">
<label class="sc-label" for="sideDesc">Descrição</label>
<textarea id="sideDesc" class="sc-textarea" placeholder="Detalhes⬦"></textarea>
</div>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-outline" type="button" data-modal-close="">Cancelar</button>
<button class="sc-btn sc-btn-primary" type="button" data-modal-close="">Salvar</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Form (cadastro rápido)
Form (cadastro rápido), preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-primary" type="button" data-modal-open="demoModalForm">Abrir form</button>
</div><div class="sc-modal" id="demoModalForm">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Novo cliente</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<div class="sc-grid sc-cols-2 sc-gap-3">
<div class="sc-field">
<label class="sc-label" for="mName">Nome</label>
<input id="mName" class="sc-input" placeholder="Ex.: Maria">
</div>
<div class="sc-field">
<label class="sc-label" for="mPhone">Telefone</label>
<input id="mPhone" class="sc-input" placeholder="(11) 99999-9999">
</div>
</div>
<div class="sc-field">
<label class="sc-label" for="mEmail">E-mail</label>
<input id="mEmail" class="sc-input" placeholder="maria@email.com">
</div>
<div class="sc-field">
<label class="sc-label" for="mNote">Observação</label>
<textarea id="mNote" class="sc-textarea" placeholder="Notas⬦"></textarea>
</div>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-outline" type="button" data-modal-close="">Cancelar</button>
<button class="sc-btn sc-btn-primary" type="button" data-modal-close="">Salvar</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.
Conteúdo longo (scroll)
Conteúdo longo (scroll), preservado do laboratório original e isolado para uso e teste independente.
HTML e exemplo
<div style="display:flex; gap:10px; flex-wrap:wrap;">
<button class="sc-btn sc-btn-glass" type="button" data-modal-open="demoModalScroll">Abrir conteúdo longo</button>
</div><div class="sc-modal" id="demoModalScroll">
<div class="sc-modal-backdrop"></div>
<div class="sc-modal-panel" role="document">
<div class="sc-modal-header">
<h3 class="sc-modal-title">Termos (exemplo)</h3>
<button class="sc-modal-close" type="button" data-modal-close="" aria-label="Fechar"></button>
</div>
<div class="sc-modal-body">
<p class="doc-muted">Esse modelo testa scroll interno do modal (conteúdo maior que a tela).</p>
<div class="sc-card sc-card-outline sc-card-compact">
<p style="margin:0;">1) Uso permitido conforme a política.</p>
<p style="margin:10px 0 0;">2) Dados são processados com segurança.</p>
<p style="margin:10px 0 0;">3) Cancelamento pode ser solicitado a qualquer momento.</p>
<p style="margin:10px 0 0;">4) Este texto é apenas um placeholder.</p>
<p style="margin:10px 0 0;">5) Repetição para simular conteúdo longo.</p>
<p style="margin:10px 0 0;">6) Repetição para simular conteúdo longo.</p>
<p style="margin:10px 0 0;">7) Repetição para simular conteúdo longo.</p>
<p style="margin:10px 0 0;">8) Repetição para simular conteúdo longo.</p>
<p style="margin:10px 0 0;">9) Repetição para simular conteúdo longo.</p>
<p style="margin:10px 0 0;">10) Repetição para simular conteúdo longo.</p>
</div>
</div>
<div class="sc-modal-footer">
<button class="sc-btn sc-btn-outline" type="button" data-modal-close="">Fechar</button>
<button class="sc-btn sc-btn-primary" type="button" data-modal-close="">Aceitar</button>
</div>
</div>
</div>Classes, JavaScript e API
Inicialize modal após o DOM. Os atributos data-* do exemplo são a API declarativa.
- Plugin
- modal
- Dependências
- smart-ui.js
- Desde
- 0.1.0
Acessibilidade, teclado e movimento
- Foco visível e ordem de leitura preservados.
- Rótulos acessíveis devem acompanhar controles sem texto.
- A interação preserva foco visível, ordem lógica de Tab e acionamento por Enter ou Espaço quando aplicável.
Não depende de movimento contínuo.
Temas e responsividade
Compatível com os temas Default, Clean e Tech nos modos claro, escuro e sistema.
As composições reduzem colunas, preservam alvos de toque e evitam rolagem horizontal a partir de 320 px.