# Modais de QR do WhatsApp

| Campo | Valor |
|---|---|
| **status** | aprofundada — pronta para tasks |
| **rota pública** | todas (modal do shell, disparado pelo rodapé) |
| **feature** | `components/whatsapp-qr/` |
| **tela CMS** | Sistema → Layout, aba **WhatsApp QR** (`/admin/layout`) |
| **permissão** | já existe: `sistema.layout.editar` |
| **fonte do seeder** | `resources/js/components/whatsapp-qr/content.ts` (`WHATSAPP_QR_CONTENT`) |

## Premissas (sem pergunta extra)

| Tema | Decisão |
|---|---|
| Store | Reusar `settings` `group=layout`. Key JSON: `layout_whatsapp_qr` |
| Gatilho | `whatsappId` na linha do canal continua no [`003`](003-layout.md) R2 — **não** duplicar aqui |
| Tela | **Não** criar Manage* nova. Aba em `ManageLayoutPage` |
| IDs fixos | `4004-3500`, `3003-2119`, `0800-701-0412` — três entradas, sem adicionar/remover no form |
| Front | Ligar em [`integracao/005`](../integracao/005-whatsapp-qr.md) |

Não é: API do WhatsApp, chatbot, telefones da página Atendimento (`020`).

---

## 1. O que o editor vê

Aba **WhatsApp QR** no Sistema → Layout. Três seções (uma por canal). O ID é somente leitura.

---

## 2. Key `layout_whatsapp_qr`

Objeto indexado pelo ID do gatilho. Cada entrada:

| Campo | Seed (ex. `4004-3500`) |
|---|---|
| `eyebrow` | Central de atendimento / Central de Cobrança e Negociação / Ouvidoria |
| `title` | Fale com a gente por WhatsApp |
| `description` | Aponte sua câmera do celular para o QR Code abaixo. |
| `qrImage` | `/images/qrcode/qrcode-40043500.png` (etc.) |
| `webHref` | `https://wa.me/551140043500` (etc.) |
| `webLabel` | Acessar WhatsApp Web |

---

## 3. Seeder e form

`LayoutSettingsSeeder` grava a key. `LayoutFormState` hidrata lista fixa de 3 itens para o repeater (id oculto); desidrata de volta ao mapa por ID. Imagem QR = `ReplacementImage`. Upload vazio **não** zera.

Log continua `layout.updated`.

---

## 4. Testes

- Seeder: `4004-3500` tem eyebrow Central de atendimento e `qrImage` do PNG atual.
- Round-trip do form preserva os três IDs e `webHref`.
- Save de outro campo do Layout **não** apaga o copy do QR.

---

## 5. Fora

Tela própria. Permissão nova. Inventar canal. `006`.

## 6. Tasks

[`CMS-005-01`](../../tasks/CMS-005-01-whatsapp-qr-modal.md).
