@teamix-evo/ui 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +1 -1
  2. package/package.json +8 -4
  3. package/src/components/accordion/accordion.meta.md +10 -5
  4. package/src/components/accordion/accordion.stories.tsx +11 -6
  5. package/src/components/affix/affix.meta.md +19 -10
  6. package/src/components/affix/affix.stories.tsx +4 -2
  7. package/src/components/alert/alert.meta.md +19 -14
  8. package/src/components/alert/alert.stories.tsx +1 -1
  9. package/src/components/alert/alert.tsx +5 -5
  10. package/src/components/alert-dialog/alert-dialog.meta.md +23 -10
  11. package/src/components/alert-dialog/alert-dialog.stories.tsx +1 -1
  12. package/src/components/alert-dialog/alert-dialog.tsx +1 -1
  13. package/src/components/anchor/anchor.meta.md +20 -11
  14. package/src/components/anchor/anchor.stories.tsx +1 -1
  15. package/src/components/app/app.meta.md +19 -10
  16. package/src/components/app/app.stories.tsx +4 -2
  17. package/src/components/aspect-ratio/aspect-ratio.meta.md +10 -5
  18. package/src/components/aspect-ratio/aspect-ratio.stories.tsx +1 -1
  19. package/src/components/auto-complete/auto-complete.meta.md +25 -16
  20. package/src/components/auto-complete/auto-complete.stories.tsx +4 -2
  21. package/src/components/avatar/avatar.meta.md +23 -11
  22. package/src/components/avatar/avatar.stories.tsx +1 -1
  23. package/src/components/badge/badge.meta.md +26 -21
  24. package/src/components/badge/badge.tsx +7 -13
  25. package/src/components/breadcrumb/breadcrumb.meta.md +21 -10
  26. package/src/components/breadcrumb/breadcrumb.stories.tsx +8 -0
  27. package/src/components/button/button.meta.md +22 -17
  28. package/src/components/button/button.stories.tsx +1 -1
  29. package/src/components/button/demo/as-child.tsx +24 -0
  30. package/src/components/button/demo/basic.tsx +8 -0
  31. package/src/components/button/demo/block.tsx +16 -0
  32. package/src/components/button/demo/loading.tsx +19 -0
  33. package/src/components/button/demo/shapes.tsx +18 -0
  34. package/src/components/button/demo/sizes.tsx +19 -0
  35. package/src/components/button/demo/variants.tsx +19 -0
  36. package/src/components/button/demo/with-icon.tsx +20 -0
  37. package/src/components/button-group/button-group.meta.md +18 -9
  38. package/src/components/button-group/button-group.stories.tsx +5 -2
  39. package/src/components/calendar/calendar.meta.md +14 -9
  40. package/src/components/calendar/calendar.stories.tsx +1 -1
  41. package/src/components/calendar/calendar.tsx +1 -1
  42. package/src/components/card/card.meta.md +36 -11
  43. package/src/components/card/card.stories.tsx +8 -0
  44. package/src/components/carousel/carousel.meta.md +16 -11
  45. package/src/components/carousel/carousel.stories.tsx +10 -5
  46. package/src/components/cascader/cascader.meta.md +28 -19
  47. package/src/components/cascader/cascader.stories.tsx +9 -8
  48. package/src/components/cascader/cascader.tsx +2 -2
  49. package/src/components/checkbox/checkbox.meta.md +26 -8
  50. package/src/components/checkbox/checkbox.stories.tsx +1 -1
  51. package/src/components/collapsible/collapsible.meta.md +11 -4
  52. package/src/components/collapsible/collapsible.stories.tsx +8 -0
  53. package/src/components/color-picker/color-picker.meta.md +27 -18
  54. package/src/components/color-picker/color-picker.stories.tsx +1 -1
  55. package/src/components/color-picker/color-picker.tsx +1 -0
  56. package/src/components/combobox/combobox.meta.md +29 -20
  57. package/src/components/combobox/combobox.stories.tsx +1 -1
  58. package/src/components/combobox/combobox.tsx +3 -3
  59. package/src/components/command/command.meta.md +32 -12
  60. package/src/components/command/command.stories.tsx +1 -1
  61. package/src/components/command/command.tsx +1 -1
  62. package/src/components/context-menu/context-menu.meta.md +34 -11
  63. package/src/components/context-menu/context-menu.stories.tsx +8 -0
  64. package/src/components/context-menu/context-menu.tsx +2 -2
  65. package/src/components/data-table/data-table.meta.md +24 -19
  66. package/src/components/data-table/data-table.stories.tsx +12 -5
  67. package/src/components/date-picker/date-picker.meta.md +40 -20
  68. package/src/components/date-picker/date-picker.stories.tsx +1 -1
  69. package/src/components/descriptions/descriptions.meta.md +23 -14
  70. package/src/components/descriptions/descriptions.stories.tsx +1 -1
  71. package/src/components/dialog/dialog.meta.md +25 -12
  72. package/src/components/dialog/dialog.stories.tsx +1 -1
  73. package/src/components/dialog/dialog.tsx +1 -1
  74. package/src/components/drawer/drawer.meta.md +19 -8
  75. package/src/components/drawer/drawer.stories.tsx +1 -1
  76. package/src/components/drawer/drawer.tsx +1 -0
  77. package/src/components/dropdown-menu/dropdown-menu.meta.md +42 -14
  78. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +8 -0
  79. package/src/components/dropdown-menu/dropdown-menu.tsx +2 -2
  80. package/src/components/empty/empty.meta.md +20 -11
  81. package/src/components/empty/empty.stories.tsx +1 -1
  82. package/src/components/field/field.meta.md +27 -10
  83. package/src/components/field/field.stories.tsx +6 -3
  84. package/src/components/flex/flex.meta.md +23 -14
  85. package/src/components/flex/flex.stories.tsx +46 -14
  86. package/src/components/float-button/float-button.meta.md +35 -11
  87. package/src/components/float-button/float-button.stories.tsx +4 -2
  88. package/src/components/float-button/float-button.tsx +1 -1
  89. package/src/components/form/form.meta.md +57 -14
  90. package/src/components/form/form.stories.tsx +1 -1
  91. package/src/components/grid/grid.meta.md +31 -6
  92. package/src/components/grid/grid.stories.tsx +4 -2
  93. package/src/components/hover-card/hover-card.meta.md +21 -9
  94. package/src/components/hover-card/hover-card.stories.tsx +6 -2
  95. package/src/components/image/image.meta.md +24 -15
  96. package/src/components/image/image.stories.tsx +1 -1
  97. package/src/components/image/image.tsx +4 -4
  98. package/src/components/input/demo/addon.tsx +15 -0
  99. package/src/components/input/demo/basic.tsx +12 -0
  100. package/src/components/input/demo/clearable.tsx +21 -0
  101. package/src/components/input/demo/show-count.tsx +18 -0
  102. package/src/components/input/demo/sizes.tsx +15 -0
  103. package/src/components/input/demo/with-prefix-suffix.tsx +19 -0
  104. package/src/components/input/input.meta.md +21 -16
  105. package/src/components/input/input.stories.tsx +1 -1
  106. package/src/components/input/input.tsx +51 -47
  107. package/src/components/input-group/input-group.meta.md +26 -8
  108. package/src/components/input-group/input-group.stories.tsx +1 -1
  109. package/src/components/input-group/input-group.tsx +4 -3
  110. package/src/components/input-number/input-number.meta.md +26 -17
  111. package/src/components/input-number/input-number.stories.tsx +14 -3
  112. package/src/components/input-number/input-number.tsx +20 -6
  113. package/src/components/input-otp/input-otp.meta.md +22 -9
  114. package/src/components/input-otp/input-otp.stories.tsx +1 -1
  115. package/src/components/item/item.meta.md +32 -9
  116. package/src/components/item/item.stories.tsx +5 -2
  117. package/src/components/kbd/kbd.meta.md +29 -8
  118. package/src/components/kbd/kbd.stories.tsx +1 -1
  119. package/src/components/kbd/kbd.tsx +2 -1
  120. package/src/components/label/label.meta.md +14 -9
  121. package/src/components/masonry/masonry.meta.md +18 -9
  122. package/src/components/masonry/masonry.stories.tsx +4 -2
  123. package/src/components/masonry/masonry.tsx +1 -0
  124. package/src/components/mentions/mentions.meta.md +28 -19
  125. package/src/components/mentions/mentions.stories.tsx +1 -1
  126. package/src/components/mentions/mentions.tsx +2 -1
  127. package/src/components/menubar/menubar.meta.md +36 -14
  128. package/src/components/menubar/menubar.stories.tsx +8 -0
  129. package/src/components/menubar/menubar.tsx +2 -2
  130. package/src/components/native-select/native-select.meta.md +17 -8
  131. package/src/components/native-select/native-select.stories.tsx +6 -3
  132. package/src/components/navigation-menu/navigation-menu.meta.md +25 -11
  133. package/src/components/navigation-menu/navigation-menu.stories.tsx +11 -11
  134. package/src/components/navigation-menu/navigation-menu.tsx +3 -2
  135. package/src/components/notification/notification.meta.md +14 -5
  136. package/src/components/notification/notification.stories.tsx +5 -3
  137. package/src/components/notification/notification.tsx +3 -3
  138. package/src/components/pagination/pagination.meta.md +59 -28
  139. package/src/components/pagination/pagination.stories.tsx +9 -3
  140. package/src/components/popconfirm/popconfirm.meta.md +30 -21
  141. package/src/components/popconfirm/popconfirm.stories.tsx +1 -2
  142. package/src/components/popconfirm/popconfirm.tsx +1 -1
  143. package/src/components/popover/popover.meta.md +13 -8
  144. package/src/components/popover/popover.stories.tsx +1 -1
  145. package/src/components/progress/progress.meta.md +28 -13
  146. package/src/components/progress/progress.stories.tsx +1 -1
  147. package/src/components/progress/progress.tsx +6 -6
  148. package/src/components/radio-group/radio-group.meta.md +17 -12
  149. package/src/components/radio-group/radio-group.stories.tsx +1 -1
  150. package/src/components/rate/rate.meta.md +25 -16
  151. package/src/components/rate/rate.stories.tsx +11 -3
  152. package/src/components/rate/rate.tsx +2 -2
  153. package/src/components/resizable/resizable.meta.md +19 -8
  154. package/src/components/resizable/resizable.stories.tsx +1 -1
  155. package/src/components/result/result.meta.md +21 -12
  156. package/src/components/result/result.stories.tsx +2 -6
  157. package/src/components/result/result.tsx +3 -3
  158. package/src/components/scroll-area/scroll-area.meta.md +10 -5
  159. package/src/components/scroll-area/scroll-area.stories.tsx +8 -0
  160. package/src/components/scroll-area/scroll-area.tsx +3 -3
  161. package/src/components/segmented/segmented.meta.md +19 -14
  162. package/src/components/segmented/segmented.stories.tsx +35 -6
  163. package/src/components/select/select.meta.md +22 -9
  164. package/src/components/select/select.stories.tsx +1 -1
  165. package/src/components/select/select.tsx +2 -2
  166. package/src/components/separator/separator.meta.md +16 -11
  167. package/src/components/separator/separator.stories.tsx +1 -1
  168. package/src/components/sheet/sheet.meta.md +22 -11
  169. package/src/components/sheet/sheet.stories.tsx +1 -1
  170. package/src/components/sidebar/sidebar.meta.md +47 -18
  171. package/src/components/sidebar/sidebar.stories.tsx +10 -5
  172. package/src/components/skeleton/skeleton.meta.md +33 -10
  173. package/src/components/skeleton/skeleton.stories.tsx +1 -1
  174. package/src/components/slider/slider.meta.md +12 -7
  175. package/src/components/slider/slider.stories.tsx +1 -1
  176. package/src/components/sonner/sonner.meta.md +8 -3
  177. package/src/components/sonner/sonner.stories.tsx +13 -8
  178. package/src/components/space/space.meta.md +22 -13
  179. package/src/components/space/space.stories.tsx +20 -6
  180. package/src/components/spinner/spinner.meta.md +23 -10
  181. package/src/components/spinner/spinner.stories.tsx +1 -1
  182. package/src/components/statistic/statistic.meta.md +37 -16
  183. package/src/components/statistic/statistic.stories.tsx +2 -6
  184. package/src/components/statistic/statistic.tsx +1 -1
  185. package/src/components/steps/steps.meta.md +21 -12
  186. package/src/components/steps/steps.stories.tsx +7 -2
  187. package/src/components/switch/switch.meta.md +16 -11
  188. package/src/components/switch/switch.stories.tsx +1 -1
  189. package/src/components/switch/switch.tsx +58 -36
  190. package/src/components/table/table.meta.md +24 -9
  191. package/src/components/table/table.stories.tsx +9 -4
  192. package/src/components/tabs/tabs.meta.md +14 -9
  193. package/src/components/tabs/tabs.stories.tsx +8 -0
  194. package/src/components/tag/tag.meta.md +39 -10
  195. package/src/components/tag/tag.stories.tsx +7 -2
  196. package/src/components/tag/tag.tsx +3 -3
  197. package/src/components/textarea/textarea.meta.md +17 -12
  198. package/src/components/textarea/textarea.stories.tsx +1 -1
  199. package/src/components/textarea/textarea.tsx +1 -1
  200. package/src/components/time-picker/time-picker.meta.md +38 -15
  201. package/src/components/time-picker/time-picker.stories.tsx +44 -6
  202. package/src/components/time-picker/time-picker.tsx +74 -10
  203. package/src/components/timeline/timeline.meta.md +20 -11
  204. package/src/components/timeline/timeline.stories.tsx +14 -4
  205. package/src/components/timeline/timeline.tsx +3 -2
  206. package/src/components/toggle/toggle.meta.md +14 -9
  207. package/src/components/toggle/toggle.stories.tsx +1 -1
  208. package/src/components/toggle-group/toggle-group.meta.md +16 -11
  209. package/src/components/toggle-group/toggle-group.stories.tsx +1 -1
  210. package/src/components/tooltip/tooltip.meta.md +18 -13
  211. package/src/components/tooltip/tooltip.stories.tsx +1 -1
  212. package/src/components/tour/tour.meta.md +25 -16
  213. package/src/components/tour/tour.stories.tsx +1 -1
  214. package/src/components/tour/tour.tsx +1 -1
  215. package/src/components/transfer/transfer.meta.md +29 -20
  216. package/src/components/transfer/transfer.stories.tsx +2 -6
  217. package/src/components/tree/tree.meta.md +36 -23
  218. package/src/components/tree/tree.stories.tsx +30 -11
  219. package/src/components/tree-select/tree-select.meta.md +37 -22
  220. package/src/components/tree-select/tree-select.stories.tsx +1 -1
  221. package/src/components/tree-select/tree-select.tsx +1 -1
  222. package/src/components/typography/typography.meta.md +41 -16
  223. package/src/components/typography/typography.stories.tsx +4 -8
  224. package/src/components/typography/typography.tsx +5 -3
  225. package/src/components/upload/upload.meta.md +31 -22
  226. package/src/components/upload/upload.stories.tsx +8 -14
  227. package/src/components/watermark/watermark.meta.md +26 -17
  228. package/src/components/watermark/watermark.stories.tsx +4 -2
  229. package/src/components/watermark/watermark.tsx +1 -0
@@ -19,8 +19,7 @@ const data: User[] = Array.from({ length: 35 }).map((_, i) => ({
19
19
  name: ['Alice', 'Bob', 'Carol', 'David', 'Eve'][i % 5] + ' ' + (i + 1),
20
20
  email: `user${i + 1}@example.com`,
21
21
  status:
22
- (['active', 'invited', 'disabled'] as const)[i % 3] ??
23
- ('active' as const),
22
+ (['active', 'invited', 'disabled'] as const)[i % 3] ?? ('active' as const),
24
23
  amount: Math.round(Math.random() * 1000),
25
24
  }));
26
25
 
@@ -33,8 +32,8 @@ const columns: ColumnDef<User>[] = [
33
32
  table.getIsAllPageRowsSelected()
34
33
  ? true
35
34
  : table.getIsSomePageRowsSelected()
36
- ? 'indeterminate'
37
- : false
35
+ ? 'indeterminate'
36
+ : false
38
37
  }
39
38
  onCheckedChange={(v) => table.toggleAllPageRowsSelected(!!v)}
40
39
  aria-label="全选"
@@ -99,7 +98,15 @@ const meta: Meta<typeof DataTable<User, unknown>> = {
99
98
  title: '数据展示 · Data Display/DataTable',
100
99
  component: DataTable,
101
100
  tags: ['autodocs'],
102
- parameters: { layout: 'fullscreen' },
101
+ parameters: {
102
+ layout: 'fullscreen',
103
+ docs: {
104
+ description: {
105
+ component:
106
+ '数据表 — 基于 TanStack Table + 基础 Table 原语 + SimplePagination。声明式 columns + data 即可实现排序 / 筛选 / 分页 / 多选,等价 antd `Table` 的核心交互合集。',
107
+ },
108
+ },
109
+ },
103
110
  };
104
111
 
105
112
  export default meta;
@@ -1,15 +1,17 @@
1
1
  ---
2
2
  id: date-picker
3
3
  name: DatePicker
4
+ displayName: 日期选择
4
5
  type: component
5
6
  category: form
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # DatePicker
11
+ # DatePicker 日期选择
11
12
 
12
13
  日期选择器 — `Calendar + Popover` 复合,提供两种形态:
14
+
13
15
  - `<DatePicker />` — 单日(对应 antd `DatePicker`)
14
16
  - `<DateRangePicker />` — 范围(对应 antd `DatePicker.RangePicker`)
15
17
 
@@ -32,16 +34,34 @@ package: "@teamix-evo/ui"
32
34
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。
33
35
 
34
36
  <!-- auto:props:begin -->
35
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
36
- | --- | --- | --- | --- | --- |
37
- | `value` | `Date` | – | – | 受控值 — 当前选中日期。 |
38
- | `onChange` | `(value: Date \| undefined) => void` | | | 选中日期变化回调。 |
39
- | `placeholder` | `string` | `"选择日期"` | | 占位文本(未选时)。 |
40
- | `format` | `string` | `"yyyy-MM-dd"` | – | date-fns format 字符串。 |
41
- | `size` | `'sm' \| 'default' \| 'lg'` | – | – | 触发器尺寸。 |
42
- | `className` | `string` | | – | 触发器 className(传给底层 Button)。 |
43
- | `disabled` | `boolean` | – | | 触发器是否禁用。 |
44
- | `disabledDates` | `(date: Date) => boolean` | – | – | 不可选日期 predicate(透传到 Calendar `disabled`)。 |
37
+
38
+ #### DatePicker
39
+
40
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
41
+ | --------------- | ------------------------------------ | -------------- | ---- | ---------------------------------------------------- |
42
+ | `value` | `Date` | | – | 受控值 当前选中日期。 |
43
+ | `onChange` | `(value: Date \| undefined) => void` | – | – | 选中日期变化回调。 |
44
+ | `placeholder` | `string` | `"选择日期"` | – | 占位文本(未选时)。 |
45
+ | `format` | `string` | `"yyyy-MM-dd"` | – | date-fns format 字符串。 |
46
+ | `size` | `'sm' \| 'default' \| 'lg'` | – | – | 触发器尺寸。 |
47
+ | `className` | `string` | – | – | 触发器 className(传给底层 Button)。 |
48
+ | `disabled` | `boolean` | – | – | 触发器是否禁用。 |
49
+ | `disabledDates` | `(date: Date) => boolean` | – | – | 不可选日期 predicate(透传到 Calendar `disabled`)。 |
50
+
51
+ #### DateRangePicker
52
+
53
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
54
+ | ---------------- | ----------------------------------------- | ---------------- | ---- | ------------------------ |
55
+ | `value` | `DateRange` | – | – | 受控值 — 当前选中范围。 |
56
+ | `onChange` | `(value: DateRange \| undefined) => void` | – | – | 范围变化回调。 |
57
+ | `placeholder` | `string` | `"选择日期范围"` | – | 占位文本。 |
58
+ | `format` | `string` | `"yyyy-MM-dd"` | – | date-fns format 字符串。 |
59
+ | `size` | `'sm' \| 'default' \| 'lg'` | – | – | 触发器尺寸。 |
60
+ | `className` | `string` | – | – | 触发器 className。 |
61
+ | `disabled` | `boolean` | – | – | 是否禁用。 |
62
+ | `disabledDates` | `(date: Date) => boolean` | – | – | 不可选日期 predicate。 |
63
+ | `numberOfMonths` | `number` | `2` | – | 同时显示几个月历。 |
64
+
45
65
  <!-- auto:props:end -->
46
66
 
47
67
  ## 依赖
@@ -49,16 +69,17 @@ package: "@teamix-evo/ui"
49
69
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
50
70
 
51
71
  <!-- auto:deps:begin -->
72
+
52
73
  ### 同库依赖
53
74
 
54
75
  > `teamix-evo ui add date-picker` 时,以下 entry 会被自动连带安装(无需手动 add)。
55
76
 
56
- | Entry | 类型 | 描述 |
57
- | --- | --- | --- |
58
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
59
- | `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
60
- | `calendar` | component | 日期选择面板 — react-day-picker,mode=single|multiple|range,与 design tokens 对齐 |
61
- | `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
77
+ | Entry | 类型 | 描述 |
78
+ | ---------- | --------- | --------------------------------------------------------------------------------------- | -------- | --------------------------- |
79
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
80
+ | `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
81
+ | `calendar` | component | 日期选择面板 — react-day-picker,mode=single | multiple | range,与 design tokens 对齐 |
82
+ | `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
62
83
 
63
84
  ### npm 依赖
64
85
 
@@ -67,9 +88,8 @@ package: "@teamix-evo/ui"
67
88
  ```bash
68
89
  pnpm add date-fns@^3.0.0 react-day-picker@^9.0.0 lucide-react@^0.460.0
69
90
  ```
70
- <!-- auto:deps:end -->
71
91
 
72
- > `DateRangePicker` 的 props 详见 [`date-picker.tsx`](./date-picker.tsx) 的 `DateRangePickerProps` interface。
92
+ <!-- auto:deps:end -->
73
93
 
74
94
  ## AI 生成纪律
75
95
 
@@ -11,7 +11,7 @@ const meta: Meta<typeof DatePicker> = {
11
11
  docs: {
12
12
  description: {
13
13
  component:
14
- '日期选择器 — 输入框式触发器 + 弹层日历的组合,支持单日(`DatePicker`)和范围(`DateRangePicker`)两种模式。Popover + Calendar(react-day-picker v9)封装,日期格式由 `format` 控制(date-fns 语法),`size` 三档对齐 Input。能力对齐 antd DatePicker,视觉走 OpenTrek semantic tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
14
+ '日期选择器 — 输入框式触发器 + 弹层日历的组合,支持单日(`DatePicker`)和范围(`DateRangePicker`)两种模式。Popover + Calendar(react-day-picker v9)封装,日期格式由 `format` 控制(date-fns 语法),`size` 三档对齐 Input。能力对齐 antd DatePicker。',
15
15
  },
16
16
  },
17
17
  },
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: descriptions
3
3
  name: Descriptions
4
+ displayName: 描述列表
4
5
  type: component
5
6
  category: layout
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # Descriptions
11
+ # Descriptions 描述列表
11
12
 
12
13
  描述列表 — antd 独有补足。**键值对详情**(资源详情 / 用户信息 / 配置预览),声明式 `items` 数组驱动,自动布局到等分列。
13
14
 
@@ -23,29 +24,37 @@ package: "@teamix-evo/ui"
23
24
  - 表格(行 = 同质对象)→ `Table`
24
25
  - 富文本 → `Prose`
25
26
 
27
+ ## Props
28
+
26
29
  <!-- auto:props:begin -->
27
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
28
- | --- | --- | --- | --- | --- |
29
- | `title` | `React.ReactNode` | | | 顶部标题。 |
30
- | `items` | `DescriptionsItem[]` | – | | 字段列表。 |
31
- | `column` | `1 \| 2 \| 3 \| 4` | `3` | | 列数(antd `column` 并集) — 等分。响应式可在容器侧加 className 处理。 |
32
- | `layout` | `'horizontal' \| 'vertical'` | `"horizontal"` | – | 布局方向。`horizontal`(默认):label 在左,value 在右;`vertical`:label 在上,value 在下。 |
33
- | `bordered` | `boolean` | `false` | – | 带边框(每项独立单元格) |
34
- | `size` | `'sm' \| 'default'` | `"default"` | – | 尺寸。 |
30
+
31
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
32
+ | ---------- | ---------------------------- | -------------- | ---- | ------------------------------------------------------------------------------------- |
33
+ | `title` | `React.ReactNode` | – | | 顶部标题。 |
34
+ | `items` | `DescriptionsItem[]` | | | 字段列表。 |
35
+ | `column` | `1 \| 2 \| 3 \| 4` | `3` | – | 列数(antd `column` 并集) 等分。响应式可在容器侧加 className 处理。 |
36
+ | `layout` | `'horizontal' \| 'vertical'` | `"horizontal"` | – | 布局方向。`horizontal`(默认):label 在左,value 在右;`vertical`:label 在上,value 在下。 |
37
+ | `bordered` | `boolean` | `false` | – | 带边框(每项独立单元格)。 |
38
+ | `size` | `'sm' \| 'default'` | `"default"` | – | 尺寸。 |
39
+
35
40
  <!-- auto:props:end -->
36
41
 
42
+ ## 依赖
43
+
37
44
  <!-- auto:deps:begin -->
45
+
38
46
  ### 同库依赖
39
47
 
40
48
  > `teamix-evo ui add descriptions` 时,以下 entry 会被自动连带安装(无需手动 add)。
41
49
 
42
- | Entry | 类型 | 描述 |
43
- | --- | --- | --- |
44
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
50
+ | Entry | 类型 | 描述 |
51
+ | ----- | ---- | -------------------------------------------------- |
52
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
45
53
 
46
54
  ### npm 依赖
47
55
 
48
56
  _无 — 本组件不依赖任何 npm 包。_
57
+
49
58
  <!-- auto:deps:end -->
50
59
 
51
60
  > `DescriptionsItem`:`{ label; value; span?: number }`(`span > 1` 让该项跨多列)。
@@ -74,5 +83,5 @@ import { Badge } from '@/components/ui/badge';
74
83
  { label: '创建时间', value: '2024-12-01' },
75
84
  { label: '描述', value: '中后台运营管理系统', span: 3 },
76
85
  ]}
77
- />
86
+ />;
78
87
  ```
@@ -10,7 +10,7 @@ const meta: Meta<typeof Descriptions> = {
10
10
  docs: {
11
11
  description: {
12
12
  component:
13
- '描述列表 — 键值对详情(资源详情 / 用户信息 / 配置预览)。声明式 items 数组驱动,自动布局,支持横/纵布局、bordered、span 跨列。OpenTrek tokens 适配,等价 antd Descriptions。',
13
+ '描述列表 — 键值对详情(资源详情 / 用户信息 / 配置预览)。声明式 items 数组驱动,自动布局,支持横/纵布局、bordered、span 跨列。等价 antd Descriptions。',
14
14
  },
15
15
  },
16
16
  },
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: dialog
3
3
  name: Dialog
4
+ displayName: 对话框
4
5
  type: component
5
6
  category: feedback
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # Dialog
11
+ # Dialog 对话框
11
12
 
12
13
  模态对话框 — Radix Dialog + antd Modal 并集。**组合式 API**(shadcn 风格,非 antd 的 props 配置式),通过 `DialogHeader` / `DialogFooter` / `DialogTitle` / `DialogDescription` 子组件灵活组装内容。
13
14
 
@@ -32,9 +33,11 @@ package: "@teamix-evo/ui"
32
33
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `DialogContent` 的 props;`Dialog`(Root)透传 Radix `open / defaultOpen / onOpenChange / modal`。
33
34
 
34
35
  <!-- auto:props:begin -->
35
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
36
- | --- | --- | --- | --- | --- |
37
- | `showClose` | `boolean` | `true` | | 是否在右上角显示默认关闭按钮(antd Modal 默认行为)。 |
36
+
37
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
38
+ | ----------- | --------- | ------ | ---- | --------------------------------------------------- |
39
+ | `showClose` | `boolean` | `true` | – | 是否在右上角显示默认关闭按钮(antd Modal 默认行为)。 |
40
+
38
41
  <!-- auto:props:end -->
39
42
 
40
43
  ## 依赖
@@ -42,13 +45,14 @@ package: "@teamix-evo/ui"
42
45
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
43
46
 
44
47
  <!-- auto:deps:begin -->
48
+
45
49
  ### 同库依赖
46
50
 
47
51
  > `teamix-evo ui add dialog` 时,以下 entry 会被自动连带安装(无需手动 add)。
48
52
 
49
- | Entry | 类型 | 描述 |
50
- | --- | --- | --- |
51
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
53
+ | Entry | 类型 | 描述 |
54
+ | ----- | ---- | -------------------------------------------------- |
55
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
52
56
 
53
57
  ### npm 依赖
54
58
 
@@ -57,6 +61,7 @@ package: "@teamix-evo/ui"
57
61
  ```bash
58
62
  pnpm add @radix-ui/react-dialog@^1.1.0 lucide-react@^0.460.0
59
63
  ```
64
+
60
65
  <!-- auto:deps:end -->
61
66
 
62
67
  > 子组件:`Dialog`(Root)/ `DialogTrigger` / `DialogContent` / `DialogHeader` / `DialogFooter` / `DialogTitle` / `DialogDescription` / `DialogClose` / `DialogOverlay` / `DialogPortal`。
@@ -74,8 +79,14 @@ pnpm add @radix-ui/react-dialog@^1.1.0 lucide-react@^0.460.0
74
79
 
75
80
  ```tsx
76
81
  import {
77
- Dialog, DialogTrigger, DialogContent, DialogHeader,
78
- DialogFooter, DialogTitle, DialogDescription, DialogClose,
82
+ Dialog,
83
+ DialogTrigger,
84
+ DialogContent,
85
+ DialogHeader,
86
+ DialogFooter,
87
+ DialogTitle,
88
+ DialogDescription,
89
+ DialogClose,
79
90
  } from '@/components/ui/dialog';
80
91
  import { Button } from '@/components/ui/button';
81
92
 
@@ -97,9 +108,11 @@ import { Button } from '@/components/ui/button';
97
108
  <Button>保存</Button>
98
109
  </DialogFooter>
99
110
  </DialogContent>
100
- </Dialog>
111
+ </Dialog>;
101
112
 
102
113
  // 受控
103
114
  const [open, setOpen] = React.useState(false);
104
- <Dialog open={open} onOpenChange={setOpen}>...</Dialog>
115
+ <Dialog open={open} onOpenChange={setOpen}>
116
+ ...
117
+ </Dialog>;
105
118
  ```
@@ -21,7 +21,7 @@ const meta: Meta<typeof DialogContent> = {
21
21
  docs: {
22
22
  description: {
23
23
  component:
24
- '模态对话框 — 用于承载需要用户聚焦完成的任务(表单 / 确认 / 查看详情)。基于 Radix Dialog(焦点管理、ESC 关闭、`aria-modal` 自动) + antd Modal 范式(`DialogHeader` / `DialogFooter` / `DialogTitle` / `DialogDescription` 子组件组合)。视觉走 OpenTrek semantic tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
24
+ '模态对话框 — 用于承载需要用户聚焦完成的任务(表单 / 确认 / 查看详情)。基于 Radix Dialog(焦点管理、ESC 关闭、aria-modal 自动) + antd Modal 范式(DialogHeader / DialogFooter 子组件组合)。',
25
25
  },
26
26
  },
27
27
  },
@@ -42,7 +42,7 @@ const DialogContent = React.forwardRef<
42
42
  <DialogPrimitive.Content
43
43
  ref={ref}
44
44
  className={cn(
45
- 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',
45
+ 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',
46
46
  className,
47
47
  )}
48
48
  {...props}
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: drawer
3
3
  name: Drawer
4
+ displayName: 抽屉
4
5
  type: component
5
6
  category: feedback
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # Drawer
11
+ # Drawer 抽屉
11
12
 
12
13
  底部可拖拽抽屉 — 基于 [`vaul`](https://github.com/emilkowalski/vaul),iOS 风格,**移动端体验最佳**。
13
14
  **与 Sheet 区别**:Sheet 模态阻断 + 边缘滑入(桌面端);Drawer 底部 + 可向下拖拽 dismiss(移动端 / 触屏)。
@@ -31,7 +32,9 @@ package: "@teamix-evo/ui"
31
32
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `DrawerContent` 的 props;`Drawer`(Root)透传 vaul `open / defaultOpen / onOpenChange / shouldScaleBackground / dismissible / snapPoints / onClose`。
32
33
 
33
34
  <!-- auto:props:begin -->
35
+
34
36
  _(no props)_
37
+
35
38
  <!-- auto:props:end -->
36
39
 
37
40
  ## 依赖
@@ -39,13 +42,14 @@ _(no props)_
39
42
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
40
43
 
41
44
  <!-- auto:deps:begin -->
45
+
42
46
  ### 同库依赖
43
47
 
44
48
  > `teamix-evo ui add drawer` 时,以下 entry 会被自动连带安装(无需手动 add)。
45
49
 
46
- | Entry | 类型 | 描述 |
47
- | --- | --- | --- |
48
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
50
+ | Entry | 类型 | 描述 |
51
+ | ----- | ---- | -------------------------------------------------- |
52
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
49
53
 
50
54
  ### npm 依赖
51
55
 
@@ -54,6 +58,7 @@ _(no props)_
54
58
  ```bash
55
59
  pnpm add vaul@^1.0.0
56
60
  ```
61
+
57
62
  <!-- auto:deps:end -->
58
63
 
59
64
  > 子组件:`Drawer` / `DrawerTrigger` / `DrawerContent` / `DrawerHeader` / `DrawerFooter` / `DrawerTitle` / `DrawerDescription` / `DrawerClose`。
@@ -70,8 +75,14 @@ pnpm add vaul@^1.0.0
70
75
 
71
76
  ```tsx
72
77
  import {
73
- Drawer, DrawerTrigger, DrawerContent, DrawerHeader,
74
- DrawerTitle, DrawerDescription, DrawerFooter, DrawerClose,
78
+ Drawer,
79
+ DrawerTrigger,
80
+ DrawerContent,
81
+ DrawerHeader,
82
+ DrawerTitle,
83
+ DrawerDescription,
84
+ DrawerFooter,
85
+ DrawerClose,
75
86
  } from '@/components/ui/drawer';
76
87
  import { Button } from '@/components/ui/button';
77
88
 
@@ -92,5 +103,5 @@ import { Button } from '@/components/ui/button';
92
103
  </DrawerClose>
93
104
  </DrawerFooter>
94
105
  </DrawerContent>
95
- </Drawer>
106
+ </Drawer>;
96
107
  ```
@@ -19,7 +19,7 @@ const meta: Meta<typeof DrawerContent> = {
19
19
  docs: {
20
20
  description: {
21
21
  component:
22
- '抽屉(移动优先) — 从屏幕边缘滑入的浮层容器,常用于移动端表单 / 详情 / 导航等中等复杂度的二级界面。基于 [Vaul](https://vaul.emilkowal.ski/) 实现,提供原生手势 + 拖拽关闭 + 顶部把手;桌面端可视为 `Sheet` 的移动友好版本(能力对齐 antd Drawer)。视觉走 OpenTrek semantic tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
22
+ '抽屉(移动优先) — 从屏幕边缘滑入的浮层容器,常用于移动端表单 / 详情 / 导航。基于 Vaul 实现,提供原生手势 + 拖拽关闭 + 顶部把手。能力对齐 antd Drawer。',
23
23
  },
24
24
  },
25
25
  },
@@ -47,6 +47,7 @@ const DrawerContent = React.forwardRef<
47
47
  )}
48
48
  {...props}
49
49
  >
50
+ {/* eslint-disable-next-line teamix-evo/no-arbitrary-tw-value -- drawer drag handle pill: 100px is a deliberate visual constant, not a layout size to tokenize. */}
50
51
  <div className="mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" />
51
52
  {children}
52
53
  </DrawerPrimitive.Content>
@@ -4,10 +4,11 @@ name: DropdownMenu
4
4
  type: component
5
5
  category: navigation
6
6
  since: 0.1.0
7
- package: "@teamix-evo/ui"
7
+ package: '@teamix-evo/ui'
8
+ displayName: 下拉菜单
8
9
  ---
9
10
 
10
- # DropdownMenu
11
+ # DropdownMenu 下拉菜单
11
12
 
12
13
  下拉菜单 — Radix DropdownMenu 完整实现:Item / CheckboxItem / RadioItem / Label / Separator / Shortcut / Sub(子菜单)。
13
14
  对应 antd `Dropdown`,但本组件是**完整 menu primitives**(antd Dropdown 主要走 children 自由排版,本组件提供语义化每一种 item)。
@@ -31,7 +32,25 @@ package: "@teamix-evo/ui"
31
32
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `DropdownMenuContent` 的 props;`DropdownMenu`(Root)透传 Radix `open / defaultOpen / onOpenChange / modal`。
32
33
 
33
34
  <!-- auto:props:begin -->
34
- _(组件无 `<Name>Props` interface — props 详见 [`dropdown-menu.tsx`](./dropdown-menu.tsx))_
35
+
36
+ #### DropdownMenuSubTrigger
37
+
38
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
39
+ | ------- | --------- | ------- | ---- | ------------------------------------------- |
40
+ | `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
41
+
42
+ #### DropdownMenuItem
43
+
44
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
45
+ | ------- | --------- | ------- | ---- | ------------------------------------------- |
46
+ | `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
47
+
48
+ #### DropdownMenuLabel
49
+
50
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
51
+ | ------- | --------- | ------- | ---- | ------------------------------------------- |
52
+ | `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
53
+
35
54
  <!-- auto:props:end -->
36
55
 
37
56
  ## 依赖
@@ -39,13 +58,14 @@ _(组件无 `<Name>Props` interface — props 详见 [`dropdown-menu.tsx`](./dro
39
58
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
40
59
 
41
60
  <!-- auto:deps:begin -->
61
+
42
62
  ### 同库依赖
43
63
 
44
64
  > `teamix-evo ui add dropdown-menu` 时,以下 entry 会被自动连带安装(无需手动 add)。
45
65
 
46
- | Entry | 类型 | 描述 |
47
- | --- | --- | --- |
48
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
66
+ | Entry | 类型 | 描述 |
67
+ | ----- | ---- | -------------------------------------------------- |
68
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
49
69
 
50
70
  ### npm 依赖
51
71
 
@@ -54,9 +74,8 @@ _(组件无 `<Name>Props` interface — props 详见 [`dropdown-menu.tsx`](./dro
54
74
  ```bash
55
75
  pnpm add @radix-ui/react-dropdown-menu@^2.1.0 lucide-react@^0.460.0
56
76
  ```
57
- <!-- auto:deps:end -->
58
77
 
59
- > 完整子组件:`DropdownMenu` / `DropdownMenuTrigger` / `DropdownMenuContent` / `DropdownMenuItem`(支持 `inset`)/ `DropdownMenuCheckboxItem` / `DropdownMenuRadioItem` / `DropdownMenuLabel` / `DropdownMenuSeparator` / `DropdownMenuShortcut` / `DropdownMenuGroup` / `DropdownMenuRadioGroup` / `DropdownMenuSub`(嵌套)/ `DropdownMenuSubTrigger` / `DropdownMenuSubContent`。
78
+ <!-- auto:deps:end -->
60
79
 
61
80
  ## AI 生成纪律
62
81
 
@@ -70,11 +89,20 @@ pnpm add @radix-ui/react-dropdown-menu@^2.1.0 lucide-react@^0.460.0
70
89
 
71
90
  ```tsx
72
91
  import {
73
- DropdownMenu, DropdownMenuTrigger, DropdownMenuContent,
74
- DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem,
75
- DropdownMenuRadioGroup, DropdownMenuLabel, DropdownMenuSeparator,
76
- DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger,
77
- DropdownMenuSubContent, DropdownMenuPortal,
92
+ DropdownMenu,
93
+ DropdownMenuTrigger,
94
+ DropdownMenuContent,
95
+ DropdownMenuItem,
96
+ DropdownMenuCheckboxItem,
97
+ DropdownMenuRadioItem,
98
+ DropdownMenuRadioGroup,
99
+ DropdownMenuLabel,
100
+ DropdownMenuSeparator,
101
+ DropdownMenuShortcut,
102
+ DropdownMenuSub,
103
+ DropdownMenuSubTrigger,
104
+ DropdownMenuSubContent,
105
+ DropdownMenuPortal,
78
106
  } from '@/components/ui/dropdown-menu';
79
107
  import { Button } from '@/components/ui/button';
80
108
  import { User, Settings, LogOut } from 'lucide-react';
@@ -99,5 +127,5 @@ import { User, Settings, LogOut } from 'lucide-react';
99
127
  <LogOut /> 退出
100
128
  </DropdownMenuItem>
101
129
  </DropdownMenuContent>
102
- </DropdownMenu>
130
+ </DropdownMenu>;
103
131
  ```
@@ -19,6 +19,14 @@ const meta: Meta<typeof DropdownMenuContent> = {
19
19
  title: '导航 · Navigation/DropdownMenu',
20
20
  component: DropdownMenuContent,
21
21
  tags: ['autodocs'],
22
+ parameters: {
23
+ docs: {
24
+ description: {
25
+ component:
26
+ '下拉菜单 — 行内动作菜单(更多操作 / 用户头像下拉 / 工具栏溢出),支持 Item / CheckboxItem / RadioItem / Sub 子菜单。Radix DropdownMenu 实现,对应 antd `Dropdown`,但提供完整语义化原语。',
27
+ },
28
+ },
29
+ },
22
30
  };
23
31
 
24
32
  export default meta;
@@ -40,7 +40,7 @@ const DropdownMenuSubContent = React.forwardRef<
40
40
  <DropdownMenuPrimitive.SubContent
41
41
  ref={ref}
42
42
  className={cn(
43
- 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',
43
+ 'z-50 min-w-menu overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',
44
44
  className,
45
45
  )}
46
46
  {...props}
@@ -58,7 +58,7 @@ const DropdownMenuContent = React.forwardRef<
58
58
  ref={ref}
59
59
  sideOffset={sideOffset}
60
60
  className={cn(
61
- 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
61
+ 'z-50 min-w-menu overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
62
62
  className,
63
63
  )}
64
64
  {...props}
@@ -4,10 +4,11 @@ name: Empty
4
4
  type: component
5
5
  category: feedback
6
6
  since: 0.1.0
7
- package: "@teamix-evo/ui"
7
+ package: '@teamix-evo/ui'
8
+ displayName: 空状态
8
9
  ---
9
10
 
10
- # Empty
11
+ # Empty 空状态
11
12
 
12
13
  空状态 — antd 独有补足。**列表 / 表格 / 搜索结果为空**时的占位提示,提供引导动作鼓励用户创建首条数据。
13
14
 
@@ -23,23 +24,30 @@ package: "@teamix-evo/ui"
23
24
  - 错误 / 失败 → `Result` 或 `Alert`
24
25
  - 表单字段空 → 直接 placeholder
25
26
 
27
+ ## Props
28
+
26
29
  <!-- auto:props:begin -->
27
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
28
- | --- | --- | --- | --- | --- |
29
- | `image` | `React.ReactNode` | | | 自定义图标(覆盖默认 Inbox)。 |
30
- | `description` | `React.ReactNode` | `"暂无数据"` | – | 描述文本。 |
31
- | `extra` | `React.ReactNode` | | – | 操作区(放 Button 引导用户创建首条数据)。 |
32
- | `size` | `'sm' \| 'default'` | `"default"` | – | 尺寸 `sm` 用于卡片内 / 表格空态;`default` 用于整区。 |
30
+
31
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
32
+ | ------------- | ------------------- | ------------ | ---- | ------------------------------------------------------ |
33
+ | `image` | `React.ReactNode` | | – | 自定义图标(覆盖默认 Inbox)。 |
34
+ | `description` | `React.ReactNode` | `"暂无数据"` | – | 描述文本。 |
35
+ | `extra` | `React.ReactNode` | | – | 操作区(放 Button 引导用户创建首条数据)。 |
36
+ | `size` | `'sm' \| 'default'` | `"default"` | – | 尺寸 — `sm` 用于卡片内 / 表格空态;`default` 用于整区。 |
37
+
33
38
  <!-- auto:props:end -->
34
39
 
40
+ ## 依赖
41
+
35
42
  <!-- auto:deps:begin -->
43
+
36
44
  ### 同库依赖
37
45
 
38
46
  > `teamix-evo ui add empty` 时,以下 entry 会被自动连带安装(无需手动 add)。
39
47
 
40
- | Entry | 类型 | 描述 |
41
- | --- | --- | --- |
42
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
48
+ | Entry | 类型 | 描述 |
49
+ | ----- | ---- | -------------------------------------------------- |
50
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
43
51
 
44
52
  ### npm 依赖
45
53
 
@@ -48,6 +56,7 @@ package: "@teamix-evo/ui"
48
56
  ```bash
49
57
  pnpm add lucide-react@^0.460.0
50
58
  ```
59
+
51
60
  <!-- auto:deps:end -->
52
61
 
53
62
  ## AI 生成纪律
@@ -11,7 +11,7 @@ const meta: Meta<typeof Empty> = {
11
11
  docs: {
12
12
  description: {
13
13
  component:
14
- '空状态 — 列表 / 表格 / 搜索结果为空时的占位提示。提供 description 引导文案 + extra 主操作,鼓励用户创建首条数据。OpenTrek tokens 适配,等价 antd Empty。',
14
+ '空状态 — 列表 / 表格 / 搜索结果为空时的占位提示。提供 description 引导文案 + extra 主操作,鼓励用户创建首条数据。等价 antd Empty。',
15
15
  },
16
16
  },
17
17
  },