@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,68 +1,51 @@
|
|
|
1
|
-
"use client";
|
|
2
1
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
useMorphOrigin2,
|
|
9
|
-
useMorph2
|
|
10
|
-
} from "./components-m06yq8wk.js";
|
|
2
|
+
opensInPlace,
|
|
3
|
+
inPlaceOffset,
|
|
4
|
+
useMorphOrigin,
|
|
5
|
+
useMorph
|
|
6
|
+
} from "./components-hqeq3w9q.js";
|
|
11
7
|
import {
|
|
12
8
|
cn2
|
|
13
|
-
} from "./components-
|
|
9
|
+
} from "./components-ezxhrmer.js";
|
|
14
10
|
import {
|
|
15
11
|
FluidHoverHighlight2
|
|
16
|
-
} from "./components-
|
|
12
|
+
} from "./components-kvr7f9hy.js";
|
|
17
13
|
import {
|
|
18
|
-
|
|
19
|
-
} from "./components-
|
|
14
|
+
useIcon
|
|
15
|
+
} from "./components-zrkzcayz.js";
|
|
20
16
|
import {
|
|
21
|
-
|
|
22
|
-
} from "./components-
|
|
17
|
+
MorphSurface
|
|
18
|
+
} from "./components-0q0sqfh4.js";
|
|
23
19
|
import {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} from "./components-
|
|
20
|
+
shapeMap,
|
|
21
|
+
useShape
|
|
22
|
+
} from "./components-cv16mryv.js";
|
|
27
23
|
import {
|
|
28
24
|
useSize2
|
|
29
|
-
} from "./components-
|
|
30
|
-
import {
|
|
31
|
-
SURFACE_BG2,
|
|
32
|
-
SURFACE_SHADOW2,
|
|
33
|
-
surfaceClasses2
|
|
34
|
-
} from "./components-vf45j12c.js";
|
|
25
|
+
} from "./components-0sn7ypjw.js";
|
|
35
26
|
import {
|
|
27
|
+
SURFACE_BG,
|
|
28
|
+
SURFACE_SHADOW,
|
|
29
|
+
surfaceClasses2,
|
|
36
30
|
useSurface2,
|
|
37
31
|
SurfaceProvider2
|
|
38
|
-
} from "./components-
|
|
32
|
+
} from "./components-zx6b6yby.js";
|
|
39
33
|
import {
|
|
40
34
|
useFluidHover2,
|
|
41
35
|
useRegisterFluidHoverItem2
|
|
42
|
-
} from "./components-
|
|
36
|
+
} from "./components-59efxjd9.js";
|
|
43
37
|
import {
|
|
44
38
|
SizeProvider2
|
|
45
|
-
} from "./components-
|
|
39
|
+
} from "./components-jjw69c4c.js";
|
|
46
40
|
import {
|
|
47
41
|
Tooltip2
|
|
48
|
-
} from "./components-
|
|
42
|
+
} from "./components-ng72k97e.js";
|
|
49
43
|
import {
|
|
50
44
|
Slider2
|
|
51
|
-
} from "./components-
|
|
45
|
+
} from "./components-wvp1m52g.js";
|
|
52
46
|
import {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
rgbToHsv2,
|
|
56
|
-
rgbToHsl2,
|
|
57
|
-
hslToRgb2,
|
|
58
|
-
rgbToOklch2,
|
|
59
|
-
oklchToRgb2,
|
|
60
|
-
rgbToHexStr2,
|
|
61
|
-
parseColor2,
|
|
62
|
-
resolveCssColor2,
|
|
63
|
-
buildParsed2,
|
|
64
|
-
formatValueByFormat2
|
|
65
|
-
} from "./components-26snnbs9.js";
|
|
47
|
+
spring2
|
|
48
|
+
} from "./components-1v7rxytx.js";
|
|
66
49
|
|
|
67
50
|
// components/inputs/color-picker/index.tsx
|
|
68
51
|
import { Menu } from "@base-ui/react/menu";
|
|
@@ -88,6 +71,326 @@ function ColorPickerPortalContainer2({ value, children }) {
|
|
|
88
71
|
});
|
|
89
72
|
}
|
|
90
73
|
var PanelSurfaceContext = createContext(true);
|
|
74
|
+
function clamp01(n) {
|
|
75
|
+
return Math.max(0, Math.min(1, n));
|
|
76
|
+
}
|
|
77
|
+
function clamp255(n) {
|
|
78
|
+
return Math.max(0, Math.min(255, n));
|
|
79
|
+
}
|
|
80
|
+
function hsvToRgb(h, s, v) {
|
|
81
|
+
const c = v * s;
|
|
82
|
+
const hh = (h % 360 + 360) % 360 / 60;
|
|
83
|
+
const x = c * (1 - Math.abs(hh % 2 - 1));
|
|
84
|
+
let r = 0, g = 0, b = 0;
|
|
85
|
+
if (hh < 1) {
|
|
86
|
+
r = c;
|
|
87
|
+
g = x;
|
|
88
|
+
b = 0;
|
|
89
|
+
} else if (hh < 2) {
|
|
90
|
+
r = x;
|
|
91
|
+
g = c;
|
|
92
|
+
b = 0;
|
|
93
|
+
} else if (hh < 3) {
|
|
94
|
+
r = 0;
|
|
95
|
+
g = c;
|
|
96
|
+
b = x;
|
|
97
|
+
} else if (hh < 4) {
|
|
98
|
+
r = 0;
|
|
99
|
+
g = x;
|
|
100
|
+
b = c;
|
|
101
|
+
} else if (hh < 5) {
|
|
102
|
+
r = x;
|
|
103
|
+
g = 0;
|
|
104
|
+
b = c;
|
|
105
|
+
} else {
|
|
106
|
+
r = c;
|
|
107
|
+
g = 0;
|
|
108
|
+
b = x;
|
|
109
|
+
}
|
|
110
|
+
const m = v - c;
|
|
111
|
+
return { r: (r + m) * 255, g: (g + m) * 255, b: (b + m) * 255 };
|
|
112
|
+
}
|
|
113
|
+
function rgbToHsv(r, g, b) {
|
|
114
|
+
r /= 255;
|
|
115
|
+
g /= 255;
|
|
116
|
+
b /= 255;
|
|
117
|
+
const max = Math.max(r, g, b);
|
|
118
|
+
const min = Math.min(r, g, b);
|
|
119
|
+
const v = max;
|
|
120
|
+
const d = max - min;
|
|
121
|
+
const s = max === 0 ? 0 : d / max;
|
|
122
|
+
let h = 0;
|
|
123
|
+
if (d > 0) {
|
|
124
|
+
if (max === r)
|
|
125
|
+
h = (g - b) / d % 6;
|
|
126
|
+
else if (max === g)
|
|
127
|
+
h = (b - r) / d + 2;
|
|
128
|
+
else
|
|
129
|
+
h = (r - g) / d + 4;
|
|
130
|
+
h *= 60;
|
|
131
|
+
if (h < 0)
|
|
132
|
+
h += 360;
|
|
133
|
+
}
|
|
134
|
+
return { h, s, v };
|
|
135
|
+
}
|
|
136
|
+
function rgbToHsl(r, g, b) {
|
|
137
|
+
r /= 255;
|
|
138
|
+
g /= 255;
|
|
139
|
+
b /= 255;
|
|
140
|
+
const max = Math.max(r, g, b);
|
|
141
|
+
const min = Math.min(r, g, b);
|
|
142
|
+
const l = (max + min) / 2;
|
|
143
|
+
const d = max - min;
|
|
144
|
+
let h = 0, s = 0;
|
|
145
|
+
if (d > 0) {
|
|
146
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
147
|
+
if (max === r)
|
|
148
|
+
h = (g - b) / d % 6;
|
|
149
|
+
else if (max === g)
|
|
150
|
+
h = (b - r) / d + 2;
|
|
151
|
+
else
|
|
152
|
+
h = (r - g) / d + 4;
|
|
153
|
+
h *= 60;
|
|
154
|
+
if (h < 0)
|
|
155
|
+
h += 360;
|
|
156
|
+
}
|
|
157
|
+
return { h, s, l };
|
|
158
|
+
}
|
|
159
|
+
function hslToRgb(h, s, l) {
|
|
160
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
161
|
+
const hh = (h % 360 + 360) % 360 / 60;
|
|
162
|
+
const x = c * (1 - Math.abs(hh % 2 - 1));
|
|
163
|
+
let r = 0, g = 0, b = 0;
|
|
164
|
+
if (hh < 1) {
|
|
165
|
+
r = c;
|
|
166
|
+
g = x;
|
|
167
|
+
} else if (hh < 2) {
|
|
168
|
+
r = x;
|
|
169
|
+
g = c;
|
|
170
|
+
} else if (hh < 3) {
|
|
171
|
+
g = c;
|
|
172
|
+
b = x;
|
|
173
|
+
} else if (hh < 4) {
|
|
174
|
+
g = x;
|
|
175
|
+
b = c;
|
|
176
|
+
} else if (hh < 5) {
|
|
177
|
+
r = x;
|
|
178
|
+
b = c;
|
|
179
|
+
} else {
|
|
180
|
+
r = c;
|
|
181
|
+
b = x;
|
|
182
|
+
}
|
|
183
|
+
const m = l - c / 2;
|
|
184
|
+
return { r: (r + m) * 255, g: (g + m) * 255, b: (b + m) * 255 };
|
|
185
|
+
}
|
|
186
|
+
function srgbToLinear(c) {
|
|
187
|
+
c = c / 255;
|
|
188
|
+
return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
189
|
+
}
|
|
190
|
+
function linearToSrgb(c) {
|
|
191
|
+
const v = c <= 0.0031308 ? 12.92 * c : 1.055 * c ** (1 / 2.4) - 0.055;
|
|
192
|
+
return clamp01(v) * 255;
|
|
193
|
+
}
|
|
194
|
+
function linearRgbToOklab(r, g, b) {
|
|
195
|
+
const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
|
|
196
|
+
const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
|
|
197
|
+
const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
|
|
198
|
+
const l_ = Math.cbrt(l);
|
|
199
|
+
const m_ = Math.cbrt(m);
|
|
200
|
+
const s_ = Math.cbrt(s);
|
|
201
|
+
return {
|
|
202
|
+
L: 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,
|
|
203
|
+
a: 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,
|
|
204
|
+
b: 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function oklabToLinearRgb(L, a, b) {
|
|
208
|
+
const l_ = L + 0.3963377774 * a + 0.2158037573 * b;
|
|
209
|
+
const m_ = L - 0.1055613458 * a - 0.0638541728 * b;
|
|
210
|
+
const s_ = L - 0.0894841775 * a - 1.291485548 * b;
|
|
211
|
+
const l = l_ * l_ * l_;
|
|
212
|
+
const m = m_ * m_ * m_;
|
|
213
|
+
const s = s_ * s_ * s_;
|
|
214
|
+
return {
|
|
215
|
+
r: 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
|
|
216
|
+
g: -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
|
|
217
|
+
b: -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function rgbToOklch(r, g, b) {
|
|
221
|
+
const lr = srgbToLinear(r);
|
|
222
|
+
const lg = srgbToLinear(g);
|
|
223
|
+
const lb = srgbToLinear(b);
|
|
224
|
+
const lab = linearRgbToOklab(lr, lg, lb);
|
|
225
|
+
const C = Math.sqrt(lab.a * lab.a + lab.b * lab.b);
|
|
226
|
+
let H = Math.atan2(lab.b, lab.a) * 180 / Math.PI;
|
|
227
|
+
if (H < 0)
|
|
228
|
+
H += 360;
|
|
229
|
+
return { L: lab.L, C, H };
|
|
230
|
+
}
|
|
231
|
+
function oklchToRgb(L, C, H) {
|
|
232
|
+
const a = C * Math.cos(H * Math.PI / 180);
|
|
233
|
+
const b = C * Math.sin(H * Math.PI / 180);
|
|
234
|
+
const lin = oklabToLinearRgb(L, a, b);
|
|
235
|
+
return {
|
|
236
|
+
r: clamp255(linearToSrgb(lin.r)),
|
|
237
|
+
g: clamp255(linearToSrgb(lin.g)),
|
|
238
|
+
b: clamp255(linearToSrgb(lin.b))
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function to2hex(n) {
|
|
242
|
+
return Math.round(clamp255(n)).toString(16).padStart(2, "0");
|
|
243
|
+
}
|
|
244
|
+
function rgbToHexStr(r, g, b, a) {
|
|
245
|
+
if (a >= 1)
|
|
246
|
+
return `#${to2hex(r)}${to2hex(g)}${to2hex(b)}`;
|
|
247
|
+
return `#${to2hex(r)}${to2hex(g)}${to2hex(b)}${to2hex(a * 255)}`;
|
|
248
|
+
}
|
|
249
|
+
function expandShortHex(h) {
|
|
250
|
+
if (h.length === 3)
|
|
251
|
+
return h.split("").map((c) => c + c).join("");
|
|
252
|
+
if (h.length === 4)
|
|
253
|
+
return h.split("").map((c) => c + c).join("");
|
|
254
|
+
return h;
|
|
255
|
+
}
|
|
256
|
+
function parseHex(input) {
|
|
257
|
+
const m = input.trim().match(/^#?([0-9a-fA-F]{3,8})$/);
|
|
258
|
+
if (!m)
|
|
259
|
+
return null;
|
|
260
|
+
let h = m[1];
|
|
261
|
+
if (h.length === 3 || h.length === 4)
|
|
262
|
+
h = expandShortHex(h);
|
|
263
|
+
if (h.length === 6) {
|
|
264
|
+
return {
|
|
265
|
+
r: parseInt(h.slice(0, 2), 16),
|
|
266
|
+
g: parseInt(h.slice(2, 4), 16),
|
|
267
|
+
b: parseInt(h.slice(4, 6), 16),
|
|
268
|
+
a: 1
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
if (h.length === 8) {
|
|
272
|
+
return {
|
|
273
|
+
r: parseInt(h.slice(0, 2), 16),
|
|
274
|
+
g: parseInt(h.slice(2, 4), 16),
|
|
275
|
+
b: parseInt(h.slice(4, 6), 16),
|
|
276
|
+
a: parseInt(h.slice(6, 8), 16) / 255
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
function parseAlphaPart(part) {
|
|
282
|
+
if (part === undefined)
|
|
283
|
+
return 1;
|
|
284
|
+
return part.endsWith("%") ? parseFloat(part) / 100 : parseFloat(part);
|
|
285
|
+
}
|
|
286
|
+
function parseColor2(input) {
|
|
287
|
+
const s = input.trim();
|
|
288
|
+
if (!s)
|
|
289
|
+
return null;
|
|
290
|
+
if (s.startsWith("#") || /^[0-9a-fA-F]{3,8}$/.test(s)) {
|
|
291
|
+
return parseHex(s);
|
|
292
|
+
}
|
|
293
|
+
const rgbM = s.match(/^rgba?\(\s*([^)]+)\)$/i);
|
|
294
|
+
if (rgbM) {
|
|
295
|
+
const parts = rgbM[1].split(/[\s,/]+/).filter(Boolean);
|
|
296
|
+
if (parts.length < 3)
|
|
297
|
+
return null;
|
|
298
|
+
const r = parseFloat(parts[0]);
|
|
299
|
+
const g = parseFloat(parts[1]);
|
|
300
|
+
const b = parseFloat(parts[2]);
|
|
301
|
+
const a = parseAlphaPart(parts[3]);
|
|
302
|
+
if ([r, g, b, a].some(Number.isNaN))
|
|
303
|
+
return null;
|
|
304
|
+
return { r: clamp255(r), g: clamp255(g), b: clamp255(b), a: clamp01(a) };
|
|
305
|
+
}
|
|
306
|
+
const hslM = s.match(/^hsla?\(\s*([^)]+)\)$/i);
|
|
307
|
+
if (hslM) {
|
|
308
|
+
const parts = hslM[1].split(/[\s,/]+/).filter(Boolean);
|
|
309
|
+
if (parts.length < 3)
|
|
310
|
+
return null;
|
|
311
|
+
const h = parseFloat(parts[0]);
|
|
312
|
+
const sat = parts[1].endsWith("%") ? parseFloat(parts[1]) / 100 : parseFloat(parts[1]);
|
|
313
|
+
const l = parts[2].endsWith("%") ? parseFloat(parts[2]) / 100 : parseFloat(parts[2]);
|
|
314
|
+
const a = parseAlphaPart(parts[3]);
|
|
315
|
+
if ([h, sat, l, a].some(Number.isNaN))
|
|
316
|
+
return null;
|
|
317
|
+
const rgb = hslToRgb(h, clamp01(sat), clamp01(l));
|
|
318
|
+
return { r: clamp255(rgb.r), g: clamp255(rgb.g), b: clamp255(rgb.b), a: clamp01(a) };
|
|
319
|
+
}
|
|
320
|
+
const oklchM = s.match(/^oklch\(\s*([^)]+)\)$/i);
|
|
321
|
+
if (oklchM) {
|
|
322
|
+
const parts = oklchM[1].split(/[\s,/]+/).filter(Boolean);
|
|
323
|
+
if (parts.length < 3)
|
|
324
|
+
return null;
|
|
325
|
+
const L = parts[0].endsWith("%") ? parseFloat(parts[0]) / 100 : parseFloat(parts[0]);
|
|
326
|
+
const C = parseFloat(parts[1]);
|
|
327
|
+
const H = parseFloat(parts[2]);
|
|
328
|
+
const a = parseAlphaPart(parts[3]);
|
|
329
|
+
if ([L, C, H, a].some(Number.isNaN))
|
|
330
|
+
return null;
|
|
331
|
+
const rgb = oklchToRgb(clamp01(L), Math.max(0, C), H);
|
|
332
|
+
return { r: clamp255(rgb.r), g: clamp255(rgb.g), b: clamp255(rgb.b), a: clamp01(a) };
|
|
333
|
+
}
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
var cssColorCtx = null;
|
|
337
|
+
function resolveCssColor(input) {
|
|
338
|
+
const direct = parseColor2(input);
|
|
339
|
+
if (direct)
|
|
340
|
+
return direct;
|
|
341
|
+
const s = input.trim();
|
|
342
|
+
if (!s || typeof document === "undefined")
|
|
343
|
+
return null;
|
|
344
|
+
if (!cssColorCtx) {
|
|
345
|
+
cssColorCtx = document.createElement("canvas").getContext("2d");
|
|
346
|
+
if (!cssColorCtx)
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
const ctx = cssColorCtx;
|
|
350
|
+
ctx.fillStyle = "#000000";
|
|
351
|
+
ctx.fillStyle = s;
|
|
352
|
+
const first = String(ctx.fillStyle);
|
|
353
|
+
ctx.fillStyle = "#ffffff";
|
|
354
|
+
ctx.fillStyle = s;
|
|
355
|
+
const second = String(ctx.fillStyle);
|
|
356
|
+
if (first !== second)
|
|
357
|
+
return null;
|
|
358
|
+
return parseColor2(first);
|
|
359
|
+
}
|
|
360
|
+
function buildParsed2(h, s, v, a) {
|
|
361
|
+
const { r, g, b } = hsvToRgb(h, s, v);
|
|
362
|
+
const hsl = rgbToHsl(r, g, b);
|
|
363
|
+
const oklch = rgbToOklch(r, g, b);
|
|
364
|
+
const hex = rgbToHexStr(r, g, b, a);
|
|
365
|
+
const rgbStr = a >= 1 ? `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})` : `rgba(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}, ${Number(a.toFixed(3))})`;
|
|
366
|
+
const hslStr = a >= 1 ? `hsl(${Math.round(hsl.h)}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%)` : `hsla(${Math.round(hsl.h)}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%, ${Number(a.toFixed(3))})`;
|
|
367
|
+
const oklchStr = a >= 1 ? `oklch(${(oklch.L * 100).toFixed(1)}% ${oklch.C.toFixed(3)} ${oklch.H.toFixed(1)})` : `oklch(${(oklch.L * 100).toFixed(1)}% ${oklch.C.toFixed(3)} ${oklch.H.toFixed(1)} / ${Number(a.toFixed(3))})`;
|
|
368
|
+
return {
|
|
369
|
+
h,
|
|
370
|
+
s,
|
|
371
|
+
v,
|
|
372
|
+
a,
|
|
373
|
+
r: Math.round(r),
|
|
374
|
+
g: Math.round(g),
|
|
375
|
+
b: Math.round(b),
|
|
376
|
+
hex,
|
|
377
|
+
rgb: rgbStr,
|
|
378
|
+
hsl: hslStr,
|
|
379
|
+
oklch: oklchStr
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
function formatValueByFormat(parsed, fmt) {
|
|
383
|
+
switch (fmt) {
|
|
384
|
+
case "hex":
|
|
385
|
+
return parsed.hex;
|
|
386
|
+
case "rgb":
|
|
387
|
+
return parsed.rgb;
|
|
388
|
+
case "hsl":
|
|
389
|
+
return parsed.hsl;
|
|
390
|
+
case "oklch":
|
|
391
|
+
return parsed.oklch;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
91
394
|
var PANEL_WIDTH = 280;
|
|
92
395
|
var SQUARE_HEIGHT = 156;
|
|
93
396
|
var CHECKER_BG = {
|
|
@@ -101,13 +404,13 @@ function SaturationSquare({ h, s, v, onChange }) {
|
|
|
101
404
|
const [focused, setFocused] = useState(false);
|
|
102
405
|
const [hovered, setHovered] = useState(false);
|
|
103
406
|
const [cursorPos, setCursorPos] = useState(null);
|
|
104
|
-
const shape =
|
|
407
|
+
const shape = useShape();
|
|
105
408
|
const updateFromPointer = useCallback((clientX, clientY) => {
|
|
106
409
|
const rect = ref.current?.getBoundingClientRect();
|
|
107
410
|
if (!rect)
|
|
108
411
|
return;
|
|
109
|
-
const x =
|
|
110
|
-
const y =
|
|
412
|
+
const x = clamp01((clientX - rect.left) / rect.width);
|
|
413
|
+
const y = clamp01((clientY - rect.top) / rect.height);
|
|
111
414
|
onChange(x, 1 - y);
|
|
112
415
|
}, [onChange]);
|
|
113
416
|
const updateCursorPos = useCallback((clientX, clientY) => {
|
|
@@ -115,8 +418,8 @@ function SaturationSquare({ h, s, v, onChange }) {
|
|
|
115
418
|
if (!rect)
|
|
116
419
|
return;
|
|
117
420
|
setCursorPos({
|
|
118
|
-
x:
|
|
119
|
-
y:
|
|
421
|
+
x: clamp01((clientX - rect.left) / rect.width) * 100,
|
|
422
|
+
y: clamp01((clientY - rect.top) / rect.height) * 100
|
|
120
423
|
});
|
|
121
424
|
}, []);
|
|
122
425
|
const onPointerDown = useCallback((e) => {
|
|
@@ -143,13 +446,13 @@ function SaturationSquare({ h, s, v, onChange }) {
|
|
|
143
446
|
const step = e.shiftKey ? 0.1 : 0.01;
|
|
144
447
|
let nextS = s, nextV = v, handled = true;
|
|
145
448
|
if (e.key === "ArrowLeft")
|
|
146
|
-
nextS =
|
|
449
|
+
nextS = clamp01(s - step);
|
|
147
450
|
else if (e.key === "ArrowRight")
|
|
148
|
-
nextS =
|
|
451
|
+
nextS = clamp01(s + step);
|
|
149
452
|
else if (e.key === "ArrowUp")
|
|
150
|
-
nextV =
|
|
453
|
+
nextV = clamp01(v + step);
|
|
151
454
|
else if (e.key === "ArrowDown")
|
|
152
|
-
nextV =
|
|
455
|
+
nextV = clamp01(v - step);
|
|
153
456
|
else
|
|
154
457
|
handled = false;
|
|
155
458
|
if (handled) {
|
|
@@ -157,7 +460,7 @@ function SaturationSquare({ h, s, v, onChange }) {
|
|
|
157
460
|
onChange(nextS, nextV);
|
|
158
461
|
}
|
|
159
462
|
}, [onChange, s, v]);
|
|
160
|
-
const { r, g, b } =
|
|
463
|
+
const { r, g, b } = hsvToRgb(h, s, v);
|
|
161
464
|
const thumbColor = `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`;
|
|
162
465
|
return /* @__PURE__ */ jsxs("div", {
|
|
163
466
|
ref,
|
|
@@ -270,7 +573,7 @@ var FORMAT_LABELS = {
|
|
|
270
573
|
oklch: "OKLCH"
|
|
271
574
|
};
|
|
272
575
|
var FORMATS = ["hex", "rgb", "hsl", "oklch"];
|
|
273
|
-
var menuShape =
|
|
576
|
+
var menuShape = shapeMap.rounded;
|
|
274
577
|
var FormatMenuContext = createContext(null);
|
|
275
578
|
function FormatItem({
|
|
276
579
|
index,
|
|
@@ -280,7 +583,7 @@ function FormatItem({
|
|
|
280
583
|
}) {
|
|
281
584
|
const ref = useRef(null);
|
|
282
585
|
const menuCtx = useContext(FormatMenuContext);
|
|
283
|
-
const shape =
|
|
586
|
+
const shape = useShape();
|
|
284
587
|
const sizeClasses = useSize2();
|
|
285
588
|
const compact = sizeClasses.variant === "compact";
|
|
286
589
|
useRegisterFluidHoverItem2(menuCtx?.registerItem, index, ref);
|
|
@@ -319,14 +622,14 @@ function FormatDropdown({
|
|
|
319
622
|
const [internalOpen, setInternalOpen] = useState(defaultOpen);
|
|
320
623
|
const isControlled = openProp !== undefined;
|
|
321
624
|
const open = isControlled ? openProp : internalOpen;
|
|
322
|
-
const { origin, capture } =
|
|
323
|
-
const morph =
|
|
625
|
+
const { origin, capture } = useMorphOrigin();
|
|
626
|
+
const morph = useMorph(open, origin, { tier: "moderate" });
|
|
324
627
|
const level = Math.min(useSurface2() + 2, 8);
|
|
325
|
-
const shape =
|
|
628
|
+
const shape = useShape();
|
|
326
629
|
const sizeClasses = useSize2();
|
|
327
630
|
const portalContainer = useContext(ColorPickerPortalContainerContext);
|
|
328
631
|
const containerRef = useRef(null);
|
|
329
|
-
const ChevronDownIcon =
|
|
632
|
+
const ChevronDownIcon = useIcon("chevron-down");
|
|
330
633
|
const hover = useFluidHover2(containerRef);
|
|
331
634
|
const { activeIndex, setActiveIndex, itemRects, handlers, registerItem, remeasure } = hover;
|
|
332
635
|
const [focusedIndex, setFocusedIndex] = useState(null);
|
|
@@ -397,10 +700,10 @@ function FormatDropdown({
|
|
|
397
700
|
className: "relative select-none outline-none",
|
|
398
701
|
children: /* @__PURE__ */ jsx(SurfaceProvider2, {
|
|
399
702
|
value: level,
|
|
400
|
-
children: /* @__PURE__ */ jsx(
|
|
703
|
+
children: /* @__PURE__ */ jsx(MorphSurface, {
|
|
401
704
|
morph,
|
|
402
|
-
bg:
|
|
403
|
-
shadow:
|
|
705
|
+
bg: SURFACE_BG[level],
|
|
706
|
+
shadow: SURFACE_SHADOW[3],
|
|
404
707
|
radius: menuShape.container,
|
|
405
708
|
className: "min-w-[var(--anchor-width)]",
|
|
406
709
|
children: /* @__PURE__ */ jsxs("div", {
|
|
@@ -489,7 +792,7 @@ var TextColorInput = forwardRef(({
|
|
|
489
792
|
}, ref) => {
|
|
490
793
|
const [draft, setDraft] = useState(value);
|
|
491
794
|
const interactingRef = useRef(false);
|
|
492
|
-
const shape =
|
|
795
|
+
const shape = useShape();
|
|
493
796
|
const sizeClasses = useSize2();
|
|
494
797
|
const compact = sizeClasses.variant === "compact";
|
|
495
798
|
useEffect(() => {
|
|
@@ -585,7 +888,7 @@ var ScrubColorInput = forwardRef(({
|
|
|
585
888
|
max,
|
|
586
889
|
wrap = false
|
|
587
890
|
}, ref) => {
|
|
588
|
-
const shape =
|
|
891
|
+
const shape = useShape();
|
|
589
892
|
const sizeClasses = useSize2();
|
|
590
893
|
const compact = sizeClasses.variant === "compact";
|
|
591
894
|
const inputRef = useRef(null);
|
|
@@ -734,9 +1037,9 @@ var ColorInput = forwardRef(({ scrubbable = false, ...props }, ref) => scrubbabl
|
|
|
734
1037
|
ColorInput.displayName = "ColorInput";
|
|
735
1038
|
function EyeDropperButton({ onPick }) {
|
|
736
1039
|
const [supported, setSupported] = useState(false);
|
|
737
|
-
const shape =
|
|
1040
|
+
const shape = useShape();
|
|
738
1041
|
const sizeClasses = useSize2();
|
|
739
|
-
const PipetteIcon =
|
|
1042
|
+
const PipetteIcon = useIcon("pipette");
|
|
740
1043
|
useEffect(() => {
|
|
741
1044
|
setSupported(typeof window !== "undefined" && "EyeDropper" in window);
|
|
742
1045
|
}, []);
|
|
@@ -762,8 +1065,8 @@ function EyeDropperButton({ onPick }) {
|
|
|
762
1065
|
});
|
|
763
1066
|
}
|
|
764
1067
|
function ColorTile2({ color, size = 24, className, style }) {
|
|
765
|
-
const shape =
|
|
766
|
-
return /* @__PURE__ */
|
|
1068
|
+
const shape = useShape();
|
|
1069
|
+
return /* @__PURE__ */ jsx("span", {
|
|
767
1070
|
className: cn2("inline-block relative shrink-0 overflow-hidden shadow-swatch", shape.bg, className),
|
|
768
1071
|
style: {
|
|
769
1072
|
width: size,
|
|
@@ -771,23 +1074,17 @@ function ColorTile2({ color, size = 24, className, style }) {
|
|
|
771
1074
|
...CHECKER_BG,
|
|
772
1075
|
...style
|
|
773
1076
|
},
|
|
774
|
-
children:
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
}),
|
|
779
|
-
/* @__PURE__ */ jsx("span", {
|
|
780
|
-
"aria-hidden": true,
|
|
781
|
-
className: cn2("absolute inset-0 pointer-events-none shadow-swatch", shape.bg)
|
|
782
|
-
})
|
|
783
|
-
]
|
|
1077
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
1078
|
+
className: "absolute inset-0",
|
|
1079
|
+
style: { backgroundColor: color }
|
|
1080
|
+
})
|
|
784
1081
|
});
|
|
785
1082
|
}
|
|
786
1083
|
var ColorSwatch2 = forwardRef(({ color, size = 28, selected, className, onMouseEnter, onMouseLeave, ...props }, ref) => {
|
|
787
|
-
const shape =
|
|
1084
|
+
const shape = useShape();
|
|
788
1085
|
const [hovered, setHovered] = useState(false);
|
|
789
1086
|
const ring = selected ? "shadow-swatch-selected" : hovered ? "shadow-swatch-hover" : "shadow-swatch";
|
|
790
|
-
return /* @__PURE__ */
|
|
1087
|
+
return /* @__PURE__ */ jsx("button", {
|
|
791
1088
|
ref,
|
|
792
1089
|
type: "button",
|
|
793
1090
|
"aria-label": `Select color ${color}`,
|
|
@@ -806,16 +1103,10 @@ var ColorSwatch2 = forwardRef(({ color, size = 28, selected, className, onMouseE
|
|
|
806
1103
|
onMouseLeave?.(e);
|
|
807
1104
|
},
|
|
808
1105
|
...props,
|
|
809
|
-
children:
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
}),
|
|
814
|
-
/* @__PURE__ */ jsx("span", {
|
|
815
|
-
"aria-hidden": true,
|
|
816
|
-
className: cn2("absolute inset-0 pointer-events-none shadow-swatch", shape.bg)
|
|
817
|
-
})
|
|
818
|
-
]
|
|
1106
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
1107
|
+
className: "absolute inset-0",
|
|
1108
|
+
style: { backgroundColor: color }
|
|
1109
|
+
})
|
|
819
1110
|
});
|
|
820
1111
|
});
|
|
821
1112
|
ColorSwatch2.displayName = "ColorSwatch";
|
|
@@ -826,16 +1117,16 @@ function SwatchStrip({
|
|
|
826
1117
|
}) {
|
|
827
1118
|
const normalizedCurrent = useMemo(() => {
|
|
828
1119
|
const p = parseColor2(current);
|
|
829
|
-
return p ?
|
|
1120
|
+
return p ? rgbToHexStr(p.r, p.g, p.b, p.a).toLowerCase() : "";
|
|
830
1121
|
}, [current]);
|
|
831
1122
|
const [resolvedSwatches, setResolvedSwatches] = useState({});
|
|
832
1123
|
useEffect(() => {
|
|
833
1124
|
const next = {};
|
|
834
1125
|
for (const sw of swatches) {
|
|
835
1126
|
if (!parseColor2(sw)) {
|
|
836
|
-
const p =
|
|
1127
|
+
const p = resolveCssColor(sw);
|
|
837
1128
|
if (p)
|
|
838
|
-
next[sw] =
|
|
1129
|
+
next[sw] = rgbToHexStr(p.r, p.g, p.b, p.a).toLowerCase();
|
|
839
1130
|
}
|
|
840
1131
|
}
|
|
841
1132
|
setResolvedSwatches(next);
|
|
@@ -844,7 +1135,7 @@ function SwatchStrip({
|
|
|
844
1135
|
className: "flex flex-wrap gap-2",
|
|
845
1136
|
children: swatches.map((sw, i) => {
|
|
846
1137
|
const parsed = parseColor2(sw);
|
|
847
|
-
const normalized = parsed ?
|
|
1138
|
+
const normalized = parsed ? rgbToHexStr(parsed.r, parsed.g, parsed.b, parsed.a).toLowerCase() : resolvedSwatches[sw] ?? sw.toLowerCase();
|
|
848
1139
|
const isSelected = normalized === normalizedCurrent;
|
|
849
1140
|
return /* @__PURE__ */ jsx(ColorSwatch2, {
|
|
850
1141
|
color: sw,
|
|
@@ -880,7 +1171,7 @@ var ColorPicker2 = forwardRef(({
|
|
|
880
1171
|
const p = parseColor2(currentRawValue);
|
|
881
1172
|
if (!p)
|
|
882
1173
|
return { h: 0, s: 1, v: 1, a: 1 };
|
|
883
|
-
const hsv =
|
|
1174
|
+
const hsv = rgbToHsv(p.r, p.g, p.b);
|
|
884
1175
|
return { h: hsv.s === 0 ? 0 : hsv.h, s: hsv.s, v: hsv.v, a: p.a };
|
|
885
1176
|
}, []);
|
|
886
1177
|
const [hsv, setHsv] = useState(initialParsed);
|
|
@@ -897,7 +1188,7 @@ var ColorPicker2 = forwardRef(({
|
|
|
897
1188
|
if (!p)
|
|
898
1189
|
return;
|
|
899
1190
|
oklchHueRef.current = null;
|
|
900
|
-
const newHsv =
|
|
1191
|
+
const newHsv = rgbToHsv(p.r, p.g, p.b);
|
|
901
1192
|
setHsv((prev) => ({
|
|
902
1193
|
h: newHsv.s === 0 ? prev.h : newHsv.h,
|
|
903
1194
|
s: newHsv.s,
|
|
@@ -910,7 +1201,7 @@ var ColorPicker2 = forwardRef(({
|
|
|
910
1201
|
const merged = { ...hsv, ...next };
|
|
911
1202
|
setHsv(merged);
|
|
912
1203
|
const p = buildParsed2(merged.h, merged.s, merged.v, merged.a);
|
|
913
|
-
const formatted =
|
|
1204
|
+
const formatted = formatValueByFormat(p, currentFormat);
|
|
914
1205
|
lastEmittedRef.current = formatted;
|
|
915
1206
|
if (!isControlled)
|
|
916
1207
|
setInternalValue(formatted);
|
|
@@ -920,18 +1211,18 @@ var ColorPicker2 = forwardRef(({
|
|
|
920
1211
|
if (!isFormatControlled)
|
|
921
1212
|
setInternalFormat(f);
|
|
922
1213
|
onFormatChange?.(f);
|
|
923
|
-
const formatted =
|
|
1214
|
+
const formatted = formatValueByFormat(parsed, f);
|
|
924
1215
|
lastEmittedRef.current = formatted;
|
|
925
1216
|
if (!isControlled)
|
|
926
1217
|
setInternalValue(formatted);
|
|
927
1218
|
onValueChange?.(formatted, parsed);
|
|
928
1219
|
}, [isFormatControlled, isControlled, onFormatChange, onValueChange, parsed]);
|
|
929
1220
|
const handleHexCommit = useCallback((input) => {
|
|
930
|
-
const p =
|
|
1221
|
+
const p = resolveCssColor(input);
|
|
931
1222
|
if (!p)
|
|
932
1223
|
return;
|
|
933
1224
|
oklchHueRef.current = null;
|
|
934
|
-
const newHsv =
|
|
1225
|
+
const newHsv = rgbToHsv(p.r, p.g, p.b);
|
|
935
1226
|
const merged = {
|
|
936
1227
|
h: newHsv.s === 0 ? hsv.h : newHsv.h,
|
|
937
1228
|
s: newHsv.s,
|
|
@@ -940,7 +1231,7 @@ var ColorPicker2 = forwardRef(({
|
|
|
940
1231
|
};
|
|
941
1232
|
setHsv(merged);
|
|
942
1233
|
const next = buildParsed2(merged.h, merged.s, merged.v, merged.a);
|
|
943
|
-
const formatted =
|
|
1234
|
+
const formatted = formatValueByFormat(next, currentFormat);
|
|
944
1235
|
lastEmittedRef.current = formatted;
|
|
945
1236
|
if (!isControlled)
|
|
946
1237
|
setInternalValue(formatted);
|
|
@@ -952,12 +1243,12 @@ var ColorPicker2 = forwardRef(({
|
|
|
952
1243
|
const handleEyedrop = useCallback((hex) => {
|
|
953
1244
|
handleHexCommit(hex);
|
|
954
1245
|
}, [handleHexCommit]);
|
|
955
|
-
const solidHueRgb = useMemo(() =>
|
|
1246
|
+
const solidHueRgb = useMemo(() => hsvToRgb(hsv.h, hsv.s, hsv.v), [hsv.h, hsv.s, hsv.v]);
|
|
956
1247
|
const solidR = Math.round(solidHueRgb.r);
|
|
957
1248
|
const solidG = Math.round(solidHueRgb.g);
|
|
958
1249
|
const solidB = Math.round(solidHueRgb.b);
|
|
959
1250
|
const solidColorString = `rgb(${solidR}, ${solidG}, ${solidB})`;
|
|
960
|
-
const shape =
|
|
1251
|
+
const shape = useShape();
|
|
961
1252
|
const substrate = useSurface2();
|
|
962
1253
|
const pickerLevel = Math.max(substrate, 3);
|
|
963
1254
|
const paintsSurface = useContext(PanelSurfaceContext);
|
|
@@ -1026,7 +1317,7 @@ var ColorPicker2 = forwardRef(({
|
|
|
1026
1317
|
const r = channel === "r" ? Number(value) : p.r;
|
|
1027
1318
|
const g = channel === "g" ? Number(value) : p.g;
|
|
1028
1319
|
const b = channel === "b" ? Number(value) : p.b;
|
|
1029
|
-
const hsvVal =
|
|
1320
|
+
const hsvVal = rgbToHsv(r, g, b);
|
|
1030
1321
|
updateHsv({
|
|
1031
1322
|
h: hsvVal.s === 0 ? hsv.h : hsvVal.h,
|
|
1032
1323
|
s: hsvVal.s,
|
|
@@ -1039,12 +1330,12 @@ var ColorPicker2 = forwardRef(({
|
|
|
1039
1330
|
case "lSL": {
|
|
1040
1331
|
if (channel === "hSL")
|
|
1041
1332
|
oklchHueRef.current = null;
|
|
1042
|
-
const hsl =
|
|
1333
|
+
const hsl = rgbToHsl(p.r, p.g, p.b);
|
|
1043
1334
|
const h2 = channel === "hSL" ? Number(value) : hsl.h;
|
|
1044
1335
|
const s2 = channel === "sSL" ? Number(value) / 100 : hsl.s;
|
|
1045
1336
|
const l2 = channel === "lSL" ? Number(value) / 100 : hsl.l;
|
|
1046
|
-
const rgb =
|
|
1047
|
-
const hsvVal =
|
|
1337
|
+
const rgb = hslToRgb(h2, clamp01(s2), clamp01(l2));
|
|
1338
|
+
const hsvVal = rgbToHsv(rgb.r, rgb.g, rgb.b);
|
|
1048
1339
|
updateHsv({
|
|
1049
1340
|
h: hsvVal.s === 0 ? h2 : hsvVal.h,
|
|
1050
1341
|
s: hsvVal.s,
|
|
@@ -1055,14 +1346,14 @@ var ColorPicker2 = forwardRef(({
|
|
|
1055
1346
|
case "L":
|
|
1056
1347
|
case "C":
|
|
1057
1348
|
case "H": {
|
|
1058
|
-
const cur =
|
|
1349
|
+
const cur = rgbToOklch(p.r, p.g, p.b);
|
|
1059
1350
|
const baseH = oklchHueRef.current ?? cur.H;
|
|
1060
1351
|
const L = channel === "L" ? Number(value) / 100 : cur.L;
|
|
1061
1352
|
const C = channel === "C" ? Number(value) : cur.C;
|
|
1062
1353
|
const H = channel === "H" ? Number(value) : baseH;
|
|
1063
1354
|
oklchHueRef.current = H;
|
|
1064
|
-
const rgb =
|
|
1065
|
-
const hsvVal =
|
|
1355
|
+
const rgb = oklchToRgb(clamp01(L), Math.max(0, C), H);
|
|
1356
|
+
const hsvVal = rgbToHsv(rgb.r, rgb.g, rgb.b);
|
|
1066
1357
|
updateHsv({
|
|
1067
1358
|
h: hsvVal.s === 0 ? hsv.h : hsvVal.h,
|
|
1068
1359
|
s: hsvVal.s,
|
|
@@ -1071,7 +1362,7 @@ var ColorPicker2 = forwardRef(({
|
|
|
1071
1362
|
return;
|
|
1072
1363
|
}
|
|
1073
1364
|
case "alphaPercent": {
|
|
1074
|
-
const a =
|
|
1365
|
+
const a = clamp01(Number(value) / 100);
|
|
1075
1366
|
updateHsv({ a });
|
|
1076
1367
|
return;
|
|
1077
1368
|
}
|
|
@@ -1177,7 +1468,7 @@ function ColorInputsRow({
|
|
|
1177
1468
|
});
|
|
1178
1469
|
}
|
|
1179
1470
|
if (format === "hsl") {
|
|
1180
|
-
const hsl =
|
|
1471
|
+
const hsl = rgbToHsl(parsed.r, parsed.g, parsed.b);
|
|
1181
1472
|
return /* @__PURE__ */ jsxs("div", {
|
|
1182
1473
|
className: "grid grid-cols-4 gap-1",
|
|
1183
1474
|
children: [
|
|
@@ -1234,7 +1525,7 @@ function ColorInputsRow({
|
|
|
1234
1525
|
]
|
|
1235
1526
|
});
|
|
1236
1527
|
}
|
|
1237
|
-
const oklch =
|
|
1528
|
+
const oklch = rgbToOklch(parsed.r, parsed.g, parsed.b);
|
|
1238
1529
|
const displayH = oklchHue ?? oklch.H;
|
|
1239
1530
|
return /* @__PURE__ */ jsxs("div", {
|
|
1240
1531
|
className: "grid grid-cols-4 gap-1",
|
|
@@ -1332,10 +1623,6 @@ var ColorPickerPopover2 = forwardRef(({
|
|
|
1332
1623
|
triggerShowRemove = false,
|
|
1333
1624
|
onTriggerRemove,
|
|
1334
1625
|
triggerClassName,
|
|
1335
|
-
removeLabel = "Remove color",
|
|
1336
|
-
disabled = false,
|
|
1337
|
-
readOnly = false,
|
|
1338
|
-
rootClassName,
|
|
1339
1626
|
open: openProp,
|
|
1340
1627
|
defaultOpen = false,
|
|
1341
1628
|
onOpenChange,
|
|
@@ -1348,24 +1635,21 @@ var ColorPickerPopover2 = forwardRef(({
|
|
|
1348
1635
|
}, ref) => {
|
|
1349
1636
|
const isOpenControlled = openProp !== undefined;
|
|
1350
1637
|
const [internalOpen, setInternalOpen] = useState(defaultOpen);
|
|
1351
|
-
const
|
|
1352
|
-
const
|
|
1353
|
-
const
|
|
1354
|
-
const
|
|
1355
|
-
const shape = useShape2();
|
|
1638
|
+
const open = isOpenControlled ? openProp : internalOpen;
|
|
1639
|
+
const { origin, capture } = useMorphOrigin();
|
|
1640
|
+
const morph = useMorph(open, origin, { from, effect, hideSource, tier });
|
|
1641
|
+
const shape = useShape();
|
|
1356
1642
|
const sizeClasses = useSize2(size);
|
|
1357
1643
|
const compact = sizeClasses.variant === "compact";
|
|
1358
1644
|
const substrate = useSurface2();
|
|
1359
1645
|
const level = Math.min(substrate + 2, 8);
|
|
1360
1646
|
const handleOpenChange = useCallback((next, details) => {
|
|
1361
|
-
if (locked)
|
|
1362
|
-
return;
|
|
1363
1647
|
if (next)
|
|
1364
1648
|
capture(details);
|
|
1365
1649
|
if (!isOpenControlled)
|
|
1366
1650
|
setInternalOpen(next);
|
|
1367
1651
|
onOpenChange?.(next);
|
|
1368
|
-
}, [isOpenControlled,
|
|
1652
|
+
}, [isOpenControlled, onOpenChange, capture]);
|
|
1369
1653
|
const isControlled = pickerProps.value !== undefined;
|
|
1370
1654
|
const [internalValue, setInternalValue] = useState(pickerProps.value ?? pickerProps.defaultValue ?? "#6B97FF");
|
|
1371
1655
|
const currentValue = isControlled ? pickerProps.value : internalValue;
|
|
@@ -1374,23 +1658,20 @@ var ColorPickerPopover2 = forwardRef(({
|
|
|
1374
1658
|
setInternalValue(v);
|
|
1375
1659
|
pickerProps.onValueChange?.(v, parsed);
|
|
1376
1660
|
}, [isControlled, pickerProps]);
|
|
1377
|
-
const XIcon =
|
|
1661
|
+
const XIcon = useIcon("x");
|
|
1378
1662
|
const parsed = useMemo(() => parseColor2(currentValue), [currentValue]);
|
|
1379
|
-
const swatchColor = parsed ?
|
|
1380
|
-
const valueLabel = parsed ?
|
|
1663
|
+
const swatchColor = parsed ? rgbToHexStr(parsed.r, parsed.g, parsed.b, parsed.a) : currentValue;
|
|
1664
|
+
const valueLabel = parsed ? rgbToHexStr(parsed.r, parsed.g, parsed.b, 1).replace(/^#/, "").toUpperCase() : currentValue;
|
|
1381
1665
|
const root = /* @__PURE__ */ jsx(Popover.Root, {
|
|
1382
1666
|
open,
|
|
1383
1667
|
onOpenChange: handleOpenChange,
|
|
1384
1668
|
modal: false,
|
|
1385
1669
|
children: /* @__PURE__ */ jsxs("div", {
|
|
1386
1670
|
ref,
|
|
1387
|
-
className:
|
|
1671
|
+
className: "inline-flex",
|
|
1388
1672
|
children: [
|
|
1389
1673
|
/* @__PURE__ */ jsxs(Popover.Trigger, {
|
|
1390
|
-
|
|
1391
|
-
tabIndex: readOnly ? -1 : undefined,
|
|
1392
|
-
"data-readonly": readOnly || undefined,
|
|
1393
|
-
className: cn2("flex items-center border border-border bg-transparent hover:bg-hover transition-colors duration-fast outline-none focus-visible:ring-1 focus-visible:ring-focus-ring cursor-pointer", "disabled:opacity-50 disabled:pointer-events-none data-[readonly]:cursor-default data-[readonly]:hover:!bg-transparent", sizeClasses.gap, sizeClasses.control, compact ? "px-1.5" : "px-2", shape.input, "weight-medium", triggerClassName),
|
|
1674
|
+
className: cn2("flex items-center border border-border bg-transparent hover:bg-hover transition-colors duration-fast outline-none focus-visible:ring-1 focus-visible:ring-focus-ring cursor-pointer", sizeClasses.gap, sizeClasses.control, compact ? "px-1.5" : "px-2", shape.input, "weight-medium", triggerClassName),
|
|
1394
1675
|
children: [
|
|
1395
1676
|
triggerLabel && triggerLabelPosition === "left" && /* @__PURE__ */ jsx("span", {
|
|
1396
1677
|
className: cn2("text-muted-foreground px-1 select-none", sizeClasses.text),
|
|
@@ -1408,9 +1689,9 @@ var ColorPickerPopover2 = forwardRef(({
|
|
|
1408
1689
|
className: cn2("text-muted-foreground px-1 select-none", sizeClasses.text),
|
|
1409
1690
|
children: triggerLabel
|
|
1410
1691
|
}),
|
|
1411
|
-
triggerShowRemove &&
|
|
1692
|
+
triggerShowRemove && /* @__PURE__ */ jsx("span", {
|
|
1412
1693
|
role: "button",
|
|
1413
|
-
"aria-label":
|
|
1694
|
+
"aria-label": "Remove color",
|
|
1414
1695
|
tabIndex: 0,
|
|
1415
1696
|
onClick: (e) => {
|
|
1416
1697
|
e.stopPropagation();
|
|
@@ -1435,7 +1716,7 @@ var ColorPickerPopover2 = forwardRef(({
|
|
|
1435
1716
|
children: /* @__PURE__ */ jsx(Popover.Positioner, {
|
|
1436
1717
|
side: "bottom",
|
|
1437
1718
|
align: "start",
|
|
1438
|
-
sideOffset:
|
|
1719
|
+
sideOffset: opensInPlace({ effect, hideSource }) ? inPlaceOffset : 6,
|
|
1439
1720
|
className: "z-50 outline-none",
|
|
1440
1721
|
children: /* @__PURE__ */ jsx(Popover.Popup, {
|
|
1441
1722
|
ref: morph.popupRef,
|
|
@@ -1444,10 +1725,10 @@ var ColorPickerPopover2 = forwardRef(({
|
|
|
1444
1725
|
value: morph.popup,
|
|
1445
1726
|
children: /* @__PURE__ */ jsx(SurfaceProvider2, {
|
|
1446
1727
|
value: level,
|
|
1447
|
-
children: /* @__PURE__ */ jsx(
|
|
1728
|
+
children: /* @__PURE__ */ jsx(MorphSurface, {
|
|
1448
1729
|
morph,
|
|
1449
|
-
bg:
|
|
1450
|
-
shadow:
|
|
1730
|
+
bg: SURFACE_BG[level],
|
|
1731
|
+
shadow: SURFACE_SHADOW[3],
|
|
1451
1732
|
radius: shape.container,
|
|
1452
1733
|
children: /* @__PURE__ */ jsx(PanelSurfaceContext.Provider, {
|
|
1453
1734
|
value: false,
|
|
@@ -1475,4 +1756,4 @@ ColorPickerPopover2.displayName = "ColorPickerPopover";
|
|
|
1475
1756
|
Object.assign(ColorPicker2, { Popover: ColorPickerPopover2 });
|
|
1476
1757
|
var color_picker_default = ColorPicker2;
|
|
1477
1758
|
|
|
1478
|
-
export { ColorPickerPortalContainer2, ColorTile2, ColorSwatch2, ColorPicker2, ColorPickerPopover2, color_picker_default };
|
|
1759
|
+
export { ColorPickerPortalContainer2, parseColor2, buildParsed2, ColorTile2, ColorSwatch2, ColorPicker2, ColorPickerPopover2, color_picker_default };
|