AgentSkillsCN

chat-ui

ui.inference.sh 提供的 React/Next.js 聊天界面构建模块。组件包括:容器、消息列表、输入框、打字提示、头像展示。功能涵盖:聊天界面、消息列表、输入处理、流式传输。适用场景:打造定制化聊天界面、消息传递系统、AI助手应用。触发关键词:聊天界面、聊天组件、消息列表、聊天输入、Shadcn Chat、React 聊天、聊天界面、消息传递界面、对话界面、聊天构建模块。

SKILL.md
--- frontmatter
name: chat-ui
description: "Chat UI building blocks for React/Next.js from ui.inference.sh. Components: container, messages, input, typing indicators, avatars. Capabilities: chat interfaces, message lists, input handling, streaming. Use for: building custom chat UIs, messaging interfaces, AI assistants. Triggers: chat ui, chat component, message list, chat input, shadcn chat,"  react chat, chat interface, messaging ui, conversation ui, chat building blocks

Chat UI Components

Chat building blocks from ui.inference.sh.

Chat UI Components

Quick Start

bash
# Install chat components
npx shadcn@latest add https://ui.inference.sh/r/chat.json

Components

Chat Container

tsx
import { ChatContainer } from "@/registry/blocks/chat/chat-container"

<ChatContainer>
  {/* messages go here */}
</ChatContainer>

Messages

tsx
import { ChatMessage } from "@/registry/blocks/chat/chat-message"

<ChatMessage
  role="user"
  content="Hello, how can you help me?"
/>

<ChatMessage
  role="assistant"
  content="I can help you with many things!"
/>

Chat Input

tsx
import { ChatInput } from "@/registry/blocks/chat/chat-input"

<ChatInput
  onSubmit={(message) => handleSend(message)}
  placeholder="Type a message..."
  disabled={isLoading}
/>

Typing Indicator

tsx
import { TypingIndicator } from "@/registry/blocks/chat/typing-indicator"

{isTyping && <TypingIndicator />}

Full Example

tsx
import {
  ChatContainer,
  ChatMessage,
  ChatInput,
  TypingIndicator,
} from "@/registry/blocks/chat"

export function Chat() {
  const [messages, setMessages] = useState([])
  const [isLoading, setIsLoading] = useState(false)

  const handleSend = async (content: string) => {
    setMessages(prev => [...prev, { role: 'user', content }])
    setIsLoading(true)
    // Send to API...
    setIsLoading(false)
  }

  return (
    <ChatContainer>
      {messages.map((msg, i) => (
        <ChatMessage key={i} role={msg.role} content={msg.content} />
      ))}
      {isLoading && <TypingIndicator />}
      <ChatInput onSubmit={handleSend} disabled={isLoading} />
    </ChatContainer>
  )
}

Message Variants

RoleDescription
userUser messages (right-aligned)
assistantAI responses (left-aligned)
systemSystem messages (centered)

Styling

Components use Tailwind CSS and shadcn/ui design tokens:

tsx
<ChatMessage
  role="assistant"
  content="Hello!"
  className="bg-muted"
/>

Related Skills

bash
# Full agent component (recommended)
npx skills add inferencesh/skills@agent-ui

# Declarative widgets
npx skills add inferencesh/skills@widgets-ui

# Markdown rendering
npx skills add inferencesh/skills@markdown-ui

Documentation

Component docs: ui.inference.sh/blocks/chat