Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Chat Offline

Interface local de chat para simular conversas entre um usuário e um robô, sem backend, autenticação ou persistência.

Funcionalidades

  • 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+Enter cria 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.

Tecnologias

  • React 19
  • TypeScript
  • Vite
  • Tailwind CSS 4
  • Oxlint

Como executar

Pré-requisito: Node.js instalado.

npm install
npm run dev

Depois, abra a URL exibida pelo Vite no terminal, normalmente http://localhost:5173.

Scripts

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 localmente

Estrutura principal

src/
  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.

Validação

npm run lint
npm run build

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages