@ariakit/react-components 0.1.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/CHANGELOG.md +20 -0
- package/dist/button/button.d.ts +2 -0
- package/dist/button/button.js +53 -0
- package/dist/button/button.js.map +1 -0
- package/dist/button-Cp853csH.d.ts +34 -0
- package/dist/button-Cp853csH.d.ts.map +1 -0
- package/dist/checkbox/checkbox-check.d.ts +56 -0
- package/dist/checkbox/checkbox-check.d.ts.map +1 -0
- package/dist/checkbox/checkbox-check.js +77 -0
- package/dist/checkbox/checkbox-check.js.map +1 -0
- package/dist/checkbox/checkbox-checked-context.d.ts +5 -0
- package/dist/checkbox/checkbox-checked-context.d.ts.map +1 -0
- package/dist/checkbox/checkbox-checked-context.js +8 -0
- package/dist/checkbox/checkbox-checked-context.js.map +1 -0
- package/dist/checkbox/checkbox-context.d.ts +24 -0
- package/dist/checkbox/checkbox-context.d.ts.map +1 -0
- package/dist/checkbox/checkbox-context.js +26 -0
- package/dist/checkbox/checkbox-context.js.map +1 -0
- package/dist/checkbox/checkbox-provider.d.ts +35 -0
- package/dist/checkbox/checkbox-provider.d.ts.map +1 -0
- package/dist/checkbox/checkbox-provider.js +15 -0
- package/dist/checkbox/checkbox-provider.js.map +1 -0
- package/dist/checkbox/checkbox-store.d.ts +2 -0
- package/dist/checkbox/checkbox-store.js +18 -0
- package/dist/checkbox/checkbox-store.js.map +1 -0
- package/dist/checkbox/checkbox.d.ts +91 -0
- package/dist/checkbox/checkbox.d.ts.map +1 -0
- package/dist/checkbox/checkbox.js +148 -0
- package/dist/checkbox/checkbox.js.map +1 -0
- package/dist/checkbox-store-CYZPR4N4.d.ts +38 -0
- package/dist/checkbox-store-CYZPR4N4.d.ts.map +1 -0
- package/dist/collection/collection-context.d.ts +24 -0
- package/dist/collection/collection-context.d.ts.map +1 -0
- package/dist/collection/collection-context.js +26 -0
- package/dist/collection/collection-context.js.map +1 -0
- package/dist/collection/collection-item-offscreen.d.ts +2 -0
- package/dist/collection/collection-item-offscreen.js +88 -0
- package/dist/collection/collection-item-offscreen.js.map +1 -0
- package/dist/collection/collection-item.d.ts +2 -0
- package/dist/collection/collection-item.js +69 -0
- package/dist/collection/collection-item.js.map +1 -0
- package/dist/collection/collection-provider.d.ts +26 -0
- package/dist/collection/collection-provider.d.ts.map +1 -0
- package/dist/collection/collection-provider.js +15 -0
- package/dist/collection/collection-provider.js.map +1 -0
- package/dist/collection/collection-renderer.d.ts +2 -0
- package/dist/collection/collection-renderer.js +580 -0
- package/dist/collection/collection-renderer.js.map +1 -0
- package/dist/collection/collection-store.d.ts +2 -0
- package/dist/collection/collection-store.js +18 -0
- package/dist/collection/collection-store.js.map +1 -0
- package/dist/collection/collection.d.ts +55 -0
- package/dist/collection/collection.d.ts.map +1 -0
- package/dist/collection/collection.js +55 -0
- package/dist/collection/collection.js.map +1 -0
- package/dist/collection-item-C-g2BwVF.d.ts +84 -0
- package/dist/collection-item-C-g2BwVF.d.ts.map +1 -0
- package/dist/collection-item-offscreen-DyXa-sqj.d.ts +30 -0
- package/dist/collection-item-offscreen-DyXa-sqj.d.ts.map +1 -0
- package/dist/collection-renderer-DsPD9ksD.d.ts +469 -0
- package/dist/collection-renderer-DsPD9ksD.d.ts.map +1 -0
- package/dist/collection-store-CbwzYsWf.d.ts +42 -0
- package/dist/collection-store-CbwzYsWf.d.ts.map +1 -0
- package/dist/combobox/combobox-cancel.d.ts +62 -0
- package/dist/combobox/combobox-cancel.d.ts.map +1 -0
- package/dist/combobox/combobox-cancel.js +98 -0
- package/dist/combobox/combobox-cancel.js.map +1 -0
- package/dist/combobox/combobox-context.d.ts +27 -0
- package/dist/combobox/combobox-context.d.ts.map +1 -0
- package/dist/combobox/combobox-context.js +32 -0
- package/dist/combobox/combobox-context.js.map +1 -0
- package/dist/combobox/combobox-disclosure.d.ts +63 -0
- package/dist/combobox/combobox-disclosure.d.ts.map +1 -0
- package/dist/combobox/combobox-disclosure.js +108 -0
- package/dist/combobox/combobox-disclosure.js.map +1 -0
- package/dist/combobox/combobox-group-label.d.ts +56 -0
- package/dist/combobox/combobox-group-label.d.ts.map +1 -0
- package/dist/combobox/combobox-group-label.js +47 -0
- package/dist/combobox/combobox-group-label.js.map +1 -0
- package/dist/combobox/combobox-group.d.ts +63 -0
- package/dist/combobox/combobox-group.d.ts.map +1 -0
- package/dist/combobox/combobox-group.js +67 -0
- package/dist/combobox/combobox-group.js.map +1 -0
- package/dist/combobox/combobox-item-check.d.ts +61 -0
- package/dist/combobox/combobox-item-check.d.ts.map +1 -0
- package/dist/combobox/combobox-item-check.js +62 -0
- package/dist/combobox/combobox-item-check.js.map +1 -0
- package/dist/combobox/combobox-item-offscreen.d.ts +34 -0
- package/dist/combobox/combobox-item-offscreen.d.ts.map +1 -0
- package/dist/combobox/combobox-item-offscreen.js +53 -0
- package/dist/combobox/combobox-item-offscreen.js.map +1 -0
- package/dist/combobox/combobox-item-value.d.ts +103 -0
- package/dist/combobox/combobox-item-value.d.ts.map +1 -0
- package/dist/combobox/combobox-item-value.js +143 -0
- package/dist/combobox/combobox-item-value.js.map +1 -0
- package/dist/combobox/combobox-item.d.ts +146 -0
- package/dist/combobox/combobox-item.d.ts.map +1 -0
- package/dist/combobox/combobox-item.js +157 -0
- package/dist/combobox/combobox-item.js.map +1 -0
- package/dist/combobox/combobox-label.d.ts +50 -0
- package/dist/combobox/combobox-label.d.ts.map +1 -0
- package/dist/combobox/combobox-label.js +51 -0
- package/dist/combobox/combobox-label.js.map +1 -0
- package/dist/combobox/combobox-list.d.ts +55 -0
- package/dist/combobox/combobox-list.d.ts.map +1 -0
- package/dist/combobox/combobox-list.js +106 -0
- package/dist/combobox/combobox-list.js.map +1 -0
- package/dist/combobox/combobox-popover.d.ts +46 -0
- package/dist/combobox/combobox-popover.d.ts.map +1 -0
- package/dist/combobox/combobox-popover.js +115 -0
- package/dist/combobox/combobox-popover.js.map +1 -0
- package/dist/combobox/combobox-provider.d.ts +30 -0
- package/dist/combobox/combobox-provider.d.ts.map +1 -0
- package/dist/combobox/combobox-provider.js +15 -0
- package/dist/combobox/combobox-provider.js.map +1 -0
- package/dist/combobox/combobox-row.d.ts +66 -0
- package/dist/combobox/combobox-row.d.ts.map +1 -0
- package/dist/combobox/combobox-row.js +70 -0
- package/dist/combobox/combobox-row.js.map +1 -0
- package/dist/combobox/combobox-separator.d.ts +61 -0
- package/dist/combobox/combobox-separator.d.ts.map +1 -0
- package/dist/combobox/combobox-separator.js +60 -0
- package/dist/combobox/combobox-separator.js.map +1 -0
- package/dist/combobox/combobox-store.d.ts +2 -0
- package/dist/combobox/combobox-store.js +33 -0
- package/dist/combobox/combobox-store.js.map +1 -0
- package/dist/combobox/combobox-value.d.ts +49 -0
- package/dist/combobox/combobox-value.d.ts.map +1 -0
- package/dist/combobox/combobox-value.js +40 -0
- package/dist/combobox/combobox-value.js.map +1 -0
- package/dist/combobox/combobox.d.ts +268 -0
- package/dist/combobox/combobox.d.ts.map +1 -0
- package/dist/combobox/combobox.js +399 -0
- package/dist/combobox/combobox.js.map +1 -0
- package/dist/combobox-store-DEVQ45mZ.d.ts +80 -0
- package/dist/combobox-store-DEVQ45mZ.d.ts.map +1 -0
- package/dist/command/command.d.ts +2 -0
- package/dist/command/command.js +130 -0
- package/dist/command/command.js.map +1 -0
- package/dist/command-DckndCUK.d.ts +59 -0
- package/dist/command-DckndCUK.d.ts.map +1 -0
- package/dist/composite/composite-container.d.ts +59 -0
- package/dist/composite/composite-container.d.ts.map +1 -0
- package/dist/composite/composite-container.js +164 -0
- package/dist/composite/composite-container.js.map +1 -0
- package/dist/composite/composite-context.d.ts +34 -0
- package/dist/composite/composite-context.d.ts.map +1 -0
- package/dist/composite/composite-context.js +30 -0
- package/dist/composite/composite-context.js.map +1 -0
- package/dist/composite/composite-group-label.d.ts +55 -0
- package/dist/composite/composite-group-label.d.ts.map +1 -0
- package/dist/composite/composite-group-label.js +46 -0
- package/dist/composite/composite-group-label.js.map +1 -0
- package/dist/composite/composite-group.d.ts +60 -0
- package/dist/composite/composite-group.d.ts.map +1 -0
- package/dist/composite/composite-group.js +51 -0
- package/dist/composite/composite-group.js.map +1 -0
- package/dist/composite/composite-hover.d.ts +2 -0
- package/dist/composite/composite-hover.js +114 -0
- package/dist/composite/composite-hover.js.map +1 -0
- package/dist/composite/composite-input.d.ts +55 -0
- package/dist/composite/composite-input.d.ts.map +1 -0
- package/dist/composite/composite-input.js +91 -0
- package/dist/composite/composite-input.js.map +1 -0
- package/dist/composite/composite-item-offscreen.d.ts +39 -0
- package/dist/composite/composite-item-offscreen.d.ts.map +1 -0
- package/dist/composite/composite-item-offscreen.js +72 -0
- package/dist/composite/composite-item-offscreen.js.map +1 -0
- package/dist/composite/composite-item.d.ts +2 -0
- package/dist/composite/composite-item.js +290 -0
- package/dist/composite/composite-item.js.map +1 -0
- package/dist/composite/composite-overflow-disclosure.d.ts +53 -0
- package/dist/composite/composite-overflow-disclosure.d.ts.map +1 -0
- package/dist/composite/composite-overflow-disclosure.js +84 -0
- package/dist/composite/composite-overflow-disclosure.js.map +1 -0
- package/dist/composite/composite-overflow-store.d.ts +38 -0
- package/dist/composite/composite-overflow-store.d.ts.map +1 -0
- package/dist/composite/composite-overflow-store.js +36 -0
- package/dist/composite/composite-overflow-store.js.map +1 -0
- package/dist/composite/composite-overflow.d.ts +54 -0
- package/dist/composite/composite-overflow.d.ts.map +1 -0
- package/dist/composite/composite-overflow.js +82 -0
- package/dist/composite/composite-overflow.js.map +1 -0
- package/dist/composite/composite-provider.d.ts +28 -0
- package/dist/composite/composite-provider.d.ts.map +1 -0
- package/dist/composite/composite-provider.js +15 -0
- package/dist/composite/composite-provider.js.map +1 -0
- package/dist/composite/composite-renderer.d.ts +329 -0
- package/dist/composite/composite-renderer.d.ts.map +1 -0
- package/dist/composite/composite-renderer.js +121 -0
- package/dist/composite/composite-renderer.js.map +1 -0
- package/dist/composite/composite-row.d.ts +67 -0
- package/dist/composite/composite-row.d.ts.map +1 -0
- package/dist/composite/composite-row.js +86 -0
- package/dist/composite/composite-row.js.map +1 -0
- package/dist/composite/composite-separator.d.ts +61 -0
- package/dist/composite/composite-separator.d.ts.map +1 -0
- package/dist/composite/composite-separator.js +55 -0
- package/dist/composite/composite-separator.js.map +1 -0
- package/dist/composite/composite-store.d.ts +2 -0
- package/dist/composite/composite-store.js +33 -0
- package/dist/composite/composite-store.js.map +1 -0
- package/dist/composite/composite-typeahead.d.ts +2 -0
- package/dist/composite/composite-typeahead.js +126 -0
- package/dist/composite/composite-typeahead.js.map +1 -0
- package/dist/composite/composite.d.ts +2 -0
- package/dist/composite/composite.js +273 -0
- package/dist/composite/composite.js.map +1 -0
- package/dist/composite/utils.d.ts +52 -0
- package/dist/composite/utils.d.ts.map +1 -0
- package/dist/composite/utils.js +93 -0
- package/dist/composite/utils.js.map +1 -0
- package/dist/composite-DLvyFHMq.d.ts +124 -0
- package/dist/composite-DLvyFHMq.d.ts.map +1 -0
- package/dist/composite-hover-C7ul163w.d.ts +103 -0
- package/dist/composite-hover-C7ul163w.d.ts.map +1 -0
- package/dist/composite-item-B4WTelVz.d.ts +141 -0
- package/dist/composite-item-B4WTelVz.d.ts.map +1 -0
- package/dist/composite-store-DyJc-XRA.d.ts +43 -0
- package/dist/composite-store-DyJc-XRA.d.ts.map +1 -0
- package/dist/composite-typeahead-DDhpyKqm.d.ts +63 -0
- package/dist/composite-typeahead-DDhpyKqm.d.ts.map +1 -0
- package/dist/dialog/dialog-backdrop.d.ts +16 -0
- package/dist/dialog/dialog-backdrop.d.ts.map +1 -0
- package/dist/dialog/dialog-backdrop.js +58 -0
- package/dist/dialog/dialog-backdrop.js.map +1 -0
- package/dist/dialog/dialog-context.d.ts +27 -0
- package/dist/dialog/dialog-context.d.ts.map +1 -0
- package/dist/dialog/dialog-context.js +30 -0
- package/dist/dialog/dialog-context.js.map +1 -0
- package/dist/dialog/dialog-description.d.ts +2 -0
- package/dist/dialog/dialog-description.js +53 -0
- package/dist/dialog/dialog-description.js.map +1 -0
- package/dist/dialog/dialog-disclosure.d.ts +2 -0
- package/dist/dialog/dialog-disclosure.js +52 -0
- package/dist/dialog/dialog-disclosure.js.map +1 -0
- package/dist/dialog/dialog-dismiss.d.ts +2 -0
- package/dist/dialog/dialog-dismiss.js +80 -0
- package/dist/dialog/dialog-dismiss.js.map +1 -0
- package/dist/dialog/dialog-heading.d.ts +2 -0
- package/dist/dialog/dialog-heading.js +54 -0
- package/dist/dialog/dialog-heading.js.map +1 -0
- package/dist/dialog/dialog-provider.d.ts +22 -0
- package/dist/dialog/dialog-provider.d.ts.map +1 -0
- package/dist/dialog/dialog-provider.js +26 -0
- package/dist/dialog/dialog-provider.js.map +1 -0
- package/dist/dialog/dialog-store.d.ts +2 -0
- package/dist/dialog/dialog-store.js +28 -0
- package/dist/dialog/dialog-store.js.map +1 -0
- package/dist/dialog/dialog.d.ts +2 -0
- package/dist/dialog/dialog.js +429 -0
- package/dist/dialog/dialog.js.map +1 -0
- package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts +7 -0
- package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts.map +1 -0
- package/dist/dialog/utils/disable-accessibility-tree-outside.js +24 -0
- package/dist/dialog/utils/disable-accessibility-tree-outside.js.map +1 -0
- package/dist/dialog/utils/disable-tree.d.ts +9 -0
- package/dist/dialog/utils/disable-tree.d.ts.map +1 -0
- package/dist/dialog/utils/disable-tree.js +48 -0
- package/dist/dialog/utils/disable-tree.js.map +1 -0
- package/dist/dialog/utils/is-backdrop.d.ts +5 -0
- package/dist/dialog/utils/is-backdrop.d.ts.map +1 -0
- package/dist/dialog/utils/is-backdrop.js +15 -0
- package/dist/dialog/utils/is-backdrop.js.map +1 -0
- package/dist/dialog/utils/is-focus-trap.d.ts +5 -0
- package/dist/dialog/utils/is-focus-trap.d.ts.map +1 -0
- package/dist/dialog/utils/is-focus-trap.js +14 -0
- package/dist/dialog/utils/is-focus-trap.js.map +1 -0
- package/dist/dialog/utils/mark-tree-outside.d.ts +9 -0
- package/dist/dialog/utils/mark-tree-outside.d.ts.map +1 -0
- package/dist/dialog/utils/mark-tree-outside.js +44 -0
- package/dist/dialog/utils/mark-tree-outside.js.map +1 -0
- package/dist/dialog/utils/orchestrate.d.ts +9 -0
- package/dist/dialog/utils/orchestrate.d.ts.map +1 -0
- package/dist/dialog/utils/orchestrate.js +77 -0
- package/dist/dialog/utils/orchestrate.js.map +1 -0
- package/dist/dialog/utils/prepend-hidden-dismiss.d.ts +5 -0
- package/dist/dialog/utils/prepend-hidden-dismiss.d.ts.map +1 -0
- package/dist/dialog/utils/prepend-hidden-dismiss.js +31 -0
- package/dist/dialog/utils/prepend-hidden-dismiss.js.map +1 -0
- package/dist/dialog/utils/supports-inert.d.ts +5 -0
- package/dist/dialog/utils/supports-inert.d.ts.map +1 -0
- package/dist/dialog/utils/supports-inert.js +9 -0
- package/dist/dialog/utils/supports-inert.js.map +1 -0
- package/dist/dialog/utils/use-hide-on-interact-outside.d.ts +9 -0
- package/dist/dialog/utils/use-hide-on-interact-outside.d.ts.map +1 -0
- package/dist/dialog/utils/use-hide-on-interact-outside.js +123 -0
- package/dist/dialog/utils/use-hide-on-interact-outside.js.map +1 -0
- package/dist/dialog/utils/use-nested-dialogs.d.ts +11 -0
- package/dist/dialog/utils/use-nested-dialogs.d.ts.map +1 -0
- package/dist/dialog/utils/use-nested-dialogs.js +40 -0
- package/dist/dialog/utils/use-nested-dialogs.js.map +1 -0
- package/dist/dialog/utils/use-prevent-body-scroll.d.ts +5 -0
- package/dist/dialog/utils/use-prevent-body-scroll.d.ts.map +1 -0
- package/dist/dialog/utils/use-prevent-body-scroll.js +60 -0
- package/dist/dialog/utils/use-prevent-body-scroll.js.map +1 -0
- package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts +5 -0
- package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts.map +1 -0
- package/dist/dialog/utils/use-previous-mouse-down-ref.js +22 -0
- package/dist/dialog/utils/use-previous-mouse-down-ref.js.map +1 -0
- package/dist/dialog/utils/use-root-dialog.d.ts +16 -0
- package/dist/dialog/utils/use-root-dialog.d.ts.map +1 -0
- package/dist/dialog/utils/use-root-dialog.js +47 -0
- package/dist/dialog/utils/use-root-dialog.js.map +1 -0
- package/dist/dialog/utils/walk-tree-outside.d.ts +8 -0
- package/dist/dialog/utils/walk-tree-outside.d.ts.map +1 -0
- package/dist/dialog/utils/walk-tree-outside.js +58 -0
- package/dist/dialog/utils/walk-tree-outside.js.map +1 -0
- package/dist/dialog-C__C-zX2.d.ts +267 -0
- package/dist/dialog-C__C-zX2.d.ts.map +1 -0
- package/dist/dialog-description-BCZJ1Kyd.d.ts +48 -0
- package/dist/dialog-description-BCZJ1Kyd.d.ts.map +1 -0
- package/dist/dialog-disclosure-DLD10zlb.d.ts +47 -0
- package/dist/dialog-disclosure-DLD10zlb.d.ts.map +1 -0
- package/dist/dialog-dismiss-CnwEbzc6.d.ts +48 -0
- package/dist/dialog-dismiss-CnwEbzc6.d.ts.map +1 -0
- package/dist/dialog-heading-DQvnOfZH.d.ts +49 -0
- package/dist/dialog-heading-DQvnOfZH.d.ts.map +1 -0
- package/dist/dialog-store-Cjt12T_Y.d.ts +29 -0
- package/dist/dialog-store-Cjt12T_Y.d.ts.map +1 -0
- package/dist/disclosure/disclosure-content.d.ts +2 -0
- package/dist/disclosure/disclosure-content.js +171 -0
- package/dist/disclosure/disclosure-content.js.map +1 -0
- package/dist/disclosure/disclosure-context.d.ts +24 -0
- package/dist/disclosure/disclosure-context.d.ts.map +1 -0
- package/dist/disclosure/disclosure-context.js +26 -0
- package/dist/disclosure/disclosure-context.js.map +1 -0
- package/dist/disclosure/disclosure-provider.d.ts +23 -0
- package/dist/disclosure/disclosure-provider.d.ts.map +1 -0
- package/dist/disclosure/disclosure-provider.js +27 -0
- package/dist/disclosure/disclosure-provider.js.map +1 -0
- package/dist/disclosure/disclosure-store.d.ts +2 -0
- package/dist/disclosure/disclosure-store.js +32 -0
- package/dist/disclosure/disclosure-store.js.map +1 -0
- package/dist/disclosure/disclosure.d.ts +2 -0
- package/dist/disclosure/disclosure.js +83 -0
- package/dist/disclosure/disclosure.js.map +1 -0
- package/dist/disclosure-CQ37hPVP.d.ts +60 -0
- package/dist/disclosure-CQ37hPVP.d.ts.map +1 -0
- package/dist/disclosure-content-BbPkZgAc.d.ts +88 -0
- package/dist/disclosure-content-BbPkZgAc.d.ts.map +1 -0
- package/dist/disclosure-store-BsaBaRKv.d.ts +58 -0
- package/dist/disclosure-store-BsaBaRKv.d.ts.map +1 -0
- package/dist/focus-trap/focus-trap-region.d.ts +42 -0
- package/dist/focus-trap/focus-trap-region.d.ts.map +1 -0
- package/dist/focus-trap/focus-trap-region.js +69 -0
- package/dist/focus-trap/focus-trap-region.js.map +1 -0
- package/dist/focus-trap/focus-trap.d.ts +31 -0
- package/dist/focus-trap/focus-trap.d.ts.map +1 -0
- package/dist/focus-trap/focus-trap.js +45 -0
- package/dist/focus-trap/focus-trap.js.map +1 -0
- package/dist/focusable/focusable-container.d.ts +43 -0
- package/dist/focusable/focusable-container.d.ts.map +1 -0
- package/dist/focusable/focusable-container.js +41 -0
- package/dist/focusable/focusable-container.js.map +1 -0
- package/dist/focusable/focusable-context.d.ts +5 -0
- package/dist/focusable/focusable-context.d.ts.map +1 -0
- package/dist/focusable/focusable-context.js +8 -0
- package/dist/focusable/focusable-context.js.map +1 -0
- package/dist/focusable/focusable.d.ts +2 -0
- package/dist/focusable/focusable.js +273 -0
- package/dist/focusable/focusable.js.map +1 -0
- package/dist/focusable-B00tOxtB.d.ts +142 -0
- package/dist/focusable-B00tOxtB.d.ts.map +1 -0
- package/dist/form/form-checkbox.d.ts +50 -0
- package/dist/form/form-checkbox.d.ts.map +1 -0
- package/dist/form/form-checkbox.js +73 -0
- package/dist/form/form-checkbox.js.map +1 -0
- package/dist/form/form-context.d.ts +24 -0
- package/dist/form/form-context.d.ts.map +1 -0
- package/dist/form/form-context.js +27 -0
- package/dist/form/form-context.js.map +1 -0
- package/dist/form/form-control.d.ts +100 -0
- package/dist/form/form-control.d.ts.map +1 -0
- package/dist/form/form-control.js +139 -0
- package/dist/form/form-control.js.map +1 -0
- package/dist/form/form-description.d.ts +73 -0
- package/dist/form/form-description.d.ts.map +1 -0
- package/dist/form/form-description.js +83 -0
- package/dist/form/form-description.js.map +1 -0
- package/dist/form/form-error.d.ts +82 -0
- package/dist/form/form-error.d.ts.map +1 -0
- package/dist/form/form-error.js +102 -0
- package/dist/form/form-error.js.map +1 -0
- package/dist/form/form-field.d.ts +73 -0
- package/dist/form/form-field.d.ts.map +1 -0
- package/dist/form/form-field.js +74 -0
- package/dist/form/form-field.js.map +1 -0
- package/dist/form/form-group-label.d.ts +62 -0
- package/dist/form/form-group-label.d.ts.map +1 -0
- package/dist/form/form-group-label.js +54 -0
- package/dist/form/form-group-label.js.map +1 -0
- package/dist/form/form-group.d.ts +64 -0
- package/dist/form/form-group.d.ts.map +1 -0
- package/dist/form/form-group.js +56 -0
- package/dist/form/form-group.js.map +1 -0
- package/dist/form/form-input.d.ts +50 -0
- package/dist/form/form-input.d.ts.map +1 -0
- package/dist/form/form-input.js +74 -0
- package/dist/form/form-input.js.map +1 -0
- package/dist/form/form-label.d.ts +77 -0
- package/dist/form/form-label.d.ts.map +1 -0
- package/dist/form/form-label.js +120 -0
- package/dist/form/form-label.js.map +1 -0
- package/dist/form/form-provider.d.ts +28 -0
- package/dist/form/form-provider.d.ts.map +1 -0
- package/dist/form/form-provider.js +15 -0
- package/dist/form/form-provider.js.map +1 -0
- package/dist/form/form-push.d.ts +102 -0
- package/dist/form/form-push.d.ts.map +1 -0
- package/dist/form/form-push.js +134 -0
- package/dist/form/form-push.js.map +1 -0
- package/dist/form/form-radio-group.d.ts +56 -0
- package/dist/form/form-radio-group.d.ts.map +1 -0
- package/dist/form/form-radio-group.js +68 -0
- package/dist/form/form-radio-group.js.map +1 -0
- package/dist/form/form-radio.d.ts +58 -0
- package/dist/form/form-radio.d.ts.map +1 -0
- package/dist/form/form-radio.js +90 -0
- package/dist/form/form-radio.js.map +1 -0
- package/dist/form/form-remove.d.ts +102 -0
- package/dist/form/form-remove.d.ts.map +1 -0
- package/dist/form/form-remove.js +116 -0
- package/dist/form/form-remove.js.map +1 -0
- package/dist/form/form-reset.d.ts +51 -0
- package/dist/form/form-reset.d.ts.map +1 -0
- package/dist/form/form-reset.js +54 -0
- package/dist/form/form-reset.js.map +1 -0
- package/dist/form/form-store.d.ts +2 -0
- package/dist/form/form-store.js +41 -0
- package/dist/form/form-store.js.map +1 -0
- package/dist/form/form-submit.d.ts +57 -0
- package/dist/form/form-submit.d.ts.map +1 -0
- package/dist/form/form-submit.js +59 -0
- package/dist/form/form-submit.js.map +1 -0
- package/dist/form/form.d.ts +101 -0
- package/dist/form/form.d.ts.map +1 -0
- package/dist/form/form.js +146 -0
- package/dist/form/form.js.map +1 -0
- package/dist/form-store-C4Kf5QHm.d.ts +120 -0
- package/dist/form-store-C4Kf5QHm.d.ts.map +1 -0
- package/dist/group/group-label-context.d.ts +7 -0
- package/dist/group/group-label-context.d.ts.map +1 -0
- package/dist/group/group-label-context.js +8 -0
- package/dist/group/group-label-context.js.map +1 -0
- package/dist/group/group-label.d.ts +2 -0
- package/dist/group/group-label.js +52 -0
- package/dist/group/group-label.js.map +1 -0
- package/dist/group/group.d.ts +2 -0
- package/dist/group/group.js +47 -0
- package/dist/group/group.js.map +1 -0
- package/dist/group-CamegDJA.d.ts +32 -0
- package/dist/group-CamegDJA.d.ts.map +1 -0
- package/dist/group-label-C16IDs1b.d.ts +37 -0
- package/dist/group-label-C16IDs1b.d.ts.map +1 -0
- package/dist/heading/heading-context.d.ts +7 -0
- package/dist/heading/heading-context.d.ts.map +1 -0
- package/dist/heading/heading-context.js +8 -0
- package/dist/heading/heading-context.js.map +1 -0
- package/dist/heading/heading-level.d.ts +35 -0
- package/dist/heading/heading-level.d.ts.map +1 -0
- package/dist/heading/heading-level.js +33 -0
- package/dist/heading/heading-level.js.map +1 -0
- package/dist/heading/heading.d.ts +2 -0
- package/dist/heading/heading.js +56 -0
- package/dist/heading/heading.js.map +1 -0
- package/dist/heading/utils.d.ts +2 -0
- package/dist/heading/utils.js +1 -0
- package/dist/heading-zY9g_9K-.d.ts +42 -0
- package/dist/heading-zY9g_9K-.d.ts.map +1 -0
- package/dist/hovercard/hovercard-anchor.d.ts +59 -0
- package/dist/hovercard/hovercard-anchor.d.ts.map +1 -0
- package/dist/hovercard/hovercard-anchor.js +106 -0
- package/dist/hovercard/hovercard-anchor.js.map +1 -0
- package/dist/hovercard/hovercard-arrow.d.ts +54 -0
- package/dist/hovercard/hovercard-arrow.d.ts.map +1 -0
- package/dist/hovercard/hovercard-arrow.js +51 -0
- package/dist/hovercard/hovercard-arrow.js.map +1 -0
- package/dist/hovercard/hovercard-context.d.ts +24 -0
- package/dist/hovercard/hovercard-context.d.ts.map +1 -0
- package/dist/hovercard/hovercard-context.js +27 -0
- package/dist/hovercard/hovercard-context.js.map +1 -0
- package/dist/hovercard/hovercard-description.d.ts +51 -0
- package/dist/hovercard/hovercard-description.d.ts.map +1 -0
- package/dist/hovercard/hovercard-description.js +42 -0
- package/dist/hovercard/hovercard-description.js.map +1 -0
- package/dist/hovercard/hovercard-disclosure.d.ts +51 -0
- package/dist/hovercard/hovercard-disclosure.d.ts.map +1 -0
- package/dist/hovercard/hovercard-disclosure.js +122 -0
- package/dist/hovercard/hovercard-disclosure.js.map +1 -0
- package/dist/hovercard/hovercard-dismiss.d.ts +50 -0
- package/dist/hovercard/hovercard-dismiss.d.ts.map +1 -0
- package/dist/hovercard/hovercard-dismiss.js +47 -0
- package/dist/hovercard/hovercard-dismiss.js.map +1 -0
- package/dist/hovercard/hovercard-heading.d.ts +51 -0
- package/dist/hovercard/hovercard-heading.d.ts.map +1 -0
- package/dist/hovercard/hovercard-heading.js +42 -0
- package/dist/hovercard/hovercard-heading.js.map +1 -0
- package/dist/hovercard/hovercard-provider.d.ts +23 -0
- package/dist/hovercard/hovercard-provider.d.ts.map +1 -0
- package/dist/hovercard/hovercard-provider.js +27 -0
- package/dist/hovercard/hovercard-provider.js.map +1 -0
- package/dist/hovercard/hovercard-store.d.ts +2 -0
- package/dist/hovercard/hovercard-store.js +31 -0
- package/dist/hovercard/hovercard-store.js.map +1 -0
- package/dist/hovercard/hovercard.d.ts +80 -0
- package/dist/hovercard/hovercard.d.ts.map +1 -0
- package/dist/hovercard/hovercard.js +240 -0
- package/dist/hovercard/hovercard.js.map +1 -0
- package/dist/hovercard/utils/debug-polygon.d.ts +7 -0
- package/dist/hovercard/utils/debug-polygon.d.ts.map +1 -0
- package/dist/hovercard/utils/debug-polygon.js +33 -0
- package/dist/hovercard/utils/debug-polygon.js.map +1 -0
- package/dist/hovercard/utils/polygon.d.ts +9 -0
- package/dist/hovercard/utils/polygon.d.ts.map +1 -0
- package/dist/hovercard/utils/polygon.js +70 -0
- package/dist/hovercard/utils/polygon.js.map +1 -0
- package/dist/hovercard-store-gIeoQEn_.d.ts +30 -0
- package/dist/hovercard-store-gIeoQEn_.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/menu/menu-arrow.d.ts +52 -0
- package/dist/menu/menu-arrow.d.ts.map +1 -0
- package/dist/menu/menu-arrow.js +49 -0
- package/dist/menu/menu-arrow.js.map +1 -0
- package/dist/menu/menu-bar-provider.d.ts +35 -0
- package/dist/menu/menu-bar-provider.d.ts.map +1 -0
- package/dist/menu/menu-bar-provider.js +42 -0
- package/dist/menu/menu-bar-provider.js.map +1 -0
- package/dist/menu/menu-bar-store.d.ts +25 -0
- package/dist/menu/menu-bar-store.d.ts.map +1 -0
- package/dist/menu/menu-bar-store.js +28 -0
- package/dist/menu/menu-bar-store.js.map +1 -0
- package/dist/menu/menu-bar.d.ts +61 -0
- package/dist/menu/menu-bar.d.ts.map +1 -0
- package/dist/menu/menu-bar.js +66 -0
- package/dist/menu/menu-bar.js.map +1 -0
- package/dist/menu/menu-button-arrow.d.ts +65 -0
- package/dist/menu/menu-button-arrow.d.ts.map +1 -0
- package/dist/menu/menu-button-arrow.js +62 -0
- package/dist/menu/menu-button-arrow.js.map +1 -0
- package/dist/menu/menu-button.d.ts +67 -0
- package/dist/menu/menu-button.d.ts.map +1 -0
- package/dist/menu/menu-button.js +183 -0
- package/dist/menu/menu-button.js.map +1 -0
- package/dist/menu/menu-context.d.ts +47 -0
- package/dist/menu/menu-context.d.ts.map +1 -0
- package/dist/menu/menu-context.js +52 -0
- package/dist/menu/menu-context.js.map +1 -0
- package/dist/menu/menu-description.d.ts +50 -0
- package/dist/menu/menu-description.d.ts.map +1 -0
- package/dist/menu/menu-description.js +42 -0
- package/dist/menu/menu-description.js.map +1 -0
- package/dist/menu/menu-dismiss.d.ts +49 -0
- package/dist/menu/menu-dismiss.d.ts.map +1 -0
- package/dist/menu/menu-dismiss.js +47 -0
- package/dist/menu/menu-dismiss.js.map +1 -0
- package/dist/menu/menu-group-label.d.ts +55 -0
- package/dist/menu/menu-group-label.d.ts.map +1 -0
- package/dist/menu/menu-group-label.js +47 -0
- package/dist/menu/menu-group-label.js.map +1 -0
- package/dist/menu/menu-group.d.ts +61 -0
- package/dist/menu/menu-group.d.ts.map +1 -0
- package/dist/menu/menu-group.js +53 -0
- package/dist/menu/menu-group.js.map +1 -0
- package/dist/menu/menu-heading.d.ts +50 -0
- package/dist/menu/menu-heading.d.ts.map +1 -0
- package/dist/menu/menu-heading.js +42 -0
- package/dist/menu/menu-heading.js.map +1 -0
- package/dist/menu/menu-item-check.d.ts +58 -0
- package/dist/menu/menu-item-check.d.ts.map +1 -0
- package/dist/menu/menu-item-check.js +60 -0
- package/dist/menu/menu-item-check.js.map +1 -0
- package/dist/menu/menu-item-checkbox.d.ts +104 -0
- package/dist/menu/menu-item-checkbox.d.ts.map +1 -0
- package/dist/menu/menu-item-checkbox.js +151 -0
- package/dist/menu/menu-item-checkbox.js.map +1 -0
- package/dist/menu/menu-item-radio.d.ts +91 -0
- package/dist/menu/menu-item-radio.d.ts.map +1 -0
- package/dist/menu/menu-item-radio.js +121 -0
- package/dist/menu/menu-item-radio.js.map +1 -0
- package/dist/menu/menu-item.d.ts +75 -0
- package/dist/menu/menu-item.d.ts.map +1 -0
- package/dist/menu/menu-item.js +122 -0
- package/dist/menu/menu-item.js.map +1 -0
- package/dist/menu/menu-list.d.ts +59 -0
- package/dist/menu/menu-list.d.ts.map +1 -0
- package/dist/menu/menu-list.js +168 -0
- package/dist/menu/menu-list.js.map +1 -0
- package/dist/menu/menu-provider.d.ts +29 -0
- package/dist/menu/menu-provider.d.ts.map +1 -0
- package/dist/menu/menu-provider.js +15 -0
- package/dist/menu/menu-provider.js.map +1 -0
- package/dist/menu/menu-separator.d.ts +59 -0
- package/dist/menu/menu-separator.d.ts.map +1 -0
- package/dist/menu/menu-separator.js +57 -0
- package/dist/menu/menu-separator.js.map +1 -0
- package/dist/menu/menu-store.d.ts +2 -0
- package/dist/menu/menu-store.js +40 -0
- package/dist/menu/menu-store.js.map +1 -0
- package/dist/menu/menu.d.ts +49 -0
- package/dist/menu/menu.d.ts.map +1 -0
- package/dist/menu/menu.js +169 -0
- package/dist/menu/menu.js.map +1 -0
- package/dist/menu-store-0CKKmNek.d.ts +83 -0
- package/dist/menu-store-0CKKmNek.d.ts.map +1 -0
- package/dist/menubar/menubar-context.d.ts +25 -0
- package/dist/menubar/menubar-context.d.ts.map +1 -0
- package/dist/menubar/menubar-context.js +29 -0
- package/dist/menubar/menubar-context.js.map +1 -0
- package/dist/menubar/menubar-provider.d.ts +37 -0
- package/dist/menubar/menubar-provider.d.ts.map +1 -0
- package/dist/menubar/menubar-provider.js +41 -0
- package/dist/menubar/menubar-provider.js.map +1 -0
- package/dist/menubar/menubar-store.d.ts +2 -0
- package/dist/menubar/menubar-store.js +27 -0
- package/dist/menubar/menubar-store.js.map +1 -0
- package/dist/menubar/menubar.d.ts +71 -0
- package/dist/menubar/menubar.d.ts.map +1 -0
- package/dist/menubar/menubar.js +88 -0
- package/dist/menubar/menubar.js.map +1 -0
- package/dist/menubar-store-3h0eNIbS.d.ts +26 -0
- package/dist/menubar-store-3h0eNIbS.d.ts.map +1 -0
- package/dist/popover/popover-anchor.d.ts +2 -0
- package/dist/popover/popover-anchor.js +45 -0
- package/dist/popover/popover-anchor.js.map +1 -0
- package/dist/popover/popover-arrow-path.d.ts +5 -0
- package/dist/popover/popover-arrow-path.d.ts.map +1 -0
- package/dist/popover/popover-arrow-path.js +7 -0
- package/dist/popover/popover-arrow-path.js.map +1 -0
- package/dist/popover/popover-arrow.d.ts +65 -0
- package/dist/popover/popover-arrow.d.ts.map +1 -0
- package/dist/popover/popover-arrow.js +160 -0
- package/dist/popover/popover-arrow.js.map +1 -0
- package/dist/popover/popover-context.d.ts +24 -0
- package/dist/popover/popover-context.d.ts.map +1 -0
- package/dist/popover/popover-context.js +27 -0
- package/dist/popover/popover-context.js.map +1 -0
- package/dist/popover/popover-description.d.ts +2 -0
- package/dist/popover/popover-description.js +42 -0
- package/dist/popover/popover-description.js.map +1 -0
- package/dist/popover/popover-disclosure-arrow.d.ts +62 -0
- package/dist/popover/popover-disclosure-arrow.d.ts.map +1 -0
- package/dist/popover/popover-disclosure-arrow.js +81 -0
- package/dist/popover/popover-disclosure-arrow.js.map +1 -0
- package/dist/popover/popover-disclosure.d.ts +38 -0
- package/dist/popover/popover-disclosure.d.ts.map +1 -0
- package/dist/popover/popover-disclosure.js +66 -0
- package/dist/popover/popover-disclosure.js.map +1 -0
- package/dist/popover/popover-dismiss.d.ts +2 -0
- package/dist/popover/popover-dismiss.js +47 -0
- package/dist/popover/popover-dismiss.js.map +1 -0
- package/dist/popover/popover-heading.d.ts +2 -0
- package/dist/popover/popover-heading.js +42 -0
- package/dist/popover/popover-heading.js.map +1 -0
- package/dist/popover/popover-provider.d.ts +23 -0
- package/dist/popover/popover-provider.d.ts.map +1 -0
- package/dist/popover/popover-provider.js +27 -0
- package/dist/popover/popover-provider.js.map +1 -0
- package/dist/popover/popover-store.d.ts +2 -0
- package/dist/popover/popover-store.js +30 -0
- package/dist/popover/popover-store.js.map +1 -0
- package/dist/popover/popover.d.ts +2 -0
- package/dist/popover/popover.js +312 -0
- package/dist/popover/popover.js.map +1 -0
- package/dist/popover-CCqiRKqg.d.ts +181 -0
- package/dist/popover-CCqiRKqg.d.ts.map +1 -0
- package/dist/popover-anchor-PgfeXyzs.d.ts +47 -0
- package/dist/popover-anchor-PgfeXyzs.d.ts.map +1 -0
- package/dist/popover-description-DU753dah.d.ts +51 -0
- package/dist/popover-description-DU753dah.d.ts.map +1 -0
- package/dist/popover-dismiss-DPeI6Zse.d.ts +50 -0
- package/dist/popover-dismiss-DPeI6Zse.d.ts.map +1 -0
- package/dist/popover-heading-DGsr6D5W.d.ts +51 -0
- package/dist/popover-heading-DGsr6D5W.d.ts.map +1 -0
- package/dist/popover-store-Bc-l5VVO.d.ts +29 -0
- package/dist/popover-store-Bc-l5VVO.d.ts.map +1 -0
- package/dist/portal/portal-context.d.ts +21 -0
- package/dist/portal/portal-context.d.ts.map +1 -0
- package/dist/portal/portal-context.js +24 -0
- package/dist/portal/portal-context.js.map +1 -0
- package/dist/portal/portal.d.ts +2 -0
- package/dist/portal/portal.js +242 -0
- package/dist/portal/portal.js.map +1 -0
- package/dist/portal-CMBWiayp.d.ts +149 -0
- package/dist/portal-CMBWiayp.d.ts.map +1 -0
- package/dist/radio/radio-context.d.ts +24 -0
- package/dist/radio/radio-context.d.ts.map +1 -0
- package/dist/radio/radio-context.js +27 -0
- package/dist/radio/radio-context.js.map +1 -0
- package/dist/radio/radio-group.d.ts +51 -0
- package/dist/radio/radio-group.d.ts.map +1 -0
- package/dist/radio/radio-group.js +60 -0
- package/dist/radio/radio-group.js.map +1 -0
- package/dist/radio/radio-provider.d.ts +25 -0
- package/dist/radio/radio-provider.d.ts.map +1 -0
- package/dist/radio/radio-provider.js +29 -0
- package/dist/radio/radio-provider.js.map +1 -0
- package/dist/radio/radio-store.d.ts +2 -0
- package/dist/radio/radio-store.js +33 -0
- package/dist/radio/radio-store.js.map +1 -0
- package/dist/radio/radio.d.ts +76 -0
- package/dist/radio/radio.d.ts.map +1 -0
- package/dist/radio/radio.js +143 -0
- package/dist/radio/radio.js.map +1 -0
- package/dist/radio-store-DOZ_1RSk.d.ts +36 -0
- package/dist/radio-store-DOZ_1RSk.d.ts.map +1 -0
- package/dist/role/role.d.ts +34 -0
- package/dist/role/role.d.ts.map +1 -0
- package/dist/role/role.js +68 -0
- package/dist/role/role.js.map +1 -0
- package/dist/select/select-arrow.d.ts +60 -0
- package/dist/select/select-arrow.d.ts.map +1 -0
- package/dist/select/select-arrow.js +58 -0
- package/dist/select/select-arrow.js.map +1 -0
- package/dist/select/select-context.d.ts +27 -0
- package/dist/select/select-context.d.ts.map +1 -0
- package/dist/select/select-context.js +31 -0
- package/dist/select/select-context.js.map +1 -0
- package/dist/select/select-dismiss.d.ts +59 -0
- package/dist/select/select-dismiss.d.ts.map +1 -0
- package/dist/select/select-dismiss.js +56 -0
- package/dist/select/select-dismiss.js.map +1 -0
- package/dist/select/select-group-label.d.ts +61 -0
- package/dist/select/select-group-label.d.ts.map +1 -0
- package/dist/select/select-group-label.js +52 -0
- package/dist/select/select-group-label.js.map +1 -0
- package/dist/select/select-group.d.ts +62 -0
- package/dist/select/select-group.d.ts.map +1 -0
- package/dist/select/select-group.js +53 -0
- package/dist/select/select-group.js.map +1 -0
- package/dist/select/select-heading.d.ts +59 -0
- package/dist/select/select-heading.d.ts.map +1 -0
- package/dist/select/select-heading.js +62 -0
- package/dist/select/select-heading.js.map +1 -0
- package/dist/select/select-item-check.d.ts +59 -0
- package/dist/select/select-item-check.d.ts.map +1 -0
- package/dist/select/select-item-check.js +61 -0
- package/dist/select/select-item-check.js.map +1 -0
- package/dist/select/select-item-offscreen.d.ts +37 -0
- package/dist/select/select-item-offscreen.d.ts.map +1 -0
- package/dist/select/select-item-offscreen.js +38 -0
- package/dist/select/select-item-offscreen.js.map +1 -0
- package/dist/select/select-item.d.ts +108 -0
- package/dist/select/select-item.d.ts.map +1 -0
- package/dist/select/select-item.js +143 -0
- package/dist/select/select-item.js.map +1 -0
- package/dist/select/select-label.d.ts +55 -0
- package/dist/select/select-label.d.ts.map +1 -0
- package/dist/select/select-label.js +70 -0
- package/dist/select/select-label.js.map +1 -0
- package/dist/select/select-list.d.ts +80 -0
- package/dist/select/select-list.d.ts.map +1 -0
- package/dist/select/select-list.js +143 -0
- package/dist/select/select-list.js.map +1 -0
- package/dist/select/select-popover.d.ts +44 -0
- package/dist/select/select-popover.d.ts.map +1 -0
- package/dist/select/select-popover.js +59 -0
- package/dist/select/select-popover.js.map +1 -0
- package/dist/select/select-provider.d.ts +30 -0
- package/dist/select/select-provider.d.ts.map +1 -0
- package/dist/select/select-provider.js +15 -0
- package/dist/select/select-provider.js.map +1 -0
- package/dist/select/select-renderer.d.ts +44 -0
- package/dist/select/select-renderer.d.ts.map +1 -0
- package/dist/select/select-renderer.js +61 -0
- package/dist/select/select-renderer.js.map +1 -0
- package/dist/select/select-row.d.ts +63 -0
- package/dist/select/select-row.d.ts.map +1 -0
- package/dist/select/select-row.js +67 -0
- package/dist/select/select-row.js.map +1 -0
- package/dist/select/select-separator.d.ts +60 -0
- package/dist/select/select-separator.d.ts.map +1 -0
- package/dist/select/select-separator.js +57 -0
- package/dist/select/select-separator.js.map +1 -0
- package/dist/select/select-store.d.ts +2 -0
- package/dist/select/select-store.js +31 -0
- package/dist/select/select-store.js.map +1 -0
- package/dist/select/select-value.d.ts +84 -0
- package/dist/select/select-value.d.ts.map +1 -0
- package/dist/select/select-value.js +18 -0
- package/dist/select/select-value.js.map +1 -0
- package/dist/select/select.d.ts +89 -0
- package/dist/select/select.d.ts.map +1 -0
- package/dist/select/select.js +211 -0
- package/dist/select/select.js.map +1 -0
- package/dist/select-store-BsLTAyKh.d.ts +68 -0
- package/dist/select-store-BsLTAyKh.d.ts.map +1 -0
- package/dist/separator/separator.d.ts +2 -0
- package/dist/separator/separator.js +36 -0
- package/dist/separator/separator.js.map +1 -0
- package/dist/separator--ozQfMcK.d.ts +36 -0
- package/dist/separator--ozQfMcK.d.ts.map +1 -0
- package/dist/store.d.ts +1 -0
- package/dist/store.js +2 -0
- package/dist/tab/tab-context.d.ts +24 -0
- package/dist/tab/tab-context.d.ts.map +1 -0
- package/dist/tab/tab-context.js +27 -0
- package/dist/tab/tab-context.js.map +1 -0
- package/dist/tab/tab-list.d.ts +55 -0
- package/dist/tab/tab-list.d.ts.map +1 -0
- package/dist/tab/tab-list.js +71 -0
- package/dist/tab/tab-list.js.map +1 -0
- package/dist/tab/tab-panel.d.ts +122 -0
- package/dist/tab/tab-panel.d.ts.map +1 -0
- package/dist/tab/tab-panel.js +169 -0
- package/dist/tab/tab-panel.js.map +1 -0
- package/dist/tab/tab-provider.d.ts +26 -0
- package/dist/tab/tab-provider.d.ts.map +1 -0
- package/dist/tab/tab-provider.js +30 -0
- package/dist/tab/tab-provider.js.map +1 -0
- package/dist/tab/tab-store.d.ts +77 -0
- package/dist/tab/tab-store.d.ts.map +1 -0
- package/dist/tab/tab-store.js +55 -0
- package/dist/tab/tab-store.js.map +1 -0
- package/dist/tab/tab.d.ts +56 -0
- package/dist/tab/tab.d.ts.map +1 -0
- package/dist/tab/tab.js +115 -0
- package/dist/tab/tab.js.map +1 -0
- package/dist/tag/tag-context.d.ts +26 -0
- package/dist/tag/tag-context.d.ts.map +1 -0
- package/dist/tag/tag-context.js +30 -0
- package/dist/tag/tag-context.js.map +1 -0
- package/dist/tag/tag-input.d.ts +126 -0
- package/dist/tag/tag-input.d.ts.map +1 -0
- package/dist/tag/tag-input.js +162 -0
- package/dist/tag/tag-input.js.map +1 -0
- package/dist/tag/tag-list-label.d.ts +59 -0
- package/dist/tag/tag-list-label.d.ts.map +1 -0
- package/dist/tag/tag-list-label.js +62 -0
- package/dist/tag/tag-list-label.js.map +1 -0
- package/dist/tag/tag-list.d.ts +62 -0
- package/dist/tag/tag-list.d.ts.map +1 -0
- package/dist/tag/tag-list.js +127 -0
- package/dist/tag/tag-list.js.map +1 -0
- package/dist/tag/tag-provider.d.ts +34 -0
- package/dist/tag/tag-provider.d.ts.map +1 -0
- package/dist/tag/tag-provider.js +38 -0
- package/dist/tag/tag-provider.js.map +1 -0
- package/dist/tag/tag-remove.d.ts +71 -0
- package/dist/tag/tag-remove.d.ts.map +1 -0
- package/dist/tag/tag-remove.js +102 -0
- package/dist/tag/tag-remove.js.map +1 -0
- package/dist/tag/tag-store.d.ts +2 -0
- package/dist/tag/tag-store.js +38 -0
- package/dist/tag/tag-store.js.map +1 -0
- package/dist/tag/tag-value.d.ts +49 -0
- package/dist/tag/tag-value.d.ts.map +1 -0
- package/dist/tag/tag-value.js +40 -0
- package/dist/tag/tag-value.js.map +1 -0
- package/dist/tag/tag-values.d.ts +60 -0
- package/dist/tag/tag-values.d.ts.map +1 -0
- package/dist/tag/tag-values.js +50 -0
- package/dist/tag/tag-values.js.map +1 -0
- package/dist/tag/tag.d.ts +78 -0
- package/dist/tag/tag.d.ts.map +1 -0
- package/dist/tag/tag.js +114 -0
- package/dist/tag/tag.js.map +1 -0
- package/dist/tag/utils.d.ts +5 -0
- package/dist/tag/utils.d.ts.map +1 -0
- package/dist/tag/utils.js +15 -0
- package/dist/tag/utils.js.map +1 -0
- package/dist/tag-store-xANOvuGo.d.ts +49 -0
- package/dist/tag-store-xANOvuGo.d.ts.map +1 -0
- package/dist/toolbar/toolbar-container.d.ts +41 -0
- package/dist/toolbar/toolbar-container.d.ts.map +1 -0
- package/dist/toolbar/toolbar-container.js +53 -0
- package/dist/toolbar/toolbar-container.js.map +1 -0
- package/dist/toolbar/toolbar-context.d.ts +24 -0
- package/dist/toolbar/toolbar-context.d.ts.map +1 -0
- package/dist/toolbar/toolbar-context.js +27 -0
- package/dist/toolbar/toolbar-context.js.map +1 -0
- package/dist/toolbar/toolbar-input.d.ts +39 -0
- package/dist/toolbar/toolbar-input.d.ts.map +1 -0
- package/dist/toolbar/toolbar-input.js +47 -0
- package/dist/toolbar/toolbar-input.js.map +1 -0
- package/dist/toolbar/toolbar-item.d.ts +47 -0
- package/dist/toolbar/toolbar-item.d.ts.map +1 -0
- package/dist/toolbar/toolbar-item.js +45 -0
- package/dist/toolbar/toolbar-item.js.map +1 -0
- package/dist/toolbar/toolbar-provider.d.ts +26 -0
- package/dist/toolbar/toolbar-provider.d.ts.map +1 -0
- package/dist/toolbar/toolbar-provider.js +30 -0
- package/dist/toolbar/toolbar-provider.js.map +1 -0
- package/dist/toolbar/toolbar-separator.d.ts +51 -0
- package/dist/toolbar/toolbar-separator.d.ts.map +1 -0
- package/dist/toolbar/toolbar-separator.js +49 -0
- package/dist/toolbar/toolbar-separator.js.map +1 -0
- package/dist/toolbar/toolbar-store.d.ts +2 -0
- package/dist/toolbar/toolbar-store.js +31 -0
- package/dist/toolbar/toolbar-store.js.map +1 -0
- package/dist/toolbar/toolbar.d.ts +50 -0
- package/dist/toolbar/toolbar.d.ts.map +1 -0
- package/dist/toolbar/toolbar.js +66 -0
- package/dist/toolbar/toolbar.js.map +1 -0
- package/dist/toolbar-store-Cs-9cGHx.d.ts +30 -0
- package/dist/toolbar-store-Cs-9cGHx.d.ts.map +1 -0
- package/dist/tooltip/tooltip-anchor.d.ts +53 -0
- package/dist/tooltip/tooltip-anchor.d.ts.map +1 -0
- package/dist/tooltip/tooltip-anchor.js +121 -0
- package/dist/tooltip/tooltip-anchor.js.map +1 -0
- package/dist/tooltip/tooltip-arrow.d.ts +54 -0
- package/dist/tooltip/tooltip-arrow.d.ts.map +1 -0
- package/dist/tooltip/tooltip-arrow.js +54 -0
- package/dist/tooltip/tooltip-arrow.js.map +1 -0
- package/dist/tooltip/tooltip-context.d.ts +24 -0
- package/dist/tooltip/tooltip-context.d.ts.map +1 -0
- package/dist/tooltip/tooltip-context.js +27 -0
- package/dist/tooltip/tooltip-context.js.map +1 -0
- package/dist/tooltip/tooltip-provider.d.ts +23 -0
- package/dist/tooltip/tooltip-provider.d.ts.map +1 -0
- package/dist/tooltip/tooltip-provider.js +27 -0
- package/dist/tooltip/tooltip-provider.js.map +1 -0
- package/dist/tooltip/tooltip-store.d.ts +30 -0
- package/dist/tooltip/tooltip-store.d.ts.map +1 -0
- package/dist/tooltip/tooltip-store.js +30 -0
- package/dist/tooltip/tooltip-store.js.map +1 -0
- package/dist/tooltip/tooltip.d.ts +61 -0
- package/dist/tooltip/tooltip.d.ts.map +1 -0
- package/dist/tooltip/tooltip.js +81 -0
- package/dist/tooltip/tooltip.js.map +1 -0
- package/dist/utils-DUF1aMov.d.ts +5 -0
- package/dist/utils-DUF1aMov.d.ts.map +1 -0
- package/dist/visually-hidden/visually-hidden.d.ts +37 -0
- package/dist/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/dist/visually-hidden/visually-hidden.js +53 -0
- package/dist/visually-hidden/visually-hidden.js.map +1 -0
- package/license +21 -0
- package/package.json +936 -0
- package/readme.md +19 -0
- package/src/button/button.tsx +76 -0
- package/src/checkbox/checkbox-check.tsx +116 -0
- package/src/checkbox/checkbox-checked-context.tsx +3 -0
- package/src/checkbox/checkbox-context.tsx +27 -0
- package/src/checkbox/checkbox-provider.tsx +53 -0
- package/src/checkbox/checkbox-store.ts +76 -0
- package/src/checkbox/checkbox.tsx +271 -0
- package/src/collection/collection-context.tsx +27 -0
- package/src/collection/collection-item-offscreen.tsx +157 -0
- package/src/collection/collection-item.tsx +136 -0
- package/src/collection/collection-provider.tsx +47 -0
- package/src/collection/collection-renderer.tsx +994 -0
- package/src/collection/collection-store.ts +84 -0
- package/src/collection/collection.tsx +93 -0
- package/src/combobox/combobox-cancel.tsx +153 -0
- package/src/combobox/combobox-context.tsx +49 -0
- package/src/combobox/combobox-disclosure.tsx +162 -0
- package/src/combobox/combobox-group-label.tsx +74 -0
- package/src/combobox/combobox-group.tsx +100 -0
- package/src/combobox/combobox-item-check.tsx +83 -0
- package/src/combobox/combobox-item-offscreen.tsx +87 -0
- package/src/combobox/combobox-item-value.tsx +231 -0
- package/src/combobox/combobox-item.tsx +363 -0
- package/src/combobox/combobox-label.tsx +89 -0
- package/src/combobox/combobox-list.tsx +176 -0
- package/src/combobox/combobox-popover.tsx +179 -0
- package/src/combobox/combobox-provider.tsx +50 -0
- package/src/combobox/combobox-row.tsx +102 -0
- package/src/combobox/combobox-separator.tsx +90 -0
- package/src/combobox/combobox-store.ts +168 -0
- package/src/combobox/combobox-value.tsx +63 -0
- package/src/combobox/combobox.tsx +900 -0
- package/src/command/command.tsx +215 -0
- package/src/composite/composite-container.tsx +278 -0
- package/src/composite/composite-context.tsx +53 -0
- package/src/composite/composite-group-label.tsx +73 -0
- package/src/composite/composite-group.tsx +77 -0
- package/src/composite/composite-hover.tsx +230 -0
- package/src/composite/composite-input.tsx +147 -0
- package/src/composite/composite-item-offscreen.tsx +112 -0
- package/src/composite/composite-item.tsx +567 -0
- package/src/composite/composite-overflow-disclosure.ts +117 -0
- package/src/composite/composite-overflow-store.ts +61 -0
- package/src/composite/composite-overflow.tsx +123 -0
- package/src/composite/composite-provider.tsx +47 -0
- package/src/composite/composite-renderer.tsx +231 -0
- package/src/composite/composite-row.tsx +133 -0
- package/src/composite/composite-separator.tsx +96 -0
- package/src/composite/composite-store.ts +101 -0
- package/src/composite/composite-typeahead.tsx +246 -0
- package/src/composite/composite.tsx +592 -0
- package/src/composite/utils.ts +121 -0
- package/src/dialog/dialog-backdrop.tsx +71 -0
- package/src/dialog/dialog-context.tsx +43 -0
- package/src/dialog/dialog-description.tsx +86 -0
- package/src/dialog/dialog-disclosure.tsx +84 -0
- package/src/dialog/dialog-dismiss.tsx +113 -0
- package/src/dialog/dialog-heading.tsx +88 -0
- package/src/dialog/dialog-provider.tsx +28 -0
- package/src/dialog/dialog-store.ts +51 -0
- package/src/dialog/dialog.tsx +866 -0
- package/src/dialog/utils/disable-accessibility-tree-outside.ts +30 -0
- package/src/dialog/utils/disable-tree.ts +81 -0
- package/src/dialog/utils/is-backdrop.ts +12 -0
- package/src/dialog/utils/is-focus-trap.ts +11 -0
- package/src/dialog/utils/mark-tree-outside.ts +67 -0
- package/src/dialog/utils/orchestrate.ts +123 -0
- package/src/dialog/utils/prepend-hidden-dismiss.ts +35 -0
- package/src/dialog/utils/supports-inert.ts +5 -0
- package/src/dialog/utils/use-hide-on-interact-outside.ts +181 -0
- package/src/dialog/utils/use-nested-dialogs.tsx +55 -0
- package/src/dialog/utils/use-prevent-body-scroll.ts +86 -0
- package/src/dialog/utils/use-previous-mouse-down-ref.ts +19 -0
- package/src/dialog/utils/use-root-dialog.ts +49 -0
- package/src/dialog/utils/walk-tree-outside.ts +85 -0
- package/src/disclosure/disclosure-content.tsx +344 -0
- package/src/disclosure/disclosure-context.tsx +27 -0
- package/src/disclosure/disclosure-provider.tsx +29 -0
- package/src/disclosure/disclosure-store.ts +85 -0
- package/src/disclosure/disclosure.tsx +144 -0
- package/src/focus-trap/focus-trap-region.tsx +112 -0
- package/src/focus-trap/focus-trap.tsx +60 -0
- package/src/focusable/focusable-container.tsx +75 -0
- package/src/focusable/focusable-context.tsx +3 -0
- package/src/focusable/focusable.tsx +559 -0
- package/src/form/form-checkbox.tsx +106 -0
- package/src/form/form-context.tsx +34 -0
- package/src/form/form-control.tsx +227 -0
- package/src/form/form-description.tsx +142 -0
- package/src/form/form-error.tsx +156 -0
- package/src/form/form-field.tsx +94 -0
- package/src/form/form-group-label.tsx +79 -0
- package/src/form/form-group.tsx +79 -0
- package/src/form/form-input.tsx +104 -0
- package/src/form/form-label.tsx +192 -0
- package/src/form/form-provider.tsx +49 -0
- package/src/form/form-push.tsx +200 -0
- package/src/form/form-radio-group.tsx +93 -0
- package/src/form/form-radio.tsx +122 -0
- package/src/form/form-remove.tsx +198 -0
- package/src/form/form-reset.tsx +85 -0
- package/src/form/form-store.ts +195 -0
- package/src/form/form-submit.tsx +93 -0
- package/src/form/form.tsx +249 -0
- package/src/group/group-label-context.tsx +6 -0
- package/src/group/group-label.tsx +75 -0
- package/src/group/group.tsx +69 -0
- package/src/heading/heading-context.tsx +4 -0
- package/src/heading/heading-level.tsx +42 -0
- package/src/heading/heading.tsx +81 -0
- package/src/heading/utils.ts +1 -0
- package/src/hovercard/hovercard-anchor.tsx +195 -0
- package/src/hovercard/hovercard-arrow.tsx +74 -0
- package/src/hovercard/hovercard-context.tsx +34 -0
- package/src/hovercard/hovercard-description.tsx +69 -0
- package/src/hovercard/hovercard-disclosure.tsx +196 -0
- package/src/hovercard/hovercard-dismiss.tsx +70 -0
- package/src/hovercard/hovercard-heading.tsx +68 -0
- package/src/hovercard/hovercard-provider.tsx +29 -0
- package/src/hovercard/hovercard-store.ts +58 -0
- package/src/hovercard/hovercard.tsx +445 -0
- package/src/hovercard/utils/__tests__/polygon-test.ts +66 -0
- package/src/hovercard/utils/debug-polygon.ts +37 -0
- package/src/hovercard/utils/polygon.ts +96 -0
- package/src/index.ts +1 -0
- package/src/menu/menu-arrow.tsx +69 -0
- package/src/menu/menu-bar-provider.tsx +44 -0
- package/src/menu/menu-bar-store.ts +54 -0
- package/src/menu/menu-bar.tsx +84 -0
- package/src/menu/menu-button-arrow.tsx +85 -0
- package/src/menu/menu-button.tsx +338 -0
- package/src/menu/menu-context.tsx +76 -0
- package/src/menu/menu-description.tsx +67 -0
- package/src/menu/menu-dismiss.tsx +69 -0
- package/src/menu/menu-group-label.tsx +72 -0
- package/src/menu/menu-group.tsx +76 -0
- package/src/menu/menu-heading.tsx +67 -0
- package/src/menu/menu-item-check.tsx +79 -0
- package/src/menu/menu-item-checkbox.tsx +227 -0
- package/src/menu/menu-item-radio.tsx +198 -0
- package/src/menu/menu-item.tsx +223 -0
- package/src/menu/menu-list.tsx +230 -0
- package/src/menu/menu-provider.tsx +42 -0
- package/src/menu/menu-separator.tsx +79 -0
- package/src/menu/menu-store.ts +155 -0
- package/src/menu/menu.tsx +274 -0
- package/src/menubar/menubar-context.tsx +39 -0
- package/src/menubar/menubar-provider.tsx +43 -0
- package/src/menubar/menubar-store.ts +48 -0
- package/src/menubar/menubar.tsx +145 -0
- package/src/popover/popover-anchor.tsx +74 -0
- package/src/popover/popover-arrow-path.ts +21 -0
- package/src/popover/popover-arrow.tsx +228 -0
- package/src/popover/popover-context.tsx +34 -0
- package/src/popover/popover-description.tsx +69 -0
- package/src/popover/popover-disclosure-arrow.tsx +135 -0
- package/src/popover/popover-disclosure.tsx +101 -0
- package/src/popover/popover-dismiss.tsx +70 -0
- package/src/popover/popover-heading.tsx +68 -0
- package/src/popover/popover-provider.tsx +29 -0
- package/src/popover/popover-store.ts +53 -0
- package/src/popover/popover.tsx +649 -0
- package/src/portal/portal-context.tsx +19 -0
- package/src/portal/portal.tsx +493 -0
- package/src/radio/radio-context.tsx +34 -0
- package/src/radio/radio-group.tsx +103 -0
- package/src/radio/radio-provider.tsx +29 -0
- package/src/radio/radio-store.ts +64 -0
- package/src/radio/radio.tsx +242 -0
- package/src/role/role.tsx +88 -0
- package/src/select/select-arrow.tsx +80 -0
- package/src/select/select-context.tsx +46 -0
- package/src/select/select-dismiss.tsx +79 -0
- package/src/select/select-group-label.tsx +78 -0
- package/src/select/select-group.tsx +79 -0
- package/src/select/select-heading.tsx +98 -0
- package/src/select/select-item-check.tsx +80 -0
- package/src/select/select-item-offscreen.tsx +59 -0
- package/src/select/select-item.tsx +294 -0
- package/src/select/select-label.tsx +117 -0
- package/src/select/select-list.tsx +251 -0
- package/src/select/select-popover.tsx +67 -0
- package/src/select/select-provider.tsx +45 -0
- package/src/select/select-renderer.tsx +160 -0
- package/src/select/select-row.tsx +97 -0
- package/src/select/select-separator.tsx +80 -0
- package/src/select/select-store.ts +139 -0
- package/src/select/select-value.tsx +108 -0
- package/src/select/select.tsx +371 -0
- package/src/separator/separator.tsx +54 -0
- package/src/store.ts +1 -0
- package/src/tab/tab-context.tsx +34 -0
- package/src/tab/tab-list.tsx +120 -0
- package/src/tab/tab-panel.tsx +314 -0
- package/src/tab/tab-provider.tsx +30 -0
- package/src/tab/tab-store.ts +124 -0
- package/src/tab/tab.tsx +208 -0
- package/src/tag/tag-context.tsx +40 -0
- package/src/tag/tag-input.tsx +321 -0
- package/src/tag/tag-list-label.tsx +102 -0
- package/src/tag/tag-list.tsx +210 -0
- package/src/tag/tag-provider.tsx +38 -0
- package/src/tag/tag-remove.tsx +174 -0
- package/src/tag/tag-store.ts +72 -0
- package/src/tag/tag-value.tsx +63 -0
- package/src/tag/tag-values.tsx +74 -0
- package/src/tag/tag.tsx +199 -0
- package/src/tag/utils.ts +12 -0
- package/src/toolbar/toolbar-container.tsx +67 -0
- package/src/toolbar/toolbar-context.tsx +34 -0
- package/src/toolbar/toolbar-input.tsx +64 -0
- package/src/toolbar/toolbar-item.tsx +72 -0
- package/src/toolbar/toolbar-provider.tsx +32 -0
- package/src/toolbar/toolbar-separator.tsx +71 -0
- package/src/toolbar/toolbar-store.ts +52 -0
- package/src/toolbar/toolbar.tsx +119 -0
- package/src/tooltip/tooltip-anchor.tsx +210 -0
- package/src/tooltip/tooltip-arrow.tsx +84 -0
- package/src/tooltip/tooltip-context.tsx +34 -0
- package/src/tooltip/tooltip-provider.tsx +29 -0
- package/src/tooltip/tooltip-store.ts +53 -0
- package/src/tooltip/tooltip.tsx +153 -0
- package/src/visually-hidden/visually-hidden.tsx +67 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { FocusableContext } from "./focusable-context.js";
|
|
3
|
+
import { createElement, createHook, forwardRef, useEvent, useMergeRefs, useMetadataProps, useTagName } from "@ariakit/react-utils";
|
|
4
|
+
import { addGlobalEventListener, disabledFromProps, hasFocus, isFocusEventOutside, isFocusable, isSafari, isSelfTarget, queueBeforeEvent, removeUndefinedValues } from "@ariakit/utils";
|
|
5
|
+
import { useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
6
|
+
//#region src/focusable/focusable.tsx
|
|
7
|
+
const TagName = "div";
|
|
8
|
+
const accessibleWhenDisabledSymbol = Symbol("accessibleWhenDisabled");
|
|
9
|
+
const isSafariBrowser = isSafari();
|
|
10
|
+
const alwaysFocusVisibleInputTypes = [
|
|
11
|
+
"text",
|
|
12
|
+
"search",
|
|
13
|
+
"url",
|
|
14
|
+
"tel",
|
|
15
|
+
"email",
|
|
16
|
+
"password",
|
|
17
|
+
"number",
|
|
18
|
+
"date",
|
|
19
|
+
"month",
|
|
20
|
+
"week",
|
|
21
|
+
"time",
|
|
22
|
+
"datetime",
|
|
23
|
+
"datetime-local"
|
|
24
|
+
];
|
|
25
|
+
function isAlwaysFocusVisible(element) {
|
|
26
|
+
const { tagName, readOnly, type } = element;
|
|
27
|
+
if (tagName === "TEXTAREA" && !readOnly) return true;
|
|
28
|
+
if (tagName === "SELECT" && !readOnly) return true;
|
|
29
|
+
if (tagName === "INPUT" && !readOnly) return alwaysFocusVisibleInputTypes.includes(type);
|
|
30
|
+
if (element.isContentEditable) return true;
|
|
31
|
+
if (element.getAttribute("role") === "combobox" && element.dataset.name) return true;
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function isNativeTabbable(tagName) {
|
|
35
|
+
if (!tagName) return true;
|
|
36
|
+
return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a";
|
|
37
|
+
}
|
|
38
|
+
function supportsDisabledAttribute(tagName) {
|
|
39
|
+
if (!tagName) return true;
|
|
40
|
+
return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea";
|
|
41
|
+
}
|
|
42
|
+
const buttonInputTypes = [
|
|
43
|
+
"button",
|
|
44
|
+
"color",
|
|
45
|
+
"file",
|
|
46
|
+
"image",
|
|
47
|
+
"reset",
|
|
48
|
+
"submit"
|
|
49
|
+
];
|
|
50
|
+
function needsSafariTabIndex(tagName, inputType) {
|
|
51
|
+
if (tagName === "button") return true;
|
|
52
|
+
if (tagName === "input" && inputType) {
|
|
53
|
+
if (inputType === "checkbox" || inputType === "radio") return true;
|
|
54
|
+
return buttonInputTypes.includes(inputType);
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
function getTabIndex({ focusable, trulyDisabled, nativeTabbable, supportsDisabled, safariTabIndex, tabIndexProp }) {
|
|
59
|
+
if (!focusable) return tabIndexProp;
|
|
60
|
+
if (trulyDisabled) {
|
|
61
|
+
if (nativeTabbable && !supportsDisabled) return -1;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (nativeTabbable) {
|
|
65
|
+
if (safariTabIndex && tabIndexProp == null) return 0;
|
|
66
|
+
return tabIndexProp;
|
|
67
|
+
}
|
|
68
|
+
return tabIndexProp ?? 0;
|
|
69
|
+
}
|
|
70
|
+
function useDisableEvent(onEvent, disabled) {
|
|
71
|
+
return useEvent((event) => {
|
|
72
|
+
onEvent?.(event);
|
|
73
|
+
if (event.defaultPrevented) return;
|
|
74
|
+
if (disabled) {
|
|
75
|
+
event.stopPropagation();
|
|
76
|
+
event.preventDefault();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
let hasInstalledGlobalEventListeners = false;
|
|
81
|
+
let isKeyboardModality = true;
|
|
82
|
+
function onGlobalMouseDown(event) {
|
|
83
|
+
const target = event.target;
|
|
84
|
+
if (target && "hasAttribute" in target) {
|
|
85
|
+
if (!target.hasAttribute("data-focus-visible")) isKeyboardModality = false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function onGlobalKeyDown(event) {
|
|
89
|
+
if (event.metaKey) return;
|
|
90
|
+
if (event.ctrlKey) return;
|
|
91
|
+
if (event.altKey) return;
|
|
92
|
+
isKeyboardModality = true;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Returns props to create a `Focusable` component.
|
|
96
|
+
* @see https://ariakit.com/components/focusable
|
|
97
|
+
* @example
|
|
98
|
+
* ```jsx
|
|
99
|
+
* const props = useFocusable();
|
|
100
|
+
* <Role {...props}>Focusable</Role>
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
const useFocusable = createHook(function useFocusable({ focusable = true, accessibleWhenDisabled, autoFocus, onFocusVisible, ...props }) {
|
|
104
|
+
const ref = useRef(null);
|
|
105
|
+
const [parentAccessibleWhenDisabled, metadataProps] = useMetadataProps(props, accessibleWhenDisabledSymbol, accessibleWhenDisabled);
|
|
106
|
+
accessibleWhenDisabled ??= parentAccessibleWhenDisabled;
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
if (!focusable) return;
|
|
109
|
+
if (hasInstalledGlobalEventListeners) return;
|
|
110
|
+
addGlobalEventListener("mousedown", onGlobalMouseDown, true);
|
|
111
|
+
addGlobalEventListener("keydown", onGlobalKeyDown, true);
|
|
112
|
+
hasInstalledGlobalEventListeners = true;
|
|
113
|
+
}, [focusable]);
|
|
114
|
+
const disabled = focusable && disabledFromProps(props);
|
|
115
|
+
const trulyDisabled = disabled && !accessibleWhenDisabled;
|
|
116
|
+
const [focusVisible, setFocusVisible] = useState(false);
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
if (!focusable) return;
|
|
119
|
+
if (trulyDisabled && focusVisible) setFocusVisible(false);
|
|
120
|
+
}, [
|
|
121
|
+
focusable,
|
|
122
|
+
trulyDisabled,
|
|
123
|
+
focusVisible
|
|
124
|
+
]);
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (!focusable) return;
|
|
127
|
+
if (!focusVisible) return;
|
|
128
|
+
const element = ref.current;
|
|
129
|
+
if (!element) return;
|
|
130
|
+
if (typeof IntersectionObserver === "undefined") return;
|
|
131
|
+
const observer = new IntersectionObserver(() => {
|
|
132
|
+
if (!isFocusable(element)) setFocusVisible(false);
|
|
133
|
+
});
|
|
134
|
+
observer.observe(element);
|
|
135
|
+
return () => observer.disconnect();
|
|
136
|
+
}, [focusable, focusVisible]);
|
|
137
|
+
const onKeyPressCapture = useDisableEvent(props.onKeyPressCapture, disabled);
|
|
138
|
+
const onMouseDownCapture = useDisableEvent(props.onMouseDownCapture, disabled);
|
|
139
|
+
const onClickCapture = useDisableEvent(props.onClickCapture, disabled);
|
|
140
|
+
const handleFocusVisible = (event, currentTarget) => {
|
|
141
|
+
if (currentTarget) event.currentTarget = currentTarget;
|
|
142
|
+
if (!focusable) return;
|
|
143
|
+
const element = event.currentTarget;
|
|
144
|
+
if (!element) return;
|
|
145
|
+
if (!hasFocus(element)) return;
|
|
146
|
+
onFocusVisible?.(event);
|
|
147
|
+
if (event.defaultPrevented) return;
|
|
148
|
+
element.dataset.focusVisible = "true";
|
|
149
|
+
setFocusVisible(true);
|
|
150
|
+
};
|
|
151
|
+
const onKeyDownCaptureProp = props.onKeyDownCapture;
|
|
152
|
+
const onKeyDownCapture = useEvent((event) => {
|
|
153
|
+
onKeyDownCaptureProp?.(event);
|
|
154
|
+
if (event.defaultPrevented) return;
|
|
155
|
+
if (!focusable) return;
|
|
156
|
+
if (focusVisible) return;
|
|
157
|
+
if (event.metaKey) return;
|
|
158
|
+
if (event.altKey) return;
|
|
159
|
+
if (event.ctrlKey) return;
|
|
160
|
+
if (!isSelfTarget(event)) return;
|
|
161
|
+
const element = event.currentTarget;
|
|
162
|
+
const applyFocusVisible = () => handleFocusVisible(event, element);
|
|
163
|
+
queueBeforeEvent(element, "focusout", applyFocusVisible);
|
|
164
|
+
});
|
|
165
|
+
const onFocusCaptureProp = props.onFocusCapture;
|
|
166
|
+
const onFocusCapture = useEvent((event) => {
|
|
167
|
+
onFocusCaptureProp?.(event);
|
|
168
|
+
if (event.defaultPrevented) return;
|
|
169
|
+
if (!focusable) return;
|
|
170
|
+
if (!isSelfTarget(event)) {
|
|
171
|
+
setFocusVisible(false);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const element = event.currentTarget;
|
|
175
|
+
const applyFocusVisible = () => handleFocusVisible(event, element);
|
|
176
|
+
if (isKeyboardModality || isAlwaysFocusVisible(event.target)) queueBeforeEvent(event.target, "focusout", applyFocusVisible);
|
|
177
|
+
else setFocusVisible(false);
|
|
178
|
+
});
|
|
179
|
+
const onBlurProp = props.onBlur;
|
|
180
|
+
const onBlur = useEvent((event) => {
|
|
181
|
+
onBlurProp?.(event);
|
|
182
|
+
if (!focusable) return;
|
|
183
|
+
if (!isFocusEventOutside(event)) return;
|
|
184
|
+
event.currentTarget.removeAttribute("data-focus-visible");
|
|
185
|
+
setFocusVisible(false);
|
|
186
|
+
});
|
|
187
|
+
const autoFocusOnShow = useContext(FocusableContext);
|
|
188
|
+
const autoFocusRef = useEvent((element) => {
|
|
189
|
+
if (!focusable) return;
|
|
190
|
+
if (!autoFocus) return;
|
|
191
|
+
if (!element) return;
|
|
192
|
+
if (!autoFocusOnShow) return;
|
|
193
|
+
queueMicrotask(() => {
|
|
194
|
+
if (hasFocus(element)) return;
|
|
195
|
+
if (!isFocusable(element)) return;
|
|
196
|
+
element.focus();
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
const tagName = useTagName(ref);
|
|
200
|
+
const nativeTabbable = focusable && isNativeTabbable(tagName);
|
|
201
|
+
const supportsDisabled = focusable && supportsDisabledAttribute(tagName);
|
|
202
|
+
const [safariTabIndex, setSafariTabIndex] = useState(false);
|
|
203
|
+
if (isSafariBrowser) useEffect(() => {
|
|
204
|
+
if (!focusable) return;
|
|
205
|
+
const element = ref.current;
|
|
206
|
+
if (!element) return;
|
|
207
|
+
const tag = element.tagName.toLowerCase();
|
|
208
|
+
const type = element.type;
|
|
209
|
+
setSafariTabIndex(needsSafariTabIndex(tag, type));
|
|
210
|
+
}, [focusable]);
|
|
211
|
+
const styleProp = props.style;
|
|
212
|
+
const style = useMemo(() => {
|
|
213
|
+
if (trulyDisabled) return {
|
|
214
|
+
pointerEvents: "none",
|
|
215
|
+
...styleProp
|
|
216
|
+
};
|
|
217
|
+
return styleProp;
|
|
218
|
+
}, [trulyDisabled, styleProp]);
|
|
219
|
+
props = {
|
|
220
|
+
"data-focus-visible": focusable && focusVisible || void 0,
|
|
221
|
+
"data-autofocus": autoFocus || void 0,
|
|
222
|
+
"aria-disabled": disabled || void 0,
|
|
223
|
+
...props,
|
|
224
|
+
...metadataProps,
|
|
225
|
+
ref: useMergeRefs(ref, autoFocusRef, props.ref),
|
|
226
|
+
style,
|
|
227
|
+
tabIndex: getTabIndex({
|
|
228
|
+
focusable,
|
|
229
|
+
trulyDisabled,
|
|
230
|
+
nativeTabbable,
|
|
231
|
+
supportsDisabled,
|
|
232
|
+
safariTabIndex,
|
|
233
|
+
tabIndexProp: props.tabIndex
|
|
234
|
+
}),
|
|
235
|
+
disabled: supportsDisabled && trulyDisabled ? true : void 0,
|
|
236
|
+
contentEditable: disabled ? void 0 : props.contentEditable,
|
|
237
|
+
onKeyPressCapture,
|
|
238
|
+
onClickCapture,
|
|
239
|
+
onMouseDownCapture,
|
|
240
|
+
onKeyDownCapture,
|
|
241
|
+
onFocusCapture,
|
|
242
|
+
onBlur
|
|
243
|
+
};
|
|
244
|
+
return removeUndefinedValues(props);
|
|
245
|
+
});
|
|
246
|
+
/**
|
|
247
|
+
* Renders a focusable element. When this element gains keyboard focus, it gets
|
|
248
|
+
* a
|
|
249
|
+
* [`data-focus-visible`](https://ariakit.com/guide/styling#data-focus-visible)
|
|
250
|
+
* attribute and triggers the
|
|
251
|
+
* [`onFocusVisible`](https://ariakit.com/reference/focusable#onfocusvisible)
|
|
252
|
+
* prop.
|
|
253
|
+
*
|
|
254
|
+
* The `Focusable` component supports the
|
|
255
|
+
* [`disabled`](https://ariakit.com/reference/focusable#disabled) prop for all
|
|
256
|
+
* elements, even those not supporting the native `disabled` attribute. Disabled
|
|
257
|
+
* elements using the `Focusable` component may be still accessible via keyboard
|
|
258
|
+
* by using the the
|
|
259
|
+
* [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled)
|
|
260
|
+
* prop.
|
|
261
|
+
* @see https://ariakit.com/components/focusable
|
|
262
|
+
* @example
|
|
263
|
+
* ```jsx
|
|
264
|
+
* <Focusable>Focusable</Focusable>
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
const Focusable = forwardRef(function Focusable(props) {
|
|
268
|
+
return createElement(TagName, useFocusable(props));
|
|
269
|
+
});
|
|
270
|
+
//#endregion
|
|
271
|
+
export { Focusable, useFocusable };
|
|
272
|
+
|
|
273
|
+
//# sourceMappingURL=focusable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusable.js","names":[],"sources":["../../src/focusable/focusable.tsx"],"sourcesContent":["import {\n useEvent,\n useMergeRefs,\n useMetadataProps,\n useTagName,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Options, Props } from \"@ariakit/react-utils\";\nimport {\n addGlobalEventListener,\n isFocusEventOutside,\n isSelfTarget,\n queueBeforeEvent,\n hasFocus,\n isFocusable,\n disabledFromProps,\n removeUndefinedValues,\n isSafari,\n} from \"@ariakit/utils\";\nimport type { BivariantCallback } from \"@ariakit/utils\";\nimport type {\n ElementType,\n EventHandler,\n FocusEvent,\n KeyboardEvent as ReactKeyboardEvent,\n SyntheticEvent,\n} from \"react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { FocusableContext } from \"./focusable-context.tsx\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nconst accessibleWhenDisabledSymbol = Symbol(\"accessibleWhenDisabled\");\n\nconst isSafariBrowser = isSafari();\n\nconst alwaysFocusVisibleInputTypes = [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"number\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime\",\n \"datetime-local\",\n];\n\nfunction isAlwaysFocusVisible(element: HTMLElement) {\n const { tagName, readOnly, type } = element as HTMLInputElement;\n if (tagName === \"TEXTAREA\" && !readOnly) return true;\n if (tagName === \"SELECT\" && !readOnly) return true;\n if (tagName === \"INPUT\" && !readOnly) {\n return alwaysFocusVisibleInputTypes.includes(type);\n }\n if (element.isContentEditable) return true;\n // Take into account custom Ariakit Select within a form.\n const role = element.getAttribute(\"role\");\n if (role === \"combobox\" && element.dataset.name) {\n return true;\n }\n return false;\n}\n\nfunction isNativeTabbable(tagName?: string) {\n if (!tagName) return true;\n return (\n tagName === \"button\" ||\n tagName === \"summary\" ||\n tagName === \"input\" ||\n tagName === \"select\" ||\n tagName === \"textarea\" ||\n tagName === \"a\"\n );\n}\n\nfunction supportsDisabledAttribute(tagName?: string) {\n if (!tagName) return true;\n return (\n tagName === \"button\" ||\n tagName === \"input\" ||\n tagName === \"select\" ||\n tagName === \"textarea\"\n );\n}\n\ninterface GetTabIndexParams {\n focusable: boolean;\n trulyDisabled: boolean;\n nativeTabbable: boolean;\n supportsDisabled: boolean;\n safariTabIndex: boolean;\n tabIndexProp?: number;\n}\n\nconst buttonInputTypes = [\n \"button\",\n \"color\",\n \"file\",\n \"image\",\n \"reset\",\n \"submit\",\n];\n\nfunction needsSafariTabIndex(tagName?: string, inputType?: string) {\n if (tagName === \"button\") return true;\n if (tagName === \"input\" && inputType) {\n if (inputType === \"checkbox\" || inputType === \"radio\") return true;\n return buttonInputTypes.includes(inputType);\n }\n return false;\n}\n\nfunction getTabIndex({\n focusable,\n trulyDisabled,\n nativeTabbable,\n supportsDisabled,\n safariTabIndex,\n tabIndexProp,\n}: GetTabIndexParams) {\n if (!focusable) return tabIndexProp;\n if (trulyDisabled) {\n if (nativeTabbable && !supportsDisabled) {\n // Anchor, audio and video tags don't support the `disabled` attribute.\n // We must pass tabIndex={-1} so they don't receive focus on tab.\n return -1;\n }\n // Elements that support the `disabled` attribute don't need tabIndex.\n return;\n }\n if (nativeTabbable) {\n // On Safari, buttons and button-like inputs (checkboxes, radios, submit,\n // reset, etc.) require an explicit tabIndex to receive focus on mousedown.\n if (safariTabIndex && tabIndexProp == null) {\n return 0;\n }\n return tabIndexProp;\n }\n // If the element is enabled and is not natively tabbable, we have to\n // fallback tabIndex={0}.\n return tabIndexProp ?? 0;\n}\n\nfunction useDisableEvent(\n onEvent?: EventHandler<SyntheticEvent>,\n disabled?: boolean,\n) {\n return useEvent((event: SyntheticEvent) => {\n onEvent?.(event);\n if (event.defaultPrevented) return;\n if (disabled) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n}\n\nlet hasInstalledGlobalEventListeners = false;\n\n// isKeyboardModality should be true by default.\nlet isKeyboardModality = true;\n\nfunction onGlobalMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement | EventTarget | null;\n if (target && \"hasAttribute\" in target) {\n // If the target element is already focus-visible, we keep the keyboard\n // modality.\n if (!target.hasAttribute(\"data-focus-visible\")) {\n isKeyboardModality = false;\n }\n }\n}\n\nfunction onGlobalKeyDown(event: KeyboardEvent) {\n if (event.metaKey) return;\n if (event.ctrlKey) return;\n if (event.altKey) return;\n isKeyboardModality = true;\n}\n\n/**\n * Returns props to create a `Focusable` component.\n * @see https://ariakit.com/components/focusable\n * @example\n * ```jsx\n * const props = useFocusable();\n * <Role {...props}>Focusable</Role>\n * ```\n */\nexport const useFocusable = createHook<TagName, FocusableOptions>(\n function useFocusable({\n focusable = true,\n accessibleWhenDisabled,\n autoFocus,\n onFocusVisible,\n ...props\n }) {\n const ref = useRef<HTMLType>(null);\n const [parentAccessibleWhenDisabled, metadataProps] = useMetadataProps(\n props,\n accessibleWhenDisabledSymbol,\n accessibleWhenDisabled,\n );\n accessibleWhenDisabled ??= parentAccessibleWhenDisabled;\n\n // Add global event listeners to determine whether the user is using a\n // keyboard to navigate the site or not.\n useEffect(() => {\n if (!focusable) return;\n if (hasInstalledGlobalEventListeners) return;\n addGlobalEventListener(\"mousedown\", onGlobalMouseDown, true);\n addGlobalEventListener(\"keydown\", onGlobalKeyDown, true);\n hasInstalledGlobalEventListeners = true;\n }, [focusable]);\n\n const disabled = focusable && disabledFromProps(props);\n const trulyDisabled = disabled && !accessibleWhenDisabled;\n const [focusVisible, setFocusVisible] = useState(false);\n\n // When the focusable element is disabled, it doesn't trigger a blur event\n // so we can't set focusVisible to false there. Instead, we have to do it\n // here by checking the element's disabled attribute.\n useEffect(() => {\n if (!focusable) return;\n if (trulyDisabled && focusVisible) {\n setFocusVisible(false);\n }\n }, [focusable, trulyDisabled, focusVisible]);\n\n // When an element that has focus becomes hidden, it doesn't trigger a blur\n // event so we can't set focusVisible to false there. We observe the element\n // and check if it's still focusable. Otherwise, we set focusVisible to\n // false.\n useEffect(() => {\n if (!focusable) return;\n if (!focusVisible) return;\n const element = ref.current;\n if (!element) return;\n if (typeof IntersectionObserver === \"undefined\") return;\n const observer = new IntersectionObserver(() => {\n if (!isFocusable(element)) {\n setFocusVisible(false);\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [focusable, focusVisible]);\n\n // Disable events when the element is disabled.\n const onKeyPressCapture = useDisableEvent(\n props.onKeyPressCapture,\n disabled,\n );\n const onMouseDownCapture = useDisableEvent(\n props.onMouseDownCapture,\n disabled,\n );\n const onClickCapture = useDisableEvent(props.onClickCapture, disabled);\n\n const handleFocusVisible = (\n event: SyntheticEvent<HTMLType>,\n currentTarget?: HTMLType,\n ) => {\n if (currentTarget) {\n event.currentTarget = currentTarget;\n }\n if (!focusable) return;\n const element = event.currentTarget;\n if (!element) return;\n // Some extensions like 1password dispatches some keydown events on\n // autofill and immediately moves focus to the next field. That's why we\n // need to check if the current element is still focused.\n if (!hasFocus(element)) return;\n onFocusVisible?.(event);\n if (event.defaultPrevented) return;\n // Make sure data-focus-visible is applied visually at the same time as\n // other data attributes like data-active-item. See\n // https://github.com/ariakit/ariakit/issues/4083\n element.dataset.focusVisible = \"true\";\n setFocusVisible(true);\n };\n\n const onKeyDownCaptureProp = props.onKeyDownCapture;\n\n const onKeyDownCapture = useEvent((event: ReactKeyboardEvent<HTMLType>) => {\n onKeyDownCaptureProp?.(event);\n if (event.defaultPrevented) return;\n if (!focusable) return;\n if (focusVisible) return;\n if (event.metaKey) return;\n if (event.altKey) return;\n if (event.ctrlKey) return;\n if (!isSelfTarget(event)) return;\n const element = event.currentTarget;\n const applyFocusVisible = () => handleFocusVisible(event, element);\n queueBeforeEvent(element, \"focusout\", applyFocusVisible);\n });\n\n const onFocusCaptureProp = props.onFocusCapture;\n\n const onFocusCapture = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusCaptureProp?.(event);\n if (event.defaultPrevented) return;\n if (!focusable) return;\n if (!isSelfTarget(event)) {\n setFocusVisible(false);\n return;\n }\n const element = event.currentTarget;\n const applyFocusVisible = () => handleFocusVisible(event, element);\n if (isKeyboardModality || isAlwaysFocusVisible(event.target)) {\n queueBeforeEvent(event.target, \"focusout\", applyFocusVisible);\n } else {\n setFocusVisible(false);\n }\n });\n\n const onBlurProp = props.onBlur;\n\n // Note: Can't use onBlurCapture here otherwise it will not work with\n // CompositeItem's with the virtualFocus state set to true.\n const onBlur = useEvent((event: FocusEvent<HTMLType>) => {\n onBlurProp?.(event);\n if (!focusable) return;\n if (!isFocusEventOutside(event)) return;\n // Since we set the data-focus-visible attribute on the element in the\n // handleFocusVisible function, we remove it directly here. Otherwise, the\n // attribute might not be removed on lower-end devices.\n event.currentTarget.removeAttribute(\"data-focus-visible\");\n setFocusVisible(false);\n });\n\n const autoFocusOnShow = useContext(FocusableContext);\n\n // The native autoFocus prop is problematic in many ways. For example, when\n // an element has the native autofocus attribute, the focus event will be\n // triggered before React effects (even layout effects) and before refs are\n // assigned. This means we won't have access to the element's ref or\n // anything else that's set up by React effects on the onFocus event. So we\n // don't pass the autoFocus prop to the element and instead manually focus\n // the element when it's mounted. The order in which this effect runs also\n // matters. See\n // https://x.com/diegohaz/status/1408180632933388289\n const autoFocusRef = useEvent((element: HTMLElement | null) => {\n if (!focusable) return;\n if (!autoFocus) return;\n if (!element) return;\n if (!autoFocusOnShow) return;\n // We have to queue focus so other effects and refs can be applied first.\n // See select-animated example.\n queueMicrotask(() => {\n if (hasFocus(element)) return;\n if (!isFocusable(element)) return;\n element.focus();\n });\n });\n\n const tagName = useTagName(ref);\n const nativeTabbable = focusable && isNativeTabbable(tagName);\n const supportsDisabled = focusable && supportsDisabledAttribute(tagName);\n\n // On Safari, buttons and button-like inputs don't receive focus on\n // mousedown. We detect this from the DOM element (not props) so it works\n // with render={<input type=\"submit\" />} and custom components.\n const [safariTabIndex, setSafariTabIndex] = useState(false);\n\n if (isSafariBrowser) {\n useEffect(() => {\n if (!focusable) return;\n const element = ref.current;\n if (!element) return;\n const tag = element.tagName.toLowerCase();\n const type = (element as HTMLInputElement).type;\n setSafariTabIndex(needsSafariTabIndex(tag, type));\n }, [focusable]);\n }\n\n const styleProp = props.style;\n const style = useMemo(() => {\n if (trulyDisabled) {\n return { pointerEvents: \"none\" as const, ...styleProp };\n }\n return styleProp;\n }, [trulyDisabled, styleProp]);\n\n props = {\n \"data-focus-visible\": (focusable && focusVisible) || undefined,\n \"data-autofocus\": autoFocus || undefined,\n \"aria-disabled\": disabled || undefined,\n ...props,\n ...metadataProps,\n ref: useMergeRefs(ref, autoFocusRef, props.ref),\n style,\n tabIndex: getTabIndex({\n focusable,\n trulyDisabled,\n nativeTabbable,\n supportsDisabled,\n safariTabIndex,\n tabIndexProp: props.tabIndex,\n }),\n disabled: supportsDisabled && trulyDisabled ? true : undefined,\n // TODO: Test Focusable contentEditable.\n contentEditable: disabled ? undefined : props.contentEditable,\n onKeyPressCapture,\n onClickCapture,\n onMouseDownCapture,\n onKeyDownCapture,\n onFocusCapture,\n onBlur,\n };\n\n return removeUndefinedValues(props);\n },\n);\n\n/**\n * Renders a focusable element. When this element gains keyboard focus, it gets\n * a\n * [`data-focus-visible`](https://ariakit.com/guide/styling#data-focus-visible)\n * attribute and triggers the\n * [`onFocusVisible`](https://ariakit.com/reference/focusable#onfocusvisible)\n * prop.\n *\n * The `Focusable` component supports the\n * [`disabled`](https://ariakit.com/reference/focusable#disabled) prop for all\n * elements, even those not supporting the native `disabled` attribute. Disabled\n * elements using the `Focusable` component may be still accessible via keyboard\n * by using the the\n * [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled)\n * prop.\n * @see https://ariakit.com/components/focusable\n * @example\n * ```jsx\n * <Focusable>Focusable</Focusable>\n * ```\n */\nexport const Focusable = forwardRef(function Focusable(props: FocusableProps) {\n const htmlProps = useFocusable(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface FocusableOptions<\n _T extends ElementType = TagName,\n> extends Options {\n /**\n * Determines if the element is disabled. This sets the `aria-disabled`\n * attribute accordingly, enabling support for all elements, including those\n * that don't support the native `disabled` attribute.\n *\n * This feature can be combined with the\n * [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled)\n * prop to make disabled elements still accessible via keyboard.\n *\n * **Note**: For this prop to work, the\n * [`focusable`](https://ariakit.com/reference/command#focusable) prop must be\n * set to `true`, if it's not set by default.\n *\n * Live examples:\n * - [Submenu](https://ariakit.com/examples/menu-nested)\n * - [Combobox with Tabs](https://ariakit.com/examples/combobox-tabs)\n * - [Context Menu](https://ariakit.com/examples/menu-context-menu)\n * @default false\n */\n disabled?: boolean;\n /**\n * Automatically focuses the element upon mounting, similar to the native\n * `autoFocus` prop. This addresses an issue where the element with the native\n * `autoFocus` attribute might receive focus before React effects are\n * executed.\n *\n * The `autoFocus` prop can also be used with\n * [Focusable](https://ariakit.com/components/focusable) elements within a\n * [Dialog](https://ariakit.com/components/dialog) component, establishing the\n * initial focus as the dialog opens.\n *\n * **Note**: For this prop to work, the\n * [`focusable`](https://ariakit.com/reference/command#focusable) prop must be\n * set to `true`, if it's not set by default.\n *\n * Live examples:\n * - [Warning on Dialog\n * hide](https://ariakit.com/examples/dialog-hide-warning)\n * - [Dialog with React\n * Router](https://ariakit.com/examples/dialog-react-router)\n * - [Nested Dialog](https://ariakit.com/examples/dialog-nested)\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Determines if [Focusable](https://ariakit.com/components/focusable)\n * features should be active on non-native focusable elements.\n *\n * **Note**: This prop only turns off the additional features provided by the\n * [`Focusable`](https://ariakit.com/reference/focusable) component.\n * Non-native focusable elements will lose their focusability entirely.\n * However, native focusable elements will retain their inherent focusability,\n * but without added features such as improved\n * [`autoFocus`](https://ariakit.com/reference/focusable#autofocus),\n * [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled),\n * [`onFocusVisible`](https://ariakit.com/reference/focusable#onfocusvisible),\n * etc.\n * @default true\n */\n focusable?: boolean;\n /**\n * Indicates whether the element should be focusable even when it is\n * [`disabled`](https://ariakit.com/reference/focusable#disabled).\n *\n * This is important when discoverability is a concern. For example:\n *\n * > A toolbar in an editor contains a set of special smart paste functions\n * that are disabled when the clipboard is empty or when the function is not\n * applicable to the current content of the clipboard. It could be helpful to\n * keep the disabled buttons focusable if the ability to discover their\n * functionality is primarily via their presence on the toolbar.\n *\n * Learn more on [Focusability of disabled\n * controls](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#focusabilityofdisabledcontrols).\n *\n * Live examples:\n * - [Combobox with Tabs](https://ariakit.com/examples/combobox-tabs)\n * - [Command Menu with\n * Tabs](https://ariakit.com/examples/dialog-combobox-tab-command-menu)\n */\n accessibleWhenDisabled?: boolean;\n /**\n * Custom event handler invoked when the element gains focus through keyboard\n * interaction or a key press occurs while the element is in focus. This is\n * the programmatic equivalent of the\n * [`data-focus-visible`](https://ariakit.com/guide/styling#data-focus-visible)\n * attribute.\n *\n * **Note**: For this prop to work, the\n * [`focusable`](https://ariakit.com/reference/command#focusable) prop must be\n * set to `true`, if it's not set by default.\n *\n * Live examples:\n * - [Navigation Menubar](https://ariakit.com/examples/menubar-navigation)\n * - [Custom Checkbox](https://ariakit.com/examples/checkbox-custom)\n */\n onFocusVisible?: BivariantCallback<\n (event: SyntheticEvent<HTMLElement>) => void\n >;\n}\n\nexport type FocusableProps<T extends ElementType = TagName> = Props<\n T,\n FocusableOptions<T>\n>;\n"],"mappings":";;;;;;AAoCA,MAAM,UAAA;AAEN,MAAM,+BAA2B,OAAA,wBAAA;AAEjC,MAAM,kBAAA,SAAA;MACJ,+BAAA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACF;AAEA;SACU,qBAAmB,SAAS;CACpC,MAAI,EAAA,SAAY,UAAA,SAAe;CAC/B,IAAI,YAAY,cAAa,CAAA,UAAU,OAAO;CAC9C,IAAI,YAAY,YAAY,CAAA,UAC1B,OAAO;CAET,IAAI,YAAQ,WAAA,CAAA,UAA0B,OAAA,6BAAA,SAAA,IAAA;CAGtC,IADa,QAAQ,mBACd,OAAM;CAGb,IAAA,QAAO,aAAA,MAAA,MAAA,cAAA,QAAA,QAAA,MAAA,OAAA;CACT,OAAA;AAEA;SACO,iBAAgB,SAAA;CACrB,IAAA,CAAA,SACE,OAAY;CAOhB,OAAA,YAAA,YAAA,YAAA,aAAA,YAAA,WAAA,YAAA,YAAA,YAAA,cAAA,YAAA;AAEA;SACO,0BAAgB,SAAA;CACrB,IAAA,CAAA,SACE,OAAY;CAKhB,OAAA,YAAA,YAAA,YAAA,WAAA,YAAA,YAAA,YAAA;AAWA;MACE,mBAAA;CACA;CACA;CACA;CACA;CACA;CACF;AAEA;SACM,oBAAsB,SAAO,WAAA;CACjC,IAAI,YAAY,UAAA,OAAW;KACzB,YAAI,WAAc,WAAc;EAChC,IAAA,cAAO,cAAiB,cAAkB,SAAA,OAAA;EAC5C,OAAA,iBAAA,SAAA,SAAA;CACA;CACF,OAAA;AAEA;SAQO,YAAW,EAAA,WAAO,eAAA,gBAAA,kBAAA,gBAAA,gBAAA;CACvB,IAAI,CAAA,WAAA,OAAe;KACjB,eAAI;EAMJ,IAAA,kBAAA,CAAA,kBAAA,OAAA;EACF;CACA;KAGE,gBAAI;EAGJ,IAAA,kBAAO,gBAAA,MAAA,OAAA;EACT,OAAA;CAGA;CACF,OAAA,gBAAA;AAEA;SAIS,gBAAU,SAA0B,UAAA;QACzC,UAAe,UAAA;EACf,UAAU,KAAA;EACV,IAAI,MAAA,kBAAU;MACZ,UAAM;GACN,MAAM,gBAAe;GACvB,MAAA,eAAA;EACD;CACH,CAAA;AAEA;AAGA,IAAI,mCAAqB;AAEzB,IAAA,qBAAS;SACD,kBAAe,OAAA;CACrB,MAAI,SAAU,MAAA;eAGA,kBAAa,QAEzB;MAAA,CAAA,OAAA,aAAA,oBAAA,GAAA,qBAAA;CAAA;AAIJ;SACM,gBAAe,OAAA;CACnB,IAAI,MAAM,SAAS;CACnB,IAAI,MAAM,SAAQ;CAClB,IAAA,MAAA,QAAA;CACF,qBAAA;;;;;;;;;;;MAmBI,eAA6B,WAAI,SAAA,aAAA,EAAA,YAAA,MAAA,wBAAA,WAAA,gBAAA,GAAA,SAAA;CACjC,MAAM,MAAC,OAAA,IAAA;CAKP,MAAA,CAAA,8BAA2B,iBAAA,iBAAA,OAAA,8BAAA,sBAAA;CAI3B,2BAAgB;iBACT;EACL,IAAI,CAAA,WAAA;EACJ,IAAA,kCAAoC;EACpC,uBAAuB,aAAW,mBAAqB,IAAA;EACvD,uBAAA,WAAA,iBAAmC,IAAA;EACrC,mCAAc;CAEd,GAAA,CAAA,SAAM,CAAA;CACN,MAAM,WAAA,aAAgB,kBAAa,KAAA;CACnC,MAAM,gBAAe,YAAA,CAAA;CAKrB,MAAA,CAAA,cAAgB,mBAAA,SAAA,KAAA;iBACT;EACL,IAAI,CAAA,WAAA;EAGN,IAAG,iBAAA,cAAA,gBAAA,KAAA;IAAC;EAAW;EAAe;EAAa;CAM3C,CAAA;iBACO;EACL,IAAI,CAAC,WAAA;EACL,IAAA,CAAA,cAAgB;EAChB,MAAK,UAAS,IAAA;EACd,IAAI,CAAA,SAAO;EACX,IAAA,OAAM,yBAAe,aAA2B;QACzC,WAAA,IAAY,2BACC;GAEnB,IAAA,CAAA,YAAA,OAAA,GAAA,gBAAA,KAAA;EACD,CAAA;EACA,SAAA,QAAa,OAAS;EACxB,aAAI,SAAW,WAAa;CAG5B,GAAA,CAAA,WAAM,YAAoB,CAAA;CAI1B,MAAM,oBAAA,gBAAqB,MACzB,mBAAM,QACN;CAEF,MAAM,qBAAiB,gBAAgB,MAAM,oBAAwB,QAAA;CAErE,MAAM,iBAAA,gBAEJ,MAAA,gBACG,QAAA;OACC,sBACI,OAAA,kBAAgB;EAExB,IAAI,eAAY,MAAA,gBAAA;EAChB,IAAA,CAAA,WAAgB;EAChB,MAAK,UAAS,MAAA;EAId,IAAI,CAAC,SAAS;EACd,IAAA,CAAA,SAAA,OAAiB,GAAK;EACtB,iBAAU,KAAA;EAIV,IAAA,MAAQ,kBAAQ;EAChB,QAAA,QAAgB,eAAI;EACtB,gBAAA,IAAA;CAEA;CAEA,MAAM,uBAAmB,MAAU;OACjC,mBAAuB,UAAK,UAAA;EAC5B,uBAAU,KAAkB;EAC5B,IAAI,MAAC,kBAAW;EAChB,IAAI,CAAA,WAAA;EACJ,IAAI,cAAM;EACV,IAAI,MAAM,SAAQ;EAClB,IAAI,MAAM,QAAA;EACV,IAAI,MAAC,SAAa;EAClB,IAAA,CAAA,aAAgB,KAAM,GAAA;EACtB,MAAM,UAAA,MAAA;EACN,MAAA,0BAA0B,mBAAY,OAAiB,OAAA;EACxD,iBAAA,SAAA,YAAA,iBAAA;CAED,CAAA;CAEA,MAAM,qBAAiB,MAAU;OAC/B,iBAAqB,UAAK,UAAA;EAC1B,qBAAU,KAAA;EACV,IAAI,MAAC,kBAAW;EAChB,IAAI,CAAC,WAAA;MACH,CAAA,aAAgB,KAAK,GAAA;GACrB,gBAAA,KAAA;GACF;EACA;EACA,MAAM,UAAA,MAAA;EACN,MAAI,0BAAsB,mBAAqB,OAAM,OACnD;4BAEqB,qBAAA,MAAA,MAAA,GAAA,iBAAA,MAAA,QAAA,YAAA,iBAAA;OAExB,gBAAA,KAAA;CAED,CAAA;CAIA,MAAM,aAAS,MAAU;OACvB,SAAa,UAAK,UAAA;EAClB,aAAK,KAAW;EAChB,IAAI,CAAC,WAAA;EAIL,IAAA,CAAA,oBAAoB,KAAA,GAAA;EACpB,MAAA,cAAgB,gBAAK,oBAAA;EACtB,gBAAA,KAAA;CAED,CAAA;CAWA,MAAM,kBAAe,WAAU,gBAAgC;OACxD,eAAW,UAAA,YAAA;EAChB,IAAI,CAAC,WAAW;EAChB,IAAI,CAAC,WAAS;EACd,IAAI,CAAC,SAAA;EAGL,IAAA,CAAA,iBAAqB;uBACC;GACpB,IAAI,SAAC,OAAY,GAAA;GACjB,IAAA,CAAA,YAAc,OAAA,GAAA;GACf,QAAA,MAAA;EACF,CAAA;CAED,CAAA;CACA,MAAM,UAAA,WAAiB,GAAA;CACvB,MAAM,iBAAA,aAAmB,iBAAa,OAAA;CAKtC,MAAM,mBAAiB,aAAA,0BAAmC,OAAA;CAE1D,MAAI,CAAA,gBACF,qBAAgB,SAAA,KAAA;KACd,iBAAgB,gBAAA;EAChB,IAAA,CAAA,WAAgB;EAChB,MAAK,UAAS,IAAA;EACd,IAAA,CAAA,SAAY;EACZ,MAAM,MAAA,QAAQ,QAA6B,YAAA;EAC3C,MAAA,OAAA,QAAkB;EACpB,kBAAc,oBAAA,KAAA,IAAA,CAAA;CAGhB,GAAA,CAAA,SAAM,CAAA;CACN,MAAM,YAAQ,MAAA;OACR,QAAA,cACK;MAAE,eAAe,OAAA;GAAiB,eAAG;GAAU,GAAA;EAExD;EACF,OAAI;CAEJ,GAAA,CAAA,eAAQ,SAAA,CAAA;SACN;EACA,sBAAkB,aAAa,gBAAA,KAAA;EAC/B,kBAAiB,aAAY,KAAA;EAC7B,iBAAG,YAAA,KAAA;EACH,GAAG;EACH,GAAA;EACA,KAAA,aAAA,KAAA,cAAA,MAAA,GAAA;EACA;YACE,YAAA;GACA;GACA;GACA;GACA;GACA;GACD,cAAA,MAAA;EACD,CAAA;EAEA,UAAA,oBAA4B,gBAAkB,OAAA,KAAA;EAC9C,iBAAA,WAAA,KAAA,IAAA,MAAA;EACA;EACA;EACA;EACA;EACA;EACF;CAEA;CAEJ,OAAA,sBAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;MAyBE,YAAO,WAAc,SADH,UAAa,OACQ;CACxC,OAAA,cAAA,SAAA,aAAA,KAAA,CAAA"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Options, Props } from "@ariakit/react-utils";
|
|
2
|
+
import { ElementType, SyntheticEvent } from "react";
|
|
3
|
+
import { BivariantCallback } from "@ariakit/utils";
|
|
4
|
+
|
|
5
|
+
//#region src/focusable/focusable.d.ts
|
|
6
|
+
declare const TagName = "div";
|
|
7
|
+
type TagName = typeof TagName;
|
|
8
|
+
/**
|
|
9
|
+
* Returns props to create a `Focusable` component.
|
|
10
|
+
* @see https://ariakit.com/components/focusable
|
|
11
|
+
* @example
|
|
12
|
+
* ```jsx
|
|
13
|
+
* const props = useFocusable();
|
|
14
|
+
* <Role {...props}>Focusable</Role>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare const useFocusable: import("@ariakit/react-utils").Hook<"div", FocusableOptions<"div">>;
|
|
18
|
+
/**
|
|
19
|
+
* Renders a focusable element. When this element gains keyboard focus, it gets
|
|
20
|
+
* a
|
|
21
|
+
* [`data-focus-visible`](https://ariakit.com/guide/styling#data-focus-visible)
|
|
22
|
+
* attribute and triggers the
|
|
23
|
+
* [`onFocusVisible`](https://ariakit.com/reference/focusable#onfocusvisible)
|
|
24
|
+
* prop.
|
|
25
|
+
*
|
|
26
|
+
* The `Focusable` component supports the
|
|
27
|
+
* [`disabled`](https://ariakit.com/reference/focusable#disabled) prop for all
|
|
28
|
+
* elements, even those not supporting the native `disabled` attribute. Disabled
|
|
29
|
+
* elements using the `Focusable` component may be still accessible via keyboard
|
|
30
|
+
* by using the the
|
|
31
|
+
* [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled)
|
|
32
|
+
* prop.
|
|
33
|
+
* @see https://ariakit.com/components/focusable
|
|
34
|
+
* @example
|
|
35
|
+
* ```jsx
|
|
36
|
+
* <Focusable>Focusable</Focusable>
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
declare const Focusable: (props: FocusableProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
40
|
+
interface FocusableOptions<_T extends ElementType = TagName> extends Options {
|
|
41
|
+
/**
|
|
42
|
+
* Determines if the element is disabled. This sets the `aria-disabled`
|
|
43
|
+
* attribute accordingly, enabling support for all elements, including those
|
|
44
|
+
* that don't support the native `disabled` attribute.
|
|
45
|
+
*
|
|
46
|
+
* This feature can be combined with the
|
|
47
|
+
* [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled)
|
|
48
|
+
* prop to make disabled elements still accessible via keyboard.
|
|
49
|
+
*
|
|
50
|
+
* **Note**: For this prop to work, the
|
|
51
|
+
* [`focusable`](https://ariakit.com/reference/command#focusable) prop must be
|
|
52
|
+
* set to `true`, if it's not set by default.
|
|
53
|
+
*
|
|
54
|
+
* Live examples:
|
|
55
|
+
* - [Submenu](https://ariakit.com/examples/menu-nested)
|
|
56
|
+
* - [Combobox with Tabs](https://ariakit.com/examples/combobox-tabs)
|
|
57
|
+
* - [Context Menu](https://ariakit.com/examples/menu-context-menu)
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
disabled?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Automatically focuses the element upon mounting, similar to the native
|
|
63
|
+
* `autoFocus` prop. This addresses an issue where the element with the native
|
|
64
|
+
* `autoFocus` attribute might receive focus before React effects are
|
|
65
|
+
* executed.
|
|
66
|
+
*
|
|
67
|
+
* The `autoFocus` prop can also be used with
|
|
68
|
+
* [Focusable](https://ariakit.com/components/focusable) elements within a
|
|
69
|
+
* [Dialog](https://ariakit.com/components/dialog) component, establishing the
|
|
70
|
+
* initial focus as the dialog opens.
|
|
71
|
+
*
|
|
72
|
+
* **Note**: For this prop to work, the
|
|
73
|
+
* [`focusable`](https://ariakit.com/reference/command#focusable) prop must be
|
|
74
|
+
* set to `true`, if it's not set by default.
|
|
75
|
+
*
|
|
76
|
+
* Live examples:
|
|
77
|
+
* - [Warning on Dialog
|
|
78
|
+
* hide](https://ariakit.com/examples/dialog-hide-warning)
|
|
79
|
+
* - [Dialog with React
|
|
80
|
+
* Router](https://ariakit.com/examples/dialog-react-router)
|
|
81
|
+
* - [Nested Dialog](https://ariakit.com/examples/dialog-nested)
|
|
82
|
+
* @default false
|
|
83
|
+
*/
|
|
84
|
+
autoFocus?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Determines if [Focusable](https://ariakit.com/components/focusable)
|
|
87
|
+
* features should be active on non-native focusable elements.
|
|
88
|
+
*
|
|
89
|
+
* **Note**: This prop only turns off the additional features provided by the
|
|
90
|
+
* [`Focusable`](https://ariakit.com/reference/focusable) component.
|
|
91
|
+
* Non-native focusable elements will lose their focusability entirely.
|
|
92
|
+
* However, native focusable elements will retain their inherent focusability,
|
|
93
|
+
* but without added features such as improved
|
|
94
|
+
* [`autoFocus`](https://ariakit.com/reference/focusable#autofocus),
|
|
95
|
+
* [`accessibleWhenDisabled`](https://ariakit.com/reference/focusable#accessiblewhendisabled),
|
|
96
|
+
* [`onFocusVisible`](https://ariakit.com/reference/focusable#onfocusvisible),
|
|
97
|
+
* etc.
|
|
98
|
+
* @default true
|
|
99
|
+
*/
|
|
100
|
+
focusable?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Indicates whether the element should be focusable even when it is
|
|
103
|
+
* [`disabled`](https://ariakit.com/reference/focusable#disabled).
|
|
104
|
+
*
|
|
105
|
+
* This is important when discoverability is a concern. For example:
|
|
106
|
+
*
|
|
107
|
+
* > A toolbar in an editor contains a set of special smart paste functions
|
|
108
|
+
* that are disabled when the clipboard is empty or when the function is not
|
|
109
|
+
* applicable to the current content of the clipboard. It could be helpful to
|
|
110
|
+
* keep the disabled buttons focusable if the ability to discover their
|
|
111
|
+
* functionality is primarily via their presence on the toolbar.
|
|
112
|
+
*
|
|
113
|
+
* Learn more on [Focusability of disabled
|
|
114
|
+
* controls](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#focusabilityofdisabledcontrols).
|
|
115
|
+
*
|
|
116
|
+
* Live examples:
|
|
117
|
+
* - [Combobox with Tabs](https://ariakit.com/examples/combobox-tabs)
|
|
118
|
+
* - [Command Menu with
|
|
119
|
+
* Tabs](https://ariakit.com/examples/dialog-combobox-tab-command-menu)
|
|
120
|
+
*/
|
|
121
|
+
accessibleWhenDisabled?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Custom event handler invoked when the element gains focus through keyboard
|
|
124
|
+
* interaction or a key press occurs while the element is in focus. This is
|
|
125
|
+
* the programmatic equivalent of the
|
|
126
|
+
* [`data-focus-visible`](https://ariakit.com/guide/styling#data-focus-visible)
|
|
127
|
+
* attribute.
|
|
128
|
+
*
|
|
129
|
+
* **Note**: For this prop to work, the
|
|
130
|
+
* [`focusable`](https://ariakit.com/reference/command#focusable) prop must be
|
|
131
|
+
* set to `true`, if it's not set by default.
|
|
132
|
+
*
|
|
133
|
+
* Live examples:
|
|
134
|
+
* - [Navigation Menubar](https://ariakit.com/examples/menubar-navigation)
|
|
135
|
+
* - [Custom Checkbox](https://ariakit.com/examples/checkbox-custom)
|
|
136
|
+
*/
|
|
137
|
+
onFocusVisible?: BivariantCallback<(event: SyntheticEvent<HTMLElement>) => void>;
|
|
138
|
+
}
|
|
139
|
+
type FocusableProps<T extends ElementType = TagName> = Props<T, FocusableOptions<T>>;
|
|
140
|
+
//#endregion
|
|
141
|
+
export { useFocusable as i, FocusableOptions as n, FocusableProps as r, Focusable as t };
|
|
142
|
+
//# sourceMappingURL=focusable-B00tOxtB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusable-B00tOxtB.d.ts","names":["Options","Props","BivariantCallback","ElementType","SyntheticEvent","TagName","useFocusable","FocusableOptions","Hook","Focusable","FocusableProps","props","ReactElement","JSXElementConstructor","_T","HTMLElement","disabled","autoFocus","focusable","accessibleWhenDisabled","onFocusVisible","event","T"],"sources":["../src/focusable/focusable.d.ts"],"mappings":";;;;;cAGcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF4B;;;;AACpC;AAAA;;;;AADoC,cAYpCC,YAAAA,iCAA6CE,IAAAA,QAAYD,gBAAgB;AAA9F;;;;AAA8F;AAsB9F;;;;;;;;;AAA2I;AAC3I;;;;;;AAvBA,cAsBqBE,SAAAA,GAAYE,KAAAA,EAAOD,cAAc,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACrGN,gBAAAA,YAA4BJ,WAAAA,GAAcE,OAAAA,UAAiBL,OAAAA;EAAAA;;;;;;;;;;;;;;;;;AAiGF;AAE1E;EA/EIgB,QAAAA;EA+EsBM;;;;;;;;;;;;;;;;;AAA+D;;;;;;EAvDrFL,SAAAA;;;;;;;;;;;;;;;;EAgBAC,SAAAA;;;;;;;;;;;;;;;;;;;;;EAqBAC,sBAAAA;;;;;;;;;;;;;;;;EAgBAC,cAAAA,GAAiBlB,iBAAAA,EAAmBmB,KAAAA,EAAOjB,cAAAA,CAAeW,WAAAA;AAAAA;AAAAA,KAElDL,cAAAA,WAAyBP,WAAAA,GAAcE,OAAAA,IAAWJ,KAAAA,CAAMqB,CAAAA,EAAGf,gBAAAA,CAAiBe,CAAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { CheckboxOptions } from "../checkbox/checkbox.js";
|
|
2
|
+
import { FormControlOptions } from "./form-control.js";
|
|
3
|
+
import { Props } from "@ariakit/react-utils";
|
|
4
|
+
import { ElementType } from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/form/form-checkbox.d.ts
|
|
7
|
+
declare const TagName = "input";
|
|
8
|
+
type TagName = typeof TagName;
|
|
9
|
+
/**
|
|
10
|
+
* Returns props to create a `FormCheckbox` component.
|
|
11
|
+
* @see https://ariakit.com/components/form
|
|
12
|
+
* @example
|
|
13
|
+
* ```jsx
|
|
14
|
+
* const store = useFormStore({ defaultValues: { acceptTerms: false } });
|
|
15
|
+
* const props = useFormCheckbox({ store, name: store.names.acceptTerms });
|
|
16
|
+
* <Form store={store}>
|
|
17
|
+
* <label>
|
|
18
|
+
* <Role {...props} />
|
|
19
|
+
* Accept terms
|
|
20
|
+
* </label>
|
|
21
|
+
* </Form>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare const useFormCheckbox: import("@ariakit/react-utils").Hook<"input", FormCheckboxOptions<"input">>;
|
|
25
|
+
/**
|
|
26
|
+
* Renders a checkbox input as a form control, representing a boolean, string,
|
|
27
|
+
* number, or array value.
|
|
28
|
+
* @see https://ariakit.com/components/form
|
|
29
|
+
* @example
|
|
30
|
+
* ```jsx {9}
|
|
31
|
+
* const form = useFormStore({
|
|
32
|
+
* defaultValues: {
|
|
33
|
+
* acceptTerms: false,
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* <Form store={form}>
|
|
38
|
+
* <label>
|
|
39
|
+
* <FormCheckbox name={form.names.acceptTerms} />
|
|
40
|
+
* Accept terms
|
|
41
|
+
* </label>
|
|
42
|
+
* </Form>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare const FormCheckbox: (props: FormCheckboxProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
46
|
+
interface FormCheckboxOptions<T extends ElementType = TagName> extends FormControlOptions<T>, Omit<CheckboxOptions<T>, "store" | "name"> {}
|
|
47
|
+
type FormCheckboxProps<T extends ElementType = TagName> = Props<T, FormCheckboxOptions<T>>;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { FormCheckbox, FormCheckboxOptions, FormCheckboxProps, useFormCheckbox };
|
|
50
|
+
//# sourceMappingURL=form-checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-checkbox.d.ts","names":["Props","ElementType","CheckboxOptions","FormControlOptions","TagName","useFormCheckbox","FormCheckboxOptions","Hook","FormCheckbox","FormCheckboxProps","props","ReactElement","JSXElementConstructor","T","Omit"],"sources":["../../src/form/form-checkbox.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAgB7B;;;;AAAsG;AAlBzC,cAkBxCC,eAAAA,iCAAgDE,IAAAA,UAAcD,mBAAmB;;;;;;;;;AAqB2C;AACjJ;;;;;;;;;;;cADqBE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC3GN,mBAAAA,WAA8BL,WAAAA,GAAcG,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA,GAAIC,IAAAA,CAAKZ,eAAAA,CAAgBW,CAAAA;AAAAA,KAE9GJ,iBAAAA,WAA4BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCheckboxStore } from "../checkbox/checkbox-store.js";
|
|
3
|
+
import { useCheckbox } from "../checkbox/checkbox.js";
|
|
4
|
+
import { useFormContext } from "./form-context.js";
|
|
5
|
+
import { useFormControl } from "./form-control.js";
|
|
6
|
+
import { createElement, createHook, forwardRef, memo } from "@ariakit/react-utils";
|
|
7
|
+
import { invariant } from "@ariakit/utils";
|
|
8
|
+
//#region src/form/form-checkbox.tsx
|
|
9
|
+
const TagName = "input";
|
|
10
|
+
/**
|
|
11
|
+
* Returns props to create a `FormCheckbox` component.
|
|
12
|
+
* @see https://ariakit.com/components/form
|
|
13
|
+
* @example
|
|
14
|
+
* ```jsx
|
|
15
|
+
* const store = useFormStore({ defaultValues: { acceptTerms: false } });
|
|
16
|
+
* const props = useFormCheckbox({ store, name: store.names.acceptTerms });
|
|
17
|
+
* <Form store={store}>
|
|
18
|
+
* <label>
|
|
19
|
+
* <Role {...props} />
|
|
20
|
+
* Accept terms
|
|
21
|
+
* </label>
|
|
22
|
+
* </Form>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
const useFormCheckbox = createHook(function useFormCheckbox({ store, name: nameProp, value, checked, defaultChecked, ...props }) {
|
|
26
|
+
const context = useFormContext();
|
|
27
|
+
store = store || context;
|
|
28
|
+
invariant(store, "FormCheckbox must be wrapped in a Form component.");
|
|
29
|
+
const name = String(nameProp);
|
|
30
|
+
props = useCheckbox({
|
|
31
|
+
store: useCheckboxStore({
|
|
32
|
+
value: store.useValue(name),
|
|
33
|
+
setValue: (value) => store?.setValue(name, value)
|
|
34
|
+
}),
|
|
35
|
+
value,
|
|
36
|
+
checked,
|
|
37
|
+
...props
|
|
38
|
+
});
|
|
39
|
+
props = useFormControl({
|
|
40
|
+
store,
|
|
41
|
+
name,
|
|
42
|
+
"aria-labelledby": void 0,
|
|
43
|
+
...props
|
|
44
|
+
});
|
|
45
|
+
return props;
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Renders a checkbox input as a form control, representing a boolean, string,
|
|
49
|
+
* number, or array value.
|
|
50
|
+
* @see https://ariakit.com/components/form
|
|
51
|
+
* @example
|
|
52
|
+
* ```jsx {9}
|
|
53
|
+
* const form = useFormStore({
|
|
54
|
+
* defaultValues: {
|
|
55
|
+
* acceptTerms: false,
|
|
56
|
+
* },
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* <Form store={form}>
|
|
60
|
+
* <label>
|
|
61
|
+
* <FormCheckbox name={form.names.acceptTerms} />
|
|
62
|
+
* Accept terms
|
|
63
|
+
* </label>
|
|
64
|
+
* </Form>
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
const FormCheckbox = memo(forwardRef(function FormCheckbox(props) {
|
|
68
|
+
return createElement(TagName, useFormCheckbox(props));
|
|
69
|
+
}));
|
|
70
|
+
//#endregion
|
|
71
|
+
export { FormCheckbox, useFormCheckbox };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=form-checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-checkbox.js","names":[],"sources":["../../src/form/form-checkbox.tsx"],"sourcesContent":["import {\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport { useCheckboxStore } from \"../checkbox/checkbox-store.ts\";\nimport type { CheckboxOptions } from \"../checkbox/checkbox.tsx\";\nimport { useCheckbox } from \"../checkbox/checkbox.tsx\";\nimport { useFormContext } from \"./form-context.tsx\";\nimport type { FormControlOptions } from \"./form-control.tsx\";\nimport { useFormControl } from \"./form-control.tsx\";\n\nconst TagName = \"input\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `FormCheckbox` component.\n * @see https://ariakit.com/components/form\n * @example\n * ```jsx\n * const store = useFormStore({ defaultValues: { acceptTerms: false } });\n * const props = useFormCheckbox({ store, name: store.names.acceptTerms });\n * <Form store={store}>\n * <label>\n * <Role {...props} />\n * Accept terms\n * </label>\n * </Form>\n * ```\n */\nexport const useFormCheckbox = createHook<TagName, FormCheckboxOptions>(\n function useFormCheckbox({\n store,\n name: nameProp,\n value,\n checked,\n defaultChecked,\n ...props\n }) {\n const context = useFormContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"FormCheckbox must be wrapped in a Form component.\",\n );\n\n const name = String(nameProp);\n\n const checkboxStore = useCheckboxStore({\n value: store.useValue(name),\n setValue: (value) => store?.setValue(name, value),\n });\n\n props = useCheckbox({ store: checkboxStore, value, checked, ...props });\n\n props = useFormControl({\n store,\n name,\n \"aria-labelledby\": undefined,\n ...props,\n });\n\n return props;\n },\n);\n\n/**\n * Renders a checkbox input as a form control, representing a boolean, string,\n * number, or array value.\n * @see https://ariakit.com/components/form\n * @example\n * ```jsx {9}\n * const form = useFormStore({\n * defaultValues: {\n * acceptTerms: false,\n * },\n * });\n *\n * <Form store={form}>\n * <label>\n * <FormCheckbox name={form.names.acceptTerms} />\n * Accept terms\n * </label>\n * </Form>\n * ```\n */\nexport const FormCheckbox = memo(\n forwardRef(function FormCheckbox(props: FormCheckboxProps) {\n const htmlProps = useFormCheckbox(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface FormCheckboxOptions<T extends ElementType = TagName>\n extends FormControlOptions<T>, Omit<CheckboxOptions<T>, \"store\" | \"name\"> {}\n\nexport type FormCheckboxProps<T extends ElementType = TagName> = Props<\n T,\n FormCheckboxOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MA2CI,kBAAgB,WAAe,SAAA,gBAAA,EAAA,OAAA,MAAA,UAAA,OAAA,SAAA,gBAAA,GAAA,SAAA;CAC/B,MAAA,UAAQ,eAAS;CAEjB,QAAA,SAGI;CAGJ,UAAM,OAAO,mDAAe;CAO5B,MAAA,OAAQ,OAAY,QAAA;SALE,YAAA;SACpB,iBAAsB;GACtB,OAAA,MAAW,SAAU,IAAA;GAGkB,WAAA,UAAA,OAAA,SAAA,MAAA,KAAA;EAAG,CAAA;EAAO;EAAS;EAAU,GAAA;CAEtE,CAAA;SACE,eAAA;EACA;EACA;EACA,mBAAG,KAAA;EACJ,GAAA;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;MAyBI,eAAO,KAAc,WADH,SAAA,aACqB,OAAA;CACxC,OACH,cAAA,SAAA,gBAAA,KAAA,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { s as FormStoreValues, t as FormStore } from "../form-store-C4Kf5QHm.js";
|
|
2
|
+
|
|
3
|
+
//#region src/form/form-context.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Returns the form store from the nearest form container.
|
|
6
|
+
* @example
|
|
7
|
+
* function FormInput() {
|
|
8
|
+
* const store = useFormContext();
|
|
9
|
+
*
|
|
10
|
+
* if (!store) {
|
|
11
|
+
* throw new Error("FormInput must be wrapped in FormProvider");
|
|
12
|
+
* }
|
|
13
|
+
*
|
|
14
|
+
* // Use the store...
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
declare const useFormContext: () => FormStore<FormStoreValues> | undefined;
|
|
18
|
+
declare const useFormScopedContext: (onlyScoped?: boolean) => FormStore<FormStoreValues> | undefined;
|
|
19
|
+
declare const useFormProviderContext: () => FormStore<FormStoreValues> | undefined;
|
|
20
|
+
declare const FormContextProvider: (props: import("react").ProviderProps<FormStore<FormStoreValues> | undefined>) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare const FormScopedContextProvider: (props: import("react").ProviderProps<FormStore<FormStoreValues> | undefined>) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { FormContextProvider, FormScopedContextProvider, useFormContext, useFormProviderContext, useFormScopedContext };
|
|
24
|
+
//# sourceMappingURL=form-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-context.d.ts","names":["FormStore","useFormContext","_$__form_store_ts0","FormStoreValues","useFormScopedContext","onlyScoped","useFormProviderContext","FormContextProvider","ProviderProps","props","JSX","Element","FormScopedContextProvider"],"sources":["../../src/form/form-context.d.ts"],"mappings":";;;;;AAcA;;;;AAAoD;AACpD;;;;;;cADqBC,cAAAA,QAAsBD,SAAS,CAAuDE,eAAAA;AAAAA,cACtFE,oBAAAA,GAAuBC,UAAAA,eAAyBL,SAAS,CAAuDE,eAAAA;AAAAA,cAChHI,sBAAAA,QAA8BN,SAAS,CAAuDE,eAAAA;AAAAA,cAC9FK,mBAAAA,GAAsBE,KAAAA,kBAAuBD,aAAAA,CAAcR,SAAS,CAAoGE,eAAAA,+CAAXQ,GAAAA,CAAIC,OAAAA;AAAAA,cACjKC,yBAAAA,GAA4BH,KAAAA,kBAAuBD,aAAAA,CAAcR,SAAS,CAAoGE,eAAAA,+CAAXQ,GAAAA,CAAIC,OAAAA"}
|