@teamix-evo/ui 0.2.0 → 0.3.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 (282) hide show
  1. package/README.md +184 -184
  2. package/manifest.json +680 -492
  3. package/package.json +15 -9
  4. package/src/components/accordion/accordion.meta.md +5 -9
  5. package/src/components/accordion/accordion.stories.tsx +3 -3
  6. package/src/components/accordion/accordion.tsx +104 -8
  7. package/src/components/affix/affix.meta.md +21 -12
  8. package/src/components/affix/affix.stories.tsx +101 -26
  9. package/src/components/affix/affix.tsx +79 -9
  10. package/src/components/alert/alert.meta.md +52 -26
  11. package/src/components/alert/alert.stories.tsx +66 -21
  12. package/src/components/alert/alert.tsx +81 -34
  13. package/src/components/alert-dialog/alert-dialog.meta.md +48 -16
  14. package/src/components/alert-dialog/alert-dialog.stories.tsx +145 -3
  15. package/src/components/alert-dialog/alert-dialog.tsx +60 -13
  16. package/src/components/anchor/anchor.meta.md +10 -14
  17. package/src/components/anchor/anchor.stories.tsx +3 -3
  18. package/src/components/anchor/anchor.tsx +2 -2
  19. package/src/components/app/app.meta.md +10 -14
  20. package/src/components/app/app.stories.tsx +6 -6
  21. package/src/components/aspect-ratio/aspect-ratio.meta.md +4 -8
  22. package/src/components/aspect-ratio/aspect-ratio.stories.tsx +3 -3
  23. package/src/components/auto-complete/auto-complete.meta.md +19 -20
  24. package/src/components/auto-complete/auto-complete.stories.tsx +44 -3
  25. package/src/components/auto-complete/auto-complete.tsx +119 -71
  26. package/src/components/avatar/avatar.meta.md +9 -22
  27. package/src/components/avatar/avatar.stories.tsx +21 -3
  28. package/src/components/avatar/avatar.tsx +24 -23
  29. package/src/components/badge/badge.meta.md +14 -18
  30. package/src/components/badge/badge.stories.tsx +2 -2
  31. package/src/components/badge/badge.tsx +2 -2
  32. package/src/components/breadcrumb/breadcrumb.meta.md +29 -20
  33. package/src/components/breadcrumb/breadcrumb.stories.tsx +120 -5
  34. package/src/components/breadcrumb/breadcrumb.tsx +22 -8
  35. package/src/components/button/button.meta.md +261 -29
  36. package/src/components/button/button.stories.tsx +549 -41
  37. package/src/components/button/button.tsx +335 -33
  38. package/src/components/calendar/calendar.meta.md +19 -14
  39. package/src/components/calendar/calendar.stories.tsx +5 -5
  40. package/src/components/calendar/calendar.tsx +73 -8
  41. package/src/components/card/card.meta.md +31 -34
  42. package/src/components/card/card.stories.tsx +34 -3
  43. package/src/components/card/card.tsx +146 -63
  44. package/src/components/carousel/carousel.meta.md +10 -14
  45. package/src/components/carousel/carousel.stories.tsx +1 -1
  46. package/src/components/cascader/cascader.meta.md +43 -22
  47. package/src/components/cascader/cascader.stories.tsx +13 -2
  48. package/src/components/cascader/cascader.tsx +427 -84
  49. package/src/components/checkbox/checkbox.meta.md +74 -24
  50. package/src/components/checkbox/checkbox.stories.tsx +160 -2
  51. package/src/components/checkbox/checkbox.tsx +77 -9
  52. package/src/components/collapsible/collapsible.meta.md +7 -6
  53. package/src/components/collapsible/collapsible.stories.tsx +2 -2
  54. package/src/components/collapsible/collapsible.tsx +93 -6
  55. package/src/components/color-picker/color-picker.meta.md +16 -20
  56. package/src/components/color-picker/color-picker.stories.tsx +86 -7
  57. package/src/components/color-picker/color-picker.tsx +19 -9
  58. package/src/components/command/command.meta.md +7 -11
  59. package/src/components/command/command.stories.tsx +4 -4
  60. package/src/components/command/command.tsx +18 -7
  61. package/src/components/context-menu/context-menu.meta.md +5 -25
  62. package/src/components/context-menu/context-menu.stories.tsx +4 -4
  63. package/src/components/context-menu/context-menu.tsx +21 -8
  64. package/src/components/data-table/data-table.meta.md +14 -18
  65. package/src/components/data-table/data-table.stories.tsx +1 -1
  66. package/src/components/data-table/data-table.tsx +2 -2
  67. package/src/components/date-picker/date-picker.meta.md +90 -41
  68. package/src/components/date-picker/date-picker.stories.tsx +55 -5
  69. package/src/components/date-picker/date-picker.tsx +1489 -91
  70. package/src/components/descriptions/descriptions.meta.md +12 -16
  71. package/src/components/descriptions/descriptions.stories.tsx +2 -2
  72. package/src/components/descriptions/descriptions.tsx +22 -14
  73. package/src/components/dialog/dialog.meta.md +67 -17
  74. package/src/components/dialog/dialog.stories.tsx +182 -20
  75. package/src/components/dialog/dialog.tsx +67 -15
  76. package/src/components/dialog/imperative.tsx +252 -0
  77. package/src/components/drawer/drawer.meta.md +27 -39
  78. package/src/components/drawer/drawer.stories.tsx +29 -12
  79. package/src/components/drawer/drawer.tsx +22 -114
  80. package/src/components/dropdown-menu/dropdown-menu.meta.md +64 -24
  81. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +81 -3
  82. package/src/components/dropdown-menu/dropdown-menu.tsx +24 -10
  83. package/src/components/ellipsis/ellipsis.meta.md +87 -0
  84. package/src/components/ellipsis/ellipsis.stories.tsx +72 -0
  85. package/src/components/ellipsis/ellipsis.tsx +153 -0
  86. package/src/components/empty/empty.meta.md +10 -14
  87. package/src/components/empty/empty.stories.tsx +3 -3
  88. package/src/components/empty/empty.tsx +10 -3
  89. package/src/components/field/field.meta.md +46 -25
  90. package/src/components/field/field.stories.tsx +380 -3
  91. package/src/components/field/field.tsx +263 -35
  92. package/src/components/filter-bar/filter-bar.meta.md +92 -0
  93. package/src/components/filter-bar/filter-bar.stories.tsx +1083 -0
  94. package/src/components/filter-bar/filter-bar.tsx +568 -0
  95. package/src/components/flex/flex.meta.md +59 -20
  96. package/src/components/flex/flex.stories.tsx +65 -10
  97. package/src/components/flex/flex.tsx +27 -4
  98. package/src/components/float-button/float-button.meta.md +10 -29
  99. package/src/components/float-button/float-button.stories.tsx +6 -6
  100. package/src/components/form/form.meta.md +31 -52
  101. package/src/components/form/form.stories.tsx +350 -3
  102. package/src/components/form/form.tsx +101 -35
  103. package/src/components/grid/grid.meta.md +4 -24
  104. package/src/components/grid/grid.stories.tsx +2 -2
  105. package/src/components/hover-card/hover-card.meta.md +9 -10
  106. package/src/components/hover-card/hover-card.stories.tsx +29 -4
  107. package/src/components/hover-card/hover-card.tsx +51 -13
  108. package/src/components/icon/DEVELOPMENT.md +809 -0
  109. package/src/components/icon/icon.meta.md +170 -0
  110. package/src/components/icon/icon.stories.tsx +344 -0
  111. package/src/components/icon/icon.tsx +248 -0
  112. package/src/components/image/image.meta.md +14 -18
  113. package/src/components/image/image.stories.tsx +3 -3
  114. package/src/components/image/image.tsx +2 -0
  115. package/src/components/input/demo/sizes.tsx +2 -2
  116. package/src/components/input/input.meta.md +44 -43
  117. package/src/components/input/input.stories.tsx +62 -35
  118. package/src/components/input/input.tsx +96 -101
  119. package/src/components/input-group/input-group.meta.md +53 -39
  120. package/src/components/input-group/input-group.stories.tsx +49 -16
  121. package/src/components/input-group/input-group.tsx +43 -8
  122. package/src/components/input-number/input-number.meta.md +68 -20
  123. package/src/components/input-number/input-number.stories.tsx +33 -6
  124. package/src/components/input-number/input-number.tsx +79 -20
  125. package/src/components/input-otp/input-otp.meta.md +8 -20
  126. package/src/components/input-otp/input-otp.stories.tsx +3 -3
  127. package/src/components/input-otp/input-otp.tsx +1 -1
  128. package/src/components/item/item.meta.md +8 -26
  129. package/src/components/item/item.stories.tsx +3 -3
  130. package/src/components/item/item.tsx +7 -6
  131. package/src/components/kbd/kbd.meta.md +7 -19
  132. package/src/components/kbd/kbd.stories.tsx +4 -4
  133. package/src/components/kbd/kbd.tsx +8 -4
  134. package/src/components/label/label.meta.md +21 -18
  135. package/src/components/label/label.stories.tsx +64 -6
  136. package/src/components/label/label.tsx +91 -19
  137. package/src/components/masonry/masonry.meta.md +8 -12
  138. package/src/components/masonry/masonry.stories.tsx +4 -4
  139. package/src/components/mentions/mentions.meta.md +42 -21
  140. package/src/components/mentions/mentions.stories.tsx +120 -6
  141. package/src/components/mentions/mentions.tsx +10 -5
  142. package/src/components/menubar/menubar.meta.md +4 -8
  143. package/src/components/menubar/menubar.stories.tsx +55 -3
  144. package/src/components/menubar/menubar.tsx +9 -9
  145. package/src/components/native-select/native-select.meta.md +7 -11
  146. package/src/components/native-select/native-select.stories.tsx +4 -4
  147. package/src/components/native-select/native-select.tsx +1 -1
  148. package/src/components/navigation-menu/navigation-menu.meta.md +4 -8
  149. package/src/components/navigation-menu/navigation-menu.stories.tsx +106 -3
  150. package/src/components/navigation-menu/navigation-menu.tsx +6 -3
  151. package/src/components/notification/notification.meta.md +41 -8
  152. package/src/components/notification/notification.stories.tsx +9 -9
  153. package/src/components/notification/notification.tsx +34 -19
  154. package/src/components/page-header/DEVELOPMENT.md +842 -0
  155. package/src/components/page-header/page-header.meta.md +208 -0
  156. package/src/components/page-header/page-header.stories.tsx +421 -0
  157. package/src/components/page-header/page-header.tsx +281 -0
  158. package/src/components/pagination/pagination.meta.md +122 -50
  159. package/src/components/pagination/pagination.stories.tsx +227 -11
  160. package/src/components/pagination/pagination.tsx +355 -63
  161. package/src/components/popconfirm/popconfirm.meta.md +19 -23
  162. package/src/components/popconfirm/popconfirm.stories.tsx +2 -2
  163. package/src/components/popconfirm/popconfirm.tsx +1 -1
  164. package/src/components/popover/popover.meta.md +64 -12
  165. package/src/components/popover/popover.stories.tsx +83 -7
  166. package/src/components/popover/popover.tsx +77 -28
  167. package/src/components/progress/progress.meta.md +43 -26
  168. package/src/components/progress/progress.stories.tsx +2 -2
  169. package/src/components/progress/progress.tsx +19 -11
  170. package/src/components/radio-group/radio-group.meta.md +78 -11
  171. package/src/components/radio-group/radio-group.stories.tsx +38 -2
  172. package/src/components/radio-group/radio-group.tsx +149 -18
  173. package/src/components/rate/rate.meta.md +41 -19
  174. package/src/components/rate/rate.stories.tsx +2 -2
  175. package/src/components/rate/rate.tsx +37 -10
  176. package/src/components/resizable/resizable.meta.md +4 -12
  177. package/src/components/resizable/resizable.stories.tsx +5 -5
  178. package/src/components/resizable/resizable.tsx +1 -1
  179. package/src/components/result/result.meta.md +10 -14
  180. package/src/components/result/result.stories.tsx +2 -2
  181. package/src/components/result/result.tsx +21 -12
  182. package/src/components/scroll-area/scroll-area.meta.md +4 -8
  183. package/src/components/scroll-area/scroll-area.stories.tsx +5 -5
  184. package/src/components/segmented/segmented.meta.md +15 -17
  185. package/src/components/segmented/segmented.stories.tsx +3 -3
  186. package/src/components/segmented/segmented.tsx +15 -7
  187. package/src/components/select/select.meta.md +199 -67
  188. package/src/components/select/select.stories.tsx +238 -63
  189. package/src/components/select/select.tsx +718 -171
  190. package/src/components/separator/separator.meta.md +10 -14
  191. package/src/components/separator/separator.stories.tsx +2 -2
  192. package/src/components/separator/separator.tsx +3 -7
  193. package/src/components/sheet/sheet.meta.md +26 -21
  194. package/src/components/sheet/sheet.stories.tsx +116 -10
  195. package/src/components/sheet/sheet.tsx +116 -29
  196. package/src/components/sidebar/sidebar.meta.md +28 -38
  197. package/src/components/sidebar/sidebar.stories.tsx +696 -29
  198. package/src/components/sidebar/sidebar.tsx +615 -142
  199. package/src/components/skeleton/skeleton.meta.md +7 -31
  200. package/src/components/skeleton/skeleton.stories.tsx +3 -3
  201. package/src/components/skeleton/skeleton.tsx +7 -7
  202. package/src/components/slider/slider.meta.md +60 -13
  203. package/src/components/slider/slider.stories.tsx +58 -6
  204. package/src/components/slider/slider.tsx +154 -13
  205. package/src/components/sonner/sonner.meta.md +54 -8
  206. package/src/components/sonner/sonner.stories.tsx +79 -11
  207. package/src/components/sonner/sonner.tsx +137 -8
  208. package/src/components/spinner/spinner.meta.md +57 -21
  209. package/src/components/spinner/spinner.stories.tsx +66 -14
  210. package/src/components/spinner/spinner.tsx +111 -9
  211. package/src/components/statistic/statistic.meta.md +14 -30
  212. package/src/components/statistic/statistic.stories.tsx +1 -1
  213. package/src/components/statistic/statistic.tsx +4 -5
  214. package/src/components/steps/steps.meta.md +20 -15
  215. package/src/components/steps/steps.stories.tsx +37 -2
  216. package/src/components/steps/steps.tsx +15 -12
  217. package/src/components/switch/switch.meta.md +56 -15
  218. package/src/components/switch/switch.stories.tsx +5 -5
  219. package/src/components/switch/switch.tsx +59 -13
  220. package/src/components/table/table.meta.md +3 -7
  221. package/src/components/table/table.stories.tsx +1 -1
  222. package/src/components/table/table.tsx +4 -4
  223. package/src/components/tabs/tabs.meta.md +40 -32
  224. package/src/components/tabs/tabs.stories.tsx +104 -26
  225. package/src/components/tabs/tabs.tsx +125 -54
  226. package/src/components/tag/tag.meta.md +104 -68
  227. package/src/components/tag/tag.stories.tsx +183 -15
  228. package/src/components/tag/tag.tsx +222 -21
  229. package/src/components/textarea/textarea.meta.md +42 -31
  230. package/src/components/textarea/textarea.stories.tsx +32 -6
  231. package/src/components/textarea/textarea.tsx +32 -8
  232. package/src/components/time-picker/time-picker.meta.md +119 -50
  233. package/src/components/time-picker/time-picker.stories.tsx +65 -33
  234. package/src/components/time-picker/time-picker.tsx +889 -101
  235. package/src/components/timeline/timeline.meta.md +16 -17
  236. package/src/components/timeline/timeline.stories.tsx +24 -4
  237. package/src/components/timeline/timeline.tsx +32 -12
  238. package/src/components/toggle/toggle.meta.md +8 -12
  239. package/src/components/toggle/toggle.stories.tsx +4 -4
  240. package/src/components/toggle/toggle.tsx +4 -3
  241. package/src/components/toggle-group/toggle-group.meta.md +10 -14
  242. package/src/components/toggle-group/toggle-group.stories.tsx +3 -3
  243. package/src/components/toggle-group/toggle-group.tsx +2 -2
  244. package/src/components/tooltip/tooltip.meta.md +63 -18
  245. package/src/components/tooltip/tooltip.stories.tsx +42 -5
  246. package/src/components/tooltip/tooltip.tsx +81 -21
  247. package/src/components/tour/tour.meta.md +16 -20
  248. package/src/components/tour/tour.stories.tsx +3 -3
  249. package/src/components/tour/tour.tsx +3 -3
  250. package/src/components/transfer/transfer.meta.md +18 -22
  251. package/src/components/transfer/transfer.stories.tsx +2 -2
  252. package/src/components/transfer/transfer.tsx +28 -21
  253. package/src/components/tree/tree.meta.md +67 -22
  254. package/src/components/tree/tree.stories.tsx +1 -1
  255. package/src/components/tree/tree.tsx +9 -8
  256. package/src/components/tree-select/tree-select.meta.md +59 -23
  257. package/src/components/tree-select/tree-select.stories.tsx +2 -2
  258. package/src/components/tree-select/tree-select.tsx +42 -7
  259. package/src/components/typography/typography.meta.md +61 -39
  260. package/src/components/typography/typography.stories.tsx +14 -9
  261. package/src/components/typography/typography.tsx +38 -25
  262. package/src/components/upload/upload.meta.md +61 -25
  263. package/src/components/upload/upload.stories.tsx +69 -3
  264. package/src/components/upload/upload.tsx +170 -37
  265. package/src/components/watermark/watermark.meta.md +15 -19
  266. package/src/components/watermark/watermark.stories.tsx +98 -8
  267. package/src/hooks/use-breakpoint.ts +117 -0
  268. package/src/hooks/use-debounce-callback.ts +52 -0
  269. package/src/hooks/use-mobile.ts +23 -0
  270. package/src/stories/theme-tokens.stories.tsx +747 -0
  271. package/src/utils/trigger-input.ts +53 -0
  272. package/src/components/button-group/button-group.meta.md +0 -101
  273. package/src/components/button-group/button-group.stories.tsx +0 -93
  274. package/src/components/button-group/button-group.tsx +0 -75
  275. package/src/components/combobox/combobox.meta.md +0 -102
  276. package/src/components/combobox/combobox.stories.tsx +0 -55
  277. package/src/components/combobox/combobox.tsx +0 -130
  278. package/src/components/input/demo/addon.tsx +0 -15
  279. package/src/components/input/demo/with-prefix-suffix.tsx +0 -19
  280. package/src/components/space/space.meta.md +0 -103
  281. package/src/components/space/space.stories.tsx +0 -108
  282. package/src/components/space/space.tsx +0 -106
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import {
3
3
  ResizablePanelGroup,
4
4
  ResizablePanel,
@@ -6,7 +6,7 @@ import {
6
6
  } from './resizable';
7
7
 
8
8
  const meta: Meta<typeof ResizablePanelGroup> = {
9
- title: '布局与容器 · Layout/Resizable',
9
+ title: '布局 · Layout/Resizable',
10
10
  component: ResizablePanelGroup,
11
11
  tags: ['autodocs'],
12
12
  parameters: {
@@ -26,7 +26,7 @@ export const Horizontal: Story = {
26
26
  render: () => (
27
27
  <ResizablePanelGroup
28
28
  direction="horizontal"
29
- className="min-h-[300px] w-[600px] rounded-lg border"
29
+ className="min-h-[300px] w-[600px] rounded-lg border border-border"
30
30
  >
31
31
  <ResizablePanel defaultSize={30} minSize={20}>
32
32
  <div className="flex h-full items-center justify-center p-6">
@@ -48,7 +48,7 @@ export const Vertical: Story = {
48
48
  render: () => (
49
49
  <ResizablePanelGroup
50
50
  direction="vertical"
51
- className="min-h-[400px] w-[400px] rounded-lg border"
51
+ className="min-h-[400px] w-[400px] rounded-lg border border-border"
52
52
  >
53
53
  <ResizablePanel defaultSize={70}>
54
54
  <div className="flex h-full items-center justify-center p-6 text-sm">
@@ -70,7 +70,7 @@ export const Nested: Story = {
70
70
  render: () => (
71
71
  <ResizablePanelGroup
72
72
  direction="horizontal"
73
- className="min-h-[400px] w-[700px] rounded-lg border"
73
+ className="min-h-[400px] w-[700px] rounded-lg border border-border"
74
74
  >
75
75
  <ResizablePanel defaultSize={20} minSize={15}>
76
76
  <div className="flex h-full items-center justify-center p-4 text-sm">
@@ -45,7 +45,7 @@ const ResizableHandle = ({
45
45
  {...props}
46
46
  >
47
47
  {withHandle ? (
48
- <div className="z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border">
48
+ <div className="z-10 flex h-4 w-3 items-center justify-center rounded-sm border border-border bg-border">
49
49
  <GripVertical className="size-2.5" />
50
50
  </div>
51
51
  ) : null}
@@ -28,28 +28,25 @@ displayName: 结果页
28
28
  ## Props
29
29
 
30
30
  <!-- auto:props:begin -->
31
-
32
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
33
- | ---------- | ----------------- | -------- | ---- | -------------------------------------------------------------------------- |
34
- | `status` | `ResultStatus` | `"info"` | – | 状态类型 决定默认图标和配色;`404 / 403 / 500` 显示大字号错误码代替图标。 |
35
- | `icon` | `React.ReactNode` | – | – | 自定义图标(覆盖默认)。 |
36
- | `title` | `React.ReactNode` | – | – | 标题。 |
37
- | `subTitle` | `React.ReactNode` | – | – | 副标题(描述)。 |
38
- | `extra` | `React.ReactNode` | – | – | 操作区(放 Button)。 |
39
-
31
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
32
+ | --- | --- | --- | --- | --- |
33
+ | `status` | `ResultStatus` | `"info"` | | 状态类型 — 决定默认图标和配色;`404 / 403 / 500` 显示大字号错误码代替图标。 |
34
+ | `icon` | `React.ReactNode` | – | | 自定义图标(覆盖默认)。 |
35
+ | `title` | `React.ReactNode` | – | – | 标题。 |
36
+ | `subTitle` | `React.ReactNode` | – | – | 副标题(描述)。 |
37
+ | `extra` | `React.ReactNode` | – | – | 操作区(放 Button)。 |
40
38
  <!-- auto:props:end -->
41
39
 
42
40
  ## 依赖
43
41
 
44
42
  <!-- auto:deps:begin -->
45
-
46
43
  ### 同库依赖
47
44
 
48
45
  > `teamix-evo ui add result` 时,以下 entry 会被自动连带安装(无需手动 add)。
49
46
 
50
- | Entry | 类型 | 描述 |
51
- | ----- | ---- | -------------------------------------------------- |
52
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
47
+ | Entry | 类型 | 描述 |
48
+ | --- | --- | --- |
49
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
53
50
 
54
51
  ### npm 依赖
55
52
 
@@ -58,7 +55,6 @@ displayName: 结果页
58
55
  ```bash
59
56
  pnpm add lucide-react@^0.460.0
60
57
  ```
61
-
62
58
  <!-- auto:deps:end -->
63
59
 
64
60
  ## AI 生成纪律
@@ -1,9 +1,9 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import { Result } from './result';
3
3
  import { Button } from '@/components/button/button';
4
4
 
5
5
  const meta: Meta<typeof Result> = {
6
- title: '反馈与浮层 · Feedback/Result',
6
+ title: '反馈 · Feedback/Result',
7
7
  component: Result,
8
8
  tags: ['autodocs'],
9
9
  parameters: {
@@ -1,14 +1,16 @@
1
1
  import * as React from 'react';
2
- import {
3
- AlertCircle,
4
- CheckCircle2,
5
- Info,
6
- XCircle,
7
- } from 'lucide-react';
2
+ import { AlertCircle, CheckCircle2, Info, XCircle } from 'lucide-react';
8
3
 
9
4
  import { cn } from '@/utils/cn';
10
5
 
11
- export type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500';
6
+ export type ResultStatus =
7
+ | 'success'
8
+ | 'error'
9
+ | 'info'
10
+ | 'warning'
11
+ | '404'
12
+ | '403'
13
+ | '500';
12
14
 
13
15
  const iconMap = {
14
16
  success: { Icon: CheckCircle2, color: 'text-success' },
@@ -45,7 +47,16 @@ export interface ResultProps
45
47
 
46
48
  const Result = React.forwardRef<HTMLDivElement, ResultProps>(
47
49
  (
48
- { status = 'info', icon, title, subTitle, extra, className, children, ...props },
50
+ {
51
+ status = 'info',
52
+ icon,
53
+ title,
54
+ subTitle,
55
+ extra,
56
+ className,
57
+ children,
58
+ ...props
59
+ },
49
60
  ref,
50
61
  ) => {
51
62
  const { Icon, color } = iconMap[status];
@@ -68,11 +79,9 @@ const Result = React.forwardRef<HTMLDivElement, ResultProps>(
68
79
  ) : (
69
80
  <Icon className={cn('size-16', color)} aria-hidden="true" />
70
81
  )}
71
- {title ? (
72
- <h2 className="text-2xl font-semibold">{title}</h2>
73
- ) : null}
82
+ {title ? <h2 className="text-2xl font-semibold">{title}</h2> : null}
74
83
  {subTitle ? (
75
- <p className="max-w-prose text-sm text-muted-foreground">
84
+ <p className="max-w-prose text-xs text-muted-foreground">
76
85
  {subTitle}
77
86
  </p>
78
87
  ) : null}
@@ -3,7 +3,7 @@ id: scroll-area
3
3
  name: ScrollArea
4
4
  displayName: 滚动区域
5
5
  type: component
6
- category: layout
6
+ category: deprecated
7
7
  since: 0.1.0
8
8
  package: '@teamix-evo/ui'
9
9
  ---
@@ -29,9 +29,7 @@ package: '@teamix-evo/ui'
29
29
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成。
30
30
 
31
31
  <!-- auto:props:begin -->
32
-
33
32
  _(no props)_
34
-
35
33
  <!-- auto:props:end -->
36
34
 
37
35
  ## 依赖
@@ -39,14 +37,13 @@ _(no props)_
39
37
  > 以下表格由 `pnpm --filter @teamix-evo/ui gen:meta` 自动生成,数据源是 [`manifest.json`](../../../manifest.json)。**手工编辑 marker 之间的内容会在下次生成时被覆盖**。
40
38
 
41
39
  <!-- auto:deps:begin -->
42
-
43
40
  ### 同库依赖
44
41
 
45
42
  > `teamix-evo ui add scroll-area` 时,以下 entry 会被自动连带安装(无需手动 add)。
46
43
 
47
- | Entry | 类型 | 描述 |
48
- | ----- | ---- | -------------------------------------------------- |
49
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
44
+ | Entry | 类型 | 描述 |
45
+ | --- | --- | --- |
46
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
50
47
 
51
48
  ### npm 依赖
52
49
 
@@ -55,7 +52,6 @@ _(no props)_
55
52
  ```bash
56
53
  pnpm add @radix-ui/react-scroll-area@^1.2.0
57
54
  ```
58
-
59
55
  <!-- auto:deps:end -->
60
56
 
61
57
  > 子组件:`ScrollArea`(主容器,内置 Viewport + ScrollBar 组合)/ `ScrollBar`(独立 ScrollBar,需要自定义双向滚动时使用)。
@@ -1,15 +1,15 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import { ScrollArea, ScrollBar } from './scroll-area';
3
3
 
4
4
  const meta: Meta<typeof ScrollArea> = {
5
- title: '布局与容器 · Layout/ScrollArea',
5
+ title: '废弃 · Deprecated/ScrollArea',
6
6
  component: ScrollArea,
7
7
  tags: ['autodocs'],
8
8
  parameters: {
9
9
  docs: {
10
10
  description: {
11
11
  component:
12
- '自定义滚动容器 — 基于 Radix ScrollArea,跨浏览器一致的滚动条样式 + 触屏友好 + 自动隐藏 thumb。shadcn 专有,antd 用原生滚动。',
12
+ '⚠️ **已废弃** — 仅 Storybook 留档,不通过 manifest 对外发布。\n\n自定义滚动容器 — 基于 Radix ScrollArea,跨浏览器一致的滚动条样式 + 触屏友好 + 自动隐藏 thumb。shadcn 专有,antd 用原生滚动。',
13
13
  },
14
14
  },
15
15
  },
@@ -20,7 +20,7 @@ type Story = StoryObj<typeof ScrollArea>;
20
20
 
21
21
  export const Vertical: Story = {
22
22
  render: () => (
23
- <ScrollArea className="h-72 w-48 rounded-md border p-4">
23
+ <ScrollArea className="h-72 w-48 rounded-md border border-border p-4">
24
24
  {Array.from({ length: 50 }).map((_, i) => (
25
25
  <div key={i} className="py-1 text-sm">
26
26
  第 {i + 1} 行
@@ -32,7 +32,7 @@ export const Vertical: Story = {
32
32
 
33
33
  export const Horizontal: Story = {
34
34
  render: () => (
35
- <ScrollArea className="w-96 whitespace-nowrap rounded-md border">
35
+ <ScrollArea className="w-96 whitespace-nowrap rounded-md border border-border">
36
36
  <div className="flex w-max gap-4 p-4">
37
37
  {Array.from({ length: 12 }).map((_, i) => (
38
38
  <div
@@ -2,7 +2,7 @@
2
2
  id: segmented
3
3
  name: Segmented
4
4
  type: component
5
- category: form
5
+ category: deprecated
6
6
  since: 0.1.0
7
7
  package: '@teamix-evo/ui'
8
8
  displayName: 分段控制器
@@ -12,6 +12,8 @@ displayName: 分段控制器
12
12
 
13
13
  分段控制器 — antd 独有补足。**等价 antd `Segmented`**(v5.0+)。视觉类似 iOS/macOS 系统 Segmented Control,强调**互斥单选 + 紧凑紧贴**(日 / 周 / 月、列表 / 网格、明 / 暗主题切换)。
14
14
 
15
+ > ⚠️ **后续废弃计划**(Task #10 后能力合并):本组件能力已被 `Tabs` 的 `variant="capsule"` + `size` 完全吸收。新项目推荐直接用 [`Tabs`](../tabs/tabs.meta.md) `variant="capsule"`。**本 entry 本轮不删**(防止存量业务 import 断裂),下一个 major 评估迁移进度后从 manifest 下架。
16
+
15
17
  ## When to use
16
18
 
17
19
  - 视图切换(列表 / 网格 / 时间轴)
@@ -25,28 +27,25 @@ displayName: 分段控制器
25
27
  - 选项超过 6 个 → 改用 `Select` / `Tabs`
26
28
 
27
29
  <!-- auto:props:begin -->
28
-
29
- | 名称 | 类型 | 默认值 | 必填 | 说明 |
30
- | -------------- | --------------------------- | ----------- | ---- | --------------------------------------- |
31
- | `options` | `SegmentedOption[]` | – | | 候选项数组。 |
32
- | `value` | `string` | – | – | 受控 value。 |
33
- | `defaultValue` | `string` | – | – | uncontrolled 初值。 |
34
- | `onChange` | `(value: string) => void` | | – | value 变化回调。 |
35
- | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 尺寸。 |
36
- | `block` | `boolean` | `false` | – | 是否撑满父容器宽度(antd `block` 并集)。 |
37
- | `disabled` | `boolean` | – | – | 整组禁用。 |
38
-
30
+ | 名称 | 类型 | 默认值 | 必填 | 说明 |
31
+ | --- | --- | --- | --- | --- |
32
+ | `options` | `SegmentedOption[]` | | | 候选项数组。 |
33
+ | `value` | `string` | – | | 受控 value。 |
34
+ | `defaultValue` | `string` | – | – | uncontrolled 初值。 |
35
+ | `onChange` | `(value: string) => void` | – | – | value 变化回调。 |
36
+ | `size` | `'sm' \| 'md' \| 'default' \| 'lg'` | `"default"` | – | 尺寸。 |
37
+ | `block` | `boolean` | `false` | – | 是否撑满父容器宽度(antd `block` 并集)。 |
38
+ | `disabled` | `boolean` | – | | 整组禁用。 |
39
39
  <!-- auto:props:end -->
40
40
 
41
41
  <!-- auto:deps:begin -->
42
-
43
42
  ### 同库依赖
44
43
 
45
44
  > `teamix-evo ui add segmented` 时,以下 entry 会被自动连带安装(无需手动 add)。
46
45
 
47
- | Entry | 类型 | 描述 |
48
- | ----- | ---- | -------------------------------------------------- |
49
- | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
46
+ | Entry | 类型 | 描述 |
47
+ | --- | --- | --- |
48
+ | `cn` | util | Tailwind className 合并工具(clsx + tailwind-merge) |
50
49
 
51
50
  ### npm 依赖
52
51
 
@@ -55,7 +54,6 @@ displayName: 分段控制器
55
54
  ```bash
56
55
  pnpm add class-variance-authority@^0.7.0
57
56
  ```
58
-
59
57
  <!-- auto:deps:end -->
60
58
 
61
59
  ## AI 生成纪律
@@ -1,17 +1,17 @@
1
1
  import * as React from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react';
2
+ import type { Meta, StoryObj } from '@storybook/react-vite';
3
3
  import { Calendar, LayoutGrid, List } from 'lucide-react';
4
4
  import { Segmented } from './segmented';
5
5
 
6
6
  const meta: Meta<typeof Segmented> = {
7
- title: '表单与输入 · Form/Segmented',
7
+ title: '废弃 · Deprecated/Segmented',
8
8
  component: Segmented,
9
9
  tags: ['autodocs'],
10
10
  parameters: {
11
11
  docs: {
12
12
  description: {
13
13
  component:
14
- '分段控制器 — iOS / macOS 风格的紧凑互斥单选(视图切换、时间区间、主题档)。等价 antd `Segmented`(v5.0+),与 ToggleGroup 互补(后者偏工具栏多选)。',
14
+ '⚠️ **已废弃** — 仅 Storybook 留档,不通过 manifest 对外发布。\n\n分段控制器 — iOS / macOS 风格的紧凑互斥单选(视图切换、时间区间、主题档)。等价 antd `Segmented`(v5.0+),与 ToggleGroup 互补(后者偏工具栏多选)。',
15
15
  },
16
16
  },
17
17
  },
@@ -9,12 +9,13 @@ const segmentedVariants = cva(
9
9
  variants: {
10
10
  size: {
11
11
  sm: 'h-8 text-xs',
12
- default: 'h-9 text-sm',
13
- lg: 'h-10 text-base',
12
+ md: 'h-9 text-xs',
13
+ default: 'h-9 text-xs',
14
+ lg: 'h-10 text-sm',
14
15
  },
15
16
  block: { true: 'w-full', false: 'w-fit' },
16
17
  },
17
- defaultVariants: { size: 'default', block: false },
18
+ defaultVariants: { size: 'md', block: false },
18
19
  },
19
20
  );
20
21
 
@@ -48,7 +49,10 @@ export interface SegmentedOption {
48
49
  }
49
50
 
50
51
  export interface SegmentedProps
51
- extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'>,
52
+ extends Omit<
53
+ React.HTMLAttributes<HTMLDivElement>,
54
+ 'onChange' | 'defaultValue'
55
+ >,
52
56
  VariantProps<typeof segmentedVariants> {
53
57
  /** 候选项数组。 */
54
58
  options: SegmentedOption[];
@@ -62,7 +66,7 @@ export interface SegmentedProps
62
66
  * 尺寸。
63
67
  * @default "default"
64
68
  */
65
- size?: 'sm' | 'default' | 'lg';
69
+ size?: 'sm' | 'md' | 'default' | 'lg';
66
70
  /**
67
71
  * 是否撑满父容器宽度(antd `block` 并集)。
68
72
  * @default false
@@ -122,9 +126,13 @@ const Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(
122
126
  aria-checked={active}
123
127
  disabled={itemDisabled}
124
128
  onClick={() => !itemDisabled && select(opt.value)}
125
- className={cn(itemVariants({ active, disabled: itemDisabled, block }))}
129
+ className={cn(
130
+ itemVariants({ active, disabled: itemDisabled, block }),
131
+ )}
126
132
  >
127
- {opt.icon ? <span className="inline-flex">{opt.icon}</span> : null}
133
+ {opt.icon ? (
134
+ <span className="inline-flex">{opt.icon}</span>
135
+ ) : null}
128
136
  {opt.label}
129
137
  </button>
130
138
  );