@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
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { MouseEvent, RefObject } from "react";
|
|
2
|
+
type ShapeVariant = "pill" | "rounded";
|
|
3
|
+
type SizeVariant = "default" | "compact";
|
|
4
|
+
interface SizeClasses {
|
|
5
|
+
/** The variant these classes belong to — handy for conditionals. */
|
|
6
|
+
variant: SizeVariant;
|
|
7
|
+
/** Bounded control height — buttons, inputs, select triggers, subtle tabs —
|
|
8
|
+
* AND list/menu rows (select options, dropdown, checkbox and radio rows).
|
|
9
|
+
* One token by design: a popup row lines up with the trigger that opened
|
|
10
|
+
* it because they share this height. */
|
|
11
|
+
control: string;
|
|
12
|
+
/** `control` as a number, for consumers that need raw pixels. */
|
|
13
|
+
controlHeight: number;
|
|
14
|
+
/** Tab trigger height inside a padded segmented list. Sized so
|
|
15
|
+
* `segmentPad` + `segmentItem` adds back up to the control height —
|
|
16
|
+
* the segmented control's outer box stays on the same ladder. */
|
|
17
|
+
segmentItem: string;
|
|
18
|
+
/** Padding of the segmented list around its tabs. */
|
|
19
|
+
segmentPad: string;
|
|
20
|
+
/** Body text inside controls. */
|
|
21
|
+
text: string;
|
|
22
|
+
/** Horizontal padding of bounded controls (select trigger, inputs). */
|
|
23
|
+
px: string;
|
|
24
|
+
/** Horizontal padding of list/menu rows, which sit inside a padded popup
|
|
25
|
+
* or group and need less inset than a bounded control. */
|
|
26
|
+
itemPx: string;
|
|
27
|
+
/** Gap between an icon / control glyph and its label, and between
|
|
28
|
+
* neighbouring controls in a row (toolbars, filter bars, button
|
|
29
|
+
* clusters). Density is spacing as much as control height, so the
|
|
30
|
+
* compact step halves it. */
|
|
31
|
+
gap: string;
|
|
32
|
+
/** Glyph size in px: leading/trailing icons inside controls, and the
|
|
33
|
+
* checkbox square / radio circle. */
|
|
34
|
+
icon: number;
|
|
35
|
+
}
|
|
36
|
+
import { ClassProp as ClassProp_wz9o0r } from "class-variance-authority/types";
|
|
37
|
+
/**
|
|
38
|
+
* The ringed box of a text field. It steps from rest to a muted fill when lit
|
|
39
|
+
* (hovered, or `data-active` from a group's fluid hover) to the card fill
|
|
40
|
+
* when focused. `data-invalid` keeps a destructive ring in every state and
|
|
41
|
+
* tints the lit fill; `data-disabled` frames and dims it; `data-readonly`
|
|
42
|
+
* shows the ring when lit or focused but never lifts the fill. Put it on the
|
|
43
|
+
* element around the control and stamp the data attributes; Base UI parts
|
|
44
|
+
* stamp `data-invalid` / `data-disabled` themselves.
|
|
45
|
+
*/
|
|
46
|
+
declare const fieldVariants: (props?: ({
|
|
47
|
+
variant?: "borderless" | "bordered" | null | undefined;
|
|
48
|
+
} & ClassProp_wz9o0r) | undefined) => string;
|
|
49
|
+
/** A leading icon inside a `fieldVariants` box: muted at rest, it darkens and thickens with the field. Pass `strokeWidth={1.5}`. */
|
|
50
|
+
declare const fieldIconClasses = "shrink-0 text-muted-foreground transition-[color,stroke-width] duration-fast group-hover/field:text-foreground group-hover/field:stroke-[2] group-data-[active]/field:text-foreground group-data-[active]/field:stroke-[2] group-focus-within/field:text-foreground group-focus-within/field:stroke-[2]";
|
|
51
|
+
/**
|
|
52
|
+
* Content beside a field's text (an adornment): muted, held to the ladder's
|
|
53
|
+
* glyph size, and lit with the field like a leading icon. Strings read as a
|
|
54
|
+
* prefix or a unit.
|
|
55
|
+
*/
|
|
56
|
+
declare const fieldAdornmentClasses = "flex shrink-0 items-center whitespace-nowrap text-muted-foreground transition-[color] duration-fast group-hover/field:text-foreground group-data-[active]/field:text-foreground group-focus-within/field:text-foreground";
|
|
57
|
+
/** Glyph size for an adornment's icons, per ladder step (16px default, 14px compact). */
|
|
58
|
+
declare const FIELD_ADORNMENT_ICON: Record<SizeVariant, string>;
|
|
59
|
+
/**
|
|
60
|
+
* A small icon button inside a field box (a password reveal, a clear, a
|
|
61
|
+
* stepper): 4px inside the ring on every side (28px in a 36px field, 20px in
|
|
62
|
+
* a 28px one), its negative margin taking back the box's inset so the gap to
|
|
63
|
+
* the edge matches the gap above and below.
|
|
64
|
+
*/
|
|
65
|
+
declare const FIELD_ACTION: Record<SizeVariant, string>;
|
|
66
|
+
/** A field action's box alone, without `FIELD_ACTION`'s margins, for actions set side by side (a stepper pair). */
|
|
67
|
+
declare const FIELD_ACTION_BOX: Record<SizeVariant, string>;
|
|
68
|
+
/** The margin that pulls the last of several side-by-side actions to 4px inside the ring. */
|
|
69
|
+
declare const FIELD_ACTION_END: Record<SizeVariant, string>;
|
|
70
|
+
/** A field action's corners, concentric with the box's (8px box, 4px gap) or round in pill mode. */
|
|
71
|
+
declare const FIELD_ACTION_RADIUS: Record<ShapeVariant, string>;
|
|
72
|
+
/** The classes every field action shares, beside its `FIELD_ACTION` size and radius. */
|
|
73
|
+
declare const fieldActionClasses = "relative inline-flex shrink-0 cursor-pointer items-center justify-center text-muted-foreground outline-none transition-[color,background-color,opacity] duration-fast hover:bg-hover hover:text-foreground active:bg-active focus-visible:ring-1 focus-visible:ring-focus-ring disabled:pointer-events-none disabled:opacity-50 data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
|
|
74
|
+
/** Horizontal inset of a field box. */
|
|
75
|
+
declare const FIELD_PX: Record<SizeVariant, string>;
|
|
76
|
+
/** Left inset of the text around a field (label, description, error), so it lines up with the text inside the box. */
|
|
77
|
+
declare const FIELD_TEXT_INSET: Record<SizeVariant, string>;
|
|
78
|
+
/** Framed at rest (`bordered`), or invisible until hovered or focused (`borderless`). */
|
|
79
|
+
type FieldVariant = "bordered" | "borderless";
|
|
80
|
+
import { Context as Context_rri5bl2 } from "react";
|
|
81
|
+
/**
|
|
82
|
+
* What every text field's box takes. Items re-declare these members in their
|
|
83
|
+
* own props interface (the docs read only same-file members), with this prose.
|
|
84
|
+
*/
|
|
85
|
+
interface FieldBoxOptions {
|
|
86
|
+
/** Framed at rest, or invisible until hovered or focused. */
|
|
87
|
+
variant: FieldVariant;
|
|
88
|
+
/** Turns the field destructive. */
|
|
89
|
+
invalid?: boolean;
|
|
90
|
+
/** Frames and dims the field. */
|
|
91
|
+
disabled?: boolean;
|
|
92
|
+
/** Lit from outside, e.g. a group's fluid hover. */
|
|
93
|
+
active?: boolean;
|
|
94
|
+
/** Shows the value without letting it change: the ring answers, the fill never lifts. */
|
|
95
|
+
readOnly?: boolean;
|
|
96
|
+
/** Marks the control required (`required` on the control). */
|
|
97
|
+
required?: boolean;
|
|
98
|
+
/** Pins the field to one step of the size ladder. Defaults to the surrounding SizeProvider. */
|
|
99
|
+
size?: SizeVariant;
|
|
100
|
+
}
|
|
101
|
+
/** What a field wrapper hands to the control it holds. */
|
|
102
|
+
interface FieldState {
|
|
103
|
+
/** Lit by a group's fluid hover. */
|
|
104
|
+
active: boolean;
|
|
105
|
+
invalid: boolean;
|
|
106
|
+
disabled: boolean;
|
|
107
|
+
readOnly?: boolean;
|
|
108
|
+
required?: boolean;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* State a field wrapper (Field, InputGroup.Field) hands to whatever control
|
|
112
|
+
* it holds: lit by the group's fluid hover, its error, its disabled,
|
|
113
|
+
* read-only and required state. `useFieldBox` reads it, so any field built on
|
|
114
|
+
* the box joins in; the control's own props win.
|
|
115
|
+
*/
|
|
116
|
+
declare const FieldStateContext: Context_rri5bl2<FieldState | null>;
|
|
117
|
+
/** The surrounding field's state, or `null` outside one. */
|
|
118
|
+
declare function useFieldState(): FieldState | null;
|
|
119
|
+
/**
|
|
120
|
+
* The box around a text field's control: the field ladder in the chosen
|
|
121
|
+
* variant, the state attributes it reads, the shape's input radius and the
|
|
122
|
+
* horizontal inset. Spread `props` on the element around the control (or the
|
|
123
|
+
* control itself, for a button field); the height stays with the item, from
|
|
124
|
+
* the returned `size`. Inside a Field or InputGroup.Field, unset `active` / `invalid` /
|
|
125
|
+
* `disabled` / `readOnly` / `required` come from the field (`FieldStateContext`).
|
|
126
|
+
*/
|
|
127
|
+
declare function useFieldBox({ variant, invalid, disabled, active, readOnly, required, size }: FieldBoxOptions): {
|
|
128
|
+
size: SizeClasses;
|
|
129
|
+
/** Resolved with the field's state, for the control's `aria-invalid` / `disabled` / `readOnly` / `required`. */
|
|
130
|
+
invalid: boolean;
|
|
131
|
+
disabled: boolean;
|
|
132
|
+
readOnly: boolean;
|
|
133
|
+
required: boolean | undefined;
|
|
134
|
+
props: {
|
|
135
|
+
"data-active": true | undefined;
|
|
136
|
+
"data-invalid": true | undefined;
|
|
137
|
+
"data-disabled": true | undefined;
|
|
138
|
+
"data-readonly": true | undefined;
|
|
139
|
+
className: string;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
/** A press anywhere in the box (icon, padding) focuses the control, without disturbing the control's own caret placement. */
|
|
143
|
+
declare function focusControlOnPress(control: RefObject<HTMLElement | null>): (e: MouseEvent) => void;
|
|
144
|
+
export { FIELD_ACTION, FIELD_ACTION_BOX, FIELD_ACTION_END, FIELD_ACTION_RADIUS, FIELD_ADORNMENT_ICON, FIELD_PX, FIELD_TEXT_INSET, FieldBoxOptions, FieldState, FieldStateContext, FieldVariant, fieldActionClasses, fieldAdornmentClasses, fieldIconClasses, fieldVariants, focusControlOnPress, useFieldBox, useFieldState };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FieldStateContext2,
|
|
3
|
+
useFieldState2,
|
|
4
|
+
useFieldBox2,
|
|
5
|
+
focusControlOnPress2
|
|
6
|
+
} from "../shared/components-6zng858q.js";
|
|
7
|
+
import {
|
|
8
|
+
fieldVariants2,
|
|
9
|
+
fieldIconClasses2,
|
|
10
|
+
fieldAdornmentClasses2,
|
|
11
|
+
FIELD_ADORNMENT_ICON2,
|
|
12
|
+
FIELD_ACTION2,
|
|
13
|
+
FIELD_ACTION_BOX2,
|
|
14
|
+
FIELD_ACTION_END2,
|
|
15
|
+
FIELD_ACTION_RADIUS2,
|
|
16
|
+
fieldActionClasses2,
|
|
17
|
+
FIELD_PX2,
|
|
18
|
+
FIELD_TEXT_INSET2
|
|
19
|
+
} from "../shared/components-124epb7f.js";
|
|
20
|
+
import"../shared/components-h83az0bz.js";
|
|
21
|
+
import"../shared/components-34txk9rj.js";
|
|
22
|
+
import"../shared/components-78x40gee.js";
|
|
23
|
+
import"../shared/components-jcnjay5g.js";
|
|
24
|
+
export {
|
|
25
|
+
FIELD_ACTION2 as FIELD_ACTION,
|
|
26
|
+
FIELD_ACTION_BOX2 as FIELD_ACTION_BOX,
|
|
27
|
+
FIELD_ACTION_END2 as FIELD_ACTION_END,
|
|
28
|
+
FIELD_ACTION_RADIUS2 as FIELD_ACTION_RADIUS,
|
|
29
|
+
FIELD_ADORNMENT_ICON2 as FIELD_ADORNMENT_ICON,
|
|
30
|
+
FIELD_PX2 as FIELD_PX,
|
|
31
|
+
FIELD_TEXT_INSET2 as FIELD_TEXT_INSET,
|
|
32
|
+
FieldStateContext2 as FieldStateContext,
|
|
33
|
+
fieldActionClasses2 as fieldActionClasses,
|
|
34
|
+
fieldAdornmentClasses2 as fieldAdornmentClasses,
|
|
35
|
+
fieldIconClasses2 as fieldIconClasses,
|
|
36
|
+
fieldVariants2 as fieldVariants,
|
|
37
|
+
focusControlOnPress2 as focusControlOnPress,
|
|
38
|
+
useFieldBox2 as useFieldBox,
|
|
39
|
+
useFieldState2 as useFieldState
|
|
40
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
type ShapeVariant = "pill" | "rounded";
|
|
2
|
+
type SizeVariant = "default" | "compact";
|
|
3
|
+
import { ClassProp as ClassProp_wz9o0r } from "class-variance-authority/types";
|
|
4
|
+
/**
|
|
5
|
+
* The ringed box of a text field. It steps from rest to a muted fill when lit
|
|
6
|
+
* (hovered, or `data-active` from a group's fluid hover) to the card fill
|
|
7
|
+
* when focused. `data-invalid` keeps a destructive ring in every state and
|
|
8
|
+
* tints the lit fill; `data-disabled` frames and dims it; `data-readonly`
|
|
9
|
+
* shows the ring when lit or focused but never lifts the fill. Put it on the
|
|
10
|
+
* element around the control and stamp the data attributes; Base UI parts
|
|
11
|
+
* stamp `data-invalid` / `data-disabled` themselves.
|
|
12
|
+
*/
|
|
13
|
+
declare const fieldVariants: (props?: ({
|
|
14
|
+
variant?: "borderless" | "bordered" | null | undefined;
|
|
15
|
+
} & ClassProp_wz9o0r) | undefined) => string;
|
|
16
|
+
/** A leading icon inside a `fieldVariants` box: muted at rest, it darkens and thickens with the field. Pass `strokeWidth={1.5}`. */
|
|
17
|
+
declare const fieldIconClasses = "shrink-0 text-muted-foreground transition-[color,stroke-width] duration-fast group-hover/field:text-foreground group-hover/field:stroke-[2] group-data-[active]/field:text-foreground group-data-[active]/field:stroke-[2] group-focus-within/field:text-foreground group-focus-within/field:stroke-[2]";
|
|
18
|
+
/**
|
|
19
|
+
* Content beside a field's text (an adornment): muted, held to the ladder's
|
|
20
|
+
* glyph size, and lit with the field like a leading icon. Strings read as a
|
|
21
|
+
* prefix or a unit.
|
|
22
|
+
*/
|
|
23
|
+
declare const fieldAdornmentClasses = "flex shrink-0 items-center whitespace-nowrap text-muted-foreground transition-[color] duration-fast group-hover/field:text-foreground group-data-[active]/field:text-foreground group-focus-within/field:text-foreground";
|
|
24
|
+
/** Glyph size for an adornment's icons, per ladder step (16px default, 14px compact). */
|
|
25
|
+
declare const FIELD_ADORNMENT_ICON: Record<SizeVariant, string>;
|
|
26
|
+
/**
|
|
27
|
+
* A small icon button inside a field box (a password reveal, a clear, a
|
|
28
|
+
* stepper): 4px inside the ring on every side (28px in a 36px field, 20px in
|
|
29
|
+
* a 28px one), its negative margin taking back the box's inset so the gap to
|
|
30
|
+
* the edge matches the gap above and below.
|
|
31
|
+
*/
|
|
32
|
+
declare const FIELD_ACTION: Record<SizeVariant, string>;
|
|
33
|
+
/** A field action's box alone, without `FIELD_ACTION`'s margins, for actions set side by side (a stepper pair). */
|
|
34
|
+
declare const FIELD_ACTION_BOX: Record<SizeVariant, string>;
|
|
35
|
+
/** The margin that pulls the last of several side-by-side actions to 4px inside the ring. */
|
|
36
|
+
declare const FIELD_ACTION_END: Record<SizeVariant, string>;
|
|
37
|
+
/** A field action's corners, concentric with the box's (8px box, 4px gap) or round in pill mode. */
|
|
38
|
+
declare const FIELD_ACTION_RADIUS: Record<ShapeVariant, string>;
|
|
39
|
+
/** The classes every field action shares, beside its `FIELD_ACTION` size and radius. */
|
|
40
|
+
declare const fieldActionClasses = "relative inline-flex shrink-0 cursor-pointer items-center justify-center text-muted-foreground outline-none transition-[color,background-color,opacity] duration-fast hover:bg-hover hover:text-foreground active:bg-active focus-visible:ring-1 focus-visible:ring-focus-ring disabled:pointer-events-none disabled:opacity-50 data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
|
|
41
|
+
/** Horizontal inset of a field box. */
|
|
42
|
+
declare const FIELD_PX: Record<SizeVariant, string>;
|
|
43
|
+
/** Left inset of the text around a field (label, description, error), so it lines up with the text inside the box. */
|
|
44
|
+
declare const FIELD_TEXT_INSET: Record<SizeVariant, string>;
|
|
45
|
+
/** Framed at rest (`bordered`), or invisible until hovered or focused (`borderless`). */
|
|
46
|
+
type FieldVariant = "bordered" | "borderless";
|
|
47
|
+
export { FIELD_ACTION, FIELD_ACTION_BOX, FIELD_ACTION_END, FIELD_ACTION_RADIUS, FIELD_ADORNMENT_ICON, FIELD_PX, FIELD_TEXT_INSET, FieldVariant, fieldActionClasses, fieldAdornmentClasses, fieldIconClasses, fieldVariants };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fieldVariants2,
|
|
3
|
+
fieldIconClasses2,
|
|
4
|
+
fieldAdornmentClasses2,
|
|
5
|
+
FIELD_ADORNMENT_ICON2,
|
|
6
|
+
FIELD_ACTION2,
|
|
7
|
+
FIELD_ACTION_BOX2,
|
|
8
|
+
FIELD_ACTION_END2,
|
|
9
|
+
FIELD_ACTION_RADIUS2,
|
|
10
|
+
fieldActionClasses2,
|
|
11
|
+
FIELD_PX2,
|
|
12
|
+
FIELD_TEXT_INSET2
|
|
13
|
+
} from "../shared/components-124epb7f.js";
|
|
14
|
+
export {
|
|
15
|
+
FIELD_ACTION2 as FIELD_ACTION,
|
|
16
|
+
FIELD_ACTION_BOX2 as FIELD_ACTION_BOX,
|
|
17
|
+
FIELD_ACTION_END2 as FIELD_ACTION_END,
|
|
18
|
+
FIELD_ACTION_RADIUS2 as FIELD_ACTION_RADIUS,
|
|
19
|
+
FIELD_ADORNMENT_ICON2 as FIELD_ADORNMENT_ICON,
|
|
20
|
+
FIELD_PX2 as FIELD_PX,
|
|
21
|
+
FIELD_TEXT_INSET2 as FIELD_TEXT_INSET,
|
|
22
|
+
fieldActionClasses2 as fieldActionClasses,
|
|
23
|
+
fieldAdornmentClasses2 as fieldAdornmentClasses,
|
|
24
|
+
fieldIconClasses2 as fieldIconClasses,
|
|
25
|
+
fieldVariants2 as fieldVariants
|
|
26
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Transition } from "motion/react";
|
|
2
|
+
import { Dispatch, MutableRefObject, SetStateAction } from "react";
|
|
3
|
+
interface ItemRect {
|
|
4
|
+
top: number;
|
|
5
|
+
height: number;
|
|
6
|
+
left: number;
|
|
7
|
+
width: number;
|
|
8
|
+
}
|
|
9
|
+
interface UseFluidHoverReturn {
|
|
10
|
+
activeIndex: number | null;
|
|
11
|
+
setActiveIndex: Dispatch<SetStateAction<number | null>>;
|
|
12
|
+
itemRects: ItemRect[];
|
|
13
|
+
/**
|
|
14
|
+
* True once every registered item has been measured and no remeasure is
|
|
15
|
+
* pending, i.e. `itemRects` describes the current item set. Gate absolutely
|
|
16
|
+
* positioned overlays on it: an overlay that mounts against a rect a later
|
|
17
|
+
* pass still corrects animates from the wrong place to the right one, which
|
|
18
|
+
* reads as the highlight sliding in from another row.
|
|
19
|
+
*/
|
|
20
|
+
isMeasured: boolean;
|
|
21
|
+
sessionRef: MutableRefObject<number>;
|
|
22
|
+
handlers: {
|
|
23
|
+
onMouseMove: (e: React.MouseEvent) => void;
|
|
24
|
+
onMouseEnter: () => void;
|
|
25
|
+
onMouseLeave: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Routes a click that lands between items (a gap, the padding, past the
|
|
28
|
+
* last row) to the highlighted item, so the highlight and the click agree:
|
|
29
|
+
* what is lit is what a click hits. A click inside an item is left to the
|
|
30
|
+
* item. Disabled items (`isItemDisabled`) are never activated.
|
|
31
|
+
*/
|
|
32
|
+
onClick: (e: React.MouseEvent) => void;
|
|
33
|
+
};
|
|
34
|
+
registerItem: (index: number, element: HTMLElement | null) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Invalidates the published rects and runs the hook's coalesced measurement
|
|
37
|
+
* pass again, holding `isMeasured` false until it settles. Reach for it when
|
|
38
|
+
* the rects may be wrong and showing an overlay against them would misplace
|
|
39
|
+
* it: a popup that stays mounted between opens keeps its items registered,
|
|
40
|
+
* so nothing else would notice that its rects were taken while it was
|
|
41
|
+
* hidden. Registration, item resize, and container resize already trigger
|
|
42
|
+
* a pass; do not call this on `children` changes.
|
|
43
|
+
*/
|
|
44
|
+
remeasure: () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Re-reads the rects synchronously, keeping `isMeasured` as it is. Only for
|
|
47
|
+
* layout that moves the rows under a visible overlay frame by frame (the
|
|
48
|
+
* accordion re-measures inside its height animation). Everything else
|
|
49
|
+
* wants `remeasure`, or nothing.
|
|
50
|
+
*/
|
|
51
|
+
measureItems: () => void;
|
|
52
|
+
}
|
|
53
|
+
import { JSX as JSX_1kxb } from "react";
|
|
54
|
+
/** What the highlight reads off the hook: the highlighted index, the
|
|
55
|
+
* measured rects, whether they are current, and the pointer session. */
|
|
56
|
+
type FluidHoverSource = Pick<UseFluidHoverReturn, "activeIndex" | "itemRects" | "isMeasured" | "sessionRef">;
|
|
57
|
+
interface HighlightFromHook {
|
|
58
|
+
/** The hook's return value. The highlight sits on
|
|
59
|
+
* `itemRects[activeIndex]` once `isMeasured`, and re-keys on the session. */
|
|
60
|
+
hover: FluidHoverSource;
|
|
61
|
+
/** Keep the list's state but show nothing (a closed popup, hover switched
|
|
62
|
+
* off). Runs the exit fade. */
|
|
63
|
+
hidden?: boolean;
|
|
64
|
+
rect?: never;
|
|
65
|
+
session?: never;
|
|
66
|
+
}
|
|
67
|
+
interface HighlightFromRect {
|
|
68
|
+
/** For lists that resolve their own rect (the sidebar's unified scope):
|
|
69
|
+
* the rect to sit on, in the container's coordinate space. `null` hides
|
|
70
|
+
* the highlight (it fades out on `spring.fast.exit`). */
|
|
71
|
+
rect: ItemRect | null;
|
|
72
|
+
/** `sessionRef.current` from `useFluidHover`. It increments when the
|
|
73
|
+
* cursor enters the container, which re-keys the highlight so it fades in
|
|
74
|
+
* at `from ?? rect` instead of sliding over from wherever it was last. */
|
|
75
|
+
session: number;
|
|
76
|
+
hover?: never;
|
|
77
|
+
hidden?: never;
|
|
78
|
+
}
|
|
79
|
+
type FluidHoverHighlightProps = (HighlightFromHook | HighlightFromRect) & {
|
|
80
|
+
/** Where a fresh session fades in from. A dropdown passes its checked row,
|
|
81
|
+
* a nav menu its active route. Defaults to the rect itself. */
|
|
82
|
+
from?: ItemRect | null;
|
|
83
|
+
/** Radius, z-index, anything else. Merged onto
|
|
84
|
+
* `absolute bg-hover pointer-events-none`. */
|
|
85
|
+
className?: string;
|
|
86
|
+
/** The positional spring. Defaults to `spring.fast`. Pass `false` to snap
|
|
87
|
+
* to the new rect with no travel (a layout reflow that moved the rows
|
|
88
|
+
* underneath, not a hover change). The opacity fade is always 0.08s. */
|
|
89
|
+
transition?: Transition | false;
|
|
90
|
+
};
|
|
91
|
+
/** A measured rect as animation targets: position as a transform, size as
|
|
92
|
+
* layout. Exported for the unit test. */
|
|
93
|
+
declare function toTarget(rect: ItemRect): {
|
|
94
|
+
x: number;
|
|
95
|
+
y: number;
|
|
96
|
+
width: number;
|
|
97
|
+
height: number;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Resolves the positional transition. Reduced motion keeps the opacity fade
|
|
101
|
+
* and drops the travel, per the motion guidelines: fewer and gentler, not
|
|
102
|
+
* none. Exported for the unit test.
|
|
103
|
+
*/
|
|
104
|
+
declare function resolveHighlightTransition(transition: Transition | false | undefined, reduceMotion: boolean): Transition;
|
|
105
|
+
/** The rect and session a set of props resolves to. Exported for the test. */
|
|
106
|
+
declare function resolveHighlightSource(props: FluidHoverHighlightProps): {
|
|
107
|
+
rect: ItemRect | null;
|
|
108
|
+
session: number;
|
|
109
|
+
};
|
|
110
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
111
|
+
declare function FluidHoverHighlight(props: FluidHoverHighlightProps): Element_12xgc;
|
|
112
|
+
export { FluidHoverHighlight, FluidHoverHighlightProps, FluidHoverSource, resolveHighlightSource, resolveHighlightTransition, toTarget };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toTarget2,
|
|
3
|
+
resolveHighlightTransition2,
|
|
4
|
+
resolveHighlightSource2,
|
|
5
|
+
FluidHoverHighlight2
|
|
6
|
+
} from "../shared/components-qdm3yh26.js";
|
|
7
|
+
import"../shared/components-pw06rbxq.js";
|
|
8
|
+
import"../shared/components-awra5sff.js";
|
|
9
|
+
import"../shared/components-de99ykt7.js";
|
|
10
|
+
import"../shared/components-3ey0hzpb.js";
|
|
11
|
+
import"../shared/components-jcnjay5g.js";
|
|
12
|
+
export {
|
|
13
|
+
FluidHoverHighlight2 as FluidHoverHighlight,
|
|
14
|
+
resolveHighlightSource2 as resolveHighlightSource,
|
|
15
|
+
resolveHighlightTransition2 as resolveHighlightTransition,
|
|
16
|
+
toTarget2 as toTarget
|
|
17
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type ShapeVariant = "pill" | "rounded";
|
|
2
|
+
interface ItemRect {
|
|
3
|
+
top: number;
|
|
4
|
+
height: number;
|
|
5
|
+
left: number;
|
|
6
|
+
width: number;
|
|
7
|
+
}
|
|
8
|
+
import { JSX as JSX_1kxb2 } from "react";
|
|
9
|
+
interface FocusRingProps {
|
|
10
|
+
/** The focused row's rect in the panel's coordinates; nothing while none has keyboard focus. */
|
|
11
|
+
rect: ItemRect | null | undefined;
|
|
12
|
+
/** Pins the radius to one shape (popups stay `rounded`); defaults to the surrounding ShapeProvider. */
|
|
13
|
+
shape?: ShapeVariant;
|
|
14
|
+
}
|
|
15
|
+
type Element_12xgc2 = JSX_1kxb2["Element"];
|
|
16
|
+
/** The keyboard ring: 2px outside the focused row, springing between rows. */
|
|
17
|
+
declare function FocusRing({ rect, shape }: FocusRingProps): Element_12xgc2;
|
|
18
|
+
export { FocusRing, FocusRingProps };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FocusRing2
|
|
3
|
+
} from "../shared/components-8nwsqjn8.js";
|
|
4
|
+
import"../shared/components-de99ykt7.js";
|
|
5
|
+
import"../shared/components-3ey0hzpb.js";
|
|
6
|
+
import"../shared/components-78x40gee.js";
|
|
7
|
+
import"../shared/components-jcnjay5g.js";
|
|
8
|
+
export {
|
|
9
|
+
FocusRing2 as FocusRing
|
|
10
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Transition } from "motion/react";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
interface ItemRect {
|
|
4
|
+
top: number;
|
|
5
|
+
height: number;
|
|
6
|
+
left: number;
|
|
7
|
+
width: number;
|
|
8
|
+
}
|
|
9
|
+
import { JSX as JSX_1kxb } from "react";
|
|
10
|
+
declare function union(a: ItemRect | null, b: ItemRect): ItemRect;
|
|
11
|
+
interface GooLayerProps {
|
|
12
|
+
/** Filter on: the shapes melt into one. Off at rest. */
|
|
13
|
+
active: boolean;
|
|
14
|
+
/** Blur in px: the shapes' radius times `GOO_BLUR_RATIO`. */
|
|
15
|
+
blur: number;
|
|
16
|
+
/** The layer's box in the container's coordinates, covering every shape; padded for the blur here. */
|
|
17
|
+
box: ItemRect | null;
|
|
18
|
+
/** The shapes' classes (a bg token, a radius): the melted result is filled with their background. */
|
|
19
|
+
fill: string;
|
|
20
|
+
/** The shapes, positioned in the container's coordinates. */
|
|
21
|
+
children?: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
24
|
+
/** A box of shapes that melt into one while `active`. The filter's region follows the box, so keep it tight. */
|
|
25
|
+
declare function GooLayer({ active, blur, box, fill, children }: GooLayerProps): Element_12xgc;
|
|
26
|
+
interface GooIndicatorProps {
|
|
27
|
+
/** The rect to sit on, in the container's coordinates (as `useFluidHover` measures them). */
|
|
28
|
+
rect: ItemRect;
|
|
29
|
+
/** Where it first appears; it then travels to `rect`. Defaults to `rect`. */
|
|
30
|
+
from?: ItemRect | null;
|
|
31
|
+
/** Fill and radius classes: a bg token and the shape's radius. */
|
|
32
|
+
className?: string;
|
|
33
|
+
/** Shadow class. While it melts, the shapes are drawn again beneath the goo with it, since the filter flattens shadows. */
|
|
34
|
+
shadow?: string;
|
|
35
|
+
/** The travel: a spring tier. `false` snaps (a reflow, reduced motion). Defaults to `spring.moderate`. */
|
|
36
|
+
transition?: Transition | false;
|
|
37
|
+
/** Opacity of the whole indicator, faded on `spring.fast`. Defaults to `1`. */
|
|
38
|
+
opacity?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* An indicator that travels between items with a liquid neck. Render it in the
|
|
42
|
+
* items' `relative` container, beneath them: the items' text stays above it,
|
|
43
|
+
* unfiltered.
|
|
44
|
+
*/
|
|
45
|
+
declare function GooIndicator({ rect, from, className, shadow, transition, opacity }: GooIndicatorProps): Element_12xgc;
|
|
46
|
+
export { GooIndicator, GooIndicatorProps, GooLayer, GooLayerProps, union };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
union2,
|
|
3
|
+
GooLayer2,
|
|
4
|
+
GooIndicator2
|
|
5
|
+
} from "../shared/components-pw06rbxq.js";
|
|
6
|
+
import"../shared/components-awra5sff.js";
|
|
7
|
+
import"../shared/components-de99ykt7.js";
|
|
8
|
+
import"../shared/components-3ey0hzpb.js";
|
|
9
|
+
import"../shared/components-jcnjay5g.js";
|
|
10
|
+
export {
|
|
11
|
+
GooIndicator2 as GooIndicator,
|
|
12
|
+
GooLayer2 as GooLayer,
|
|
13
|
+
union2 as union
|
|
14
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from "react";
|
|
2
|
+
import { JSX as JSX_1kxb } from "react";
|
|
3
|
+
interface IconComponentProps {
|
|
4
|
+
size?: number | string;
|
|
5
|
+
strokeWidth?: number | string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
type IconComponent = ComponentType<IconComponentProps>;
|
|
9
|
+
type IconName = "chevron-right" | "chevron-down" | "x" | "copy" | "menu" | "dot" | "monitor" | "sun" | "moon" | "rectangle-horizontal" | "circle" | "square-library" | "clock" | "star" | "settings" | "plus" | "arrow-left" | "arrow-right" | "arrow-up" | "arrow-down" | "search" | "loader" | "users" | "lock" | "mail" | "bell" | "shield" | "palette" | "lightbulb" | "rocket" | "heart" | "paintbrush" | "brain" | "globe" | "user" | "image" | "link" | "check" | "rotate-ccw" | "play" | "pause" | "pipette" | "home" | "message-circle" | "inbox" | "pencil" | "scaling" | "skip-forward" | "corner-down-right" | "corner-down-left" | "panel-left" | "panel-left-dashed" | "panel-right" | "panel-right-dashed" | "chevrons-up-down" | "more-horizontal" | "more-vertical" | "calendar" | "folder" | "sliders-horizontal" | "chevron-left" | "chevron-up" | "chevrons-left" | "chevrons-right" | "arrow-up-down" | "circle-alert" | "triangle-alert" | "circle-check" | "info" | "circle-question-mark" | "trash" | "eye" | "eye-off" | "timer" | "arrow-right-from-line" | "arrow-right-to-line" | "funnel-x" | "flag" | "loader-circle" | "minus" | "upload" | "file";
|
|
10
|
+
declare const defaultIcons: Record<IconName, IconComponent>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns a single icon component for the given name.
|
|
13
|
+
* Falls back to the default (Lucide) set if no provider is present.
|
|
14
|
+
*/
|
|
15
|
+
declare function useIcon(name: IconName): IconComponent;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the full icon map.
|
|
18
|
+
* Falls back to the default (Lucide) set if no provider is present.
|
|
19
|
+
*/
|
|
20
|
+
declare function useIcons(): Record<IconName, IconComponent>;
|
|
21
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
22
|
+
/**
|
|
23
|
+
* Swap some or all icons for components from another library.
|
|
24
|
+
* Names left out of `icons` keep their default (Lucide) component.
|
|
25
|
+
*/
|
|
26
|
+
declare function IconProvider({ children, icons }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
icons?: Partial<Record<IconName, IconComponent>>;
|
|
29
|
+
}): Element_12xgc;
|
|
30
|
+
export { IconComponent, IconComponentProps, IconName, IconProvider, defaultIcons, useIcon, useIcons };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Spread onto an element to make it inert while `on`. */
|
|
2
|
+
declare function inertProps(on: boolean): {
|
|
3
|
+
inert: boolean;
|
|
4
|
+
} | {
|
|
5
|
+
inert?: undefined;
|
|
6
|
+
};
|
|
7
|
+
/** A ref callback that makes its element inert for good. */
|
|
8
|
+
declare function markInert(el: HTMLElement | null): void;
|
|
9
|
+
export { inertProps, markInert };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ReactNode, Ref } from "react";
|
|
2
|
+
import { RefObject } from "react";
|
|
3
|
+
import { MutableRefObject as MutableRefObject_8z5kms } from "react";
|
|
4
|
+
import { MotionValue as MotionValue_d5wxmj } from "motion/react";
|
|
5
|
+
type MorphSide = "top" | "right" | "bottom" | "left";
|
|
6
|
+
type MorphFrom = "trigger" | "pointer" | "center" | MorphSide | RefObject<HTMLElement | null>;
|
|
7
|
+
type MorphEffect = "goo" | "morph" | "slide" | "fade";
|
|
8
|
+
type MorphTier = "moderate" | "slow";
|
|
9
|
+
interface MorphOptions {
|
|
10
|
+
/** Where the surface grows from. */
|
|
11
|
+
from?: MorphFrom;
|
|
12
|
+
/** How it gets there. */
|
|
13
|
+
effect?: MorphEffect;
|
|
14
|
+
/** Hide the source while open, so it reads as becoming the overlay. */
|
|
15
|
+
hideSource?: boolean;
|
|
16
|
+
/** Spring tier. */
|
|
17
|
+
tier?: MorphTier;
|
|
18
|
+
/** Overrides `effect` (and `from`) for the close only, read as it starts: a swiped sheet slides on off its edge. */
|
|
19
|
+
exit?: {
|
|
20
|
+
effect: "slide" | "fade";
|
|
21
|
+
from?: MorphFrom;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Shows or hides at once while this returns true for the popup (Base UI's
|
|
25
|
+
* `data-instant` hand-off between grouped tooltips). Checked as a run
|
|
26
|
+
* starts and on every frame.
|
|
27
|
+
*/
|
|
28
|
+
instant?: (popup: HTMLElement) => boolean;
|
|
29
|
+
/** Puts focus back on the trigger once a closed popup that held it has gone (see `returnFocus`). Off when the owner places focus itself (Base UI's `finalFocus`). Defaults to `true`. */
|
|
30
|
+
returnFocus?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/** What opened the overlay: the pressed trigger and the press point. */
|
|
33
|
+
interface MorphOrigin {
|
|
34
|
+
trigger?: HTMLElement;
|
|
35
|
+
point?: {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Drives one overlay's morph. `open` is the overlay's open state, `origin` what
|
|
42
|
+
* opened it (`useMorphOrigin`). Spread the returned refs through
|
|
43
|
+
* `MorphSurface`; `popupRef` goes on the Base UI popup, which keeps its final
|
|
44
|
+
* size the whole time, so positioning and collision flipping never see the
|
|
45
|
+
* animation. `onExited` runs once a close has finished.
|
|
46
|
+
*/
|
|
47
|
+
declare function useMorph(open: boolean, origin: RefObject<MorphOrigin>, { from, effect, hideSource, tier, exit, instant, returnFocus: refocus }?: MorphOptions, onExited?: () => void): {
|
|
48
|
+
refs: {
|
|
49
|
+
popup: MutableRefObject_8z5kms<HTMLDivElement | null>;
|
|
50
|
+
shapes: RefObject<HTMLDivElement>;
|
|
51
|
+
blur: RefObject<SVGFEGaussianBlurElement>;
|
|
52
|
+
outline: RefObject<SVGFEFloodElement>;
|
|
53
|
+
copy: RefObject<HTMLDivElement>;
|
|
54
|
+
shape: RefObject<HTMLDivElement>;
|
|
55
|
+
bg: RefObject<HTMLDivElement>;
|
|
56
|
+
shadow: RefObject<HTMLDivElement>;
|
|
57
|
+
content: RefObject<HTMLDivElement>;
|
|
58
|
+
};
|
|
59
|
+
popupRef: (node: HTMLDivElement | null) => void;
|
|
60
|
+
popup: HTMLDivElement | null;
|
|
61
|
+
gooId: string;
|
|
62
|
+
effect: MorphEffect;
|
|
63
|
+
progress: MotionValue_d5wxmj<number>;
|
|
64
|
+
};
|
|
65
|
+
type Morph = ReturnType<typeof useMorph>;
|
|
66
|
+
import { JSX as JSX_1kxb } from "react";
|
|
67
|
+
interface MorphSurfaceProps {
|
|
68
|
+
/** The engine, from `useMorph`. */
|
|
69
|
+
morph: Morph;
|
|
70
|
+
/** Background class of the surface: `SURFACE_BG[level]`, or `bg-foreground` for an inverted tooltip. */
|
|
71
|
+
bg?: string;
|
|
72
|
+
/** Shadow class (`SURFACE_SHADOW[level]`); leave out for a flat surface. */
|
|
73
|
+
shadow?: string;
|
|
74
|
+
/** Radius class the surface rests at (the shape context's `container`, `bg`, …). */
|
|
75
|
+
radius: string;
|
|
76
|
+
/** Classes for the content wrapper: padding, width. */
|
|
77
|
+
className?: string;
|
|
78
|
+
/** The overlay's content. */
|
|
79
|
+
children?: ReactNode;
|
|
80
|
+
}
|
|
81
|
+
interface GooFilterProps {
|
|
82
|
+
id: string;
|
|
83
|
+
/** Blur radius; leave out when `blurRef` sets it per morph. */
|
|
84
|
+
blur?: number;
|
|
85
|
+
blurRef?: Ref<SVGFEGaussianBlurElement>;
|
|
86
|
+
/** Outlines the melted shape with the surface shadow's 1px ring (`--shadow-color`), so a surface the color of the page still shows its neck; the ref's `flood-opacity` fades it. */
|
|
87
|
+
outlineRef?: Ref<SVGFEFloodElement>;
|
|
88
|
+
}
|
|
89
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
90
|
+
/** The goo filter: blur, threshold the alpha back into solid shapes, then lay the crisp original on top. */
|
|
91
|
+
declare function GooFilter({ id, blur, blurRef, outlineRef }: GooFilterProps): Element_12xgc;
|
|
92
|
+
declare function MorphSurface({ morph, bg, shadow, radius, className, children }: MorphSurfaceProps): Element_12xgc;
|
|
93
|
+
export { GooFilter, MorphSurface };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
GooFilter2,
|
|
3
|
+
MorphSurface2
|
|
4
|
+
} from "../shared/components-4y816hwp.js";
|
|
5
|
+
import"../shared/components-b1e239g3.js";
|
|
6
|
+
import"../shared/components-awra5sff.js";
|
|
7
|
+
import"../shared/components-de99ykt7.js";
|
|
8
|
+
import"../shared/components-3ey0hzpb.js";
|
|
9
|
+
import"../shared/components-jcnjay5g.js";
|
|
10
|
+
export {
|
|
11
|
+
GooFilter2 as GooFilter,
|
|
12
|
+
MorphSurface2 as MorphSurface
|
|
13
|
+
};
|