--- type: rule name: modal-dialog-padrao-betha description: Define a estrutura obrigatória de modais e dialogs MUI no padrão Betha — header escuro, body branco, footer cinza — para frontends React de gestão pública scope: global trigger: model_decision priority: alta updatedAt: "2026-10-14" --- # Regra: Padrão Modal/Dialog MUI — Estrutura Betha Nos projetos cujo `memorias-ia/modulo.yml` indica frontend React/MUI com estilo governamental/Betha, todo modal/dialog em `-front` deve seguir a estrutura visual Betha: **header escuro + body branco + footer cinza**. ## Estrutura Obrigatória ```typescript {/* HEADER — escuro */} Título do Modal {/* BODY — branco */} {/* conteúdo */} {/* FOOTER — cinza claro */} ``` ## 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 exigida. ## Referências - Identidade do Módulo: `memorias-ia/modulo.yml` - Rule: `theme-provider-mui-betha` - Rule: `estilos-design-system`