mcpField
X
x-components

x-components

github.com/ant-designDesign & UI4.8k91 installsUpdated 2d ago
Repository

About x-components

x-components is a skill guide to the @ant-design/x React component library for developers building AI chat interfaces. It organizes components and composition patterns by interaction, covering bubbles, input, conversations, reasoning displays, and feedback; data flow and streaming are handled by other skills.

Key features

  1. 01Select UI components by interaction stage
  2. 02Compose bubbles, input, and conversation lists
  3. 03Display reasoning, sources, and feedback
  4. 04Configure app-level settings with XProvider
  5. 05Consult page patterns and component APIs

Use cases

  1. 01Build the UI structure for an AI chat page
  2. 02Add message input and conversation switching
  3. 03Show reasoning steps and sources in replies

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ant-design/x --skill x-components

After installing, type/x-componentsin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
API.md
COMPONENTS.md
PATTERNS.md

Details

From the project README

🎯 Skill Positioning

This skill covers all UI components in @ant-design/x — the React component library for building AI-driven chat interfaces based on the RICH interaction paradigm.

It covers component selection, API usage, composition patterns, and common anti-patterns.

Prerequisite: This skill handles UI only. For data flow and streaming, see use-x-chat, x-chat-provider, x-request skills.

Table of Contents

📦 Package Overview

PackageResponsibility
@ant-design/xAll UI components in this skill
@ant-design/x-sdkData providers, request, streaming state — not covered here
@ant-design/x-markdownMarkdown rendering inside Bubble — see x-markdown skill
npm install @ant-design/x

@ant-design/x extends antd. If you use ConfigProvider, replace it with XProvider.

🗂️ Component Groups

Based on the RICH interaction paradigm:

StageComponents
GeneralBubble, Bubble.List, Conversations, Notification
WakeWelcome, Prompts
ExpressSender, Attachments, Suggestion
ConfirmationThink, ThoughtChain
FeedbackActions, FileCard, Sources, CodeHighlighter, Mermaid, Folder
GlobalXProvider

🚀 Quick Start Decision Guide

If you need to...Read first
Render a chat message bubbleCOMPONENTS.md → Bubble
Build a chat input boxCOMPONENTS.md → Sender
List and switch conversationsCOMPONENTS.md → Conversations
Show AI thinking processCOMPONENTS.md → ThoughtChain / Think
Add action buttons below a messageCOMPONENTS.md → Actions
Build a welcome / onboarding screenCOMPONENTS.md → Welcome + Prompts
Show file attachments in inputCOMPONENTS.md → Attachments
Show source citationsCOMPONENTS.md → Sources
Add quick command suggestionsCOMPONENTS.md → Suggestion
Display a hierarchical file/folder treeCOMPONENTS.md → Folder
Wire a complete chat pagePATTERNS.md
Look up a specific propAPI.md

🛠 Recommended Workflow

  1. Pick components from COMPONENTS.md for each interaction stage.
  2. Use PATTERNS.md to understand how components compose into full pages.
  3. Wrap the app root with XProvider (replaces antd's ConfigProvider) for locale, theme, and shortcut keys.
  4. Use API.md for precise prop names — do not guess them.

Minimal Full-Page Example

import { XProvider, Welcome, Prompts, Bubble, Sender } from '@ant-design/x';

export default () => (
  <XProvider>
    <Welcome title="Hello!" description="How can I help you?" />
    <Prompts
      items={[{ key: '1', label: 'What can you do?' }]}
      onItemClick={(info) => console.log(info.data.label)}
    />
    <Bubble.List items={[{ key: '1', content: 'Hello World', placement: 'end' }]} />
    <Sender onSubmit={(msg) => console.log(msg)} />
  </XProvider>
);

🚨 Development Rules

  • Always use XProvider at the app root — it supersedes antd's ConfigProvider and enables locale, direction, and x-specific shortcut keys.
  • Bubble.List not Bubble in loops — Bubble.List handles scroll anchoring, auto-scroll, and role-based layout; mapping Bubble manually loses these.
  • Keep components prop stable in Bubble and Bubble.List — inline object creation causes re-renders and resets typing animations.
  • Set streaming={true} during stream, streaming={false} on final chunk — leaving it true permanently breaks the done state.
  • ThoughtChain vs Think: use ThoughtChain for multi-step tool/agent call chains; use Think for a collapsible single-block reasoning display.
  • Actions.Copy, Actions.Feedback, Actions.Audio are preset sub-components — prefer them over building custom equivalents.
  • Sender onSubmit vs onChange: onSubmit fires on send button or Enter key; onChange fires on every keystroke — do not conflate them.
  • Never render Mermaid or CodeHighlighter inside a Bubble content string — use contentRender or the components map instead.

🤝 Skill Collaboration

ScenarioSkill combination
Full AI chat appx-chat-provider → x-request → use-x-chat → x-components → x-markdown
Just building UI structurex-components only
Markdown in bubble repliesx-components + x-markdown
Streaming data flow onlyuse-x-chat + x-request

🔗 Reference Resources

  • COMPONENTS.md — Component-by-component guide with usage, key props, and examples
  • PATTERNS.md — Full-page composition patterns and integration recipes
  • API.md — Auto-generated prop reference from official component docs — covers all 17 components

Official Documentation

Comments

Markdown supported