// Wave 5c — Operacional B (5 telas): Mensagens, Comunicados, Notas, Tarefas, Lembretes // ============================================================= // 7. Mensagens — chat interno Slack-style // ============================================================= const CANAIS = [ { id: 'geral', n: 'geral', tipo: 'canal', nao: 0, ativo: false }, { id: 'anuncios', n: 'anúncios', tipo: 'canal', nao: 2, ativo: false }, { id: 'comercial', n: 'comercial', tipo: 'canal', nao: 0, ativo: false }, { id: 'produto', n: 'produto', tipo: 'canal', nao: 8, ativo: true }, { id: 'financeiro', n: 'financeiro', tipo: 'canal', nao: 0, ativo: false }, { id: 'random', n: 'random', tipo: 'canal', nao: 12, ativo: false }, ]; const DMS = [ { id: 'ana', n: 'Ana Carolina Silva', status: 'online', nao: 3 }, { id: 'bruno', n: 'Bruno Oliveira', status: 'ausente', nao: 0 }, { id: 'carol', n: 'Carolina Mendes', status: 'online', nao: 1 }, { id: 'diego', n: 'Diego Ferreira', status: 'offline', nao: 0 }, ]; const MENSAGENS = [ { a: 'Ana', cor: '#a78bfa', h: '09:12', t: 'Galera, subi a v4.2 do fluxo de conciliação OFX em staging. Podem testar?' }, { a: 'Bruno', cor: '#60a5fa', h: '09:15', t: 'Fechou! Já estou rodando a massa de testes com OFX do Bradesco e Itaú.' }, { a: 'Bruno', cor: '#60a5fa', h: '09:22', t: 'Achei um edge case com lançamentos de taxa < R$ 1,00. O matcher ignora. @Ana consegue olhar?', reacoes: [{ e: '👀', n: 2 }, { e: '🔥', n: 1 }] }, { a: 'Ana', cor: '#a78bfa', h: '09:24', t: 'Boa pegada. Abri ticket DEV-1284. Vou corrigir hoje ainda.' }, { a: 'Carolina', cor: '#f472b6', h: '09:41', t: 'Pessoal, follow-up rápido sobre a demo de amanhã com o Pão Dourado · quem vai comigo?' }, { a: 'Diego', cor: '#fcd34d', h: '10:03', t: 'Vou sim, Carol. Posso cuidar da parte de NF-e e integração SEFAZ.', thread: 4 }, { a: 'Ana', cor: '#a78bfa', h: '11:15', t: 'Commit enviado em staging. Testem de novo quando puderem 🙏' }, { a: 'Bruno', cor: '#60a5fa', h: '11:32', t: 'Rodou limpo agora. Matchou as 3 taxas que estavam pendentes 🎉', reacoes: [{ e: '🎉', n: 4 }, { e: '🚀', n: 2 }] }, ]; const PageMensagens = ({ onNavigate }) => { const [canal, setCanal] = React.useState('produto'); return ( Novo canal} >
Canais
{CANAIS.map(c => ( ))}
Mensagens diretas
{DMS.map(d => { const statusColor = { online: '#22c55e', ausente: '#fcd34d', offline: 'var(--text-4)' }; return ( ); })}
{/* Chat central */}
#

produto

12 membros · Tópicos sobre roadmap, bugs e releases.
── hoje ──
{MENSAGENS.map((m, i) => (
{m.a.slice(0, 2)}
{m.a} {m.h}
{m.t}
{m.reacoes && (
{m.reacoes.map((r, j) => ( {r.e} {r.n} ))}
)} {m.thread && (
{m.thread} respostas · última há 12 min
)}
))}
{['bold', 'italic', 'paperclip', 'smile', 'at-sign'].map(i => ( ))}
{/* Detalhes / membros */}

Sobre o canal

Discussões sobre o roadmap de produto, reports de bugs e planejamento de releases.

Membros · 12

{[ { n: 'Ana Carolina Silva', r: 'Admin', s: 'online' }, { n: 'Bruno Oliveira', r: 'Dev Sr', s: 'online' }, { n: 'Carolina Mendes', r: 'PM', s: 'ausente' }, { n: 'Diego Ferreira', r: 'Dev Pl', s: 'online' }, { n: 'Eduardo Santos', r: 'Designer', s: 'offline' }, { n: 'Fernanda Costa', r: 'QA', s: 'online' }, ].map((m, i) => { const statusColor = { online: '#22c55e', ausente: '#fcd34d', offline: 'var(--text-4)' }; return (
{m.n.split(' ').map(s => s[0]).slice(0, 2).join('')}
{m.n}
{m.r}
); })}

Arquivos compartilhados

{['spec-v4.2.pdf', 'mockup-fluxo.fig', 'OFX-samples.zip'].map(f => (
{f}
))}
); }; // ============================================================= // 8. Comunicados // ============================================================= const COMUNICADOS = [ { id: 1, titulo: 'Novo benefício: Gympass Gold para todos os colaboradores', autor: 'Diretoria RH', dep: 'Todos', data: '18/04/2026', lida: false, destaque: true, tag: 'Benefícios', cor: '#22c55e', body: 'A partir de maio/2026, todos os colaboradores CLT terão acesso ao Gympass Gold sem custo adicional. Cadastro direto pelo app da empresa.' }, { id: 2, titulo: 'Manutenção do sistema · sábado 20/04 entre 02h e 05h', autor: 'TI', dep: 'Todos', data: '17/04/2026', lida: true, destaque: false, tag: 'Sistema', cor: '#fcd34d', body: 'Atualização da infraestrutura · indisponibilidade programada do Automatiza neste período.' }, { id: 3, titulo: 'Nova política de home office · 3 dias presenciais', autor: 'Diretoria', dep: 'Todos', data: '15/04/2026', lida: true, destaque: true, tag: 'Políticas', cor: '#a78bfa', body: 'A partir de maio, estrutura híbrida de 3 dias no escritório e 2 remotos.' }, { id: 4, titulo: 'Vencedores do prêmio Pessoas · 1º trimestre', autor: 'RH', dep: 'Todos', data: '12/04/2026', lida: true, destaque: false, tag: 'Reconhecimento', cor: '#f472b6', body: 'Parabenizamos Ana Silva (Excelência) e Carlos Mendonça (Colaboração) pelos prêmios deste trimestre.' }, { id: 5, titulo: 'Comercial · nova tabela de comissões vigente', autor: 'Comercial', dep: 'Comercial', data: '10/04/2026', lida: false, destaque: false, tag: 'Comercial', cor: '#60a5fa', body: 'Novas regras de comissionamento e aceleradores a partir do mês que vem.' }, { id: 6, titulo: 'Fim do horário de verão · ajuste nos cards de ponto', autor: 'RH', dep: 'Todos', data: '02/04/2026', lida: true, destaque: false, tag: 'Horários', cor: 'var(--text-3)', body: 'Sem alteração nos horários de trabalho; apenas ajuste automático do sistema.' }, ]; const PageComunicados = ({ onNavigate }) => { const [sel, setSel] = React.useState(COMUNICADOS[0]); const [dep, setDep] = React.useState('Todos'); return ( } > {sel?.destaque && (
Destaque · {sel.tag}

{sel.titulo}

Por {sel.autor} · {sel.data}
)}
{['Todos', 'Comercial', 'RH', 'TI', 'Diretoria'].map(d => ( ))}
{COMUNICADOS.filter(c => dep === 'Todos' || c.dep === dep).map(c => (
setSel(c)} style={{ padding: '14px 16px', borderBottom: '1px solid var(--line-1)', cursor: 'pointer', background: sel?.id === c.id ? 'var(--accent-soft-08)' : 'transparent', }}>
{c.tag} {!c.lida && } {c.data}
{c.titulo}
{c.autor}
))}
{sel && (
{sel.tag}

{sel.titulo}

✍️ {sel.autor}📅 {sel.data}👥 {sel.dep}

{sel.body}

Em caso de dúvidas, entre em contato com o departamento responsável. Confirme a leitura clicando no botão abaixo para que possamos acompanhar a cobertura do comunicado.

Confirmação de leitura
38 de 42 colaboradores confirmaram · 91%
)}
); }; // ============================================================= // 9. Notas pessoais // ============================================================= const NOTAS = [ { id: 1, t: 'Ideias para retenção · cohort Q2', tags: ['retenção', 'comercial'], atu: 'há 12 min', preview: 'Testar régua de recuperação 30/60/90 dias com ofertas diferentes…' }, { id: 2, t: 'Feedback da call com Padaria Pão Dourado', tags: ['clientes'], atu: 'hoje, 10:22', preview: 'Pontos principais: 1) módulo de NF-e é prioridade, 2) querem integração…' }, { id: 3, t: 'Checklist do lançamento v4.3', tags: ['produto', 'release'], atu: 'ontem', preview: 'Lista de bloqueadores antes de empurrar pra prod na sexta…' }, { id: 4, t: 'Livros para ler em 2026', tags: ['pessoal'], atu: '3 dias', preview: 'Shape Up · Ryan Singer · Basecamp…' }, { id: 5, t: 'Planejamento de férias · julho', tags: ['pessoal'], atu: '5 dias', preview: 'Bariloche, 15–25 de julho. Ver cotação de voo e hospedagem…' }, { id: 6, t: 'Reunião 1:1 com Bruno · notas', tags: ['pessoas'], atu: '1 semana', preview: 'Bruno está interessado em ir pra liderança técnica. Plano de desenvolvimento…' }, ]; const PageNotas = ({ onNavigate }) => { const [sel, setSel] = React.useState(NOTAS[0]); return ( Nova nota} >
{NOTAS.map(n => (
setSel(n)} style={{ padding: '14px 16px', borderBottom: '1px solid var(--line-1)', cursor: 'pointer', background: sel.id === n.id ? 'var(--accent-soft-08)' : 'transparent', borderLeft: sel.id === n.id ? '3px solid var(--accent-1)' : '3px solid transparent', }}>
{n.t}
{n.preview}
{n.tags.map(t => ( #{t} ))} {n.atu}
))}

{sel.t}

{sel.tags.map(t => ( #{t} ))}
{['bold', 'italic', 'underline', 'list', 'code', 'link', 'image'].map(i => ( ))}

{sel.preview}

Ideias principais para discutir no planning:

  • Régua de recuperação com ofertas progressivas (30/60/90 dias)
  • A/B test com variação de desconto e comunicação personalizada
  • Monitorar CAC x LTV por cohort mensal
  • Follow-up proativo via WhatsApp quando uso cair < 30%

Próximos passos: validar orçamento com Carol e agendar kickoff para quinta.

Atualizada {sel.atu} 142 palavras · salvando automaticamente
); }; // ============================================================= // 10. Tarefas pessoais // ============================================================= const TAREFAS_P = [ { id: 1, t: 'Responder e-mail do cliente Bighorse sobre a proposta v3', pri: 'alta', prazo: 'hoje, 17:00', projeto: 'PRJ-042', done: false, quando: 'hoje' }, { id: 2, t: 'Preparar apresentação da reunião com diretoria', pri: 'alta', prazo: 'hoje, 16:00', projeto: null, done: false, quando: 'hoje' }, { id: 3, t: 'Revisar PR do Bruno sobre OFX matcher', pri: 'media', prazo: 'hoje, 18:00', projeto: 'DEV-1284', done: true, quando: 'hoje' }, { id: 4, t: 'Ligar para Carolina Mendes · confirmar kickoff', pri: 'media', prazo: 'hoje', projeto: null, done: false, quando: 'hoje' }, { id: 5, t: 'Atualizar o pipeline do Q2 com novos leads', pri: 'baixa', prazo: 'amanhã', projeto: null, done: false, quando: 'semana' }, { id: 6, t: 'Enviar proposta comercial · Café Savassi', pri: 'alta', prazo: '21/04', projeto: null, done: false, quando: 'semana' }, { id: 7, t: '1:1 com Ana · planejamento de carreira', pri: 'media', prazo: '22/04', projeto: null, done: false, quando: 'semana' }, { id: 8, t: 'Entregar DRE fechado de março à contabilidade', pri: 'alta', prazo: '23/04', projeto: null, done: false, quando: 'semana' }, { id: 9, t: 'Estudar material do curso de liderança', pri: 'baixa', prazo: 'próxima semana', projeto: null, done: false, quando: 'proximas' }, { id: 10, t: 'Planejar offsite da equipe · Q3', pri: 'baixa', prazo: 'mai/2026', projeto: null, done: false, quando: 'proximas' }, ]; const PageTarefas = ({ onNavigate }) => { const [view, setView] = React.useState('hoje'); const filtered = TAREFAS_P.filter(t => t.quando === view); const priCor = { alta: '#fca5a5', media: '#fcd34d', baixa: 'var(--text-3)' }; return ( Nova tarefa} >
t.quando === 'hoje' && !t.done).length} sub={`${TAREFAS_P.filter(t => t.quando === 'hoje' && t.done).length} concluídas`}/> t.quando === 'semana').length} sub="pendentes"/> t.quando === 'proximas').length} sub="agendadas"/> t.quando === 'hoje' && t.done).length} sub="boa produtividade!"/>
{[['hoje', 'Hoje'], ['semana', 'Esta semana'], ['proximas', 'Próximas']].map(([v, l]) => ( ))}
{filtered.map(t => (
{t.done && }
{t.t}
{t.prazo} {t.projeto && · {t.projeto}}
{t.pri}
))}
); }; // ============================================================= // 11. Lembretes // ============================================================= const LEMBRETES = [ { id: 1, t: 'Enviar relatório mensal à contabilidade', hora: 'Hoje · 17:00', canal: ['email'], recor: 'Mensal · dia 19', status: 'proximo' }, { id: 2, t: 'Tomar água · pausa consciente', hora: 'Hoje · a cada 2h', canal: ['push'], recor: 'Todos os dias úteis', status: 'ativo' }, { id: 3, t: 'Ligar para fornecedor · embalagens', hora: 'Hoje · 15:00', canal: ['push', 'email'], recor: 'Único', status: 'proximo' }, { id: 4, t: 'Reunião 1:1 com Bruno', hora: 'Amanhã · 10:00', canal: ['push', 'whatsapp'], recor: 'Semanal · segundas', status: 'agendado' }, { id: 5, t: 'Pagar DAS · Simples Nacional', hora: '22/04 · 09:00', canal: ['email'], recor: 'Mensal · dia 22', status: 'agendado' }, { id: 6, t: 'Aniversário de casamento 🎉', hora: '28/04 · manhã', canal: ['push'], recor: 'Anual', status: 'agendado' }, { id: 7, t: 'Revisão anual do plano de saúde', hora: '01/05 · 10:00', canal: ['email'], recor: 'Anual', status: 'agendado' }, ]; const PageLembretes = ({ onNavigate }) => { const canalIcon = { email: 'mail', push: 'bell', whatsapp: 'whatsapp' }; const statusCor = { proximo: '#fcd34d', ativo: '#86efac', agendado: 'var(--text-3)' }; return ( Novo lembrete} >
{LEMBRETES.map((l, i) => (
{l.status} {l.hora}
{l.t}
🔁 {l.recor}
{l.canal.map(c => ( ))}
))}
Sugestão da IA
Você tem 3 clientes com contratos vencendo em maio. Quer criar lembretes automáticos 30 dias antes?
); }; Object.assign(window, { CANAIS, DMS, MENSAGENS, COMUNICADOS, NOTAS, TAREFAS_P, LEMBRETES, PageMensagens, PageComunicados, PageNotas, PageTarefas, PageLembretes });