Interface local de chat para simular conversas entre um usuário e um robô, sem backend, autenticação ou persistência.
- Histórico de mensagens mantido em memória enquanto a aplicação está aberta.
- Alternância do remetente entre Usuário e Robô.
- Alinhamento visual diferente para cada remetente.
- Campo de texto multilinha com altura adaptável.
- Envio pelo botão ou pela tecla
Enter. Shift+Entercria uma nova linha.- Botão de envio desabilitado para mensagens vazias ou com apenas espaços.
- Normalização do texto enviado, removendo espaços no início e no fim.
- Foco restaurado no campo após o envio.
- Rolagem automática para a mensagem mais recente.
- Layout responsivo e navegação básica por teclado.
As mensagens são apagadas ao recarregar a página. Respostas automáticas, contas, múltiplas conversas, anexos e sincronização não fazem parte do projeto.
- React 19
- TypeScript
- Vite
- Tailwind CSS 4
- Oxlint
Pré-requisito: Node.js instalado.
npm install
npm run devDepois, abra a URL exibida pelo Vite no terminal, normalmente http://localhost:5173.
npm run dev # inicia o servidor de desenvolvimento
npm run lint # executa o Oxlint
npm run build # verifica os tipos e gera a build de produção
npm run preview # visualiza a build de produção localmentesrc/
components/
ChatWindow.tsx # estrutura da janela e estado do remetente
MessageBubble.tsx # apresentação de uma mensagem
MessageComposer.tsx # textarea, envio e foco
MessageList.tsx # histórico e auto-scroll
SenderToggle.tsx # alternância entre os remetentes
types/
chat.ts # tipos Sender e ChatMessage
App.tsx # estado do histórico e inclusão de mensagens
index.css # estilos globais e base visual
Cada mensagem possui id, content, sender e createdAt. O estado principal fica em App.tsx, e os componentes recebem dados e callbacks por props.
npm run lint
npm run build