@justanarthur/modo-ui 0.5.0 → 0.6.0-canary.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/DESIGN.md +608 -0
- package/README.md +61 -39
- package/blocks/sidebar-app/examples.mdx +33 -0
- package/blocks/sidebar-app/index.tsx +218 -0
- package/blocks/sidebar-app/inset-topbar.tsx +25 -0
- package/blocks/sidebar-app/menu-grid.ts +26 -0
- package/blocks/sidebar-app/nav-data.ts +36 -0
- package/blocks/sidebar-app/search-field.tsx +48 -0
- package/blocks/sidebar-app/user-footer.tsx +67 -0
- package/blocks/sidebar-app/workspace-header.tsx +129 -0
- package/components/AI/input-message/examples.mdx +124 -0
- package/components/AI/input-message/file-thumbnail.tsx +173 -0
- package/components/AI/input-message/index.tsx +1383 -0
- package/components/AI/thinking-indicator/examples.mdx +27 -0
- package/components/AI/thinking-indicator/index.tsx +210 -0
- package/components/accordion/examples.mdx +148 -0
- package/components/accordion/index.tsx +1034 -0
- package/components/avatar/examples.mdx +95 -0
- package/components/avatar/index.tsx +129 -0
- package/components/badge/change-demo.tsx +29 -0
- package/components/badge/examples.mdx +120 -0
- package/components/badge/index.tsx +225 -0
- package/components/badge/variants.ts +73 -0
- package/components/button/examples.mdx +164 -0
- package/components/button/index.tsx +416 -0
- package/components/button/loading-demo.tsx +25 -0
- package/components/button/variants.ts +166 -0
- package/components/card/examples.mdx +212 -0
- package/components/card/index.tsx +1037 -0
- package/components/copy/examples.mdx +87 -0
- package/components/copy/index.tsx +482 -0
- package/components/inputs/checkbox/examples.mdx +83 -0
- package/components/inputs/checkbox/index.tsx +611 -0
- package/components/inputs/checkbox/select-all-demo.tsx +48 -0
- package/components/inputs/color-picker/examples.mdx +72 -0
- package/components/inputs/color-picker/index.tsx +1955 -0
- package/components/inputs/color-picker/variants.ts +401 -0
- package/components/inputs/combobox/examples.mdx +273 -0
- package/components/inputs/combobox/index.tsx +1436 -0
- package/components/inputs/combobox/remote-demo.tsx +101 -0
- package/components/inputs/date-time/calendar/examples.mdx +34 -0
- package/components/inputs/date-time/calendar/index.tsx +351 -0
- package/components/inputs/date-time/calendar/use-month-window.ts +163 -0
- package/components/inputs/date-time/date-picker/examples.mdx +166 -0
- package/components/inputs/date-time/date-picker/index.tsx +385 -0
- package/components/inputs/date-time/date-picker/masked-date-input.tsx +336 -0
- package/components/inputs/date-time/date-range-picker/examples.mdx +29 -0
- package/components/inputs/date-time/date-range-picker/index.tsx +217 -0
- package/components/inputs/date-time/duration-picker/examples.mdx +16 -0
- package/components/inputs/date-time/duration-picker/index.tsx +189 -0
- package/components/inputs/date-time/month-picker/examples.mdx +16 -0
- package/components/inputs/date-time/month-picker/index.tsx +190 -0
- package/components/inputs/date-time/picker-shell.tsx +395 -0
- package/components/inputs/date-time/time-columns.tsx +91 -0
- package/components/inputs/date-time/time-picker/examples.mdx +26 -0
- package/components/inputs/date-time/time-picker/index.tsx +166 -0
- package/components/inputs/field/examples.mdx +113 -0
- package/components/inputs/field/index.tsx +267 -0
- package/components/inputs/file-dropzone/examples.mdx +73 -0
- package/components/inputs/file-dropzone/file-row.tsx +201 -0
- package/components/inputs/file-dropzone/index.tsx +296 -0
- package/components/inputs/file-dropzone/upload-demo.tsx +67 -0
- package/components/inputs/file-dropzone/variants.ts +94 -0
- package/components/inputs/input/examples.mdx +135 -0
- package/components/inputs/input/index.tsx +494 -0
- package/components/inputs/input/password-demo.tsx +30 -0
- package/components/inputs/label/examples.mdx +67 -0
- package/components/inputs/label/index.tsx +85 -0
- package/components/inputs/number-input/examples.mdx +56 -0
- package/components/inputs/number-input/index.tsx +214 -0
- package/components/inputs/radio/examples.mdx +77 -0
- package/components/inputs/radio/index.tsx +636 -0
- package/components/inputs/search/examples.mdx +74 -0
- package/components/inputs/search/index.tsx +333 -0
- package/components/inputs/select/examples.mdx +218 -0
- package/components/inputs/select/index.tsx +862 -0
- package/components/inputs/select/variants.ts +32 -0
- package/components/inputs/slider/examples.mdx +127 -0
- package/components/inputs/slider/index.tsx +1725 -0
- package/components/inputs/switch/examples.mdx +94 -0
- package/components/inputs/switch/index.tsx +504 -0
- package/components/inputs/textarea/examples.mdx +88 -0
- package/components/inputs/textarea/index.tsx +161 -0
- package/components/navigation/navigation-menu/examples.mdx +109 -0
- package/components/navigation/navigation-menu/index.tsx +613 -0
- package/components/navigation/pagination/examples.mdx +64 -0
- package/components/navigation/pagination/index.tsx +395 -0
- package/components/navigation/sidebar/examples.mdx +319 -0
- package/components/navigation/sidebar/index.tsx +453 -0
- package/components/navigation/sidebar/sidebar-core.tsx +1408 -0
- package/components/navigation/sidebar/sidebar-menu.tsx +1495 -0
- package/components/navigation/sidebar/sidebar.css +74 -0
- package/components/navigation/sidebar/variants.ts +55 -0
- package/components/navigation/tabs/examples.mdx +89 -0
- package/components/navigation/tabs/index.tsx +494 -0
- package/components/navigation/tabs-subtle/examples.mdx +49 -0
- package/components/navigation/tabs-subtle/index.tsx +512 -0
- package/components/overlays/alert-dialog/examples.mdx +123 -0
- package/components/overlays/alert-dialog/index.tsx +258 -0
- package/components/overlays/alert-dialog/pending-demo.tsx +36 -0
- package/components/overlays/command/examples.mdx +113 -0
- package/components/overlays/command/index.tsx +416 -0
- package/components/overlays/context-menu/examples.mdx +56 -0
- package/components/overlays/context-menu/index.tsx +279 -0
- package/components/overlays/dialog/examples.mdx +144 -0
- package/components/overlays/dialog/index.tsx +366 -0
- package/components/overlays/dropdown/dropdown-search.tsx +395 -0
- package/components/overlays/dropdown/examples.mdx +294 -0
- package/components/overlays/dropdown/index.tsx +1168 -0
- package/components/overlays/dropdown/menu-item.tsx +464 -0
- package/components/overlays/dropdown/menu-parts.tsx +660 -0
- package/components/overlays/popover/anchored-demo.tsx +59 -0
- package/components/overlays/popover/examples.mdx +180 -0
- package/components/overlays/popover/index.tsx +315 -0
- package/components/overlays/preview-card/examples.mdx +61 -0
- package/components/overlays/preview-card/index.tsx +204 -0
- package/components/overlays/sheet/examples.mdx +89 -0
- package/components/overlays/sheet/index.tsx +247 -0
- package/components/overlays/toast/examples.mdx +68 -0
- package/components/overlays/toast/global-demo.tsx +72 -0
- package/components/overlays/toast/index.tsx +474 -0
- package/components/overlays/toast/manager.ts +193 -0
- package/components/overlays/tooltip/examples.mdx +106 -0
- package/components/overlays/tooltip/index.tsx +519 -0
- package/components/progress/examples.mdx +59 -0
- package/components/progress/index.tsx +174 -0
- package/components/progress/progress.css +49 -0
- package/components/progress/step-demo.tsx +27 -0
- package/components/table/examples.mdx +184 -0
- package/components/table/index.tsx +510 -0
- package/components/table/sort-demo.tsx +61 -0
- package/dist/base.css +100 -0
- package/dist/blocks/sidebar-app/index.js +39 -26
- package/dist/components/AI/input-message/index.js +22 -16
- package/dist/components/AI/thinking-indicator/index.js +9 -6
- package/dist/components/accordion/index.js +16 -13
- package/dist/components/avatar/index.d.ts +46 -0
- package/dist/components/avatar/index.js +18 -0
- package/dist/components/badge/index.d.ts +18 -11
- package/dist/components/badge/index.js +11 -7
- package/dist/components/badge/variants.d.ts +33 -0
- package/dist/components/badge/variants.js +10 -0
- package/dist/components/button/index.d.ts +53 -17
- package/dist/components/button/index.js +10 -6
- package/dist/components/button/variants.d.ts +39 -0
- package/dist/components/button/variants.js +8 -0
- package/dist/components/card/index.d.ts +16 -3
- package/dist/components/card/index.js +16 -11
- package/dist/components/copy/index.js +13 -9
- package/dist/components/inputs/checkbox/index.d.ts +28 -9
- package/dist/components/inputs/checkbox/index.js +17 -13
- package/dist/components/inputs/color-picker/index.d.ts +13 -13
- package/dist/components/inputs/color-picker/index.js +25 -18
- package/dist/components/inputs/color-picker/variants.d.ts +61 -0
- package/dist/components/inputs/color-picker/variants.js +28 -0
- package/dist/components/inputs/combobox/index.d.ts +60 -17
- package/dist/components/inputs/combobox/index.js +26 -18
- package/dist/components/inputs/date-time/calendar/index.js +14 -11
- package/dist/components/inputs/date-time/date-picker/index.d.ts +53 -11
- package/dist/components/inputs/date-time/date-picker/index.js +33 -25
- package/dist/components/inputs/date-time/date-range-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/date-range-picker/index.js +32 -24
- package/dist/components/inputs/date-time/duration-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/duration-picker/index.js +32 -24
- package/dist/components/inputs/date-time/month-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/month-picker/index.js +31 -23
- package/dist/components/inputs/date-time/time-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/time-picker/index.js +32 -24
- package/dist/components/inputs/field/index.d.ts +116 -0
- package/dist/components/inputs/field/index.js +28 -0
- package/dist/components/inputs/file-dropzone/index.d.ts +165 -0
- package/dist/components/inputs/file-dropzone/index.js +32 -0
- package/dist/components/inputs/file-dropzone/variants.d.ts +35 -0
- package/dist/components/inputs/file-dropzone/variants.js +12 -0
- package/dist/components/inputs/input/index.d.ts +95 -13
- package/dist/components/inputs/input/index.js +17 -9
- package/dist/components/inputs/label/index.d.ts +32 -0
- package/dist/components/inputs/label/index.js +11 -0
- package/dist/components/inputs/number-input/index.d.ts +84 -0
- package/dist/components/inputs/number-input/index.js +20 -0
- package/dist/components/inputs/radio/index.d.ts +20 -5
- package/dist/components/inputs/radio/index.js +15 -12
- package/dist/components/inputs/search/index.js +25 -18
- package/dist/components/inputs/select/index.d.ts +41 -11
- package/dist/components/inputs/select/index.js +27 -14
- package/dist/components/inputs/select/variants.d.ts +5 -0
- package/dist/components/inputs/select/variants.js +6 -0
- package/dist/components/inputs/slider/index.js +7 -5
- package/dist/components/inputs/switch/index.d.ts +8 -2
- package/dist/components/inputs/switch/index.js +14 -12
- package/dist/components/inputs/textarea/index.d.ts +4 -0
- package/dist/components/inputs/textarea/index.js +8 -6
- package/dist/components/navigation/navigation-menu/index.d.ts +114 -0
- package/dist/components/navigation/navigation-menu/index.js +40 -0
- package/dist/components/navigation/pagination/index.d.ts +73 -0
- package/dist/components/navigation/pagination/index.js +39 -0
- package/dist/components/navigation/sidebar/index.d.ts +44 -21
- package/dist/components/navigation/sidebar/index.js +41 -31
- package/dist/components/navigation/sidebar/variants.d.ts +25 -0
- package/dist/components/navigation/sidebar/variants.js +28 -0
- package/dist/components/navigation/tabs/index.d.ts +8 -2
- package/dist/components/navigation/tabs/index.js +14 -10
- package/dist/components/navigation/tabs-subtle/index.js +12 -10
- package/dist/components/overlays/alert-dialog/index.d.ts +121 -15
- package/dist/components/overlays/alert-dialog/index.js +22 -13
- package/dist/components/overlays/command/index.js +24 -17
- package/dist/components/overlays/context-menu/index.d.ts +33 -17
- package/dist/components/overlays/context-menu/index.js +27 -18
- package/dist/components/overlays/dialog/index.js +17 -12
- package/dist/components/overlays/dropdown/index.d.ts +257 -31
- package/dist/components/overlays/dropdown/index.js +42 -17
- package/dist/components/overlays/popover/index.d.ts +31 -9
- package/dist/components/overlays/popover/index.js +12 -9
- package/dist/components/overlays/preview-card/index.js +11 -8
- package/dist/components/overlays/sheet/index.js +18 -13
- package/dist/components/overlays/toast/index.d.ts +123 -47
- package/dist/components/overlays/toast/index.js +18 -10
- package/dist/components/overlays/tooltip/index.d.ts +113 -21
- package/dist/components/overlays/tooltip/index.js +15 -6
- package/dist/components/progress/index.d.ts +56 -0
- package/dist/components/progress/index.js +15 -0
- package/dist/components/table/index.d.ts +63 -8
- package/dist/components/table/index.js +19 -9
- package/dist/index.d.ts +2201 -736
- package/dist/index.js +223 -82
- package/dist/lib/date-locale.d.ts +14 -0
- package/dist/lib/date-locale.js +16 -0
- package/dist/lib/field-classes.d.ts +144 -0
- package/dist/lib/field-classes.js +40 -0
- package/dist/lib/field-variants.d.ts +47 -0
- package/dist/lib/field-variants.js +26 -0
- package/dist/lib/fluid-hover-highlight.d.ts +112 -0
- package/dist/lib/fluid-hover-highlight.js +17 -0
- package/dist/lib/focus-ring.d.ts +18 -0
- package/dist/lib/focus-ring.js +10 -0
- package/dist/lib/goo-indicator.d.ts +46 -0
- package/dist/lib/goo-indicator.js +14 -0
- package/dist/lib/icon-context.d.ts +30 -0
- package/dist/lib/icon-context.js +12 -0
- package/dist/lib/inert.d.ts +9 -0
- package/dist/lib/inert.js +8 -0
- package/dist/lib/morph-layers.d.ts +93 -0
- package/dist/lib/morph-layers.js +13 -0
- package/dist/lib/morph-part.d.ts +21 -0
- package/dist/lib/morph-part.js +12 -0
- package/dist/lib/popup.d.ts +20 -0
- package/dist/lib/popup.js +12 -0
- package/dist/lib/reduced-motion.d.ts +9 -0
- package/dist/lib/reduced-motion.js +6 -0
- package/dist/lib/row-index.d.ts +10 -0
- package/dist/lib/row-index.js +8 -0
- package/dist/lib/row-order.d.ts +28 -0
- package/dist/lib/row-order.js +10 -0
- package/dist/lib/scroll-column.d.ts +27 -0
- package/dist/lib/scroll-column.js +18 -0
- package/dist/lib/shape-context.d.ts +30 -0
- package/dist/lib/shape-context.js +12 -0
- package/dist/lib/size-context.d.ts +94 -0
- package/dist/lib/size-context.js +20 -0
- package/dist/lib/size-scale.d.ts +79 -0
- package/dist/lib/size-scale.js +8 -0
- package/dist/lib/slot.d.ts +12 -0
- package/dist/lib/slot.js +6 -0
- package/dist/lib/springs.d.ts +44 -0
- package/dist/lib/springs.js +8 -0
- package/dist/lib/surface-classes.d.ts +19 -0
- package/dist/lib/surface-classes.js +10 -0
- package/dist/lib/surface-context.d.ts +9 -0
- package/dist/lib/surface-context.js +8 -0
- package/dist/lib/use-controllable-state.d.ts +2 -0
- package/dist/lib/use-controllable-state.js +6 -0
- package/dist/lib/use-fluid-hover.d.ts +138 -0
- package/dist/lib/use-fluid-hover.js +14 -0
- package/dist/lib/use-is-mobile.d.ts +2 -0
- package/dist/lib/use-is-mobile.js +6 -0
- package/dist/lib/use-keyboard-nav-gate.d.ts +20 -0
- package/dist/lib/use-keyboard-nav-gate.js +7 -0
- package/dist/lib/use-merge-split.d.ts +47 -0
- package/dist/lib/use-merge-split.js +15 -0
- package/dist/lib/use-morph.d.ts +101 -0
- package/dist/lib/use-morph.js +20 -0
- package/dist/lib/use-touch-primary.d.ts +2 -0
- package/dist/lib/use-touch-primary.js +6 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.js +6 -0
- package/dist/preset.d.ts +17 -0
- package/dist/preset.js +22 -2
- package/dist/primitives/code/index.js +7 -5
- package/dist/primitives/craft/index.js +9 -6
- package/dist/primitives/fluid-hover/index.js +9 -8
- package/dist/primitives/morph/index.js +15 -10
- package/dist/primitives/motion/index.js +10 -8
- package/dist/primitives/scroll-area/index.js +4 -3
- package/dist/primitives/separator/index.d.ts +25 -0
- package/dist/primitives/separator/index.js +9 -0
- package/dist/primitives/sizes/index.js +6 -4
- package/dist/primitives/skeleton/index.d.ts +35 -0
- package/dist/primitives/skeleton/index.js +12 -0
- package/dist/primitives/surface/index.js +6 -4
- package/dist/shared/{components-3mkepka5.js → components-0jmqhx2k.js} +28 -25
- package/dist/shared/components-124epb7f.js +53 -0
- package/dist/shared/{components-gz8zf3ec.js → components-1k0wv53d.js} +15 -43
- package/dist/shared/components-26snnbs9.js +322 -0
- package/dist/shared/{components-2dxkv6zm.js → components-2c0qcfx4.js} +8 -7
- package/dist/shared/{components-473g814w.js → components-2mt9te6d.js} +243 -137
- package/dist/shared/{components-hawvy2qz.js → components-2z48g4fp.js} +9 -30
- package/dist/shared/components-34txk9rj.js +35 -0
- package/dist/shared/components-3h92d94m.js +23 -0
- package/dist/shared/{components-zfnmn5d4.js → components-3sp623ae.js} +36 -31
- package/dist/shared/{components-jwst3vtj.js → components-3wxkjgqn.js} +186 -76
- package/dist/shared/{components-s2bz1xpk.js → components-49bsynbw.js} +8 -5
- package/dist/shared/components-4bwsd46w.js +71 -0
- package/dist/shared/components-4n4f5m3e.js +297 -0
- package/dist/shared/{components-0q0sqfh4.js → components-4y816hwp.js} +27 -49
- package/dist/shared/components-52ngsgca.js +399 -0
- package/dist/shared/{components-y9y0g8er.js → components-52r5763g.js} +22 -19
- package/dist/shared/components-559tf7yb.js +28 -0
- package/dist/shared/components-5mkga9hj.js +440 -0
- package/dist/shared/{components-kwa6mrf9.js → components-5s0nfqvw.js} +14 -9
- package/dist/shared/{components-dk0gjr5a.js → components-60atskhp.js} +19 -18
- package/dist/shared/{components-rr7a6ja9.js → components-658b26nb.js} +21 -18
- package/dist/shared/{components-xxvdw7k1.js → components-65vwfjs6.js} +37 -34
- package/dist/shared/{components-frw34b65.js → components-6j2fh74k.js} +114 -123
- package/dist/shared/components-6zg1yft7.js +167 -0
- package/dist/shared/components-6zng858q.js +53 -0
- package/dist/shared/components-72w4ge68.js +64 -0
- package/dist/shared/{components-cv16mryv.js → components-78x40gee.js} +13 -7
- package/dist/shared/{components-b2wyq2cq.js → components-7d4r7hh1.js} +39 -57
- package/dist/shared/components-7ntvvegr.js +316 -0
- package/dist/shared/components-8nwsqjn8.js +34 -0
- package/dist/shared/{components-5xc2j8jz.js → components-8tt3xbb5.js} +19 -18
- package/dist/shared/{components-vc7vq5nz.js → components-9as3rf68.js} +6 -3
- package/dist/shared/components-9mys9jna.js +255 -0
- package/dist/shared/components-adkarj8n.js +35 -0
- package/dist/shared/{components-b3c5et5b.js → components-ae9fncz4.js} +32 -31
- package/dist/shared/{components-hqeq3w9q.js → components-awra5sff.js} +24 -16
- package/dist/shared/components-b1e239g3.js +28 -0
- package/dist/shared/{components-q5xj5c16.js → components-b1f2bjf1.js} +9 -8
- package/dist/shared/{components-qmmjx1qw.js → components-bn42vq6d.js} +71 -72
- package/dist/shared/components-c96g82th.js +1444 -0
- package/dist/shared/components-c9yr4ed1.js +44 -0
- package/dist/shared/components-d3shbwqq.js +95 -0
- package/dist/shared/{components-jjw69c4c.js → components-dcc02hs2.js} +7 -4
- package/dist/shared/{components-men63rwj.js → components-de99ykt7.js} +3 -2
- package/dist/shared/components-dhgk6mbt.js +16 -0
- package/dist/shared/components-drxrtnp2.js +25 -0
- package/dist/shared/{components-6p8tfcd6.js → components-ds9fqat9.js} +21 -18
- package/dist/shared/{components-mjthm1kf.js → components-egy4tyjt.js} +11 -8
- package/dist/shared/components-f0xfpkhh.js +82 -0
- package/dist/shared/components-f7h57m6t.js +59 -0
- package/dist/shared/{components-d6xtjht3.js → components-fjkpbg6n.js} +33 -30
- package/dist/shared/{components-gc5vtq2f.js → components-gh0qeey3.js} +63 -29
- package/dist/shared/{components-39jq9va1.js → components-gvbapfen.js} +29 -24
- package/dist/shared/{components-5vgpnxgy.js → components-gzesg7hy.js} +19 -16
- package/dist/shared/components-h6p86be3.js +19 -0
- package/dist/shared/components-h83az0bz.js +33 -0
- package/dist/shared/components-jjrj6ymn.js +104 -0
- package/dist/shared/{components-wvp1m52g.js → components-jp5v0m0f.js} +15 -14
- package/dist/shared/{components-zrkzcayz.js → components-jqpefjsn.js} +54 -6
- package/dist/shared/{components-1z6tdadk.js → components-k74j4hwh.js} +20 -17
- package/dist/shared/components-kswxnm3h.js +24 -0
- package/dist/shared/{components-jbbmdr74.js → components-mkkbbgb7.js} +36 -17
- package/dist/shared/{components-pbmqctfa.js → components-mpw667rb.js} +169 -65
- package/dist/shared/{components-s5ngg32c.js → components-paa08427.js} +121 -47
- package/dist/shared/{components-vfbhxf5r.js → components-pd42emw3.js} +6 -5
- package/dist/shared/{components-hw9yk32z.js → components-pmfszv7a.js} +35 -23
- package/dist/shared/{components-chacnk61.js → components-pw06rbxq.js} +19 -19
- package/dist/shared/components-q03cktx8.js +246 -0
- package/dist/shared/{components-kvr7f9hy.js → components-qdm3yh26.js} +19 -10
- package/dist/shared/{components-27nnvrwe.js → components-qs4rkqsj.js} +15 -14
- package/dist/shared/{components-s083f38z.js → components-r6gbmkew.js} +22 -21
- package/dist/shared/{components-ta7shw28.js → components-r8eqs7gz.js} +4 -4
- package/dist/shared/{components-sn1rxx1d.js → components-rm02h9nt.js} +12 -11
- package/dist/shared/{components-c6s6b43g.js → components-rrbpmfx4.js} +3 -2
- package/dist/shared/{components-n7mjr357.js → components-tz1fv35x.js} +3 -2
- package/dist/shared/components-tz4gaf1v.js +23 -0
- package/dist/shared/{components-zx6b6yby.js → components-vf45j12c.js} +4 -18
- package/dist/shared/{components-3ky44908.js → components-vfjc9jzz.js} +2 -3
- package/dist/shared/{components-39vmfq9s.js → components-vsa625vk.js} +21 -20
- package/dist/shared/components-wawnmkph.js +500 -0
- package/dist/shared/components-wktrrb4m.js +38 -0
- package/dist/shared/{components-8snj490h.js → components-wwd363me.js} +78 -32
- package/dist/shared/{components-5pnw8183.js → components-xcwvgcrd.js} +23 -22
- package/dist/shared/components-xdqmt6ed.js +20 -0
- package/dist/shared/{components-h2ajmhwn.js → components-y1w3a6wx.js} +107 -35
- package/dist/shared/{components-ar66gnt0.js → components-y6578b8h.js} +37 -34
- package/dist/shared/{components-59efxjd9.js → components-yhgq0qxx.js} +13 -12
- package/dist/shared/{components-jthe1pwb.js → components-yz84gpkq.js} +101 -404
- package/dist/shared/components-z3v0n0de.js +11 -0
- package/dist/shared/{components-7r3etddy.js → components-z9n19fyk.js} +19 -54
- package/dist/shared/components-zbvjzh1p.js +141 -0
- package/dist/styles.css +241 -16
- package/dist/tailwind.css +13 -0
- package/dist/tokens.css +34 -0
- package/index.ts +60 -0
- package/lib/date-locale.ts +50 -0
- package/lib/field-classes.ts +115 -0
- package/lib/field-variants.ts +117 -0
- package/lib/fluid-hover-highlight.tsx +139 -0
- package/lib/focus-ring.tsx +46 -0
- package/lib/goo-indicator.tsx +261 -0
- package/lib/icon-context.tsx +310 -0
- package/lib/inert.ts +22 -0
- package/lib/morph-layers.tsx +102 -0
- package/lib/morph-part.tsx +49 -0
- package/lib/popup.ts +52 -0
- package/lib/reduced-motion.ts +19 -0
- package/lib/row-index.tsx +29 -0
- package/lib/row-order.tsx +115 -0
- package/lib/scroll-column.tsx +244 -0
- package/lib/shape-context.tsx +124 -0
- package/lib/size-context.tsx +66 -0
- package/lib/size-scale.ts +115 -0
- package/lib/slot.ts +25 -0
- package/lib/springs.ts +62 -0
- package/lib/surface-classes.ts +58 -0
- package/lib/surface-context.tsx +21 -0
- package/lib/use-controllable-state.ts +44 -0
- package/lib/use-fluid-hover.ts +541 -0
- package/lib/use-is-mobile.ts +25 -0
- package/lib/use-keyboard-nav-gate.ts +45 -0
- package/lib/use-merge-split.tsx +209 -0
- package/lib/use-morph.ts +557 -0
- package/lib/use-touch-primary.tsx +43 -0
- package/lib/utils.ts +37 -0
- package/package.json +177 -4
- package/preset.ts +196 -0
- package/primitives/code/examples.mdx +27 -0
- package/primitives/code/index.tsx +80 -0
- package/primitives/craft/demos.tsx +173 -0
- package/primitives/craft/examples.mdx +138 -0
- package/primitives/craft/index.tsx +76 -0
- package/primitives/fluid-hover/examples.mdx +84 -0
- package/primitives/fluid-hover/index.tsx +316 -0
- package/primitives/morph/examples.mdx +135 -0
- package/primitives/morph/index.tsx +192 -0
- package/primitives/motion/examples.mdx +100 -0
- package/primitives/motion/index.tsx +160 -0
- package/primitives/scroll-area/examples.mdx +58 -0
- package/primitives/scroll-area/index.tsx +200 -0
- package/primitives/separator/examples.mdx +30 -0
- package/primitives/separator/index.tsx +53 -0
- package/primitives/sizes/examples.mdx +167 -0
- package/primitives/sizes/index.tsx +89 -0
- package/primitives/skeleton/examples.mdx +51 -0
- package/primitives/skeleton/index.tsx +72 -0
- package/primitives/skeleton/skeleton.css +15 -0
- package/primitives/surface/examples.mdx +173 -0
- package/primitives/surface/index.tsx +109 -0
- package/primitives/surface/surface.css +176 -0
- package/dist/shared/components-0sn7ypjw.js +0 -61
- package/dist/shared/components-1434p1mh.js +0 -123
- package/dist/shared/components-a86dytt0.js +0 -986
- package/dist/shared/components-gf5s6ap9.js +0 -42
- package/dist/shared/components-hyq23phv.js +0 -310
- package/dist/shared/components-ng72k97e.js +0 -128
- package/dist/shared/components-raknhppb.js +0 -64
- package/dist/shared/components-vynjtrk6.js +0 -19
- package/dist/shared/components-wy9jpqny.js +0 -146
- /package/dist/shared/{components-1v7rxytx.js → components-3ey0hzpb.js} +0 -0
- /package/dist/shared/{components-ezxhrmer.js → components-jcnjay5g.js} +0 -0
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {
|
|
2
3
|
cn2
|
|
3
|
-
} from "./components-
|
|
4
|
+
} from "./components-jcnjay5g.js";
|
|
4
5
|
import {
|
|
5
6
|
FluidHoverHighlight2
|
|
6
|
-
} from "./components-
|
|
7
|
+
} from "./components-qdm3yh26.js";
|
|
7
8
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./components-
|
|
9
|
+
useShape2
|
|
10
|
+
} from "./components-78x40gee.js";
|
|
10
11
|
import {
|
|
11
12
|
useFluidHover2,
|
|
12
13
|
useRegisterFluidHoverItem2
|
|
13
|
-
} from "./components-
|
|
14
|
+
} from "./components-yhgq0qxx.js";
|
|
14
15
|
|
|
15
16
|
// primitives/fluid-hover/index.tsx
|
|
16
17
|
import {
|
|
@@ -41,7 +42,7 @@ var containerAxisClass = {
|
|
|
41
42
|
};
|
|
42
43
|
var FluidHoverItem2 = forwardRef(({ index, disabled = false, className, children, ...props }, ref) => {
|
|
43
44
|
const list = useContext(FluidHoverContext);
|
|
44
|
-
const shape =
|
|
45
|
+
const shape = useShape2();
|
|
45
46
|
const innerRef = useRef(null);
|
|
46
47
|
useRegisterFluidHoverItem2(list?.registerItem, index, innerRef);
|
|
47
48
|
const axis = list?.axis ?? "y";
|
|
@@ -77,7 +78,7 @@ var FluidHover2 = forwardRef(({
|
|
|
77
78
|
...props
|
|
78
79
|
}, ref) => {
|
|
79
80
|
const containerRef = useRef(null);
|
|
80
|
-
const shape =
|
|
81
|
+
const shape = useShape2();
|
|
81
82
|
const resolvedAxis = axis ?? ((columns ?? 1) > 1 ? "xy" : "y");
|
|
82
83
|
const resolvedColumns = resolvedAxis === "xy" ? Math.max(1, columns ?? 2) : 1;
|
|
83
84
|
const hover = useFluidHover2(containerRef, {
|
|
@@ -1,61 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
fieldIconClasses2
|
|
4
|
+
} from "./components-124epb7f.js";
|
|
5
|
+
import {
|
|
6
|
+
shapeMap2,
|
|
7
|
+
useShape2
|
|
8
|
+
} from "./components-78x40gee.js";
|
|
5
9
|
import {
|
|
6
10
|
useSize2
|
|
7
|
-
} from "./components-
|
|
11
|
+
} from "./components-h83az0bz.js";
|
|
8
12
|
import {
|
|
9
13
|
cn2
|
|
10
|
-
} from "./components-
|
|
14
|
+
} from "./components-jcnjay5g.js";
|
|
15
|
+
import {
|
|
16
|
+
useFieldBox2
|
|
17
|
+
} from "./components-6zng858q.js";
|
|
18
|
+
import {
|
|
19
|
+
useReduceMotion2
|
|
20
|
+
} from "./components-de99ykt7.js";
|
|
11
21
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from "./components-raknhppb.js";
|
|
22
|
+
spring2
|
|
23
|
+
} from "./components-3ey0hzpb.js";
|
|
15
24
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from "./components-
|
|
25
|
+
opensInPlace2,
|
|
26
|
+
inPlaceOffset2,
|
|
27
|
+
useMorphOrigin2,
|
|
28
|
+
useMorph2
|
|
29
|
+
} from "./components-awra5sff.js";
|
|
21
30
|
import {
|
|
22
31
|
FluidHoverHighlight2
|
|
23
|
-
} from "./components-
|
|
32
|
+
} from "./components-qdm3yh26.js";
|
|
33
|
+
import {
|
|
34
|
+
useIcon2
|
|
35
|
+
} from "./components-jqpefjsn.js";
|
|
36
|
+
import {
|
|
37
|
+
MorphSurface2
|
|
38
|
+
} from "./components-4y816hwp.js";
|
|
24
39
|
import {
|
|
25
|
-
|
|
26
|
-
|
|
40
|
+
popupScrollAreaClass2,
|
|
41
|
+
popupViewportClass2,
|
|
42
|
+
isDisabledRow2
|
|
43
|
+
} from "./components-h6p86be3.js";
|
|
27
44
|
import {
|
|
28
|
-
|
|
29
|
-
|
|
45
|
+
SURFACE_BG2,
|
|
46
|
+
SURFACE_SHADOW2
|
|
47
|
+
} from "./components-vf45j12c.js";
|
|
30
48
|
import {
|
|
31
|
-
SURFACE_BG,
|
|
32
|
-
SURFACE_SHADOW,
|
|
33
49
|
useSurface2,
|
|
34
50
|
SurfaceProvider2
|
|
35
|
-
} from "./components-
|
|
51
|
+
} from "./components-dhgk6mbt.js";
|
|
52
|
+
import {
|
|
53
|
+
useControllableState2
|
|
54
|
+
} from "./components-tz1fv35x.js";
|
|
36
55
|
import {
|
|
37
56
|
useFluidHover2,
|
|
38
57
|
useRegisterFluidHoverItem2
|
|
39
|
-
} from "./components-
|
|
58
|
+
} from "./components-yhgq0qxx.js";
|
|
40
59
|
import {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
} from "./components-
|
|
60
|
+
useSelectionRuns2,
|
|
61
|
+
useMergeSplitBlocks2,
|
|
62
|
+
SelectionBackgrounds2
|
|
63
|
+
} from "./components-8tt3xbb5.js";
|
|
45
64
|
import {
|
|
46
65
|
ScrollArea2
|
|
47
|
-
} from "./components-
|
|
66
|
+
} from "./components-2z48g4fp.js";
|
|
48
67
|
import {
|
|
49
68
|
SizeProvider2
|
|
50
|
-
} from "./components-
|
|
51
|
-
import {
|
|
52
|
-
popupScrollAreaClass,
|
|
53
|
-
popupViewportClass,
|
|
54
|
-
isDisabledRow
|
|
55
|
-
} from "./components-vynjtrk6.js";
|
|
56
|
-
import {
|
|
57
|
-
spring2
|
|
58
|
-
} from "./components-1v7rxytx.js";
|
|
69
|
+
} from "./components-dcc02hs2.js";
|
|
59
70
|
|
|
60
71
|
// components/inputs/combobox/index.tsx
|
|
61
72
|
import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";
|
|
@@ -76,6 +87,11 @@ function itemValue(item) {
|
|
|
76
87
|
return typeof item === "string" ? item : item.value;
|
|
77
88
|
}
|
|
78
89
|
function itemLabel(item) {
|
|
90
|
+
if (typeof item === "string")
|
|
91
|
+
return item;
|
|
92
|
+
return item.textValue ?? (typeof item.label === "string" ? item.label : item.value);
|
|
93
|
+
}
|
|
94
|
+
function itemNode(item) {
|
|
79
95
|
return typeof item === "string" ? item : item.label;
|
|
80
96
|
}
|
|
81
97
|
var CREATE_VALUE = "\x00create";
|
|
@@ -117,15 +133,24 @@ function Combobox2({
|
|
|
117
133
|
disabled = false,
|
|
118
134
|
name,
|
|
119
135
|
required,
|
|
136
|
+
inputValue: inputValueProp,
|
|
137
|
+
defaultInputValue,
|
|
138
|
+
onInputValueChange,
|
|
139
|
+
loading = false,
|
|
140
|
+
loadingLabel = "Loading…",
|
|
141
|
+
readOnly = false,
|
|
142
|
+
open: openProp,
|
|
143
|
+
defaultOpen = false,
|
|
144
|
+
onOpenChange,
|
|
120
145
|
size
|
|
121
146
|
}) {
|
|
122
147
|
const isMultiple = !!multiple;
|
|
123
148
|
const [internalValues, setInternalValues] = useState(() => toValues(defaultValue));
|
|
124
|
-
const [inputValue, setInputValue] =
|
|
125
|
-
const [open, setOpen] =
|
|
149
|
+
const [inputValue, setInputValue] = useControllableState2(inputValueProp, defaultInputValue ?? "", onInputValueChange);
|
|
150
|
+
const [open, setOpen] = useControllableState2(openProp, defaultOpen, onOpenChange);
|
|
126
151
|
const [highlight, setHighlight] = useState(null);
|
|
127
152
|
const [createdItems, setCreatedItems] = useState([]);
|
|
128
|
-
const { origin, capture } =
|
|
153
|
+
const { origin, capture } = useMorphOrigin2();
|
|
129
154
|
const anchorRef = useRef(null);
|
|
130
155
|
const controlledValues = useMemo(() => toValues(value), [value]);
|
|
131
156
|
const values = value !== undefined ? controlledValues : internalValues;
|
|
@@ -182,6 +207,8 @@ function Combobox2({
|
|
|
182
207
|
}, [value, onValueChange, isMultiple, creatable]);
|
|
183
208
|
const { contains } = ComboboxPrimitive.useFilter();
|
|
184
209
|
const filterFn = useMemo(() => {
|
|
210
|
+
if (filter === null)
|
|
211
|
+
return null;
|
|
185
212
|
if (!filter && !createItem)
|
|
186
213
|
return;
|
|
187
214
|
const match = filter ? (item, q) => filter(item, q) : (item, q) => contains(item, q, itemLabel);
|
|
@@ -198,8 +225,26 @@ function Combobox2({
|
|
|
198
225
|
disabled,
|
|
199
226
|
itemsByValue,
|
|
200
227
|
createRow,
|
|
201
|
-
allSelected
|
|
202
|
-
|
|
228
|
+
allSelected,
|
|
229
|
+
loading,
|
|
230
|
+
loadingLabel,
|
|
231
|
+
readOnly,
|
|
232
|
+
setOpen
|
|
233
|
+
}), [
|
|
234
|
+
values,
|
|
235
|
+
isMultiple,
|
|
236
|
+
inputValue,
|
|
237
|
+
open,
|
|
238
|
+
origin,
|
|
239
|
+
disabled,
|
|
240
|
+
itemsByValue,
|
|
241
|
+
createRow,
|
|
242
|
+
allSelected,
|
|
243
|
+
loading,
|
|
244
|
+
loadingLabel,
|
|
245
|
+
readOnly,
|
|
246
|
+
setOpen
|
|
247
|
+
]);
|
|
203
248
|
const root = /* @__PURE__ */ jsx(ComboboxContext.Provider, {
|
|
204
249
|
value: ctx,
|
|
205
250
|
children: /* @__PURE__ */ jsx(ComboboxHighlightContext.Provider, {
|
|
@@ -219,10 +264,13 @@ function Combobox2({
|
|
|
219
264
|
capture({ event: details.event, trigger: anchorRef.current ?? undefined });
|
|
220
265
|
setOpen(next);
|
|
221
266
|
},
|
|
267
|
+
inputValue: inputValueProp,
|
|
268
|
+
defaultInputValue,
|
|
222
269
|
onInputValueChange: (next) => setInputValue(next),
|
|
223
270
|
autoHighlight: ALWAYS_HIGHLIGHT,
|
|
224
271
|
onItemHighlighted: (item, details) => setHighlight(item === undefined ? null : { index: details.index, keyboard: details.reason !== "pointer" }),
|
|
225
272
|
disabled,
|
|
273
|
+
readOnly,
|
|
226
274
|
name,
|
|
227
275
|
required,
|
|
228
276
|
modal: false,
|
|
@@ -236,17 +284,25 @@ function Combobox2({
|
|
|
236
284
|
}) : root;
|
|
237
285
|
}
|
|
238
286
|
Combobox2.displayName = "Combobox";
|
|
239
|
-
var popupShape =
|
|
287
|
+
var popupShape = shapeMap2.rounded;
|
|
240
288
|
var ALWAYS_HIGHLIGHT = "always";
|
|
241
289
|
var fieldButtonClass = "flex shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors duration-fast hover:text-foreground focus-visible:ring-1 focus-visible:ring-focus-ring data-[disabled]:pointer-events-none";
|
|
242
290
|
var clearButtonClass = cn2(fieldButtonClass, "hover:bg-hover active:bg-active transition-[color,background-color]");
|
|
243
291
|
var chipRemoveClass = cn2(fieldButtonClass, "rounded hover:bg-active");
|
|
292
|
+
var SHOWN = { opacity: 1, scale: 1, filter: "blur(0px)" };
|
|
293
|
+
var HIDDEN = { opacity: 0, scale: 0.6, filter: "blur(4px)" };
|
|
294
|
+
var swapEnter = { type: "tween", duration: spring2.fast.duration, ease: "easeOut" };
|
|
295
|
+
var swapLeave = { type: "tween", ...spring2.fast.exit, ease: "easeIn" };
|
|
244
296
|
function FieldControls({ clearable, compact, iconSize }) {
|
|
245
|
-
const XIcon =
|
|
246
|
-
const
|
|
297
|
+
const XIcon = useIcon2("x");
|
|
298
|
+
const Loader = useIcon2("loader-circle");
|
|
299
|
+
const pill = useShape2().variant === "pill";
|
|
300
|
+
const { loading, readOnly } = useComboboxContext();
|
|
301
|
+
const reduced = useReduceMotion2();
|
|
302
|
+
const swap = (shown) => reduced ? { opacity: shown ? 1 : 0 } : shown ? SHOWN : HIDDEN;
|
|
247
303
|
return /* @__PURE__ */ jsxs(Fragment, {
|
|
248
304
|
children: [
|
|
249
|
-
clearable && /* @__PURE__ */ jsx("span", {
|
|
305
|
+
clearable && !readOnly && /* @__PURE__ */ jsx("span", {
|
|
250
306
|
className: cn2("flex shrink-0 items-center justify-center", compact ? "size-5" : "size-6"),
|
|
251
307
|
children: /* @__PURE__ */ jsx(ComboboxPrimitive.Clear, {
|
|
252
308
|
"aria-label": "Clear",
|
|
@@ -261,28 +317,52 @@ function FieldControls({ clearable, compact, iconSize }) {
|
|
|
261
317
|
"aria-label": "Open",
|
|
262
318
|
tabIndex: -1,
|
|
263
319
|
className: cn2(fieldButtonClass, compact ? "size-5" : "size-6"),
|
|
264
|
-
children: /* @__PURE__ */
|
|
265
|
-
|
|
266
|
-
height: iconSize,
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
320
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
321
|
+
className: "grid",
|
|
322
|
+
style: { width: iconSize, height: iconSize },
|
|
323
|
+
children: [
|
|
324
|
+
/* @__PURE__ */ jsx(motion.span, {
|
|
325
|
+
className: "col-start-1 row-start-1 flex",
|
|
326
|
+
initial: false,
|
|
327
|
+
animate: swap(!loading),
|
|
328
|
+
transition: loading ? swapLeave : swapEnter,
|
|
329
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
330
|
+
width: iconSize,
|
|
331
|
+
height: iconSize,
|
|
332
|
+
viewBox: "0 0 24 24",
|
|
333
|
+
fill: "none",
|
|
334
|
+
stroke: "currentColor",
|
|
335
|
+
strokeWidth: 2,
|
|
336
|
+
strokeLinecap: "round",
|
|
337
|
+
strokeLinejoin: "round",
|
|
338
|
+
className: cn2("transition-colors duration-fast", readOnly && "invisible"),
|
|
339
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
340
|
+
d: "M6 9l6 6 6-6"
|
|
341
|
+
})
|
|
342
|
+
})
|
|
343
|
+
}),
|
|
344
|
+
/* @__PURE__ */ jsx(motion.span, {
|
|
345
|
+
"aria-hidden": true,
|
|
346
|
+
className: "col-start-1 row-start-1 flex",
|
|
347
|
+
initial: false,
|
|
348
|
+
animate: swap(loading),
|
|
349
|
+
transition: loading ? swapEnter : swapLeave,
|
|
350
|
+
children: /* @__PURE__ */ jsx(Loader, {
|
|
351
|
+
size: iconSize,
|
|
352
|
+
strokeWidth: 1.5,
|
|
353
|
+
className: "animate-spin motion-reduce:animate-none"
|
|
354
|
+
})
|
|
355
|
+
})
|
|
356
|
+
]
|
|
277
357
|
})
|
|
278
358
|
})
|
|
279
359
|
]
|
|
280
360
|
});
|
|
281
361
|
}
|
|
282
362
|
var ComboboxInput2 = forwardRef(({ className, variant = "bordered", icon: Icon, placeholder = "Search…", error, clearable = false, size, ...props }, ref) => {
|
|
283
|
-
const {
|
|
363
|
+
const { anchorRef, readOnly } = useComboboxContext();
|
|
364
|
+
const { size: sizeClasses, props: boxProps } = useFieldBox2({ variant, invalid: !!error, readOnly, size });
|
|
284
365
|
const compact = sizeClasses.variant === "compact";
|
|
285
|
-
const { anchorRef } = useComboboxContext();
|
|
286
366
|
return /* @__PURE__ */ jsxs("div", {
|
|
287
367
|
className: "flex flex-col gap-1",
|
|
288
368
|
children: [
|
|
@@ -294,7 +374,7 @@ var ComboboxInput2 = forwardRef(({ className, variant = "bordered", icon: Icon,
|
|
|
294
374
|
Icon && /* @__PURE__ */ jsx(Icon, {
|
|
295
375
|
size: sizeClasses.icon,
|
|
296
376
|
strokeWidth: 1.5,
|
|
297
|
-
className:
|
|
377
|
+
className: fieldIconClasses2
|
|
298
378
|
}),
|
|
299
379
|
/* @__PURE__ */ jsx(ComboboxPrimitive.Input, {
|
|
300
380
|
ref,
|
|
@@ -345,10 +425,10 @@ function useChipRowHeight(padY) {
|
|
|
345
425
|
return { ref, height };
|
|
346
426
|
}
|
|
347
427
|
var ComboboxChips2 = forwardRef(({ className, variant = "bordered", icon: Icon, placeholder = "Search…", error, clearable = false, size, ...props }, ref) => {
|
|
348
|
-
const XIcon =
|
|
349
|
-
const shape =
|
|
350
|
-
const { anchorRef, open, disabled, inputValue, values } = useComboboxContext();
|
|
351
|
-
const { size: sizeClasses, props: boxProps } =
|
|
428
|
+
const XIcon = useIcon2("x");
|
|
429
|
+
const shape = useShape2();
|
|
430
|
+
const { anchorRef, open, disabled, inputValue, values, readOnly } = useComboboxContext();
|
|
431
|
+
const { size: sizeClasses, props: boxProps } = useFieldBox2({ variant, invalid: !!error, disabled, readOnly, size });
|
|
352
432
|
const compact = sizeClasses.variant === "compact";
|
|
353
433
|
const rowHeight = useChipRowHeight(compact ? 8 : 12);
|
|
354
434
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -368,7 +448,7 @@ var ComboboxChips2 = forwardRef(({ className, variant = "bordered", icon: Icon,
|
|
|
368
448
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
369
449
|
size: sizeClasses.icon,
|
|
370
450
|
strokeWidth: 1.5,
|
|
371
|
-
className:
|
|
451
|
+
className: fieldIconClasses2
|
|
372
452
|
})
|
|
373
453
|
}),
|
|
374
454
|
/* @__PURE__ */ jsx("div", {
|
|
@@ -400,10 +480,10 @@ var ComboboxChips2 = forwardRef(({ className, variant = "bordered", icon: Icon,
|
|
|
400
480
|
className: cn2("inline-flex max-w-full shrink-0 items-center gap-0.5 bg-hover pl-2 pr-0.5 text-foreground outline-none", shape.variant === "pill" ? "rounded-full" : "rounded-md", "focus-visible:ring-1 focus-visible:ring-focus-ring", compact ? "h-5 text-caption-compact" : "h-6 text-caption"),
|
|
401
481
|
children: [
|
|
402
482
|
/* @__PURE__ */ jsx("span", {
|
|
403
|
-
className: "truncate",
|
|
404
|
-
children:
|
|
483
|
+
className: cn2(typeof itemNode(item) === "string" ? "truncate" : "flex min-w-0 items-center", readOnly && "pr-1.5"),
|
|
484
|
+
children: itemNode(item)
|
|
405
485
|
}),
|
|
406
|
-
/* @__PURE__ */ jsx(ComboboxPrimitive.ChipRemove, {
|
|
486
|
+
!readOnly && /* @__PURE__ */ jsx(ComboboxPrimitive.ChipRemove, {
|
|
407
487
|
"aria-label": `Remove ${label}`,
|
|
408
488
|
className: cn2(chipRemoveClass, shape.variant === "pill" && "rounded-full", compact ? "size-4" : "size-5"),
|
|
409
489
|
children: /* @__PURE__ */ jsx(XIcon, {
|
|
@@ -455,10 +535,11 @@ var ComboboxContent2 = forwardRef(({
|
|
|
455
535
|
from,
|
|
456
536
|
effect,
|
|
457
537
|
hideSource,
|
|
458
|
-
tier = "moderate"
|
|
538
|
+
tier = "moderate",
|
|
539
|
+
footer
|
|
459
540
|
}, ref) => {
|
|
460
|
-
const { open, origin, anchorRef } = useComboboxContext();
|
|
461
|
-
const morph =
|
|
541
|
+
const { open, origin, anchorRef, setOpen, inputValue } = useComboboxContext();
|
|
542
|
+
const morph = useMorph2(open, origin, { from, effect, hideSource, tier });
|
|
462
543
|
useImperativeHandle(ref, () => morph.popup, [morph.popup]);
|
|
463
544
|
const level = Math.min(useSurface2() + 2, 8);
|
|
464
545
|
const shape = popupShape;
|
|
@@ -467,20 +548,26 @@ var ComboboxContent2 = forwardRef(({
|
|
|
467
548
|
anchor: anchorRef,
|
|
468
549
|
side,
|
|
469
550
|
align,
|
|
470
|
-
sideOffset:
|
|
551
|
+
sideOffset: opensInPlace2({ effect, hideSource }) ? inPlaceOffset2 : sideOffset,
|
|
471
552
|
className: "z-50 outline-none",
|
|
472
553
|
children: /* @__PURE__ */ jsx(ComboboxPrimitive.Popup, {
|
|
473
554
|
ref: morph.popupRef,
|
|
474
555
|
className: "relative select-none outline-none",
|
|
475
556
|
children: /* @__PURE__ */ jsx(SurfaceProvider2, {
|
|
476
557
|
value: level,
|
|
477
|
-
children: /* @__PURE__ */
|
|
558
|
+
children: /* @__PURE__ */ jsxs(MorphSurface2, {
|
|
478
559
|
morph,
|
|
479
|
-
bg:
|
|
480
|
-
shadow:
|
|
560
|
+
bg: SURFACE_BG2[level],
|
|
561
|
+
shadow: SURFACE_SHADOW2[3],
|
|
481
562
|
radius: shape.container,
|
|
482
563
|
className: cn2(`flex flex-col min-w-[var(--anchor-width)] max-h-[min(300px,var(--available-height))] overflow-hidden ${shape.container}`, className),
|
|
483
|
-
children
|
|
564
|
+
children: [
|
|
565
|
+
children,
|
|
566
|
+
footer !== undefined && /* @__PURE__ */ jsx("div", {
|
|
567
|
+
className: "shrink-0 border-t border-border p-1",
|
|
568
|
+
children: typeof footer === "function" ? footer({ close: () => setOpen(false), query: inputValue.trim() }) : footer
|
|
569
|
+
})
|
|
570
|
+
]
|
|
484
571
|
})
|
|
485
572
|
})
|
|
486
573
|
})
|
|
@@ -489,12 +576,14 @@ var ComboboxContent2 = forwardRef(({
|
|
|
489
576
|
});
|
|
490
577
|
ComboboxContent2.displayName = "ComboboxContent";
|
|
491
578
|
var ComboboxList2 = forwardRef(({ className, children }, ref) => {
|
|
492
|
-
const { open, values, multiple, inputValue, createRow } = useComboboxContext();
|
|
579
|
+
const { open, values, multiple, inputValue, createRow, loading, loadingLabel } = useComboboxContext();
|
|
580
|
+
const Loader = useIcon2("loader-circle");
|
|
581
|
+
const sizeClasses = useSize2();
|
|
493
582
|
const highlight = useContext(ComboboxHighlightContext);
|
|
494
|
-
const PlusIcon =
|
|
583
|
+
const PlusIcon = useIcon2("plus");
|
|
495
584
|
const shape = popupShape;
|
|
496
585
|
const containerRef = useRef(null);
|
|
497
|
-
const hover = useFluidHover2(containerRef, { isItemDisabled:
|
|
586
|
+
const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow2 });
|
|
498
587
|
const { activeIndex, setActiveIndex, itemRects, isMeasured, handlers, registerItem, remeasure } = hover;
|
|
499
588
|
const [checkedIndices, setCheckedIndices] = useState([]);
|
|
500
589
|
useEffect(() => {
|
|
@@ -552,64 +641,81 @@ var ComboboxList2 = forwardRef(({ className, children }, ref) => {
|
|
|
552
641
|
}, [open, setActiveIndex]);
|
|
553
642
|
const firstChecked = checkedIndices[0];
|
|
554
643
|
const checkedRect = isMeasured && !multiple && firstChecked !== undefined ? itemRects[firstChecked] ?? null : null;
|
|
555
|
-
const runs =
|
|
556
|
-
const blocks =
|
|
644
|
+
const runs = useSelectionRuns2(multiple ? checkedIndices : []);
|
|
645
|
+
const blocks = useMergeSplitBlocks2(runs, isMeasured && open ? itemRects : [], shape.bgRadius);
|
|
557
646
|
const contentCtx = useMemo(() => ({ registerItem, activeIndex }), [registerItem, activeIndex]);
|
|
558
647
|
return /* @__PURE__ */ jsx(ComboboxContentContext.Provider, {
|
|
559
648
|
value: contentCtx,
|
|
560
|
-
children: /* @__PURE__ */
|
|
561
|
-
className:
|
|
562
|
-
viewportClassName: cn2(
|
|
563
|
-
children:
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
ref
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
649
|
+
children: /* @__PURE__ */ jsxs(ScrollArea2, {
|
|
650
|
+
className: popupScrollAreaClass2,
|
|
651
|
+
viewportClassName: cn2(popupViewportClass2, "scroll-fade"),
|
|
652
|
+
children: [
|
|
653
|
+
/* @__PURE__ */ jsxs(ComboboxPrimitive.List, {
|
|
654
|
+
ref: (node) => {
|
|
655
|
+
containerRef.current = node;
|
|
656
|
+
if (typeof ref === "function")
|
|
657
|
+
ref(node);
|
|
658
|
+
else if (ref)
|
|
659
|
+
ref.current = node;
|
|
660
|
+
},
|
|
661
|
+
onMouseEnter: handlers.onMouseEnter,
|
|
662
|
+
onMouseMove: handlers.onMouseMove,
|
|
663
|
+
onMouseLeave: handlers.onMouseLeave,
|
|
664
|
+
onClick: handlers.onClick,
|
|
665
|
+
className: cn2("relative flex flex-col p-1 outline-none data-[empty]:p-0", className),
|
|
666
|
+
children: [
|
|
667
|
+
open && multiple && /* @__PURE__ */ jsx(SelectionBackgrounds2, {
|
|
668
|
+
blocks: reflowSnap ? blocks.map((b) => ({ ...b, instant: true })) : blocks
|
|
669
|
+
}),
|
|
670
|
+
open && !multiple && /* @__PURE__ */ jsx(AnimatePresence, {
|
|
671
|
+
children: checkedRect && /* @__PURE__ */ jsx(motion.div, {
|
|
672
|
+
"aria-hidden": true,
|
|
673
|
+
className: `absolute ${shape.bg} bg-active pointer-events-none`,
|
|
674
|
+
initial: false,
|
|
675
|
+
animate: {
|
|
676
|
+
top: checkedRect.top,
|
|
677
|
+
left: checkedRect.left,
|
|
678
|
+
width: checkedRect.width,
|
|
679
|
+
height: checkedRect.height,
|
|
680
|
+
opacity: 1
|
|
681
|
+
},
|
|
682
|
+
exit: { opacity: 0, transition: spring2.moderate.exit },
|
|
683
|
+
transition: reflowSnap ? { duration: 0 } : { ...spring2.moderate, opacity: { duration: spring2.fast.duration } }
|
|
684
|
+
}, "checked")
|
|
685
|
+
}),
|
|
686
|
+
open && /* @__PURE__ */ jsx(FluidHoverHighlight2, {
|
|
687
|
+
hover,
|
|
688
|
+
className: shape.bg,
|
|
689
|
+
transition: reflowSnap ? false : undefined
|
|
690
|
+
}),
|
|
691
|
+
/* @__PURE__ */ jsx(ComboboxPrimitive.Collection, {
|
|
692
|
+
children: (item, index) => /* @__PURE__ */ jsx(ComboboxItemIndexContext.Provider, {
|
|
693
|
+
value: index,
|
|
694
|
+
children: isCreateItem(item) ? /* @__PURE__ */ jsx(ComboboxItem2, {
|
|
695
|
+
value: CREATE_VALUE,
|
|
696
|
+
icon: PlusIcon,
|
|
697
|
+
children: createRow
|
|
698
|
+
}) : children(item, index)
|
|
699
|
+
}, itemValue(item))
|
|
700
|
+
})
|
|
701
|
+
]
|
|
702
|
+
}),
|
|
703
|
+
loading && /* @__PURE__ */ jsxs("div", {
|
|
704
|
+
role: "status",
|
|
705
|
+
className: cn2("flex shrink-0 items-center justify-center text-muted-foreground", sizeClasses.control, sizeClasses.itemPx, sizeClasses.gap, sizeClasses.text),
|
|
706
|
+
children: [
|
|
707
|
+
/* @__PURE__ */ jsx(Loader, {
|
|
708
|
+
size: sizeClasses.icon,
|
|
709
|
+
strokeWidth: 1.5,
|
|
710
|
+
className: "shrink-0 animate-spin motion-reduce:animate-none"
|
|
711
|
+
}),
|
|
712
|
+
/* @__PURE__ */ jsx("span", {
|
|
713
|
+
className: "truncate [text-box:trim-both_cap_alphabetic]",
|
|
714
|
+
children: loadingLabel
|
|
715
|
+
})
|
|
716
|
+
]
|
|
717
|
+
})
|
|
718
|
+
]
|
|
613
719
|
})
|
|
614
720
|
});
|
|
615
721
|
});
|
|
@@ -656,7 +762,7 @@ var ComboboxItem2 = forwardRef(({ className, children, icon: Icon, value, disabl
|
|
|
656
762
|
className: "shrink-0 transition-[color,stroke-width] duration-fast"
|
|
657
763
|
}),
|
|
658
764
|
/* @__PURE__ */ jsx("span", {
|
|
659
|
-
className: "flex-1 min-w-0 truncate [text-box:trim-both_cap_alphabetic] py-1 -my-1",
|
|
765
|
+
className: cn2("flex-1 min-w-0", typeof children === "string" || typeof children === "number" ? "truncate [text-box:trim-both_cap_alphabetic] py-1 -my-1" : "flex items-center"),
|
|
660
766
|
children
|
|
661
767
|
}),
|
|
662
768
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -702,7 +808,7 @@ var ComboboxEmpty2 = forwardRef(({ className, children, allSelected, ...props },
|
|
|
702
808
|
ref,
|
|
703
809
|
className: cn2("px-3 text-center text-muted-foreground [&:not(:empty)]:py-6", sizeClasses.text, className),
|
|
704
810
|
...props,
|
|
705
|
-
children: ctx.allSelected && allSelected !== undefined ? allSelected : children
|
|
811
|
+
children: ctx.loading ? null : ctx.allSelected && allSelected !== undefined ? allSelected : children
|
|
706
812
|
});
|
|
707
813
|
});
|
|
708
814
|
ComboboxEmpty2.displayName = "ComboboxEmpty";
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./components-
|
|
3
|
+
useShape2
|
|
4
|
+
} from "./components-78x40gee.js";
|
|
5
|
+
import {
|
|
6
|
+
useTouchPrimary2
|
|
7
|
+
} from "./components-drxrtnp2.js";
|
|
4
8
|
import {
|
|
5
9
|
cn2
|
|
6
|
-
} from "./components-
|
|
10
|
+
} from "./components-jcnjay5g.js";
|
|
7
11
|
|
|
8
12
|
// primitives/scroll-area/index.tsx
|
|
9
13
|
import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
|
|
@@ -12,35 +16,10 @@ import {
|
|
|
12
16
|
forwardRef,
|
|
13
17
|
useContext
|
|
14
18
|
} from "react";
|
|
15
|
-
|
|
16
|
-
// lib/use-touch-primary.tsx
|
|
17
|
-
import { useEffect, useState } from "react";
|
|
18
|
-
function useTouchPrimary() {
|
|
19
|
-
const [isTouchPrimary, setIsTouchPrimary] = useState(false);
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
if (typeof window === "undefined")
|
|
22
|
-
return;
|
|
23
|
-
const controller = new AbortController;
|
|
24
|
-
const { signal } = controller;
|
|
25
|
-
const handleTouch = () => {
|
|
26
|
-
const hasTouch = "ontouchstart" in window || navigator.maxTouchPoints > 0;
|
|
27
|
-
const prefersTouch = window.matchMedia("(pointer: coarse)").matches;
|
|
28
|
-
setIsTouchPrimary(hasTouch && prefersTouch);
|
|
29
|
-
};
|
|
30
|
-
const mq = window.matchMedia("(pointer: coarse)");
|
|
31
|
-
mq.addEventListener("change", handleTouch, { signal });
|
|
32
|
-
window.addEventListener("pointerdown", handleTouch, { signal });
|
|
33
|
-
handleTouch();
|
|
34
|
-
return () => controller.abort();
|
|
35
|
-
}, []);
|
|
36
|
-
return isTouchPrimary;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// primitives/scroll-area/index.tsx
|
|
40
19
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
41
20
|
var ScrollAreaContext = createContext(false);
|
|
42
21
|
var ScrollArea2 = forwardRef(({ className, children, viewportClassName, orientation = "vertical", ...props }, ref) => {
|
|
43
|
-
const isTouch =
|
|
22
|
+
const isTouch = useTouchPrimary2();
|
|
44
23
|
return /* @__PURE__ */ jsx(ScrollAreaContext.Provider, {
|
|
45
24
|
value: isTouch,
|
|
46
25
|
children: isTouch ? /* @__PURE__ */ jsx("div", {
|
|
@@ -83,7 +62,7 @@ var ScrollArea2 = forwardRef(({ className, children, viewportClassName, orientat
|
|
|
83
62
|
ScrollArea2.displayName = "ScrollArea";
|
|
84
63
|
var ScrollBar2 = forwardRef(({ className, orientation = "vertical", ...props }, ref) => {
|
|
85
64
|
const isTouch = useContext(ScrollAreaContext);
|
|
86
|
-
const shape =
|
|
65
|
+
const shape = useShape2();
|
|
87
66
|
if (isTouch)
|
|
88
67
|
return null;
|
|
89
68
|
return /* @__PURE__ */ jsx(ScrollAreaPrimitive.Scrollbar, {
|