@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
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: sheet
3
3
  name: Sheet
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
- # Sheet
11
+ # Sheet 侧边面板
11
12
 
12
13
  侧边滑出面板 — Radix Dialog 底座 + side 方向变体(left / right / top / bottom)+ antd Drawer `placement` 并集。
13
14
  **与 Dialog 的关键差异**:Sheet 从屏幕边缘滑入,模态阻断同样;`Drawer` 是底部可拖拽抽屉(iOS 风格,移动端体验)。
@@ -30,9 +31,11 @@ package: "@teamix-evo/ui"
30
31
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `SheetContent` 的 props;`Sheet`(Root)透传 Radix `open / defaultOpen / onOpenChange / modal`。
31
32
 
32
33
  <!-- auto:props:begin -->
33
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
34
- | --- | --- | --- | --- | --- |
35
- | `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `"right"` | | 弹出方向(antd Drawer `placement` 并集)。 |
34
+
35
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
36
+ | ------ | ---------------------------------------- | --------- | ---- | ---------------------------------------- |
37
+ | `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `"right"` | – | 弹出方向(antd Drawer `placement` 并集)。 |
38
+
36
39
  <!-- auto:props:end -->
37
40
 
38
41
  ## 依赖
@@ -40,13 +43,14 @@ package: "@teamix-evo/ui"
40
43
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
41
44
 
42
45
  <!-- auto:deps:begin -->
46
+
43
47
  ### 同库依赖
44
48
 
45
49
  > `teamix-evo ui add sheet` 时,以下 entry 会被自动连带安装(无需手动 add)。
46
50
 
47
- | Entry | 类型 | 描述 |
48
- | --- | --- | --- |
49
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
51
+ | Entry | 类型 | 描述 |
52
+ | ----- | ---- | -------------------------------------------------- |
53
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
50
54
 
51
55
  ### npm 依赖
52
56
 
@@ -55,6 +59,7 @@ package: "@teamix-evo/ui"
55
59
  ```bash
56
60
  pnpm add @radix-ui/react-dialog@^1.1.0 class-variance-authority@^0.7.0 lucide-react@^0.460.0
57
61
  ```
62
+
58
63
  <!-- auto:deps:end -->
59
64
 
60
65
  > 子组件:`Sheet` / `SheetTrigger` / `SheetContent`(`side` 在此)/ `SheetHeader` / `SheetFooter` / `SheetTitle` / `SheetDescription` / `SheetClose` / `SheetOverlay` / `SheetPortal`。
@@ -71,8 +76,14 @@ pnpm add @radix-ui/react-dialog@^1.1.0 class-variance-authority@^0.7.0 lucide-re
71
76
 
72
77
  ```tsx
73
78
  import {
74
- Sheet, SheetTrigger, SheetContent, SheetHeader,
75
- SheetTitle, SheetDescription, SheetFooter, SheetClose,
79
+ Sheet,
80
+ SheetTrigger,
81
+ SheetContent,
82
+ SheetHeader,
83
+ SheetTitle,
84
+ SheetDescription,
85
+ SheetFooter,
86
+ SheetClose,
76
87
  } from '@/components/ui/sheet';
77
88
  import { Button } from '@/components/ui/button';
78
89
 
@@ -93,5 +104,5 @@ import { Button } from '@/components/ui/button';
93
104
  <Button>保存</Button>
94
105
  </SheetFooter>
95
106
  </SheetContent>
96
- </Sheet>
107
+ </Sheet>;
97
108
  ```
@@ -19,7 +19,7 @@ const meta: Meta<typeof SheetContent> = {
19
19
  docs: {
20
20
  description: {
21
21
  component:
22
- '侧边抽屉 — 从屏幕边缘滑入的补充内容面板,补充主区不中断主流程。语义上是 Dialog 的表弟但定位于边缘,对齐 antd `Drawer`;Radix Dialog 内核实现 + shadcn `Sheet` 的 `side` 变体 (top / right / bottom / left) 。视觉走 OpenTrek semantic tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
22
+ '侧边抽屉 — 从屏幕边缘滑入的补充内容面板,补充主区不中断主流程。语义上是 Dialog 的表弟但定位于边缘,对齐 antd `Drawer`;Radix Dialog 内核实现 + shadcn `Sheet` 的 `side` 变体 (top / right / bottom / left)。',
23
23
  },
24
24
  },
25
25
  },
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: sidebar
3
3
  name: Sidebar
4
+ displayName: 侧边栏
4
5
  type: component
5
6
  category: navigation
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # Sidebar
11
+ # Sidebar 侧边栏
11
12
 
12
13
  侧边导航栏 — shadcn 风格复合组件,**对应 antd `Layout.Sider + Menu`**。
13
14
  **精简版**(MVP):涵盖 Provider + 折叠状态 + Header/Footer/Content + Menu + Trigger。
@@ -30,12 +31,31 @@ package: "@teamix-evo/ui"
30
31
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `Sidebar` 主容器 props。
31
32
 
32
33
  <!-- auto:props:begin -->
33
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
34
- | --- | --- | --- | --- | --- |
35
- | `side` | `'left' \| 'right'` | `"left"` | – | 侧边方向。 |
36
- | `collapsible` | `'icon' \| 'offcanvas' \| 'none'` | `"icon"` | | 折叠模式 — `icon` 折叠后只剩图标列(64px);`offcanvas` 完全收起(0px)。 |
37
- | `width` | `string` | `"16rem"` | | 展开宽度。 |
38
- | `collapsedWidth` | `string` | `"3rem"` | – | 折叠后宽度(`collapsible="icon"` 时生效)。 |
34
+
35
+ #### Sidebar
36
+
37
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
38
+ | ---------------- | --------------------------------- | --------- | ---- | -------------------------------------------------------------------- |
39
+ | `side` | `'left' \| 'right'` | `"left"` | – | 侧边方向。 |
40
+ | `collapsible` | `'icon' \| 'offcanvas' \| 'none'` | `"icon"` | – | 折叠模式 — `icon` 折叠后只剩图标列(64px);`offcanvas` 完全收起(0px)。 |
41
+ | `width` | `string` | `"16rem"` | – | 展开宽度。 |
42
+ | `collapsedWidth` | `string` | `"3rem"` | – | 折叠后宽度(`collapsible="icon"` 时生效)。 |
43
+
44
+ #### SidebarProvider
45
+
46
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
47
+ | -------------- | ------------------------- | ------ | ---- | ------------------- |
48
+ | `open` | `boolean` | – | – | 受控 open 状态。 |
49
+ | `defaultOpen` | `boolean` | `true` | – | 非受控初始状态。 |
50
+ | `onOpenChange` | `(open: boolean) => void` | – | – | open 状态变化回调。 |
51
+
52
+ #### SidebarMenuButton
53
+
54
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
55
+ | ---------- | --------- | ------ | ---- | ------------------------------------- |
56
+ | `isActive` | `boolean` | – | – | 当前激活态(高亮显示)。 |
57
+ | `asChild` | `boolean` | – | – | 用 Slot 渲染为子元素(配合路由 Link)。 |
58
+
39
59
  <!-- auto:props:end -->
40
60
 
41
61
  ## 依赖
@@ -43,15 +63,16 @@ package: "@teamix-evo/ui"
43
63
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
44
64
 
45
65
  <!-- auto:deps:begin -->
66
+
46
67
  ### 同库依赖
47
68
 
48
69
  > `teamix-evo ui add sidebar` 时,以下 entry 会被自动连带安装(无需手动 add)。
49
70
 
50
- | Entry | 类型 | 描述 |
51
- | --- | --- | --- |
52
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
53
- | `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
54
- | `separator` | component | 分隔线 — Radix Separator + antd Divider 的 dashed / 中间装饰文本 |
71
+ | Entry | 类型 | 描述 |
72
+ | ----------- | --------- | --------------------------------------------------------------------------------------- |
73
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
74
+ | `button` | component | 通用按钮 — shadcn 实现 + antd 功能扩展(loading / icon / shape / block / dashed variant) |
75
+ | `separator` | component | 分隔线 — Radix Separator + antd Divider 的 dashed / 中间装饰文本 |
55
76
 
56
77
  ### npm 依赖
57
78
 
@@ -60,9 +81,8 @@ package: "@teamix-evo/ui"
60
81
  ```bash
61
82
  pnpm add @radix-ui/react-slot@^1.1.0 class-variance-authority@^0.7.0 lucide-react@^0.460.0
62
83
  ```
63
- <!-- auto:deps:end -->
64
84
 
65
- > 完整子组件:`SidebarProvider`(Context 容器,必装)/ `Sidebar`(主侧边栏)/ `SidebarHeader` / `SidebarFooter` / `SidebarContent`(中间滚动区)/ `SidebarGroup` + `SidebarGroupLabel` / `SidebarMenu` + `SidebarMenuItem` + `SidebarMenuButton`(支持 `isActive` / `asChild`)/ `SidebarSeparator` / `SidebarTrigger`(切换按钮)/ `SidebarInset`(主内容区)+ `useSidebar()` hook。
85
+ <!-- auto:deps:end -->
66
86
 
67
87
  ## AI 生成纪律
68
88
 
@@ -77,9 +97,18 @@ pnpm add @radix-ui/react-slot@^1.1.0 class-variance-authority@^0.7.0 lucide-reac
77
97
 
78
98
  ```tsx
79
99
  import {
80
- SidebarProvider, Sidebar, SidebarHeader, SidebarContent,
81
- SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuItem,
82
- SidebarMenuButton, SidebarFooter, SidebarTrigger, SidebarInset,
100
+ SidebarProvider,
101
+ Sidebar,
102
+ SidebarHeader,
103
+ SidebarContent,
104
+ SidebarGroup,
105
+ SidebarGroupLabel,
106
+ SidebarMenu,
107
+ SidebarMenuItem,
108
+ SidebarMenuButton,
109
+ SidebarFooter,
110
+ SidebarTrigger,
111
+ SidebarInset,
83
112
  } from '@/components/ui/sidebar';
84
113
  import { Home, Settings, Inbox, Users } from 'lucide-react';
85
114
 
@@ -20,7 +20,15 @@ const meta: Meta<typeof Sidebar> = {
20
20
  title: '导航 · Navigation/Sidebar',
21
21
  component: Sidebar,
22
22
  tags: ['autodocs'],
23
- parameters: { layout: 'fullscreen' },
23
+ parameters: {
24
+ layout: 'fullscreen',
25
+ docs: {
26
+ description: {
27
+ component:
28
+ '侧边导航栏 — shadcn 风格复合组件,对应 antd Layout.Sider + Menu。支持 icon 折叠 / offcanvas 收起,提供 Provider + Menu + Trigger + Inset 全套子组件。',
29
+ },
30
+ },
31
+ },
24
32
  };
25
33
 
26
34
  export default meta;
@@ -46,10 +54,7 @@ function DemoLayout({ active }: { active: string }) {
46
54
  <SidebarMenu>
47
55
  {items.map((it) => (
48
56
  <SidebarMenuItem key={it.title}>
49
- <SidebarMenuButton
50
- asChild
51
- isActive={active === it.url}
52
- >
57
+ <SidebarMenuButton asChild isActive={active === it.url}>
53
58
  <a href={it.url} onClick={(e) => e.preventDefault()}>
54
59
  <it.icon />
55
60
  <span>{it.title}</span>
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: skeleton
3
3
  name: Skeleton
4
+ displayName: 骨架屏
4
5
  type: component
5
6
  category: foundation
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # Skeleton
11
+ # Skeleton 骨架屏
11
12
 
12
13
  骨架屏占位 — shadcn 单元素 pulse + antd 子组件家族(`SkeletonAvatar / SkeletonImage / SkeletonButton / SkeletonInput / SkeletonParagraph`)。
13
14
 
@@ -29,9 +30,31 @@ package: "@teamix-evo/ui"
29
30
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。
30
31
 
31
32
  <!-- auto:props:begin -->
32
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
33
- | --- | --- | --- | --- | --- |
34
- | `shape` | `'rect' \| 'circle' \| 'line'` | `"rect"` | – | 形状变体。`rect` 默认矩形;`circle` 圆形(用于 Avatar 占位);`line` 单行文本占位。 |
33
+
34
+ #### Skeleton
35
+
36
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
37
+ | ------- | ------------------------------ | -------- | ---- | ------------------------------------------------------------------------------- |
38
+ | `shape` | `'rect' \| 'circle' \| 'line'` | `"rect"` | – | 形状变体。`rect` 默认矩形;`circle` 圆形(用于 Avatar 占位);`line` 单行文本占位。 |
39
+
40
+ #### SkeletonAvatar
41
+
42
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
43
+ | ------ | --------------------------- | ----------- | ---- | --------------------------------- |
44
+ | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 尺寸:sm 32 / default 40 / lg 64。 |
45
+
46
+ #### SkeletonButton
47
+
48
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
49
+ | ------ | --------------------------- | ----------- | ---- | ------ |
50
+ | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 尺寸。 |
51
+
52
+ #### SkeletonParagraph
53
+
54
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
55
+ | ------ | -------- | ------ | ---- | --------------------------------------------------- |
56
+ | `rows` | `number` | `3` | – | 段落行数。最后一行宽度自动收窄至 60%,模拟自然段尾。 |
57
+
35
58
  <!-- auto:props:end -->
36
59
 
37
60
  ## 依赖
@@ -39,13 +62,14 @@ package: "@teamix-evo/ui"
39
62
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
40
63
 
41
64
  <!-- auto:deps:begin -->
65
+
42
66
  ### 同库依赖
43
67
 
44
68
  > `teamix-evo ui add skeleton` 时,以下 entry 会被自动连带安装(无需手动 add)。
45
69
 
46
- | Entry | 类型 | 描述 |
47
- | --- | --- | --- |
48
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
70
+ | Entry | 类型 | 描述 |
71
+ | ----- | ---- | -------------------------------------------------- |
72
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
49
73
 
50
74
  ### npm 依赖
51
75
 
@@ -54,9 +78,8 @@ package: "@teamix-evo/ui"
54
78
  ```bash
55
79
  pnpm add class-variance-authority@^0.7.0
56
80
  ```
57
- <!-- auto:deps:end -->
58
81
 
59
- > 子组件 `SkeletonAvatar / SkeletonImage / SkeletonButton / SkeletonInput / SkeletonParagraph` 各自的 Props 可在 [`skeleton.tsx`](./skeleton.tsx) 查看。
82
+ <!-- auto:deps:end -->
60
83
 
61
84
  ## AI 生成纪律
62
85
 
@@ -16,7 +16,7 @@ const meta: Meta<typeof Skeleton> = {
16
16
  docs: {
17
17
  description: {
18
18
  component:
19
- '骨架屏 — 在内容加载过程中呈现占位图形,减少加载期间的视觉跳动。shadcn `Skeleton` 原子 + antd `Skeleton` 的能力并集:除原子 `Skeleton`(支持 `shape: rect | circle | line`)外,同时提供预设组合 `SkeletonAvatar` / `SkeletonImage` / `SkeletonButton` / `SkeletonInput` / `SkeletonParagraph`。视觉走 OpenTrek semantic tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
19
+ '骨架屏 — 在内容加载过程中呈现占位图形,减少加载期间的视觉跳动。shadcn `Skeleton` 原子 + antd 能力并集:支持 `shape: rect | circle | line`,同时提供预设组合 `SkeletonAvatar` / `SkeletonImage` / `SkeletonButton` / `SkeletonInput` / `SkeletonParagraph`。',
20
20
  },
21
21
  },
22
22
  },
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: slider
3
3
  name: Slider
4
+ displayName: 滑块
4
5
  type: component
5
6
  category: form
6
7
  since: 0.1.0
7
8
  package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # Slider
11
+ # Slider 滑块
11
12
 
12
13
  滑块 — Radix Slider + antd 的 `marks` 刻度标签。**单 / 双滑块由 `value`/`defaultValue` 数组长度决定**(传 `[lo, hi]` 自动变范围滑块)。
13
14
 
@@ -28,9 +29,11 @@ package: '@teamix-evo/ui'
28
29
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。
29
30
 
30
31
  <!-- auto:props:begin -->
31
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
32
- | --- | --- | --- | --- | --- |
33
- | `marks` | `Record<number, React.ReactNode>` | | | 刻度标记(antd `marks` 并集)。键为 0~max 的数值,值为标签文本。 渲染时小标记点 + 文字标签出现在轨道下方。 |
32
+
33
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
34
+ | ------- | --------------------------------- | ------ | ---- | ------------------------------------------------------------------------------------------------------- |
35
+ | `marks` | `Record<number, React.ReactNode>` | – | – | 刻度标记(antd `marks` 并集)。键为 0~max 的数值,值为标签文本。 渲染时小标记点 + 文字标签出现在轨道下方。 |
36
+
34
37
  <!-- auto:props:end -->
35
38
 
36
39
  ## 依赖
@@ -38,13 +41,14 @@ package: '@teamix-evo/ui'
38
41
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
39
42
 
40
43
  <!-- auto:deps:begin -->
44
+
41
45
  ### 同库依赖
42
46
 
43
47
  > `teamix-evo ui add slider` 时,以下 entry 会被自动连带安装(无需手动 add)。
44
48
 
45
- | Entry | 类型 | 描述 |
46
- | --- | --- | --- |
47
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
49
+ | Entry | 类型 | 描述 |
50
+ | ----- | ---- | -------------------------------------------------- |
51
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
48
52
 
49
53
  ### npm 依赖
50
54
 
@@ -53,6 +57,7 @@ package: '@teamix-evo/ui'
53
57
  ```bash
54
58
  pnpm add @radix-ui/react-slider@^1.2.0
55
59
  ```
60
+
56
61
  <!-- auto:deps:end -->
57
62
 
58
63
  > 透传所有 Radix Slider.Root props(`min` / `max` / `step` / `disabled` / `onValueChange` / `name` / `inverted` 等)。
@@ -9,7 +9,7 @@ const meta: Meta<typeof Slider> = {
9
9
  docs: {
10
10
  description: {
11
11
  component:
12
- '滑块 — 在给定范围内选取一个数值或一段区间。Radix Slider 实现 + antd 的 `marks` 刻度能力:`value` / `defaultValue` 为数组,长度为 1 时为单滑块、为 2 时自动切换为区间滑块;可配 `marks` 渲染轨道下方的刻度点与标签。视觉走 OpenTrek semantic tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
12
+ '滑块 — 在给定范围内选取一个数值或一段区间。Radix Slider 实现 + antd 的 `marks` 刻度能力:`value` / `defaultValue` 为数组,长度为 1 时为单滑块、为 2 时自动切换为区间滑块;可配 `marks` 渲染轨道下方的刻度点与标签。',
13
13
  },
14
14
  },
15
15
  },
@@ -4,10 +4,11 @@ name: Sonner
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
- # Sonner
11
+ # Sonner 轻提示
11
12
 
12
13
  Toast 通知 — 基于 [`sonner`](https://sonner.emilkowal.ski/),已**同时覆盖** antd `message`(行内简短)+ `notification`(标题 + 描述 + 行动)的并集。
13
14
 
@@ -31,7 +32,9 @@ Toast 通知 — 基于 [`sonner`](https://sonner.emilkowal.ski/),已**同时覆
31
32
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。下表是 `<Toaster />` 的 props。`toast()` 函数式 API 见下方 Examples。
32
33
 
33
34
  <!-- auto:props:begin -->
35
+
34
36
  _(no props)_
37
+
35
38
  <!-- auto:props:end -->
36
39
 
37
40
  ## 依赖
@@ -39,6 +42,7 @@ _(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
  _无 — 本组件不依赖其他 ui entry。_
@@ -50,6 +54,7 @@ _无 — 本组件不依赖其他 ui entry。_
50
54
  ```bash
51
55
  pnpm add sonner@^1.5.0
52
56
  ```
57
+
53
58
  <!-- auto:deps:end -->
54
59
 
55
60
  > 透传所有 sonner `<Toaster>` 原生属性(`position` / `richColors` / `expand` / `closeButton` 等)。
@@ -68,7 +73,7 @@ pnpm add sonner@^1.5.0
68
73
  import { Toaster, toast } from '@/components/ui/sonner';
69
74
 
70
75
  // 应用根
71
- <Toaster position="top-right" richColors />
76
+ <Toaster position="top-right" richColors />;
72
77
 
73
78
  // 简单消息(等价 antd message)
74
79
  toast('已复制到剪贴板');
@@ -6,6 +6,14 @@ const meta: Meta<typeof Toaster> = {
6
6
  title: '反馈与浮层 · Feedback/Sonner',
7
7
  component: Toaster,
8
8
  tags: ['autodocs'],
9
+ parameters: {
10
+ docs: {
11
+ description: {
12
+ component:
13
+ 'Toast 轻提示 — 基于 sonner 的函数式通知,同时覆盖 antd `message`(简短行内)和 `notification`(标题 + 描述 + 行动)的并集。应用根挂载 `<Toaster />`,任意位置 `toast()` 触发;支持 success / error / warning / promise 等语义方法。',
14
+ },
15
+ },
16
+ },
9
17
  argTypes: {
10
18
  position: {
11
19
  control: 'select',
@@ -64,14 +72,11 @@ export const Playground: Story = {
64
72
  <Button
65
73
  variant="outline"
66
74
  onClick={() =>
67
- toast.promise(
68
- new Promise((res) => setTimeout(res, 1500)),
69
- {
70
- loading: '保存中...',
71
- success: '保存成功',
72
- error: '保存失败',
73
- },
74
- )
75
+ toast.promise(new Promise((res) => setTimeout(res, 1500)), {
76
+ loading: '保存中...',
77
+ success: '保存成功',
78
+ error: '保存失败',
79
+ })
75
80
  }
76
81
  >
77
82
  Promise
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: space
3
3
  name: Space
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
- # Space
11
+ # Space 间距
11
12
 
12
13
  间距容器 — antd 独有补足。**等价 antd `Space`**:把同语义并排子项统一间距、对齐与可选换行,可选 `split` 节点(常用 Separator)。与 `Flex` 区别:Space 偏向**小集合 inline 间距**(按钮组、tag 组、表单 label-value 对),Flex 偏向**完整布局容器**。
13
14
 
@@ -23,25 +24,32 @@ package: "@teamix-evo/ui"
23
24
  - 按钮粘连共享边线 → `ButtonGroup`
24
25
  - 大段排版分段 → `Typography Prose`
25
26
 
27
+ ## Props
28
+
26
29
  <!-- auto:props:begin -->
27
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
28
- | --- | --- | --- | --- | --- |
29
- | `direction` | `'horizontal' \| 'vertical'` | `"horizontal"` | | 排列方向(antd `direction` 并集)。 |
30
- | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 间距档位(antd `size` 并集) — 走 design 间距刻度,不接受 number |
31
- | `wrap` | `boolean` | `false` | – | 是否自动换行(antd `wrap` 并集) — horizontal 模式生效。 |
32
- | `align` | `'start' \| 'center' \| 'end' \| 'baseline' \| 'stretch'` | `"center"` | – | 主轴对齐方式(antd `align` 并集) |
33
- | `justify` | `'start' \| 'center' \| 'end' \| 'between' \| 'around'` | | – | 副轴对齐(antd `Space` 无,Space.Compact 也无 — 但中后台需求高,补)。 |
34
- | `split` | `React.ReactNode` | – | – | 分隔节点(antd `split` 并集)在每两个子项之间插入(常用 `<Separator>`)。 |
30
+
31
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
32
+ | ----------- | --------------------------------------------------------- | -------------- | ---- | ------------------------------------------------------------------------ |
33
+ | `direction` | `'horizontal' \| 'vertical'` | `"horizontal"` | – | 排列方向(antd `direction` 并集)。 |
34
+ | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 间距档位(antd `size` 并集) — design 间距刻度,不接受 number。 |
35
+ | `wrap` | `boolean` | `false` | – | 是否自动换行(antd `wrap` 并集) — horizontal 模式生效。 |
36
+ | `align` | `'start' \| 'center' \| 'end' \| 'baseline' \| 'stretch'` | `"center"` | – | 主轴对齐方式(antd `align` 并集)。 |
37
+ | `justify` | `'start' \| 'center' \| 'end' \| 'between' \| 'around'` | – | – | 副轴对齐(antd `Space` 无,Space.Compact 也无 但中后台需求高,补)。 |
38
+ | `split` | `React.ReactNode` | – | – | 分隔节点(antd `split` 并集) — 在每两个子项之间插入(常用 `<Separator>`)。 |
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 space` 时,以下 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
 
@@ -50,6 +58,7 @@ package: "@teamix-evo/ui"
50
58
  ```bash
51
59
  pnpm add class-variance-authority@^0.7.0
52
60
  ```
61
+
53
62
  <!-- auto:deps:end -->
54
63
 
55
64
  ## AI 生成纪律
@@ -11,7 +11,7 @@ const meta: Meta<typeof Space> = {
11
11
  docs: {
12
12
  description: {
13
13
  component:
14
- '间距容器 — 把同语义并排子项统一间距、对齐与可选换行(按钮组、tag 组、表单 label-value 对)。等价 antd `Space`,与 Flex 互补:Space 偏 inline 小集合,Flex 偏完整布局。视觉走 OpenTrek tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
14
+ '间距容器 — 把同语义并排子项统一间距、对齐与可选换行(按钮组、tag 组、表单 label-value 对)。等价 antd `Space`,与 Flex 互补:Space 偏 inline 小集合,Flex 偏完整布局。',
15
15
  },
16
16
  },
17
17
  },
@@ -28,7 +28,12 @@ const meta: Meta<typeof Space> = {
28
28
  options: ['start', 'center', 'end', 'between', 'around'],
29
29
  },
30
30
  },
31
- args: { direction: 'horizontal', size: 'default', wrap: false, align: 'center' },
31
+ args: {
32
+ direction: 'horizontal',
33
+ size: 'default',
34
+ wrap: false,
35
+ align: 'center',
36
+ },
32
37
  };
33
38
 
34
39
  export default meta;
@@ -58,10 +63,19 @@ export const Vertical: Story = {
58
63
  export const WithSplit: Story = {
59
64
  parameters: { controls: { disable: true } },
60
65
  render: () => (
61
- <Space split={<Separator orientation="vertical" className="h-4" />} size="sm">
62
- <a href="#" className="text-sm text-primary hover:underline">查看</a>
63
- <a href="#" className="text-sm text-primary hover:underline">编辑</a>
64
- <a href="#" className="text-sm text-destructive hover:underline">删除</a>
66
+ <Space
67
+ split={<Separator orientation="vertical" className="h-4" />}
68
+ size="sm"
69
+ >
70
+ <a href="#" className="text-sm text-primary hover:underline">
71
+ 查看
72
+ </a>
73
+ <a href="#" className="text-sm text-primary hover:underline">
74
+ 编辑
75
+ </a>
76
+ <a href="#" className="text-sm text-destructive hover:underline">
77
+ 删除
78
+ </a>
65
79
  </Space>
66
80
  ),
67
81
  };