Catalog npm
PACKAGE EXPLORERView in registry

@0xbot/chat-react

npm

A React component for building chat interfaces with streaming support

Versions collected9
Direct dependencies16From release 1.0.16
Last observed20 Oct, 22:43 UTC

README

Current package documentation

Chat Library React

A React component for building chat interfaces with streaming support.

Installation

npm install @0xbot/chat-react
# or
yarn add @0xbot/chat-react
# or
pnpm add @0xbot/chat-react

Usage

import React from 'react'
import { ChatLibrary } from '@0xbot/chat-react'
import '@0xbot/chat-react/dist/index.css' // Import the CSS

const App = () => {
  return (
    <ChatLibrary
      apiKey="your-api-key"  // required  
      serverUrl="your-server-url" // not required
      UserAvatar={<YourUserAvatar />} // required
      AgentAvatar={<YourAgentAvatar />} // required
      loadingText="AI is thinking..." // not required
      emptyText="No messages yet" // not required
      tradeApiKey="xxxx-xxxx-xx"
    />
  )
}

export default App

Props

PropTypeRequiredDefaultDescription
apiKeystringYes-Your API key for authentication
serverUrlstringYes-The server URL for API requests
UserAvatarReactNodeYes-The avatar component for user messages
AgentAvatarReactNodeYes-The avatar component for agent messages
loadingTextstringNo'AI is thinking...'Text to display while loading
emptyTextstringNo'No messages yet'Text to display when there are no messages
themeobjectNo{}Theme configuration object
tradeApiKeystringNo''trade api key

Features

  • Real-time message streaming
  • Markdown support
  • Customizable theme
  • Responsive design
  • Built-in loading states
  • Error handling

Dependencies

This library requires the following peer dependencies:

  • React 18 or higher
  • React DOM 18 or higher
  • @types/react 18 or higher (for TypeScript projects)
  • @types/react-dom 18 or higher (for TypeScript projects)

Styling

You can customize the appearance of the chat component by overriding the following CSS classes:

/* Main container */
.chat-library {
  box-sizing: border-box;
  height: 100%;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 16px;
}

/* Bottom bar */
.chat-bar {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* Input field */
.chat-bar-input {
  flex: 1;
  height: 44px;
  outline: none;
  border-radius: 99999px;
  border: 1px solid #ccc;
  background-color: transparent;
  color: #fff;
  padding: 0 16px;
  min-width: 0;
}

/* Send button */
.chat-bar-send {
  flex: none;
  width: auto;
  border: 1px solid;
  height: 48px;
  padding: 0 32px;
  border-radius: 99999px;
  cursor: pointer;
  background-color: transparent;
  transition: all 0.2s ease-in-out;
}

/* Send button hover */
.chat-bar-send:hover {
  background-color: var(--primary-color);
  color: white !important;
}

/* Chat container (excluding bottom bar) */
.chat-container {
  flex: 1;
  overflow-y: scroll;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

/* Hide scrollbar */
.chat-container::-webkit-scrollbar {
  display: none;
}

/* Chat message list */
.chat-container-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* Message bubble */
.message-bubble {
  padding: 12px 16px;
  border-radius: 8px;
  max-width: 90%;
  font-size: 14px;
  word-break: break-all;
  line-height: 24px;
}

@media (min-width: 768px) {
  .message-bubble {
    max-width: 70%;
    font-size: 13px;
  }
}

/* Avatar */
.chat-avatar {
  width: 44px;
  height: 44px;
  max-width:44px;
  max-height:44px;
  min-width: 44px;
  min-height: 44px;
  border-radius: 8px;
}

/* Message bubble background */
.chat-message {
  background-color: rgba(255, 255, 255, 0.1)
}

/* Message container */
.message-container {
  display: flex;
}

/* Delete button */
.chat-bar-trash {
  width: 24px;
  height: 24px;
  min-width: 24px;
  min-height: 24px;
  color: #fff;
  cursor: pointer;
}

/* Loading state */
.message-loading {
  color: #fff;
  font-style: italic;
}

/* Empty message state */
.message-empty {
  color: #fff;
  font-style: italic;
  text-align: center;
}

/* Trade modal */
.dodo-swap {
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
}

How to Override Styles

You can override these styles by adding your own CSS rules after importing the library's CSS. For example:

/* Import the library's CSS first */
@import '@0xbot/chat-react/dist/index.css';

/* Then add your custom styles */
.chat-bar-input {
  border-color: #ff0000;
  background-color: #f0f0f0;
  color: #333;
}

.chat-bar-send {
  background-color: #4CAF50;
  color: white;
  border: none;
}

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 9

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.16Registry latest23 Dec 202516
1.0.1516 Dec 202516
1.0.1410 Jul 202516
1.0.1324 Jun 202516
1.0.1217 Jun 202516
1.0.1117 Jun 202516
1.0.1017 Jun 202516
1.0.920 Apr 202515
1.0.819 Apr 202521

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:43 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:e92fd8c87d141d9dccd7fdb784d356554931ed99bbe6d10174ba270ac389e708