2.8 KiB
2.8 KiB
| type | name | description | scope | trigger | priority | updatedAt |
|---|---|---|---|---|---|---|
| rule | modal-dialog-padrao-betha | Define a estrutura obrigatória de modais e dialogs MUI no padrão Betha — header escuro, body branco, footer cinza — para os frontends React do ecossistema GOV | global | model_decision | alta | 2026-09-28 |
Regra: Padrão Modal/Dialog MUI — Estrutura Betha
Todo modal/dialog nos frontends React do ecossistema GOV deve seguir a estrutura visual Betha: header escuro + body branco + footer cinza.
Estrutura Obrigatória
<Dialog
open={open}
onClose={onClose}
PaperProps={{
sx: {
borderRadius: "0.25rem",
boxShadow: "0 0.5rem 1rem rgba(0,0,0,.15)",
}
}}
>
{/* HEADER — escuro */}
<DialogTitle
sx={{
backgroundColor: "#343a40",
color: "#ffffff",
padding: "0.75rem 1rem",
position: "relative",
}}
>
Título do Modal
<IconButton
onClick={onClose}
size="small"
sx={{ position: "absolute", right: 8, top: 8, color: "#ffffff" }}
>
<CloseIcon fontSize="small" />
</IconButton>
</DialogTitle>
{/* BODY — branco */}
<DialogContent sx={{ backgroundColor: "#ffffff", padding: "1rem" }}>
{/* conteúdo */}
</DialogContent>
{/* FOOTER — cinza claro */}
<DialogActions
sx={{
backgroundColor: "#f8f9fa",
borderTop: "1px solid #dee2e6",
padding: "0.75rem 1rem",
}}
>
<Button variant="outlined" color="secondary" onClick={onClose}>
Cancelar
</Button>
<Button variant="contained" color="primary" onClick={onConfirm}>
Confirmar
</Button>
</DialogActions>
</Dialog>
Tokens dos Estilos
| Região | Cor | Hex |
|---|---|---|
| DialogTitle bg | Dark | #343a40 |
| DialogTitle color | Branco | #ffffff |
| DialogContent bg | Branco | #ffffff |
| DialogActions bg | Light | #f8f9fa |
| DialogActions border | Border | #dee2e6 |
| Dialog shadow | — | 0 0.5rem 1rem rgba(0,0,0,.15) |
| Dialog radius | — | 0.25rem |
Botões de Ação
| Papel | Variante | Cor |
|---|---|---|
| Cancelar / Fechar | outlined |
secondary |
| Confirmar / Salvar | contained |
primary |
| Destrutivo (excluir) | contained |
error |
Regras
✅ Correto: sempre usar IconButton com CloseIcon no DialogTitle em posição absolute
✅ Correto: DialogActions sempre com borderTop e backgroundColor cinza
❌ Incorreto: header branco ou sem cor de fundo definida
❌ Incorreto: botões sem variante e cor explícitas
❌ Incorreto: usar Modal nu do MUI — sempre usar Dialog com as 3 regiões
Impacto
Evita modais com aparências inconsistentes entre telas e garante conformidade com a identidade visual Betha exigida pelo parceiro.
Referências
- Rule:
theme-provider-mui-betha - Rule:
estilos-design-system