@justanarthur/modo-ui 0.6.0-canary.8 → 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-4y816hwp.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-t2a3qmy9.js → components-1z6tdadk.js} +24 -40
- package/dist/shared/{components-qs4rkqsj.js → components-27nnvrwe.js} +14 -15
- package/dist/shared/{components-av5t26rc.js → components-2dxkv6zm.js} +7 -8
- package/dist/shared/{components-wqrvqq5p.js → components-2ecg8svx.js} +152 -234
- package/dist/shared/{components-3ydr2fqe.js → components-2ph6t61s.js} +34 -37
- package/dist/shared/{components-6gk118w3.js → components-39jq9va1.js} +24 -29
- package/dist/shared/components-3ky44908.js +9 -0
- package/dist/shared/{components-y1qvbawa.js → components-3mkepka5.js} +25 -28
- package/dist/shared/{components-xqszvkj4.js → components-4700p9kz.js} +22 -24
- package/dist/shared/{components-yhgq0qxx.js → components-59efxjd9.js} +12 -13
- package/dist/shared/{components-9j9abkct.js → components-5vgpnxgy.js} +27 -51
- package/dist/shared/{components-8tt3xbb5.js → components-5xc2j8jz.js} +18 -19
- package/dist/shared/{components-jymmaevv.js → components-6p8tfcd6.js} +29 -57
- package/dist/shared/{components-4nck8acq.js → components-7r3etddy.js} +54 -19
- package/dist/shared/{components-skfd7kff.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-vkwq2k96.js → components-b3c5et5b.js} +38 -49
- package/dist/shared/{components-rrbpmfx4.js → components-c6s6b43g.js} +2 -3
- package/dist/shared/{components-pw06rbxq.js → components-chacnk61.js} +19 -19
- package/dist/shared/{components-71nbt03m.js → components-cv16mryv.js} +7 -26
- package/dist/shared/{components-eqze3y30.js → components-d6xtjht3.js} +30 -35
- package/dist/shared/{components-5y5shqfd.js → components-dk0gjr5a.js} +18 -19
- package/dist/shared/{components-khspp26b.js → components-fzrq6tr3.js} +34 -37
- package/dist/shared/{components-km7fhgbk.js → components-gc5vtq2f.js} +30 -66
- package/dist/shared/components-gf5s6ap9.js +42 -0
- package/dist/shared/{components-qqcmtrbv.js → components-gz8zf3ec.js} +55 -56
- package/dist/shared/{components-mattt5jp.js → components-h2ajmhwn.js} +35 -107
- package/dist/shared/{components-awra5sff.js → components-hqeq3w9q.js} +16 -24
- package/dist/shared/{components-5tzhqbcw.js → components-hw9yk32z.js} +24 -36
- package/dist/shared/components-hyq23phv.js +310 -0
- package/dist/shared/{components-8mt5bsv6.js → components-jbbmdr74.js} +22 -41
- package/dist/shared/{components-dcc02hs2.js → components-jjw69c4c.js} +4 -7
- package/dist/shared/{components-2syq4mwc.js → components-jthe1pwb.js} +420 -139
- package/dist/shared/{components-r7q1zm7r.js → components-jwst3vtj.js} +76 -224
- package/dist/shared/{components-qdm3yh26.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-6b0zb8z3.js → components-mjthm1kf.js} +9 -13
- package/dist/shared/{components-2c64r8c9.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-dyae0y7h.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-8rb25gbe.js → components-rr7a6ja9.js} +27 -59
- package/dist/shared/{components-5012r6gr.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-w0xq6q9k.js → components-w1r67ag9.js} +149 -294
- package/dist/shared/{components-z0bqtvcp.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-5sxjeh6h.js → components-y9y0g8er.js} +28 -52
- package/dist/shared/components-ypp01w3p.js +986 -0
- package/dist/shared/{components-t50hrswb.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-124epb7f.js +0 -53
- package/dist/shared/components-1kab3j44.js +0 -337
- package/dist/shared/components-26snnbs9.js +0 -322
- 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-7zkhz3r8.js +0 -399
- package/dist/shared/components-8v644a0s.js +0 -298
- package/dist/shared/components-a4evvq8h.js +0 -271
- 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-c9yr4ed1.js +0 -44
- package/dist/shared/components-cwg1d0w6.js +0 -254
- 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-ej4r7wmj.js +0 -482
- package/dist/shared/components-f7h57m6t.js +0 -59
- package/dist/shared/components-fejdzvqc.js +0 -448
- 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-mpa2y6x8.js +0 -277
- package/dist/shared/components-mrbaxt8q.js +0 -62
- package/dist/shared/components-pt5ftm4p.js +0 -38
- package/dist/shared/components-rpw4md2b.js +0 -179
- package/dist/shared/components-rtadhd9j.js +0 -64
- package/dist/shared/components-tz4gaf1v.js +0 -23
- package/dist/shared/components-wbbckbw8.js +0 -34
- 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/shared/components-z6dfqtyt.js +0 -1545
- 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 -557
- 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
package/lib/size-scale.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Vendored from Fluid Functionalism — `registry/default/lib/size-context.tsx` at
|
|
3
|
-
* github.com/mickadesign/fluid-functionalism@b3587bdbd83fc66c2a6aae3817ffb856cb09260b
|
|
4
|
-
* (fluidfunctionalism.com). MIT License © 2026 Micka Touillaud — see
|
|
5
|
-
* LICENSE.fluid-functionalism in this package.
|
|
6
|
-
*
|
|
7
|
-
* Local modifications:
|
|
8
|
-
* - The ladder's plain data (`sizeMap`, `typeScale` and their types), split out
|
|
9
|
-
* of `lib/size-context.tsx` so server code can read it: no JSX, hooks or
|
|
10
|
-
* contexts here. `size-context.tsx` re-exports all of it.
|
|
11
|
-
* - `sizeMap` text classes read DS tokens (AGENTS.md styling): `text-[13px]` /
|
|
12
|
-
* `text-[12px]` → `text-body` / `text-body-compact`.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
type SizeVariant = 'default' | 'compact'
|
|
16
|
-
|
|
17
|
-
interface SizeClasses {
|
|
18
|
-
/** The variant these classes belong to — handy for conditionals. */
|
|
19
|
-
variant: SizeVariant
|
|
20
|
-
/** Bounded control height — buttons, inputs, select triggers, subtle tabs —
|
|
21
|
-
* AND list/menu rows (select options, dropdown, checkbox and radio rows).
|
|
22
|
-
* One token by design: a popup row lines up with the trigger that opened
|
|
23
|
-
* it because they share this height. */
|
|
24
|
-
control: string
|
|
25
|
-
/** `control` as a number, for consumers that need raw pixels. */
|
|
26
|
-
controlHeight: number
|
|
27
|
-
/** Tab trigger height inside a padded segmented list. Sized so
|
|
28
|
-
* `segmentPad` + `segmentItem` adds back up to the control height —
|
|
29
|
-
* the segmented control's outer box stays on the same ladder. */
|
|
30
|
-
segmentItem: string
|
|
31
|
-
/** Padding of the segmented list around its tabs. */
|
|
32
|
-
segmentPad: string
|
|
33
|
-
/** Body text inside controls. */
|
|
34
|
-
text: string
|
|
35
|
-
/** Horizontal padding of bounded controls (select trigger, inputs). */
|
|
36
|
-
px: string
|
|
37
|
-
/** Horizontal padding of list/menu rows, which sit inside a padded popup
|
|
38
|
-
* or group and need less inset than a bounded control. */
|
|
39
|
-
itemPx: string
|
|
40
|
-
/** Gap between an icon / control glyph and its label, and between
|
|
41
|
-
* neighbouring controls in a row (toolbars, filter bars, button
|
|
42
|
-
* clusters). Density is spacing as much as control height, so the
|
|
43
|
-
* compact step halves it. */
|
|
44
|
-
gap: string
|
|
45
|
-
/** Glyph size in px: leading/trailing icons inside controls, and the
|
|
46
|
-
* checkbox square / radio circle. */
|
|
47
|
-
icon: number
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const sizeMap: Record<SizeVariant, SizeClasses> = {
|
|
51
|
-
// 36px — the default control height. Matches a 13px label with comfortable
|
|
52
|
-
// breathing room and keeps controls a workable pointer target.
|
|
53
|
-
default: {
|
|
54
|
-
variant: 'default',
|
|
55
|
-
control: 'h-9',
|
|
56
|
-
controlHeight: 36,
|
|
57
|
-
segmentItem: 'h-7',
|
|
58
|
-
segmentPad: 'p-1',
|
|
59
|
-
text: 'text-body',
|
|
60
|
-
px: 'px-3',
|
|
61
|
-
itemPx: 'px-2',
|
|
62
|
-
gap: 'gap-2',
|
|
63
|
-
icon: 16,
|
|
64
|
-
},
|
|
65
|
-
// 28px — the compact height for dense surfaces: filter bars, toolbars,
|
|
66
|
-
// table headers, sidebars. One step down in text (12px) and icon (14px)
|
|
67
|
-
// so the whole control shrinks together, not just its box.
|
|
68
|
-
compact: {
|
|
69
|
-
variant: 'compact',
|
|
70
|
-
control: 'h-7',
|
|
71
|
-
controlHeight: 28,
|
|
72
|
-
segmentItem: 'h-6',
|
|
73
|
-
segmentPad: 'p-0.5',
|
|
74
|
-
text: 'text-body-compact',
|
|
75
|
-
px: 'px-2.5',
|
|
76
|
-
itemPx: 'px-1.5',
|
|
77
|
-
gap: 'gap-1',
|
|
78
|
-
icon: 14,
|
|
79
|
-
},
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** One role of the type scale: px per ladder step. */
|
|
83
|
-
interface TypeScaleStep {
|
|
84
|
-
default: number
|
|
85
|
-
compact: number
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Role-based type scale, per ladder step (px values).
|
|
90
|
-
*
|
|
91
|
-
* The default column is the system as shipped; the compact column steps each
|
|
92
|
-
* role down one notch so dense regions read as a smaller sibling of the same
|
|
93
|
-
* hierarchy, not a squeezed copy. `body`, `caption`, and `subtitle` are what
|
|
94
|
-
* the sized components already render through `SizeClasses.text` and their
|
|
95
|
-
* compact conditionals; `display` and `title` are the page-level roles
|
|
96
|
-
* for consumers composing their own screens.
|
|
97
|
-
*/
|
|
98
|
-
const typeScale = {
|
|
99
|
-
/** Page titles. */
|
|
100
|
-
display: { default: 28, compact: 24 },
|
|
101
|
-
/** Section headings, dialog titles. */
|
|
102
|
-
title: { default: 16, compact: 15 },
|
|
103
|
-
/** Card titles, chat bubbles, emphasized rows. */
|
|
104
|
-
subtitle: { default: 14, compact: 13 },
|
|
105
|
-
/** Control labels and body copy — `SizeClasses.text`. */
|
|
106
|
-
body: { default: 13, compact: 12 },
|
|
107
|
-
/** Secondary text: descriptions, meta rows, errors, eyebrows and group
|
|
108
|
-
* labels (the former overline role — an uppercase or muted caption). */
|
|
109
|
-
caption: { default: 12, compact: 11 },
|
|
110
|
-
} as const satisfies Record<string, TypeScaleStep>
|
|
111
|
-
|
|
112
|
-
type TypeScaleRole = keyof typeof typeScale
|
|
113
|
-
|
|
114
|
-
export type { SizeClasses, SizeVariant, TypeScaleRole, TypeScaleStep }
|
|
115
|
-
export { sizeMap, typeScale }
|
package/lib/slot.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Local addition (not part of Fluid Functionalism): the trigger / close slot
|
|
3
|
-
* shape FF's Dialog uses, shared by every overlay part that wraps a control.
|
|
4
|
-
* Both spellings compose: `render={<Button/>}` (Base UI's composition API) or
|
|
5
|
-
* Radix-style `asChild` with a single child element. `cloneSlot` / `mergeSlotProps` /
|
|
6
|
-
* `composeRefs` are the other half: a wrapper clones its single child with its own props
|
|
7
|
-
* merged in, as Radix's Slot does (the child's props win, handlers chain, `className`
|
|
8
|
-
* joins, `style` merges, refs compose). `slotId` hands a slot element's `id` to the Base UI part
|
|
9
|
-
* that wraps it, so the part registers that id rather than a generated one.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
type ButtonHTMLAttributes,
|
|
14
|
-
type CSSProperties,
|
|
15
|
-
cloneElement,
|
|
16
|
-
isValidElement,
|
|
17
|
-
type MutableRefObject,
|
|
18
|
-
type ReactElement,
|
|
19
|
-
type ReactNode,
|
|
20
|
-
type Ref,
|
|
21
|
-
version,
|
|
22
|
-
} from 'react'
|
|
23
|
-
|
|
24
|
-
interface SlotProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
25
|
-
/** The element that becomes the control, e.g. a Button. Children fill it when it has none of its own. */
|
|
26
|
-
render?: ReactElement
|
|
27
|
-
/** Compose onto the single child instead. Both spellings work in both flavors. Defaults to `false`. */
|
|
28
|
-
asChild?: boolean
|
|
29
|
-
/** Control content when there is no render element, or the content of a render element that has none of its own. */
|
|
30
|
-
children?: ReactNode
|
|
31
|
-
/** Whether the render element is a native `<button>`: pass `false` for a `<div>` or a link, so Base UI adds the button role and keyboard handling itself. Parts not built on a Base UI button ignore it. Defaults to `true`. */
|
|
32
|
-
nativeButton?: boolean
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* The element a slot part renders: `render`, or the single child with `asChild`, or undefined for the
|
|
37
|
-
* part's own button. Base UI semantics: `children` fill a render element that has no children of its own
|
|
38
|
-
* (`render={<div/>}` + children → the div gets them); a render element's own children win.
|
|
39
|
-
*/
|
|
40
|
-
function slotRender(render: ReactElement | undefined, asChild: boolean | undefined, children: ReactNode) {
|
|
41
|
-
if (render) {
|
|
42
|
-
const own = (render.props as { children?: ReactNode }).children
|
|
43
|
-
return children === undefined || own !== undefined ? render : cloneElement(render, undefined, children)
|
|
44
|
-
}
|
|
45
|
-
return asChild && isValidElement(children) ? children : undefined
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The `id` a Base UI part should register: the slot element's own `id` when it has one, else the part's.
|
|
50
|
-
* Base UI merges a render element's props over its own, so an element `id` lands on the DOM node
|
|
51
|
-
* regardless; passing it to the part as well makes Base UI track that same id (a trigger's id is how its
|
|
52
|
-
* menu or popup finds it) instead of a generated one that no element carries.
|
|
53
|
-
*/
|
|
54
|
-
function slotId(element: unknown, id?: string): string | undefined {
|
|
55
|
-
const own = isValidElement(element) ? (element.props as { id?: unknown }).id : undefined
|
|
56
|
-
return typeof own === 'string' ? own : id
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** Calls every ref: callback refs with the node, object refs by assigning it. */
|
|
60
|
-
function composeRefs<T>(...refs: (Ref<T> | undefined | null)[]): (node: T | null) => void {
|
|
61
|
-
return node => {
|
|
62
|
-
for (const ref of refs) {
|
|
63
|
-
if (typeof ref === 'function') ref(node)
|
|
64
|
-
else if (ref) (ref as MutableRefObject<T | null>).current = node
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/** A child's ref: React 19 keeps it in `props.ref`, React 18 on the element; each warns when read the other way. */
|
|
70
|
-
const REACT_19 = parseInt(version, 10) >= 19
|
|
71
|
-
|
|
72
|
-
function elementRef(element: ReactElement): Ref<unknown> | undefined {
|
|
73
|
-
if (REACT_19) return (element.props as { ref?: Ref<unknown> }).ref
|
|
74
|
-
return (element as { ref?: Ref<unknown> }).ref
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Props for a slotted child, with Radix Slot semantics: the child's props win,
|
|
79
|
-
* `on*` handlers are chained (the child's first), `className` is joined and
|
|
80
|
-
* `style` is merged (the child's declarations win).
|
|
81
|
-
*/
|
|
82
|
-
function mergeSlotProps(slotProps: Record<string, unknown>, childProps: Record<string, unknown>) {
|
|
83
|
-
const merged: Record<string, unknown> = { ...slotProps, ...childProps }
|
|
84
|
-
for (const key of Object.keys(childProps)) {
|
|
85
|
-
const own = childProps[key]
|
|
86
|
-
const given = slotProps[key]
|
|
87
|
-
if (/^on[A-Z]/.test(key)) {
|
|
88
|
-
if (typeof given !== 'function') continue
|
|
89
|
-
if (typeof own === 'function') {
|
|
90
|
-
merged[key] = (...args: unknown[]) => {
|
|
91
|
-
own(...args)
|
|
92
|
-
given(...args)
|
|
93
|
-
}
|
|
94
|
-
} else merged[key] = given
|
|
95
|
-
} else if (key === 'style') {
|
|
96
|
-
merged[key] = { ...(given as CSSProperties | undefined), ...(own as CSSProperties | undefined) }
|
|
97
|
-
} else if (key === 'className') {
|
|
98
|
-
merged[key] = [given, own].filter(Boolean).join(' ')
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return merged
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Clones `child` with the slot's props merged in (see `mergeSlotProps`) and the slot's ref composed
|
|
106
|
-
* with the child's own, the way Radix's `Slot` composes onto its single child.
|
|
107
|
-
*/
|
|
108
|
-
function cloneSlot(child: ReactElement, slotProps: Record<string, unknown> = {}, slotRef?: Ref<unknown>) {
|
|
109
|
-
const own = elementRef(child)
|
|
110
|
-
const props = mergeSlotProps(slotProps, child.props as Record<string, unknown>)
|
|
111
|
-
return cloneElement(child, slotRef || own ? { ...props, ref: composeRefs(slotRef, own) } : props)
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export type { SlotProps }
|
|
115
|
-
export { cloneSlot, composeRefs, mergeSlotProps, slotId, slotRender }
|
package/lib/springs.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Vendored from Fluid Functionalism — `registry/default/lib/springs.ts` at
|
|
3
|
-
* github.com/mickadesign/fluid-functionalism@b3587bdbd83fc66c2a6aae3817ffb856cb09260b
|
|
4
|
-
* (fluidfunctionalism.com). MIT License © 2026 Micka Touillaud — see
|
|
5
|
-
* LICENSE.fluid-functionalism in this package.
|
|
6
|
-
*
|
|
7
|
-
* Local modifications:
|
|
8
|
-
* - `goo`: the morph engine's own tier (lib/use-morph.ts) for the goo effect,
|
|
9
|
-
* slower than `slow` so the liquid neck stays on screen long enough to read.
|
|
10
|
-
* It lands in about 200ms with a little bounce and closes on a spring, not
|
|
11
|
-
* a tween, so the neck reforms on the way back.
|
|
12
|
-
* - `exitFallbackMs` also reads a spring exit's `visualDuration`.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
// Motion tokens. Each tier's value is the ENTER transition — a critically
|
|
16
|
-
// damped spring, except the largest tier which keeps a little bounce. Its
|
|
17
|
-
// `.exit` is the matching EXIT transition — a plain tween, no bounce, one tier
|
|
18
|
-
// quicker — so a dismissal reads as crisp and final rather than replaying the
|
|
19
|
-
// entrance in reverse.
|
|
20
|
-
//
|
|
21
|
-
// transition={spring.fast} // enter
|
|
22
|
-
// exit={{ opacity: 0, transition: spring.fast.exit }} // leave
|
|
23
|
-
//
|
|
24
|
-
// The bigger the thing that moves, the slower the spring. Never hand-write a
|
|
25
|
-
// duration — always reach for a tier.
|
|
26
|
-
export const spring = {
|
|
27
|
-
fast: {
|
|
28
|
-
type: 'spring' as const,
|
|
29
|
-
duration: 0.08,
|
|
30
|
-
bounce: 0,
|
|
31
|
-
exit: { duration: 0.06 },
|
|
32
|
-
},
|
|
33
|
-
// Critically damped: same perceived speed as a bouncier tier, but lands
|
|
34
|
-
// exactly with no overshoot — for short travel and panels/sheets that must
|
|
35
|
-
// settle precisely (dropdowns, tabs, drawers, merged selection backgrounds).
|
|
36
|
-
moderate: {
|
|
37
|
-
type: 'spring' as const,
|
|
38
|
-
duration: 0.16,
|
|
39
|
-
bounce: 0,
|
|
40
|
-
exit: { duration: 0.12 },
|
|
41
|
-
},
|
|
42
|
-
slow: {
|
|
43
|
-
type: 'spring' as const,
|
|
44
|
-
duration: 0.24,
|
|
45
|
-
bounce: 0.12,
|
|
46
|
-
exit: { duration: 0.16 },
|
|
47
|
-
},
|
|
48
|
-
goo: {
|
|
49
|
-
type: 'spring' as const,
|
|
50
|
-
visualDuration: 0.25,
|
|
51
|
-
bounce: 0.15,
|
|
52
|
-
exit: { type: 'spring' as const, visualDuration: 0.2, bounce: 0 },
|
|
53
|
-
},
|
|
54
|
-
} as const
|
|
55
|
-
|
|
56
|
-
// Fallback delay (ms) for deferred-unmount timers that guard an exit tween:
|
|
57
|
-
// popups keep their portal mounted until onAnimationComplete fires, but a
|
|
58
|
-
// throttled/background tab can stall the animation, so a timer force-unmounts
|
|
59
|
-
// after the tier's exit duration plus a safety buffer. Deriving it here keeps
|
|
60
|
-
// the timers in step with the tokens above.
|
|
61
|
-
export const exitFallbackMs = (tier: { exit: { duration: number } | { visualDuration: number } }) =>
|
|
62
|
-
Math.round(('duration' in tier.exit ? tier.exit.duration : tier.exit.visualDuration) * 1000) + 100
|
package/lib/surface-classes.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Vendored from Fluid Functionalism — `registry/default/lib/surface-classes.ts` at
|
|
3
|
-
* github.com/mickadesign/fluid-functionalism@b3587bdbd83fc66c2a6aae3817ffb856cb09260b
|
|
4
|
-
* (fluidfunctionalism.com). MIT License © 2026 Micka Touillaud — see
|
|
5
|
-
* LICENSE.fluid-functionalism in this package.
|
|
6
|
-
*
|
|
7
|
-
* Local modifications:
|
|
8
|
-
* - `SURFACE_HOVER_BG`, `SURFACE_HOVER_SHADOW` and `surfaceHoverClasses`
|
|
9
|
-
* dropped — only the omitted Sidebar used them.
|
|
10
|
-
* - The literal-lookup rationale below applies to UnoCSS unchanged: its
|
|
11
|
-
* extractor also only sees whole class names in source.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Static lookup tables for surface tokens.
|
|
16
|
-
*
|
|
17
|
-
* Tailwind v4's static scanner only generates utility classes for literal
|
|
18
|
-
* strings it sees in source. Template-literal class names like
|
|
19
|
-
* `bg-surface-${level}` are invisible to the scanner, so the matching
|
|
20
|
-
* utility never gets generated and the background renders transparent.
|
|
21
|
-
*
|
|
22
|
-
* Use these maps when picking a surface level at runtime:
|
|
23
|
-
*
|
|
24
|
-
* <div className={surfaceClasses(level)} />
|
|
25
|
-
*
|
|
26
|
-
* Each entry below contains the literal class name, which is enough for
|
|
27
|
-
* Tailwind to detect and emit the utility.
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
export const SURFACE_BG: Record<number, string> = {
|
|
31
|
-
1: 'bg-surface-1',
|
|
32
|
-
2: 'bg-surface-2',
|
|
33
|
-
3: 'bg-surface-3',
|
|
34
|
-
4: 'bg-surface-4',
|
|
35
|
-
5: 'bg-surface-5',
|
|
36
|
-
6: 'bg-surface-6',
|
|
37
|
-
7: 'bg-surface-7',
|
|
38
|
-
8: 'bg-surface-8',
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export const SURFACE_SHADOW: Record<number, string> = {
|
|
42
|
-
1: 'shadow-surface-1',
|
|
43
|
-
2: 'shadow-surface-2',
|
|
44
|
-
3: 'shadow-surface-3',
|
|
45
|
-
4: 'shadow-surface-4',
|
|
46
|
-
5: 'shadow-surface-5',
|
|
47
|
-
6: 'shadow-surface-6',
|
|
48
|
-
7: 'shadow-surface-7',
|
|
49
|
-
8: 'shadow-surface-8',
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export function surfaceClasses(bgLevel: number, shadowLevel: number = bgLevel): string {
|
|
53
|
-
// Round after clamping so a fractional level can't index out of the lookup
|
|
54
|
-
// tables (which would render "undefined undefined").
|
|
55
|
-
const bg = Math.round(Math.max(1, Math.min(8, bgLevel)))
|
|
56
|
-
const shadow = Math.round(Math.max(1, Math.min(8, shadowLevel)))
|
|
57
|
-
return `${SURFACE_BG[bg]} ${SURFACE_SHADOW[shadow]}`
|
|
58
|
-
}
|
package/lib/surface-context.tsx
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Vendored from Fluid Functionalism — `registry/default/lib/surface-context.tsx` at
|
|
3
|
-
* github.com/mickadesign/fluid-functionalism@b3587bdbd83fc66c2a6aae3817ffb856cb09260b
|
|
4
|
-
* (fluidfunctionalism.com). MIT License © 2026 Micka Touillaud — see
|
|
5
|
-
* LICENSE.fluid-functionalism in this package.
|
|
6
|
-
*
|
|
7
|
-
* Local modifications:
|
|
8
|
-
* - `"use client"` directive dropped (no RSC here).
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { createContext, type ReactNode, useContext } from 'react'
|
|
12
|
-
|
|
13
|
-
const SurfaceContext = createContext<number>(1)
|
|
14
|
-
|
|
15
|
-
export function useSurface(): number {
|
|
16
|
-
return useContext(SurfaceContext)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function SurfaceProvider({ value, children }: { value: number; children: ReactNode }) {
|
|
20
|
-
return <SurfaceContext.Provider value={Math.max(1, Math.min(8, value))}>{children}</SurfaceContext.Provider>
|
|
21
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { useCallback, useRef, useState } from 'react'
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Local addition (not part of Fluid Functionalism): controlled + uncontrolled
|
|
5
|
-
* state the way Base UI components take it. Several FF wrappers are
|
|
6
|
-
* controlled-only (`checked`, `value`, `selectedIndex`, …); each gains a
|
|
7
|
-
* `default*` counterpart backed by this hook, so a component works with no
|
|
8
|
-
* state of its own in the caller.
|
|
9
|
-
*
|
|
10
|
-
* The component is controlled while `value !== undefined`: it renders
|
|
11
|
-
* `value` and only reports changes through `onChange`. Otherwise it keeps its
|
|
12
|
-
* own state, seeded from `defaultValue` (read once, like `useState`), and
|
|
13
|
-
* still reports every change. The setter is stable, accepts an updater
|
|
14
|
-
* function, and skips no-op updates (`Object.is`).
|
|
15
|
-
*/
|
|
16
|
-
export function useControllableState<T>(
|
|
17
|
-
value: T | undefined,
|
|
18
|
-
defaultValue: T,
|
|
19
|
-
onChange?: (value: T) => void,
|
|
20
|
-
): [T, (next: T | ((prev: T) => T)) => void] {
|
|
21
|
-
const [internal, setInternal] = useState<T>(defaultValue)
|
|
22
|
-
const controlled = value !== undefined
|
|
23
|
-
const current = controlled ? (value as T) : internal
|
|
24
|
-
|
|
25
|
-
// Latest render's values, so the stable setter never reads a stale closure
|
|
26
|
-
// and back-to-back updater calls chain off each other.
|
|
27
|
-
const currentRef = useRef(current)
|
|
28
|
-
currentRef.current = current
|
|
29
|
-
const controlledRef = useRef(controlled)
|
|
30
|
-
controlledRef.current = controlled
|
|
31
|
-
const onChangeRef = useRef(onChange)
|
|
32
|
-
onChangeRef.current = onChange
|
|
33
|
-
|
|
34
|
-
const setValue = useCallback((next: T | ((prev: T) => T)) => {
|
|
35
|
-
const prev = currentRef.current
|
|
36
|
-
const resolved = typeof next === 'function' ? (next as (prev: T) => T)(prev) : next
|
|
37
|
-
if (Object.is(resolved, prev)) return
|
|
38
|
-
currentRef.current = resolved
|
|
39
|
-
if (!controlledRef.current) setInternal(resolved)
|
|
40
|
-
onChangeRef.current?.(resolved)
|
|
41
|
-
}, [])
|
|
42
|
-
|
|
43
|
-
return [current, setValue]
|
|
44
|
-
}
|