@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.
- package/README.md +46 -50
- package/manifest.json +406 -653
- package/package.json +15 -34
- package/src/_design-system/theme-tokens/stories.tsx +1474 -0
- package/src/components/accordion/index.tsx +139 -0
- package/src/components/accordion/meta.md +162 -0
- package/src/components/accordion/stories.tsx +145 -0
- package/src/components/affix/index.tsx +149 -0
- package/src/components/affix/meta.md +23 -0
- package/src/components/affix/stories.tsx +70 -0
- package/src/components/alert/index.tsx +220 -0
- package/src/components/alert/meta.md +133 -0
- package/src/components/alert/stories.tsx +126 -0
- package/src/components/alert-dialog/index.tsx +282 -0
- package/src/components/alert-dialog/meta.md +86 -0
- package/src/components/alert-dialog/stories.tsx +163 -0
- package/src/components/avatar/index.tsx +159 -0
- package/src/components/avatar/meta.md +242 -0
- package/src/components/avatar/stories.tsx +241 -0
- package/src/components/badge/index.tsx +299 -0
- package/src/components/badge/meta.md +237 -0
- package/src/components/badge/stories.tsx +275 -0
- package/src/components/breadcrumb/index.tsx +137 -0
- package/src/components/breadcrumb/meta.md +64 -0
- package/src/components/breadcrumb/stories.tsx +86 -0
- package/src/components/button/index.tsx +202 -0
- package/src/components/button/meta.md +209 -0
- package/src/components/button/stories.tsx +215 -0
- package/src/components/button-group/index.tsx +211 -0
- package/src/components/button-group/meta.md +190 -0
- package/src/components/button-group/stories.tsx +182 -0
- package/src/components/calendar/index.tsx +240 -0
- package/src/components/calendar/meta.md +36 -0
- package/src/components/calendar/stories.tsx +36 -0
- package/src/components/card/index.tsx +262 -0
- package/src/components/card/meta.md +194 -0
- package/src/components/card/stories.tsx +202 -0
- package/src/components/carousel/index.tsx +481 -0
- package/src/components/carousel/meta.md +208 -0
- package/src/components/carousel/stories.tsx +271 -0
- package/src/components/cascader-select/index.tsx +308 -0
- package/src/components/cascader-select/meta.md +28 -0
- package/src/components/cascader-select/stories.tsx +118 -0
- package/src/components/checkbox/index.tsx +208 -0
- package/src/components/checkbox/meta.md +166 -0
- package/src/components/checkbox/stories.tsx +206 -0
- package/src/components/collapsible/index.tsx +72 -0
- package/src/components/collapsible/meta.md +87 -0
- package/src/components/collapsible/stories.tsx +97 -0
- package/src/components/color-picker/index.tsx +677 -0
- package/src/components/color-picker/meta.md +83 -0
- package/src/components/color-picker/stories.tsx +172 -0
- package/src/components/combobox/index.tsx +687 -0
- package/src/components/combobox/meta.md +83 -0
- package/src/components/combobox/stories.tsx +179 -0
- package/src/components/command/index.tsx +238 -0
- package/src/components/command/meta.md +48 -0
- package/src/components/command/stories.tsx +83 -0
- package/src/components/data-table/index.tsx +1537 -0
- package/src/components/data-table/meta.md +107 -0
- package/src/components/data-table/stories.tsx +1234 -0
- package/src/components/date-picker/index.tsx +1492 -0
- package/src/components/date-picker/meta.md +103 -0
- package/src/components/date-picker/stories.tsx +125 -0
- package/src/components/descriptions/index.tsx +535 -0
- package/src/components/descriptions/meta.md +104 -0
- package/src/components/descriptions/stories.tsx +389 -0
- package/src/components/dialog/index.tsx +255 -0
- package/src/components/dialog/meta.md +244 -0
- package/src/components/dialog/stories.tsx +330 -0
- package/src/components/dropdown-menu/index.tsx +301 -0
- package/src/components/dropdown-menu/meta.md +93 -0
- package/src/components/dropdown-menu/stories.tsx +124 -0
- package/src/components/empty/index.tsx +431 -0
- package/src/components/empty/meta.md +274 -0
- package/src/components/empty/stories.tsx +278 -0
- package/src/components/field/index.tsx +374 -0
- package/src/components/field/meta.md +283 -0
- package/src/components/field/stories.tsx +327 -0
- package/src/components/filter-bar/index.tsx +976 -0
- package/src/components/filter-bar/meta.md +57 -0
- package/src/components/filter-bar/stories.tsx +496 -0
- package/src/components/float-button/index.tsx +163 -0
- package/src/components/float-button/meta.md +73 -0
- package/src/components/float-button/stories.tsx +68 -0
- package/src/components/form/index.tsx +218 -0
- package/src/components/form/meta.md +16 -0
- package/src/components/form/stories.tsx +301 -0
- package/src/components/hover-card/index.tsx +103 -0
- package/src/components/hover-card/meta.md +71 -0
- package/src/components/hover-card/stories.tsx +107 -0
- package/src/components/icon/index.tsx +225 -0
- package/src/components/icon/meta.md +102 -0
- package/src/components/icon/stories.tsx +127 -0
- package/src/components/image/index.tsx +147 -0
- package/src/components/image/meta.md +55 -0
- package/src/components/image/stories.tsx +48 -0
- package/src/components/input/index.tsx +63 -0
- package/src/components/input/meta.md +57 -0
- package/src/components/input/stories.tsx +66 -0
- package/src/components/input-group/index.tsx +292 -0
- package/src/components/input-group/meta.md +108 -0
- package/src/components/input-group/stories.tsx +258 -0
- package/src/components/input-ip/index.tsx +288 -0
- package/src/components/input-ip/meta.md +48 -0
- package/src/components/input-ip/stories.tsx +69 -0
- package/src/components/input-number/index.tsx +360 -0
- package/src/components/input-number/meta.md +156 -0
- package/src/components/input-number/stories.tsx +187 -0
- package/src/components/item/index.tsx +368 -0
- package/src/components/item/meta.md +395 -0
- package/src/components/item/stories.tsx +432 -0
- package/src/components/label/index.tsx +44 -0
- package/src/components/label/meta.md +68 -0
- package/src/components/label/stories.tsx +64 -0
- package/src/components/mentions/index.tsx +369 -0
- package/src/components/mentions/meta.md +118 -0
- package/src/components/mentions/stories.tsx +153 -0
- package/src/components/menubar/index.tsx +313 -0
- package/src/components/menubar/meta.md +52 -0
- package/src/components/menubar/stories.tsx +99 -0
- package/src/components/navigation-menu/index.tsx +216 -0
- package/src/components/navigation-menu/meta.md +66 -0
- package/src/components/navigation-menu/stories.tsx +137 -0
- package/src/components/page-header/index.tsx +218 -0
- package/src/components/page-header/meta.md +211 -0
- package/src/components/page-header/stories.tsx +290 -0
- package/src/components/page-shell/index.tsx +119 -0
- package/src/components/page-shell/meta.md +115 -0
- package/src/components/page-shell/stories.tsx +154 -0
- package/src/components/pagination/index.tsx +580 -0
- package/src/components/pagination/meta.md +39 -0
- package/src/components/pagination/stories.tsx +319 -0
- package/src/components/popconfirm/index.tsx +477 -0
- package/src/components/popconfirm/meta.md +164 -0
- package/src/components/popconfirm/stories.tsx +231 -0
- package/src/components/popover/index.tsx +181 -0
- package/src/components/popover/meta.md +97 -0
- package/src/components/popover/stories.tsx +169 -0
- package/src/components/progress/index.tsx +176 -0
- package/src/components/progress/meta.md +95 -0
- package/src/components/progress/stories.tsx +115 -0
- package/src/components/radio-group/index.tsx +78 -0
- package/src/components/radio-group/meta.md +137 -0
- package/src/components/radio-group/stories.tsx +285 -0
- package/src/components/rate/index.tsx +284 -0
- package/src/components/rate/meta.md +63 -0
- package/src/components/rate/stories.tsx +107 -0
- package/src/components/resizable/index.tsx +122 -0
- package/src/components/resizable/meta.md +142 -0
- package/src/components/resizable/stories.tsx +105 -0
- package/src/components/scroll-area/index.tsx +83 -0
- package/src/components/scroll-area/meta.md +85 -0
- package/src/components/scroll-area/stories.tsx +82 -0
- package/src/components/select/index.tsx +325 -0
- package/src/components/select/meta.md +183 -0
- package/src/components/select/stories.tsx +210 -0
- package/src/components/separator/index.tsx +51 -0
- package/src/components/separator/meta.md +68 -0
- package/src/components/separator/stories.tsx +53 -0
- package/src/components/sheet/index.tsx +293 -0
- package/src/components/sheet/meta.md +226 -0
- package/src/components/sheet/stories.tsx +405 -0
- package/src/components/sidebar/index.tsx +715 -0
- package/src/components/sidebar/meta.md +14 -0
- package/src/components/sidebar/{sidebar.stories.tsx → stories.tsx} +250 -330
- package/src/components/skeleton/index.tsx +415 -0
- package/src/components/skeleton/meta.md +210 -0
- package/src/components/skeleton/stories.tsx +197 -0
- package/src/components/slider/index.tsx +222 -0
- package/src/components/slider/meta.md +125 -0
- package/src/components/slider/stories.tsx +109 -0
- package/src/components/sonner/index.tsx +149 -0
- package/src/components/sonner/meta.md +156 -0
- package/src/components/sonner/stories.tsx +285 -0
- package/src/components/spinner/index.tsx +335 -0
- package/src/components/spinner/meta.md +172 -0
- package/src/components/spinner/stories.tsx +197 -0
- package/src/components/statistic/{statistic.tsx → index.tsx} +25 -26
- package/src/components/statistic/meta.md +94 -0
- package/src/components/statistic/stories.tsx +85 -0
- package/src/components/steps/index.tsx +500 -0
- package/src/components/steps/meta.md +245 -0
- package/src/components/steps/stories.tsx +287 -0
- package/src/components/switch/index.tsx +175 -0
- package/src/components/switch/meta.md +107 -0
- package/src/components/switch/stories.tsx +154 -0
- package/src/components/table/index.tsx +350 -0
- package/src/components/table/meta.md +148 -0
- package/src/components/table/stories.tsx +189 -0
- package/src/components/tabs/index.tsx +379 -0
- package/src/components/tabs/meta.md +244 -0
- package/src/components/tabs/stories.tsx +312 -0
- package/src/components/tag/index.tsx +774 -0
- package/src/components/tag/meta.md +256 -0
- package/src/components/tag/stories.tsx +431 -0
- package/src/components/textarea/index.tsx +62 -0
- package/src/components/textarea/meta.md +77 -0
- package/src/components/textarea/stories.tsx +112 -0
- package/src/components/time-picker/index.tsx +887 -0
- package/src/components/time-picker/meta.md +102 -0
- package/src/components/time-picker/stories.tsx +125 -0
- package/src/components/timeline/index.tsx +422 -0
- package/src/components/timeline/meta.md +352 -0
- package/src/components/timeline/stories.tsx +369 -0
- package/src/components/toggle/index.tsx +74 -0
- package/src/components/toggle/meta.md +76 -0
- package/src/components/toggle/stories.tsx +66 -0
- package/src/components/toggle-group/index.tsx +167 -0
- package/src/components/toggle-group/meta.md +141 -0
- package/src/components/toggle-group/stories.tsx +124 -0
- package/src/components/tooltip/index.tsx +144 -0
- package/src/components/tooltip/meta.md +186 -0
- package/src/components/tooltip/stories.tsx +212 -0
- package/src/components/transfer/index.tsx +639 -0
- package/src/components/transfer/meta.md +76 -0
- package/src/components/transfer/stories.tsx +221 -0
- package/src/components/tree/index.tsx +764 -0
- package/src/components/tree/meta.md +96 -0
- package/src/components/tree/stories.tsx +385 -0
- package/src/components/tree/utils.ts +269 -0
- package/src/components/tree-select/index.tsx +400 -0
- package/src/components/tree-select/meta.md +78 -0
- package/src/components/tree-select/stories.tsx +234 -0
- package/src/components/typography/index.tsx +290 -0
- package/src/components/typography/meta.md +151 -0
- package/src/components/typography/stories.tsx +151 -0
- package/src/components/upload/index.tsx +858 -0
- package/src/components/upload/meta.md +122 -0
- package/src/components/upload/stories.tsx +261 -0
- package/src/components/watermark/index.tsx +152 -0
- package/src/components/watermark/meta.md +67 -0
- package/src/components/watermark/stories.tsx +59 -0
- package/src/hooks/use-mobile.ts +9 -11
- package/src/lib/color.ts +243 -0
- package/src/{utils/cn.ts → lib/utils.ts} +1 -1
- package/src/components/accordion/accordion.meta.md +0 -88
- package/src/components/accordion/accordion.stories.tsx +0 -72
- package/src/components/accordion/accordion.tsx +0 -154
- package/src/components/affix/affix.meta.md +0 -98
- package/src/components/affix/affix.stories.tsx +0 -134
- package/src/components/affix/affix.tsx +0 -167
- package/src/components/alert/alert.meta.md +0 -132
- package/src/components/alert/alert.stories.tsx +0 -138
- package/src/components/alert/alert.tsx +0 -179
- package/src/components/alert-dialog/alert-dialog.meta.md +0 -152
- package/src/components/alert-dialog/alert-dialog.stories.tsx +0 -223
- package/src/components/alert-dialog/alert-dialog.tsx +0 -183
- package/src/components/anchor/anchor.meta.md +0 -92
- package/src/components/anchor/anchor.stories.tsx +0 -74
- package/src/components/anchor/anchor.tsx +0 -130
- package/src/components/app/app.meta.md +0 -91
- package/src/components/app/app.stories.tsx +0 -64
- package/src/components/app/app.tsx +0 -58
- package/src/components/aspect-ratio/aspect-ratio.meta.md +0 -82
- package/src/components/aspect-ratio/aspect-ratio.stories.tsx +0 -59
- package/src/components/aspect-ratio/aspect-ratio.tsx +0 -22
- package/src/components/auto-complete/auto-complete.meta.md +0 -110
- package/src/components/auto-complete/auto-complete.stories.tsx +0 -136
- package/src/components/auto-complete/auto-complete.tsx +0 -253
- package/src/components/avatar/avatar.meta.md +0 -93
- package/src/components/avatar/avatar.stories.tsx +0 -98
- package/src/components/avatar/avatar.tsx +0 -127
- package/src/components/badge/badge.meta.md +0 -120
- package/src/components/badge/badge.stories.tsx +0 -153
- package/src/components/badge/badge.tsx +0 -204
- package/src/components/breadcrumb/breadcrumb.meta.md +0 -127
- package/src/components/breadcrumb/breadcrumb.stories.tsx +0 -207
- package/src/components/breadcrumb/breadcrumb.tsx +0 -136
- package/src/components/button/button.meta.md +0 -335
- package/src/components/button/button.stories.tsx +0 -743
- package/src/components/button/button.tsx +0 -466
- package/src/components/calendar/calendar.meta.md +0 -128
- package/src/components/calendar/calendar.stories.tsx +0 -68
- package/src/components/calendar/calendar.tsx +0 -172
- package/src/components/card/card.meta.md +0 -139
- package/src/components/card/card.stories.tsx +0 -151
- package/src/components/card/card.tsx +0 -306
- package/src/components/carousel/carousel.meta.md +0 -118
- package/src/components/carousel/carousel.stories.tsx +0 -89
- package/src/components/carousel/carousel.tsx +0 -224
- package/src/components/cascader/cascader.meta.md +0 -140
- package/src/components/cascader/cascader.stories.tsx +0 -120
- package/src/components/cascader/cascader.tsx +0 -548
- package/src/components/checkbox/checkbox.meta.md +0 -167
- package/src/components/checkbox/checkbox.stories.tsx +0 -288
- package/src/components/checkbox/checkbox.tsx +0 -195
- package/src/components/collapsible/collapsible.meta.md +0 -88
- package/src/components/collapsible/collapsible.stories.tsx +0 -43
- package/src/components/collapsible/collapsible.tsx +0 -105
- package/src/components/color-picker/color-picker.meta.md +0 -89
- package/src/components/color-picker/color-picker.stories.tsx +0 -159
- package/src/components/color-picker/color-picker.tsx +0 -171
- package/src/components/command/command.meta.md +0 -120
- package/src/components/command/command.stories.tsx +0 -59
- package/src/components/command/command.tsx +0 -158
- package/src/components/context-menu/context-menu.meta.md +0 -93
- package/src/components/context-menu/context-menu.stories.tsx +0 -54
- package/src/components/context-menu/context-menu.tsx +0 -204
- package/src/components/data-table/data-table.meta.md +0 -150
- package/src/components/data-table/data-table.stories.tsx +0 -132
- package/src/components/data-table/data-table.tsx +0 -185
- package/src/components/date-picker/date-picker.meta.md +0 -175
- package/src/components/date-picker/date-picker.stories.tsx +0 -108
- package/src/components/date-picker/date-picker.tsx +0 -1554
- package/src/components/descriptions/descriptions.meta.md +0 -83
- package/src/components/descriptions/descriptions.stories.tsx +0 -60
- package/src/components/descriptions/descriptions.tsx +0 -137
- package/src/components/dialog/dialog.meta.md +0 -168
- package/src/components/dialog/dialog.stories.tsx +0 -255
- package/src/components/dialog/dialog.tsx +0 -180
- package/src/components/dialog/imperative.tsx +0 -252
- package/src/components/drawer/drawer.meta.md +0 -95
- package/src/components/drawer/drawer.stories.tsx +0 -71
- package/src/components/drawer/drawer.tsx +0 -23
- package/src/components/dropdown-menu/dropdown-menu.meta.md +0 -171
- package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -198
- package/src/components/dropdown-menu/dropdown-menu.tsx +0 -209
- package/src/components/ellipsis/ellipsis.meta.md +0 -87
- package/src/components/ellipsis/ellipsis.stories.tsx +0 -72
- package/src/components/ellipsis/ellipsis.tsx +0 -153
- package/src/components/empty/empty.meta.md +0 -86
- package/src/components/empty/empty.stories.tsx +0 -46
- package/src/components/empty/empty.tsx +0 -54
- package/src/components/field/field.meta.md +0 -154
- package/src/components/field/field.stories.tsx +0 -497
- package/src/components/field/field.tsx +0 -392
- package/src/components/filter-bar/filter-bar.meta.md +0 -92
- package/src/components/filter-bar/filter-bar.stories.tsx +0 -1086
- package/src/components/filter-bar/filter-bar.tsx +0 -568
- package/src/components/flex/flex.meta.md +0 -142
- package/src/components/flex/flex.stories.tsx +0 -199
- package/src/components/flex/flex.tsx +0 -145
- package/src/components/float-button/float-button.meta.md +0 -92
- package/src/components/float-button/float-button.stories.tsx +0 -80
- package/src/components/float-button/float-button.tsx +0 -143
- package/src/components/form/form.meta.md +0 -153
- package/src/components/form/form.stories.tsx +0 -472
- package/src/components/form/form.tsx +0 -260
- package/src/components/grid/grid.meta.md +0 -92
- package/src/components/grid/grid.stories.tsx +0 -101
- package/src/components/grid/grid.tsx +0 -130
- package/src/components/hover-card/hover-card.meta.md +0 -103
- package/src/components/hover-card/hover-card.stories.tsx +0 -97
- package/src/components/hover-card/hover-card.tsx +0 -67
- package/src/components/icon/DEVELOPMENT.md +0 -809
- package/src/components/icon/icon.meta.md +0 -170
- package/src/components/icon/icon.stories.tsx +0 -344
- package/src/components/icon/icon.tsx +0 -248
- package/src/components/image/image.meta.md +0 -99
- package/src/components/image/image.stories.tsx +0 -55
- package/src/components/image/image.tsx +0 -140
- package/src/components/input/input.meta.md +0 -115
- package/src/components/input/input.stories.tsx +0 -144
- package/src/components/input/input.tsx +0 -212
- package/src/components/input-group/input-group.meta.md +0 -124
- package/src/components/input-group/input-group.stories.tsx +0 -121
- package/src/components/input-group/input-group.tsx +0 -143
- package/src/components/input-number/input-number.meta.md +0 -148
- package/src/components/input-number/input-number.stories.tsx +0 -125
- package/src/components/input-number/input-number.tsx +0 -283
- package/src/components/input-otp/input-otp.meta.md +0 -106
- package/src/components/input-otp/input-otp.stories.tsx +0 -65
- package/src/components/input-otp/input-otp.tsx +0 -97
- package/src/components/item/item.meta.md +0 -121
- package/src/components/item/item.stories.tsx +0 -116
- package/src/components/item/item.tsx +0 -172
- package/src/components/kbd/kbd.meta.md +0 -94
- package/src/components/kbd/kbd.stories.tsx +0 -70
- package/src/components/kbd/kbd.tsx +0 -86
- package/src/components/label/label.meta.md +0 -99
- package/src/components/label/label.stories.tsx +0 -145
- package/src/components/label/label.tsx +0 -138
- package/src/components/masonry/masonry.meta.md +0 -90
- package/src/components/masonry/masonry.stories.tsx +0 -68
- package/src/components/masonry/masonry.tsx +0 -60
- package/src/components/mentions/mentions.meta.md +0 -119
- package/src/components/mentions/mentions.stories.tsx +0 -189
- package/src/components/mentions/mentions.tsx +0 -243
- package/src/components/menubar/menubar.meta.md +0 -118
- package/src/components/menubar/menubar.stories.tsx +0 -141
- package/src/components/menubar/menubar.tsx +0 -232
- package/src/components/native-select/native-select.meta.md +0 -93
- package/src/components/native-select/native-select.stories.tsx +0 -83
- package/src/components/native-select/native-select.tsx +0 -54
- package/src/components/navigation-menu/navigation-menu.meta.md +0 -118
- package/src/components/navigation-menu/navigation-menu.stories.tsx +0 -215
- package/src/components/navigation-menu/navigation-menu.tsx +0 -129
- package/src/components/notification/notification.meta.md +0 -133
- package/src/components/notification/notification.stories.tsx +0 -98
- package/src/components/notification/notification.tsx +0 -99
- package/src/components/page-header/DEVELOPMENT.md +0 -842
- package/src/components/page-header/page-header.meta.md +0 -210
- package/src/components/page-header/page-header.stories.tsx +0 -428
- package/src/components/page-header/page-header.tsx +0 -284
- package/src/components/page-shell/page-shell.meta.md +0 -116
- package/src/components/page-shell/page-shell.stories.tsx +0 -149
- package/src/components/page-shell/page-shell.tsx +0 -115
- package/src/components/pagination/pagination.meta.md +0 -230
- package/src/components/pagination/pagination.stories.tsx +0 -284
- package/src/components/pagination/pagination.tsx +0 -567
- package/src/components/popconfirm/popconfirm.meta.md +0 -114
- package/src/components/popconfirm/popconfirm.stories.tsx +0 -75
- package/src/components/popconfirm/popconfirm.tsx +0 -134
- package/src/components/popover/popover.meta.md +0 -154
- package/src/components/popover/popover.stories.tsx +0 -158
- package/src/components/popover/popover.tsx +0 -104
- package/src/components/progress/progress.meta.md +0 -118
- package/src/components/progress/progress.stories.tsx +0 -75
- package/src/components/progress/progress.tsx +0 -203
- package/src/components/radio-group/radio-group.meta.md +0 -175
- package/src/components/radio-group/radio-group.stories.tsx +0 -113
- package/src/components/radio-group/radio-group.tsx +0 -209
- package/src/components/rate/rate.meta.md +0 -118
- package/src/components/rate/rate.stories.tsx +0 -89
- package/src/components/rate/rate.tsx +0 -180
- package/src/components/resizable/resizable.meta.md +0 -95
- package/src/components/resizable/resizable.stories.tsx +0 -104
- package/src/components/resizable/resizable.tsx +0 -56
- package/src/components/result/result.meta.md +0 -95
- package/src/components/result/result.stories.tsx +0 -67
- package/src/components/result/result.tsx +0 -100
- package/src/components/scroll-area/scroll-area.meta.md +0 -85
- package/src/components/scroll-area/scroll-area.stories.tsx +0 -49
- package/src/components/scroll-area/scroll-area.tsx +0 -51
- package/src/components/segmented/segmented.meta.md +0 -106
- package/src/components/segmented/segmented.stories.tsx +0 -130
- package/src/components/segmented/segmented.tsx +0 -146
- package/src/components/select/select.meta.md +0 -255
- package/src/components/select/select.stories.tsx +0 -275
- package/src/components/select/select.tsx +0 -735
- package/src/components/separator/separator.meta.md +0 -75
- package/src/components/separator/separator.stories.tsx +0 -71
- package/src/components/separator/separator.tsx +0 -100
- package/src/components/sheet/sheet.meta.md +0 -113
- package/src/components/sheet/sheet.stories.tsx +0 -188
- package/src/components/sheet/sheet.tsx +0 -226
- package/src/components/sidebar/sidebar.meta.md +0 -151
- package/src/components/sidebar/sidebar.tsx +0 -853
- package/src/components/skeleton/skeleton.meta.md +0 -94
- package/src/components/skeleton/skeleton.stories.tsx +0 -79
- package/src/components/skeleton/skeleton.tsx +0 -144
- package/src/components/slider/slider.meta.md +0 -146
- package/src/components/slider/slider.stories.tsx +0 -121
- package/src/components/slider/slider.tsx +0 -227
- package/src/components/sonner/sonner.meta.md +0 -147
- package/src/components/sonner/sonner.stories.tsx +0 -164
- package/src/components/sonner/sonner.tsx +0 -169
- package/src/components/spinner/spinner.meta.md +0 -125
- package/src/components/spinner/spinner.stories.tsx +0 -123
- package/src/components/spinner/spinner.tsx +0 -166
- package/src/components/statistic/statistic.meta.md +0 -104
- package/src/components/statistic/statistic.stories.tsx +0 -67
- package/src/components/steps/steps.meta.md +0 -116
- package/src/components/steps/steps.stories.tsx +0 -115
- package/src/components/steps/steps.tsx +0 -173
- package/src/components/switch/switch.meta.md +0 -138
- package/src/components/switch/switch.stories.tsx +0 -75
- package/src/components/switch/switch.tsx +0 -169
- package/src/components/table/table.meta.md +0 -106
- package/src/components/table/table.stories.tsx +0 -80
- package/src/components/table/table.tsx +0 -124
- package/src/components/tabs/tabs.meta.md +0 -111
- package/src/components/tabs/tabs.stories.tsx +0 -156
- package/src/components/tabs/tabs.tsx +0 -190
- package/src/components/tag/tag.meta.md +0 -159
- package/src/components/tag/tag.stories.tsx +0 -250
- package/src/components/tag/tag.tsx +0 -386
- package/src/components/textarea/textarea.meta.md +0 -99
- package/src/components/textarea/textarea.stories.tsx +0 -89
- package/src/components/textarea/textarea.tsx +0 -137
- package/src/components/time-picker/time-picker.meta.md +0 -175
- package/src/components/time-picker/time-picker.stories.tsx +0 -129
- package/src/components/time-picker/time-picker.tsx +0 -946
- package/src/components/timeline/timeline.meta.md +0 -110
- package/src/components/timeline/timeline.stories.tsx +0 -134
- package/src/components/timeline/timeline.tsx +0 -168
- package/src/components/toggle/toggle.meta.md +0 -89
- package/src/components/toggle/toggle.stories.tsx +0 -66
- package/src/components/toggle/toggle.tsx +0 -54
- package/src/components/toggle-group/toggle-group.meta.md +0 -91
- package/src/components/toggle-group/toggle-group.stories.tsx +0 -83
- package/src/components/toggle-group/toggle-group.tsx +0 -78
- package/src/components/tooltip/tooltip.meta.md +0 -149
- package/src/components/tooltip/tooltip.stories.tsx +0 -108
- package/src/components/tooltip/tooltip.tsx +0 -153
- package/src/components/tour/tour.meta.md +0 -121
- package/src/components/tour/tour.stories.tsx +0 -66
- package/src/components/tour/tour.tsx +0 -242
- package/src/components/transfer/transfer.meta.md +0 -95
- package/src/components/transfer/transfer.stories.tsx +0 -64
- package/src/components/transfer/transfer.tsx +0 -258
- package/src/components/tree/tree.meta.md +0 -169
- package/src/components/tree/tree.stories.tsx +0 -128
- package/src/components/tree/tree.tsx +0 -368
- package/src/components/tree-select/tree-select.meta.md +0 -151
- package/src/components/tree-select/tree-select.stories.tsx +0 -80
- package/src/components/tree-select/tree-select.tsx +0 -206
- package/src/components/typography/typography.meta.md +0 -149
- package/src/components/typography/typography.stories.tsx +0 -116
- package/src/components/typography/typography.tsx +0 -260
- package/src/components/upload/upload.meta.md +0 -156
- package/src/components/upload/upload.stories.tsx +0 -135
- package/src/components/upload/upload.tsx +0 -398
- package/src/components/watermark/watermark.meta.md +0 -100
- package/src/components/watermark/watermark.stories.tsx +0 -170
- package/src/components/watermark/watermark.tsx +0 -166
- package/src/hooks/use-breakpoint.ts +0 -117
- package/src/hooks/use-debounce-callback.ts +0 -52
- package/src/stories/theme-tokens.stories.tsx +0 -747
- 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
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
} from '@/components/
|
|
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 './
|
|
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: '
|
|
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
|
-
'
|
|
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
|
|
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 ?? '
|
|
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
|
-
<
|
|
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
|
-
|
|
148
|
-
<
|
|
149
|
-
<
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
-
<
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
<
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
<
|
|
203
|
-
<
|
|
204
|
-
<it.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
309
|
+
当前折叠状态:<strong>{collapsed ? '已折叠' : '已展开'}</strong>
|
|
217
310
|
</p>
|
|
218
311
|
<p className="mt-2">
|
|
219
|
-
|
|
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 — 二级菜单
|
|
320
|
+
// ─── Story 3: WithSubMenus — 二级菜单 ──────────────────────────────────────
|
|
228
321
|
|
|
322
|
+
/** 二级菜单:配合 Collapsible 实现展开/收起,折叠态自动隐藏 */
|
|
229
323
|
export const WithSubMenus: Story = {
|
|
230
|
-
name: '二级菜单
|
|
231
|
-
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
<
|
|
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.
|
|
334
|
-
<SidebarMenuBadge>
|
|
335
|
-
)
|
|
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: '
|
|
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
|
-
<
|
|
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="floating" — 浮起、圆角、阴影。
|
|
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: '
|
|
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
|
-
<
|
|
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="inset" — 主内容区域圆角内嵌。
|
|
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
|
-
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
501
|
-
<h1 className="text-sm font-semibold">
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
<
|
|
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
|
|
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: '加载骨架
|
|
563
|
-
|
|
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
|
-
<
|
|
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
|
|
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
|
};
|