Bolo de cenoura - 15hR$ 95
50 salgados - 17hR$ 180
Torta de limao - 18h30R$ 72
30 coxinhas - 19hR$ 108
A aposta: uma tira de 40px ancorada acima da topbar, que fica ali quieta ate a pessoa resolver o assunto, troca custo visual quase zero por presenca constante - e escapa do reflexo de "banner de cookie" porque nao chega no minuto zero, nao pede permissao e nao e um muro: e uma alca que abre no lugar e ensina.
Ninguem ignora tira fina por ser fina. Ignora porque banner de cookie chega antes de qualquer valor, fala de um assunto que nao e o da pessoa e termina em dois botoes de peso igual. Sao cinco coisas concretas, e da pra desfazer as cinco.
--brand-soft, alinhada a esquerda, com o simbolo do proprio app no comeco. Cookie banner e cinza de sistema, texto centralizado e generico. Aqui a tira le como uma linha do app, e ainda pega a cor do tenant.
Molduras de 390x844, com a topbar e a tabbar reais em volta pra dar a escala verdadeira.
A faixa entra como primeira linha do grid do .shell.v2, no mesmo slot da faixa
da demonstracao: grid-column:1/-1, sticky top:0, z-index:30.
Ela entra na conta de --faixa-h, entao --stick-top se recalcula e
nada da pagina fica escondido embaixo dela.
beforeinstallprompt disparou. O botao chama o prompt do sistema.
Nao baixa nada da loja de apps. E o mesmo Engrenou, com os mesmos dados - so que abre num toque, sem o navegador em volta.
Faz sentido, mas com menos ambicao. No computador a faixa ocupa as duas colunas do grid
(grid-column:1/-1), com o conteudo centralizado em 1200px pra nao virar aquela
tarja esticada de ponta a ponta. Ela so aparece se o beforeinstallprompt
realmente disparou - ou seja, Chrome e Edge. No Safari e no Firefox de computador nao ha
prompt nem caminho manual decente pra ensinar, entao simplesmente nao aparece nada:
ensinar um caminho ruim seria pior do que ficar quieto.
Aqui a copy tem regua de fita metrica, nao de gosto. Com o icone, o botao "Instalar" e o X de pe, sobram 215px pra frase numa tela de 390px. Medi as candidatas no navegador em vez de contar caractere no olho, e a primeira versao que eu tinha escrito ("Deixe o Engrenou na tela do celular") deu 220px e cortava com reticencias. Foi refeita.
Nomeia o resultado que da pra imaginar: um icone ali junto do WhatsApp. Nao usa "instalar" nem "baixar" na frase - pra quem vende bolo, essas palavras significam loja de aplicativos, memoria cheia e risco de cobranca, e e ai que o dedo vai no X. Comeca com um verbo de permissao ("deixe"), nao de ordem. E o melhor acidente da medicao: "tela inicial" e exatamente o nome do item que o iPhone vai mostrar ("Adicionar a Tela de Inicio"). A tira ja treina a palavra que a pessoa vai procurar.
Nomeia o atrito em vez do ganho, e e mais afiada pra quem entra digitando o endereco todo dia. Tres fraquezas honestas: nao cabe na tira (precisaria encolher pra "Sem digitar o endereco toda vez", 202px, perdendo o nome do produto); descreve uma chateacao, entao so liga em quem se reconhece nela; e quem entra por favorito ou por historico nao sente esse atrito - pra essa metade a frase nao diz nada. Fica como plano B.
| Onde | Texto exato |
|---|---|
| Tira fechada | Deixe o Engrenou na tela inicial - 195px de 215 disponiveis |
| Tira fechada, ate 360px | Engrenou na tela inicial - 145px. Variante curta por media query; e a frase que cede, nunca os controles, mesma regra que a faixa da demo ja usa |
| Botao, Android | Instalar - a mesma palavra que a folha do Chrome vai mostrar em seguida, pra nada surpreender |
| Botao, iPhone | Ver como - sem chevron, de proposito: o icone custava 18px e fazia a frase cortar. Com o painel aberto o botao sai de cena (o painel ja e a resposta) e quem recolhe e o "Fechar" la dentro |
| Botao, desktop | Instalar (frase: Abra o Engrenou numa janela so dele, sem procurar aba) |
| X | sem texto. aria-label="Dispensar" |
| Painel, titulo | No iPhone quem coloca e voce. Sao 3 toques: |
| Painel, passo 1 | Toque em [icone de compartilhar] na barra de baixo do Safari |
| Painel, passo 2 | Desca a lista e escolha Adicionar a Tela de Inicio |
| Painel, passo 3 | Toque em Adicionar. Pronto, o icone ja esta la. |
| Painel, rodape | Nao baixa nada da loja de apps. E o mesmo Engrenou, com os mesmos dados - so que abre num toque, sem o navegador em volta. |
| Painel, botao | Fechar - so recolhe a tira. Quem dispensa de vez e o X, e essa diferenca e de proposito: dois botoes de mesmo peso e o vicio do banner de cookie |
Tudo decidido com o que ja existe: nenhuma consulta nova ao banco, nenhum evento novo de instrumentacao (isso exigiria migracao na policy de eventos), nenhuma coluna nova.
eng_visita1_<bakeryId> que o Shell ja grava - zero consulta.VITE_PWA=1, que ja esta ligado).beforeinstallprompt guardado - o botao chama prompt.prompt() de verdade.matchMedia('(display-mode: standalone)') ou navigator.standalone. Esse e o teste que dispensa qualquer memoria: instalou, some sozinha pra sempre./loja/:slug e /m/:slug. Aquela tela e da cliente dela; o consumidor final nao recebe convite pra instalar ferramenta de gestao dos outros. Mesma fronteira que a Function _og.js ja aplica ao <link rel="manifest">.adm.engrenou.com.br. O pwa.js ja exclui esse host.NudgeCatalogo, que ja e a doutrina da casa: dispensou, volta uma unica vez 30 dias depois; dispensou a segunda, nunca mais.display-mode resolve.eng_pwa_faixa_<bakeryId> = {fechado_em, vezes}, dentro de try/catch como todo o resto ("modo privado: so nao lembra").ResizeObserver zera --faixa-h, a topbar sobe sozinha e nada salta.prefers-reduced-motion: sem animacao, corte seco.nav com meta:{para:'pwa_faixa'}, como o Tutorial ja faz.var(--brand) normalmente - so o simbolo e fixo.
(2) A tira soma 40px de altura permanente no celular (4,7% de uma tela de 844px) enquanto nao
for dispensada. E o preco da presenca constante, e e o que separa esta proposta de um convite pontual.
Mockup estatico, sem JS. Tokens copiados de app/src/styles/tokens.css e
app/src/styles.css; medidas da casca conferidas em app/src/styles/shell-v2.css.
Simbolo inline igual ao app/public/favicon.svg, sem redesenho.