Message
Componente para mensagens de chat com suporte a avatares, markdown, indicadores de status e design responsivo.
Utilização
index.tsx
import { Message, MessageAvatar, MessageContent } from "@convertcompany/ui/chat";
Adicione e customize o css para as mensagens
globals.css
:root{
--color-message-sent-background: 223, 252, 214;
--color-message-sent-foreground: var(--color-foreground);
--color-message-received-background: 255, 255, 255;
--color-message-received-foreground: var(--color-foreground);
}
.dark {
--color-message-received-background: var(--color-muted), 0.4;
--color-message-received-foreground: 255, 255, 255;
--color-message-sent-background: 19, 78, 55;
--color-message-sent-foreground: 255, 255, 255;
}
Exemplos
Mensagens básicas
Exemplo de mensagens enviadas e recebidas com avatares.
U
E
U
Mensagens sequenciais
Mensagens do mesmo usuário sem repetir o avatar.
U
Com markdown
Mensagens com conteúdo markdown renderizado.
U
E
Indicadores de status
Mensagens com diferentes tipos de indicadores de loading.
U
E
Com timestamp
Mensagens com horário de envio.
U
E
U
Avatares customizados
Mensagens com avatares personalizados e fallbacks.
🤖
👤
🤖
👤
Conversa completa
Exemplo de uma conversa completa com todos os recursos.
A
U
A
U
Com AudioWavePlayer
Mensagens com player de áudio integrado.
U
E
U
✨ Dica
Você pode editar a variável --color-audio-wave para deixar a renderização do áudio mais amigável
globals.css
[data-role="message"] {
--color-audio-wave: 206, 208, 208;
&[data-type="sent"] {
--color-audio-wave: 178, 208, 178;
}
}
.dark {
[data-role="message"] {
--color-audio-wave: 99, 107, 112;
&[data-type="sent"] {
--color-audio-wave: 77, 141, 129;
}
}
}
Props
Message
| Propriedade | Tipo |
|---|---|
| typeTipo da mensagem (enviada ou recebida). | sent received |
| sequentialSe a mensagem é parte de uma sequência (oculta o avatar). | boolean |
| classNameClasse CSS adicional para customização. | string |
| childrenConteúdo da mensagem (MessageAvatar e MessageContent). | ReactNode |
| ...propsTodas as demais props nativas de <div>. | <HTMLDivElement> |
MessageAvatar
| Propriedade | Tipo |
|---|---|
| srcURL da imagem do avatar. | string |
| altTexto alternativo para acessibilidade. | string |
| fallbackTexto ou emoji de fallback quando não há imagem. | string |
| delayMsDelay para mostrar o fallback (em milissegundos). | number |
| classNameClasse CSS adicional para customização. | string |
| childrenConteúdo customizado do avatar. | ReactNode |
MessageContent
| Propriedade | Tipo |
|---|---|
| markdownSe o conteúdo deve ser renderizado como markdown. | boolean |
| indicatorTipo de indicador de status a ser exibido. | thinking typing loading recording null |
| timeTimestamp da mensagem (exibido no canto inferior direito). | string |
| classNameClasse CSS adicional para customização. | string |
| childrenConteúdo da mensagem (texto ou markdown). | ReactNode string |
| ...propsTodas as demais props nativas de <div>. | <HTMLDivElement> |