@remix-run/ui 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -157
- package/dist/accordion/index.d.ts +46 -0
- package/dist/accordion/index.js +142 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/accordion/primitives.d.ts +104 -0
- package/dist/accordion/primitives.js +312 -0
- package/dist/accordion/primitives.js.map +1 -0
- package/dist/{components/anchor/anchor.js → anchor/index.js} +1 -1
- package/dist/anchor/index.js.map +1 -0
- package/dist/animation/animate-layout-mixin.js +1 -1
- package/dist/animation/animate-layout-mixin.js.map +1 -1
- package/dist/animation/animate-mixins.js +2 -2
- package/dist/animation/animate-mixins.js.map +1 -1
- package/dist/animation/demos/color-interpolation.js +1 -1
- package/dist/animation/demos/color-interpolation.js.map +1 -1
- package/dist/animation/demos/drag-release.d.ts +1 -1
- package/dist/animation/demos/hold-to-confirm.d.ts +3 -3
- package/dist/animation/demos/material-ripple.js +1 -3
- package/dist/animation/demos/material-ripple.js.map +1 -1
- package/dist/animation/demos/reordering.js +9 -6
- package/dist/animation/demos/reordering.js.map +1 -1
- package/dist/animation/index.js +4 -4
- package/dist/animation/spring.js.map +1 -1
- package/dist/{components/breadcrumbs/breadcrumbs.js → breadcrumbs/index.js} +19 -19
- package/dist/breadcrumbs/index.js.map +1 -0
- package/dist/button/index.d.ts +15 -0
- package/dist/button/index.js +128 -0
- package/dist/button/index.js.map +1 -0
- package/dist/checkbox/index.d.ts +14 -0
- package/dist/checkbox/index.js +127 -0
- package/dist/checkbox/index.js.map +1 -0
- package/dist/combobox/index.d.ts +21 -0
- package/dist/combobox/index.js +58 -0
- package/dist/combobox/index.js.map +1 -0
- package/dist/{components/combobox/combobox.d.ts → combobox/primitives.d.ts} +4 -8
- package/dist/{components/combobox/combobox.js → combobox/primitives.js} +8 -61
- package/dist/combobox/primitives.js.map +1 -0
- package/dist/dev/refresh.d.ts +1 -0
- package/dist/dev/refresh.js +2 -0
- package/dist/dev/refresh.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -14
- package/dist/input/index.d.ts +13 -0
- package/dist/input/index.js +121 -0
- package/dist/input/index.js.map +1 -0
- package/dist/jsx-runtime.js +2 -2
- package/dist/listbox/flash-attribute.js.map +1 -0
- package/dist/{components/listbox/listbox.d.ts → listbox/index.d.ts} +2 -6
- package/dist/{components/listbox/listbox.js → listbox/index.js} +4 -82
- package/dist/listbox/index.js.map +1 -0
- package/dist/menu/hover-aim.js.map +1 -0
- package/dist/menu/index.d.ts +42 -0
- package/dist/menu/index.js +250 -0
- package/dist/menu/index.js.map +1 -0
- package/dist/{components/menu/menu.d.ts → menu/primitives.d.ts} +4 -33
- package/dist/{components/menu/menu.js → menu/primitives.js} +98 -315
- package/dist/menu/primitives.js.map +1 -0
- package/dist/{components/popover/popover.d.ts → popover/index.d.ts} +2 -4
- package/dist/{components/popover/popover.js → popover/index.js} +5 -48
- package/dist/popover/index.js.map +1 -0
- package/dist/{interactions/outside-click/outside-click-mixin.js → popover/outside-click.js} +1 -1
- package/dist/popover/outside-click.js.map +1 -0
- package/dist/popover/scroll-lock.d.ts +1 -0
- package/dist/{utils → popover}/scroll-lock.js +0 -18
- package/dist/popover/scroll-lock.js.map +1 -0
- package/dist/radio/index.d.ts +12 -0
- package/dist/radio/index.js +77 -0
- package/dist/radio/index.js.map +1 -0
- package/dist/runtime/client-entry-boundary.d.ts +14 -0
- package/dist/runtime/client-entry-boundary.js +29 -0
- package/dist/runtime/client-entry-boundary.js.map +1 -0
- package/dist/runtime/component.d.ts +19 -4
- package/dist/runtime/component.js +39 -9
- package/dist/runtime/component.js.map +1 -1
- package/dist/runtime/core/attributes.js +36 -3
- package/dist/runtime/core/attributes.js.map +1 -1
- package/dist/runtime/core/children.d.ts +2 -0
- package/dist/runtime/core/children.js +26 -2
- package/dist/runtime/core/children.js.map +1 -1
- package/dist/runtime/core/props.js +2 -2
- package/dist/runtime/core/vnode.d.ts +3 -3
- package/dist/runtime/core/vnode.js +22 -1
- package/dist/runtime/core/vnode.js.map +1 -1
- package/dist/runtime/create-element.d.ts +2 -2
- package/dist/runtime/create-element.js +3 -2
- package/dist/runtime/create-element.js.map +1 -1
- package/dist/runtime/diff-dom.js +294 -219
- package/dist/runtime/diff-dom.js.map +1 -1
- package/dist/runtime/diff-props.js +3 -3
- package/dist/runtime/dom.d.ts +12 -0
- package/dist/runtime/element-function.d.ts +3 -0
- package/dist/runtime/element-function.js +2 -0
- package/dist/runtime/element-function.js.map +1 -0
- package/dist/runtime/form-navigation.d.ts +25 -0
- package/dist/runtime/form-navigation.js +132 -0
- package/dist/runtime/form-navigation.js.map +1 -0
- package/dist/runtime/frame-resolution.d.ts +5 -0
- package/dist/runtime/frame-resolution.js +10 -0
- package/dist/runtime/frame-resolution.js.map +1 -0
- package/dist/runtime/frame.d.ts +58 -15
- package/dist/runtime/frame.js +367 -114
- package/dist/runtime/frame.js.map +1 -1
- package/dist/runtime/jsx.d.ts +1 -1
- package/dist/runtime/jsx.js +1 -1
- package/dist/runtime/jsx.js.map +1 -1
- package/dist/runtime/key.d.ts +1 -0
- package/dist/runtime/key.js +2 -0
- package/dist/runtime/key.js.map +1 -0
- package/dist/runtime/mixins/attrs-mixin.js +2 -2
- package/dist/runtime/mixins/link-mixin.js +4 -3
- package/dist/runtime/mixins/link-mixin.js.map +1 -1
- package/dist/runtime/mixins/mixin.d.ts +15 -10
- package/dist/runtime/mixins/mixin.js +4 -4
- package/dist/runtime/mixins/mixin.js.map +1 -1
- package/dist/runtime/mixins/on-mixin.js +1 -1
- package/dist/runtime/mixins/ref-mixin.js +1 -1
- package/dist/runtime/navigation.d.ts +4 -1
- package/dist/runtime/navigation.js +157 -32
- package/dist/runtime/navigation.js.map +1 -1
- package/dist/runtime/reconcile.d.ts +11 -10
- package/dist/runtime/reconcile.js +557 -423
- package/dist/runtime/reconcile.js.map +1 -1
- package/dist/runtime/refresh.d.ts +28 -0
- package/dist/runtime/refresh.js +31 -0
- package/dist/runtime/refresh.js.map +1 -0
- package/dist/runtime/render.js +1 -1
- package/dist/runtime/render.js.map +1 -1
- package/dist/runtime/run.d.ts +3 -1
- package/dist/runtime/run.js +15 -7
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/scheduler.js +8 -16
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/to-vnode.d.ts +2 -2
- package/dist/runtime/to-vnode.js +68 -20
- package/dist/runtime/to-vnode.js.map +1 -1
- package/dist/runtime/vdom.d.ts +4 -2
- package/dist/runtime/vdom.js +89 -41
- package/dist/runtime/vdom.js.map +1 -1
- package/dist/runtime/vnode.d.ts +138 -67
- package/dist/runtime/vnode.js +17 -12
- package/dist/runtime/vnode.js.map +1 -1
- package/dist/select/index.d.ts +19 -0
- package/dist/select/index.js +95 -0
- package/dist/select/index.js.map +1 -0
- package/dist/select/keydown.js.map +1 -0
- package/dist/{components/select/select.d.ts → select/primitives.d.ts} +5 -7
- package/dist/{components/select/select.js → select/primitives.js} +11 -63
- package/dist/select/primitives.js.map +1 -0
- package/dist/server/stream.js +22 -29
- package/dist/server/stream.js.map +1 -1
- package/dist/shared/focus-styles.d.ts +1 -0
- package/dist/shared/focus-styles.js +2 -0
- package/dist/shared/focus-styles.js.map +1 -0
- package/dist/shared/icons.d.ts +9 -0
- package/dist/shared/icons.js +42 -0
- package/dist/shared/icons.js.map +1 -0
- package/dist/shared/listbox-popover-styles.d.ts +6 -0
- package/dist/shared/listbox-popover-styles.js +137 -0
- package/dist/shared/listbox-popover-styles.js.map +1 -0
- package/dist/shared/style-values.d.ts +78 -0
- package/dist/shared/style-values.js +88 -0
- package/dist/shared/style-values.js.map +1 -0
- package/dist/{interactions/typeahead/typeahead-mixin.js → shared/typeahead.js} +1 -1
- package/dist/shared/typeahead.js.map +1 -0
- package/dist/shared/wait-for-css-transition.js.map +1 -0
- package/dist/shared/wait.js.map +1 -0
- package/dist/style/css-mixin.js +3 -3
- package/dist/style/index.js +2 -2
- package/dist/style/style.js +25 -6
- package/dist/style/style.js.map +1 -1
- package/dist/style/stylesheet.d.ts +0 -1
- package/dist/style/stylesheet.js +13 -54
- package/dist/style/stylesheet.js.map +1 -1
- package/dist/tabs/index.d.ts +32 -0
- package/dist/tabs/index.js +157 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/tabs/primitives.d.ts +57 -0
- package/dist/tabs/primitives.js +238 -0
- package/dist/tabs/primitives.js.map +1 -0
- package/dist/test.js +1 -1
- package/dist/toggle/index.d.ts +9 -0
- package/dist/toggle/index.js +108 -0
- package/dist/toggle/index.js.map +1 -0
- package/dist/toggle/primitives.d.ts +29 -0
- package/dist/toggle/primitives.js +127 -0
- package/dist/toggle/primitives.js.map +1 -0
- package/package.json +81 -49
- package/src/{components/accordion → accordion}/README.md +50 -14
- package/src/accordion/index.tsx +285 -0
- package/src/accordion/primitives.tsx +512 -0
- package/src/{components/anchor → anchor}/README.md +37 -2
- package/src/animation/animate-mixins.ts +3 -3
- package/src/animation/demos/color-interpolation.tsx +1 -1
- package/src/animation/demos/reordering.tsx +9 -6
- package/src/{components/breadcrumbs → breadcrumbs}/README.md +4 -4
- package/src/{components/breadcrumbs/breadcrumbs.tsx → breadcrumbs/index.tsx} +18 -18
- package/src/button/README.md +44 -0
- package/src/button/index.ts +168 -0
- package/src/checkbox/README.md +59 -0
- package/src/checkbox/index.ts +164 -0
- package/src/{components/combobox → combobox}/README.md +58 -9
- package/src/combobox/index.tsx +112 -0
- package/src/{components/combobox/combobox.tsx → combobox/primitives.tsx} +5 -91
- package/src/dev/refresh.ts +1 -0
- package/src/index.ts +1 -1
- package/src/input/README.md +52 -0
- package/src/input/index.ts +147 -0
- package/src/{components/listbox → listbox}/README.md +9 -41
- package/src/{components/listbox/listbox.ts → listbox/index.ts} +2 -87
- package/src/{components/menu → menu}/README.md +55 -14
- package/src/menu/index.tsx +354 -0
- package/src/{components/menu/menu.tsx → menu/primitives.tsx} +99 -413
- package/src/{components/popover → popover}/README.md +20 -39
- package/src/{components/popover/popover.ts → popover/index.ts} +3 -57
- package/src/{utils → popover}/scroll-lock.ts +0 -28
- package/src/radio/README.md +53 -0
- package/src/radio/index.ts +101 -0
- package/src/runtime/client-entry-boundary.ts +54 -0
- package/src/runtime/component.ts +65 -16
- package/src/runtime/core/attributes.ts +35 -1
- package/src/runtime/core/children.ts +24 -2
- package/src/runtime/core/vnode.ts +25 -4
- package/src/runtime/create-element.ts +6 -5
- package/src/runtime/demos/readme.demo.tsx +20 -18
- package/src/runtime/diff-dom.ts +358 -243
- package/src/runtime/dom.ts +331 -214
- package/src/runtime/element-function.ts +1 -0
- package/src/runtime/event-listeners.ts +1 -1
- package/src/runtime/form-navigation.ts +184 -0
- package/src/runtime/frame-resolution.ts +13 -0
- package/src/runtime/frame.ts +482 -124
- package/src/runtime/jsx.ts +3 -5
- package/src/runtime/key.ts +1 -0
- package/src/runtime/mixins/link-mixin.ts +1 -0
- package/src/runtime/mixins/mixin.ts +21 -18
- package/src/runtime/navigation.ts +204 -30
- package/src/runtime/reconcile.ts +769 -760
- package/src/runtime/refresh.ts +46 -0
- package/src/runtime/run.ts +12 -2
- package/src/runtime/scheduler.ts +9 -29
- package/src/runtime/to-vnode.ts +85 -23
- package/src/runtime/vdom.ts +91 -69
- package/src/runtime/vnode.ts +192 -88
- package/src/{components/select → select}/README.md +29 -19
- package/src/select/index.tsx +159 -0
- package/src/{components/select/select.tsx → select/primitives.tsx} +10 -98
- package/src/server/stream.ts +25 -31
- package/src/shared/focus-styles.ts +2 -0
- package/src/shared/icons.tsx +62 -0
- package/src/shared/listbox-popover-styles.ts +146 -0
- package/src/shared/style-values.ts +165 -0
- package/src/style/style.ts +25 -6
- package/src/style/stylesheet.ts +32 -57
- package/src/tabs/README.md +141 -0
- package/src/tabs/index.tsx +245 -0
- package/src/tabs/primitives.ts +365 -0
- package/src/test/README.md +151 -60
- package/src/toggle/README.md +56 -0
- package/src/toggle/index.tsx +136 -0
- package/src/toggle/primitives.ts +192 -0
- package/dist/animation/demos/animation.demo.d.ts +0 -5
- package/dist/animation/demos/animation.demo.js +0 -92
- package/dist/animation/demos/animation.demo.js.map +0 -1
- package/dist/animation/demos/spring.demo.d.ts +0 -6
- package/dist/animation/demos/spring.demo.js +0 -304
- package/dist/animation/demos/spring.demo.js.map +0 -1
- package/dist/components/accordion/accordion.d.ts +0 -92
- package/dist/components/accordion/accordion.js +0 -335
- package/dist/components/accordion/accordion.js.map +0 -1
- package/dist/components/accordion/demos/card.demo.d.ts +0 -7
- package/dist/components/accordion/demos/card.demo.js +0 -59
- package/dist/components/accordion/demos/card.demo.js.map +0 -1
- package/dist/components/accordion/demos/multiple.demo.d.ts +0 -7
- package/dist/components/accordion/demos/multiple.demo.js +0 -20
- package/dist/components/accordion/demos/multiple.demo.js.map +0 -1
- package/dist/components/accordion/demos/overview.demo.d.ts +0 -7
- package/dist/components/accordion/demos/overview.demo.js +0 -20
- package/dist/components/accordion/demos/overview.demo.js.map +0 -1
- package/dist/components/anchor/anchor.js.map +0 -1
- package/dist/components/breadcrumbs/basic.demo.d.ts +0 -6
- package/dist/components/breadcrumbs/basic.demo.js +0 -15
- package/dist/components/breadcrumbs/basic.demo.js.map +0 -1
- package/dist/components/breadcrumbs/breadcrumbs.js.map +0 -1
- package/dist/components/breadcrumbs/separator.demo.d.ts +0 -6
- package/dist/components/breadcrumbs/separator.demo.js +0 -15
- package/dist/components/breadcrumbs/separator.demo.js.map +0 -1
- package/dist/components/button/button.d.ts +0 -105
- package/dist/components/button/button.js +0 -207
- package/dist/components/button/button.js.map +0 -1
- package/dist/components/button/demos/aliases.demo.d.ts +0 -7
- package/dist/components/button/demos/aliases.demo.js +0 -19
- package/dist/components/button/demos/aliases.demo.js.map +0 -1
- package/dist/components/button/demos/basic.demo.d.ts +0 -7
- package/dist/components/button/demos/basic.demo.js +0 -20
- package/dist/components/button/demos/basic.demo.js.map +0 -1
- package/dist/components/button/demos/states.demo.d.ts +0 -7
- package/dist/components/button/demos/states.demo.js +0 -30
- package/dist/components/button/demos/states.demo.js.map +0 -1
- package/dist/components/combobox/combobox.js.map +0 -1
- package/dist/components/combobox/overview.demo.d.ts +0 -7
- package/dist/components/combobox/overview.demo.js +0 -154
- package/dist/components/combobox/overview.demo.js.map +0 -1
- package/dist/components/glyph/glyph.d.ts +0 -14
- package/dist/components/glyph/glyph.js +0 -65
- package/dist/components/glyph/glyph.js.map +0 -1
- package/dist/components/listbox/listbox.js.map +0 -1
- package/dist/components/listbox/overview.demo.d.ts +0 -7
- package/dist/components/listbox/overview.demo.js +0 -65
- package/dist/components/listbox/overview.demo.js.map +0 -1
- package/dist/components/menu/demos/bubbling.demo.d.ts +0 -6
- package/dist/components/menu/demos/bubbling.demo.js +0 -16
- package/dist/components/menu/demos/bubbling.demo.js.map +0 -1
- package/dist/components/menu/demos/context-trigger.demo.d.ts +0 -7
- package/dist/components/menu/demos/context-trigger.demo.js +0 -87
- package/dist/components/menu/demos/context-trigger.demo.js.map +0 -1
- package/dist/components/menu/demos/overview.demo.d.ts +0 -7
- package/dist/components/menu/demos/overview.demo.js +0 -33
- package/dist/components/menu/demos/overview.demo.js.map +0 -1
- package/dist/components/menu/hover-aim.js.map +0 -1
- package/dist/components/menu/menu.js.map +0 -1
- package/dist/components/popover/overview.demo.d.ts +0 -7
- package/dist/components/popover/overview.demo.js +0 -65
- package/dist/components/popover/overview.demo.js.map +0 -1
- package/dist/components/popover/popover.js.map +0 -1
- package/dist/components/select/deconstructed.demo.d.ts +0 -7
- package/dist/components/select/deconstructed.demo.js +0 -54
- package/dist/components/select/deconstructed.demo.js.map +0 -1
- package/dist/components/select/overview.demo.d.ts +0 -6
- package/dist/components/select/overview.demo.js +0 -28
- package/dist/components/select/overview.demo.js.map +0 -1
- package/dist/components/select/select.js.map +0 -1
- package/dist/components/separator/separator.d.ts +0 -2
- package/dist/components/separator/separator.js +0 -15
- package/dist/components/separator/separator.js.map +0 -1
- package/dist/components/tabs/tabs.d.ts +0 -78
- package/dist/components/tabs/tabs.js +0 -339
- package/dist/components/tabs/tabs.js.map +0 -1
- package/dist/interactions/keydown/keydown.js.map +0 -1
- package/dist/interactions/outside-click/outside-click-mixin.js.map +0 -1
- package/dist/interactions/typeahead/typeahead-mixin.js.map +0 -1
- package/dist/runtime/demos/basic.demo.d.ts +0 -6
- package/dist/runtime/demos/basic.demo.js +0 -16
- package/dist/runtime/demos/basic.demo.js.map +0 -1
- package/dist/runtime/demos/controlled-uncontrolled-values.demo.d.ts +0 -6
- package/dist/runtime/demos/controlled-uncontrolled-values.demo.js +0 -77
- package/dist/runtime/demos/controlled-uncontrolled-values.demo.js.map +0 -1
- package/dist/runtime/demos/keyed-list.demo.d.ts +0 -6
- package/dist/runtime/demos/keyed-list.demo.js +0 -62
- package/dist/runtime/demos/keyed-list.demo.js.map +0 -1
- package/dist/runtime/demos/readme.demo.d.ts +0 -5
- package/dist/runtime/demos/readme.demo.js +0 -396
- package/dist/runtime/demos/readme.demo.js.map +0 -1
- package/dist/theme/contract.d.ts +0 -61
- package/dist/theme/contract.js +0 -131
- package/dist/theme/contract.js.map +0 -1
- package/dist/theme/glyph-contract.d.ts +0 -11
- package/dist/theme/glyph-contract.js +0 -34
- package/dist/theme/glyph-contract.js.map +0 -1
- package/dist/theme/presets/rmx-01/glyphs.d.ts +0 -2
- package/dist/theme/presets/rmx-01/glyphs.js +0 -252
- package/dist/theme/presets/rmx-01/glyphs.js.map +0 -1
- package/dist/theme/presets/rmx-01/index.d.ts +0 -4
- package/dist/theme/presets/rmx-01/index.js +0 -119
- package/dist/theme/presets/rmx-01/index.js.map +0 -1
- package/dist/theme/runtime.d.ts +0 -2
- package/dist/theme/runtime.js +0 -84
- package/dist/theme/runtime.js.map +0 -1
- package/dist/theme/theme.d.ts +0 -6
- package/dist/theme/theme.js +0 -5
- package/dist/theme/theme.js.map +0 -1
- package/dist/utils/flash-attribute.js.map +0 -1
- package/dist/utils/scroll-lock.d.ts +0 -3
- package/dist/utils/scroll-lock.js.map +0 -1
- package/dist/utils/wait-for-css-transition.js.map +0 -1
- package/dist/utils/wait.js.map +0 -1
- package/src/animation/demos/animation.demo.tsx +0 -194
- package/src/animation/demos/spring.demo.tsx +0 -385
- package/src/components/accordion/accordion.tsx +0 -565
- package/src/components/accordion/demos/card.demo.tsx +0 -114
- package/src/components/accordion/demos/multiple.demo.tsx +0 -57
- package/src/components/accordion/demos/overview.demo.tsx +0 -57
- package/src/components/breadcrumbs/basic.demo.tsx +0 -18
- package/src/components/breadcrumbs/separator.demo.tsx +0 -19
- package/src/components/button/README.md +0 -44
- package/src/components/button/button.tsx +0 -286
- package/src/components/button/demos/aliases.demo.tsx +0 -28
- package/src/components/button/demos/basic.demo.tsx +0 -31
- package/src/components/button/demos/states.demo.tsx +0 -53
- package/src/components/combobox/overview.demo.tsx +0 -200
- package/src/components/glyph/README.md +0 -72
- package/src/components/glyph/glyph.tsx +0 -110
- package/src/components/listbox/overview.demo.tsx +0 -102
- package/src/components/menu/demos/bubbling.demo.tsx +0 -35
- package/src/components/menu/demos/context-trigger.demo.tsx +0 -133
- package/src/components/menu/demos/overview.demo.tsx +0 -77
- package/src/components/popover/overview.demo.tsx +0 -144
- package/src/components/select/deconstructed.demo.tsx +0 -96
- package/src/components/select/overview.demo.tsx +0 -52
- package/src/components/separator/separator.ts +0 -19
- package/src/components/tabs/README.md +0 -105
- package/src/components/tabs/tabs.tsx +0 -504
- package/src/runtime/demos/basic.demo.tsx +0 -21
- package/src/runtime/demos/controlled-uncontrolled-values.demo.tsx +0 -177
- package/src/runtime/demos/keyed-list.demo.tsx +0 -94
- package/src/theme/README.md +0 -103
- package/src/theme/contract.ts +0 -215
- package/src/theme/glyph-contract.ts +0 -59
- package/src/theme/presets/rmx-01/glyphs.tsx +0 -308
- package/src/theme/presets/rmx-01/index.ts +0 -123
- package/src/theme/runtime.ts +0 -119
- package/src/theme/theme.ts +0 -15
- package/src/utils/scroll-lock/README.md +0 -33
- /package/dist/{components/anchor/anchor.d.ts → anchor/index.d.ts} +0 -0
- /package/dist/{components/breadcrumbs/breadcrumbs.d.ts → breadcrumbs/index.d.ts} +0 -0
- /package/dist/{utils → listbox}/flash-attribute.d.ts +0 -0
- /package/dist/{utils → listbox}/flash-attribute.js +0 -0
- /package/dist/{components/menu → menu}/hover-aim.d.ts +0 -0
- /package/dist/{components/menu → menu}/hover-aim.js +0 -0
- /package/dist/{interactions/outside-click/outside-click-mixin.d.ts → popover/outside-click.d.ts} +0 -0
- /package/dist/{interactions/keydown → select}/keydown.d.ts +0 -0
- /package/dist/{interactions/keydown → select}/keydown.js +0 -0
- /package/dist/{interactions/typeahead/typeahead-mixin.d.ts → shared/typeahead.d.ts} +0 -0
- /package/dist/{utils → shared}/wait-for-css-transition.d.ts +0 -0
- /package/dist/{utils → shared}/wait-for-css-transition.js +0 -0
- /package/dist/{utils → shared}/wait.d.ts +0 -0
- /package/dist/{utils → shared}/wait.js +0 -0
- /package/src/{components/anchor/anchor.ts → anchor/index.ts} +0 -0
- /package/src/{utils → listbox}/flash-attribute.ts +0 -0
- /package/src/{components/menu → menu}/hover-aim.ts +0 -0
- /package/src/{interactions/outside-click/outside-click-mixin.ts → popover/outside-click.ts} +0 -0
- /package/src/{interactions/keydown → select}/keydown.ts +0 -0
- /package/src/{interactions/typeahead/typeahead-mixin.ts → shared/typeahead.ts} +0 -0
- /package/src/{utils → shared}/wait-for-css-transition.ts +0 -0
- /package/src/{utils → shared}/wait.ts +0 -0
package/dist/runtime/vnode.js
CHANGED
|
@@ -1,40 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isRemixElement } from "./core/vnode.js";
|
|
1
|
+
import { isRemixElement } from './core/vnode.js';
|
|
3
2
|
export { isRemixElement };
|
|
4
3
|
export const TEXT_NODE = Symbol('TEXT_NODE');
|
|
5
4
|
export const NON_RENDER_NODE = Symbol('NON_RENDER_NODE');
|
|
6
5
|
export const ROOT_VNODE = Symbol('ROOT_VNODE');
|
|
7
6
|
export function isFragmentNode(node) {
|
|
8
|
-
return node.
|
|
7
|
+
return node.kind === 'fragment';
|
|
9
8
|
}
|
|
10
9
|
export function isTextNode(node) {
|
|
11
|
-
return node.
|
|
10
|
+
return node.kind === 'text';
|
|
12
11
|
}
|
|
13
12
|
export function isNonRenderNode(node) {
|
|
14
|
-
return node.
|
|
13
|
+
return node.kind === 'empty';
|
|
15
14
|
}
|
|
16
15
|
export function isCommittedTextNode(node) {
|
|
17
|
-
return
|
|
16
|
+
return node.kind === 'text';
|
|
18
17
|
}
|
|
19
18
|
export function isHostNode(node) {
|
|
20
|
-
return
|
|
19
|
+
return node.kind === 'host';
|
|
21
20
|
}
|
|
22
21
|
export function isCommittedHostNode(node) {
|
|
23
|
-
return
|
|
22
|
+
return node.kind === 'host';
|
|
24
23
|
}
|
|
25
24
|
export function isComponentNode(node) {
|
|
26
|
-
return
|
|
25
|
+
return node.kind === 'component';
|
|
27
26
|
}
|
|
28
27
|
export function isCommittedComponentNode(node) {
|
|
29
|
-
return
|
|
28
|
+
return node.kind === 'component' && '_content' in node;
|
|
29
|
+
}
|
|
30
|
+
export function isFrameNode(node) {
|
|
31
|
+
return node.kind === 'frame';
|
|
32
|
+
}
|
|
33
|
+
export function isCommittedFrameNode(node) {
|
|
34
|
+
return node.kind === 'frame';
|
|
30
35
|
}
|
|
31
36
|
export function findContextFromAncestry(node, type) {
|
|
32
37
|
let current = node;
|
|
33
38
|
while (current) {
|
|
34
|
-
if (current.
|
|
39
|
+
if (current.kind === 'component' && current.type === type) {
|
|
35
40
|
return current._handle.getContextValue();
|
|
36
41
|
}
|
|
37
|
-
current = current._parent;
|
|
42
|
+
current = '_parent' in current ? current._parent : undefined;
|
|
38
43
|
}
|
|
39
44
|
return undefined;
|
|
40
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vnode.js","sourceRoot":"","sources":["../../src/runtime/vnode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"vnode.js","sourceRoot":"","sources":["../../src/runtime/vnode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAUhD,OAAO,EAAE,cAAc,EAAE,CAAA;AAEzB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAqL9C,MAAM,UAAU,cAAc,CAAC,IAAW;IACxC,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAW;IACpC,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAW;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAW;IACpC,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAW;IAEX,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAW;IAClD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,IAAI,IAAI,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAW;IACrC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAoB;IACvD,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAiB,EAAE,IAAqB;IAC9E,IAAI,OAAO,GAA4B,IAAI,CAAA;IAC3C,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAA;QAC1C,CAAC;QACD,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CSSMixinDescriptor, Handle, Props, RemixNode } from '@remix-run/ui';
|
|
2
|
+
import type { SearchValue } from '../shared/typeahead.ts';
|
|
3
|
+
export interface SelectProps extends Omit<Props<'button'>, 'children' | 'name'> {
|
|
4
|
+
children?: RemixNode;
|
|
5
|
+
defaultLabel: string;
|
|
6
|
+
defaultValue?: string | null;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
name?: string;
|
|
9
|
+
}
|
|
10
|
+
export type SelectOptionProps = Props<'div'> & {
|
|
11
|
+
children?: RemixNode;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
label: string;
|
|
14
|
+
textValue?: SearchValue;
|
|
15
|
+
value: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const triggerStyle: CSSMixinDescriptor;
|
|
18
|
+
export declare function Select(handle: Handle<SelectProps>): () => RemixNode;
|
|
19
|
+
export declare function Option(handle: Handle<SelectOptionProps>): () => RemixNode;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
|
|
2
|
+
import { createElement, css } from '@remix-run/ui';
|
|
3
|
+
import * as popover from '@remix-run/ui/popover';
|
|
4
|
+
import * as select from '@remix-run/ui/select/primitives';
|
|
5
|
+
import { CheckIcon, ChevronVerticalIcon } from '../shared/icons.js';
|
|
6
|
+
import { listboxIndicatorStyle, listboxLabelStyle, listboxListStyle, listboxOptionStyle, popoverSurfaceStyle, } from '../shared/listbox-popover-styles.js';
|
|
7
|
+
const selectTriggerShadow = '0 2px 3px -1px rgba(0, 0, 0, 0.04), 0 3px 4px -1.5px rgba(0, 0, 0, 0.04), 0 4px 5px -2px rgba(0, 0, 0, 0.04), 0 0 0 1px light-dark(rgba(0, 0, 0, 0.12), rgba(255, 255, 255, 0.2))';
|
|
8
|
+
const selectTriggerFocusShadow = '0 2px 3px -1px rgba(0, 0, 0, 0.04), 0 3px 4px -1.5px rgba(0, 0, 0, 0.04), 0 4px 5px -2px rgba(0, 0, 0, 0.04), 0 0 0 1px light-dark(#3573F6, #6eaaff), 0 0 0 4px light-dark(rgba(53, 115, 246, 0.1), rgba(110, 170, 255, 0.18)), 0 6px 32px 4px light-dark(rgba(53, 115, 246, 0.08), rgba(110, 170, 255, 0.14)), inset 0 0 8px 1px light-dark(rgba(53, 115, 246, 0.05), rgba(110, 170, 255, 0.1))';
|
|
9
|
+
const selectTriggerCss = css({
|
|
10
|
+
appearance: 'none',
|
|
11
|
+
margin: 0,
|
|
12
|
+
boxSizing: 'border-box',
|
|
13
|
+
width: '100%',
|
|
14
|
+
minWidth: 0,
|
|
15
|
+
height: '32px',
|
|
16
|
+
paddingBlock: '6px',
|
|
17
|
+
paddingInlineStart: '12px',
|
|
18
|
+
paddingInlineEnd: '8px',
|
|
19
|
+
display: 'flex',
|
|
20
|
+
alignItems: 'center',
|
|
21
|
+
justifyContent: 'flex-start',
|
|
22
|
+
gap: '6px',
|
|
23
|
+
border: 0,
|
|
24
|
+
borderRadius: '8px',
|
|
25
|
+
background: 'light-dark(#FFFFFF, #1a1a1a)',
|
|
26
|
+
boxShadow: selectTriggerShadow,
|
|
27
|
+
color: 'light-dark(#101010, #ececec)',
|
|
28
|
+
fontFamily: '"Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif',
|
|
29
|
+
fontStyle: 'normal',
|
|
30
|
+
fontWeight: 400,
|
|
31
|
+
fontSize: '13px',
|
|
32
|
+
lineHeight: '20px',
|
|
33
|
+
fontFeatureSettings: '"ss01" on, "cv01" on',
|
|
34
|
+
letterSpacing: 0,
|
|
35
|
+
textAlign: 'left',
|
|
36
|
+
textShadow: '0 1px 0 light-dark(#FFFFFF, rgb(0 0 0 / 0.35))',
|
|
37
|
+
whiteSpace: 'nowrap',
|
|
38
|
+
'&:hover, &:focus-visible, &[aria-expanded="true"], &[aria-expanded="true"]:hover, &[aria-expanded="true"]:focus-visible': {
|
|
39
|
+
background: 'light-dark(#FFFFFF, #1a1a1a)',
|
|
40
|
+
color: 'light-dark(#101010, #ececec)',
|
|
41
|
+
},
|
|
42
|
+
'&:active': {
|
|
43
|
+
background: 'light-dark(#FFFFFF, #1a1a1a)',
|
|
44
|
+
},
|
|
45
|
+
'&:focus-visible': {
|
|
46
|
+
outline: 0,
|
|
47
|
+
boxShadow: selectTriggerFocusShadow,
|
|
48
|
+
},
|
|
49
|
+
'&[aria-expanded="true"]': {
|
|
50
|
+
boxShadow: selectTriggerFocusShadow,
|
|
51
|
+
},
|
|
52
|
+
'&:disabled': {
|
|
53
|
+
opacity: 0.55,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const triggerLabelCss = css({
|
|
57
|
+
display: 'inline-flex',
|
|
58
|
+
alignItems: 'center',
|
|
59
|
+
flex: '1 1 auto',
|
|
60
|
+
minWidth: 0,
|
|
61
|
+
overflow: 'hidden',
|
|
62
|
+
textOverflow: 'ellipsis',
|
|
63
|
+
});
|
|
64
|
+
const triggerIconCss = css({
|
|
65
|
+
display: 'inline-flex',
|
|
66
|
+
alignItems: 'center',
|
|
67
|
+
justifyContent: 'center',
|
|
68
|
+
width: '16px',
|
|
69
|
+
height: '16px',
|
|
70
|
+
color: 'light-dark(#707070, #b3b3b3)',
|
|
71
|
+
flex: 'none',
|
|
72
|
+
'& > svg': {
|
|
73
|
+
display: 'block',
|
|
74
|
+
width: '100%',
|
|
75
|
+
height: '100%',
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
export const triggerStyle = selectTriggerCss;
|
|
79
|
+
function SelectLabel(handle) {
|
|
80
|
+
let context = handle.context.get(select.Context);
|
|
81
|
+
return () => _jsx("span", { mix: triggerLabelCss, children: context.displayedLabel });
|
|
82
|
+
}
|
|
83
|
+
export function Select(handle) {
|
|
84
|
+
return () => {
|
|
85
|
+
let { children, defaultLabel, defaultValue, disabled, name, mix, ...buttonProps } = handle.props;
|
|
86
|
+
return (_jsxs(select.Context, { defaultLabel: defaultLabel, defaultValue: defaultValue, disabled: disabled, name: name, children: [_jsxs("button", { type: "button", ...buttonProps, mix: [triggerStyle, select.trigger(), mix], children: [_jsx(SelectLabel, {}), _jsx(ChevronVerticalIcon, { mix: triggerIconCss })] }), _jsx(popover.Context, { children: _jsx("div", { mix: [popoverSurfaceStyle, select.popover()], children: _jsx("div", { mix: [listboxListStyle, select.list()], children: children }) }) }), name && _jsx("input", { mix: select.hiddenInput() })] }));
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function Option(handle) {
|
|
90
|
+
return () => {
|
|
91
|
+
let { label, value, disabled, textValue, children, mix, ...divProps } = handle.props;
|
|
92
|
+
return (_jsxs("div", { ...divProps, mix: [listboxOptionStyle, select.option({ value, label, disabled, textValue }), mix], children: [_jsx(CheckIcon, { mix: listboxIndicatorStyle }), _jsx("span", { mix: listboxLabelStyle, children: children ?? label })] }));
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/select/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keydown.js","sourceRoot":"","sources":["../../src/select/keydown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAE/C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAIlC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACrB,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;IACtB,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACtB,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;AACH,CAAC,CAAC,CACL,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { on, type
|
|
2
|
-
import * as listbox from '../listbox/
|
|
3
|
-
import * as popover from '../popover/
|
|
4
|
-
declare const SELECT_CHANGE_EVENT:
|
|
1
|
+
import { on, type Dispatched, type ElementProps, type Handle, type MixinFactory, type Props, type RemixNode } from '@remix-run/ui';
|
|
2
|
+
import * as listbox from '../listbox/index.ts';
|
|
3
|
+
import * as popover from '../popover/index.ts';
|
|
4
|
+
declare const SELECT_CHANGE_EVENT: 'rmx:select-change';
|
|
5
5
|
type SelectChangeHandler<target extends HTMLElement> = (event: Dispatched<SelectChangeEvent, target>, signal: AbortSignal) => void | Promise<void>;
|
|
6
6
|
declare global {
|
|
7
7
|
interface HTMLElementEventMap {
|
|
@@ -23,6 +23,7 @@ export interface SelectContextProps {
|
|
|
23
23
|
defaultLabel: string;
|
|
24
24
|
defaultValue?: string | null;
|
|
25
25
|
disabled?: boolean;
|
|
26
|
+
labelSwapDelayMs?: number;
|
|
26
27
|
name?: string;
|
|
27
28
|
}
|
|
28
29
|
export interface SelectProps extends Omit<Props<'button'>, 'children' | 'name'> {
|
|
@@ -55,7 +56,6 @@ interface SelectContextValue {
|
|
|
55
56
|
}
|
|
56
57
|
declare function SelectProvider(handle: Handle<SelectContextProps, SelectContextValue>): () => RemixNode;
|
|
57
58
|
declare const popoverMixin: MixinFactory<HTMLElement, [], ElementProps>;
|
|
58
|
-
export declare const triggerStyle: CSSMixinDescriptor;
|
|
59
59
|
export declare const Context: typeof SelectProvider;
|
|
60
60
|
export declare const hiddenInput: MixinFactory<HTMLInputElement, [], ElementProps>;
|
|
61
61
|
export declare const list: MixinFactory<HTMLElement, [], ElementProps>;
|
|
@@ -63,5 +63,3 @@ export declare const option: MixinFactory<HTMLElement, [option: Omit<listbox.Lis
|
|
|
63
63
|
export { popoverMixin as popover };
|
|
64
64
|
export declare const trigger: MixinFactory<HTMLButtonElement, [], ElementProps>;
|
|
65
65
|
export declare function onSelectChange<target extends HTMLElement>(handler: SelectChangeHandler<target>, captureBoolean?: boolean): ReturnType<typeof on<target, typeof SELECT_CHANGE_EVENT>>;
|
|
66
|
-
export declare function Select(handle: Handle<SelectProps>): () => RemixNode;
|
|
67
|
-
export declare function Option(handle: Handle<SelectOptionProps>): () => RemixNode;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import { attrs,
|
|
3
|
-
import * as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { onKeyDown } from "../../interactions/keydown/keydown.js";
|
|
10
|
-
import { waitForCssTransition } from "../../utils/wait-for-css-transition.js";
|
|
11
|
-
import { wait } from "../../utils/wait.js";
|
|
1
|
+
import { jsx as _jsx } from "@remix-run/ui/jsx-runtime";
|
|
2
|
+
import { attrs, createMixin, on, ref, } from '@remix-run/ui';
|
|
3
|
+
import * as listbox from '../listbox/index.js';
|
|
4
|
+
import * as popover from '../popover/index.js';
|
|
5
|
+
import { hiddenTypeahead } from '../shared/typeahead.js';
|
|
6
|
+
import { waitForCssTransition } from '../shared/wait-for-css-transition.js';
|
|
7
|
+
import { wait } from '../shared/wait.js';
|
|
8
|
+
import { onKeyDown } from './keydown.js';
|
|
12
9
|
const SELECT_CHANGE_EVENT = 'rmx:select-change';
|
|
13
|
-
const
|
|
10
|
+
const DEFAULT_LABEL_SWAP_DELAY_MS = 75;
|
|
14
11
|
export class SelectChangeEvent extends Event {
|
|
15
12
|
label;
|
|
16
13
|
optionId;
|
|
@@ -125,7 +122,7 @@ function SelectProvider(handle) {
|
|
|
125
122
|
return;
|
|
126
123
|
}
|
|
127
124
|
await Promise.all([handle.update(), waitForCssTransition(surfaceRef, handle.signal)]);
|
|
128
|
-
await wait(
|
|
125
|
+
await wait(handle.props.labelSwapDelayMs ?? DEFAULT_LABEL_SWAP_DELAY_MS);
|
|
129
126
|
if (handle.signal.aborted)
|
|
130
127
|
return;
|
|
131
128
|
displayedLabel = selectedLabel;
|
|
@@ -319,39 +316,6 @@ const hiddenInputMixin = createMixin((handle) => {
|
|
|
319
316
|
value: context.value ?? '',
|
|
320
317
|
});
|
|
321
318
|
});
|
|
322
|
-
const selectTriggerCss = css({
|
|
323
|
-
minHeight: theme.control.height.sm,
|
|
324
|
-
width: '100%',
|
|
325
|
-
paddingInline: theme.space.md,
|
|
326
|
-
paddingInlineEnd: theme.space.sm,
|
|
327
|
-
display: 'grid',
|
|
328
|
-
gridTemplateColumns: 'minmax(0, 1fr) auto',
|
|
329
|
-
alignItems: 'center',
|
|
330
|
-
gap: theme.space.sm,
|
|
331
|
-
borderRadius: theme.radius.md,
|
|
332
|
-
backgroundImage: 'none',
|
|
333
|
-
border: '0.5px solid transparent',
|
|
334
|
-
boxShadow: 'none',
|
|
335
|
-
fontSize: theme.fontSize.xs,
|
|
336
|
-
textAlign: 'left',
|
|
337
|
-
backgroundColor: theme.surface.lvl3,
|
|
338
|
-
color: theme.colors.text.secondary,
|
|
339
|
-
'&:hover, &:focus-visible, &[aria-expanded="true"], &[aria-expanded="true"]:hover, &[aria-expanded="true"]:focus-visible': {
|
|
340
|
-
backgroundColor: theme.surface.lvl4,
|
|
341
|
-
color: theme.colors.text.primary,
|
|
342
|
-
},
|
|
343
|
-
'&:active': {
|
|
344
|
-
backgroundColor: theme.surface.lvl3,
|
|
345
|
-
},
|
|
346
|
-
'&:focus-visible': {
|
|
347
|
-
outline: `2px solid ${theme.colors.focus.ring}`,
|
|
348
|
-
outlineOffset: '2px',
|
|
349
|
-
},
|
|
350
|
-
'&:disabled': {
|
|
351
|
-
opacity: 0.6,
|
|
352
|
-
},
|
|
353
|
-
});
|
|
354
|
-
export const triggerStyle = selectTriggerCss;
|
|
355
319
|
export const Context = SelectProvider;
|
|
356
320
|
export const hiddenInput = hiddenInputMixin;
|
|
357
321
|
export const list = listMixin;
|
|
@@ -369,20 +333,4 @@ const select = {
|
|
|
369
333
|
export function onSelectChange(handler, captureBoolean) {
|
|
370
334
|
return on(SELECT_CHANGE_EVENT, handler, captureBoolean);
|
|
371
335
|
}
|
|
372
|
-
|
|
373
|
-
let context = getSelectContext(handle);
|
|
374
|
-
return () => _jsx("span", { mix: button.labelStyle, children: context.displayedLabel });
|
|
375
|
-
}
|
|
376
|
-
export function Select(handle) {
|
|
377
|
-
return () => {
|
|
378
|
-
let { children, defaultLabel, defaultValue, disabled, name, mix, ...buttonProps } = handle.props;
|
|
379
|
-
return (_jsxs(select.Context, { defaultLabel: defaultLabel, defaultValue: defaultValue, disabled: disabled, name: name, children: [_jsxs("button", { ...buttonProps, mix: [button.baseStyle, triggerStyle, select.trigger(), mix], children: [_jsx(SelectLabel, {}), _jsx(Glyph, { mix: button.iconStyle, name: "chevronVertical" })] }), _jsx(popover.Context, { children: _jsx("div", { mix: [popover.surfaceStyle, select.popover()], children: _jsx("div", { mix: [popover.contentStyle, listbox.listStyle, select.list()], children: children }) }) }), name && _jsx("input", { mix: select.hiddenInput() })] }));
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
export function Option(handle) {
|
|
383
|
-
return () => {
|
|
384
|
-
let { label, value, disabled, textValue, children, mix, ...divProps } = handle.props;
|
|
385
|
-
return (_jsxs("div", { ...divProps, mix: [listbox.optionStyle, select.option({ value, label, disabled, textValue }), mix], children: [_jsx(Glyph, { mix: listbox.glyphStyle, name: "check" }), _jsx("span", { mix: listbox.labelStyle, children: children ?? handle.props.label })] }));
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
//# sourceMappingURL=select.js.map
|
|
336
|
+
//# sourceMappingURL=primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/select/primitives.tsx"],"names":[],"mappings":"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"}
|
package/dist/server/stream.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Fragment, createComponent, createFrameHandle, Frame } from
|
|
2
|
-
import { isEntry } from
|
|
3
|
-
import { FRAMEWORK_PROPS as RUNTIME_FRAMEWORK_PROPS, SELF_CLOSING_TAGS, normalizeAttributeName, serializeStyleObject, shouldStringifyBooleanAttribute, } from
|
|
4
|
-
import { appendFlushMarker, stripFlushMarkers } from
|
|
5
|
-
import { REMIX_UI_STYLE_LAYER } from
|
|
1
|
+
import { Fragment, createComponent, createFrameHandle, Frame } from '../runtime/component.js';
|
|
2
|
+
import { isEntry } from '../runtime/client-entries.js';
|
|
3
|
+
import { FRAMEWORK_PROPS as RUNTIME_FRAMEWORK_PROPS, SELF_CLOSING_TAGS, normalizeAttributeName, serializeStyleObject, shouldStringifyBooleanAttribute, } from '../runtime/core/attributes.js';
|
|
4
|
+
import { appendFlushMarker, stripFlushMarkers } from '../runtime/stream-protocol.js';
|
|
5
|
+
import { REMIX_UI_STYLE_LAYER } from '../style/layers.js';
|
|
6
6
|
export function createVNode(type, props, key) {
|
|
7
7
|
return { type, props, key };
|
|
8
8
|
}
|
|
@@ -63,7 +63,6 @@ export function renderToStream(node, options) {
|
|
|
63
63
|
onError,
|
|
64
64
|
resolveFrame: options?.resolveFrame ?? defaultResolveFrame,
|
|
65
65
|
styleCache: new Map(),
|
|
66
|
-
emittedStyles: new Set(),
|
|
67
66
|
pendingFrames: [],
|
|
68
67
|
hydrationData: new Map(),
|
|
69
68
|
unresolvedHydrationData: new Map(),
|
|
@@ -263,7 +262,7 @@ function buildSegment(node, context, frameState) {
|
|
|
263
262
|
}
|
|
264
263
|
return buildElementSegment(tag, props, context, frameState);
|
|
265
264
|
}
|
|
266
|
-
if (
|
|
265
|
+
if (isElementFunction(type)) {
|
|
267
266
|
if (type === Frame) {
|
|
268
267
|
return buildFrameSegment(node, context, frameState);
|
|
269
268
|
}
|
|
@@ -569,6 +568,9 @@ function isSsrMixinElement(value) {
|
|
|
569
568
|
return false;
|
|
570
569
|
return '__rmxMixinElementType' in value;
|
|
571
570
|
}
|
|
571
|
+
function isElementFunction(value) {
|
|
572
|
+
return typeof value === 'function';
|
|
573
|
+
}
|
|
572
574
|
function isSsrMixinDescriptor(value) {
|
|
573
575
|
if (!value || typeof value !== 'object' || isRemixElement(value)) {
|
|
574
576
|
return false;
|
|
@@ -648,7 +650,7 @@ function createHydrationPropsReplacer(context, frameState) {
|
|
|
648
650
|
return { $rmx: true, type, props: transformProps(props) };
|
|
649
651
|
}
|
|
650
652
|
// Component function: render synchronously, then unwrap its result
|
|
651
|
-
if (
|
|
653
|
+
if (isElementFunction(type)) {
|
|
652
654
|
let vnode = createVNode(type, props);
|
|
653
655
|
if (context.parentVNode) {
|
|
654
656
|
vnode._parent = context.parentVNode;
|
|
@@ -755,13 +757,13 @@ async function resolveClientEntries(context, resolveClientEntry) {
|
|
|
755
757
|
let resolvedEntries = new Map();
|
|
756
758
|
for (let [hydrationId, unresolvedHydrationData] of context.unresolvedHydrationData) {
|
|
757
759
|
let { entryId, component, props } = unresolvedHydrationData;
|
|
758
|
-
let resolvedEntry = resolvedEntries.get(
|
|
760
|
+
let resolvedEntry = resolvedEntries.get(component);
|
|
759
761
|
if (!resolvedEntry) {
|
|
760
762
|
resolvedEntry = resolveClientEntry
|
|
761
763
|
? await Promise.resolve(resolveClientEntry(entryId, component))
|
|
762
764
|
: resolveDefaultClientEntry(entryId, component);
|
|
763
765
|
validateResolvedClientEntry(entryId, resolvedEntry);
|
|
764
|
-
resolvedEntries.set(
|
|
766
|
+
resolvedEntries.set(component, resolvedEntry);
|
|
765
767
|
}
|
|
766
768
|
context.hydrationData.set(hydrationId, {
|
|
767
769
|
exportName: resolvedEntry.exportName,
|
|
@@ -862,7 +864,6 @@ function finalizeHtml(html, context) {
|
|
|
862
864
|
html = `<head>${headContent}</head>${html}`;
|
|
863
865
|
}
|
|
864
866
|
}
|
|
865
|
-
html = dedupeServerStyleTagsInHtml(html, context.emittedStyles);
|
|
866
867
|
// Append aggregated hydration/frame data script at the end
|
|
867
868
|
let rmxData = buildRmxDataScript(context);
|
|
868
869
|
if (rmxData) {
|
|
@@ -923,24 +924,11 @@ function renderStyleTag(selector, css, layer = REMIX_UI_STYLE_LAYER) {
|
|
|
923
924
|
let wrappedCss = wrapStyleForLayer(selector, css, layer);
|
|
924
925
|
if (!wrappedCss)
|
|
925
926
|
return '';
|
|
926
|
-
return `<style data-rmx="${escapeHtml(selector)}">${wrappedCss}</style>`;
|
|
927
|
+
return `<style data-rmx="${escapeHtml(selector)}">${escapeStyleText(wrappedCss)}</style>`;
|
|
927
928
|
}
|
|
928
|
-
function
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
return null;
|
|
932
|
-
return match[1] ?? match[2] ?? null;
|
|
933
|
-
}
|
|
934
|
-
function dedupeServerStyleTagsInHtml(html, seenStyles) {
|
|
935
|
-
return html.replace(/<style\b([^>]*)>[\s\S]*?<\/style>/gi, (match, attrs) => {
|
|
936
|
-
let selector = readStyleTagAttribute(attrs, 'data-rmx');
|
|
937
|
-
if (!selector)
|
|
938
|
-
return match;
|
|
939
|
-
if (seenStyles.has(selector))
|
|
940
|
-
return '';
|
|
941
|
-
seenStyles.add(selector);
|
|
942
|
-
return match;
|
|
943
|
-
});
|
|
929
|
+
function escapeStyleText(css) {
|
|
930
|
+
// A literal "</style" closes an HTML style element even when it appears inside a CSS string.
|
|
931
|
+
return css.replace(/</g, '\\3C ');
|
|
944
932
|
}
|
|
945
933
|
function buildRmxDataScript(context) {
|
|
946
934
|
if (context.hydrationData.size === 0 && context.frameData.size === 0) {
|
|
@@ -964,6 +952,12 @@ function escapeScriptJson(json) {
|
|
|
964
952
|
// the handler's `finalizeHtml` emits selector-addressed `<style>` tags in its HTML, and on the client,
|
|
965
953
|
// the `adoptServerStyleTag` MutationObserver (stylesheet.ts) picks it up anywhere in the
|
|
966
954
|
// document and adopts the CSS into an adopted stylesheet.
|
|
955
|
+
//
|
|
956
|
+
// Style tags are intentionally NOT deduped across frame boundaries: each frame
|
|
957
|
+
// owns its style rules independently on the client (per-frame refcounted
|
|
958
|
+
// adoption), so every frame's HTML must carry the full set of style tags its
|
|
959
|
+
// content references — even when a sibling frame or the enclosing document
|
|
960
|
+
// already emitted the same selector.
|
|
967
961
|
async function streamPendingFrames(context, controller, encoder) {
|
|
968
962
|
let processedFrames = new Set();
|
|
969
963
|
while (true) {
|
|
@@ -980,7 +974,6 @@ async function streamPendingFrames(context, controller, encoder) {
|
|
|
980
974
|
let { html, tail } = await promise;
|
|
981
975
|
if (context.signal.aborted)
|
|
982
976
|
return;
|
|
983
|
-
html = dedupeServerStyleTagsInHtml(html, context.emittedStyles);
|
|
984
977
|
// Stream as a template element (first chunk only)
|
|
985
978
|
let templateHtml = `<template id="${frameId}">${escapeTemplateContent(html)}</template>`;
|
|
986
979
|
if (context.signal.aborted)
|