@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
@@ -4,10 +4,11 @@ name: Collapsible
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
- # Collapsible
11
+ # Collapsible 折叠面板
11
12
 
12
13
  单区域展开收起 — Radix Collapsible 薄包装。**shadcn-only**(antd Collapse 单 item 也可以模拟,但语义粗糙)。
13
14
 
@@ -27,7 +28,9 @@ package: "@teamix-evo/ui"
27
28
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。`Collapsible` 是 `CollapsibleRoot` 别名,接受 Radix 的 `open / defaultOpen / onOpenChange / disabled`。
28
29
 
29
30
  <!-- auto:props:begin -->
31
+
30
32
  _(组件无 `<Name>Props` interface — props 详见 [`collapsible.tsx`](./collapsible.tsx))_
33
+
31
34
  <!-- auto:props:end -->
32
35
 
33
36
  ## 依赖
@@ -35,6 +38,7 @@ _(组件无 `<Name>Props` interface — props 详见 [`collapsible.tsx`](./colla
35
38
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
36
39
 
37
40
  <!-- auto:deps:begin -->
41
+
38
42
  ### 同库依赖
39
43
 
40
44
  _无 — 本组件不依赖其他 ui entry。_
@@ -46,6 +50,7 @@ _无 — 本组件不依赖其他 ui entry。_
46
50
  ```bash
47
51
  pnpm add @radix-ui/react-collapsible@^1.1.0
48
52
  ```
53
+
49
54
  <!-- auto:deps:end -->
50
55
 
51
56
  > 子组件:`Collapsible` / `CollapsibleTrigger`(触发器)/ `CollapsibleContent`(可折叠内容)。
@@ -60,7 +65,9 @@ pnpm add @radix-ui/react-collapsible@^1.1.0
60
65
 
61
66
  ```tsx
62
67
  import {
63
- Collapsible, CollapsibleTrigger, CollapsibleContent,
68
+ Collapsible,
69
+ CollapsibleTrigger,
70
+ CollapsibleContent,
64
71
  } from '@/components/ui/collapsible';
65
72
  import { Button } from '@/components/ui/button';
66
73
  import { ChevronsUpDown } from 'lucide-react';
@@ -76,5 +83,5 @@ import { ChevronsUpDown } from 'lucide-react';
76
83
  <p className="text-sm text-muted-foreground">高级配置 1</p>
77
84
  <p className="text-sm text-muted-foreground">高级配置 2</p>
78
85
  </CollapsibleContent>
79
- </Collapsible>
86
+ </Collapsible>;
80
87
  ```
@@ -11,6 +11,14 @@ const meta: Meta<typeof Collapsible> = {
11
11
  title: '导航 · Navigation/Collapsible',
12
12
  component: Collapsible,
13
13
  tags: ['autodocs'],
14
+ parameters: {
15
+ docs: {
16
+ description: {
17
+ component:
18
+ '折叠面板 — 单区域展开收起,常用于“查看更多 / 收起”、表单高级选项开关等场景。Radix Collapsible 实现,shadcn 专有(antd Collapse 单 item 可模拟但语义粗糙)。',
19
+ },
20
+ },
21
+ },
14
22
  };
15
23
 
16
24
  export default meta;
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: color-picker
3
3
  name: ColorPicker
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
- # ColorPicker
11
+ # ColorPicker 颜色选择
11
12
 
12
13
  颜色选择 — antd 独有补足。**等价 antd `ColorPicker`**(v5.5+)。基于原生 `<input type="color">` + alpha 滑块 + hex 文本输入 + 预设色块,提供"触发器(色块)→ 弹出面板"的标准交互。可选透明度(8 位 hex)。
13
14
 
@@ -24,38 +25,46 @@ package: "@teamix-evo/ui"
24
25
  - 渐变 / 多色阶 → 当前不支持,需配合第三方 picker
25
26
  - HSL / RGB 各通道独立调节 → 当前仅 hex + alpha,复杂场景建议引入专业 picker
26
27
 
28
+ ## Props
29
+
27
30
  <!-- auto:props:begin -->
28
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
29
- | --- | --- | --- | --- | --- |
30
- | `value` | `string` | | | 受控值 — `#RRGGBB` 或 `#RRGGBBAA`(开 `allowAlpha` 时)。 |
31
- | `defaultValue` | `string` | `"#000000"` | – | uncontrolled 初值。 |
32
- | `onChange` | `(value: string) => void` | | – | 值变化回调。 |
33
- | `allowAlpha` | `boolean` | `false` | – | 是否允许透明度(antd `format=hex8` 类似行为) — 启用后展示 alpha 滑块,value 变为 8 位 hex。 |
34
- | `presets` | `string[]` | | – | 预设色块(antd `presets` 并集) — 一组常用颜色快捷选择。 |
35
- | `disabled` | `boolean` | – | – | 整体禁用。 |
36
- | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 触发器尺寸。 |
37
- | `className` | `string` | | – | 触发器 className。 |
31
+
32
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
33
+ | -------------- | --------------------------- | ----------- | ---- | ----------------------------------------------------------------------------------------- |
34
+ | `value` | `string` | | – | 受控值 `#RRGGBB` 或 `#RRGGBBAA`(开 `allowAlpha` 时)。 |
35
+ | `defaultValue` | `string` | `"#000000"` | – | uncontrolled 初值。 |
36
+ | `onChange` | `(value: string) => void` | | – | 值变化回调。 |
37
+ | `allowAlpha` | `boolean` | `false` | – | 是否允许透明度(antd `format=hex8` 类似行为) — 启用后展示 alpha 滑块,value 变为 8 位 hex。 |
38
+ | `presets` | `string[]` | – | – | 预设色块(antd `presets` 并集) — 一组常用颜色快捷选择。 |
39
+ | `disabled` | `boolean` | | – | 整体禁用。 |
40
+ | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 触发器尺寸。 |
41
+ | `className` | `string` | – | – | 触发器 className。 |
42
+
38
43
  <!-- auto:props:end -->
39
44
 
45
+ ## 依赖
46
+
40
47
  <!-- auto:deps:begin -->
48
+
41
49
  ### 同库依赖
42
50
 
43
51
  > `teamix-evo ui add color-picker` 时,以下 entry 会被自动连带安装(无需手动 add)。
44
52
 
45
- | Entry | 类型 | 描述 |
46
- | --- | --- | --- |
47
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
48
- | `input` | component | 文本输入 — shadcn 简洁基底 + antd prefix/suffix/clearable/showCount/addonBefore/addonAfter/size |
49
- | `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
53
+ | Entry | 类型 | 描述 |
54
+ | --------- | --------- | ----------------------------------------------------------------------------------------------- |
55
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
56
+ | `input` | component | 文本输入 — shadcn 简洁基底 + antd prefix/suffix/clearable/showCount/addonBefore/addonAfter/size |
57
+ | `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
50
58
 
51
59
  ### npm 依赖
52
60
 
53
61
  _无 — 本组件不依赖任何 npm 包。_
62
+
54
63
  <!-- auto:deps:end -->
55
64
 
56
65
  ## AI 生成纪律
57
66
 
58
- - **value 必须是 `#RRGGBB`(6位)或 `#RRGGBBAA`(8位 + 透明度)** — 不接受 `rgb()` / `hsl()` / 命名色
67
+ - **value 必须是 `#RRGGBB`(6 位)或 `#RRGGBBAA`(8 位 + 透明度)** — 不接受 `rgb()` / `hsl()` / 命名色
59
68
  - **`allowAlpha=true`** 时 value 自动变为 8 位 hex;关闭时即使有 alpha 也会被截断到 6 位
60
69
  - **`presets`** 应是品牌色板而非随手凑数 — 6-12 个 stable 颜色为佳,避免视觉混乱
61
70
  - **`disabled`** 是只读语义 — 配 value 展示当前选中色;**不要**用做"暂时锁定"等业务态(用 form-level 控制)
@@ -10,7 +10,7 @@ const meta: Meta<typeof ColorPicker> = {
10
10
  docs: {
11
11
  description: {
12
12
  component:
13
- '颜色选择 — 触发器色块 → Popover 面板(原生 color input + alpha + hex 输入 + 预设色板)。可选 8 位 hex(含透明度)。等价 antd `ColorPicker`(v5.5+)。视觉走 OpenTrek tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
13
+ '颜色选择 — 触发器色块 → Popover 面板(原生 color input + alpha + hex 输入 + 预设色板)。可选 8 位 hex(含透明度)。等价 antd `ColorPicker`(v5.5+)。',
14
14
  },
15
15
  },
16
16
  },
@@ -48,6 +48,7 @@ const ColorPicker = React.forwardRef<HTMLButtonElement, ColorPickerProps>(
48
48
  (
49
49
  {
50
50
  value,
51
+ // eslint-disable-next-line teamix-evo/no-color-literal -- ColorPicker default value is a hex literal by API contract (antd parity); not a styling decision.
51
52
  defaultValue = '#000000',
52
53
  onChange,
53
54
  allowAlpha = false,
@@ -4,10 +4,11 @@ name: Combobox
4
4
  type: component
5
5
  category: form
6
6
  since: 0.1.0
7
- package: "@teamix-evo/ui"
7
+ package: '@teamix-evo/ui'
8
+ displayName: 组合框
8
9
  ---
9
10
 
10
- # Combobox
11
+ # Combobox 组合框
11
12
 
12
13
  可搜索单选下拉 — `Command + Popover` 复合,等价 antd `AutoComplete` / `Select showSearch` 的核心场景。
13
14
  **单选**(刻意不做多选,保持语义简单);多选请直接用 `Command` + 自管 selected 数组。
@@ -23,31 +24,38 @@ package: "@teamix-evo/ui"
23
24
  - 多选 → `Command` 自定义,或 `CheckboxGroup`
24
25
  - 自由文本输入 → `Input` + 自定义 suggestion(超出本组件范围)
25
26
 
27
+ ## Props
28
+
26
29
  <!-- auto:props:begin -->
27
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
28
- | --- | --- | --- | --- | --- |
29
- | `options` | `ComboboxOption[]` | | | 选项列表(antd `AutoComplete.options` 并集)。 |
30
- | `value` | `string` | – | | 受控 value(单选)。 |
31
- | `onChange` | `(value: string) => void` | – | – | value 变化回调。 |
32
- | `placeholder` | `string` | `"请选择..."` | – | 触发器占位文本(未选)。 |
33
- | `searchPlaceholder` | `string` | `"搜索..."` | – | 搜索框占位文本。 |
34
- | `emptyText` | `string` | `"无匹配项"` | – | 无匹配时的提示文本。 |
35
- | `className` | `string` | `"w-[200px]"` | – | 触发器宽度。 |
36
- | `disabled` | `boolean` | | – | 是否禁用。 |
37
- | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 触发器尺寸。 |
30
+
31
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
32
+ | ------------------- | --------------------------- | ------------- | ---- | -------------------------------------------- |
33
+ | `options` | `ComboboxOption[]` | – | | 选项列表(antd `AutoComplete.options` 并集)。 |
34
+ | `value` | `string` | – | – | 受控 value(单选)。 |
35
+ | `onChange` | `(value: string) => void` | | – | value 变化回调。 |
36
+ | `placeholder` | `string` | `"请选择..."` | – | 触发器占位文本(未选)。 |
37
+ | `searchPlaceholder` | `string` | `"搜索..."` | – | 搜索框占位文本。 |
38
+ | `emptyText` | `string` | `"无匹配项"` | – | 无匹配时的提示文本。 |
39
+ | `className` | `string` | `"w-[200px]"` | – | 触发器宽度。 |
40
+ | `disabled` | `boolean` | | – | 是否禁用。 |
41
+ | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 触发器尺寸。 |
42
+
38
43
  <!-- auto:props:end -->
39
44
 
45
+ ## 依赖
46
+
40
47
  <!-- auto:deps:begin -->
48
+
41
49
  ### 同库依赖
42
50
 
43
51
  > `teamix-evo ui add combobox` 时,以下 entry 会被自动连带安装(无需手动 add)。
44
52
 
45
- | Entry | 类型 | 描述 |
46
- | --- | --- | --- |
47
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
48
- | `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
49
- | `command` | component | 命令面板 — cmdk(Linear / Raycast 风格),全局搜索 / 命令执行;Combobox 的底座 |
50
- | `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
53
+ | Entry | 类型 | 描述 |
54
+ | --------- | --------- | --------------------------------------------------------------------------------------- |
55
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
56
+ | `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
57
+ | `command` | component | 命令面板 — cmdk(Linear / Raycast 风格),全局搜索 / 命令执行;Combobox 的底座 |
58
+ | `popover` | component | 可交互浮层 — Radix Popover + antd arrow 并集 |
51
59
 
52
60
  ### npm 依赖
53
61
 
@@ -56,6 +64,7 @@ package: "@teamix-evo/ui"
56
64
  ```bash
57
65
  pnpm add lucide-react@^0.460.0
58
66
  ```
67
+
59
68
  <!-- auto:deps:end -->
60
69
 
61
70
  > 选项类型 `ComboboxOption`:`{ value: string; label: ReactNode; disabled?: boolean }`。
@@ -89,5 +98,5 @@ const [v, setV] = React.useState('');
89
98
  onChange={setV}
90
99
  placeholder="选择框架"
91
100
  searchPlaceholder="搜索框架..."
92
- />
101
+ />;
93
102
  ```
@@ -10,7 +10,7 @@ const meta: Meta<typeof Combobox> = {
10
10
  docs: {
11
11
  description: {
12
12
  component:
13
- '可搜索单选下拉 — Command + Popover 复合,对标 antd AutoComplete / Select showSearch。键盘可达、模糊搜索、空态、再次选中清空,适合选项数 > 7 的单选场景。OpenTrek tokens 适配。',
13
+ '可搜索单选下拉 — Command + Popover 复合,对标 antd AutoComplete / Select showSearch。键盘可达、模糊搜索、空态、再次选中清空,适合选项数 > 7 的单选场景。',
14
14
  },
15
15
  },
16
16
  },
@@ -39,7 +39,7 @@ export interface ComboboxProps {
39
39
  searchPlaceholder?: string;
40
40
  /** 无匹配时的提示文本。 @default "无匹配项" */
41
41
  emptyText?: string;
42
- /** 触发器宽度。 @default "w-[200px]" */
42
+ /** 触发器宽度。 @default "w-panel-sm" */
43
43
  className?: string;
44
44
  /** 是否禁用。 */
45
45
  disabled?: boolean;
@@ -83,7 +83,7 @@ const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(
83
83
  role="combobox"
84
84
  aria-expanded={open}
85
85
  className={cn(
86
- 'w-[200px] justify-between font-normal',
86
+ 'w-panel-sm justify-between font-normal',
87
87
  !value && 'text-muted-foreground',
88
88
  className,
89
89
  )}
@@ -92,7 +92,7 @@ const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(
92
92
  <ChevronsUpDown className="ml-2 size-4 shrink-0 opacity-50" />
93
93
  </Button>
94
94
  </PopoverTrigger>
95
- <PopoverContent className="w-[200px] p-0">
95
+ <PopoverContent className="w-panel-sm p-0">
96
96
  <Command>
97
97
  <CommandInput placeholder={searchPlaceholder} />
98
98
  <CommandList>
@@ -4,10 +4,11 @@ name: Command
4
4
  type: component
5
5
  category: shell
6
6
  since: 0.1.0
7
- package: "@teamix-evo/ui"
7
+ package: '@teamix-evo/ui'
8
+ displayName: 命令面板
8
9
  ---
9
10
 
10
- # Command
11
+ # Command 命令面板
11
12
 
12
13
  命令面板 — 基于 [`cmdk`](https://cmdk.paco.me/),提供"按 ⌘K 打开"的全局搜索 / 命令执行体验(Linear / Raycast / Vercel 风格)。
13
14
  **shadcn-only**(antd 无对标)。是 `Combobox` 的底座(Combobox = Command + Popover)。
@@ -26,18 +27,25 @@ package: "@teamix-evo/ui"
26
27
  - 静态菜单 → `DropdownMenu`
27
28
  - 需要表单语义 → `Combobox`(基于本组件)
28
29
 
30
+ ## Props
31
+
29
32
  <!-- auto:props:begin -->
33
+
30
34
  _(no props)_
35
+
31
36
  <!-- auto:props:end -->
32
37
 
38
+ ## 依赖
39
+
33
40
  <!-- auto:deps:begin -->
41
+
34
42
  ### 同库依赖
35
43
 
36
44
  > `teamix-evo ui add command` 时,以下 entry 会被自动连带安装(无需手动 add)。
37
45
 
38
- | Entry | 类型 | 描述 |
39
- | --- | --- | --- |
40
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
46
+ | Entry | 类型 | 描述 |
47
+ | -------- | --------- | ----------------------------------------------------------------------------------- |
48
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
41
49
  | `dialog` | component | 模态对话框 — Radix Dialog + antd Modal 并集(组合式 Header/Footer/Title/Description) |
42
50
 
43
51
  ### npm 依赖
@@ -47,6 +55,7 @@ _(no props)_
47
55
  ```bash
48
56
  pnpm add cmdk@^1.0.0 lucide-react@^0.460.0
49
57
  ```
58
+
50
59
  <!-- auto:deps:end -->
51
60
 
52
61
  > 子组件:`Command`(Root 容器)/ `CommandDialog`(模态版,内部组合 Dialog)/ `CommandInput`(自带搜索图标)/ `CommandList`(可滚动列表)/ `CommandEmpty`(无匹配空态)/ `CommandGroup`(分组,带 heading)/ `CommandItem`(选项,支持 `onSelect`)/ `CommandSeparator` / `CommandShortcut`(右对齐快捷键)。
@@ -63,8 +72,13 @@ pnpm add cmdk@^1.0.0 lucide-react@^0.460.0
63
72
 
64
73
  ```tsx
65
74
  import {
66
- Command, CommandInput, CommandList, CommandEmpty,
67
- CommandGroup, CommandItem, CommandShortcut,
75
+ Command,
76
+ CommandInput,
77
+ CommandList,
78
+ CommandEmpty,
79
+ CommandGroup,
80
+ CommandItem,
81
+ CommandShortcut,
68
82
  } from '@/components/ui/command';
69
83
  import { Calendar, Mail, User } from 'lucide-react';
70
84
 
@@ -74,14 +88,20 @@ import { Calendar, Mail, User } from 'lucide-react';
74
88
  <CommandList>
75
89
  <CommandEmpty>无结果。</CommandEmpty>
76
90
  <CommandGroup heading="建议">
77
- <CommandItem><Calendar /> 日历 <CommandShortcut>⌘K</CommandShortcut></CommandItem>
78
- <CommandItem><Mail /> 邮件</CommandItem>
91
+ <CommandItem>
92
+ <Calendar /> 日历 <CommandShortcut>⌘K</CommandShortcut>
93
+ </CommandItem>
94
+ <CommandItem>
95
+ <Mail /> 邮件
96
+ </CommandItem>
79
97
  </CommandGroup>
80
98
  <CommandGroup heading="设置">
81
- <CommandItem><User /> 个人资料</CommandItem>
99
+ <CommandItem>
100
+ <User /> 个人资料
101
+ </CommandItem>
82
102
  </CommandGroup>
83
103
  </CommandList>
84
- </Command>
104
+ </Command>;
85
105
 
86
106
  // 模态(全局 ⌘K)
87
107
  import { CommandDialog } from '@/components/ui/command';
@@ -100,5 +120,5 @@ React.useEffect(() => {
100
120
  <CommandDialog open={open} onOpenChange={setOpen}>
101
121
  <CommandInput placeholder="..." />
102
122
  <CommandList>...</CommandList>
103
- </CommandDialog>
123
+ </CommandDialog>;
104
124
  ```
@@ -19,7 +19,7 @@ const meta: Meta<typeof Command> = {
19
19
  docs: {
20
20
  description: {
21
21
  component:
22
- '命令面板 — 全局搜索 / 命令执行(Linear / Raycast / Vercel 风格)。基于 cmdk,提供键盘导航、模糊搜索、分组、空态、快捷键提示;模态版用 CommandDialog 监听 ⌘K 全局触发。OpenTrek tokens 适配,无 mock。',
22
+ '命令面板 — 全局搜索 / 命令执行(Linear / Raycast / Vercel 风格)。基于 cmdk,提供键盘导航、模糊搜索、分组、空态、快捷键提示;模态版用 CommandDialog 监听 ⌘K 全局触发。',
23
23
  },
24
24
  },
25
25
  },
@@ -60,7 +60,7 @@ const CommandList = React.forwardRef<
60
60
  >(({ className, ...props }, ref) => (
61
61
  <CommandPrimitive.List
62
62
  ref={ref}
63
- className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}
63
+ className={cn('max-h-listbox overflow-y-auto overflow-x-hidden', className)}
64
64
  {...props}
65
65
  />
66
66
  ));
@@ -4,10 +4,11 @@ name: ContextMenu
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
- # ContextMenu
11
+ # ContextMenu 右键菜单
11
12
 
12
13
  右键菜单 — Radix ContextMenu 完整实现。**与 DropdownMenu 形态一致**(Item / CheckboxItem / RadioItem / Sub / Label / Separator / Shortcut),仅触发方式不同(右键 vs click)。
13
14
  shadcn 显式版,antd 用 Dropdown 模拟同样可达。
@@ -29,7 +30,25 @@ shadcn 显式版,antd 用 Dropdown 模拟同样可达。
29
30
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `ContextMenuContent` 的 props。
30
31
 
31
32
  <!-- auto:props:begin -->
32
- _(组件无 `<Name>Props` interface — props 详见 [`context-menu.tsx`](./context-menu.tsx))_
33
+
34
+ #### ContextMenuSubTrigger
35
+
36
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
37
+ | ------- | --------- | ------- | ---- | ------------------------------------------- |
38
+ | `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
39
+
40
+ #### ContextMenuItem
41
+
42
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
43
+ | ------- | --------- | ------- | ---- | ------------------------------------------- |
44
+ | `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
45
+
46
+ #### ContextMenuLabel
47
+
48
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
49
+ | ------- | --------- | ------- | ---- | ------------------------------------------- |
50
+ | `inset` | `boolean` | `false` | – | 左侧留出 icon 宽度的缩进,对齐同级 icon 项。 |
51
+
33
52
  <!-- auto:props:end -->
34
53
 
35
54
  ## 依赖
@@ -37,13 +56,14 @@ _(组件无 `<Name>Props` interface — props 详见 [`context-menu.tsx`](./cont
37
56
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
38
57
 
39
58
  <!-- auto:deps:begin -->
59
+
40
60
  ### 同库依赖
41
61
 
42
62
  > `teamix-evo ui add context-menu` 时,以下 entry 会被自动连带安装(无需手动 add)。
43
63
 
44
- | Entry | 类型 | 描述 |
45
- | --- | --- | --- |
46
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
64
+ | Entry | 类型 | 描述 |
65
+ | ----- | ---- | -------------------------------------------------- |
66
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
47
67
 
48
68
  ### npm 依赖
49
69
 
@@ -52,9 +72,8 @@ _(组件无 `<Name>Props` interface — props 详见 [`context-menu.tsx`](./cont
52
72
  ```bash
53
73
  pnpm add @radix-ui/react-context-menu@^2.2.0 lucide-react@^0.460.0
54
74
  ```
55
- <!-- auto:deps:end -->
56
75
 
57
- > 子组件与 DropdownMenu 完全一致(只差名称前缀):`ContextMenu / Trigger / Content / Item / CheckboxItem / RadioItem / Label / Separator / Shortcut / Sub / SubTrigger / SubContent / Group / RadioGroup / Portal`。
76
+ <!-- auto:deps:end -->
58
77
 
59
78
  ## AI 生成纪律
60
79
 
@@ -67,8 +86,12 @@ pnpm add @radix-ui/react-context-menu@^2.2.0 lucide-react@^0.460.0
67
86
 
68
87
  ```tsx
69
88
  import {
70
- ContextMenu, ContextMenuTrigger, ContextMenuContent,
71
- ContextMenuItem, ContextMenuSeparator, ContextMenuShortcut,
89
+ ContextMenu,
90
+ ContextMenuTrigger,
91
+ ContextMenuContent,
92
+ ContextMenuItem,
93
+ ContextMenuSeparator,
94
+ ContextMenuShortcut,
72
95
  } from '@/components/ui/context-menu';
73
96
 
74
97
  <ContextMenu>
@@ -86,5 +109,5 @@ import {
86
109
  删除 <ContextMenuShortcut>⌫</ContextMenuShortcut>
87
110
  </ContextMenuItem>
88
111
  </ContextMenuContent>
89
- </ContextMenu>
112
+ </ContextMenu>;
90
113
  ```
@@ -12,6 +12,14 @@ const meta: Meta<typeof ContextMenuContent> = {
12
12
  title: '导航 · Navigation/ContextMenu',
13
13
  component: ContextMenuContent,
14
14
  tags: ['autodocs'],
15
+ parameters: {
16
+ docs: {
17
+ description: {
18
+ component:
19
+ '右键菜单 — 右键触发的操作菜单,与 DropdownMenu 形态一致(Item / CheckboxItem / RadioItem / Sub),仅触发方式不同。Radix ContextMenu 实现,shadcn 显式版,antd 用 Dropdown 模拟同样可达。',
20
+ },
21
+ },
22
+ },
15
23
  };
16
24
 
17
25
  export default meta;
@@ -39,7 +39,7 @@ const ContextMenuSubContent = React.forwardRef<
39
39
  <ContextMenuPrimitive.SubContent
40
40
  ref={ref}
41
41
  className={cn(
42
- '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',
42
+ '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',
43
43
  className,
44
44
  )}
45
45
  {...props}
@@ -55,7 +55,7 @@ const ContextMenuContent = React.forwardRef<
55
55
  <ContextMenuPrimitive.Content
56
56
  ref={ref}
57
57
  className={cn(
58
- 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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',
58
+ 'z-50 min-w-menu overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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',
59
59
  className,
60
60
  )}
61
61
  {...props}
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: data-table
3
3
  name: DataTable
4
+ displayName: 数据表格
4
5
  type: component
5
6
  category: data-display
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # DataTable
11
+ # DataTable 数据表格
11
12
 
12
13
  数据表 — 基于 [`@tanstack/react-table`](https://tanstack.com/table) + 基础 `Table` primitives + `SimplePagination`。
13
14
  **等价 antd `Table` 的核心交互合集**:`sorter` + `filter` + `pagination` + `rowSelection`,声明式 `columns + data` 即可。
@@ -29,16 +30,18 @@ package: "@teamix-evo/ui"
29
30
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。
30
31
 
31
32
  <!-- auto:props:begin -->
32
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
33
- | --- | --- | --- | --- | --- |
34
- | `columns` | `ColumnDef<TData, TValue>[]` | | | 列定义(TanStack ColumnDef)。 |
35
- | `data` | `TData[]` | – | ✓ | 行数据。 |
36
- | `pagination` | `boolean \| { pageSize?: number; siblingCount?: number }` | `true` | | 是否启用分页(antd `pagination` 并集)。 传 `true` 用默认配置;传对象自定义 pageSize / siblingCount。 |
37
- | `sorting` | `boolean` | `true` | – | 是否启用排序(列定义里的 `enableSorting` 也要打开;默认列已开)。 |
38
- | `filtering` | `boolean` | `true` | – | 是否启用列过滤(每列 `header` 配 input 单独使用;此 flag 控制 columnFilters 状态)。 |
39
- | `onRowSelectionChange` | `(selectedRows: TData[]) => void` | | – | 行选择回调(antd `rowSelection.onChange` 并集)。传入即启用 selection。 Selected rows 的原始 data 通过 `getRowId(row)` 推断,默认是 row.index |
40
- | `emptyText` | `React.ReactNode` | – | – | 空数据时显示的内容。 |
41
- | `className` | `string` | – | – | 容器 className。 |
33
+
34
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
35
+ | ---------------------- | --------------------------------------------------------- | ------ | ---- | -------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | `columns` | `ColumnDef<TData, TValue>[]` | – | ✓ | 列定义(TanStack ColumnDef)。 |
37
+ | `data` | `TData[]` | | | 行数据。 |
38
+ | `pagination` | `boolean \| { pageSize?: number; siblingCount?: number }` | `true` | – | 是否启用分页(antd `pagination` 并集)。 传 `true` 用默认配置;传对象自定义 pageSize / siblingCount。 |
39
+ | `sorting` | `boolean` | `true` | – | 是否启用排序(列定义里的 `enableSorting` 也要打开;默认列已开)。 |
40
+ | `filtering` | `boolean` | `true` | – | 是否启用列过滤(每列 `header` input 单独使用;此 flag 控制 columnFilters 状态)。 |
41
+ | `onRowSelectionChange` | `(selectedRows: TData[]) => void` | – | – | 行选择回调(antd `rowSelection.onChange` 并集)。传入即启用 selection。 Selected rows 的原始 data 通过 `getRowId(row)` 推断,默认是 row.index。 |
42
+ | `emptyText` | `React.ReactNode` | – | – | 空数据时显示的内容。 |
43
+ | `className` | `string` | – | – | 容器 className。 |
44
+
42
45
  <!-- auto:props:end -->
43
46
 
44
47
  ## 依赖
@@ -46,14 +49,15 @@ package: "@teamix-evo/ui"
46
49
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
47
50
 
48
51
  <!-- auto:deps:begin -->
52
+
49
53
  ### 同库依赖
50
54
 
51
55
  > `teamix-evo ui add data-table` 时,以下 entry 会被自动连带安装(无需手动 add)。
52
56
 
53
- | Entry | 类型 | 描述 |
54
- | --- | --- | --- |
55
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
56
- | `table` | component | 基础表格 — 原生 HTML 元素薄包装(视觉骨架,无交互,交互见 DataTable) |
57
+ | Entry | 类型 | 描述 |
58
+ | ------------ | --------- | --------------------------------------------------------------------------------------------------------------- |
59
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
60
+ | `table` | component | 基础表格 — 原生 HTML 元素薄包装(视觉骨架,无交互,交互见 DataTable) |
57
61
  | `pagination` | component | 分页 — shadcn primitives + 高阶 SimplePagination(antd 风格 total/pageSize/current/onChange,自动页码窗口 + 折叠) |
58
62
 
59
63
  ### npm 依赖
@@ -63,6 +67,7 @@ package: "@teamix-evo/ui"
63
67
  ```bash
64
68
  pnpm add @tanstack/react-table@^8.0.0
65
69
  ```
70
+
66
71
  <!-- auto:deps:end -->
67
72
 
68
73
  > 透传 TanStack Table 的核心能力。需要更精细控制(可控 state、virtualizer、column visibility / resizing 等),请直接用 `useReactTable` + 基础 `Table` primitives 自行拼装。
@@ -102,8 +107,8 @@ const columns: ColumnDef<User>[] = [
102
107
  table.getIsAllPageRowsSelected()
103
108
  ? true
104
109
  : table.getIsSomePageRowsSelected()
105
- ? 'indeterminate'
106
- : false
110
+ ? 'indeterminate'
111
+ : false
107
112
  }
108
113
  onCheckedChange={(v) => table.toggleAllPageRowsSelected(!!v)}
109
114
  />
@@ -145,5 +150,5 @@ const columns: ColumnDef<User>[] = [
145
150
  data={users}
146
151
  pagination={{ pageSize: 10 }}
147
152
  onRowSelectionChange={(selected) => console.log(selected)}
148
- />
153
+ />;
149
154
  ```