@justanarthur/modo-ui 0.6.0-canary.9 → 0.6.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 +66 -164
- package/dist/base.css +4 -141
- package/dist/blocks/sidebar-app/index.js +26 -40
- package/dist/components/AI/input-message/index.js +16 -23
- package/dist/components/AI/thinking-indicator/index.js +6 -9
- package/dist/components/accordion/index.d.ts +11 -39
- package/dist/components/accordion/index.js +13 -18
- package/dist/components/badge/index.d.ts +11 -18
- package/dist/components/badge/index.js +7 -12
- package/dist/components/button/index.d.ts +17 -53
- package/dist/components/button/index.js +6 -11
- package/dist/components/card/index.d.ts +9 -32
- package/dist/components/card/index.js +11 -17
- package/dist/components/copy/index.d.ts +8 -41
- package/dist/components/copy/index.js +9 -15
- package/dist/components/inputs/checkbox/index.d.ts +9 -28
- package/dist/components/inputs/checkbox/index.js +13 -18
- package/dist/components/inputs/color-picker/index.d.ts +14 -22
- package/dist/components/inputs/color-picker/index.js +18 -26
- package/dist/components/inputs/combobox/index.d.ts +20 -85
- package/dist/components/inputs/combobox/index.js +18 -27
- package/dist/components/inputs/date-time/calendar/index.d.ts +18 -24
- package/dist/components/inputs/date-time/calendar/index.js +11 -15
- package/dist/components/inputs/date-time/date-picker/index.d.ts +16 -105
- package/dist/components/inputs/date-time/date-picker/index.js +25 -35
- package/dist/components/inputs/date-time/date-range-picker/index.d.ts +12 -106
- package/dist/components/inputs/date-time/date-range-picker/index.js +24 -35
- package/dist/components/inputs/date-time/duration-picker/index.d.ts +13 -66
- package/dist/components/inputs/date-time/duration-picker/index.js +24 -33
- package/dist/components/inputs/date-time/month-picker/index.d.ts +10 -60
- package/dist/components/inputs/date-time/month-picker/index.js +23 -32
- package/dist/components/inputs/date-time/time-picker/index.d.ts +10 -58
- package/dist/components/inputs/date-time/time-picker/index.js +24 -33
- package/dist/components/inputs/input/index.d.ts +13 -95
- package/dist/components/inputs/input/index.js +9 -18
- package/dist/components/inputs/radio/index.d.ts +5 -20
- package/dist/components/inputs/radio/index.js +12 -16
- package/dist/components/inputs/search/index.d.ts +3 -3
- package/dist/components/inputs/search/index.js +18 -26
- package/dist/components/inputs/select/index.d.ts +23 -99
- package/dist/components/inputs/select/index.js +14 -29
- package/dist/components/inputs/slider/index.d.ts +0 -9
- package/dist/components/inputs/slider/index.js +5 -8
- package/dist/components/inputs/switch/index.d.ts +2 -8
- package/dist/components/inputs/switch/index.js +12 -15
- package/dist/components/inputs/textarea/index.d.ts +1 -20
- package/dist/components/inputs/textarea/index.js +6 -9
- package/dist/components/navigation/sidebar/index.d.ts +21 -44
- package/dist/components/navigation/sidebar/index.js +31 -42
- package/dist/components/navigation/tabs/index.d.ts +2 -8
- package/dist/components/navigation/tabs/index.js +10 -15
- package/dist/components/navigation/tabs-subtle/index.js +10 -13
- package/dist/components/overlays/alert-dialog/index.d.ts +16 -135
- package/dist/components/overlays/alert-dialog/index.js +13 -23
- package/dist/components/overlays/command/index.d.ts +20 -25
- package/dist/components/overlays/command/index.js +17 -25
- package/dist/components/overlays/context-menu/index.d.ts +17 -39
- package/dist/components/overlays/context-menu/index.js +18 -29
- package/dist/components/overlays/dialog/index.d.ts +16 -42
- package/dist/components/overlays/dialog/index.js +12 -20
- package/dist/components/overlays/dropdown/index.d.ts +34 -304
- package/dist/components/overlays/dropdown/index.js +17 -44
- package/dist/components/overlays/popover/index.d.ts +12 -38
- package/dist/components/overlays/popover/index.js +9 -13
- package/dist/components/overlays/preview-card/index.js +8 -12
- package/dist/components/overlays/sheet/index.d.ts +8 -25
- package/dist/components/overlays/sheet/index.js +13 -19
- package/dist/components/overlays/toast/index.d.ts +50 -209
- package/dist/components/overlays/toast/index.js +10 -23
- package/dist/components/overlays/tooltip/index.d.ts +21 -123
- package/dist/components/overlays/tooltip/index.js +6 -16
- package/dist/components/table/index.d.ts +8 -63
- package/dist/components/table/index.js +9 -20
- package/dist/index.d.ts +1048 -2999
- package/dist/index.js +82 -231
- package/dist/preset.d.ts +0 -22
- package/dist/preset.js +2 -24
- package/dist/primitives/code/index.js +5 -8
- package/dist/primitives/craft/index.js +6 -10
- package/dist/primitives/fluid-hover/index.js +8 -10
- package/dist/primitives/morph/index.js +10 -16
- package/dist/primitives/motion/index.js +8 -11
- package/dist/primitives/scroll-area/index.js +3 -5
- package/dist/primitives/sizes/index.js +4 -6
- package/dist/primitives/surface/index.js +4 -6
- package/dist/shared/{components-c7rwx0ap.js → components-0q0sqfh4.js} +49 -27
- package/dist/shared/components-0sn7ypjw.js +61 -0
- package/dist/shared/{components-vc864c51.js → components-11da9ajg.js} +5 -8
- package/dist/shared/components-1434p1mh.js +123 -0
- package/dist/shared/{components-c74gf16d.js → components-1z6tdadk.js} +24 -40
- package/dist/shared/{components-bae8sbjx.js → components-27nnvrwe.js} +14 -15
- package/dist/shared/{components-qh1cvj6p.js → components-2dxkv6zm.js} +7 -8
- package/dist/shared/{components-y0kfy2g4.js → components-2ecg8svx.js} +152 -234
- package/dist/shared/{components-c5w5zk0s.js → components-2ph6t61s.js} +34 -37
- package/dist/shared/{components-4j3t39dd.js → components-39jq9va1.js} +24 -29
- package/dist/shared/components-3ky44908.js +9 -0
- package/dist/shared/{components-syynwm1r.js → components-3mkepka5.js} +25 -28
- package/dist/shared/{components-wgtjt2af.js → components-4700p9kz.js} +22 -24
- package/dist/shared/{components-yhgq0qxx.js → components-59efxjd9.js} +12 -13
- package/dist/shared/{components-91zw3d9f.js → components-5vgpnxgy.js} +27 -51
- package/dist/shared/{components-kz5q11pp.js → components-5xc2j8jz.js} +18 -19
- package/dist/shared/{components-zkk3fmw8.js → components-6p8tfcd6.js} +29 -57
- package/dist/shared/{components-4nck8acq.js → components-7r3etddy.js} +54 -19
- package/dist/shared/{components-svkt577j.js → components-8snj490h.js} +32 -78
- package/dist/shared/{components-ctqmge8t.js → components-b0eac83j.js} +30 -9
- package/dist/shared/{components-9sttq78t.js → components-b2wyq2cq.js} +59 -41
- package/dist/shared/{components-pv1dyrtn.js → components-b3c5et5b.js} +38 -49
- package/dist/shared/{components-rrbpmfx4.js → components-c6s6b43g.js} +2 -3
- package/dist/shared/{components-pwayrkw9.js → components-chacnk61.js} +19 -19
- package/dist/shared/{components-71nbt03m.js → components-cv16mryv.js} +7 -26
- package/dist/shared/{components-hgv6tygd.js → components-d6xtjht3.js} +30 -35
- package/dist/shared/{components-z8fedth5.js → components-dk0gjr5a.js} +18 -19
- package/dist/shared/{components-cet3jpa0.js → components-fzrq6tr3.js} +34 -37
- package/dist/shared/{components-cnead5qm.js → components-gc5vtq2f.js} +30 -66
- package/dist/shared/components-gf5s6ap9.js +42 -0
- package/dist/shared/{components-0h78g3b5.js → components-gz8zf3ec.js} +55 -56
- package/dist/shared/{components-mattt5jp.js → components-h2ajmhwn.js} +35 -107
- package/dist/shared/{components-m06yq8wk.js → components-hqeq3w9q.js} +23 -38
- package/dist/shared/{components-7qx17na9.js → components-hw9yk32z.js} +24 -36
- package/dist/shared/components-hyq23phv.js +310 -0
- package/dist/shared/{components-9jmjnkqd.js → components-jbbmdr74.js} +22 -41
- package/dist/shared/{components-dcc02hs2.js → components-jjw69c4c.js} +4 -7
- package/dist/shared/{components-303jf96s.js → components-jthe1pwb.js} +420 -139
- package/dist/shared/{components-dtca4s6b.js → components-jwst3vtj.js} +76 -224
- package/dist/shared/{components-dc5q749x.js → components-kvr7f9hy.js} +10 -19
- package/dist/shared/{components-s8yqk2dc.js → components-kwa6mrf9.js} +11 -46
- package/dist/shared/{components-de99ykt7.js → components-men63rwj.js} +2 -3
- package/dist/shared/{components-qx27excf.js → components-mjthm1kf.js} +9 -13
- package/dist/shared/{components-1e64t8aj.js → components-n42c79bz.js} +22 -23
- package/dist/shared/{components-tz1fv35x.js → components-n7mjr357.js} +2 -3
- package/dist/shared/components-ng72k97e.js +128 -0
- package/dist/shared/{components-w2jqa6hx.js → components-pbmqctfa.js} +65 -169
- package/dist/shared/{components-px2zm7dc.js → components-q5xj5c16.js} +8 -9
- package/dist/shared/components-raknhppb.js +64 -0
- package/dist/shared/{components-2a7hcand.js → components-rr7a6ja9.js} +27 -59
- package/dist/shared/{components-005jt2nz.js → components-s083f38z.js} +34 -164
- package/dist/shared/components-s5ngg32c.js +267 -0
- package/dist/shared/components-sn1rxx1d.js +143 -0
- package/dist/shared/{components-r8eqs7gz.js → components-ta7shw28.js} +4 -4
- package/dist/shared/{components-9as3rf68.js → components-vc7vq5nz.js} +3 -6
- package/dist/shared/{components-ft3zdc79.js → components-vfbhxf5r.js} +5 -6
- package/dist/shared/components-vynjtrk6.js +19 -0
- package/dist/shared/{components-p0fm0bab.js → components-w1r67ag9.js} +149 -294
- package/dist/shared/{components-xd3emmy4.js → components-w90endve.js} +72 -71
- package/dist/shared/{components-t5pk5nmc.js → components-wvp1m52g.js} +102 -149
- package/dist/shared/components-wy9jpqny.js +146 -0
- package/dist/shared/{components-yxmxn2jp.js → components-y9y0g8er.js} +28 -52
- package/dist/shared/components-ypp01w3p.js +986 -0
- package/dist/shared/{components-czdvj1a8.js → components-zfnmn5d4.js} +36 -82
- package/dist/shared/{components-jqpefjsn.js → components-zrkzcayz.js} +6 -54
- package/dist/shared/{components-vf45j12c.js → components-zx6b6yby.js} +18 -4
- package/dist/styles.css +32 -320
- package/dist/tailwind.css +0 -16
- package/dist/tokens.css +0 -67
- package/package.json +4 -227
- package/DESIGN.md +0 -623
- package/blocks/sidebar-app/examples.mdx +0 -33
- package/blocks/sidebar-app/index.tsx +0 -218
- package/blocks/sidebar-app/inset-topbar.tsx +0 -25
- package/blocks/sidebar-app/menu-grid.ts +0 -26
- package/blocks/sidebar-app/nav-data.ts +0 -36
- package/blocks/sidebar-app/search-field.tsx +0 -48
- package/blocks/sidebar-app/user-footer.tsx +0 -67
- package/blocks/sidebar-app/workspace-header.tsx +0 -129
- package/components/AI/input-message/examples.mdx +0 -130
- package/components/AI/input-message/file-thumbnail.tsx +0 -173
- package/components/AI/input-message/index.tsx +0 -1385
- package/components/AI/thinking-indicator/examples.mdx +0 -27
- package/components/AI/thinking-indicator/index.tsx +0 -210
- package/components/accordion/examples.mdx +0 -233
- package/components/accordion/index.tsx +0 -1071
- package/components/avatar/examples.mdx +0 -95
- package/components/avatar/index.tsx +0 -129
- package/components/badge/change-demo.tsx +0 -29
- package/components/badge/examples.mdx +0 -124
- package/components/badge/index.tsx +0 -225
- package/components/badge/variants.ts +0 -73
- package/components/button/examples.mdx +0 -168
- package/components/button/index.tsx +0 -424
- package/components/button/loading-demo.tsx +0 -25
- package/components/button/variants.ts +0 -168
- package/components/card/examples.mdx +0 -251
- package/components/card/index.tsx +0 -1070
- package/components/copy/examples.mdx +0 -125
- package/components/copy/index.tsx +0 -662
- package/components/inputs/checkbox/examples.mdx +0 -87
- package/components/inputs/checkbox/index.tsx +0 -611
- package/components/inputs/checkbox/select-all-demo.tsx +0 -48
- package/components/inputs/color-picker/examples.mdx +0 -111
- package/components/inputs/color-picker/index.tsx +0 -1981
- package/components/inputs/color-picker/variants.ts +0 -401
- package/components/inputs/combobox/examples.mdx +0 -366
- package/components/inputs/combobox/index.tsx +0 -1527
- package/components/inputs/combobox/remote-demo.tsx +0 -105
- package/components/inputs/date-time/calendar/examples.mdx +0 -45
- package/components/inputs/date-time/calendar/index.tsx +0 -370
- package/components/inputs/date-time/calendar/use-month-window.ts +0 -173
- package/components/inputs/date-time/date-picker/examples.mdx +0 -243
- package/components/inputs/date-time/date-picker/index.tsx +0 -476
- package/components/inputs/date-time/date-picker/masked-date-input.tsx +0 -348
- package/components/inputs/date-time/date-range-picker/examples.mdx +0 -93
- package/components/inputs/date-time/date-range-picker/index.tsx +0 -525
- package/components/inputs/date-time/duration-picker/examples.mdx +0 -40
- package/components/inputs/date-time/duration-picker/index.tsx +0 -253
- package/components/inputs/date-time/month-picker/examples.mdx +0 -45
- package/components/inputs/date-time/month-picker/index.tsx +0 -254
- package/components/inputs/date-time/picker-shell.tsx +0 -581
- package/components/inputs/date-time/time-columns.tsx +0 -94
- package/components/inputs/date-time/time-picker/examples.mdx +0 -57
- package/components/inputs/date-time/time-picker/index.tsx +0 -227
- package/components/inputs/field/examples.mdx +0 -117
- package/components/inputs/field/index.tsx +0 -268
- package/components/inputs/file-dropzone/examples.mdx +0 -83
- package/components/inputs/file-dropzone/file-row.tsx +0 -201
- package/components/inputs/file-dropzone/index.tsx +0 -316
- package/components/inputs/file-dropzone/upload-demo.tsx +0 -67
- package/components/inputs/file-dropzone/variants.ts +0 -94
- package/components/inputs/input/examples.mdx +0 -166
- package/components/inputs/input/index.tsx +0 -494
- package/components/inputs/input/password-demo.tsx +0 -30
- package/components/inputs/label/examples.mdx +0 -67
- package/components/inputs/label/index.tsx +0 -85
- package/components/inputs/number-input/examples.mdx +0 -69
- package/components/inputs/number-input/index.tsx +0 -221
- package/components/inputs/radio/examples.mdx +0 -77
- package/components/inputs/radio/index.tsx +0 -636
- package/components/inputs/search/examples.mdx +0 -74
- package/components/inputs/search/index.tsx +0 -333
- package/components/inputs/select/examples.mdx +0 -296
- package/components/inputs/select/index.tsx +0 -1044
- package/components/inputs/select/variants.ts +0 -32
- package/components/inputs/slider/examples.mdx +0 -153
- package/components/inputs/slider/index.tsx +0 -1867
- package/components/inputs/switch/examples.mdx +0 -96
- package/components/inputs/switch/index.tsx +0 -504
- package/components/inputs/textarea/examples.mdx +0 -126
- package/components/inputs/textarea/index.tsx +0 -207
- package/components/navigation/navigation-menu/examples.mdx +0 -136
- package/components/navigation/navigation-menu/index.tsx +0 -704
- package/components/navigation/pagination/examples.mdx +0 -74
- package/components/navigation/pagination/index.tsx +0 -401
- package/components/navigation/sidebar/examples.mdx +0 -325
- package/components/navigation/sidebar/index.tsx +0 -453
- package/components/navigation/sidebar/sidebar-core.tsx +0 -1408
- package/components/navigation/sidebar/sidebar-menu.tsx +0 -1495
- package/components/navigation/sidebar/sidebar.css +0 -74
- package/components/navigation/sidebar/variants.ts +0 -55
- package/components/navigation/tabs/examples.mdx +0 -89
- package/components/navigation/tabs/index.tsx +0 -494
- package/components/navigation/tabs-subtle/examples.mdx +0 -49
- package/components/navigation/tabs-subtle/index.tsx +0 -512
- package/components/overlays/alert-dialog/examples.mdx +0 -123
- package/components/overlays/alert-dialog/index.tsx +0 -276
- package/components/overlays/alert-dialog/pending-demo.tsx +0 -36
- package/components/overlays/command/examples.mdx +0 -113
- package/components/overlays/command/index.tsx +0 -425
- package/components/overlays/context-menu/examples.mdx +0 -56
- package/components/overlays/context-menu/index.tsx +0 -279
- package/components/overlays/dialog/examples.mdx +0 -165
- package/components/overlays/dialog/index.tsx +0 -451
- package/components/overlays/dropdown/dropdown-search.tsx +0 -395
- package/components/overlays/dropdown/examples.mdx +0 -444
- package/components/overlays/dropdown/index.tsx +0 -1241
- package/components/overlays/dropdown/menu-item.tsx +0 -510
- package/components/overlays/dropdown/menu-parts.tsx +0 -725
- package/components/overlays/popover/anchored-demo.tsx +0 -59
- package/components/overlays/popover/examples.mdx +0 -203
- package/components/overlays/popover/index.tsx +0 -317
- package/components/overlays/preview-card/examples.mdx +0 -61
- package/components/overlays/preview-card/index.tsx +0 -204
- package/components/overlays/sheet/examples.mdx +0 -101
- package/components/overlays/sheet/index.tsx +0 -307
- package/components/overlays/toast/examples.mdx +0 -85
- package/components/overlays/toast/global-demo.tsx +0 -72
- package/components/overlays/toast/index.tsx +0 -544
- package/components/overlays/toast/manager.ts +0 -193
- package/components/overlays/tooltip/examples.mdx +0 -106
- package/components/overlays/tooltip/index.tsx +0 -539
- package/components/progress/examples.mdx +0 -59
- package/components/progress/index.tsx +0 -174
- package/components/progress/progress.css +0 -49
- package/components/progress/step-demo.tsx +0 -27
- package/components/table/examples.mdx +0 -188
- package/components/table/index.tsx +0 -535
- package/components/table/sort-demo.tsx +0 -61
- package/dist/components/avatar/index.d.ts +0 -46
- package/dist/components/avatar/index.js +0 -19
- package/dist/components/badge/variants.d.ts +0 -33
- package/dist/components/badge/variants.js +0 -10
- package/dist/components/button/variants.d.ts +0 -39
- package/dist/components/button/variants.js +0 -8
- package/dist/components/inputs/color-picker/variants.d.ts +0 -61
- package/dist/components/inputs/color-picker/variants.js +0 -28
- package/dist/components/inputs/field/index.d.ts +0 -116
- package/dist/components/inputs/field/index.js +0 -29
- package/dist/components/inputs/file-dropzone/index.d.ts +0 -167
- package/dist/components/inputs/file-dropzone/index.js +0 -33
- package/dist/components/inputs/file-dropzone/variants.d.ts +0 -35
- package/dist/components/inputs/file-dropzone/variants.js +0 -12
- package/dist/components/inputs/label/index.d.ts +0 -32
- package/dist/components/inputs/label/index.js +0 -11
- package/dist/components/inputs/number-input/index.d.ts +0 -87
- package/dist/components/inputs/number-input/index.js +0 -21
- package/dist/components/inputs/select/variants.d.ts +0 -5
- package/dist/components/inputs/select/variants.js +0 -6
- package/dist/components/navigation/navigation-menu/index.d.ts +0 -126
- package/dist/components/navigation/navigation-menu/index.js +0 -41
- package/dist/components/navigation/pagination/index.d.ts +0 -75
- package/dist/components/navigation/pagination/index.js +0 -41
- package/dist/components/navigation/sidebar/variants.d.ts +0 -25
- package/dist/components/navigation/sidebar/variants.js +0 -28
- package/dist/components/progress/index.d.ts +0 -56
- package/dist/components/progress/index.js +0 -15
- package/dist/docs/index.d.ts +0 -83
- package/dist/docs/index.js +0 -288
- package/dist/docs/vite.d.ts +0 -31
- package/dist/docs/vite.js +0 -45
- package/dist/lib/date-locale.d.ts +0 -26
- package/dist/lib/date-locale.js +0 -24
- package/dist/lib/field-classes.d.ts +0 -149
- package/dist/lib/field-classes.js +0 -41
- package/dist/lib/field-variants.d.ts +0 -47
- package/dist/lib/field-variants.js +0 -26
- package/dist/lib/fluid-hover-highlight.d.ts +0 -112
- package/dist/lib/fluid-hover-highlight.js +0 -17
- package/dist/lib/focus-ring.d.ts +0 -18
- package/dist/lib/focus-ring.js +0 -11
- package/dist/lib/goo-indicator.d.ts +0 -46
- package/dist/lib/goo-indicator.js +0 -14
- package/dist/lib/icon-context.d.ts +0 -30
- package/dist/lib/icon-context.js +0 -12
- package/dist/lib/inert.d.ts +0 -9
- package/dist/lib/inert.js +0 -8
- package/dist/lib/morph-layers.d.ts +0 -93
- package/dist/lib/morph-layers.js +0 -13
- package/dist/lib/morph-part.d.ts +0 -21
- package/dist/lib/morph-part.js +0 -12
- package/dist/lib/popup.d.ts +0 -20
- package/dist/lib/popup.js +0 -12
- package/dist/lib/reduced-motion.d.ts +0 -9
- package/dist/lib/reduced-motion.js +0 -6
- package/dist/lib/row-index.d.ts +0 -10
- package/dist/lib/row-index.js +0 -8
- package/dist/lib/row-order.d.ts +0 -28
- package/dist/lib/row-order.js +0 -10
- package/dist/lib/scroll-column.d.ts +0 -31
- package/dist/lib/scroll-column.js +0 -19
- package/dist/lib/shape-context.d.ts +0 -30
- package/dist/lib/shape-context.js +0 -13
- package/dist/lib/shape-radius.d.ts +0 -19
- package/dist/lib/shape-radius.js +0 -6
- package/dist/lib/size-context.d.ts +0 -94
- package/dist/lib/size-context.js +0 -20
- package/dist/lib/size-scale.d.ts +0 -79
- package/dist/lib/size-scale.js +0 -8
- package/dist/lib/slot.d.ts +0 -39
- package/dist/lib/slot.js +0 -14
- package/dist/lib/springs.d.ts +0 -44
- package/dist/lib/springs.js +0 -8
- package/dist/lib/surface-classes.d.ts +0 -19
- package/dist/lib/surface-classes.js +0 -10
- package/dist/lib/surface-context.d.ts +0 -9
- package/dist/lib/surface-context.js +0 -8
- package/dist/lib/use-controllable-state.d.ts +0 -2
- package/dist/lib/use-controllable-state.js +0 -6
- package/dist/lib/use-fluid-hover.d.ts +0 -138
- package/dist/lib/use-fluid-hover.js +0 -14
- package/dist/lib/use-is-mobile.d.ts +0 -2
- package/dist/lib/use-is-mobile.js +0 -6
- package/dist/lib/use-keyboard-nav-gate.d.ts +0 -20
- package/dist/lib/use-keyboard-nav-gate.js +0 -7
- package/dist/lib/use-merge-split.d.ts +0 -47
- package/dist/lib/use-merge-split.js +0 -15
- package/dist/lib/use-morph.d.ts +0 -101
- package/dist/lib/use-morph.js +0 -20
- package/dist/lib/use-touch-primary.d.ts +0 -2
- package/dist/lib/use-touch-primary.js +0 -6
- package/dist/lib/utils.d.ts +0 -3
- package/dist/lib/utils.js +0 -6
- package/dist/primitives/separator/index.d.ts +0 -25
- package/dist/primitives/separator/index.js +0 -9
- package/dist/primitives/skeleton/index.d.ts +0 -35
- package/dist/primitives/skeleton/index.js +0 -13
- package/dist/shared/components-01w9qcfa.js +0 -277
- package/dist/shared/components-124epb7f.js +0 -53
- package/dist/shared/components-26snnbs9.js +0 -322
- package/dist/shared/components-2krsc300.js +0 -254
- package/dist/shared/components-2qbqqpgq.js +0 -1545
- package/dist/shared/components-34txk9rj.js +0 -35
- package/dist/shared/components-3h92d94m.js +0 -23
- package/dist/shared/components-4vfm04wq.js +0 -82
- package/dist/shared/components-54nq988h.js +0 -123
- package/dist/shared/components-7s7pykk5.js +0 -281
- package/dist/shared/components-868v7scv.js +0 -399
- package/dist/shared/components-8jrk5eye.js +0 -448
- package/dist/shared/components-adkarj8n.js +0 -35
- package/dist/shared/components-b1e239g3.js +0 -28
- package/dist/shared/components-b94t6qtj.js +0 -143
- package/dist/shared/components-bsqynhaj.js +0 -179
- package/dist/shared/components-c9yr4ed1.js +0 -44
- package/dist/shared/components-d3shbwqq.js +0 -95
- package/dist/shared/components-dhgk6mbt.js +0 -16
- package/dist/shared/components-drxrtnp2.js +0 -25
- package/dist/shared/components-f7h57m6t.js +0 -59
- package/dist/shared/components-g3eafs70.js +0 -337
- package/dist/shared/components-gx4h5rbb.js +0 -40
- package/dist/shared/components-gyt7my41.js +0 -328
- package/dist/shared/components-h6p86be3.js +0 -19
- package/dist/shared/components-h83az0bz.js +0 -33
- package/dist/shared/components-hdzrqqpx.js +0 -55
- package/dist/shared/components-krtx3m5b.js +0 -84
- package/dist/shared/components-kswxnm3h.js +0 -24
- package/dist/shared/components-mhza2wdn.js +0 -482
- package/dist/shared/components-mrbaxt8q.js +0 -62
- package/dist/shared/components-pt5ftm4p.js +0 -38
- package/dist/shared/components-rtadhd9j.js +0 -64
- package/dist/shared/components-tv7b8tet.js +0 -271
- package/dist/shared/components-tz4gaf1v.js +0 -23
- package/dist/shared/components-wbbckbw8.js +0 -34
- package/dist/shared/components-wknae3m4.js +0 -298
- package/dist/shared/components-xdqmt6ed.js +0 -20
- package/dist/shared/components-xjkdvnbg.js +0 -107
- package/dist/shared/components-z3v0n0de.js +0 -11
- package/dist/tokens/colors.css +0 -230
- package/dist/tokens/motion.css +0 -40
- package/dist/tokens/radius.css +0 -10
- package/dist/tokens/spacing.css +0 -9
- package/dist/tokens/typography.css +0 -119
- package/docs/chrome.css +0 -120
- package/docs/chrome.tsx +0 -283
- package/docs/index.ts +0 -9
- package/docs/vite.ts +0 -85
- package/index.ts +0 -60
- package/lib/date-locale.ts +0 -195
- package/lib/field-classes.ts +0 -121
- package/lib/field-variants.ts +0 -117
- package/lib/fluid-hover-highlight.tsx +0 -139
- package/lib/focus-ring.tsx +0 -46
- package/lib/goo-indicator.tsx +0 -261
- package/lib/icon-context.tsx +0 -310
- package/lib/inert.ts +0 -22
- package/lib/morph-layers.tsx +0 -102
- package/lib/morph-part.tsx +0 -49
- package/lib/popup.ts +0 -52
- package/lib/reduced-motion.ts +0 -19
- package/lib/row-index.tsx +0 -29
- package/lib/row-order.tsx +0 -126
- package/lib/scroll-column.tsx +0 -273
- package/lib/shape-context.tsx +0 -138
- package/lib/shape-radius.ts +0 -67
- package/lib/size-context.tsx +0 -66
- package/lib/size-scale.ts +0 -115
- package/lib/slot.ts +0 -115
- package/lib/springs.ts +0 -62
- package/lib/surface-classes.ts +0 -58
- package/lib/surface-context.tsx +0 -21
- package/lib/use-controllable-state.ts +0 -44
- package/lib/use-fluid-hover.ts +0 -541
- package/lib/use-is-mobile.ts +0 -25
- package/lib/use-keyboard-nav-gate.ts +0 -45
- package/lib/use-merge-split.tsx +0 -209
- package/lib/use-morph.ts +0 -575
- package/lib/use-touch-primary.tsx +0 -43
- package/lib/utils.ts +0 -37
- package/preset.ts +0 -199
- package/primitives/code/examples.mdx +0 -27
- package/primitives/code/index.tsx +0 -80
- package/primitives/craft/demos.tsx +0 -173
- package/primitives/craft/examples.mdx +0 -142
- package/primitives/craft/index.tsx +0 -76
- package/primitives/fluid-hover/examples.mdx +0 -84
- package/primitives/fluid-hover/index.tsx +0 -316
- package/primitives/morph/examples.mdx +0 -139
- package/primitives/morph/index.tsx +0 -192
- package/primitives/motion/examples.mdx +0 -100
- package/primitives/motion/index.tsx +0 -160
- package/primitives/scroll-area/examples.mdx +0 -58
- package/primitives/scroll-area/index.tsx +0 -204
- package/primitives/separator/examples.mdx +0 -30
- package/primitives/separator/index.tsx +0 -53
- package/primitives/sizes/examples.mdx +0 -167
- package/primitives/sizes/index.tsx +0 -89
- package/primitives/skeleton/examples.mdx +0 -51
- package/primitives/skeleton/index.tsx +0 -72
- package/primitives/skeleton/skeleton.css +0 -15
- package/primitives/surface/examples.mdx +0 -173
- package/primitives/surface/index.tsx +0 -109
- package/primitives/surface/surface.css +0 -176
- /package/dist/shared/{components-3ey0hzpb.js → components-1v7rxytx.js} +0 -0
- /package/dist/shared/{components-jcnjay5g.js → components-ezxhrmer.js} +0 -0
|
@@ -1,453 +0,0 @@
|
|
|
1
|
-
// biome-ignore-all lint: vendored upstream code keeps its own patterns (see the header)
|
|
2
|
-
/*
|
|
3
|
-
* Ported from Fluid Functionalism — github.com/mickadesign/fluid-functionalism
|
|
4
|
-
* `registry/base/sidebar.tsx` @ b3587bdbd83fc66c2a6aae3817ffb856cb09260b
|
|
5
|
-
* MIT License © 2026 Micka Touillaud — fluidfunctionalism.com (notice: LICENSE.fluid-functionalism)
|
|
6
|
-
* Local modifications:
|
|
7
|
-
* - `"use client"` dropped; `framer-motion` → `motion/react`; `@/lib/*`
|
|
8
|
-
* imports rewritten to `../../../lib/*`, `@/components/ui/scroll-area` →
|
|
9
|
-
* `../../../primitives/scroll-area`, `@/components/ui/sidebar-{core,menu}` →
|
|
10
|
-
* the siblings `./sidebar-core` / `./sidebar-menu`.
|
|
11
|
-
* - The mobile sheet is the DS's `Sheet` (Base UI Drawer through the morph
|
|
12
|
-
* layer): it grows out of its edge with the goo neck on `spring.goo`
|
|
13
|
-
* and swipes away, replacing upstream's Dialog with a framer slide, its
|
|
14
|
-
* held-open exit and its `bg-black` scrim.
|
|
15
|
-
* - `SidebarProps` re-declared one member per line with the FF docs text;
|
|
16
|
-
* `value` / `defaultValue` / `onValueChange` added: the sidebar holds the
|
|
17
|
-
* selection its menu buttons' `value`s read (`SidebarSelection`), so rows
|
|
18
|
-
* select without state of their own.
|
|
19
|
-
* - The parts hang off `Sidebar` as statics (`Sidebar.Provider`,
|
|
20
|
-
* `Sidebar.Menu`, …), typed through a `SidebarComponent` cast; upstream's
|
|
21
|
-
* named re-exports are kept.
|
|
22
|
-
* - Upstream's `.scroll-divider` (app/globals.css) ships beside it as
|
|
23
|
-
* `sidebar.css`.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
import {
|
|
27
|
-
type CSSProperties,
|
|
28
|
-
type ForwardRefExoticComponent,
|
|
29
|
-
forwardRef,
|
|
30
|
-
type HTMLAttributes,
|
|
31
|
-
type ReactNode,
|
|
32
|
-
type RefAttributes,
|
|
33
|
-
useEffect,
|
|
34
|
-
useMemo,
|
|
35
|
-
} from 'react'
|
|
36
|
-
import { useControllableState } from '../../../lib/use-controllable-state'
|
|
37
|
-
import { cn } from '../../../lib/utils'
|
|
38
|
-
import { ScrollArea } from '../../../primitives/scroll-area'
|
|
39
|
-
import { Sheet } from '../../overlays/sheet'
|
|
40
|
-
import {
|
|
41
|
-
SidebarFooter,
|
|
42
|
-
SidebarGroup,
|
|
43
|
-
SidebarGroupAction,
|
|
44
|
-
SidebarGroupActions,
|
|
45
|
-
SidebarGroupContent,
|
|
46
|
-
SidebarGroupLabel,
|
|
47
|
-
SidebarHeader,
|
|
48
|
-
SidebarInput,
|
|
49
|
-
SidebarInset,
|
|
50
|
-
SidebarProvider,
|
|
51
|
-
SidebarRail,
|
|
52
|
-
SidebarSeparator,
|
|
53
|
-
SidebarShell,
|
|
54
|
-
type SidebarSide,
|
|
55
|
-
SidebarTrigger,
|
|
56
|
-
useSidebar,
|
|
57
|
-
} from './sidebar-core'
|
|
58
|
-
import {
|
|
59
|
-
SidebarMenu,
|
|
60
|
-
SidebarMenuAction,
|
|
61
|
-
SidebarMenuActions,
|
|
62
|
-
SidebarMenuBadge,
|
|
63
|
-
SidebarMenuButton,
|
|
64
|
-
SidebarMenuItem,
|
|
65
|
-
SidebarMenuSkeleton,
|
|
66
|
-
SidebarMenuSub,
|
|
67
|
-
SidebarMenuSubButton,
|
|
68
|
-
SidebarMenuSubItem,
|
|
69
|
-
SidebarSelection,
|
|
70
|
-
} from './sidebar-menu'
|
|
71
|
-
|
|
72
|
-
function SidebarSheet({ side, children }: { side: SidebarSide; children: ReactNode }) {
|
|
73
|
-
const { openMobile, setOpenMobile, widthMobile } = useSidebar()
|
|
74
|
-
return (
|
|
75
|
-
<Sheet side={side} open={openMobile} onOpenChange={setOpenMobile}>
|
|
76
|
-
<Sheet.Content
|
|
77
|
-
aria-label="Sidebar"
|
|
78
|
-
data-sidebar="sidebar"
|
|
79
|
-
data-mobile="true"
|
|
80
|
-
data-side={side}
|
|
81
|
-
tier="moderate"
|
|
82
|
-
className="gap-0 overflow-hidden p-0"
|
|
83
|
-
style={{ width: widthMobile }}
|
|
84
|
-
>
|
|
85
|
-
{children}
|
|
86
|
-
</Sheet.Content>
|
|
87
|
-
</Sheet>
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// ─── Sidebar ─────────────────────────────────────────────────────────────────
|
|
92
|
-
|
|
93
|
-
interface SidebarProps
|
|
94
|
-
extends Omit<
|
|
95
|
-
HTMLAttributes<HTMLDivElement>,
|
|
96
|
-
| 'defaultValue'
|
|
97
|
-
| 'onDrag'
|
|
98
|
-
| 'onDragStart'
|
|
99
|
-
| 'onDragEnd'
|
|
100
|
-
| 'onAnimationStart'
|
|
101
|
-
| 'onAnimationEnd'
|
|
102
|
-
| 'onAnimationIteration'
|
|
103
|
-
> {
|
|
104
|
-
/** The edge it sits on; the shortcut key and the rail mirror it. Defaults to `'left'`. */
|
|
105
|
-
side?: 'left' | 'right'
|
|
106
|
-
/** `'sidebar'` sits flush with an inner border, `'floating'` lifts it onto its own card one surface level up, `'inset'` makes the main region the card. Defaults to `'sidebar'`. */
|
|
107
|
-
variant?: 'sidebar' | 'floating' | 'inset'
|
|
108
|
-
/** `'offcanvas'` collapses it away (rail, trigger, shortcut, open on hover, mobile drawer); `'none'` pins it open, with no rail or drawer — for a sidebar inside a dialog. Defaults to `'offcanvas'`. */
|
|
109
|
-
collapsible?: 'offcanvas' | 'none'
|
|
110
|
-
/** The `sidebar` variant's inner-edge border. Defaults to `true`. */
|
|
111
|
-
bordered?: boolean
|
|
112
|
-
/** Render the built-in resize/collapse rail on the inner edge. Defaults to `true`. */
|
|
113
|
-
rail?: boolean
|
|
114
|
-
/** Pin the rail's tooltip open (`true`) or closed (`false`); left out, it shows on hover. Dragging always hides it. */
|
|
115
|
-
railTooltipOpen?: boolean
|
|
116
|
-
/** Controlled selection: the menu button or sub-button whose `value` matches is the active row. */
|
|
117
|
-
value?: string
|
|
118
|
-
/** Initial selection, for an uncontrolled sidebar. */
|
|
119
|
-
defaultValue?: string
|
|
120
|
-
/** Called with the `value` of the row that was pressed. */
|
|
121
|
-
onValueChange?: (value: string) => void
|
|
122
|
-
/** Extra classes for the sidebar column (`h-full` pins it to a bounded frame). */
|
|
123
|
-
className?: string
|
|
124
|
-
/** The sidebar's parts: `Sidebar.Header`, `Sidebar.Content`, `Sidebar.Footer`. */
|
|
125
|
-
children?: ReactNode
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
type SidebarComponent = ForwardRefExoticComponent<SidebarProps & RefAttributes<HTMLDivElement>> & {
|
|
129
|
-
Provider: typeof SidebarProvider
|
|
130
|
-
Trigger: typeof SidebarTrigger
|
|
131
|
-
Rail: typeof SidebarRail
|
|
132
|
-
Inset: typeof SidebarInset
|
|
133
|
-
Input: typeof SidebarInput
|
|
134
|
-
Header: typeof SidebarHeader
|
|
135
|
-
Content: typeof SidebarContent
|
|
136
|
-
Footer: typeof SidebarFooter
|
|
137
|
-
Separator: typeof SidebarSeparator
|
|
138
|
-
Group: typeof SidebarGroup
|
|
139
|
-
GroupLabel: typeof SidebarGroupLabel
|
|
140
|
-
GroupAction: typeof SidebarGroupAction
|
|
141
|
-
GroupActions: typeof SidebarGroupActions
|
|
142
|
-
GroupContent: typeof SidebarGroupContent
|
|
143
|
-
Menu: typeof SidebarMenu
|
|
144
|
-
MenuItem: typeof SidebarMenuItem
|
|
145
|
-
MenuButton: typeof SidebarMenuButton
|
|
146
|
-
MenuAction: typeof SidebarMenuAction
|
|
147
|
-
MenuActions: typeof SidebarMenuActions
|
|
148
|
-
MenuBadge: typeof SidebarMenuBadge
|
|
149
|
-
MenuSkeleton: typeof SidebarMenuSkeleton
|
|
150
|
-
MenuSub: typeof SidebarMenuSub
|
|
151
|
-
MenuSubItem: typeof SidebarMenuSubItem
|
|
152
|
-
MenuSubButton: typeof SidebarMenuSubButton
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* A sidebar built from composable parts. Drag its edge to resize, collapse it
|
|
157
|
-
* away, and on mobile it becomes a drawer.
|
|
158
|
-
*
|
|
159
|
-
* Everything that moves here moves in the morph style (see Morph). The
|
|
160
|
-
* active row and the hover highlight are liquid: a new selection melts
|
|
161
|
-
* across from the old one, and the highlight drips from row to row, into a
|
|
162
|
-
* row's sub-menu too. On mobile it is a `Sheet` growing out of its edge
|
|
163
|
-
* that you swipe away. The menus in the header, the footer and on each row
|
|
164
|
-
* are Dropdowns, and the tooltips are Tooltips, so they grow out of their
|
|
165
|
-
* triggers too.
|
|
166
|
-
*
|
|
167
|
-
* Wrap the page in `Sidebar.Provider`, then put the `Sidebar` and a
|
|
168
|
-
* `Sidebar.Inset` (the main region) inside it. The provider holds the open
|
|
169
|
-
* state (`open` / `defaultOpen` / `onOpenChange`, kept in the `sidebar_state`
|
|
170
|
-
* cookie unless `persist={false}`), the `width` and `widthMobile`, the
|
|
171
|
-
* `mobileBreakpoint` under which it becomes a drawer, `openOnHover` (below)
|
|
172
|
-
* and the bare `shortcut` key (`[` for a left sidebar,
|
|
173
|
-
* `]` for a right one; `null` turns it off). It fills the viewport; pass
|
|
174
|
-
* `className="h-full min-h-0"` to fill a bounded frame instead.
|
|
175
|
-
*
|
|
176
|
-
* Drag the rail on the inner edge to resize the sidebar (160–360px); throw
|
|
177
|
-
* it at the edge to collapse, or click it. There is no icon-only rail on
|
|
178
|
-
* purpose: a collapsed sidebar opens whole on hover instead.
|
|
179
|
-
*
|
|
180
|
-
* With `openOnHover`, collapsing leaves the sidebar on hover: it opens, in
|
|
181
|
-
* flow, while the pointer is between its edge and the far side of a
|
|
182
|
-
* `Sidebar.Trigger` beside it (or a thin strip at the edge), and closes a
|
|
183
|
-
* beat after the pointer leaves. `open` is then whether it is kept open: the
|
|
184
|
-
* trigger switches between the two and draws a dashed glyph while on hover,
|
|
185
|
-
* and the rail collapses or resizes the hover without keeping it open.
|
|
186
|
-
*
|
|
187
|
-
* ## Rows
|
|
188
|
-
*
|
|
189
|
-
* - Two levels: `Sidebar.MenuButton` rows, each folding a
|
|
190
|
-
* `Sidebar.MenuSub` of `Sidebar.MenuSubButton` rows. A
|
|
191
|
-
* `Sidebar.MenuItem collapsible` toggles its sub-menu from its own button
|
|
192
|
-
* and draws the chevron.
|
|
193
|
-
* - Give a button a `value` and the sidebar's `value` / `defaultValue` picks
|
|
194
|
-
* the active row; pressing a row selects it. `isActive` still forces a row
|
|
195
|
-
* active.
|
|
196
|
-
* - `icon` puts a glyph in the leading slot; `status` (`'active'`,
|
|
197
|
-
* `'unread'`, `'idle'`) a thread's dot instead.
|
|
198
|
-
* - `Sidebar.MenuBadge` keeps the rightmost slot; up to three
|
|
199
|
-
* `Sidebar.MenuAction`s (in a `Sidebar.MenuActions` cluster) sit beside
|
|
200
|
-
* it, `showOnHover` so the label keeps the room at rest.
|
|
201
|
-
* - The rows share one fluid hover, one keyboard roving focus (arrows,
|
|
202
|
-
* Home, End) and one focus ring across both levels.
|
|
203
|
-
*
|
|
204
|
-
* ## Sections
|
|
205
|
-
*
|
|
206
|
-
* `Sidebar.Group` with a `Sidebar.GroupLabel` is a section; `collapsible`
|
|
207
|
-
* makes the label fold everything under it. `Sidebar.GroupActions` holds
|
|
208
|
-
* its `Sidebar.GroupAction` buttons over the label's right edge.
|
|
209
|
-
*
|
|
210
|
-
* Statics:
|
|
211
|
-
* - `Sidebar.Provider`, `Sidebar.Inset`, `Sidebar.Trigger` (the ghost icon
|
|
212
|
-
* button with the shortcut in its tooltip), `Sidebar.Rail`.
|
|
213
|
-
* - `Sidebar.Header`, `Sidebar.Content` (the scrolling region),
|
|
214
|
-
* `Sidebar.Footer`, `Sidebar.Separator`, `Sidebar.Input`.
|
|
215
|
-
* - `Sidebar.Group`, `Sidebar.GroupLabel`, `Sidebar.GroupAction`,
|
|
216
|
-
* `Sidebar.GroupActions`, `Sidebar.GroupContent`.
|
|
217
|
-
* - `Sidebar.Menu`, `Sidebar.MenuItem`, `Sidebar.MenuButton`,
|
|
218
|
-
* `Sidebar.MenuAction`, `Sidebar.MenuActions`, `Sidebar.MenuBadge`,
|
|
219
|
-
* `Sidebar.MenuSkeleton`, `Sidebar.MenuSub`, `Sidebar.MenuSubItem`,
|
|
220
|
-
* `Sidebar.MenuSubButton`.
|
|
221
|
-
* - `useSidebar()` (named export) reads the provider's state.
|
|
222
|
-
*
|
|
223
|
-
* @example {@include ./examples.mdx}
|
|
224
|
-
*/
|
|
225
|
-
const Sidebar = forwardRef<HTMLDivElement, SidebarProps>(
|
|
226
|
-
(
|
|
227
|
-
{
|
|
228
|
-
side = 'left',
|
|
229
|
-
variant = 'sidebar',
|
|
230
|
-
collapsible = 'offcanvas',
|
|
231
|
-
bordered = true,
|
|
232
|
-
rail = true,
|
|
233
|
-
railTooltipOpen,
|
|
234
|
-
value: valueProp,
|
|
235
|
-
defaultValue,
|
|
236
|
-
onValueChange,
|
|
237
|
-
className,
|
|
238
|
-
style,
|
|
239
|
-
children: parts,
|
|
240
|
-
...props
|
|
241
|
-
},
|
|
242
|
-
ref,
|
|
243
|
-
) => {
|
|
244
|
-
const { isMobile, width, registerSide } = useSidebar()
|
|
245
|
-
const [value, setValue] = useControllableState<string | undefined>(
|
|
246
|
-
valueProp,
|
|
247
|
-
defaultValue,
|
|
248
|
-
onValueChange as ((value: string | undefined) => void) | undefined,
|
|
249
|
-
)
|
|
250
|
-
const selection = useMemo(() => ({ value, select: setValue }), [value, setValue])
|
|
251
|
-
const children = <SidebarSelection.Provider value={selection}>{parts}</SidebarSelection.Provider>
|
|
252
|
-
|
|
253
|
-
// The provider mirrors the side into the default shortcut ("[" / "]")
|
|
254
|
-
// and the rail handle.
|
|
255
|
-
useEffect(() => registerSide(side), [side, registerSide])
|
|
256
|
-
|
|
257
|
-
if (collapsible === 'none') {
|
|
258
|
-
return (
|
|
259
|
-
<div
|
|
260
|
-
ref={ref}
|
|
261
|
-
data-slot="sidebar"
|
|
262
|
-
data-variant={variant}
|
|
263
|
-
data-side={side}
|
|
264
|
-
className={cn('peer sticky top-0 flex h-svh shrink-0 flex-col', side === 'right' && 'order-last', className)}
|
|
265
|
-
style={{ width, ...style } as CSSProperties}
|
|
266
|
-
{...props}
|
|
267
|
-
>
|
|
268
|
-
<div
|
|
269
|
-
data-sidebar="sidebar"
|
|
270
|
-
className={cn(
|
|
271
|
-
'flex h-full w-full min-h-0 flex-col',
|
|
272
|
-
bordered &&
|
|
273
|
-
variant === 'sidebar' &&
|
|
274
|
-
(side === 'left' ? 'border-r border-border' : 'border-l border-border'),
|
|
275
|
-
)}
|
|
276
|
-
>
|
|
277
|
-
{children}
|
|
278
|
-
</div>
|
|
279
|
-
</div>
|
|
280
|
-
)
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
// The desktop shell stays MOUNTED across the drawer breakpoint — its
|
|
284
|
-
// breakpoint classes fade it out (opacity + display, allow-discrete)
|
|
285
|
-
// instead of this component unmounting it, which snapped the rail away
|
|
286
|
-
// the instant the window shrank. The sheet mounts alongside it below the
|
|
287
|
-
// breakpoint; the hidden shell costs nothing visible (display: none).
|
|
288
|
-
return (
|
|
289
|
-
<>
|
|
290
|
-
{isMobile && <SidebarSheet side={side}>{children}</SidebarSheet>}
|
|
291
|
-
<SidebarShell
|
|
292
|
-
ref={ref}
|
|
293
|
-
side={side}
|
|
294
|
-
variant={variant}
|
|
295
|
-
bordered={bordered}
|
|
296
|
-
rail={rail}
|
|
297
|
-
railTooltipOpen={railTooltipOpen}
|
|
298
|
-
className={className}
|
|
299
|
-
style={style}
|
|
300
|
-
{...props}
|
|
301
|
-
>
|
|
302
|
-
{children}
|
|
303
|
-
</SidebarShell>
|
|
304
|
-
</>
|
|
305
|
-
)
|
|
306
|
-
},
|
|
307
|
-
) as SidebarComponent
|
|
308
|
-
Sidebar.displayName = 'Sidebar'
|
|
309
|
-
|
|
310
|
-
// ─── SidebarContent ──────────────────────────────────────────────────────────
|
|
311
|
-
|
|
312
|
-
export interface SidebarContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
313
|
-
viewportClassName?: string
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
const SidebarContent = forwardRef<HTMLDivElement, SidebarContentProps>(
|
|
317
|
-
({ className, viewportClassName, children, ...props }, ref) => {
|
|
318
|
-
const { isMobile } = useSidebar()
|
|
319
|
-
|
|
320
|
-
// Inside the mobile sheet, the sheet's flex column owns layout and this
|
|
321
|
-
// region scrolls natively — a nested ScrollArea would double-scroll. The
|
|
322
|
-
// boundary hairline still needs a frame to ride: scroll-divider can't sit
|
|
323
|
-
// on the scroller itself (its own fade mask would erase the line), so the
|
|
324
|
-
// region is wrapped the way ScrollArea wraps its viewport on desktop.
|
|
325
|
-
if (isMobile) {
|
|
326
|
-
return (
|
|
327
|
-
<div className="scroll-divider [--scroll-divider-inset:8px] flex min-h-0 w-full flex-1 flex-col">
|
|
328
|
-
<div
|
|
329
|
-
ref={ref}
|
|
330
|
-
data-sidebar="content"
|
|
331
|
-
className={cn('scroll-fade flex min-h-0 w-full flex-1 flex-col overflow-y-auto', className)}
|
|
332
|
-
{...props}
|
|
333
|
-
>
|
|
334
|
-
{children}
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
)
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
// The scroll primitive wraps children in an inline-styled sizer that
|
|
341
|
-
// sizes to content — rows would stop shrinking near the min width
|
|
342
|
-
// instead of truncating, so the viewport's direct child is forced back
|
|
343
|
-
// to a plain shrinkable block.
|
|
344
|
-
return (
|
|
345
|
-
<ScrollArea
|
|
346
|
-
className={cn('scroll-divider min-h-0 w-full flex-1', className)}
|
|
347
|
-
viewportClassName={cn('scroll-fade [&>div]:!block [&>div]:!min-w-0', viewportClassName)}
|
|
348
|
-
>
|
|
349
|
-
<div ref={ref} data-sidebar="content" className="flex w-full min-w-0 flex-col" {...props}>
|
|
350
|
-
{children}
|
|
351
|
-
</div>
|
|
352
|
-
</ScrollArea>
|
|
353
|
-
)
|
|
354
|
-
},
|
|
355
|
-
)
|
|
356
|
-
SidebarContent.displayName = 'SidebarContent'
|
|
357
|
-
|
|
358
|
-
Object.assign(Sidebar, {
|
|
359
|
-
Provider: SidebarProvider,
|
|
360
|
-
Trigger: SidebarTrigger,
|
|
361
|
-
Rail: SidebarRail,
|
|
362
|
-
Inset: SidebarInset,
|
|
363
|
-
Input: SidebarInput,
|
|
364
|
-
Header: SidebarHeader,
|
|
365
|
-
Content: SidebarContent,
|
|
366
|
-
Footer: SidebarFooter,
|
|
367
|
-
Separator: SidebarSeparator,
|
|
368
|
-
Group: SidebarGroup,
|
|
369
|
-
GroupLabel: SidebarGroupLabel,
|
|
370
|
-
GroupAction: SidebarGroupAction,
|
|
371
|
-
GroupActions: SidebarGroupActions,
|
|
372
|
-
GroupContent: SidebarGroupContent,
|
|
373
|
-
Menu: SidebarMenu,
|
|
374
|
-
MenuItem: SidebarMenuItem,
|
|
375
|
-
MenuButton: SidebarMenuButton,
|
|
376
|
-
MenuAction: SidebarMenuAction,
|
|
377
|
-
MenuActions: SidebarMenuActions,
|
|
378
|
-
MenuBadge: SidebarMenuBadge,
|
|
379
|
-
MenuSkeleton: SidebarMenuSkeleton,
|
|
380
|
-
MenuSub: SidebarMenuSub,
|
|
381
|
-
MenuSubItem: SidebarMenuSubItem,
|
|
382
|
-
MenuSubButton: SidebarMenuSubButton,
|
|
383
|
-
})
|
|
384
|
-
|
|
385
|
-
export type {
|
|
386
|
-
SidebarCollapsible,
|
|
387
|
-
SidebarContextValue,
|
|
388
|
-
SidebarGroupActionProps,
|
|
389
|
-
SidebarGroupLabelProps,
|
|
390
|
-
SidebarInputProps,
|
|
391
|
-
SidebarInsetProps,
|
|
392
|
-
SidebarProviderProps,
|
|
393
|
-
SidebarRailProps,
|
|
394
|
-
SidebarSectionProps,
|
|
395
|
-
SidebarSide,
|
|
396
|
-
SidebarTriggerProps,
|
|
397
|
-
SidebarVariant,
|
|
398
|
-
} from './sidebar-core'
|
|
399
|
-
// Re-export the flavor-neutral parts so `sidebar` is a one-stop import.
|
|
400
|
-
export {
|
|
401
|
-
SIDEBAR_COOKIE_MAX_AGE,
|
|
402
|
-
SIDEBAR_COOKIE_NAME,
|
|
403
|
-
SIDEBAR_KEYBOARD_SHORTCUT,
|
|
404
|
-
SIDEBAR_KEYBOARD_SHORTCUT_RIGHT,
|
|
405
|
-
SIDEBAR_MAX_WIDTH,
|
|
406
|
-
SIDEBAR_MIN_WIDTH,
|
|
407
|
-
SIDEBAR_WIDTH,
|
|
408
|
-
SIDEBAR_WIDTH_MOBILE,
|
|
409
|
-
SidebarFooter,
|
|
410
|
-
SidebarGroup,
|
|
411
|
-
SidebarGroupAction,
|
|
412
|
-
SidebarGroupActions,
|
|
413
|
-
SidebarGroupContent,
|
|
414
|
-
SidebarGroupLabel,
|
|
415
|
-
SidebarHeader,
|
|
416
|
-
SidebarInput,
|
|
417
|
-
SidebarInset,
|
|
418
|
-
SidebarProvider,
|
|
419
|
-
SidebarRail,
|
|
420
|
-
SidebarSeparator,
|
|
421
|
-
SidebarTrigger,
|
|
422
|
-
useSidebar,
|
|
423
|
-
} from './sidebar-core'
|
|
424
|
-
export type {
|
|
425
|
-
SidebarMenuActionProps,
|
|
426
|
-
SidebarMenuBadgeProps,
|
|
427
|
-
SidebarMenuButtonProps,
|
|
428
|
-
SidebarMenuItemProps,
|
|
429
|
-
SidebarMenuProps,
|
|
430
|
-
SidebarMenuSkeletonProps,
|
|
431
|
-
SidebarMenuSubButtonProps,
|
|
432
|
-
SidebarMenuSubItemProps,
|
|
433
|
-
SidebarMenuSubProps,
|
|
434
|
-
SidebarSelectionValue,
|
|
435
|
-
} from './sidebar-menu'
|
|
436
|
-
export {
|
|
437
|
-
SidebarMenu,
|
|
438
|
-
SidebarMenuAction,
|
|
439
|
-
SidebarMenuActions,
|
|
440
|
-
SidebarMenuBadge,
|
|
441
|
-
SidebarMenuButton,
|
|
442
|
-
SidebarMenuItem,
|
|
443
|
-
SidebarMenuSkeleton,
|
|
444
|
-
SidebarMenuSub,
|
|
445
|
-
SidebarMenuSubButton,
|
|
446
|
-
SidebarMenuSubItem,
|
|
447
|
-
SidebarSelection,
|
|
448
|
-
sidebarMenuButtonVariants,
|
|
449
|
-
} from './sidebar-menu'
|
|
450
|
-
export type { SidebarProps }
|
|
451
|
-
export { Sidebar, SidebarContent }
|
|
452
|
-
|
|
453
|
-
export default Sidebar
|