Chat de mensagem

Componente de mensagens transversal — anatomia da lista de conversas, janela de chat e tipos de mensagem.

O chat é o canal de comunicação entre usuários do ME (comprador ↔ fornecedor, com participantes). A mesma conversa aparece como drawer contextual, na página Messages ou como drawer no mobile. O badge de não lidos no trigger é obrigatório.
Chat — painel lateral (drawer docado à direita)

A conversa abre como painel lateral sobre a tela atual: só a thread ativa, sem a lista de conversas. O botão de expandir leva à tela cheia (página Messages, abaixo).


Chat expandido (tela cheia) — lista de conversas + janela da conversa ativa

A mesma conversa vive como drawer contextual, na página Messages ou no mobile. Lista de conversas à esquerda (com não lidos) e a thread comprador ↔ fornecedor à direita. O composer reaproveita o do Genius, sem as funções de IA (sem @ contexto, busca web ou modo voz).


Boas Práticas

O Chat/Mensagens é a comunicação contextual do ME — atrelada ao registro, no drawer ou na página dedicada.

Quando usar
Comunicação contextual com fornecedores ou colegas sobre um documento — proposta, prazo, dúvida.
Quando a conversa precisa ficar atrelada ao registro — histórico por transação.
Respostas rápidas sem sair do fluxo (drawer contextual), com a página dedicada para acompanhar tudo.
Quando não usar
Para feedback do sistema (salvo, excluído, erro) — use Toast/Alert, não o chat.
Para uma decisão formal que exige trilha de auditoria — registre no próprio documento.
Para aviso unidirecional/broadcast — use notificação.

Anatomia

O chat tem três zonas funcionais — trigger na navegação, lista de conversas e janela de conversa ativa.

Trigger / Entrada

Acesso ao chat — pelo nav global Messages ou pelo ícone de chat na linha (ex.: index de Fornecedores).

Componentes

  • Item Messages na navegação global
  • Ícone de chat na linha da entidade (abre a drawer)
  • Badge com contagem de não lidos

Regras

  • Badge de contagem visível quando há mensagens não lidas
  • Ícone de chat na linha abre a conversa como drawer contextual
  • O nav Messages abre a página dedicada (two-pane)

Lista de conversas

Painel com todas as conversas ativas — coluna esquerda na página, drawer no mobile.

Componentes

  • Item de conversa (avatar + nome prefixado com @ + última mensagem + timestamp)
  • Badge de não lidos por conversa
  • Busca, filtro e novo (+)

Regras

  • Ordenadas por atividade mais recente (última mensagem)
  • Nome da conversa prefixado com @ (ex.: @A & E Tecnical Ltda)
  • Conversa ativa destacada com fundo diferenciado

Janela de conversa

Thread de mensagens da conversa selecionada — idêntica na drawer e na página.

Componentes

  • Header: contato + participantes (+N) + busca + expandir + fechar
  • Thread com scroll (linhas de sistema + bolhas)
  • Composer reaproveitado do Genius (textarea + ações)

Regras

  • Mensagens próprias à direita, mensagens recebidas à esquerda
  • Linhas de sistema abrem a thread ("conversa privada", "Início da conversa · data")
  • Recibo de leitura com duplo-check (enviado · entregue · lido)
  • Botão expandir leva da drawer para a página Messages
  • Scroll automático para a mensagem mais recente ao abrir

Superfícies

A mesma conversa vive em três superfícies — muda o container, não o conteúdo.

Drawer contextual

Abre à direita, sobre a página atual (ex.: pelo ícone de chat na linha de Fornecedores). Uma conversa, sem tirar o usuário do contexto.

  • Header com contato, participantes (+N), expandir e fechar
  • Expandir leva à página Messages
  • Mesma janela de conversa da página — só muda o container

Página Messages (dedicada)

Acessada pelo item Messages do nav global. Layout two-pane: lista de conversas à esquerda, conversa à direita.

  • Lista com busca, filtro e novo (+)
  • Conversa ativa destacada na lista
  • Mesma janela de conversa da drawer, em tela cheia

Mobile

No mobile a lista de conversas vira um drawer — a experiência é basicamente a drawer do desktop.

  • Lista de conversas como drawer sobreposto
  • Uma conversa por vez, em tela cheia

Composer

O composer do chat reaproveita o do Genius — a mesma textarea e barra de ações. Como o chat é uma conversa humano ↔ fornecedor (sem agente), as funções de IA ficam de fora: modo voz, adicionar contexto (@) e busca web.

Anexar

Imagem, vídeo, áudio ou arquivo.

No chat

Gravar áudio

Clipe de áudio pontual — sem ativar modo voz.

No chat

Enviar

Envia a mensagem; substitui o mic quando há texto digitado.

No chat

Mencionar / adicionar contexto

Exclusivo do Genius — contextualiza o agente com entidades do ME.

Só no Genius

Modo voz

Exclusivo do Genius — conversa por voz com o agente.

Só no Genius

Busca web

Exclusivo do Genius — fontes externas na resposta do agente.

Só no Genius

Mensagens

Quatro tipos de mensagem suportados. Cada um tem apresentação visual distinta na thread.

Texto simples

Mensagem de texto sem formatação

Arquivo / Anexo

PDF, imagem, planilha — com ícone e nome do arquivo

Imagem inline

Imagem exibida diretamente na thread

Áudio / mensagem de voz

Clipe de áudio gravado pelo mic do composer (pontual, sem modo voz)

Mensagem do sistema

Evento automático — "conversa privada", "Início da conversa · data"


Estados da mensagem

Tipo é o que a mensagem carrega; estado é onde ela está no caminho até ser lida. O ícone ao lado da hora conta essa história — o remetente nunca fica na dúvida se chegou. O estado é sempre visível.

Estados na thread — o ícone conta a história

Da saída à leitura, cada mensagem enviada mostra seu estado; a falha oferece Reenviar sem reescrever.

Enviando

A mensagem saiu mas o servidor ainda não confirmou — relógio discreto. Some assim que o envio confirma.

Enviada

O servidor recebeu — um check cinza. Garante que não se perdeu, mesmo que o destinatário ainda não tenha visto.

Lida

O destinatário abriu a conversa — check duplo azul. Fecha o ciclo: a pessoa sabe que foi visto.

Falha

O envio não completou — ícone de erro com "Reenviar" à mão. Uma saída imediata, sem reescrever a mensagem.


Checklist

Antes de entregar o handoff

  • Badge de não lidos está visível no trigger da navegação?
  • Lista de conversas ordena por atividade mais recente?
  • Mensagens próprias estão à direita, recebidas à esquerda?
  • Scroll automático vai para a mensagem mais recente ao abrir?
  • Status de entrega está mapeado (enviado, entregue, lido)?
  • Campo de input permite enviar arquivo/anexo?
  • Estado de loading ao enviar mensagem foi mapeado?

Boas Práticas

Fazer
Exibir badge de contagem de não lidos no trigger
Ordernar conversas por atividade mais recente
Fazer scroll automático para a última mensagem ao abrir a conversa
Exibir status de entrega das mensagens (enviado, entregue, lido)
Evite
Omitir o badge de não lidos — o usuário não percebe novas mensagens
Ordenar conversas alfabeticamente por padrão
Mostrar timestamp em cada mensagem individual — agrupe por grupos de tempo

Ícones do contexto

ÍconeTokenSignificado
esta ação
Veja tambémGenius Carrinho