@teamix-evo/ui 0.4.0 → 0.5.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 (511) hide show
  1. package/README.md +46 -50
  2. package/manifest.json +406 -653
  3. package/package.json +15 -34
  4. package/src/_design-system/theme-tokens/stories.tsx +1474 -0
  5. package/src/components/accordion/index.tsx +139 -0
  6. package/src/components/accordion/meta.md +162 -0
  7. package/src/components/accordion/stories.tsx +145 -0
  8. package/src/components/affix/index.tsx +149 -0
  9. package/src/components/affix/meta.md +23 -0
  10. package/src/components/affix/stories.tsx +70 -0
  11. package/src/components/alert/index.tsx +220 -0
  12. package/src/components/alert/meta.md +133 -0
  13. package/src/components/alert/stories.tsx +126 -0
  14. package/src/components/alert-dialog/index.tsx +282 -0
  15. package/src/components/alert-dialog/meta.md +86 -0
  16. package/src/components/alert-dialog/stories.tsx +163 -0
  17. package/src/components/avatar/index.tsx +159 -0
  18. package/src/components/avatar/meta.md +242 -0
  19. package/src/components/avatar/stories.tsx +241 -0
  20. package/src/components/badge/index.tsx +299 -0
  21. package/src/components/badge/meta.md +237 -0
  22. package/src/components/badge/stories.tsx +275 -0
  23. package/src/components/breadcrumb/index.tsx +137 -0
  24. package/src/components/breadcrumb/meta.md +64 -0
  25. package/src/components/breadcrumb/stories.tsx +86 -0
  26. package/src/components/button/index.tsx +202 -0
  27. package/src/components/button/meta.md +209 -0
  28. package/src/components/button/stories.tsx +215 -0
  29. package/src/components/button-group/index.tsx +211 -0
  30. package/src/components/button-group/meta.md +190 -0
  31. package/src/components/button-group/stories.tsx +182 -0
  32. package/src/components/calendar/index.tsx +240 -0
  33. package/src/components/calendar/meta.md +36 -0
  34. package/src/components/calendar/stories.tsx +36 -0
  35. package/src/components/card/index.tsx +262 -0
  36. package/src/components/card/meta.md +194 -0
  37. package/src/components/card/stories.tsx +202 -0
  38. package/src/components/carousel/index.tsx +481 -0
  39. package/src/components/carousel/meta.md +208 -0
  40. package/src/components/carousel/stories.tsx +271 -0
  41. package/src/components/cascader-select/index.tsx +308 -0
  42. package/src/components/cascader-select/meta.md +28 -0
  43. package/src/components/cascader-select/stories.tsx +118 -0
  44. package/src/components/checkbox/index.tsx +208 -0
  45. package/src/components/checkbox/meta.md +166 -0
  46. package/src/components/checkbox/stories.tsx +206 -0
  47. package/src/components/collapsible/index.tsx +72 -0
  48. package/src/components/collapsible/meta.md +87 -0
  49. package/src/components/collapsible/stories.tsx +97 -0
  50. package/src/components/color-picker/index.tsx +677 -0
  51. package/src/components/color-picker/meta.md +83 -0
  52. package/src/components/color-picker/stories.tsx +172 -0
  53. package/src/components/combobox/index.tsx +687 -0
  54. package/src/components/combobox/meta.md +83 -0
  55. package/src/components/combobox/stories.tsx +179 -0
  56. package/src/components/command/index.tsx +238 -0
  57. package/src/components/command/meta.md +48 -0
  58. package/src/components/command/stories.tsx +83 -0
  59. package/src/components/data-table/index.tsx +1537 -0
  60. package/src/components/data-table/meta.md +107 -0
  61. package/src/components/data-table/stories.tsx +1234 -0
  62. package/src/components/date-picker/index.tsx +1492 -0
  63. package/src/components/date-picker/meta.md +103 -0
  64. package/src/components/date-picker/stories.tsx +125 -0
  65. package/src/components/descriptions/index.tsx +535 -0
  66. package/src/components/descriptions/meta.md +104 -0
  67. package/src/components/descriptions/stories.tsx +389 -0
  68. package/src/components/dialog/index.tsx +255 -0
  69. package/src/components/dialog/meta.md +244 -0
  70. package/src/components/dialog/stories.tsx +330 -0
  71. package/src/components/dropdown-menu/index.tsx +301 -0
  72. package/src/components/dropdown-menu/meta.md +93 -0
  73. package/src/components/dropdown-menu/stories.tsx +124 -0
  74. package/src/components/empty/index.tsx +431 -0
  75. package/src/components/empty/meta.md +274 -0
  76. package/src/components/empty/stories.tsx +278 -0
  77. package/src/components/field/index.tsx +374 -0
  78. package/src/components/field/meta.md +283 -0
  79. package/src/components/field/stories.tsx +327 -0
  80. package/src/components/filter-bar/index.tsx +976 -0
  81. package/src/components/filter-bar/meta.md +57 -0
  82. package/src/components/filter-bar/stories.tsx +496 -0
  83. package/src/components/float-button/index.tsx +163 -0
  84. package/src/components/float-button/meta.md +73 -0
  85. package/src/components/float-button/stories.tsx +68 -0
  86. package/src/components/form/index.tsx +218 -0
  87. package/src/components/form/meta.md +16 -0
  88. package/src/components/form/stories.tsx +301 -0
  89. package/src/components/hover-card/index.tsx +103 -0
  90. package/src/components/hover-card/meta.md +71 -0
  91. package/src/components/hover-card/stories.tsx +107 -0
  92. package/src/components/icon/index.tsx +225 -0
  93. package/src/components/icon/meta.md +102 -0
  94. package/src/components/icon/stories.tsx +127 -0
  95. package/src/components/image/index.tsx +147 -0
  96. package/src/components/image/meta.md +55 -0
  97. package/src/components/image/stories.tsx +48 -0
  98. package/src/components/input/index.tsx +63 -0
  99. package/src/components/input/meta.md +57 -0
  100. package/src/components/input/stories.tsx +66 -0
  101. package/src/components/input-group/index.tsx +292 -0
  102. package/src/components/input-group/meta.md +108 -0
  103. package/src/components/input-group/stories.tsx +258 -0
  104. package/src/components/input-ip/index.tsx +288 -0
  105. package/src/components/input-ip/meta.md +48 -0
  106. package/src/components/input-ip/stories.tsx +69 -0
  107. package/src/components/input-number/index.tsx +360 -0
  108. package/src/components/input-number/meta.md +156 -0
  109. package/src/components/input-number/stories.tsx +187 -0
  110. package/src/components/item/index.tsx +368 -0
  111. package/src/components/item/meta.md +395 -0
  112. package/src/components/item/stories.tsx +432 -0
  113. package/src/components/label/index.tsx +44 -0
  114. package/src/components/label/meta.md +68 -0
  115. package/src/components/label/stories.tsx +64 -0
  116. package/src/components/mentions/index.tsx +369 -0
  117. package/src/components/mentions/meta.md +118 -0
  118. package/src/components/mentions/stories.tsx +153 -0
  119. package/src/components/menubar/index.tsx +313 -0
  120. package/src/components/menubar/meta.md +52 -0
  121. package/src/components/menubar/stories.tsx +99 -0
  122. package/src/components/navigation-menu/index.tsx +216 -0
  123. package/src/components/navigation-menu/meta.md +66 -0
  124. package/src/components/navigation-menu/stories.tsx +137 -0
  125. package/src/components/page-header/index.tsx +218 -0
  126. package/src/components/page-header/meta.md +211 -0
  127. package/src/components/page-header/stories.tsx +290 -0
  128. package/src/components/page-shell/index.tsx +119 -0
  129. package/src/components/page-shell/meta.md +115 -0
  130. package/src/components/page-shell/stories.tsx +154 -0
  131. package/src/components/pagination/index.tsx +580 -0
  132. package/src/components/pagination/meta.md +39 -0
  133. package/src/components/pagination/stories.tsx +319 -0
  134. package/src/components/popconfirm/index.tsx +477 -0
  135. package/src/components/popconfirm/meta.md +164 -0
  136. package/src/components/popconfirm/stories.tsx +231 -0
  137. package/src/components/popover/index.tsx +181 -0
  138. package/src/components/popover/meta.md +97 -0
  139. package/src/components/popover/stories.tsx +169 -0
  140. package/src/components/progress/index.tsx +176 -0
  141. package/src/components/progress/meta.md +95 -0
  142. package/src/components/progress/stories.tsx +115 -0
  143. package/src/components/radio-group/index.tsx +78 -0
  144. package/src/components/radio-group/meta.md +137 -0
  145. package/src/components/radio-group/stories.tsx +285 -0
  146. package/src/components/rate/index.tsx +284 -0
  147. package/src/components/rate/meta.md +63 -0
  148. package/src/components/rate/stories.tsx +107 -0
  149. package/src/components/resizable/index.tsx +122 -0
  150. package/src/components/resizable/meta.md +142 -0
  151. package/src/components/resizable/stories.tsx +105 -0
  152. package/src/components/scroll-area/index.tsx +83 -0
  153. package/src/components/scroll-area/meta.md +85 -0
  154. package/src/components/scroll-area/stories.tsx +82 -0
  155. package/src/components/select/index.tsx +325 -0
  156. package/src/components/select/meta.md +183 -0
  157. package/src/components/select/stories.tsx +210 -0
  158. package/src/components/separator/index.tsx +51 -0
  159. package/src/components/separator/meta.md +68 -0
  160. package/src/components/separator/stories.tsx +53 -0
  161. package/src/components/sheet/index.tsx +293 -0
  162. package/src/components/sheet/meta.md +226 -0
  163. package/src/components/sheet/stories.tsx +405 -0
  164. package/src/components/sidebar/index.tsx +715 -0
  165. package/src/components/sidebar/meta.md +14 -0
  166. package/src/components/sidebar/{sidebar.stories.tsx → stories.tsx} +250 -330
  167. package/src/components/skeleton/index.tsx +415 -0
  168. package/src/components/skeleton/meta.md +210 -0
  169. package/src/components/skeleton/stories.tsx +197 -0
  170. package/src/components/slider/index.tsx +222 -0
  171. package/src/components/slider/meta.md +125 -0
  172. package/src/components/slider/stories.tsx +109 -0
  173. package/src/components/sonner/index.tsx +149 -0
  174. package/src/components/sonner/meta.md +156 -0
  175. package/src/components/sonner/stories.tsx +285 -0
  176. package/src/components/spinner/index.tsx +335 -0
  177. package/src/components/spinner/meta.md +172 -0
  178. package/src/components/spinner/stories.tsx +197 -0
  179. package/src/components/statistic/{statistic.tsx → index.tsx} +25 -26
  180. package/src/components/statistic/meta.md +94 -0
  181. package/src/components/statistic/stories.tsx +85 -0
  182. package/src/components/steps/index.tsx +500 -0
  183. package/src/components/steps/meta.md +245 -0
  184. package/src/components/steps/stories.tsx +287 -0
  185. package/src/components/switch/index.tsx +175 -0
  186. package/src/components/switch/meta.md +107 -0
  187. package/src/components/switch/stories.tsx +154 -0
  188. package/src/components/table/index.tsx +350 -0
  189. package/src/components/table/meta.md +148 -0
  190. package/src/components/table/stories.tsx +189 -0
  191. package/src/components/tabs/index.tsx +379 -0
  192. package/src/components/tabs/meta.md +244 -0
  193. package/src/components/tabs/stories.tsx +312 -0
  194. package/src/components/tag/index.tsx +774 -0
  195. package/src/components/tag/meta.md +256 -0
  196. package/src/components/tag/stories.tsx +431 -0
  197. package/src/components/textarea/index.tsx +62 -0
  198. package/src/components/textarea/meta.md +77 -0
  199. package/src/components/textarea/stories.tsx +112 -0
  200. package/src/components/time-picker/index.tsx +887 -0
  201. package/src/components/time-picker/meta.md +102 -0
  202. package/src/components/time-picker/stories.tsx +125 -0
  203. package/src/components/timeline/index.tsx +422 -0
  204. package/src/components/timeline/meta.md +352 -0
  205. package/src/components/timeline/stories.tsx +369 -0
  206. package/src/components/toggle/index.tsx +74 -0
  207. package/src/components/toggle/meta.md +76 -0
  208. package/src/components/toggle/stories.tsx +66 -0
  209. package/src/components/toggle-group/index.tsx +167 -0
  210. package/src/components/toggle-group/meta.md +141 -0
  211. package/src/components/toggle-group/stories.tsx +124 -0
  212. package/src/components/tooltip/index.tsx +144 -0
  213. package/src/components/tooltip/meta.md +186 -0
  214. package/src/components/tooltip/stories.tsx +212 -0
  215. package/src/components/transfer/index.tsx +639 -0
  216. package/src/components/transfer/meta.md +76 -0
  217. package/src/components/transfer/stories.tsx +221 -0
  218. package/src/components/tree/index.tsx +764 -0
  219. package/src/components/tree/meta.md +96 -0
  220. package/src/components/tree/stories.tsx +385 -0
  221. package/src/components/tree/utils.ts +269 -0
  222. package/src/components/tree-select/index.tsx +400 -0
  223. package/src/components/tree-select/meta.md +78 -0
  224. package/src/components/tree-select/stories.tsx +234 -0
  225. package/src/components/typography/index.tsx +290 -0
  226. package/src/components/typography/meta.md +151 -0
  227. package/src/components/typography/stories.tsx +151 -0
  228. package/src/components/upload/index.tsx +858 -0
  229. package/src/components/upload/meta.md +122 -0
  230. package/src/components/upload/stories.tsx +261 -0
  231. package/src/components/watermark/index.tsx +152 -0
  232. package/src/components/watermark/meta.md +67 -0
  233. package/src/components/watermark/stories.tsx +59 -0
  234. package/src/hooks/use-mobile.ts +9 -11
  235. package/src/lib/color.ts +243 -0
  236. package/src/{utils/cn.ts → lib/utils.ts} +1 -1
  237. package/src/components/accordion/accordion.meta.md +0 -88
  238. package/src/components/accordion/accordion.stories.tsx +0 -72
  239. package/src/components/accordion/accordion.tsx +0 -154
  240. package/src/components/affix/affix.meta.md +0 -98
  241. package/src/components/affix/affix.stories.tsx +0 -134
  242. package/src/components/affix/affix.tsx +0 -167
  243. package/src/components/alert/alert.meta.md +0 -132
  244. package/src/components/alert/alert.stories.tsx +0 -138
  245. package/src/components/alert/alert.tsx +0 -179
  246. package/src/components/alert-dialog/alert-dialog.meta.md +0 -152
  247. package/src/components/alert-dialog/alert-dialog.stories.tsx +0 -223
  248. package/src/components/alert-dialog/alert-dialog.tsx +0 -183
  249. package/src/components/anchor/anchor.meta.md +0 -92
  250. package/src/components/anchor/anchor.stories.tsx +0 -74
  251. package/src/components/anchor/anchor.tsx +0 -130
  252. package/src/components/app/app.meta.md +0 -91
  253. package/src/components/app/app.stories.tsx +0 -64
  254. package/src/components/app/app.tsx +0 -58
  255. package/src/components/aspect-ratio/aspect-ratio.meta.md +0 -82
  256. package/src/components/aspect-ratio/aspect-ratio.stories.tsx +0 -59
  257. package/src/components/aspect-ratio/aspect-ratio.tsx +0 -22
  258. package/src/components/auto-complete/auto-complete.meta.md +0 -110
  259. package/src/components/auto-complete/auto-complete.stories.tsx +0 -136
  260. package/src/components/auto-complete/auto-complete.tsx +0 -253
  261. package/src/components/avatar/avatar.meta.md +0 -93
  262. package/src/components/avatar/avatar.stories.tsx +0 -98
  263. package/src/components/avatar/avatar.tsx +0 -127
  264. package/src/components/badge/badge.meta.md +0 -120
  265. package/src/components/badge/badge.stories.tsx +0 -153
  266. package/src/components/badge/badge.tsx +0 -204
  267. package/src/components/breadcrumb/breadcrumb.meta.md +0 -127
  268. package/src/components/breadcrumb/breadcrumb.stories.tsx +0 -207
  269. package/src/components/breadcrumb/breadcrumb.tsx +0 -136
  270. package/src/components/button/button.meta.md +0 -335
  271. package/src/components/button/button.stories.tsx +0 -743
  272. package/src/components/button/button.tsx +0 -466
  273. package/src/components/calendar/calendar.meta.md +0 -128
  274. package/src/components/calendar/calendar.stories.tsx +0 -68
  275. package/src/components/calendar/calendar.tsx +0 -172
  276. package/src/components/card/card.meta.md +0 -139
  277. package/src/components/card/card.stories.tsx +0 -151
  278. package/src/components/card/card.tsx +0 -306
  279. package/src/components/carousel/carousel.meta.md +0 -118
  280. package/src/components/carousel/carousel.stories.tsx +0 -89
  281. package/src/components/carousel/carousel.tsx +0 -224
  282. package/src/components/cascader/cascader.meta.md +0 -140
  283. package/src/components/cascader/cascader.stories.tsx +0 -120
  284. package/src/components/cascader/cascader.tsx +0 -548
  285. package/src/components/checkbox/checkbox.meta.md +0 -167
  286. package/src/components/checkbox/checkbox.stories.tsx +0 -288
  287. package/src/components/checkbox/checkbox.tsx +0 -195
  288. package/src/components/collapsible/collapsible.meta.md +0 -88
  289. package/src/components/collapsible/collapsible.stories.tsx +0 -43
  290. package/src/components/collapsible/collapsible.tsx +0 -105
  291. package/src/components/color-picker/color-picker.meta.md +0 -89
  292. package/src/components/color-picker/color-picker.stories.tsx +0 -159
  293. package/src/components/color-picker/color-picker.tsx +0 -171
  294. package/src/components/command/command.meta.md +0 -120
  295. package/src/components/command/command.stories.tsx +0 -59
  296. package/src/components/command/command.tsx +0 -158
  297. package/src/components/context-menu/context-menu.meta.md +0 -93
  298. package/src/components/context-menu/context-menu.stories.tsx +0 -54
  299. package/src/components/context-menu/context-menu.tsx +0 -204
  300. package/src/components/data-table/data-table.meta.md +0 -150
  301. package/src/components/data-table/data-table.stories.tsx +0 -132
  302. package/src/components/data-table/data-table.tsx +0 -185
  303. package/src/components/date-picker/date-picker.meta.md +0 -175
  304. package/src/components/date-picker/date-picker.stories.tsx +0 -108
  305. package/src/components/date-picker/date-picker.tsx +0 -1554
  306. package/src/components/descriptions/descriptions.meta.md +0 -83
  307. package/src/components/descriptions/descriptions.stories.tsx +0 -60
  308. package/src/components/descriptions/descriptions.tsx +0 -137
  309. package/src/components/dialog/dialog.meta.md +0 -168
  310. package/src/components/dialog/dialog.stories.tsx +0 -255
  311. package/src/components/dialog/dialog.tsx +0 -180
  312. package/src/components/dialog/imperative.tsx +0 -252
  313. package/src/components/drawer/drawer.meta.md +0 -95
  314. package/src/components/drawer/drawer.stories.tsx +0 -71
  315. package/src/components/drawer/drawer.tsx +0 -23
  316. package/src/components/dropdown-menu/dropdown-menu.meta.md +0 -171
  317. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -198
  318. package/src/components/dropdown-menu/dropdown-menu.tsx +0 -209
  319. package/src/components/ellipsis/ellipsis.meta.md +0 -87
  320. package/src/components/ellipsis/ellipsis.stories.tsx +0 -72
  321. package/src/components/ellipsis/ellipsis.tsx +0 -153
  322. package/src/components/empty/empty.meta.md +0 -86
  323. package/src/components/empty/empty.stories.tsx +0 -46
  324. package/src/components/empty/empty.tsx +0 -54
  325. package/src/components/field/field.meta.md +0 -154
  326. package/src/components/field/field.stories.tsx +0 -497
  327. package/src/components/field/field.tsx +0 -392
  328. package/src/components/filter-bar/filter-bar.meta.md +0 -92
  329. package/src/components/filter-bar/filter-bar.stories.tsx +0 -1086
  330. package/src/components/filter-bar/filter-bar.tsx +0 -568
  331. package/src/components/flex/flex.meta.md +0 -142
  332. package/src/components/flex/flex.stories.tsx +0 -199
  333. package/src/components/flex/flex.tsx +0 -145
  334. package/src/components/float-button/float-button.meta.md +0 -92
  335. package/src/components/float-button/float-button.stories.tsx +0 -80
  336. package/src/components/float-button/float-button.tsx +0 -143
  337. package/src/components/form/form.meta.md +0 -153
  338. package/src/components/form/form.stories.tsx +0 -472
  339. package/src/components/form/form.tsx +0 -260
  340. package/src/components/grid/grid.meta.md +0 -92
  341. package/src/components/grid/grid.stories.tsx +0 -101
  342. package/src/components/grid/grid.tsx +0 -130
  343. package/src/components/hover-card/hover-card.meta.md +0 -103
  344. package/src/components/hover-card/hover-card.stories.tsx +0 -97
  345. package/src/components/hover-card/hover-card.tsx +0 -67
  346. package/src/components/icon/DEVELOPMENT.md +0 -809
  347. package/src/components/icon/icon.meta.md +0 -170
  348. package/src/components/icon/icon.stories.tsx +0 -344
  349. package/src/components/icon/icon.tsx +0 -248
  350. package/src/components/image/image.meta.md +0 -99
  351. package/src/components/image/image.stories.tsx +0 -55
  352. package/src/components/image/image.tsx +0 -140
  353. package/src/components/input/input.meta.md +0 -115
  354. package/src/components/input/input.stories.tsx +0 -144
  355. package/src/components/input/input.tsx +0 -212
  356. package/src/components/input-group/input-group.meta.md +0 -124
  357. package/src/components/input-group/input-group.stories.tsx +0 -121
  358. package/src/components/input-group/input-group.tsx +0 -143
  359. package/src/components/input-number/input-number.meta.md +0 -148
  360. package/src/components/input-number/input-number.stories.tsx +0 -125
  361. package/src/components/input-number/input-number.tsx +0 -283
  362. package/src/components/input-otp/input-otp.meta.md +0 -106
  363. package/src/components/input-otp/input-otp.stories.tsx +0 -65
  364. package/src/components/input-otp/input-otp.tsx +0 -97
  365. package/src/components/item/item.meta.md +0 -121
  366. package/src/components/item/item.stories.tsx +0 -116
  367. package/src/components/item/item.tsx +0 -172
  368. package/src/components/kbd/kbd.meta.md +0 -94
  369. package/src/components/kbd/kbd.stories.tsx +0 -70
  370. package/src/components/kbd/kbd.tsx +0 -86
  371. package/src/components/label/label.meta.md +0 -99
  372. package/src/components/label/label.stories.tsx +0 -145
  373. package/src/components/label/label.tsx +0 -138
  374. package/src/components/masonry/masonry.meta.md +0 -90
  375. package/src/components/masonry/masonry.stories.tsx +0 -68
  376. package/src/components/masonry/masonry.tsx +0 -60
  377. package/src/components/mentions/mentions.meta.md +0 -119
  378. package/src/components/mentions/mentions.stories.tsx +0 -189
  379. package/src/components/mentions/mentions.tsx +0 -243
  380. package/src/components/menubar/menubar.meta.md +0 -118
  381. package/src/components/menubar/menubar.stories.tsx +0 -141
  382. package/src/components/menubar/menubar.tsx +0 -232
  383. package/src/components/native-select/native-select.meta.md +0 -93
  384. package/src/components/native-select/native-select.stories.tsx +0 -83
  385. package/src/components/native-select/native-select.tsx +0 -54
  386. package/src/components/navigation-menu/navigation-menu.meta.md +0 -118
  387. package/src/components/navigation-menu/navigation-menu.stories.tsx +0 -215
  388. package/src/components/navigation-menu/navigation-menu.tsx +0 -129
  389. package/src/components/notification/notification.meta.md +0 -133
  390. package/src/components/notification/notification.stories.tsx +0 -98
  391. package/src/components/notification/notification.tsx +0 -99
  392. package/src/components/page-header/DEVELOPMENT.md +0 -842
  393. package/src/components/page-header/page-header.meta.md +0 -210
  394. package/src/components/page-header/page-header.stories.tsx +0 -428
  395. package/src/components/page-header/page-header.tsx +0 -284
  396. package/src/components/page-shell/page-shell.meta.md +0 -116
  397. package/src/components/page-shell/page-shell.stories.tsx +0 -149
  398. package/src/components/page-shell/page-shell.tsx +0 -115
  399. package/src/components/pagination/pagination.meta.md +0 -230
  400. package/src/components/pagination/pagination.stories.tsx +0 -284
  401. package/src/components/pagination/pagination.tsx +0 -567
  402. package/src/components/popconfirm/popconfirm.meta.md +0 -114
  403. package/src/components/popconfirm/popconfirm.stories.tsx +0 -75
  404. package/src/components/popconfirm/popconfirm.tsx +0 -134
  405. package/src/components/popover/popover.meta.md +0 -154
  406. package/src/components/popover/popover.stories.tsx +0 -158
  407. package/src/components/popover/popover.tsx +0 -104
  408. package/src/components/progress/progress.meta.md +0 -118
  409. package/src/components/progress/progress.stories.tsx +0 -75
  410. package/src/components/progress/progress.tsx +0 -203
  411. package/src/components/radio-group/radio-group.meta.md +0 -175
  412. package/src/components/radio-group/radio-group.stories.tsx +0 -113
  413. package/src/components/radio-group/radio-group.tsx +0 -209
  414. package/src/components/rate/rate.meta.md +0 -118
  415. package/src/components/rate/rate.stories.tsx +0 -89
  416. package/src/components/rate/rate.tsx +0 -180
  417. package/src/components/resizable/resizable.meta.md +0 -95
  418. package/src/components/resizable/resizable.stories.tsx +0 -104
  419. package/src/components/resizable/resizable.tsx +0 -56
  420. package/src/components/result/result.meta.md +0 -95
  421. package/src/components/result/result.stories.tsx +0 -67
  422. package/src/components/result/result.tsx +0 -100
  423. package/src/components/scroll-area/scroll-area.meta.md +0 -85
  424. package/src/components/scroll-area/scroll-area.stories.tsx +0 -49
  425. package/src/components/scroll-area/scroll-area.tsx +0 -51
  426. package/src/components/segmented/segmented.meta.md +0 -106
  427. package/src/components/segmented/segmented.stories.tsx +0 -130
  428. package/src/components/segmented/segmented.tsx +0 -146
  429. package/src/components/select/select.meta.md +0 -255
  430. package/src/components/select/select.stories.tsx +0 -275
  431. package/src/components/select/select.tsx +0 -735
  432. package/src/components/separator/separator.meta.md +0 -75
  433. package/src/components/separator/separator.stories.tsx +0 -71
  434. package/src/components/separator/separator.tsx +0 -100
  435. package/src/components/sheet/sheet.meta.md +0 -113
  436. package/src/components/sheet/sheet.stories.tsx +0 -188
  437. package/src/components/sheet/sheet.tsx +0 -226
  438. package/src/components/sidebar/sidebar.meta.md +0 -151
  439. package/src/components/sidebar/sidebar.tsx +0 -853
  440. package/src/components/skeleton/skeleton.meta.md +0 -94
  441. package/src/components/skeleton/skeleton.stories.tsx +0 -79
  442. package/src/components/skeleton/skeleton.tsx +0 -144
  443. package/src/components/slider/slider.meta.md +0 -146
  444. package/src/components/slider/slider.stories.tsx +0 -121
  445. package/src/components/slider/slider.tsx +0 -227
  446. package/src/components/sonner/sonner.meta.md +0 -147
  447. package/src/components/sonner/sonner.stories.tsx +0 -164
  448. package/src/components/sonner/sonner.tsx +0 -169
  449. package/src/components/spinner/spinner.meta.md +0 -125
  450. package/src/components/spinner/spinner.stories.tsx +0 -123
  451. package/src/components/spinner/spinner.tsx +0 -166
  452. package/src/components/statistic/statistic.meta.md +0 -104
  453. package/src/components/statistic/statistic.stories.tsx +0 -67
  454. package/src/components/steps/steps.meta.md +0 -116
  455. package/src/components/steps/steps.stories.tsx +0 -115
  456. package/src/components/steps/steps.tsx +0 -173
  457. package/src/components/switch/switch.meta.md +0 -138
  458. package/src/components/switch/switch.stories.tsx +0 -75
  459. package/src/components/switch/switch.tsx +0 -169
  460. package/src/components/table/table.meta.md +0 -106
  461. package/src/components/table/table.stories.tsx +0 -80
  462. package/src/components/table/table.tsx +0 -124
  463. package/src/components/tabs/tabs.meta.md +0 -111
  464. package/src/components/tabs/tabs.stories.tsx +0 -156
  465. package/src/components/tabs/tabs.tsx +0 -190
  466. package/src/components/tag/tag.meta.md +0 -159
  467. package/src/components/tag/tag.stories.tsx +0 -250
  468. package/src/components/tag/tag.tsx +0 -386
  469. package/src/components/textarea/textarea.meta.md +0 -99
  470. package/src/components/textarea/textarea.stories.tsx +0 -89
  471. package/src/components/textarea/textarea.tsx +0 -137
  472. package/src/components/time-picker/time-picker.meta.md +0 -175
  473. package/src/components/time-picker/time-picker.stories.tsx +0 -129
  474. package/src/components/time-picker/time-picker.tsx +0 -946
  475. package/src/components/timeline/timeline.meta.md +0 -110
  476. package/src/components/timeline/timeline.stories.tsx +0 -134
  477. package/src/components/timeline/timeline.tsx +0 -168
  478. package/src/components/toggle/toggle.meta.md +0 -89
  479. package/src/components/toggle/toggle.stories.tsx +0 -66
  480. package/src/components/toggle/toggle.tsx +0 -54
  481. package/src/components/toggle-group/toggle-group.meta.md +0 -91
  482. package/src/components/toggle-group/toggle-group.stories.tsx +0 -83
  483. package/src/components/toggle-group/toggle-group.tsx +0 -78
  484. package/src/components/tooltip/tooltip.meta.md +0 -149
  485. package/src/components/tooltip/tooltip.stories.tsx +0 -108
  486. package/src/components/tooltip/tooltip.tsx +0 -153
  487. package/src/components/tour/tour.meta.md +0 -121
  488. package/src/components/tour/tour.stories.tsx +0 -66
  489. package/src/components/tour/tour.tsx +0 -242
  490. package/src/components/transfer/transfer.meta.md +0 -95
  491. package/src/components/transfer/transfer.stories.tsx +0 -64
  492. package/src/components/transfer/transfer.tsx +0 -258
  493. package/src/components/tree/tree.meta.md +0 -169
  494. package/src/components/tree/tree.stories.tsx +0 -128
  495. package/src/components/tree/tree.tsx +0 -368
  496. package/src/components/tree-select/tree-select.meta.md +0 -151
  497. package/src/components/tree-select/tree-select.stories.tsx +0 -80
  498. package/src/components/tree-select/tree-select.tsx +0 -206
  499. package/src/components/typography/typography.meta.md +0 -149
  500. package/src/components/typography/typography.stories.tsx +0 -116
  501. package/src/components/typography/typography.tsx +0 -260
  502. package/src/components/upload/upload.meta.md +0 -156
  503. package/src/components/upload/upload.stories.tsx +0 -135
  504. package/src/components/upload/upload.tsx +0 -398
  505. package/src/components/watermark/watermark.meta.md +0 -100
  506. package/src/components/watermark/watermark.stories.tsx +0 -170
  507. package/src/components/watermark/watermark.tsx +0 -166
  508. package/src/hooks/use-breakpoint.ts +0 -117
  509. package/src/hooks/use-debounce-callback.ts +0 -52
  510. package/src/stories/theme-tokens.stories.tsx +0 -747
  511. package/src/utils/trigger-input.ts +0 -57
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
3
  import {
4
4
  BookOpen,
5
5
  Bot,
@@ -17,10 +17,10 @@ import {
17
17
  } from 'lucide-react';
18
18
 
19
19
  import {
20
- InputGroup,
21
- InputGroupAddon,
22
- InputGroupInput,
23
- } from '@/components/input-group/input-group';
20
+ Collapsible,
21
+ CollapsibleContent,
22
+ CollapsibleTrigger,
23
+ } from '@/components/collapsible';
24
24
 
25
25
  import {
26
26
  Sidebar,
@@ -28,6 +28,7 @@ import {
28
28
  SidebarFooter,
29
29
  SidebarGroup,
30
30
  SidebarGroupAction,
31
+ SidebarGroupContent,
31
32
  SidebarGroupLabel,
32
33
  SidebarHeader,
33
34
  SidebarInput,
@@ -45,15 +46,10 @@ import {
45
46
  SidebarRail,
46
47
  SidebarSeparator,
47
48
  SidebarTrigger,
48
- } from './sidebar';
49
- import {
50
- Collapsible,
51
- CollapsibleContent,
52
- CollapsibleTrigger,
53
- } from '@/components/collapsible/collapsible';
49
+ } from './index';
54
50
 
55
51
  const meta: Meta<typeof Sidebar> = {
56
- title: '布局 · Layout/Sidebar',
52
+ title: '导航 · Navigation/Sidebar 侧边栏',
57
53
  component: Sidebar,
58
54
  tags: ['autodocs'],
59
55
  parameters: {
@@ -61,15 +57,12 @@ const meta: Meta<typeof Sidebar> = {
61
57
  docs: {
62
58
  description: {
63
59
  component:
64
- 'Sidebarshadcn 完整版 25 primitives 复合,等价 antd Layout.Sider + Menu + 移动端 Drawer。\n\n**核心能力**:Provider(open 受控/cookie 持久化/Cmd+B 快捷键/mobile 自动切 Sheet)、`variant=sidebar|floating|inset` × `collapsible=offcanvas|icon|none`、Menu 二级(Sub)+ 徽标(Badge)+ 操作(Action)+ 骨架(Skeleton)+ Rail 拖拽收合、Input 顶部搜索、GroupAction 头部操作槽、折叠态自动 Tooltip。',
60
+ '侧边栏可折叠的应用侧边导航。支持 `variant=sidebar|floating|inset` × `collapsible=offcanvas|icon|none`、二级菜单(Sub)+ 徽标(Badge)+ 操作(Action)+ 骨架(Skeleton)+ Rail 拖拽收合、折叠态自动 Tooltip。收起 Trigger 在 Sidebar 内部。',
65
61
  },
66
62
  },
67
63
  },
68
64
  argTypes: {
69
- side: {
70
- control: 'inline-radio',
71
- options: ['left', 'right'],
72
- },
65
+ side: { control: 'inline-radio', options: ['left', 'right'] },
73
66
  variant: {
74
67
  control: 'inline-radio',
75
68
  options: ['sidebar', 'floating', 'inset'],
@@ -85,11 +78,11 @@ const meta: Meta<typeof Sidebar> = {
85
78
  export default meta;
86
79
  type Story = StoryObj<typeof Sidebar>;
87
80
 
88
- // ─── 复用数据 + 内部小工具 ──────────────────────────────────────────────────
81
+ // ─── 公共数据 ──────────────────────────────────────────────────────────────
89
82
 
90
83
  const navItems = [
91
84
  { title: '首页', url: '#home', icon: Home },
92
- { title: '收件箱', url: '#inbox', icon: Inbox, badge: 5 },
85
+ { title: '收件箱', url: '#inbox', icon: Inbox },
93
86
  { title: '团队', url: '#team', icon: Users },
94
87
  { title: '设置', url: '#settings', icon: Settings },
95
88
  ];
@@ -106,117 +99,217 @@ const favoriteItems = [
106
99
  { title: '故障排查', url: '#fav-debug' },
107
100
  ];
108
101
 
102
+ // ─── 公共主内容 ─────────────────────────────────────────────────────────────
103
+
109
104
  function MainContent({ children }: { children?: React.ReactNode }) {
110
105
  return (
111
106
  <SidebarInset>
112
107
  <header className="flex h-12 shrink-0 items-center gap-2 border-b border-border bg-background px-4">
113
- <SidebarTrigger />
114
108
  <h2 className="text-sm font-medium">主内容区</h2>
115
109
  <span className="ml-auto text-xs text-muted-foreground">
116
110
  按 ⌘ + B 切换 Sidebar
117
111
  </span>
118
112
  </header>
119
113
  <div className="flex-1 overflow-auto p-6 text-sm text-muted-foreground">
120
- {children ?? '点击左上角图标可折叠 / 展开 Sidebar。'}
114
+ {children ?? '点击 Sidebar 底部 Trigger 按钮或按 ⌘B 折叠 / 展开。'}
121
115
  </div>
122
116
  </SidebarInset>
123
117
  );
124
118
  }
125
119
 
126
- // ─── Story 1: Default — 基础导航 + 折叠 ──────────────────────────────────
120
+ // ─── Story 1: Default — 综合示例 ────────────────────────────────────────────
127
121
 
122
+ /** 综合示例 — 品牌头 + 多分组 + 二级菜单 + 徽标 + 行操作 + 用户区 + 内部 Trigger */
128
123
  export const Default: Story = {
129
- parameters: {
130
- docs: {
131
- description: {
132
- story:
133
- '基础形态:Provider + Header + Content/Group/Menu + Footer + Trigger + Inset。点击左上角 Trigger 或按 `Cmd+B` 切换折叠;`isActive` 由消费方根据路由计算传入。',
134
- },
135
- },
136
- },
137
124
  render: (args) => (
138
125
  <SidebarProvider>
139
126
  <Sidebar {...args}>
140
127
  <SidebarHeader>
141
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
128
+ <div className="flex items-center gap-2 px-2 py-1.5 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:px-0">
129
+ <div className="flex size-8 shrink-0 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground group-data-[collapsible=icon]:hidden">
130
+ <Bot className="size-4" />
131
+ </div>
132
+ <div className="flex flex-1 flex-col leading-tight group-data-[collapsible=icon]:hidden">
133
+ <span className="truncate text-sm font-semibold">Teamix Evo</span>
134
+ <span className="truncate text-xs text-sidebar-foreground/70">
135
+ v0.4 · OpenTrek
136
+ </span>
137
+ </div>
138
+ <SidebarTrigger />
139
+ </div>
142
140
  </SidebarHeader>
141
+
143
142
  <SidebarContent>
144
143
  <SidebarGroup>
145
144
  <SidebarGroupLabel>导航</SidebarGroupLabel>
146
145
  <SidebarMenu>
147
- {navItems.map((it) => (
148
- <SidebarMenuItem key={it.title}>
149
- <SidebarMenuButton
150
- asChild
151
- tooltip={it.title}
152
- isActive={it.url === '#home'}
153
- >
154
- <a href={it.url} onClick={(e) => e.preventDefault()}>
155
- <it.icon />
156
- <span>{it.title}</span>
157
- </a>
158
- </SidebarMenuButton>
146
+ <SidebarMenuItem>
147
+ <SidebarMenuButton asChild tooltip="首页" isActive>
148
+ <a href="#home" onClick={(e) => e.preventDefault()}>
149
+ <Home />
150
+ <span>首页</span>
151
+ </a>
152
+ </SidebarMenuButton>
153
+ </SidebarMenuItem>
154
+
155
+ <Collapsible defaultOpen asChild className="group/collapsible">
156
+ <SidebarMenuItem>
157
+ <CollapsibleTrigger asChild>
158
+ <SidebarMenuButton tooltip="知识库">
159
+ <BookOpen />
160
+ <span>知识库</span>
161
+ <ChevronRight className="ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90" />
162
+ </SidebarMenuButton>
163
+ </CollapsibleTrigger>
164
+ <CollapsibleContent>
165
+ <SidebarMenuSub>
166
+ {kbSubItems.map((s) => (
167
+ <SidebarMenuSubItem key={s.title}>
168
+ <SidebarMenuSubButton
169
+ href={s.url}
170
+ isActive={s.url === '#kb-team'}
171
+ onClick={(e) => e.preventDefault()}
172
+ >
173
+ <span>{s.title}</span>
174
+ </SidebarMenuSubButton>
175
+ </SidebarMenuSubItem>
176
+ ))}
177
+ </SidebarMenuSub>
178
+ </CollapsibleContent>
159
179
  </SidebarMenuItem>
160
- ))}
180
+ </Collapsible>
181
+
182
+ <SidebarMenuItem>
183
+ <SidebarMenuButton asChild tooltip="收件箱">
184
+ <a href="#inbox" onClick={(e) => e.preventDefault()}>
185
+ <Inbox />
186
+ <span>收件箱</span>
187
+ </a>
188
+ </SidebarMenuButton>
189
+ <SidebarMenuBadge>5</SidebarMenuBadge>
190
+ </SidebarMenuItem>
191
+
192
+ <SidebarMenuItem>
193
+ <SidebarMenuButton asChild tooltip="评论">
194
+ <a href="#comments" onClick={(e) => e.preventDefault()}>
195
+ <MessageSquare />
196
+ <span>评论</span>
197
+ </a>
198
+ </SidebarMenuButton>
199
+ <SidebarMenuAction
200
+ showOnHover
201
+ aria-label="评论设置"
202
+ onClick={(e) => e.preventDefault()}
203
+ >
204
+ <MoreHorizontal />
205
+ </SidebarMenuAction>
206
+ </SidebarMenuItem>
207
+ </SidebarMenu>
208
+ </SidebarGroup>
209
+
210
+ <SidebarGroup>
211
+ <SidebarGroupLabel>项目</SidebarGroupLabel>
212
+ <SidebarGroupAction
213
+ aria-label="新建项目"
214
+ onClick={(e) => e.preventDefault()}
215
+ >
216
+ <FileText />
217
+ </SidebarGroupAction>
218
+ <SidebarMenu>
219
+ <SidebarMenuItem>
220
+ <SidebarMenuButton asChild tooltip="移动端" size="sm">
221
+ <a href="#proj-1" onClick={(e) => e.preventDefault()}>
222
+ <Folder />
223
+ <span>移动端 App</span>
224
+ </a>
225
+ </SidebarMenuButton>
226
+ </SidebarMenuItem>
227
+ <SidebarMenuItem>
228
+ <SidebarMenuButton asChild tooltip="后台" size="sm">
229
+ <a href="#proj-2" onClick={(e) => e.preventDefault()}>
230
+ <Folder />
231
+ <span>管理后台</span>
232
+ </a>
233
+ </SidebarMenuButton>
234
+ </SidebarMenuItem>
161
235
  </SidebarMenu>
162
236
  </SidebarGroup>
163
237
  </SidebarContent>
238
+
164
239
  <SidebarFooter>
165
- <p className="px-2 text-xs text-muted-foreground">v0.4.0</p>
240
+ <div className="flex items-center gap-2 px-2 py-1.5 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:px-0">
241
+ <div className="flex size-7 shrink-0 items-center justify-center rounded-full bg-sidebar-accent text-xs font-medium text-sidebar-accent-foreground">
242
+ U
243
+ </div>
244
+ <div className="flex min-w-0 flex-1 flex-col leading-tight group-data-[collapsible=icon]:hidden">
245
+ <span className="truncate text-sm font-medium">张三</span>
246
+ <span className="truncate text-xs text-sidebar-foreground/70">
247
+ zhangsan@example.com
248
+ </span>
249
+ </div>
250
+ </div>
166
251
  </SidebarFooter>
167
252
  </Sidebar>
168
- <MainContent />
253
+
254
+ <MainContent>
255
+ <p>折叠后所有 Tooltip / Badge / SubMenu 自动收起,展开后完整呈现。</p>
256
+ <p className="mt-2">
257
+ 按{' '}
258
+ <kbd className="rounded-sm border border-border bg-muted px-1 text-xs">
259
+ ⌘B
260
+ </kbd>{' '}
261
+ 切换折叠;窗口缩小到 768px 以下自动切换为 Sheet 抽屉形态。
262
+ </p>
263
+ </MainContent>
169
264
  </SidebarProvider>
170
265
  ),
171
266
  };
172
267
 
173
- // ─── Story 2: CollapsibleIcon — 折叠态自动 Tooltip ─────────────────────────
268
+ // ─── Story 2: CollapsibleIcon — 折叠态自动 Tooltip ──────────────────────────
174
269
 
270
+ /** 折叠态 + 自动 Tooltip:默认收起,hover icon 弹出文字 */
175
271
  export const CollapsibleIcon: Story = {
176
272
  name: '折叠态 + 自动 Tooltip',
177
273
  args: { collapsible: 'icon' },
178
- parameters: {
179
- docs: {
180
- description: {
181
- story:
182
- '`collapsible="icon"` + `<SidebarMenuButton tooltip="文字" />`:折叠后只剩 icon 列(3rem),hover icon 自动弹 Tooltip 显示文字,折叠态导航不丢失语义。点击 Trigger 或 `Cmd+B` 切换折叠演示。',
183
- },
184
- },
185
- },
186
274
  render: (args) => {
187
275
  const [collapsed, setCollapsed] = React.useState(true);
188
276
  return (
189
277
  <SidebarProvider open={!collapsed} onOpenChange={(o) => setCollapsed(!o)}>
190
278
  <Sidebar {...args}>
191
279
  <SidebarHeader>
192
- <h1 className="px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
193
- Teamix Evo
194
- </h1>
280
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
281
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
282
+ Teamix Evo
283
+ </h1>
284
+ <SidebarTrigger />
285
+ </div>
195
286
  </SidebarHeader>
196
287
  <SidebarContent>
197
288
  <SidebarGroup>
198
289
  <SidebarGroupLabel>导航</SidebarGroupLabel>
199
- <SidebarMenu>
200
- {navItems.map((it) => (
201
- <SidebarMenuItem key={it.title}>
202
- <SidebarMenuButton asChild tooltip={it.title}>
203
- <a href={it.url} onClick={(e) => e.preventDefault()}>
204
- <it.icon />
205
- <span>{it.title}</span>
206
- </a>
207
- </SidebarMenuButton>
208
- </SidebarMenuItem>
209
- ))}
210
- </SidebarMenu>
290
+ <SidebarGroupContent>
291
+ <SidebarMenu>
292
+ {navItems.map((it) => (
293
+ <SidebarMenuItem key={it.title}>
294
+ <SidebarMenuButton asChild tooltip={it.title}>
295
+ <a href={it.url} onClick={(e) => e.preventDefault()}>
296
+ <it.icon />
297
+ <span>{it.title}</span>
298
+ </a>
299
+ </SidebarMenuButton>
300
+ </SidebarMenuItem>
301
+ ))}
302
+ </SidebarMenu>
303
+ </SidebarGroupContent>
211
304
  </SidebarGroup>
212
305
  </SidebarContent>
213
306
  </Sidebar>
214
307
  <MainContent>
215
308
  <p>
216
- 当前折叠状态:<strong>{collapsed ? '已折叠' : '已展开'}</strong>
309
+ 当前折叠状态:<strong>{collapsed ? '已折叠' : '已展开'}</strong>
217
310
  </p>
218
311
  <p className="mt-2">
219
- 折叠后将鼠标 hover 到任一 icon 上,会看到 Tooltip 弹出对应文字。
312
+ 折叠后 hover 任一 icon,会看到 Tooltip 弹出对应文字。
220
313
  </p>
221
314
  </MainContent>
222
315
  </SidebarProvider>
@@ -224,23 +317,22 @@ export const CollapsibleIcon: Story = {
224
317
  },
225
318
  };
226
319
 
227
- // ─── Story 3: WithSubMenus — 二级菜单(MenuSub) ─────────────────────────────
320
+ // ─── Story 3: WithSubMenus — 二级菜单 ──────────────────────────────────────
228
321
 
322
+ /** 二级菜单:配合 Collapsible 实现展开/收起,折叠态自动隐藏 */
229
323
  export const WithSubMenus: Story = {
230
- name: '二级菜单 SubMenus',
231
- parameters: {
232
- docs: {
233
- description: {
234
- story:
235
- '`SidebarMenuSub / SubItem / SubButton` + `Collapsible` 实现二级展开收起。折叠态(`collapsible="icon"`)下二级自动隐藏。常用于知识库 / 多模块工作台。',
236
- },
237
- },
238
- },
324
+ name: '二级菜单',
325
+ args: { collapsible: 'icon' },
239
326
  render: (args) => (
240
327
  <SidebarProvider>
241
328
  <Sidebar {...args}>
242
329
  <SidebarHeader>
243
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
330
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
331
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
332
+ Teamix Evo
333
+ </h1>
334
+ <SidebarTrigger />
335
+ </div>
244
336
  </SidebarHeader>
245
337
  <SidebarContent>
246
338
  <SidebarGroup>
@@ -294,29 +386,28 @@ export const WithSubMenus: Story = {
294
386
  </SidebarContent>
295
387
  </Sidebar>
296
388
  <MainContent>
297
- 知识库展开后,折叠 Sidebar 试试 — 二级菜单会自动隐藏。
389
+ 知识库展开后,折叠 Sidebar — 二级菜单会自动隐藏。
298
390
  </MainContent>
299
391
  </SidebarProvider>
300
392
  ),
301
393
  };
302
394
 
303
- // ─── Story 4: WithBadgeAndAction — 徽标 + 行操作 ─────────────────────────────
395
+ // ─── Story 4: WithBadgeAndAction — 徽标 + 行操作 ────────────────────────────
304
396
 
397
+ /** 徽标 + hover 操作:MenuBadge 显示数字,MenuAction 仅 hover 浮现 */
305
398
  export const WithBadgeAndAction: Story = {
306
399
  name: '徽标 + 行操作',
307
- parameters: {
308
- docs: {
309
- description: {
310
- story:
311
- '`SidebarMenuBadge` 展示未读数 / 状态(Tailwind tabular-nums 等宽);`SidebarMenuAction` 是行内操作槽(`showOnHover` 控制是否仅 hover 时显示)。两者位置在 MenuButton 右侧。',
312
- },
313
- },
314
- },
400
+ args: { collapsible: 'icon' },
315
401
  render: (args) => (
316
402
  <SidebarProvider>
317
403
  <Sidebar {...args}>
318
404
  <SidebarHeader>
319
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
405
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
406
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
407
+ Teamix Evo
408
+ </h1>
409
+ <SidebarTrigger />
410
+ </div>
320
411
  </SidebarHeader>
321
412
  <SidebarContent>
322
413
  <SidebarGroup>
@@ -330,9 +421,9 @@ export const WithBadgeAndAction: Story = {
330
421
  <span>{it.title}</span>
331
422
  </a>
332
423
  </SidebarMenuButton>
333
- {it.badge ? (
334
- <SidebarMenuBadge>{it.badge}</SidebarMenuBadge>
335
- ) : null}
424
+ {it.title === '收件箱' && (
425
+ <SidebarMenuBadge>5</SidebarMenuBadge>
426
+ )}
336
427
  <SidebarMenuAction
337
428
  showOnHover
338
429
  aria-label="更多"
@@ -347,30 +438,28 @@ export const WithBadgeAndAction: Story = {
347
438
  </SidebarContent>
348
439
  </Sidebar>
349
440
  <MainContent>
350
- 把鼠标移到任一菜单项上右侧会浮现「⋯」操作按钮。
441
+ 鼠标移到菜单项右侧浮现「⋯」操作按钮;收件箱有未读徽标。
351
442
  </MainContent>
352
443
  </SidebarProvider>
353
444
  ),
354
445
  };
355
446
 
356
- // ─── Story 5: VariantFloating — 浮起圆角 ─────────────────────────────────────
447
+ // ─── Story 5: VariantFloating — 浮起圆角 ────────────────────────────────────
357
448
 
449
+ /** 浮起变体:Sidebar 脱离边缘,带圆角和阴影 */
358
450
  export const VariantFloating: Story = {
359
- name: 'variant=floating(浮起圆角)',
360
- args: { variant: 'floating' },
361
- parameters: {
362
- docs: {
363
- description: {
364
- story:
365
- '`variant="floating"`:Sidebar 与边缘留 8px 间距,带圆角 + 阴影 + 边框。视觉更轻盈,适合 dashboard / 营销后台。',
366
- },
367
- },
368
- },
451
+ name: '浮起变体 (floating)',
452
+ args: { variant: 'floating', collapsible: 'icon' },
369
453
  render: (args) => (
370
454
  <SidebarProvider>
371
455
  <Sidebar {...args}>
372
456
  <SidebarHeader>
373
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
457
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
458
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
459
+ Teamix Evo
460
+ </h1>
461
+ <SidebarTrigger />
462
+ </div>
374
463
  </SidebarHeader>
375
464
  <SidebarContent>
376
465
  <SidebarGroup>
@@ -390,29 +479,29 @@ export const VariantFloating: Story = {
390
479
  </SidebarGroup>
391
480
  </SidebarContent>
392
481
  </Sidebar>
393
- <MainContent />
482
+ <MainContent>
483
+ variant=&quot;floating&quot; — 浮起、圆角、阴影。
484
+ </MainContent>
394
485
  </SidebarProvider>
395
486
  ),
396
487
  };
397
488
 
398
- // ─── Story 6: VariantInset — 主内容区圆角内嵌 ────────────────────────────────
489
+ // ─── Story 6: VariantInset — 内嵌圆角 ───────────────────────────────────────
399
490
 
491
+ /** 内嵌变体:主内容区圆角内缩 */
400
492
  export const VariantInset: Story = {
401
- name: 'variant=inset(主区圆角)',
402
- args: { variant: 'inset' },
403
- parameters: {
404
- docs: {
405
- description: {
406
- story:
407
- '`variant="inset"`:主内容区 SidebarInset 加圆角 + 阴影 + 留白,Sidebar 退到背景。视觉上"内容卡片化",适合内容密集的工作台。',
408
- },
409
- },
410
- },
493
+ name: '内嵌变体 (inset)',
494
+ args: { variant: 'inset', collapsible: 'icon' },
411
495
  render: (args) => (
412
496
  <SidebarProvider>
413
497
  <Sidebar {...args}>
414
498
  <SidebarHeader>
415
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
499
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
500
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
501
+ Teamix Evo
502
+ </h1>
503
+ <SidebarTrigger />
504
+ </div>
416
505
  </SidebarHeader>
417
506
  <SidebarContent>
418
507
  <SidebarGroup>
@@ -432,28 +521,29 @@ export const VariantInset: Story = {
432
521
  </SidebarGroup>
433
522
  </SidebarContent>
434
523
  </Sidebar>
435
- <MainContent />
524
+ <MainContent>
525
+ variant=&quot;inset&quot; — 主内容区域圆角内嵌。
526
+ </MainContent>
436
527
  </SidebarProvider>
437
528
  ),
438
529
  };
439
530
 
440
- // ─── Story 7: WithRail — 拖拽收合区 ──────────────────────────────────────────
531
+ // ─── Story 7: WithRail — 拖拽收合 ───────────────────────────────────────────
441
532
 
533
+ /** Rail 拖拽收合:Sidebar 右边缘 hover 出线条,点击切换 */
442
534
  export const WithRail: Story = {
443
535
  name: 'Rail 拖拽收合',
444
- parameters: {
445
- docs: {
446
- description: {
447
- story:
448
- '`SidebarRail` 替代显式 Trigger 按钮 — 在 Sidebar 右边缘提供窄拖拽区,点击/双击触发折叠。`<SidebarRail />` 放在 `<Sidebar>` 内任意位置即可。',
449
- },
450
- },
451
- },
536
+ args: { collapsible: 'icon' },
452
537
  render: (args) => (
453
538
  <SidebarProvider>
454
539
  <Sidebar {...args}>
455
540
  <SidebarHeader>
456
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
541
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
542
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
543
+ Teamix Evo
544
+ </h1>
545
+ <SidebarTrigger />
546
+ </div>
457
547
  </SidebarHeader>
458
548
  <SidebarContent>
459
549
  <SidebarGroup>
@@ -475,39 +565,29 @@ export const WithRail: Story = {
475
565
  <SidebarRail />
476
566
  </Sidebar>
477
567
  <MainContent>
478
- 把鼠标移到 Sidebar 右边缘 — 会出现窄拖拽柄,点击切换折叠。
568
+ 鼠标移到 Sidebar 右边缘 — 出现窄拖拽柄,点击切换折叠。
479
569
  </MainContent>
480
570
  </SidebarProvider>
481
571
  ),
482
572
  };
483
573
 
484
- // ─── Story 8: WithInputAndGroupAction — 顶部搜索 + 分组操作 ──────────────────
574
+ // ─── Story 8: WithInputAndGroupAction — 搜索 + 分组操作 ─────────────────────
485
575
 
576
+ /** 搜索输入 + 分组操作:SidebarInput + GroupAction */
486
577
  export const WithInputAndGroupAction: Story = {
487
- name: '顶部搜索 + 分组操作',
488
- parameters: {
489
- docs: {
490
- description: {
491
- story:
492
- '`SidebarInput` 提供顶部搜索框(常配合 cmdk 做命令面板触发);`SidebarGroupAction` 是分组头右侧操作槽(添加 / 编辑 / 设置)。两者组合常见于"项目列表"等需要管理的分组。',
493
- },
494
- },
495
- },
578
+ name: '搜索 + 分组操作',
579
+ args: { collapsible: 'icon' },
496
580
  render: (args) => (
497
581
  <SidebarProvider>
498
582
  <Sidebar {...args}>
499
583
  <SidebarHeader>
500
- <div className="flex items-center gap-2 px-2 py-1.5">
501
- <h1 className="text-sm font-semibold">Teamix Evo</h1>
502
- </div>
503
- <div className="px-2 pb-1">
504
- <InputGroup>
505
- <InputGroupAddon position="before" variant="icon">
506
- <Search className="size-4" />
507
- </InputGroupAddon>
508
- <InputGroupInput placeholder="搜索…" />
509
- </InputGroup>
584
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
585
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
586
+ Teamix Evo
587
+ </h1>
588
+ <SidebarTrigger />
510
589
  </div>
590
+ <SidebarInput placeholder="搜索…" />
511
591
  </SidebarHeader>
512
592
  <SidebarContent>
513
593
  <SidebarGroup>
@@ -551,32 +631,33 @@ export const WithInputAndGroupAction: Story = {
551
631
  </SidebarGroup>
552
632
  </SidebarContent>
553
633
  </Sidebar>
554
- <MainContent>顶部 Input 搜索 + 收藏分组头部「⋯」管理操作。</MainContent>
634
+ <MainContent>
635
+ 顶部 SidebarInput 搜索 + 收藏分组头部「⋯」管理操作。
636
+ </MainContent>
555
637
  </SidebarProvider>
556
638
  ),
557
639
  };
558
640
 
559
- // ─── Story 9: LoadingSkeleton — 异步加载占位 ─────────────────────────────────
641
+ // ─── Story 9: LoadingSkeleton — 加载骨架 ────────────────────────────────────
560
642
 
643
+ /** 加载骨架:异步数据 ready 前的占位 */
561
644
  export const LoadingSkeleton: Story = {
562
- name: '加载骨架 MenuSkeleton',
563
- parameters: {
564
- docs: {
565
- description: {
566
- story:
567
- '`SidebarMenuSkeleton` 用于异步导航的占位 — 自带随机宽度变化避免视觉死板,`showIcon` 控制是否显示左侧 icon 骨架。',
568
- },
569
- },
570
- },
645
+ name: '加载骨架',
646
+ args: { collapsible: 'icon' },
571
647
  render: (args) => (
572
648
  <SidebarProvider>
573
649
  <Sidebar {...args}>
574
650
  <SidebarHeader>
575
- <h1 className="px-2 text-sm font-semibold">Teamix Evo</h1>
651
+ <div className="flex items-center group-data-[collapsible=icon]:justify-center">
652
+ <h1 className="flex-1 px-2 text-sm font-semibold group-data-[collapsible=icon]:hidden">
653
+ Teamix Evo
654
+ </h1>
655
+ <SidebarTrigger />
656
+ </div>
576
657
  </SidebarHeader>
577
658
  <SidebarContent>
578
659
  <SidebarGroup>
579
- <SidebarGroupLabel>导航(加载中)</SidebarGroupLabel>
660
+ <SidebarGroupLabel>导航(加载中)</SidebarGroupLabel>
580
661
  <SidebarMenu>
581
662
  {Array.from({ length: 5 }).map((_, i) => (
582
663
  <SidebarMenuItem key={i}>
@@ -587,168 +668,7 @@ export const LoadingSkeleton: Story = {
587
668
  </SidebarGroup>
588
669
  </SidebarContent>
589
670
  </Sidebar>
590
- <MainContent>
591
- 真实业务里这层骨架会在数据 ready 后切换为 Menu。
592
- </MainContent>
593
- </SidebarProvider>
594
- ),
595
- };
596
-
597
- // ─── Story 10: FullStack — 综合演示(品牌头 + 多分组 + 二级 + 徽标 + 用户区) ───
598
-
599
- export const FullStack: Story = {
600
- name: '综合 — 品牌头 + 多分组 + 二级 + 徽标 + 用户区',
601
- args: { collapsible: 'icon' },
602
- parameters: {
603
- docs: {
604
- description: {
605
- story:
606
- '把 Header(品牌)+ 多 Group(导航 / KB 二级 / 收藏)+ Badge / Action + Footer(用户区)拼起来,接近真实后台 layout。注意所有需要在折叠态保留语义的菜单项都传了 `tooltip` prop。',
607
- },
608
- },
609
- },
610
- render: (args) => (
611
- <SidebarProvider>
612
- <Sidebar {...args}>
613
- <SidebarHeader>
614
- <div className="flex items-center gap-2 px-2 py-1.5">
615
- <div className="flex size-8 shrink-0 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground">
616
- <Bot className="size-4" />
617
- </div>
618
- <div className="flex flex-1 flex-col leading-tight group-data-[collapsible=icon]:hidden">
619
- <span className="truncate text-sm font-semibold">Teamix Evo</span>
620
- <span className="truncate text-xs text-sidebar-foreground/70">
621
- v0.4 · OpenTrek
622
- </span>
623
- </div>
624
- </div>
625
- </SidebarHeader>
626
-
627
- <SidebarContent>
628
- <SidebarGroup>
629
- <SidebarGroupLabel>导航</SidebarGroupLabel>
630
- <SidebarMenu>
631
- <SidebarMenuItem>
632
- <SidebarMenuButton asChild tooltip="首页" isActive>
633
- <a href="#home" onClick={(e) => e.preventDefault()}>
634
- <Home />
635
- <span>首页</span>
636
- </a>
637
- </SidebarMenuButton>
638
- </SidebarMenuItem>
639
-
640
- <Collapsible defaultOpen asChild className="group/collapsible">
641
- <SidebarMenuItem>
642
- <CollapsibleTrigger asChild>
643
- <SidebarMenuButton tooltip="知识库">
644
- <BookOpen />
645
- <span>知识库</span>
646
- <ChevronRight className="ml-auto transition-transform group-data-[state=open]/collapsible:rotate-90" />
647
- </SidebarMenuButton>
648
- </CollapsibleTrigger>
649
- <CollapsibleContent>
650
- <SidebarMenuSub>
651
- {kbSubItems.map((s) => (
652
- <SidebarMenuSubItem key={s.title}>
653
- <SidebarMenuSubButton
654
- href={s.url}
655
- isActive={s.url === '#kb-team'}
656
- onClick={(e) => e.preventDefault()}
657
- >
658
- <span>{s.title}</span>
659
- </SidebarMenuSubButton>
660
- </SidebarMenuSubItem>
661
- ))}
662
- </SidebarMenuSub>
663
- </CollapsibleContent>
664
- </SidebarMenuItem>
665
- </Collapsible>
666
-
667
- <SidebarMenuItem>
668
- <SidebarMenuButton asChild tooltip="收件箱">
669
- <a href="#inbox" onClick={(e) => e.preventDefault()}>
670
- <Inbox />
671
- <span>收件箱</span>
672
- </a>
673
- </SidebarMenuButton>
674
- <SidebarMenuBadge>5</SidebarMenuBadge>
675
- </SidebarMenuItem>
676
-
677
- <SidebarMenuItem>
678
- <SidebarMenuButton asChild tooltip="评论">
679
- <a href="#comments" onClick={(e) => e.preventDefault()}>
680
- <MessageSquare />
681
- <span>评论</span>
682
- </a>
683
- </SidebarMenuButton>
684
- <SidebarMenuAction
685
- showOnHover
686
- aria-label="评论设置"
687
- onClick={(e) => e.preventDefault()}
688
- >
689
- <MoreHorizontal />
690
- </SidebarMenuAction>
691
- </SidebarMenuItem>
692
- </SidebarMenu>
693
- </SidebarGroup>
694
-
695
- <SidebarGroup>
696
- <SidebarGroupLabel>项目</SidebarGroupLabel>
697
- <SidebarGroupAction
698
- aria-label="新建项目"
699
- onClick={(e) => e.preventDefault()}
700
- >
701
- <FileText />
702
- </SidebarGroupAction>
703
- <SidebarMenu>
704
- <SidebarMenuItem>
705
- <SidebarMenuButton asChild tooltip="移动端" size="sm">
706
- <a href="#proj-1" onClick={(e) => e.preventDefault()}>
707
- <Folder />
708
- <span>移动端 App</span>
709
- </a>
710
- </SidebarMenuButton>
711
- </SidebarMenuItem>
712
- <SidebarMenuItem>
713
- <SidebarMenuButton asChild tooltip="后台" size="sm">
714
- <a href="#proj-2" onClick={(e) => e.preventDefault()}>
715
- <Folder />
716
- <span>管理后台</span>
717
- </a>
718
- </SidebarMenuButton>
719
- </SidebarMenuItem>
720
- </SidebarMenu>
721
- </SidebarGroup>
722
- </SidebarContent>
723
-
724
- <SidebarFooter>
725
- <div className="flex items-center gap-2 px-2 py-1.5">
726
- <div className="flex size-7 shrink-0 items-center justify-center rounded-full bg-sidebar-accent text-xs font-medium text-sidebar-accent-foreground">
727
- U
728
- </div>
729
- <div className="flex min-w-0 flex-1 flex-col leading-tight group-data-[collapsible=icon]:hidden">
730
- <span className="truncate text-sm font-medium">张三</span>
731
- <span className="truncate text-xs text-sidebar-foreground/70">
732
- zhangsan@example.com
733
- </span>
734
- </div>
735
- </div>
736
- </SidebarFooter>
737
- </Sidebar>
738
-
739
- <MainContent>
740
- <p>
741
- 真实工作台合成:折叠后所有 Tooltip / Badge / SubMenu
742
- 自动收起,展开后完整呈现。
743
- </p>
744
- <p className="mt-2">
745
- 按{' '}
746
- <kbd className="rounded-sm border border-border bg-muted px-1 text-xxs">
747
- ⌘B
748
- </kbd>{' '}
749
- 切换折叠;窗口缩小到 768px 以下会自动切换为 Sheet 抽屉形态。
750
- </p>
751
- </MainContent>
671
+ <MainContent>真实业务中骨架会在数据 ready 后切换为 Menu。</MainContent>
752
672
  </SidebarProvider>
753
673
  ),
754
674
  };