---
name: tdesign-miniprogram
description: TDesign Mini Program UI component library by Tencent. Use for building WeChat mini apps with TDesign components, design system, and best practices.
---
# TDesign Mini Program Skill
TDesign WeChat Mini Program component library, an enterprise-level design system by Tencent. Provides 60+ high-quality components with dark mode support, theme customization, and more.
## When to Use This Skill
This skill should be triggered when:
- Developing WeChat Mini Programs with TDesign component library
- Using TDesign UI components (Button, Input, Dialog, etc.)
- Implementing interfaces following TDesign design specifications
- Configuring TDesign themes and style customization
- Building AI chat interfaces (using TDesign Chat components)
- Implementing dark mode adaptation
## Quick Start
### Installation
```bash
npm i tdesign-miniprogram -S --production
```
### Modify app.json
Remove `"style": "v2"` from `app.json` to avoid style conflicts.
### Modify project.config.json
Add the following to the `setting` section of `project.config.json`:
```json
{
"setting": {
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "./package.json",
"miniprogramNpmDistDir": "./"
}
]
}
}
```
### Modify tsconfig.json (TypeScript projects)
```json
{
"paths": {
"tdesign-miniprogram/*": [
"./miniprogram/miniprogram_npm/tdesign-miniprogram/*"
]
}
}
```
> After modifying project.config.json, build npm in WeChat DevTools: `Tools - Build npm`
> After successful build, check `Compile JS to ES5`
### Using Components
Import in page or component JSON file:
```json
{
"usingComponents": {
"t-button": "tdesign-miniprogram/button/button"
}
}
```
Use in WXML:
```html
Button
```
## Component Categories
### Basic Components (6)
| Component | Description | Import Path |
| --------- | ---------------------- | ------------------------------------- |
| Button | Button | `tdesign-miniprogram/button/button` |
| Divider | Divider | `tdesign-miniprogram/divider/divider` |
| Fab | Floating Action Button | `tdesign-miniprogram/fab/fab` |
| Icon | Icon | `tdesign-miniprogram/icon/icon` |
| Layout | Layout | `tdesign-miniprogram/row/row` |
| Link | Link | `tdesign-miniprogram/link/link` |
### Navigation Components (8)
| Component | Description | Import Path |
| --------- | --------------- | --------------------------------------- |
| BackTop | Back to Top | `tdesign-miniprogram/back-top/back-top` |
| Drawer | Drawer | `tdesign-miniprogram/drawer/drawer` |
| Indexes | Index List | `tdesign-miniprogram/indexes/indexes` |
| Navbar | Navigation Bar | `tdesign-miniprogram/navbar/navbar` |
| SideBar | Side Navigation | `tdesign-miniprogram/side-bar/side-bar` |
| Steps | Steps | `tdesign-miniprogram/steps/steps` |
| TabBar | Bottom Tab Bar | `tdesign-miniprogram/tab-bar/tab-bar` |
| Tabs | Tabs | `tdesign-miniprogram/tabs/tabs` |
### Input Components (16)
| Component | Description | Import Path |
| -------------- | ---------------- | ------------------------------------------------------- |
| Calendar | Calendar | `tdesign-miniprogram/calendar/calendar` |
| Cascader | Cascader | `tdesign-miniprogram/cascader/cascader` |
| CheckBox | Checkbox | `tdesign-miniprogram/checkbox/checkbox` |
| DateTimePicker | Date Time Picker | `tdesign-miniprogram/date-time-picker/date-time-picker` |
| Input | Input | `tdesign-miniprogram/input/input` |
| Picker | Picker | `tdesign-miniprogram/picker/picker` |
| Radio | Radio | `tdesign-miniprogram/radio/radio` |
| Rate | Rate | `tdesign-miniprogram/rate/rate` |
| Search | Search | `tdesign-miniprogram/search/search` |
| Slider | Slider | `tdesign-miniprogram/slider/slider` |
| Stepper | Stepper | `tdesign-miniprogram/stepper/stepper` |
| Switch | Switch | `tdesign-miniprogram/switch/switch` |
| Textarea | Textarea | `tdesign-miniprogram/textarea/textarea` |
| TreeSelect | Tree Select | `tdesign-miniprogram/tree-select/tree-select` |
| Upload | Upload | `tdesign-miniprogram/upload/upload` |
| Form | Form | `tdesign-miniprogram/form/form` |
### Data Display Components (18)
| Component | Description | Import Path |
| ----------- | ------------ | ----------------------------------------------- |
| Avatar | Avatar | `tdesign-miniprogram/avatar/avatar` |
| Badge | Badge | `tdesign-miniprogram/badge/badge` |
| Cell | Cell | `tdesign-miniprogram/cell/cell` |
| Collapse | Collapse | `tdesign-miniprogram/collapse/collapse` |
| CountDown | Countdown | `tdesign-miniprogram/count-down/count-down` |
| Empty | Empty State | `tdesign-miniprogram/empty/empty` |
| Footer | Footer | `tdesign-miniprogram/footer/footer` |
| Grid | Grid | `tdesign-miniprogram/grid/grid` |
| Image | Image | `tdesign-miniprogram/image/image` |
| ImageViewer | Image Viewer | `tdesign-miniprogram/image-viewer/image-viewer` |
| Progress | Progress | `tdesign-miniprogram/progress/progress` |
| Result | Result | `tdesign-miniprogram/result/result` |
| Skeleton | Skeleton | `tdesign-miniprogram/skeleton/skeleton` |
| Sticky | Sticky | `tdesign-miniprogram/sticky/sticky` |
| Swiper | Swiper | `tdesign-miniprogram/swiper/swiper` |
| Table | Table | `tdesign-miniprogram/table/table` |
| Tag | Tag | `tdesign-miniprogram/tag/tag` |
| List | List | `tdesign-miniprogram/list/list` |
### Feedback Components (12)
| Component | Description | Import Path |
| --------------- | ----------------- | --------------------------------------------------------- |
| ActionSheet | Action Sheet | `tdesign-miniprogram/action-sheet/action-sheet` |
| Dialog | Dialog | `tdesign-miniprogram/dialog/dialog` |
| DropdownMenu | Dropdown Menu | `tdesign-miniprogram/dropdown-menu/dropdown-menu` |
| Guide | Guide | `tdesign-miniprogram/guide/guide` |
| Loading | Loading | `tdesign-miniprogram/loading/loading` |
| Message | Message | `tdesign-miniprogram/message/message` |
| NoticeBar | Notice Bar | `tdesign-miniprogram/notice-bar/notice-bar` |
| Overlay | Overlay | `tdesign-miniprogram/overlay/overlay` |
| Popup | Popup | `tdesign-miniprogram/popup/popup` |
| PullDownRefresh | Pull Down Refresh | `tdesign-miniprogram/pull-down-refresh/pull-down-refresh` |
| SwipeCell | Swipe Cell | `tdesign-miniprogram/swipe-cell/swipe-cell` |
| Toast | Toast | `tdesign-miniprogram/toast/toast` |
### AI Chat Components (9)
| Component | Description | Import Path |
| ------------- | --------------- | --------------------------------------------------- |
| ChatList | Chat List | `tdesign-miniprogram/chat-list/chat-list` |
| ChatMessage | Chat Message | `tdesign-miniprogram/chat-message/chat-message` |
| ChatSender | Chat Sender | `tdesign-miniprogram/chat-sender/chat-sender` |
| ChatContent | Chat Content | `tdesign-miniprogram/chat-content/chat-content` |
| ChatActionbar | Chat Action Bar | `tdesign-miniprogram/chat-actionbar/chat-actionbar` |
| ChatLoading | Chat Loading | `tdesign-miniprogram/chat-loading/chat-loading` |
| ChatMarkdown | Chat Markdown | `tdesign-miniprogram/chat-markdown/chat-markdown` |
| ChatThinking | Chat Thinking | `tdesign-miniprogram/chat-thinking/chat-thinking` |
| Attachments | Attachments | `tdesign-miniprogram/attachments/attachments` |
## Common Patterns
### Button
```html
Primary Button
Light Button
Default Button
Outline Button
Text Button
Loading
Disabled
Block Button
Ghost Button
```
### Input
```json
{
"usingComponents": {
"t-input": "tdesign-miniprogram/input/input"
}
}
```
```html
```
### Dialog
```json
{
"usingComponents": {
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
```
```html
```
### Toast
```javascript
import Toast from 'tdesign-miniprogram/toast/index';
Toast({
context: this,
selector: '#t-toast',
message: 'Toast message',
});
```
### AI Chat Interface
```json
{
"usingComponents": {
"t-chat-list": "tdesign-miniprogram/chat-list/chat-list",
"t-chat-message": "tdesign-miniprogram/chat-message/chat-message",
"t-chat-sender": "tdesign-miniprogram/chat-sender/chat-sender"
}
}
```
```html
```
```javascript
Component({
data: {
messages: [
{
role: 'user',
content: [{ type: 'text', data: 'Hello' }],
},
{
role: 'assistant',
content: [{ type: 'text', data: 'Hello! How can I help you?' }],
},
],
},
methods: {
onSend(e) {
const { value } = e.detail;
// Handle send message
},
},
});
```
## Style Customization
### Method 1: Using Style Attribute
```html
Custom Style
Custom Style
```
### Method 2: Disable Style Isolation
Override styles directly in page:
```css
.t-button--primary {
background-color: navy;
}
```
In custom components, enable `styleIsolation`:
```javascript
Component({
options: {
styleIsolation: 'shared',
},
});
```
### Method 3: External Style Classes
```html
Button
```
```css
.my-button-class {
background-color: navy !important;
}
```
### Method 4: CSS Variables
TDesign provides rich CSS variables for theme customization:
```css
page {
--td-button-primary-bg-color: #0052d9;
--td-button-border-radius: 8rpx;
}
```
## Dark Mode
### 1. Modify app.json
```json
{
"darkmode": true
}
```
### 2. Import Design Token
In `app.wxss`:
```css
@import 'miniprogram_npm/tdesign-miniprogram/common/style/theme/_index.wxss';
```
### 3. Use CSS Variables
```css
.text {
color: var(--td-text-color-secondary);
}
```
### 4. Special Component Adaptation
For components wrapped in `custom-tab-bar` or `root-portal`, add `.page` class:
```html
```
## Reference Files
This skill includes comprehensive documentation in `references/`:
### Basic Documentation
- **miniprogram/getting-started.md** - Quick start guide
- **miniprogram/overview.md** - Component overview
- **miniprogram/custom-style.md** - Style customization
- **miniprogram/custom-theme.md** - Theme customization
- **miniprogram/dark-mode.md** - Dark mode
### Component Documentation (miniprogram/components/)
- **button.md** - Button
- **input.md** - Input
- **dialog.md** - Dialog
- **form.md** - Form
- ... more component docs
### AI Chat Component Documentation (miniprogram-chat/)
- **getting-started.md** - Chat component quick start
- **sse.md** - SSE streaming
- **components/chat-message.md** - Chat message
- **components/chat-sender.md** - Chat sender
- **components/chat-list.md** - Chat list
- ... more chat component docs
Use `Read` tool to access specific reference files when detailed API information is needed.
## Key Requirements
- Minimum base library version: `^2.12.0`
- Build npm in WeChat DevTools required
- Remove `"style": "v2"` from `app.json`
## Resources
- [TDesign Official Documentation](https://tdesign.tencent.com/miniprogram/overview)
- [GitHub Repository](https://github.com/Tencent/tdesign-miniprogram)
- [Component Demo Mini Program](https://developers.weixin.qq.com/s/NSVqRNmh8l5a)
## Notes
- This skill was automatically generated from TDesign official documentation
- Reference files preserve the structure and examples from source docs
- Some reference content remains in Chinese as per official documentation