@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,21 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { Context as Context_rri5bl } from "react";
|
|
3
|
+
import { JSX as JSX_1kxb } from "react";
|
|
4
|
+
/** Set by an overlay root: the id its parts are scoped to and whether it is open. */
|
|
5
|
+
declare const MorphPartScope: Context_rri5bl<{
|
|
6
|
+
id: string;
|
|
7
|
+
open: boolean;
|
|
8
|
+
} | null>;
|
|
9
|
+
/** True inside an overlay's surface (`MorphSurface` provides it). */
|
|
10
|
+
declare const MorphPartInOverlay: Context_rri5bl<boolean>;
|
|
11
|
+
interface MorphPartProps {
|
|
12
|
+
/** Pairs the part in the trigger with its twin in the overlay; unique within one overlay. */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Classes for the part's box. */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** The part's content: an image, a title. */
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
20
|
+
declare function MorphPart({ id, className, children }: MorphPartProps): Element_12xgc;
|
|
21
|
+
export { MorphPart, MorphPartInOverlay, MorphPartProps, MorphPartScope };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MorphPartScope2,
|
|
3
|
+
MorphPartInOverlay2,
|
|
4
|
+
MorphPart2
|
|
5
|
+
} from "../shared/components-b1e239g3.js";
|
|
6
|
+
import"../shared/components-de99ykt7.js";
|
|
7
|
+
import"../shared/components-3ey0hzpb.js";
|
|
8
|
+
export {
|
|
9
|
+
MorphPart2 as MorphPart,
|
|
10
|
+
MorphPartInOverlay2 as MorphPartInOverlay,
|
|
11
|
+
MorphPartScope2 as MorphPartScope
|
|
12
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Popup lists scroll inside ScrollArea: the hover-revealed thumb instead of
|
|
3
|
+
* the platform scrollbar, and a scroll-aware fade on the viewport. The popup
|
|
4
|
+
* is only max-height constrained, so the viewport's percentage height can't
|
|
5
|
+
* resolve — it inherits the max-height instead (the ScrollArea root inherits
|
|
6
|
+
* it from the popup) and sizes to its rows up to that. The scroll primitive's
|
|
7
|
+
* inline-styled sizer is forced back to a plain block so rows can shrink and
|
|
8
|
+
* truncate; the `[style]` qualifier keeps that off the rows' own wrapper on
|
|
9
|
+
* touch devices, where ScrollArea renders no sizer.
|
|
10
|
+
*/
|
|
11
|
+
declare const popupScrollAreaClass = "min-h-0 flex-1 max-h-[inherit]";
|
|
12
|
+
declare const popupViewportClass = "!h-auto max-h-[inherit] [&>div[style]]:!block [&>div[style]]:!min-w-0 [--scroll-fade-size:32px]";
|
|
13
|
+
/** Keys that count as keyboard navigation inside a popup (earn the ring). */
|
|
14
|
+
declare const POPUP_NAV_KEYS: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Rows the fluid hover must skip: a disabled row is neither a target
|
|
17
|
+
* nor a hover stop, whichever attribute the primitive marks it with.
|
|
18
|
+
*/
|
|
19
|
+
declare function isDisabledRow(el: HTMLElement): boolean;
|
|
20
|
+
export { POPUP_NAV_KEYS, isDisabledRow, popupScrollAreaClass, popupViewportClass };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
popupScrollAreaClass2,
|
|
3
|
+
popupViewportClass2,
|
|
4
|
+
POPUP_NAV_KEYS2,
|
|
5
|
+
isDisabledRow2
|
|
6
|
+
} from "../shared/components-h6p86be3.js";
|
|
7
|
+
export {
|
|
8
|
+
POPUP_NAV_KEYS2 as POPUP_NAV_KEYS,
|
|
9
|
+
isDisabledRow2 as isDisabledRow,
|
|
10
|
+
popupScrollAreaClass2 as popupScrollAreaClass,
|
|
11
|
+
popupViewportClass2 as popupViewportClass
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reduce motion when the OS asks for it or a surrounding `MotionConfig` does.
|
|
3
|
+
* motion's `useReducedMotionConfig` alone follows the OS only under
|
|
4
|
+
* `<MotionConfig reducedMotion="user">`; without that wrapper it defaults to
|
|
5
|
+
* "never", so a page that sets none would animate for a user who turned
|
|
6
|
+
* motion off.
|
|
7
|
+
*/
|
|
8
|
+
declare function useReduceMotion(): boolean;
|
|
9
|
+
export { useReduceMotion };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { JSX as JSX_1kxb } from "react";
|
|
3
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
4
|
+
/** Gives each element child its position among them. */
|
|
5
|
+
declare function IndexedRows({ children }: {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): Element_12xgc;
|
|
8
|
+
/** A row's index: its own `index`, else its position in the group. */
|
|
9
|
+
declare function useRowIndex(own?: number): number;
|
|
10
|
+
export { IndexedRows, useRowIndex };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import { Context as Context_rri5bl } from "react";
|
|
3
|
+
interface Slot {
|
|
4
|
+
element: HTMLElement;
|
|
5
|
+
/** The row's own `index`; the numbering starts after the highest one. */
|
|
6
|
+
explicit?: number;
|
|
7
|
+
/** A label, separator or group: numbered, never a row. */
|
|
8
|
+
gap?: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface RowOrder {
|
|
11
|
+
register: (id: string, slot: Slot) => () => void;
|
|
12
|
+
order: ReadonlyMap<string, number>;
|
|
13
|
+
/** The first row's number: the inline panel's roving tab stop. */
|
|
14
|
+
first?: number;
|
|
15
|
+
}
|
|
16
|
+
declare const RowOrderContext: Context_rri5bl<RowOrder | null>;
|
|
17
|
+
/** A panel's numbering. Provide the result through `RowOrderContext`. */
|
|
18
|
+
declare function useRowOrder(): RowOrder;
|
|
19
|
+
/**
|
|
20
|
+
* Takes a place in the surrounding panel's order and returns the row's index
|
|
21
|
+
* (`explicit` when given, else its position; undefined until the first layout
|
|
22
|
+
* pass, and outside a panel) and the panel's first row.
|
|
23
|
+
*/
|
|
24
|
+
declare function useRowSlot(ref: RefObject<HTMLElement | null>, explicit?: number, gap?: boolean): {
|
|
25
|
+
index: number | undefined;
|
|
26
|
+
firstRow: number | undefined;
|
|
27
|
+
};
|
|
28
|
+
export { RowOrder, RowOrderContext, useRowOrder, useRowSlot };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { JSX as JSX_1kxb } from "react";
|
|
3
|
+
interface ScrollColumnOption<T extends number | string> {
|
|
4
|
+
value: T;
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface ScrollColumnProps<T extends number | string> {
|
|
9
|
+
/** Accessible name of the list ("Month", "Hour"). */
|
|
10
|
+
label: string;
|
|
11
|
+
options: ScrollColumnOption<T>[];
|
|
12
|
+
/** The picked option: a dot and a heavier weight. */
|
|
13
|
+
value: T | null;
|
|
14
|
+
onValueChange: (value: T) => void;
|
|
15
|
+
/** Options to band, as a scrollbar thumb would (the months the calendar shows). */
|
|
16
|
+
inView?: (value: T) => boolean;
|
|
17
|
+
/** The option kept centred. Defaults to `value`. */
|
|
18
|
+
follow?: T | null;
|
|
19
|
+
/** A column, or a strip on a narrow panel. Defaults to `'vertical'`. */
|
|
20
|
+
orientation?: "vertical" | "horizontal";
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/** For a row of columns: a hairline between neighbours. */
|
|
24
|
+
declare const dividedColumns = "flex [&>*+*]:border-s [&>*]:border-border";
|
|
25
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
26
|
+
declare function ScrollColumn<T extends number | string>({ label, options, value, onValueChange, inView, follow, orientation, className }: ScrollColumnProps<T>): Element_12xgc;
|
|
27
|
+
export { ScrollColumn, ScrollColumnOption, ScrollColumnProps, dividedColumns };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
dividedColumns2,
|
|
3
|
+
ScrollColumn2
|
|
4
|
+
} from "../shared/components-1k0wv53d.js";
|
|
5
|
+
import"../shared/components-qdm3yh26.js";
|
|
6
|
+
import"../shared/components-pw06rbxq.js";
|
|
7
|
+
import"../shared/components-yhgq0qxx.js";
|
|
8
|
+
import"../shared/components-awra5sff.js";
|
|
9
|
+
import"../shared/components-de99ykt7.js";
|
|
10
|
+
import"../shared/components-3ey0hzpb.js";
|
|
11
|
+
import"../shared/components-h83az0bz.js";
|
|
12
|
+
import"../shared/components-34txk9rj.js";
|
|
13
|
+
import"../shared/components-78x40gee.js";
|
|
14
|
+
import"../shared/components-jcnjay5g.js";
|
|
15
|
+
export {
|
|
16
|
+
ScrollColumn2 as ScrollColumn,
|
|
17
|
+
dividedColumns2 as dividedColumns
|
|
18
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { JSX as JSX_1kxb } from "react";
|
|
3
|
+
type ShapeVariant = "pill" | "rounded";
|
|
4
|
+
interface ShapeClasses {
|
|
5
|
+
/** The variant these classes belong to — handy for conditionals. */
|
|
6
|
+
variant: ShapeVariant;
|
|
7
|
+
item: string;
|
|
8
|
+
bg: string;
|
|
9
|
+
focusRing: string;
|
|
10
|
+
mergedBg: string;
|
|
11
|
+
container: string;
|
|
12
|
+
button: string;
|
|
13
|
+
input: string;
|
|
14
|
+
bgRadius: number;
|
|
15
|
+
mergedRadius: number;
|
|
16
|
+
}
|
|
17
|
+
declare const shapeMap: Record<ShapeVariant, ShapeClasses>;
|
|
18
|
+
interface ShapeContextValue {
|
|
19
|
+
shape: ShapeVariant;
|
|
20
|
+
setShape: (shape: ShapeVariant) => void;
|
|
21
|
+
classes: ShapeClasses;
|
|
22
|
+
}
|
|
23
|
+
declare function useShape(): ShapeClasses;
|
|
24
|
+
declare function useShapeContext(): ShapeContextValue;
|
|
25
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
26
|
+
declare function ShapeProvider({ children, defaultShape }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
defaultShape?: ShapeVariant;
|
|
29
|
+
}): Element_12xgc;
|
|
30
|
+
export { ShapeClasses, ShapeProvider, ShapeVariant, shapeMap, useShape, useShapeContext };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shapeMap2,
|
|
3
|
+
useShape2,
|
|
4
|
+
useShapeContext2,
|
|
5
|
+
ShapeProvider2
|
|
6
|
+
} from "../shared/components-78x40gee.js";
|
|
7
|
+
export {
|
|
8
|
+
ShapeProvider2 as ShapeProvider,
|
|
9
|
+
shapeMap2 as shapeMap,
|
|
10
|
+
useShape2 as useShape,
|
|
11
|
+
useShapeContext2 as useShapeContext
|
|
12
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
type SizeVariant = "default" | "compact";
|
|
2
|
+
interface SizeClasses {
|
|
3
|
+
/** The variant these classes belong to — handy for conditionals. */
|
|
4
|
+
variant: SizeVariant;
|
|
5
|
+
/** Bounded control height — buttons, inputs, select triggers, subtle tabs —
|
|
6
|
+
* AND list/menu rows (select options, dropdown, checkbox and radio rows).
|
|
7
|
+
* One token by design: a popup row lines up with the trigger that opened
|
|
8
|
+
* it because they share this height. */
|
|
9
|
+
control: string;
|
|
10
|
+
/** `control` as a number, for consumers that need raw pixels. */
|
|
11
|
+
controlHeight: number;
|
|
12
|
+
/** Tab trigger height inside a padded segmented list. Sized so
|
|
13
|
+
* `segmentPad` + `segmentItem` adds back up to the control height —
|
|
14
|
+
* the segmented control's outer box stays on the same ladder. */
|
|
15
|
+
segmentItem: string;
|
|
16
|
+
/** Padding of the segmented list around its tabs. */
|
|
17
|
+
segmentPad: string;
|
|
18
|
+
/** Body text inside controls. */
|
|
19
|
+
text: string;
|
|
20
|
+
/** Horizontal padding of bounded controls (select trigger, inputs). */
|
|
21
|
+
px: string;
|
|
22
|
+
/** Horizontal padding of list/menu rows, which sit inside a padded popup
|
|
23
|
+
* or group and need less inset than a bounded control. */
|
|
24
|
+
itemPx: string;
|
|
25
|
+
/** Gap between an icon / control glyph and its label, and between
|
|
26
|
+
* neighbouring controls in a row (toolbars, filter bars, button
|
|
27
|
+
* clusters). Density is spacing as much as control height, so the
|
|
28
|
+
* compact step halves it. */
|
|
29
|
+
gap: string;
|
|
30
|
+
/** Glyph size in px: leading/trailing icons inside controls, and the
|
|
31
|
+
* checkbox square / radio circle. */
|
|
32
|
+
icon: number;
|
|
33
|
+
}
|
|
34
|
+
declare const sizeMap: Record<SizeVariant, SizeClasses>;
|
|
35
|
+
/** One role of the type scale: px per ladder step. */
|
|
36
|
+
interface TypeScaleStep {
|
|
37
|
+
default: number;
|
|
38
|
+
compact: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Role-based type scale, per ladder step (px values).
|
|
42
|
+
*
|
|
43
|
+
* The default column is the system as shipped; the compact column steps each
|
|
44
|
+
* role down one notch so dense regions read as a smaller sibling of the same
|
|
45
|
+
* hierarchy, not a squeezed copy. `body`, `caption`, and `subtitle` are what
|
|
46
|
+
* the sized components already render through `SizeClasses.text` and their
|
|
47
|
+
* compact conditionals; `display` and `title` are the page-level roles
|
|
48
|
+
* for consumers composing their own screens.
|
|
49
|
+
*/
|
|
50
|
+
declare const typeScale: {
|
|
51
|
+
/** Page titles. */
|
|
52
|
+
readonly display: {
|
|
53
|
+
readonly default: 28;
|
|
54
|
+
readonly compact: 24;
|
|
55
|
+
};
|
|
56
|
+
/** Section headings, dialog titles. */
|
|
57
|
+
readonly title: {
|
|
58
|
+
readonly default: 16;
|
|
59
|
+
readonly compact: 15;
|
|
60
|
+
};
|
|
61
|
+
/** Card titles, chat bubbles, emphasized rows. */
|
|
62
|
+
readonly subtitle: {
|
|
63
|
+
readonly default: 14;
|
|
64
|
+
readonly compact: 13;
|
|
65
|
+
};
|
|
66
|
+
/** Control labels and body copy — `SizeClasses.text`. */
|
|
67
|
+
readonly body: {
|
|
68
|
+
readonly default: 13;
|
|
69
|
+
readonly compact: 12;
|
|
70
|
+
};
|
|
71
|
+
/** Secondary text: descriptions, meta rows, errors, eyebrows and group
|
|
72
|
+
* labels (the former overline role — an uppercase or muted caption). */
|
|
73
|
+
readonly caption: {
|
|
74
|
+
readonly default: 12;
|
|
75
|
+
readonly compact: 11;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
type TypeScaleRole = keyof typeof typeScale;
|
|
79
|
+
import { Context as Context_rri5bl } from "react";
|
|
80
|
+
/** The type scale resolved for the active ladder step (px per role):
|
|
81
|
+
* explicit override > surrounding SizeProvider > "default". */
|
|
82
|
+
declare function useTypeScale(override?: SizeVariant | null): Record<TypeScaleRole, number>;
|
|
83
|
+
interface SizeContextValue {
|
|
84
|
+
size: SizeVariant;
|
|
85
|
+
setSize: (size: SizeVariant) => void;
|
|
86
|
+
classes: SizeClasses;
|
|
87
|
+
}
|
|
88
|
+
declare const SizeContext: Context_rri5bl<SizeContextValue | null>;
|
|
89
|
+
/** Resolve the active size variant: explicit prop > provider > "default". */
|
|
90
|
+
declare function useSizeVariant(override?: SizeVariant | null): SizeVariant;
|
|
91
|
+
/** Resolve size classes: explicit prop > provider > "default". */
|
|
92
|
+
declare function useSize(override?: SizeVariant | null): SizeClasses;
|
|
93
|
+
declare function useSizeContext(): SizeContextValue;
|
|
94
|
+
export { SizeClasses, SizeContext, SizeVariant, TypeScaleRole, TypeScaleStep, sizeMap, typeScale, useSize, useSizeContext, useSizeVariant, useTypeScale };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useTypeScale2,
|
|
3
|
+
SizeContext2,
|
|
4
|
+
useSizeVariant2,
|
|
5
|
+
useSize2,
|
|
6
|
+
useSizeContext2
|
|
7
|
+
} from "../shared/components-h83az0bz.js";
|
|
8
|
+
import {
|
|
9
|
+
sizeMap2,
|
|
10
|
+
typeScale2
|
|
11
|
+
} from "../shared/components-34txk9rj.js";
|
|
12
|
+
export {
|
|
13
|
+
SizeContext2 as SizeContext,
|
|
14
|
+
sizeMap2 as sizeMap,
|
|
15
|
+
typeScale2 as typeScale,
|
|
16
|
+
useSize2 as useSize,
|
|
17
|
+
useSizeContext2 as useSizeContext,
|
|
18
|
+
useSizeVariant2 as useSizeVariant,
|
|
19
|
+
useTypeScale2 as useTypeScale
|
|
20
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
type SizeVariant = "default" | "compact";
|
|
2
|
+
interface SizeClasses {
|
|
3
|
+
/** The variant these classes belong to — handy for conditionals. */
|
|
4
|
+
variant: SizeVariant;
|
|
5
|
+
/** Bounded control height — buttons, inputs, select triggers, subtle tabs —
|
|
6
|
+
* AND list/menu rows (select options, dropdown, checkbox and radio rows).
|
|
7
|
+
* One token by design: a popup row lines up with the trigger that opened
|
|
8
|
+
* it because they share this height. */
|
|
9
|
+
control: string;
|
|
10
|
+
/** `control` as a number, for consumers that need raw pixels. */
|
|
11
|
+
controlHeight: number;
|
|
12
|
+
/** Tab trigger height inside a padded segmented list. Sized so
|
|
13
|
+
* `segmentPad` + `segmentItem` adds back up to the control height —
|
|
14
|
+
* the segmented control's outer box stays on the same ladder. */
|
|
15
|
+
segmentItem: string;
|
|
16
|
+
/** Padding of the segmented list around its tabs. */
|
|
17
|
+
segmentPad: string;
|
|
18
|
+
/** Body text inside controls. */
|
|
19
|
+
text: string;
|
|
20
|
+
/** Horizontal padding of bounded controls (select trigger, inputs). */
|
|
21
|
+
px: string;
|
|
22
|
+
/** Horizontal padding of list/menu rows, which sit inside a padded popup
|
|
23
|
+
* or group and need less inset than a bounded control. */
|
|
24
|
+
itemPx: string;
|
|
25
|
+
/** Gap between an icon / control glyph and its label, and between
|
|
26
|
+
* neighbouring controls in a row (toolbars, filter bars, button
|
|
27
|
+
* clusters). Density is spacing as much as control height, so the
|
|
28
|
+
* compact step halves it. */
|
|
29
|
+
gap: string;
|
|
30
|
+
/** Glyph size in px: leading/trailing icons inside controls, and the
|
|
31
|
+
* checkbox square / radio circle. */
|
|
32
|
+
icon: number;
|
|
33
|
+
}
|
|
34
|
+
declare const sizeMap: Record<SizeVariant, SizeClasses>;
|
|
35
|
+
/** One role of the type scale: px per ladder step. */
|
|
36
|
+
interface TypeScaleStep {
|
|
37
|
+
default: number;
|
|
38
|
+
compact: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Role-based type scale, per ladder step (px values).
|
|
42
|
+
*
|
|
43
|
+
* The default column is the system as shipped; the compact column steps each
|
|
44
|
+
* role down one notch so dense regions read as a smaller sibling of the same
|
|
45
|
+
* hierarchy, not a squeezed copy. `body`, `caption`, and `subtitle` are what
|
|
46
|
+
* the sized components already render through `SizeClasses.text` and their
|
|
47
|
+
* compact conditionals; `display` and `title` are the page-level roles
|
|
48
|
+
* for consumers composing their own screens.
|
|
49
|
+
*/
|
|
50
|
+
declare const typeScale: {
|
|
51
|
+
/** Page titles. */
|
|
52
|
+
readonly display: {
|
|
53
|
+
readonly default: 28;
|
|
54
|
+
readonly compact: 24;
|
|
55
|
+
};
|
|
56
|
+
/** Section headings, dialog titles. */
|
|
57
|
+
readonly title: {
|
|
58
|
+
readonly default: 16;
|
|
59
|
+
readonly compact: 15;
|
|
60
|
+
};
|
|
61
|
+
/** Card titles, chat bubbles, emphasized rows. */
|
|
62
|
+
readonly subtitle: {
|
|
63
|
+
readonly default: 14;
|
|
64
|
+
readonly compact: 13;
|
|
65
|
+
};
|
|
66
|
+
/** Control labels and body copy — `SizeClasses.text`. */
|
|
67
|
+
readonly body: {
|
|
68
|
+
readonly default: 13;
|
|
69
|
+
readonly compact: 12;
|
|
70
|
+
};
|
|
71
|
+
/** Secondary text: descriptions, meta rows, errors, eyebrows and group
|
|
72
|
+
* labels (the former overline role — an uppercase or muted caption). */
|
|
73
|
+
readonly caption: {
|
|
74
|
+
readonly default: 12;
|
|
75
|
+
readonly compact: 11;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
type TypeScaleRole = keyof typeof typeScale;
|
|
79
|
+
export { SizeClasses, SizeVariant, TypeScaleRole, TypeScaleStep, sizeMap, typeScale };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes, ReactElement, ReactNode } from "react";
|
|
2
|
+
import { JSXElementConstructor as JSXElementConstructor_dt0ahf } from "react";
|
|
3
|
+
interface SlotProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
+
/** The element that becomes the control, e.g. a Button. */
|
|
5
|
+
render?: ReactElement;
|
|
6
|
+
/** Compose onto the single child instead. Both spellings work in both flavors. Defaults to `false`. */
|
|
7
|
+
asChild?: boolean;
|
|
8
|
+
/** Control content when there is no render element. */
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
declare function slotRender(render: ReactElement | undefined, asChild: boolean | undefined, children: ReactNode): ReactElement<any, string | JSXElementConstructor_dt0ahf<any>> | undefined;
|
|
12
|
+
export { SlotProps, slotRender };
|
package/dist/lib/slot.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
declare const spring: {
|
|
2
|
+
readonly fast: {
|
|
3
|
+
readonly type: "spring";
|
|
4
|
+
readonly duration: 0.08;
|
|
5
|
+
readonly bounce: 0;
|
|
6
|
+
readonly exit: {
|
|
7
|
+
readonly duration: 0.06;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
readonly moderate: {
|
|
11
|
+
readonly type: "spring";
|
|
12
|
+
readonly duration: 0.16;
|
|
13
|
+
readonly bounce: 0;
|
|
14
|
+
readonly exit: {
|
|
15
|
+
readonly duration: 0.12;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
readonly slow: {
|
|
19
|
+
readonly type: "spring";
|
|
20
|
+
readonly duration: 0.24;
|
|
21
|
+
readonly bounce: 0.12;
|
|
22
|
+
readonly exit: {
|
|
23
|
+
readonly duration: 0.16;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
readonly goo: {
|
|
27
|
+
readonly type: "spring";
|
|
28
|
+
readonly visualDuration: 0.25;
|
|
29
|
+
readonly bounce: 0.15;
|
|
30
|
+
readonly exit: {
|
|
31
|
+
readonly type: "spring";
|
|
32
|
+
readonly visualDuration: 0.2;
|
|
33
|
+
readonly bounce: 0;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
declare const exitFallbackMs: (tier: {
|
|
38
|
+
exit: {
|
|
39
|
+
duration: number;
|
|
40
|
+
} | {
|
|
41
|
+
visualDuration: number;
|
|
42
|
+
};
|
|
43
|
+
}) => number;
|
|
44
|
+
export { exitFallbackMs, spring };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static lookup tables for surface tokens.
|
|
3
|
+
*
|
|
4
|
+
* Tailwind v4's static scanner only generates utility classes for literal
|
|
5
|
+
* strings it sees in source. Template-literal class names like
|
|
6
|
+
* `bg-surface-${level}` are invisible to the scanner, so the matching
|
|
7
|
+
* utility never gets generated and the background renders transparent.
|
|
8
|
+
*
|
|
9
|
+
* Use these maps when picking a surface level at runtime:
|
|
10
|
+
*
|
|
11
|
+
* <div className={surfaceClasses(level)} />
|
|
12
|
+
*
|
|
13
|
+
* Each entry below contains the literal class name, which is enough for
|
|
14
|
+
* Tailwind to detect and emit the utility.
|
|
15
|
+
*/
|
|
16
|
+
declare const SURFACE_BG: Record<number, string>;
|
|
17
|
+
declare const SURFACE_SHADOW: Record<number, string>;
|
|
18
|
+
declare function surfaceClasses(bgLevel: number, shadowLevel?: number): string;
|
|
19
|
+
export { SURFACE_BG, SURFACE_SHADOW, surfaceClasses };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { JSX as JSX_1kxb } from "react";
|
|
3
|
+
declare function useSurface(): number;
|
|
4
|
+
type Element_12xgc = JSX_1kxb["Element"];
|
|
5
|
+
declare function SurfaceProvider({ value, children }: {
|
|
6
|
+
value: number;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}): Element_12xgc;
|
|
9
|
+
export { SurfaceProvider, useSurface };
|