puppychat
Version:
A beautiful React chat interface component with TypeScript support
210 lines (168 loc) • 6.09 kB
Markdown
<p align="center">
<img src="assert/puppychatlogo.png" alt="PuppyChat Logo" width="120" />
</p>
<h1 align="center">PuppyChat</h1>
<p align="center">
<a href="https://www.puppyagent.com" target="_blank">
<img src="https://img.shields.io/badge/Web-puppyagent.com-39BC66?style=flat&logo=google-chrome&logoColor=white" alt="Homepage" height="22" />
</a>
<a href="https://x.com/PuppyAgentTech" target="_blank">
<img src="https://img.shields.io/badge/X-@PuppyChatTech-000000?style=flat&logo=x&logoColor=white" alt="X (Twitter)" height="22" />
</a>
<a href="https://discord.gg/eRjwqZpjBT" target="_blank">
<img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" height="22" />
</a>
<a href="mailto:guantum@puppyagent.com">
<img src="https://img.shields.io/badge/Support-support@puppychat.com-F44336?style=flat&logo=gmail&logoColor=white" alt="Support" height="22" />
</a>
</p>
<p align="center">React SDK for building AI chatbot interfaces</p>
PuppyChat is a React SDK designed for developers and product teams who need to quickly integrate AI chat capabilities into their applications.
It provides three distinct styles - **ChatBubble**, **ChatSidebar**, and **ChatMain** - each optimized for different use cases:
- **Chat in Bubble** - Ideal for customer support widgets and non-intrusive help assistants
- **Chat in Sidebar** - Perfect for documentation sites and persistent co-pilot experiences
- **Chat in Main** - Best for full-featured chatbot applications and internal knowledge base portals
<div align="center">
<img src="./assert/styles.png" alt="PuppyChat Styles Preview" width="900">
</div>
## What's New
### 🎉 v0.0.12 - October 4, 2025
- **Improved Header Icon Display**: Removed circular container around custom icons for better flexibility
- Custom logos now display in their original shape without forced circular cropping
- Better `objectFit: 'contain'` handling for image icons
### v0.0.11 - October 4, 2025
- **Custom Header Icon**: You can now customize and replace the header logo with your own brand icon
- Added `headerIcon` prop - accepts both URL strings and React components
- Added `headerIconSize` prop - control the size of your custom icon
- Added `showHeaderIcon` prop - toggle icon visibility
## Installation
```bash
npm i puppychat
```
or
```bash
yarn add puppychat
```
## Usage
PuppyChat provides three main components for different use cases:
### 1. ChatMain - Full-Page Chat Interface
A complete full-page chat interface for building dedicated chat applications.
```tsx
import React from 'react'
import { ChatMain } from 'puppychat'
function App() {
const handleSendMessage = async (message: string) => {
// Your message handling logic here
return `Echo: ${message}`
}
return (
<div style={{ height: '100vh', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<ChatMain
onSendMessage={handleSendMessage}
title="PuppyMain"
placeholder="Ask PuppyMain anything..."
welcomeMessage="Welcome to PuppyMain!"
width="600px"
height="90%"
recommendedQuestions={[
"What can you help me with?",
"Tell me a fun fact",
"How do I improve my productivity?",
]}
showHeader={true}
backgroundColor="#0D0D0D"
borderWidth={3}
showAvatar={false}
/>
</div>
)
}
export default App
```
### 2. ChatBubble - Floating Chat Widget
A floating chat bubble that can be positioned anywhere on your page, perfect for customer support widgets.
```tsx
import React from 'react'
import { ChatBubble } from 'puppychat'
function App() {
const handleSendMessage = async (message: string) => {
// Your message handling logic here
return `Echo: ${message}`
}
return (
<div style={{ height: '100vh' }}>
{/* Your page content */}
<h1>Welcome to my website</h1>
{/* Floating chat bubble */}
<ChatBubble
chatProps={{
onSendMessage: handleSendMessage,
title: "PuppyBubble",
placeholder: "Ask PuppyBubble anything...",
welcomeMessage: "Welcome to PuppyBubble! I'm your AI assistant ready to help you with anything. What would you like to know?",
width: '400px',
height: '600px',
recommendedQuestions: [
"What can you help me with?",
"Tell me a joke",
"How can I be more productive?",
]
}}
bubbleProps={{
size: 64,
pulseAnimation: true
}}
position="bottom-left"
enableOverlay={true}
overlayOpacity={0.3}
animationDuration={300}
/>
</div>
)
}
export default App
```
### 3. ChatSidebar - Sidebar Chat Panel
A fixed sidebar chat panel that stays anchored to the side of your page, ideal for documentation sites and persistent assistants.
```tsx
import React from 'react'
import { ChatSidebar } from 'puppychat'
function App() {
const handleSendMessage = async (message: string) => {
// Your message handling logic here
return `Echo: ${message}`
}
return (
<div style={{ height: '100vh', position: 'relative' }}>
{/* Your page content */}
<main>
<h1>My Documentation Site</h1>
<p>Content goes here...</p>
</main>
{/* Sidebar chat */}
<ChatSidebar
width={480}
position="right"
topOffset={0}
bottomOffset={0}
showHeader={true}
title="PuppySidebar"
placeholder="Ask on the sidebar..."
welcomeMessage="This is the sidebar chat. How can I help?"
recommendedQuestions={[
"What are the features?",
"Any quick tips?",
"Where to start?",
]}
onSendMessage={handleSendMessage}
/>
</div>
)
}
export default App
```
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.