@teamix-evo/ui 0.1.1 → 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 (295) hide show
  1. package/README.md +184 -184
  2. package/manifest.json +680 -492
  3. package/package.json +20 -10
  4. package/src/components/accordion/accordion.meta.md +5 -4
  5. package/src/components/accordion/accordion.stories.tsx +14 -9
  6. package/src/components/accordion/accordion.tsx +104 -8
  7. package/src/components/affix/affix.meta.md +20 -2
  8. package/src/components/affix/affix.stories.tsx +102 -25
  9. package/src/components/affix/affix.tsx +79 -9
  10. package/src/components/alert/alert.meta.md +44 -13
  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 +61 -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 +8 -3
  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 +9 -4
  20. package/src/components/app/app.stories.tsx +9 -7
  21. package/src/components/aspect-ratio/aspect-ratio.meta.md +4 -3
  22. package/src/components/aspect-ratio/aspect-ratio.stories.tsx +3 -3
  23. package/src/components/auto-complete/auto-complete.meta.md +14 -6
  24. package/src/components/auto-complete/auto-complete.stories.tsx +47 -4
  25. package/src/components/auto-complete/auto-complete.tsx +119 -71
  26. package/src/components/avatar/avatar.meta.md +6 -7
  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 +10 -9
  30. package/src/components/badge/badge.stories.tsx +2 -2
  31. package/src/components/badge/badge.tsx +9 -15
  32. package/src/components/breadcrumb/breadcrumb.meta.md +27 -7
  33. package/src/components/breadcrumb/breadcrumb.stories.tsx +127 -4
  34. package/src/components/breadcrumb/breadcrumb.tsx +22 -8
  35. package/src/components/button/button.meta.md +258 -21
  36. package/src/components/button/button.stories.tsx +549 -41
  37. package/src/components/button/button.tsx +335 -33
  38. package/src/components/button/demo/as-child.tsx +24 -0
  39. package/src/components/button/demo/basic.tsx +8 -0
  40. package/src/components/button/demo/block.tsx +16 -0
  41. package/src/components/button/demo/loading.tsx +19 -0
  42. package/src/components/button/demo/shapes.tsx +18 -0
  43. package/src/components/button/demo/sizes.tsx +19 -0
  44. package/src/components/button/demo/variants.tsx +19 -0
  45. package/src/components/button/demo/with-icon.tsx +20 -0
  46. package/src/components/calendar/calendar.meta.md +13 -3
  47. package/src/components/calendar/calendar.stories.tsx +6 -6
  48. package/src/components/calendar/calendar.tsx +73 -8
  49. package/src/components/card/card.meta.md +27 -5
  50. package/src/components/card/card.stories.tsx +42 -3
  51. package/src/components/card/card.tsx +146 -63
  52. package/src/components/carousel/carousel.meta.md +4 -3
  53. package/src/components/carousel/carousel.stories.tsx +11 -6
  54. package/src/components/cascader/cascader.meta.md +47 -17
  55. package/src/components/cascader/cascader.stories.tsx +22 -10
  56. package/src/components/cascader/cascader.tsx +428 -85
  57. package/src/components/checkbox/checkbox.meta.md +75 -7
  58. package/src/components/checkbox/checkbox.stories.tsx +161 -3
  59. package/src/components/checkbox/checkbox.tsx +77 -9
  60. package/src/components/collapsible/collapsible.meta.md +14 -6
  61. package/src/components/collapsible/collapsible.stories.tsx +10 -2
  62. package/src/components/collapsible/collapsible.tsx +93 -6
  63. package/src/components/color-picker/color-picker.meta.md +12 -7
  64. package/src/components/color-picker/color-picker.stories.tsx +86 -7
  65. package/src/components/color-picker/color-picker.tsx +20 -9
  66. package/src/components/command/command.meta.md +29 -13
  67. package/src/components/command/command.stories.tsx +4 -4
  68. package/src/components/command/command.tsx +19 -8
  69. package/src/components/context-menu/context-menu.meta.md +11 -8
  70. package/src/components/context-menu/context-menu.stories.tsx +11 -3
  71. package/src/components/context-menu/context-menu.tsx +21 -8
  72. package/src/components/data-table/data-table.meta.md +6 -5
  73. package/src/components/data-table/data-table.stories.tsx +13 -6
  74. package/src/components/data-table/data-table.tsx +2 -2
  75. package/src/components/date-picker/date-picker.meta.md +88 -19
  76. package/src/components/date-picker/date-picker.stories.tsx +55 -5
  77. package/src/components/date-picker/date-picker.tsx +1489 -91
  78. package/src/components/descriptions/descriptions.meta.md +10 -5
  79. package/src/components/descriptions/descriptions.stories.tsx +3 -3
  80. package/src/components/descriptions/descriptions.tsx +22 -14
  81. package/src/components/dialog/dialog.meta.md +76 -13
  82. package/src/components/dialog/dialog.stories.tsx +182 -20
  83. package/src/components/dialog/dialog.tsx +67 -15
  84. package/src/components/dialog/imperative.tsx +252 -0
  85. package/src/components/drawer/drawer.meta.md +33 -34
  86. package/src/components/drawer/drawer.stories.tsx +29 -12
  87. package/src/components/drawer/drawer.tsx +22 -113
  88. package/src/components/dropdown-menu/dropdown-menu.meta.md +78 -10
  89. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +88 -2
  90. package/src/components/dropdown-menu/dropdown-menu.tsx +24 -10
  91. package/src/components/ellipsis/ellipsis.meta.md +87 -0
  92. package/src/components/ellipsis/ellipsis.stories.tsx +72 -0
  93. package/src/components/ellipsis/ellipsis.tsx +153 -0
  94. package/src/components/empty/empty.meta.md +9 -4
  95. package/src/components/empty/empty.stories.tsx +4 -4
  96. package/src/components/empty/empty.tsx +10 -3
  97. package/src/components/field/field.meta.md +47 -9
  98. package/src/components/field/field.stories.tsx +385 -5
  99. package/src/components/field/field.tsx +263 -35
  100. package/src/components/filter-bar/filter-bar.meta.md +92 -0
  101. package/src/components/filter-bar/filter-bar.stories.tsx +1083 -0
  102. package/src/components/filter-bar/filter-bar.tsx +568 -0
  103. package/src/components/flex/flex.meta.md +54 -6
  104. package/src/components/flex/flex.stories.tsx +107 -20
  105. package/src/components/flex/flex.tsx +27 -4
  106. package/src/components/float-button/float-button.meta.md +8 -3
  107. package/src/components/float-button/float-button.stories.tsx +9 -7
  108. package/src/components/float-button/float-button.tsx +1 -1
  109. package/src/components/form/form.meta.md +39 -17
  110. package/src/components/form/form.stories.tsx +350 -3
  111. package/src/components/form/form.tsx +101 -35
  112. package/src/components/grid/grid.meta.md +7 -2
  113. package/src/components/grid/grid.stories.tsx +6 -4
  114. package/src/components/hover-card/hover-card.meta.md +20 -9
  115. package/src/components/hover-card/hover-card.stories.tsx +34 -5
  116. package/src/components/hover-card/hover-card.tsx +51 -13
  117. package/src/components/icon/DEVELOPMENT.md +809 -0
  118. package/src/components/icon/icon.meta.md +170 -0
  119. package/src/components/icon/icon.stories.tsx +344 -0
  120. package/src/components/icon/icon.tsx +248 -0
  121. package/src/components/image/image.meta.md +9 -4
  122. package/src/components/image/image.stories.tsx +3 -3
  123. package/src/components/image/image.tsx +6 -4
  124. package/src/components/input/demo/basic.tsx +12 -0
  125. package/src/components/input/demo/clearable.tsx +21 -0
  126. package/src/components/input/demo/show-count.tsx +18 -0
  127. package/src/components/input/demo/sizes.tsx +15 -0
  128. package/src/components/input/input.meta.md +39 -33
  129. package/src/components/input/input.stories.tsx +62 -35
  130. package/src/components/input/input.tsx +97 -98
  131. package/src/components/input-group/input-group.meta.md +54 -22
  132. package/src/components/input-group/input-group.stories.tsx +49 -16
  133. package/src/components/input-group/input-group.tsx +44 -8
  134. package/src/components/input-number/input-number.meta.md +64 -7
  135. package/src/components/input-number/input-number.stories.tsx +46 -8
  136. package/src/components/input-number/input-number.tsx +99 -26
  137. package/src/components/input-otp/input-otp.meta.md +4 -3
  138. package/src/components/input-otp/input-otp.stories.tsx +3 -3
  139. package/src/components/input-otp/input-otp.tsx +1 -1
  140. package/src/components/item/item.meta.md +8 -3
  141. package/src/components/item/item.stories.tsx +8 -5
  142. package/src/components/item/item.tsx +7 -6
  143. package/src/components/kbd/kbd.meta.md +13 -4
  144. package/src/components/kbd/kbd.stories.tsx +4 -4
  145. package/src/components/kbd/kbd.tsx +10 -5
  146. package/src/components/label/label.meta.md +18 -10
  147. package/src/components/label/label.stories.tsx +64 -6
  148. package/src/components/label/label.tsx +91 -19
  149. package/src/components/masonry/masonry.meta.md +8 -3
  150. package/src/components/masonry/masonry.stories.tsx +7 -5
  151. package/src/components/masonry/masonry.tsx +1 -0
  152. package/src/components/mentions/mentions.meta.md +36 -6
  153. package/src/components/mentions/mentions.stories.tsx +120 -6
  154. package/src/components/mentions/mentions.tsx +11 -5
  155. package/src/components/menubar/menubar.meta.md +30 -12
  156. package/src/components/menubar/menubar.stories.tsx +62 -2
  157. package/src/components/menubar/menubar.tsx +9 -9
  158. package/src/components/native-select/native-select.meta.md +8 -3
  159. package/src/components/native-select/native-select.stories.tsx +8 -5
  160. package/src/components/native-select/native-select.tsx +1 -1
  161. package/src/components/navigation-menu/navigation-menu.meta.md +19 -9
  162. package/src/components/navigation-menu/navigation-menu.stories.tsx +112 -9
  163. package/src/components/navigation-menu/navigation-menu.tsx +8 -4
  164. package/src/components/notification/notification.meta.md +52 -10
  165. package/src/components/notification/notification.stories.tsx +11 -9
  166. package/src/components/notification/notification.tsx +36 -21
  167. package/src/components/page-header/DEVELOPMENT.md +842 -0
  168. package/src/components/page-header/page-header.meta.md +208 -0
  169. package/src/components/page-header/page-header.stories.tsx +421 -0
  170. package/src/components/page-header/page-header.tsx +281 -0
  171. package/src/components/pagination/pagination.meta.md +140 -37
  172. package/src/components/pagination/pagination.stories.tsx +232 -10
  173. package/src/components/pagination/pagination.tsx +355 -63
  174. package/src/components/popconfirm/popconfirm.meta.md +9 -4
  175. package/src/components/popconfirm/popconfirm.stories.tsx +3 -4
  176. package/src/components/popconfirm/popconfirm.tsx +2 -2
  177. package/src/components/popover/popover.meta.md +62 -5
  178. package/src/components/popover/popover.stories.tsx +83 -7
  179. package/src/components/popover/popover.tsx +77 -28
  180. package/src/components/progress/progress.meta.md +38 -6
  181. package/src/components/progress/progress.stories.tsx +3 -3
  182. package/src/components/progress/progress.tsx +24 -16
  183. package/src/components/radio-group/radio-group.meta.md +79 -7
  184. package/src/components/radio-group/radio-group.stories.tsx +39 -3
  185. package/src/components/radio-group/radio-group.tsx +149 -18
  186. package/src/components/rate/rate.meta.md +35 -4
  187. package/src/components/rate/rate.stories.tsx +13 -5
  188. package/src/components/rate/rate.tsx +37 -10
  189. package/src/components/resizable/resizable.meta.md +7 -4
  190. package/src/components/resizable/resizable.stories.tsx +6 -6
  191. package/src/components/resizable/resizable.tsx +1 -1
  192. package/src/components/result/result.meta.md +7 -2
  193. package/src/components/result/result.stories.tsx +4 -8
  194. package/src/components/result/result.tsx +24 -15
  195. package/src/components/scroll-area/scroll-area.meta.md +4 -3
  196. package/src/components/scroll-area/scroll-area.stories.tsx +12 -4
  197. package/src/components/scroll-area/scroll-area.tsx +3 -3
  198. package/src/components/segmented/segmented.meta.md +7 -4
  199. package/src/components/segmented/segmented.stories.tsx +37 -8
  200. package/src/components/segmented/segmented.tsx +15 -7
  201. package/src/components/select/select.meta.md +197 -52
  202. package/src/components/select/select.stories.tsx +238 -63
  203. package/src/components/select/select.tsx +718 -171
  204. package/src/components/separator/separator.meta.md +4 -3
  205. package/src/components/separator/separator.stories.tsx +3 -3
  206. package/src/components/separator/separator.tsx +3 -7
  207. package/src/components/sheet/sheet.meta.md +32 -16
  208. package/src/components/sheet/sheet.stories.tsx +116 -10
  209. package/src/components/sheet/sheet.tsx +116 -29
  210. package/src/components/sidebar/sidebar.meta.md +37 -18
  211. package/src/components/sidebar/sidebar.stories.tsx +701 -29
  212. package/src/components/sidebar/sidebar.tsx +615 -142
  213. package/src/components/skeleton/skeleton.meta.md +4 -5
  214. package/src/components/skeleton/skeleton.stories.tsx +4 -4
  215. package/src/components/skeleton/skeleton.tsx +7 -7
  216. package/src/components/slider/slider.meta.md +57 -5
  217. package/src/components/slider/slider.stories.tsx +58 -6
  218. package/src/components/slider/slider.tsx +154 -13
  219. package/src/components/sonner/sonner.meta.md +58 -7
  220. package/src/components/sonner/sonner.stories.tsx +78 -5
  221. package/src/components/sonner/sonner.tsx +137 -8
  222. package/src/components/spinner/spinner.meta.md +62 -13
  223. package/src/components/spinner/spinner.stories.tsx +66 -14
  224. package/src/components/spinner/spinner.tsx +111 -9
  225. package/src/components/statistic/statistic.meta.md +7 -2
  226. package/src/components/statistic/statistic.stories.tsx +3 -7
  227. package/src/components/statistic/statistic.tsx +5 -6
  228. package/src/components/steps/steps.meta.md +18 -4
  229. package/src/components/steps/steps.stories.tsx +43 -3
  230. package/src/components/steps/steps.tsx +15 -12
  231. package/src/components/switch/switch.meta.md +51 -5
  232. package/src/components/switch/switch.stories.tsx +6 -6
  233. package/src/components/switch/switch.tsx +109 -41
  234. package/src/components/table/table.meta.md +17 -6
  235. package/src/components/table/table.stories.tsx +10 -5
  236. package/src/components/table/table.tsx +4 -4
  237. package/src/components/tabs/tabs.meta.md +38 -25
  238. package/src/components/tabs/tabs.stories.tsx +111 -25
  239. package/src/components/tabs/tabs.tsx +125 -54
  240. package/src/components/tag/tag.meta.md +105 -40
  241. package/src/components/tag/tag.stories.tsx +189 -16
  242. package/src/components/tag/tag.tsx +222 -21
  243. package/src/components/textarea/textarea.meta.md +35 -19
  244. package/src/components/textarea/textarea.stories.tsx +32 -6
  245. package/src/components/textarea/textarea.tsx +33 -9
  246. package/src/components/time-picker/time-picker.meta.md +124 -32
  247. package/src/components/time-picker/time-picker.stories.tsx +85 -15
  248. package/src/components/time-picker/time-picker.tsx +913 -61
  249. package/src/components/timeline/timeline.meta.md +14 -6
  250. package/src/components/timeline/timeline.stories.tsx +37 -7
  251. package/src/components/timeline/timeline.tsx +35 -14
  252. package/src/components/toggle/toggle.meta.md +5 -4
  253. package/src/components/toggle/toggle.stories.tsx +4 -4
  254. package/src/components/toggle/toggle.tsx +4 -3
  255. package/src/components/toggle-group/toggle-group.meta.md +5 -4
  256. package/src/components/toggle-group/toggle-group.stories.tsx +3 -3
  257. package/src/components/toggle-group/toggle-group.tsx +2 -2
  258. package/src/components/tooltip/tooltip.meta.md +55 -5
  259. package/src/components/tooltip/tooltip.stories.tsx +42 -5
  260. package/src/components/tooltip/tooltip.tsx +81 -21
  261. package/src/components/tour/tour.meta.md +9 -4
  262. package/src/components/tour/tour.stories.tsx +3 -3
  263. package/src/components/tour/tour.tsx +4 -4
  264. package/src/components/transfer/transfer.meta.md +11 -6
  265. package/src/components/transfer/transfer.stories.tsx +4 -8
  266. package/src/components/transfer/transfer.tsx +28 -21
  267. package/src/components/tree/tree.meta.md +63 -5
  268. package/src/components/tree/tree.stories.tsx +31 -12
  269. package/src/components/tree/tree.tsx +9 -8
  270. package/src/components/tree-select/tree-select.meta.md +59 -8
  271. package/src/components/tree-select/tree-select.stories.tsx +3 -3
  272. package/src/components/tree-select/tree-select.tsx +42 -7
  273. package/src/components/typography/typography.meta.md +61 -14
  274. package/src/components/typography/typography.stories.tsx +12 -11
  275. package/src/components/typography/typography.tsx +43 -28
  276. package/src/components/upload/upload.meta.md +49 -4
  277. package/src/components/upload/upload.stories.tsx +72 -12
  278. package/src/components/upload/upload.tsx +170 -37
  279. package/src/components/watermark/watermark.meta.md +7 -2
  280. package/src/components/watermark/watermark.stories.tsx +101 -9
  281. package/src/components/watermark/watermark.tsx +1 -0
  282. package/src/hooks/use-breakpoint.ts +117 -0
  283. package/src/hooks/use-debounce-callback.ts +52 -0
  284. package/src/hooks/use-mobile.ts +23 -0
  285. package/src/stories/theme-tokens.stories.tsx +747 -0
  286. package/src/utils/trigger-input.ts +53 -0
  287. package/src/components/button-group/button-group.meta.md +0 -92
  288. package/src/components/button-group/button-group.stories.tsx +0 -90
  289. package/src/components/button-group/button-group.tsx +0 -75
  290. package/src/components/combobox/combobox.meta.md +0 -93
  291. package/src/components/combobox/combobox.stories.tsx +0 -55
  292. package/src/components/combobox/combobox.tsx +0 -130
  293. package/src/components/space/space.meta.md +0 -94
  294. package/src/components/space/space.stories.tsx +0 -94
  295. 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,14 +6,14 @@ 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: {
13
13
  docs: {
14
14
  description: {
15
15
  component:
16
- '可拖拽分栏 — 编辑器 / 桌面应用风格(VS Code、Figma)。基于 react-resizable-panels,支持横/纵向、嵌套、min/max 限制、握把可视化。OpenTrek tokens 适配。',
16
+ '可拖拽分栏 — 编辑器 / 桌面应用风格(VS Code、Figma)。基于 react-resizable-panels,支持横/纵向、嵌套、min/max 限制、握把可视化。',
17
17
  },
18
18
  },
19
19
  },
@@ -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}
@@ -4,10 +4,11 @@ name: Result
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
- # Result
11
+ # Result 结果页
11
12
 
12
13
  结果页 — antd 独有补足。**整页级反馈**:操作成功、失败、404、403、500 等场景的居中状态页(图标 + 标题 + 副标题 + 操作区)。
13
14
 
@@ -24,6 +25,8 @@ package: "@teamix-evo/ui"
24
25
  - 短暂消息 → `Sonner`
25
26
  - 阻断式确认 → `AlertDialog`
26
27
 
28
+ ## Props
29
+
27
30
  <!-- auto:props:begin -->
28
31
  | 名称 | 类型 | 默认值 | 必填 | 说明 |
29
32
  | --- | --- | --- | --- | --- |
@@ -34,6 +37,8 @@ package: "@teamix-evo/ui"
34
37
  | `extra` | `React.ReactNode` | – | – | 操作区(放 Button)。 |
35
38
  <!-- auto:props:end -->
36
39
 
40
+ ## 依赖
41
+
37
42
  <!-- auto:deps:begin -->
38
43
  ### 同库依赖
39
44
 
@@ -1,16 +1,16 @@
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: {
10
10
  docs: {
11
11
  description: {
12
12
  component:
13
- '结果页 — 整页级反馈(成功 / 失败 / 404 / 403 / 500)。图标 + 标题 + 副标题 + 操作区,自动配色。OpenTrek tokens 适配,等价 antd Result。',
13
+ '结果页 — 整页级反馈(成功 / 失败 / 404 / 403 / 500)。图标 + 标题 + 副标题 + 操作区,自动配色。等价 antd Result。',
14
14
  },
15
15
  },
16
16
  },
@@ -62,10 +62,6 @@ export const NotFound: Story = {
62
62
  export const Forbidden: Story = {
63
63
  parameters: { controls: { disable: true } },
64
64
  render: () => (
65
- <Result
66
- status="403"
67
- title="无权访问"
68
- subTitle="联系管理员申请访问权限。"
69
- />
65
+ <Result status="403" title="无权访问" subTitle="联系管理员申请访问权限。" />
70
66
  ),
71
67
  };
@@ -1,20 +1,22 @@
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
- success: { Icon: CheckCircle2, color: 'text-emerald-500' },
16
+ success: { Icon: CheckCircle2, color: 'text-success' },
15
17
  error: { Icon: XCircle, color: 'text-destructive' },
16
- info: { Icon: Info, color: 'text-blue-500' },
17
- warning: { Icon: AlertCircle, color: 'text-amber-500' },
18
+ info: { Icon: Info, color: 'text-info' },
19
+ warning: { Icon: AlertCircle, color: 'text-warning' },
18
20
  '404': { Icon: AlertCircle, color: 'text-muted-foreground' },
19
21
  '403': { Icon: AlertCircle, color: 'text-muted-foreground' },
20
22
  '500': { Icon: AlertCircle, color: 'text-destructive' },
@@ -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}
@@ -1,13 +1,14 @@
1
1
  ---
2
2
  id: scroll-area
3
3
  name: ScrollArea
4
+ displayName: 滚动区域
4
5
  type: component
5
- category: layout
6
+ category: deprecated
6
7
  since: 0.1.0
7
- package: "@teamix-evo/ui"
8
+ package: '@teamix-evo/ui'
8
9
  ---
9
10
 
10
- # ScrollArea
11
+ # ScrollArea 滚动区域
11
12
 
12
13
  自定义滚动容器 — Radix ScrollArea。**shadcn-only**(antd 用原生滚动)。
13
14
  **核心价值**:跨浏览器一致的滚动条样式 + 触屏友好 + 自动隐藏 thumb。
@@ -1,10 +1,18 @@
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
+ parameters: {
9
+ docs: {
10
+ description: {
11
+ component:
12
+ '⚠️ **已废弃** — 仅 Storybook 留档,不通过 manifest 对外发布。\n\n自定义滚动容器 — 基于 Radix ScrollArea,跨浏览器一致的滚动条样式 + 触屏友好 + 自动隐藏 thumb。shadcn 专有,antd 用原生滚动。',
13
+ },
14
+ },
15
+ },
8
16
  };
9
17
 
10
18
  export default meta;
@@ -12,7 +20,7 @@ type Story = StoryObj<typeof ScrollArea>;
12
20
 
13
21
  export const Vertical: Story = {
14
22
  render: () => (
15
- <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">
16
24
  {Array.from({ length: 50 }).map((_, i) => (
17
25
  <div key={i} className="py-1 text-sm">
18
26
  第 {i + 1} 行
@@ -24,7 +32,7 @@ export const Vertical: Story = {
24
32
 
25
33
  export const Horizontal: Story = {
26
34
  render: () => (
27
- <ScrollArea className="w-96 whitespace-nowrap rounded-md border">
35
+ <ScrollArea className="w-96 whitespace-nowrap rounded-md border border-border">
28
36
  <div className="flex w-max gap-4 p-4">
29
37
  {Array.from({ length: 12 }).map((_, i) => (
30
38
  <div
@@ -15,7 +15,7 @@ const ScrollArea = React.forwardRef<
15
15
  className={cn('relative overflow-hidden', className)}
16
16
  {...props}
17
17
  >
18
- <ScrollAreaPrimitive.Viewport className="size-full rounded-[inherit]">
18
+ <ScrollAreaPrimitive.Viewport className="size-full rounded-inherit">
19
19
  {children}
20
20
  </ScrollAreaPrimitive.Viewport>
21
21
  <ScrollBar />
@@ -36,9 +36,9 @@ const ScrollBar = React.forwardRef<
36
36
  className={cn(
37
37
  'flex touch-none select-none transition-colors',
38
38
  orientation === 'vertical' &&
39
- 'h-full w-2.5 border-l border-l-transparent p-[1px]',
39
+ 'h-full w-2.5 border-l border-l-transparent p-px',
40
40
  orientation === 'horizontal' &&
41
- 'h-2.5 flex-col border-t border-t-transparent p-[1px]',
41
+ 'h-2.5 flex-col border-t border-t-transparent p-px',
42
42
  className,
43
43
  )}
44
44
  {...props}
@@ -2,15 +2,18 @@
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
- package: "@teamix-evo/ui"
7
+ package: '@teamix-evo/ui'
8
+ displayName: 分段控制器
8
9
  ---
9
10
 
10
- # Segmented
11
+ # Segmented 分段控制器
11
12
 
12
13
  分段控制器 — antd 独有补足。**等价 antd `Segmented`**(v5.0+)。视觉类似 iOS/macOS 系统 Segmented Control,强调**互斥单选 + 紧凑紧贴**(日 / 周 / 月、列表 / 网格、明 / 暗主题切换)。
13
14
 
15
+ > ⚠️ **后续废弃计划**(Task #10 后能力合并):本组件能力已被 `Tabs` 的 `variant="capsule"` + `size` 完全吸收。新项目推荐直接用 [`Tabs`](../tabs/tabs.meta.md) `variant="capsule"`。**本 entry 本轮不删**(防止存量业务 import 断裂),下一个 major 评估迁移进度后从 manifest 下架。
16
+
14
17
  ## When to use
15
18
 
16
19
  - 视图切换(列表 / 网格 / 时间轴)
@@ -30,7 +33,7 @@ package: "@teamix-evo/ui"
30
33
  | `value` | `string` | – | – | 受控 value。 |
31
34
  | `defaultValue` | `string` | – | – | uncontrolled 初值。 |
32
35
  | `onChange` | `(value: string) => void` | – | – | value 变化回调。 |
33
- | `size` | `'sm' \| 'default' \| 'lg'` | `"default"` | – | 尺寸。 |
36
+ | `size` | `'sm' \| 'md' \| 'default' \| 'lg'` | `"default"` | – | 尺寸。 |
34
37
  | `block` | `boolean` | `false` | – | 是否撑满父容器宽度(antd `block` 并集)。 |
35
38
  | `disabled` | `boolean` | – | – | 整组禁用。 |
36
39
  <!-- auto:props:end -->
@@ -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 互补(后者偏工具栏多选)。视觉走 OpenTrek tokens,所有样式来自 `@teamix-evo/design`,无 mock。',
14
+ '⚠️ **已废弃** — 仅 Storybook 留档,不通过 manifest 对外发布。\n\n分段控制器 — iOS / macOS 风格的紧凑互斥单选(视图切换、时间区间、主题档)。等价 antd `Segmented`(v5.0+),与 ToggleGroup 互补(后者偏工具栏多选)。',
15
15
  },
16
16
  },
17
17
  },
@@ -49,9 +49,17 @@ export const WithIcons: Story = {
49
49
  value={v}
50
50
  onChange={setV}
51
51
  options={[
52
- { value: 'grid', label: '网格', icon: <LayoutGrid className="size-4" /> },
52
+ {
53
+ value: 'grid',
54
+ label: '网格',
55
+ icon: <LayoutGrid className="size-4" />,
56
+ },
53
57
  { value: 'list', label: '列表', icon: <List className="size-4" /> },
54
- { value: 'cal', label: '日历', icon: <Calendar className="size-4" /> },
58
+ {
59
+ value: 'cal',
60
+ label: '日历',
61
+ icon: <Calendar className="size-4" />,
62
+ },
55
63
  ]}
56
64
  />
57
65
  );
@@ -79,9 +87,30 @@ export const Sizes: Story = {
79
87
  parameters: { controls: { disable: true } },
80
88
  render: () => (
81
89
  <div className="flex flex-col items-start gap-3">
82
- <Segmented size="sm" defaultValue="a" options={[{ value: 'a', label: 'A' }, { value: 'b', label: 'B' }]} />
83
- <Segmented size="default" defaultValue="a" options={[{ value: 'a', label: 'A' }, { value: 'b', label: 'B' }]} />
84
- <Segmented size="lg" defaultValue="a" options={[{ value: 'a', label: 'A' }, { value: 'b', label: 'B' }]} />
90
+ <Segmented
91
+ size="sm"
92
+ defaultValue="a"
93
+ options={[
94
+ { value: 'a', label: 'A' },
95
+ { value: 'b', label: 'B' },
96
+ ]}
97
+ />
98
+ <Segmented
99
+ size="default"
100
+ defaultValue="a"
101
+ options={[
102
+ { value: 'a', label: 'A' },
103
+ { value: 'b', label: 'B' },
104
+ ]}
105
+ />
106
+ <Segmented
107
+ size="lg"
108
+ defaultValue="a"
109
+ options={[
110
+ { value: 'a', label: 'A' },
111
+ { value: 'b', label: 'B' },
112
+ ]}
113
+ />
85
114
  </div>
86
115
  ),
87
116
  };
@@ -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
  );