AgentSkillsCN

chat-ui

来自 ui.inference.sh 的 React/Next.js 聊天 UI 构建模块。 组件:容器、消息、输入框、打字提示、虚拟形象。 功能特性:聊天界面、消息列表、输入处理、流式传输。 适用场景:构建自定义聊天 UI、消息传递界面、AI 助手。 触发器:聊天 UI、聊天组件、消息列表、聊天输入、ShadCN 聊天、 React 聊天、聊天界面、消息传递 UI、对话 UI、聊天构建模块

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.

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 inference-sh/agent-skills@agent-ui

# Declarative widgets
npx skills add inference-sh/agent-skills@widgets-ui

# Markdown rendering
npx skills add inference-sh/agent-skills@markdown-ui

Documentation

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