Pular para o conteúdo

Modal

Dialog centralizado para decisões, confirmação e conteúdo que bloqueia o fluxo.

Confirmar exclusão

Esta ação não pode ser desfeita.

O paciente e todos os dados associados serão removidos permanentemente.

Instalação

Instale Dialog e Button da sua stack e rode o comando individual ITpS em seguida. O comando itps add modal é theme-only: ele valida o slug e confirma que o contrato visual vem do tema ITpS, das classes copy-first e dos snippets desta página.

terminal · React/Next

pnpm dlx shadcn@latest add dialog button
pnpm dlx github:ITPS/sinapse-ui-cli add modal

terminal · Vue3/Nuxt4

pnpm dlx shadcn-vue@latest add dialog button
pnpm dlx github:ITPS/sinapse-ui-cli add modal

O comando individual adapta só este componente; não instala o catálogo inteiro.

Uso

Em React/Next com shadcn/ui e Vue3/Nuxt4 com shadcn-vue, use os compound components de Dialog. A stack gerencia foco, portal, ESC e acessibilidade.

Para HTML ou wrappers finos, use <dialog> nativo com itps-modal. No site, src/scripts/overlays.ts inicializa [data-modal], abre triggers com data-modal-open e fecha controles com data-modal-close.

Exemplos

Estrutura

PeçaReact/Next e Vue3/Nuxt4HTML
RaizDialog<dialog class="itps-modal" data-modal>
TriggerDialogTrigger[data-modal-open="id-do-modal"]
CabeçalhoDialogHeader, DialogTitle, DialogDescriptionitps-modal__header, aria-labelledby, aria-describedby
AçõesDialogFooteritps-modal__footer
FecharDialogCloseitps-modal__close ou [data-modal-close]

Status

Use alert quando a decisão pede atenção e error quando existe falha ou bloqueio.

Sem conexão

Suas alterações foram salvas localmente.

Confira a conexão antes de continuar o atendimento.

Falha no upload

O arquivo excede 10 MB.

Escolha outro arquivo ou compacte o documento antes de tentar novamente.

API copy-first

Classe/atributoUso
itps-modalSuperfície visual do <dialog>.
itps-modal--alert, itps-modal--errorStatus visual para atenção e bloqueio.
itps-modal__header, itps-modal__body, itps-modal__footerAnatomia interna.
itps-modal__closeBotão de fechamento com nome acessível.
data-modalMarca o dialog inicializável pelo script.
data-modal-open, data-modal-closeAbre por id e fecha o dialog atual.
aria-labelledby, aria-describedbyConectam título e descrição ao dialog.
aria-labelNomeia o botão de fechar quando ele usa só ícone.

Acessibilidade

Use modal para confirmação, decisão bloqueante ou tarefa curta. Para feedback transitório prefira Toast; para conteúdo longo prefira Side Panel; para informação sem bloqueio prefira Callout ou Banner.

No shadcn, preserve DialogTitle e DialogDescription. No copy-first, conecte título e descrição com aria-labelledby e aria-describedby, use botão real para fechar com aria-label="Fechar" e deixe o <dialog> nativo controlar ESC e modalização.