@wordpress/ui 0.11.0 → 0.12.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 +46 -0
- package/README.md +4 -4
- package/build/alert-dialog/index.cjs +3 -0
- package/build/alert-dialog/index.cjs.map +2 -2
- package/build/alert-dialog/popup.cjs +120 -55
- package/build/alert-dialog/popup.cjs.map +3 -3
- package/build/alert-dialog/portal.cjs +38 -0
- package/build/alert-dialog/portal.cjs.map +7 -0
- package/build/alert-dialog/types.cjs.map +1 -1
- package/build/collapsible-card/content.cjs +9 -5
- package/build/collapsible-card/content.cjs.map +2 -2
- package/build/collapsible-card/header.cjs +14 -4
- package/build/collapsible-card/header.cjs.map +3 -3
- package/build/dialog/content.cjs +85 -0
- package/build/dialog/content.cjs.map +7 -0
- package/build/dialog/context.cjs +12 -44
- package/build/dialog/context.cjs.map +2 -2
- package/build/dialog/description.cjs +59 -0
- package/build/dialog/description.cjs.map +7 -0
- package/build/dialog/footer.cjs +5 -4
- package/build/dialog/footer.cjs.map +2 -2
- package/build/dialog/header.cjs +5 -4
- package/build/dialog/header.cjs.map +2 -2
- package/build/dialog/index.cjs +9 -0
- package/build/dialog/index.cjs.map +2 -2
- package/build/dialog/popup.cjs +21 -9
- package/build/dialog/popup.cjs.map +2 -2
- package/build/dialog/portal.cjs +38 -0
- package/build/dialog/portal.cjs.map +7 -0
- package/build/dialog/root.cjs +3 -2
- package/build/dialog/root.cjs.map +2 -2
- package/build/dialog/title.cjs +9 -6
- package/build/dialog/title.cjs.map +2 -2
- package/build/dialog/types.cjs.map +1 -1
- package/build/drawer/action.cjs +48 -0
- package/build/drawer/action.cjs.map +7 -0
- package/build/drawer/close-icon.cjs +58 -0
- package/build/drawer/close-icon.cjs.map +7 -0
- package/build/drawer/content.cjs +86 -0
- package/build/drawer/content.cjs.map +7 -0
- package/build/drawer/context.cjs +44 -0
- package/build/drawer/context.cjs.map +7 -0
- package/build/drawer/description.cjs +47 -0
- package/build/drawer/description.cjs.map +7 -0
- package/build/drawer/footer.cjs +65 -0
- package/build/drawer/footer.cjs.map +7 -0
- package/build/drawer/header.cjs +65 -0
- package/build/drawer/header.cjs.map +7 -0
- package/build/drawer/index.cjs +61 -0
- package/build/drawer/index.cjs.map +7 -0
- package/build/drawer/popup.cjs +103 -0
- package/build/drawer/popup.cjs.map +7 -0
- package/build/drawer/portal.cjs +38 -0
- package/build/drawer/portal.cjs.map +7 -0
- package/build/drawer/root.cjs +49 -0
- package/build/drawer/root.cjs.map +7 -0
- package/build/drawer/title.cjs +70 -0
- package/build/drawer/title.cjs.map +7 -0
- package/build/drawer/trigger.cjs +38 -0
- package/build/drawer/trigger.cjs.map +7 -0
- package/build/drawer/types.cjs +19 -0
- package/build/drawer/types.cjs.map +7 -0
- package/build/form/primitives/autocomplete/clear.cjs +62 -0
- package/build/form/primitives/autocomplete/clear.cjs.map +7 -0
- package/build/form/primitives/autocomplete/collection.cjs +38 -0
- package/build/form/primitives/autocomplete/collection.cjs.map +7 -0
- package/build/form/primitives/autocomplete/empty.cjs +67 -0
- package/build/form/primitives/autocomplete/empty.cjs.map +7 -0
- package/build/form/primitives/autocomplete/index.cjs +64 -0
- package/build/form/primitives/autocomplete/index.cjs.map +7 -0
- package/build/form/primitives/autocomplete/input-group.cjs +36 -0
- package/build/form/primitives/autocomplete/input-group.cjs.map +7 -0
- package/build/form/primitives/autocomplete/input.cjs +47 -0
- package/build/form/primitives/autocomplete/input.cjs.map +7 -0
- package/build/form/primitives/autocomplete/item.cjs +81 -0
- package/build/form/primitives/autocomplete/item.cjs.map +7 -0
- package/build/form/primitives/autocomplete/list-body.cjs +57 -0
- package/build/form/primitives/autocomplete/list-body.cjs.map +7 -0
- package/build/form/primitives/autocomplete/list.cjs +67 -0
- package/build/form/primitives/autocomplete/list.cjs.map +7 -0
- package/build/form/primitives/autocomplete/popup.cjs +102 -0
- package/build/form/primitives/autocomplete/popup.cjs.map +7 -0
- package/build/form/primitives/autocomplete/portal.cjs +38 -0
- package/build/form/primitives/autocomplete/portal.cjs.map +7 -0
- package/build/form/primitives/autocomplete/root.cjs +35 -0
- package/build/form/primitives/autocomplete/root.cjs.map +7 -0
- package/build/form/primitives/autocomplete/types.cjs +19 -0
- package/build/form/primitives/autocomplete/types.cjs.map +7 -0
- package/build/form/primitives/autocomplete/value.cjs +35 -0
- package/build/form/primitives/autocomplete/value.cjs.map +7 -0
- package/build/form/primitives/index.cjs +3 -0
- package/build/form/primitives/index.cjs.map +2 -2
- package/build/form/primitives/select/index.cjs +3 -0
- package/build/form/primitives/select/index.cjs.map +2 -2
- package/build/form/primitives/select/item.cjs +4 -5
- package/build/form/primitives/select/item.cjs.map +2 -2
- package/build/form/primitives/select/popup.cjs +12 -11
- package/build/form/primitives/select/popup.cjs.map +2 -2
- package/build/form/primitives/select/portal.cjs +38 -0
- package/build/form/primitives/select/portal.cjs.map +7 -0
- package/build/form/primitives/select/types.cjs.map +1 -1
- package/build/index.cjs +3 -0
- package/build/index.cjs.map +2 -2
- package/build/link/link.cjs +8 -18
- package/build/link/link.cjs.map +2 -2
- package/build/link/types.cjs.map +1 -1
- package/build/notice/action-button.cjs +3 -3
- package/build/notice/action-button.cjs.map +2 -2
- package/build/notice/action-link.cjs +8 -7
- package/build/notice/action-link.cjs.map +2 -2
- package/build/notice/actions.cjs +3 -3
- package/build/notice/actions.cjs.map +2 -2
- package/build/notice/close-icon.cjs +3 -3
- package/build/notice/close-icon.cjs.map +2 -2
- package/build/notice/description.cjs +3 -3
- package/build/notice/description.cjs.map +2 -2
- package/build/notice/root.cjs +3 -3
- package/build/notice/root.cjs.map +2 -2
- package/build/notice/title.cjs +3 -3
- package/build/notice/title.cjs.map +2 -2
- package/build/popover/arrow.cjs +4 -4
- package/build/popover/arrow.cjs.map +2 -2
- package/build/popover/context.cjs +4 -44
- package/build/popover/context.cjs.map +2 -2
- package/build/popover/description.cjs +1 -24
- package/build/popover/description.cjs.map +4 -4
- package/build/popover/index.cjs +3 -0
- package/build/popover/index.cjs.map +2 -2
- package/build/popover/popup.cjs +15 -15
- package/build/popover/popup.cjs.map +2 -2
- package/build/popover/portal.cjs +38 -0
- package/build/popover/portal.cjs.map +7 -0
- package/build/popover/root.cjs.map +1 -1
- package/build/popover/title.cjs +18 -4
- package/build/popover/title.cjs.map +3 -3
- package/build/popover/types.cjs.map +1 -1
- package/build/tabs/context.cjs +9 -22
- package/build/tabs/context.cjs.map +2 -2
- package/build/tabs/list.cjs +4 -4
- package/build/tabs/list.cjs.map +2 -2
- package/build/tabs/panel.cjs +19 -6
- package/build/tabs/panel.cjs.map +3 -3
- package/build/tabs/tab.cjs +4 -4
- package/build/tabs/tab.cjs.map +2 -2
- package/build/text/text.cjs +2 -2
- package/build/text/text.cjs.map +2 -2
- package/build/tooltip/index.cjs +3 -0
- package/build/tooltip/index.cjs.map +2 -2
- package/build/tooltip/popup.cjs +11 -14
- package/build/tooltip/popup.cjs.map +3 -3
- package/build/tooltip/portal.cjs +38 -0
- package/build/tooltip/portal.cjs.map +7 -0
- package/build/tooltip/provider.cjs +2 -2
- package/build/tooltip/provider.cjs.map +3 -3
- package/build/tooltip/root.cjs.map +3 -3
- package/build/tooltip/trigger.cjs +2 -2
- package/build/tooltip/trigger.cjs.map +3 -3
- package/build/tooltip/types.cjs.map +1 -1
- package/build/utils/create-overlay-modal-context.cjs +48 -0
- package/build/utils/create-overlay-modal-context.cjs.map +7 -0
- package/build/utils/create-overlay-title-validation.cjs +93 -0
- package/build/utils/create-overlay-title-validation.cjs.map +7 -0
- package/build/utils/render-portal-with-children.cjs +37 -0
- package/build/utils/render-portal-with-children.cjs.map +7 -0
- package/build/utils/use-deprioritized-initial-focus.cjs +8 -8
- package/build/utils/use-deprioritized-initial-focus.cjs.map +2 -2
- package/build/utils/use-overlay-scroll-state-attributes.cjs +140 -0
- package/build/utils/use-overlay-scroll-state-attributes.cjs.map +7 -0
- package/build/utils/use-schedule-validation.cjs +59 -0
- package/build/utils/use-schedule-validation.cjs.map +7 -0
- package/build/visually-hidden/visually-hidden.cjs +5 -1
- package/build/visually-hidden/visually-hidden.cjs.map +2 -2
- package/build-module/alert-dialog/index.mjs +2 -0
- package/build-module/alert-dialog/index.mjs.map +2 -2
- package/build-module/alert-dialog/popup.mjs +124 -56
- package/build-module/alert-dialog/popup.mjs.map +3 -3
- package/build-module/alert-dialog/portal.mjs +13 -0
- package/build-module/alert-dialog/portal.mjs.map +7 -0
- package/build-module/collapsible-card/content.mjs +9 -5
- package/build-module/collapsible-card/content.mjs.map +2 -2
- package/build-module/collapsible-card/header.mjs +14 -4
- package/build-module/collapsible-card/header.mjs.map +3 -3
- package/build-module/dialog/content.mjs +50 -0
- package/build-module/dialog/content.mjs.map +7 -0
- package/build-module/dialog/context.mjs +10 -51
- package/build-module/dialog/context.mjs.map +2 -2
- package/build-module/dialog/description.mjs +34 -0
- package/build-module/dialog/description.mjs.map +7 -0
- package/build-module/dialog/footer.mjs +5 -4
- package/build-module/dialog/footer.mjs.map +2 -2
- package/build-module/dialog/header.mjs +5 -4
- package/build-module/dialog/header.mjs.map +2 -2
- package/build-module/dialog/index.mjs +6 -0
- package/build-module/dialog/index.mjs.map +2 -2
- package/build-module/dialog/popup.mjs +23 -11
- package/build-module/dialog/popup.mjs.map +2 -2
- package/build-module/dialog/portal.mjs +13 -0
- package/build-module/dialog/portal.mjs.map +7 -0
- package/build-module/dialog/root.mjs +3 -2
- package/build-module/dialog/root.mjs.map +2 -2
- package/build-module/dialog/title.mjs +10 -7
- package/build-module/dialog/title.mjs.map +2 -2
- package/build-module/drawer/action.mjs +23 -0
- package/build-module/drawer/action.mjs.map +7 -0
- package/build-module/drawer/close-icon.mjs +33 -0
- package/build-module/drawer/close-icon.mjs.map +7 -0
- package/build-module/drawer/content.mjs +51 -0
- package/build-module/drawer/content.mjs.map +7 -0
- package/build-module/drawer/context.mjs +16 -0
- package/build-module/drawer/context.mjs.map +7 -0
- package/build-module/drawer/description.mjs +22 -0
- package/build-module/drawer/description.mjs.map +7 -0
- package/build-module/drawer/footer.mjs +30 -0
- package/build-module/drawer/footer.mjs.map +7 -0
- package/build-module/drawer/header.mjs +30 -0
- package/build-module/drawer/header.mjs.map +7 -0
- package/build-module/drawer/index.mjs +26 -0
- package/build-module/drawer/index.mjs.map +7 -0
- package/build-module/drawer/popup.mjs +70 -0
- package/build-module/drawer/popup.mjs.map +7 -0
- package/build-module/drawer/portal.mjs +13 -0
- package/build-module/drawer/portal.mjs.map +7 -0
- package/build-module/drawer/root.mjs +24 -0
- package/build-module/drawer/root.mjs.map +7 -0
- package/build-module/drawer/title.mjs +45 -0
- package/build-module/drawer/title.mjs.map +7 -0
- package/build-module/drawer/trigger.mjs +13 -0
- package/build-module/drawer/trigger.mjs.map +7 -0
- package/build-module/drawer/types.mjs +1 -0
- package/build-module/form/primitives/autocomplete/clear.mjs +37 -0
- package/build-module/form/primitives/autocomplete/clear.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/collection.mjs +13 -0
- package/build-module/form/primitives/autocomplete/collection.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/empty.mjs +32 -0
- package/build-module/form/primitives/autocomplete/empty.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/index.mjs +28 -0
- package/build-module/form/primitives/autocomplete/index.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/input-group.mjs +11 -0
- package/build-module/form/primitives/autocomplete/input-group.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/input.mjs +22 -0
- package/build-module/form/primitives/autocomplete/input.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/item.mjs +46 -0
- package/build-module/form/primitives/autocomplete/item.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/list-body.mjs +32 -0
- package/build-module/form/primitives/autocomplete/list-body.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/list.mjs +32 -0
- package/build-module/form/primitives/autocomplete/list.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/popup.mjs +69 -0
- package/build-module/form/primitives/autocomplete/popup.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/portal.mjs +13 -0
- package/build-module/form/primitives/autocomplete/portal.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/root.mjs +10 -0
- package/build-module/form/primitives/autocomplete/root.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/types.mjs +1 -0
- package/build-module/form/primitives/autocomplete/value.mjs +10 -0
- package/build-module/form/primitives/autocomplete/value.mjs.map +7 -0
- package/build-module/form/primitives/index.mjs +2 -0
- package/build-module/form/primitives/index.mjs.map +2 -2
- package/build-module/form/primitives/select/index.mjs +2 -0
- package/build-module/form/primitives/select/index.mjs.map +2 -2
- package/build-module/form/primitives/select/item.mjs +4 -5
- package/build-module/form/primitives/select/item.mjs.map +2 -2
- package/build-module/form/primitives/select/popup.mjs +12 -11
- package/build-module/form/primitives/select/popup.mjs.map +2 -2
- package/build-module/form/primitives/select/portal.mjs +13 -0
- package/build-module/form/primitives/select/portal.mjs.map +7 -0
- package/build-module/index.mjs +2 -0
- package/build-module/index.mjs.map +2 -2
- package/build-module/link/link.mjs +8 -18
- package/build-module/link/link.mjs.map +2 -2
- package/build-module/notice/action-button.mjs +3 -3
- package/build-module/notice/action-button.mjs.map +2 -2
- package/build-module/notice/action-link.mjs +8 -7
- package/build-module/notice/action-link.mjs.map +2 -2
- package/build-module/notice/actions.mjs +3 -3
- package/build-module/notice/actions.mjs.map +2 -2
- package/build-module/notice/close-icon.mjs +3 -3
- package/build-module/notice/close-icon.mjs.map +2 -2
- package/build-module/notice/description.mjs +3 -3
- package/build-module/notice/description.mjs.map +2 -2
- package/build-module/notice/root.mjs +3 -3
- package/build-module/notice/root.mjs.map +2 -2
- package/build-module/notice/title.mjs +3 -3
- package/build-module/notice/title.mjs.map +2 -2
- package/build-module/popover/arrow.mjs +4 -4
- package/build-module/popover/arrow.mjs.map +2 -2
- package/build-module/popover/context.mjs +4 -51
- package/build-module/popover/context.mjs.map +2 -2
- package/build-module/popover/description.mjs +1 -14
- package/build-module/popover/description.mjs.map +3 -3
- package/build-module/popover/index.mjs +2 -0
- package/build-module/popover/index.mjs.map +2 -2
- package/build-module/popover/popup.mjs +16 -16
- package/build-module/popover/popup.mjs.map +2 -2
- package/build-module/popover/portal.mjs +13 -0
- package/build-module/popover/portal.mjs.map +7 -0
- package/build-module/popover/root.mjs.map +1 -1
- package/build-module/popover/title.mjs +19 -5
- package/build-module/popover/title.mjs.map +3 -3
- package/build-module/tabs/context.mjs +11 -24
- package/build-module/tabs/context.mjs.map +2 -2
- package/build-module/tabs/list.mjs +4 -4
- package/build-module/tabs/list.mjs.map +2 -2
- package/build-module/tabs/panel.mjs +19 -6
- package/build-module/tabs/panel.mjs.map +3 -3
- package/build-module/tabs/tab.mjs +4 -4
- package/build-module/tabs/tab.mjs.map +2 -2
- package/build-module/text/text.mjs +2 -2
- package/build-module/text/text.mjs.map +2 -2
- package/build-module/tooltip/index.mjs +2 -0
- package/build-module/tooltip/index.mjs.map +2 -2
- package/build-module/tooltip/popup.mjs +14 -17
- package/build-module/tooltip/popup.mjs.map +2 -2
- package/build-module/tooltip/portal.mjs +13 -0
- package/build-module/tooltip/portal.mjs.map +7 -0
- package/build-module/tooltip/provider.mjs +3 -3
- package/build-module/tooltip/provider.mjs.map +2 -2
- package/build-module/tooltip/root.mjs +2 -2
- package/build-module/tooltip/root.mjs.map +2 -2
- package/build-module/tooltip/trigger.mjs +3 -3
- package/build-module/tooltip/trigger.mjs.map +2 -2
- package/build-module/utils/create-overlay-modal-context.mjs +23 -0
- package/build-module/utils/create-overlay-modal-context.mjs.map +7 -0
- package/build-module/utils/create-overlay-title-validation.mjs +75 -0
- package/build-module/utils/create-overlay-title-validation.mjs.map +7 -0
- package/build-module/utils/render-portal-with-children.mjs +12 -0
- package/build-module/utils/render-portal-with-children.mjs.map +7 -0
- package/build-module/utils/use-deprioritized-initial-focus.mjs +9 -9
- package/build-module/utils/use-deprioritized-initial-focus.mjs.map +2 -2
- package/build-module/utils/use-overlay-scroll-state-attributes.mjs +114 -0
- package/build-module/utils/use-overlay-scroll-state-attributes.mjs.map +7 -0
- package/build-module/utils/use-schedule-validation.mjs +34 -0
- package/build-module/utils/use-schedule-validation.mjs.map +7 -0
- package/build-module/visually-hidden/visually-hidden.mjs +5 -1
- package/build-module/visually-hidden/visually-hidden.mjs.map +2 -2
- package/build-types/alert-dialog/index.d.ts +1 -0
- package/build-types/alert-dialog/index.d.ts.map +1 -1
- package/build-types/alert-dialog/popup.d.ts.map +1 -1
- package/build-types/alert-dialog/portal.d.ts +9 -0
- package/build-types/alert-dialog/portal.d.ts.map +1 -0
- package/build-types/alert-dialog/stories/index.story.d.ts +29 -1
- package/build-types/alert-dialog/stories/index.story.d.ts.map +1 -1
- package/build-types/alert-dialog/types.d.ts +25 -3
- package/build-types/alert-dialog/types.d.ts.map +1 -1
- package/build-types/badge/stories/index.story.d.ts.map +1 -1
- package/build-types/card/stories/index.story.d.ts.map +1 -1
- package/build-types/collapsible/stories/index.story.d.ts.map +1 -1
- package/build-types/collapsible-card/content.d.ts.map +1 -1
- package/build-types/collapsible-card/header.d.ts.map +1 -1
- package/build-types/collapsible-card/stories/index.story.d.ts.map +1 -1
- package/build-types/dialog/content.d.ts +17 -0
- package/build-types/dialog/content.d.ts.map +1 -0
- package/build-types/dialog/context.d.ts +11 -16
- package/build-types/dialog/context.d.ts.map +1 -1
- package/build-types/dialog/description.d.ts +9 -0
- package/build-types/dialog/description.d.ts.map +1 -0
- package/build-types/dialog/footer.d.ts +8 -1
- package/build-types/dialog/footer.d.ts.map +1 -1
- package/build-types/dialog/header.d.ts +8 -1
- package/build-types/dialog/header.d.ts.map +1 -1
- package/build-types/dialog/index.d.ts +4 -1
- package/build-types/dialog/index.d.ts.map +1 -1
- package/build-types/dialog/popup.d.ts +3 -0
- package/build-types/dialog/popup.d.ts.map +1 -1
- package/build-types/dialog/portal.d.ts +10 -0
- package/build-types/dialog/portal.d.ts.map +1 -0
- package/build-types/dialog/root.d.ts +14 -4
- package/build-types/dialog/root.d.ts.map +1 -1
- package/build-types/dialog/stories/index.story.d.ts +29 -6
- package/build-types/dialog/stories/index.story.d.ts.map +1 -1
- package/build-types/dialog/title.d.ts.map +1 -1
- package/build-types/dialog/types.d.ts +60 -7
- package/build-types/dialog/types.d.ts.map +1 -1
- package/build-types/drawer/action.d.ts +8 -0
- package/build-types/drawer/action.d.ts.map +1 -0
- package/build-types/drawer/close-icon.d.ts +8 -0
- package/build-types/drawer/close-icon.d.ts.map +1 -0
- package/build-types/drawer/content.d.ts +21 -0
- package/build-types/drawer/content.d.ts.map +1 -0
- package/build-types/drawer/context.d.ts +20 -0
- package/build-types/drawer/context.d.ts.map +1 -0
- package/build-types/drawer/description.d.ts +9 -0
- package/build-types/drawer/description.d.ts.map +1 -0
- package/build-types/drawer/footer.d.ts +15 -0
- package/build-types/drawer/footer.d.ts.map +1 -0
- package/build-types/drawer/header.d.ts +15 -0
- package/build-types/drawer/header.d.ts.map +1 -0
- package/build-types/drawer/index.d.ts +13 -0
- package/build-types/drawer/index.d.ts.map +1 -0
- package/build-types/drawer/popup.d.ts +16 -0
- package/build-types/drawer/popup.d.ts.map +1 -0
- package/build-types/drawer/portal.d.ts +10 -0
- package/build-types/drawer/portal.d.ts.map +1 -0
- package/build-types/drawer/root.d.ts +21 -0
- package/build-types/drawer/root.d.ts.map +1 -0
- package/build-types/drawer/stories/index.story.d.ts +63 -0
- package/build-types/drawer/stories/index.story.d.ts.map +1 -0
- package/build-types/drawer/test/index.test.d.ts +2 -0
- package/build-types/drawer/test/index.test.d.ts.map +1 -0
- package/build-types/drawer/title.d.ts +22 -0
- package/build-types/drawer/title.d.ts.map +1 -0
- package/build-types/drawer/trigger.d.ts +7 -0
- package/build-types/drawer/trigger.d.ts.map +1 -0
- package/build-types/drawer/types.d.ts +146 -0
- package/build-types/drawer/types.d.ts.map +1 -0
- package/build-types/empty-state/stories/index.story.d.ts +1 -1
- package/build-types/empty-state/stories/index.story.d.ts.map +1 -1
- package/build-types/form/input-control/stories/index.story.d.ts +1 -1
- package/build-types/form/input-control/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/autocomplete/clear.d.ts +13 -0
- package/build-types/form/primitives/autocomplete/clear.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/collection.d.ts +3 -0
- package/build-types/form/primitives/autocomplete/collection.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/empty.d.ts +10 -0
- package/build-types/form/primitives/autocomplete/empty.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/index.d.ts +13 -0
- package/build-types/form/primitives/autocomplete/index.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/input-group.d.ts +16 -0
- package/build-types/form/primitives/autocomplete/input-group.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/input.d.ts +3 -0
- package/build-types/form/primitives/autocomplete/input.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/item.d.ts +10 -0
- package/build-types/form/primitives/autocomplete/item.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/list-body.d.ts +13 -0
- package/build-types/form/primitives/autocomplete/list-body.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/list.d.ts +11 -0
- package/build-types/form/primitives/autocomplete/list.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/popup.d.ts +11 -0
- package/build-types/form/primitives/autocomplete/popup.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/portal.d.ts +8 -0
- package/build-types/form/primitives/autocomplete/portal.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/root.d.ts +8 -0
- package/build-types/form/primitives/autocomplete/root.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/stories/fixtures.d.ts +8 -0
- package/build-types/form/primitives/autocomplete/stories/fixtures.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/stories/index.story.d.ts +41 -0
- package/build-types/form/primitives/autocomplete/stories/index.story.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/test/index.test.d.ts +2 -0
- package/build-types/form/primitives/autocomplete/test/index.test.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/types.d.ts +44 -0
- package/build-types/form/primitives/autocomplete/types.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/value.d.ts +3 -0
- package/build-types/form/primitives/autocomplete/value.d.ts.map +1 -0
- package/build-types/form/primitives/field/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/field/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/fieldset/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/fieldset/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/index.d.ts +1 -0
- package/build-types/form/primitives/index.d.ts.map +1 -1
- package/build-types/form/primitives/input/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/input/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/input-layout/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/input-layout/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/select/index.d.ts +1 -0
- package/build-types/form/primitives/select/index.d.ts.map +1 -1
- package/build-types/form/primitives/select/item.d.ts.map +1 -1
- package/build-types/form/primitives/select/popup.d.ts +1 -2
- package/build-types/form/primitives/select/popup.d.ts.map +1 -1
- package/build-types/form/primitives/select/portal.d.ts +8 -0
- package/build-types/form/primitives/select/portal.d.ts.map +1 -0
- package/build-types/form/primitives/select/stories/index.story.d.ts +14 -6
- package/build-types/form/primitives/select/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/select/types.d.ts +7 -2
- package/build-types/form/primitives/select/types.d.ts.map +1 -1
- package/build-types/index.d.ts +1 -0
- package/build-types/index.d.ts.map +1 -1
- package/build-types/link/link.d.ts.map +1 -1
- package/build-types/link/stories/index.story.d.ts +2 -3
- package/build-types/link/stories/index.story.d.ts.map +1 -1
- package/build-types/link/types.d.ts +1 -2
- package/build-types/link/types.d.ts.map +1 -1
- package/build-types/notice/action-link.d.ts.map +1 -1
- package/build-types/popover/context.d.ts +6 -13
- package/build-types/popover/context.d.ts.map +1 -1
- package/build-types/popover/description.d.ts +0 -1
- package/build-types/popover/description.d.ts.map +1 -1
- package/build-types/popover/index.d.ts +2 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/popup.d.ts +3 -2
- package/build-types/popover/popup.d.ts.map +1 -1
- package/build-types/popover/portal.d.ts +9 -0
- package/build-types/popover/portal.d.ts.map +1 -0
- package/build-types/popover/root.d.ts +2 -2
- package/build-types/popover/stories/index.story.d.ts +23 -15
- package/build-types/popover/stories/index.story.d.ts.map +1 -1
- package/build-types/popover/title.d.ts.map +1 -1
- package/build-types/popover/types.d.ts +8 -15
- package/build-types/popover/types.d.ts.map +1 -1
- package/build-types/stack/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/context.d.ts.map +1 -1
- package/build-types/tabs/panel.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts +1 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/text/stories/index.story.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts +2 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tooltip/popup.d.ts.map +1 -1
- package/build-types/tooltip/portal.d.ts +8 -0
- package/build-types/tooltip/portal.d.ts.map +1 -0
- package/build-types/tooltip/provider.d.ts +1 -1
- package/build-types/tooltip/provider.d.ts.map +1 -1
- package/build-types/tooltip/stories/index.story.d.ts +18 -1
- package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
- package/build-types/tooltip/stories/usage-guidelines.story.d.ts.map +1 -1
- package/build-types/tooltip/trigger.d.ts.map +1 -1
- package/build-types/tooltip/types.d.ts +11 -7
- package/build-types/tooltip/types.d.ts.map +1 -1
- package/build-types/utils/create-overlay-modal-context.d.ts +14 -0
- package/build-types/utils/create-overlay-modal-context.d.ts.map +1 -0
- package/build-types/utils/create-overlay-title-validation.d.ts +15 -0
- package/build-types/utils/create-overlay-title-validation.d.ts.map +1 -0
- package/build-types/utils/render-portal-with-children.d.ts +16 -0
- package/build-types/utils/render-portal-with-children.d.ts.map +1 -0
- package/build-types/utils/use-deprioritized-initial-focus.d.ts +9 -8
- package/build-types/utils/use-deprioritized-initial-focus.d.ts.map +1 -1
- package/build-types/utils/use-overlay-scroll-state-attributes.d.ts +85 -0
- package/build-types/utils/use-overlay-scroll-state-attributes.d.ts.map +1 -0
- package/build-types/utils/use-schedule-validation.d.ts +13 -0
- package/build-types/utils/use-schedule-validation.d.ts.map +1 -0
- package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
- package/build-types/visually-hidden/visually-hidden.d.ts +4 -20
- package/build-types/visually-hidden/visually-hidden.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/alert-dialog/index.ts +1 -0
- package/src/alert-dialog/popup.tsx +114 -45
- package/src/alert-dialog/portal.tsx +17 -0
- package/src/alert-dialog/stories/index.story.tsx +123 -3
- package/src/alert-dialog/style.module.css +13 -4
- package/src/alert-dialog/test/index.test.tsx +329 -3
- package/src/alert-dialog/types.ts +30 -3
- package/src/badge/stories/choosing-intent.story.tsx +1 -1
- package/src/badge/stories/index.story.tsx +1 -0
- package/src/card/stories/index.story.tsx +1 -0
- package/src/collapsible/stories/index.story.tsx +1 -0
- package/src/collapsible-card/content.tsx +12 -1
- package/src/collapsible-card/header.tsx +2 -0
- package/src/collapsible-card/stories/index.story.tsx +1 -0
- package/src/collapsible-card/style.module.css +16 -4
- package/src/dialog/content.tsx +47 -0
- package/src/dialog/context.tsx +14 -98
- package/src/dialog/description.tsx +27 -0
- package/src/dialog/footer.tsx +10 -2
- package/src/dialog/header.tsx +10 -2
- package/src/dialog/index.ts +16 -1
- package/src/dialog/popup.tsx +28 -8
- package/src/dialog/portal.tsx +18 -0
- package/src/dialog/root.tsx +22 -5
- package/src/dialog/stories/index.story.tsx +195 -51
- package/src/dialog/style.module.css +73 -23
- package/src/dialog/test/index.test.tsx +849 -149
- package/src/dialog/title.tsx +6 -4
- package/src/dialog/types.ts +64 -6
- package/src/drawer/action.tsx +28 -0
- package/src/drawer/close-icon.tsx +33 -0
- package/src/drawer/content.tsx +50 -0
- package/src/drawer/context.tsx +29 -0
- package/src/drawer/description.tsx +25 -0
- package/src/drawer/footer.tsx +34 -0
- package/src/drawer/header.tsx +34 -0
- package/src/drawer/index.ts +25 -0
- package/src/drawer/popup.tsx +100 -0
- package/src/drawer/portal.tsx +18 -0
- package/src/drawer/root.tsx +41 -0
- package/src/drawer/stories/index.story.tsx +543 -0
- package/src/drawer/style.module.css +324 -0
- package/src/drawer/test/index.test.tsx +1097 -0
- package/src/drawer/title.tsx +53 -0
- package/src/drawer/trigger.tsx +14 -0
- package/src/drawer/types.ts +174 -0
- package/src/empty-state/stories/index.story.tsx +2 -1
- package/src/form/input-control/stories/index.story.tsx +4 -1
- package/src/form/primitives/autocomplete/clear.tsx +35 -0
- package/src/form/primitives/autocomplete/collection.tsx +13 -0
- package/src/form/primitives/autocomplete/empty.tsx +17 -0
- package/src/form/primitives/autocomplete/index.ts +12 -0
- package/src/form/primitives/autocomplete/input-group.tsx +16 -0
- package/src/form/primitives/autocomplete/input.tsx +20 -0
- package/src/form/primitives/autocomplete/item.tsx +24 -0
- package/src/form/primitives/autocomplete/list-body.tsx +23 -0
- package/src/form/primitives/autocomplete/list.tsx +17 -0
- package/src/form/primitives/autocomplete/popup.tsx +42 -0
- package/src/form/primitives/autocomplete/portal.tsx +16 -0
- package/src/form/primitives/autocomplete/root.tsx +11 -0
- package/src/form/primitives/autocomplete/stories/fixtures.ts +35 -0
- package/src/form/primitives/autocomplete/stories/index.story.tsx +437 -0
- package/src/form/primitives/autocomplete/style.module.css +7 -0
- package/src/form/primitives/autocomplete/test/index.test.tsx +162 -0
- package/src/form/primitives/autocomplete/types.ts +74 -0
- package/src/form/primitives/autocomplete/value.tsx +6 -0
- package/src/form/primitives/field/stories/index.story.tsx +1 -1
- package/src/form/primitives/fieldset/stories/index.story.tsx +1 -1
- package/src/form/primitives/index.ts +1 -0
- package/src/form/primitives/input/stories/index.story.tsx +2 -1
- package/src/form/primitives/input-layout/stories/index.story.tsx +2 -1
- package/src/form/primitives/select/index.ts +1 -0
- package/src/form/primitives/select/item.tsx +0 -1
- package/src/form/primitives/select/popup.tsx +34 -37
- package/src/form/primitives/select/portal.tsx +16 -0
- package/src/form/primitives/select/stories/index.story.tsx +21 -7
- package/src/form/primitives/select/test/index.test.tsx +7 -3
- package/src/form/primitives/select/types.ts +9 -2
- package/src/index.ts +1 -0
- package/src/link/link.tsx +12 -26
- package/src/link/stories/index.story.tsx +6 -11
- package/src/link/style.module.css +5 -17
- package/src/link/test/index.test.tsx +31 -27
- package/src/link/types.ts +1 -2
- package/src/notice/action-link.tsx +7 -4
- package/src/notice/style.module.css +5 -5
- package/src/popover/context.tsx +6 -89
- package/src/popover/description.tsx +1 -5
- package/src/popover/index.ts +2 -1
- package/src/popover/popup.tsx +17 -15
- package/src/popover/portal.tsx +17 -0
- package/src/popover/root.tsx +2 -2
- package/src/popover/stories/index.story.tsx +56 -25
- package/src/popover/style.module.css +33 -4
- package/src/popover/test/index.test.tsx +189 -74
- package/src/popover/title.tsx +9 -5
- package/src/popover/types.ts +10 -15
- package/src/stack/stories/index.story.tsx +1 -0
- package/src/tabs/context.tsx +14 -34
- package/src/tabs/panel.tsx +7 -2
- package/src/tabs/stories/index.story.tsx +2 -1
- package/src/tabs/style.module.css +0 -17
- package/src/tabs/test/index.test.tsx +7 -3
- package/src/text/stories/index.story.tsx +1 -0
- package/src/text/text.tsx +2 -2
- package/src/tooltip/index.ts +2 -1
- package/src/tooltip/popup.tsx +24 -28
- package/src/tooltip/portal.tsx +16 -0
- package/src/tooltip/provider.tsx +3 -3
- package/src/tooltip/root.tsx +2 -2
- package/src/tooltip/stories/index.story.tsx +39 -1
- package/src/tooltip/stories/usage-guidelines.story.tsx +5 -1
- package/src/tooltip/style.module.css +12 -0
- package/src/tooltip/test/index.test.tsx +9 -3
- package/src/tooltip/trigger.tsx +3 -7
- package/src/tooltip/types.ts +13 -7
- package/src/utils/create-overlay-modal-context.tsx +34 -0
- package/src/utils/create-overlay-title-validation.tsx +116 -0
- package/src/utils/css/item-popup.module.css +9 -11
- package/src/utils/css/overlay-chrome.module.css +222 -0
- package/src/utils/render-portal-with-children.ts +27 -0
- package/src/utils/test/use-deprioritized-initial-focus.test.tsx +3 -3
- package/src/utils/use-deprioritized-initial-focus.ts +23 -17
- package/src/utils/use-overlay-scroll-state-attributes.ts +272 -0
- package/src/utils/use-schedule-validation.ts +45 -0
- package/src/visually-hidden/stories/index.story.tsx +1 -0
- package/src/visually-hidden/visually-hidden.tsx +9 -21
- package/build/types/css-modules.d.cjs +0 -2
- package/build/types/react.d.cjs +0 -5
- package/build/types/react.d.cjs.map +0 -7
- package/build-module/types/css-modules.d.mjs +0 -1
- package/build-module/types/react.d.mjs +0 -3
- package/build-module/types/react.d.mjs.map +0 -7
- package/src/types/css-modules.d.ts +0 -4
- package/src/types/react.d.ts +0 -7
- /package/build-module/{types/css-modules.d.mjs.map → drawer/types.mjs.map} +0 -0
- /package/{build/types/css-modules.d.cjs.map → build-module/form/primitives/autocomplete/types.mjs.map} +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Drawer as _Drawer } from '@base-ui/react/drawer';
|
|
2
|
+
import { useMergeRefs } from '@wordpress/compose';
|
|
3
|
+
import { forwardRef, useEffect, useRef } from '@wordpress/element';
|
|
4
|
+
import { Text } from '../text';
|
|
5
|
+
import { useDrawerValidationContext } from './context';
|
|
6
|
+
import styles from './style.module.css';
|
|
7
|
+
import type { TitleProps } from './types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Renders the drawer title. This component is required for accessibility
|
|
11
|
+
* and serves as both the visible heading and the accessible label for
|
|
12
|
+
* the drawer.
|
|
13
|
+
*
|
|
14
|
+
* **Required** — every drawer must include a `Drawer.Title`, even if
|
|
15
|
+
* visually hidden. The rendered element is linked to the popup via
|
|
16
|
+
* `aria-labelledby`. Renders an `<h2>` by default.
|
|
17
|
+
*
|
|
18
|
+
* To visually hide the title while keeping it accessible, wrap it with
|
|
19
|
+
* `VisuallyHidden` using the `render` prop:
|
|
20
|
+
*
|
|
21
|
+
* ```jsx
|
|
22
|
+
* <VisuallyHidden render={ <Drawer.Title /> }>
|
|
23
|
+
* Accessible title text
|
|
24
|
+
* </VisuallyHidden>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
const Title = forwardRef< HTMLHeadingElement, TitleProps >(
|
|
28
|
+
function DrawerTitle( { children, ...props }, forwardedRef ) {
|
|
29
|
+
const validationContext = useDrawerValidationContext();
|
|
30
|
+
const internalRef = useRef< HTMLHeadingElement >( null );
|
|
31
|
+
const mergedRef = useMergeRefs( [ internalRef, forwardedRef ] );
|
|
32
|
+
|
|
33
|
+
useEffect( () => {
|
|
34
|
+
if ( validationContext ) {
|
|
35
|
+
return validationContext.registerTitle( internalRef.current );
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}, [ validationContext ] );
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Text
|
|
42
|
+
ref={ mergedRef }
|
|
43
|
+
variant="heading-xl"
|
|
44
|
+
render={ <_Drawer.Title { ...props } /> }
|
|
45
|
+
className={ styles.title }
|
|
46
|
+
>
|
|
47
|
+
{ children }
|
|
48
|
+
</Text>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
export { Title };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Drawer as _Drawer } from '@base-ui/react/drawer';
|
|
2
|
+
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import type { TriggerProps } from './types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Renders a button that opens the drawer popup when clicked.
|
|
7
|
+
*/
|
|
8
|
+
const Trigger = forwardRef< HTMLButtonElement, TriggerProps >(
|
|
9
|
+
function DrawerTrigger( props, ref ) {
|
|
10
|
+
return <_Drawer.Trigger ref={ ref } { ...props } />;
|
|
11
|
+
}
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export { Trigger };
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { Drawer as _Drawer } from '@base-ui/react/drawer';
|
|
2
|
+
import type { ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react';
|
|
3
|
+
import type { Button } from '../button';
|
|
4
|
+
import type { IconButton } from '../icon-button';
|
|
5
|
+
import type { ComponentProps } from '../utils/types';
|
|
6
|
+
|
|
7
|
+
export type PortalProps = ComponentPropsWithoutRef< typeof _Drawer.Portal >;
|
|
8
|
+
|
|
9
|
+
export interface RootProps
|
|
10
|
+
extends Pick<
|
|
11
|
+
_Drawer.Root.Props,
|
|
12
|
+
| 'open'
|
|
13
|
+
| 'onOpenChange'
|
|
14
|
+
| 'onOpenChangeComplete'
|
|
15
|
+
| 'defaultOpen'
|
|
16
|
+
| 'modal'
|
|
17
|
+
| 'disablePointerDismissal'
|
|
18
|
+
> {
|
|
19
|
+
/**
|
|
20
|
+
* The edge the drawer slides in from, and the direction used to dismiss it
|
|
21
|
+
* via swipe gesture.
|
|
22
|
+
*
|
|
23
|
+
* - `'left'` / `'right'`: side drawers; swipe horizontally to dismiss.
|
|
24
|
+
* - `'down'`: bottom sheet; swipe down to dismiss.
|
|
25
|
+
* - `'up'`: top drawer; swipe up to dismiss.
|
|
26
|
+
*
|
|
27
|
+
* @default 'left'
|
|
28
|
+
*/
|
|
29
|
+
swipeDirection?: _Drawer.Root.Props[ 'swipeDirection' ];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The content to be rendered inside the component.
|
|
33
|
+
*/
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface TriggerProps extends ComponentProps< 'button' > {
|
|
38
|
+
/**
|
|
39
|
+
* The content to be rendered inside the component.
|
|
40
|
+
*/
|
|
41
|
+
children?: ReactNode;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface PopupProps
|
|
45
|
+
extends ComponentProps< 'div' >,
|
|
46
|
+
Pick< _Drawer.Popup.Props, 'initialFocus' | 'finalFocus' > {
|
|
47
|
+
/**
|
|
48
|
+
* The content to be rendered inside the component.
|
|
49
|
+
*/
|
|
50
|
+
children?: ReactNode;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Optional portal element, typically `<Drawer.Portal />` with custom
|
|
54
|
+
* `container`, `className`, or `style`. The backdrop and inner viewport
|
|
55
|
+
* are rendered as this portal's children (do not pass `children` on the
|
|
56
|
+
* portal element; they would be ignored).
|
|
57
|
+
*
|
|
58
|
+
* When omitted, `Drawer.Popup` uses `Drawer.Portal` with default props,
|
|
59
|
+
* rendering the portal in the current document's `<body>`.
|
|
60
|
+
*/
|
|
61
|
+
portal?: ReactElement< Omit< PortalProps, 'children' > >;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Controls the size of the drawer along its relevant axis (width for
|
|
65
|
+
* left/right drawers, height for up/down drawers).
|
|
66
|
+
*
|
|
67
|
+
* When not specified, left/right drawers use a default medium width
|
|
68
|
+
* and up/down drawers fit their content.
|
|
69
|
+
*
|
|
70
|
+
* - `'small'` — narrow/short.
|
|
71
|
+
* - `'medium'` — moderate.
|
|
72
|
+
* - `'large'` — wide/tall.
|
|
73
|
+
* - `'stretch'` — fills available space, respecting the viewport inset.
|
|
74
|
+
* - `'auto'` — fit content along the relevant axis.
|
|
75
|
+
*
|
|
76
|
+
* @default 'medium' for left/right drawers, 'auto' for up/down drawers
|
|
77
|
+
*/
|
|
78
|
+
size?: 'small' | 'medium' | 'large' | 'stretch' | 'auto';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface ActionProps extends ComponentProps< typeof Button > {
|
|
82
|
+
/**
|
|
83
|
+
* The content to be rendered inside the component.
|
|
84
|
+
*/
|
|
85
|
+
children?: ReactNode;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface FooterProps extends ComponentProps< 'footer' > {
|
|
89
|
+
/**
|
|
90
|
+
* The content to be rendered inside the component.
|
|
91
|
+
*/
|
|
92
|
+
children?: ReactNode;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface HeaderProps extends ComponentProps< 'header' > {
|
|
96
|
+
/**
|
|
97
|
+
* The content to be rendered inside the component.
|
|
98
|
+
*/
|
|
99
|
+
children?: ReactNode;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface ContentProps extends ComponentProps< 'div' > {
|
|
103
|
+
/**
|
|
104
|
+
* The body content to be rendered inside the scroll container.
|
|
105
|
+
*/
|
|
106
|
+
children?: ReactNode;
|
|
107
|
+
/**
|
|
108
|
+
* The scroll region automatically becomes a keyboard-reachable tab
|
|
109
|
+
* stop (`tabindex="0"`) whenever the body overflows, so keyboard
|
|
110
|
+
* users can arrow-scroll the region (WCAG 2.1.1). It becomes
|
|
111
|
+
* non-tabbable again as soon as the content no longer overflows.
|
|
112
|
+
*
|
|
113
|
+
* If you supply `tabIndex` explicitly, your value wins and is never
|
|
114
|
+
* overwritten — including `tabIndex={ -1 }` to opt out of the
|
|
115
|
+
* automatic tab stop entirely, and including overrides applied
|
|
116
|
+
* after the component had already managed the value.
|
|
117
|
+
*
|
|
118
|
+
* Two narrow edge cases:
|
|
119
|
+
* - If you later *remove* an explicit `tabIndex` at runtime, the
|
|
120
|
+
* component will resume managing it on the next overflow tick; it
|
|
121
|
+
* can't distinguish a previous explicit opt-out from an
|
|
122
|
+
* unconfigured state.
|
|
123
|
+
* - Passing `tabIndex={ 0 }` while the body overflows produces a
|
|
124
|
+
* value identical to the auto-managed one, so the component can
|
|
125
|
+
* no longer tell the two apart and may strip it on the next
|
|
126
|
+
* non-overflow tick. Pick a different value (or rely on the
|
|
127
|
+
* default behavior, which is already `0` while overflowing).
|
|
128
|
+
*
|
|
129
|
+
* Note: the scroll region is intentionally rendered without
|
|
130
|
+
* `role` / `aria-label`, so screen readers don't announce a
|
|
131
|
+
* generic "scrollable" landmark on top of the drawer's existing
|
|
132
|
+
* heading + body; the surrounding `Drawer.Title` and body content
|
|
133
|
+
* provide the context.
|
|
134
|
+
*/
|
|
135
|
+
tabIndex?: number;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface TitleProps extends ComponentProps< 'h2' > {
|
|
139
|
+
/**
|
|
140
|
+
* The title content to be rendered. This serves as both the visible
|
|
141
|
+
* heading and the accessible label for the drawer.
|
|
142
|
+
*
|
|
143
|
+
* When `Drawer.Title` is passed as a render element (e.g. to
|
|
144
|
+
* `VisuallyHidden`), children can be provided by the wrapper instead.
|
|
145
|
+
*/
|
|
146
|
+
children?: ReactNode;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface DescriptionProps extends ComponentProps< 'p' > {
|
|
150
|
+
/**
|
|
151
|
+
* The description content to be rendered inside the component.
|
|
152
|
+
*/
|
|
153
|
+
children?: ReactNode;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface CloseIconProps
|
|
157
|
+
extends Omit<
|
|
158
|
+
ComponentProps< typeof IconButton >,
|
|
159
|
+
'label' | 'icon' | 'loading' | 'loadingAnnouncement'
|
|
160
|
+
> {
|
|
161
|
+
/**
|
|
162
|
+
* A label describing the button's action, shown as a tooltip and to
|
|
163
|
+
* assistive technology.
|
|
164
|
+
*
|
|
165
|
+
* @default __( 'Close' )
|
|
166
|
+
*/
|
|
167
|
+
label?: ComponentProps< typeof IconButton >[ 'label' ];
|
|
168
|
+
/**
|
|
169
|
+
* The icon to display in the button.
|
|
170
|
+
*
|
|
171
|
+
* @default the `close` icon from `@wordpress/icons`
|
|
172
|
+
*/
|
|
173
|
+
icon?: ComponentProps< typeof IconButton >[ 'icon' ];
|
|
174
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
2
|
import { search } from '@wordpress/icons';
|
|
3
|
-
import { Button
|
|
3
|
+
import { Button } from '../../button';
|
|
4
|
+
import * as EmptyState from '../';
|
|
4
5
|
|
|
5
6
|
const meta: Meta< typeof EmptyState.Root > = {
|
|
6
7
|
title: 'Design System/Components/EmptyState',
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
2
|
import { useState } from '@wordpress/element';
|
|
3
3
|
import { plus, reset, seen, unseen } from '@wordpress/icons';
|
|
4
|
-
import {
|
|
4
|
+
import { InputControl } from '../';
|
|
5
|
+
import { IconButton } from '../../../icon-button';
|
|
6
|
+
import { InputLayout } from '../../primitives/input-layout';
|
|
7
|
+
import { Stack } from '../../../stack';
|
|
5
8
|
import {
|
|
6
9
|
WithPrefix,
|
|
7
10
|
WithSuffixControl,
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import { closeSmall } from '@wordpress/icons';
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import { IconButton } from '../../../icon-button';
|
|
6
|
+
import type { AutocompleteClearProps } from './types';
|
|
7
|
+
|
|
8
|
+
const DEFAULT_RENDER = ( {
|
|
9
|
+
'aria-label': ariaLabel = __( 'Clear' ),
|
|
10
|
+
...props
|
|
11
|
+
}: AutocompleteClearProps ) => (
|
|
12
|
+
<IconButton
|
|
13
|
+
icon={ closeSmall }
|
|
14
|
+
size="small"
|
|
15
|
+
variant="minimal"
|
|
16
|
+
tone="neutral"
|
|
17
|
+
label={ ariaLabel }
|
|
18
|
+
{ ...props }
|
|
19
|
+
/>
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* A button that clears the input value.
|
|
24
|
+
*/
|
|
25
|
+
export const Clear = forwardRef< HTMLButtonElement, AutocompleteClearProps >(
|
|
26
|
+
function Clear( { render = DEFAULT_RENDER, ...restProps }, ref ) {
|
|
27
|
+
return (
|
|
28
|
+
<_Autocomplete.Clear
|
|
29
|
+
ref={ ref }
|
|
30
|
+
render={ render }
|
|
31
|
+
{ ...restProps }
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import type { AutocompleteCollectionProps } from './types';
|
|
3
|
+
|
|
4
|
+
export function Collection( {
|
|
5
|
+
children,
|
|
6
|
+
...restProps
|
|
7
|
+
}: AutocompleteCollectionProps ) {
|
|
8
|
+
return (
|
|
9
|
+
<_Autocomplete.Collection { ...restProps }>
|
|
10
|
+
{ children }
|
|
11
|
+
</_Autocomplete.Collection>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { forwardRef } from '@wordpress/element';
|
|
4
|
+
import type { AutocompleteEmptyProps } from './types';
|
|
5
|
+
import itemPopupStyles from '../../../utils/css/item-popup.module.css';
|
|
6
|
+
|
|
7
|
+
export const Empty = forwardRef< HTMLDivElement, AutocompleteEmptyProps >(
|
|
8
|
+
function Empty( { className, ...restProps }, ref ) {
|
|
9
|
+
return (
|
|
10
|
+
<_Autocomplete.Empty
|
|
11
|
+
className={ clsx( itemPopupStyles.empty, className ) }
|
|
12
|
+
ref={ ref }
|
|
13
|
+
{ ...restProps }
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { Clear } from './clear';
|
|
2
|
+
export { Collection } from './collection';
|
|
3
|
+
export { Empty } from './empty';
|
|
4
|
+
export { InputGroup } from './input-group';
|
|
5
|
+
export { Input } from './input';
|
|
6
|
+
export { Item } from './item';
|
|
7
|
+
export { List } from './list';
|
|
8
|
+
export { ListBody } from './list-body';
|
|
9
|
+
export { Portal } from './portal';
|
|
10
|
+
export { Popup } from './popup';
|
|
11
|
+
export { Root } from './root';
|
|
12
|
+
export { Value } from './value';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import type { AutocompleteInputGroupProps } from './types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Wrapper around `Autocomplete.Input` that defines the visual control
|
|
7
|
+
* boundary when the input is composed with prefix/suffix slots or other
|
|
8
|
+
* elements. Without this wrapper, the popup anchors to the bare `<input>`
|
|
9
|
+
* instead of the full control. Also adds `role="group"`.
|
|
10
|
+
*/
|
|
11
|
+
export const InputGroup = forwardRef<
|
|
12
|
+
HTMLDivElement,
|
|
13
|
+
AutocompleteInputGroupProps
|
|
14
|
+
>( function InputGroup( props, ref ) {
|
|
15
|
+
return <_Autocomplete.InputGroup ref={ ref } { ...props } />;
|
|
16
|
+
} );
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import { Input as InputPrimitive } from '../input';
|
|
4
|
+
import type { AutocompleteInputProps } from './types';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_RENDER = ( props: AutocompleteInputProps ) => (
|
|
7
|
+
<InputPrimitive { ...props } />
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
export const Input = forwardRef< HTMLInputElement, AutocompleteInputProps >(
|
|
11
|
+
function Input( { render = DEFAULT_RENDER, ...restProps }, ref ) {
|
|
12
|
+
return (
|
|
13
|
+
<_Autocomplete.Input
|
|
14
|
+
ref={ ref }
|
|
15
|
+
render={ render }
|
|
16
|
+
{ ...restProps }
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { forwardRef } from '@wordpress/element';
|
|
4
|
+
import itemPopupStyles from '../../../utils/css/item-popup.module.css';
|
|
5
|
+
import resetStyles from '../../../utils/css/resets.module.css';
|
|
6
|
+
import type { AutocompleteItemProps } from './types';
|
|
7
|
+
|
|
8
|
+
export const Item = forwardRef< HTMLDivElement, AutocompleteItemProps >(
|
|
9
|
+
function Item( { className, children, ...restProps }, ref ) {
|
|
10
|
+
return (
|
|
11
|
+
<_Autocomplete.Item
|
|
12
|
+
className={ clsx(
|
|
13
|
+
resetStyles[ 'box-sizing' ],
|
|
14
|
+
itemPopupStyles.item,
|
|
15
|
+
className
|
|
16
|
+
) }
|
|
17
|
+
ref={ ref }
|
|
18
|
+
{ ...restProps }
|
|
19
|
+
>
|
|
20
|
+
{ children }
|
|
21
|
+
</_Autocomplete.Item>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { mergeProps, useRender } from '@base-ui/react';
|
|
2
|
+
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import type { AutocompleteListBodyProps } from './types';
|
|
4
|
+
import itemPopupStyles from '../../../utils/css/item-popup.module.css';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A layout container for the main scrolling area in the `List`, for holding `Item`s.
|
|
8
|
+
*/
|
|
9
|
+
export const ListBody = forwardRef< HTMLDivElement, AutocompleteListBodyProps >(
|
|
10
|
+
function ListBody( { render, ...props }, ref ) {
|
|
11
|
+
const element = useRender( {
|
|
12
|
+
defaultTagName: 'div',
|
|
13
|
+
render,
|
|
14
|
+
ref,
|
|
15
|
+
props: mergeProps< 'div' >(
|
|
16
|
+
{ className: itemPopupStyles[ 'list-scrollable-container' ] },
|
|
17
|
+
props
|
|
18
|
+
),
|
|
19
|
+
} );
|
|
20
|
+
|
|
21
|
+
return element;
|
|
22
|
+
}
|
|
23
|
+
);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { forwardRef } from '@wordpress/element';
|
|
4
|
+
import type { AutocompleteListProps } from './types';
|
|
5
|
+
import itemPopupStyles from '../../../utils/css/item-popup.module.css';
|
|
6
|
+
|
|
7
|
+
export const List = forwardRef< HTMLDivElement, AutocompleteListProps >(
|
|
8
|
+
function List( { className, ...restProps }, ref ) {
|
|
9
|
+
return (
|
|
10
|
+
<_Autocomplete.List
|
|
11
|
+
className={ clsx( itemPopupStyles.list, className ) }
|
|
12
|
+
ref={ ref }
|
|
13
|
+
{ ...restProps }
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { forwardRef } from '@wordpress/element';
|
|
4
|
+
import {
|
|
5
|
+
type ThemeProvider as ThemeProviderType,
|
|
6
|
+
privateApis as themePrivateApis,
|
|
7
|
+
} from '@wordpress/theme';
|
|
8
|
+
import { unlock } from '../../../lock-unlock';
|
|
9
|
+
import { renderPortalWithChildren } from '../../../utils/render-portal-with-children';
|
|
10
|
+
import itemPopupStyles from '../../../utils/css/item-popup.module.css';
|
|
11
|
+
import resetStyles from '../../../utils/css/resets.module.css';
|
|
12
|
+
import styles from './style.module.css';
|
|
13
|
+
import { Portal } from './portal';
|
|
14
|
+
import type { AutocompletePopupProps } from './types';
|
|
15
|
+
import { ITEM_POPUP_POSITIONER_PROPS } from '../constants';
|
|
16
|
+
|
|
17
|
+
const ThemeProvider: typeof ThemeProviderType =
|
|
18
|
+
unlock( themePrivateApis ).ThemeProvider;
|
|
19
|
+
|
|
20
|
+
export const Popup = forwardRef< HTMLDivElement, AutocompletePopupProps >(
|
|
21
|
+
function Popup( { className, portal, ...restProps }, ref ) {
|
|
22
|
+
const portalChildren = (
|
|
23
|
+
<_Autocomplete.Positioner
|
|
24
|
+
{ ...ITEM_POPUP_POSITIONER_PROPS }
|
|
25
|
+
className={ clsx(
|
|
26
|
+
resetStyles[ 'box-sizing' ],
|
|
27
|
+
styles.positioner
|
|
28
|
+
) }
|
|
29
|
+
>
|
|
30
|
+
<ThemeProvider>
|
|
31
|
+
<_Autocomplete.Popup
|
|
32
|
+
ref={ ref }
|
|
33
|
+
className={ clsx( itemPopupStyles.popup, className ) }
|
|
34
|
+
{ ...restProps }
|
|
35
|
+
/>
|
|
36
|
+
</ThemeProvider>
|
|
37
|
+
</_Autocomplete.Positioner>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
return renderPortalWithChildren( portal, <Portal />, portalChildren );
|
|
41
|
+
}
|
|
42
|
+
);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import type { PortalProps } from './types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Root element that portals `Autocomplete` popup content. Pass to
|
|
7
|
+
* `Autocomplete.Popup`'s `portal` prop. When `portal` is omitted,
|
|
8
|
+
* `Autocomplete.Popup` uses this component with default props.
|
|
9
|
+
*/
|
|
10
|
+
const Portal = forwardRef< HTMLDivElement, PortalProps >(
|
|
11
|
+
function AutocompletePortal( props, ref ) {
|
|
12
|
+
return <_Autocomplete.Portal ref={ ref } { ...props } />;
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export { Portal };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Autocomplete as _Autocomplete } from '@base-ui/react/autocomplete';
|
|
2
|
+
import type { AutocompleteRootProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Low-level primitive for an autocomplete input that suggests options as
|
|
6
|
+
* you type. Unlike `Combobox`, the input can contain free-form text and
|
|
7
|
+
* suggestions only optionally autocomplete the text.
|
|
8
|
+
*/
|
|
9
|
+
export function Root( props: AutocompleteRootProps ) {
|
|
10
|
+
return <_Autocomplete.Root { ...props } />;
|
|
11
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface FixtureItem {
|
|
2
|
+
id: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export const COMMANDS: FixtureItem[] = [
|
|
7
|
+
{ id: 'c1', value: 'Add new page' },
|
|
8
|
+
{ id: 'c2', value: 'Add new post' },
|
|
9
|
+
{ id: 'c3', value: 'Edit site' },
|
|
10
|
+
{ id: 'c4', value: 'View site' },
|
|
11
|
+
{ id: 'c5', value: 'Manage plugins' },
|
|
12
|
+
{ id: 'c6', value: 'Manage users' },
|
|
13
|
+
{ id: 'c7', value: 'Open settings' },
|
|
14
|
+
{ id: 'c8', value: 'Toggle dark mode' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
export const USERS: FixtureItem[] = [
|
|
18
|
+
{ id: 'm1', value: 'alice' },
|
|
19
|
+
{ id: 'm2', value: 'bob' },
|
|
20
|
+
{ id: 'm3', value: 'carol' },
|
|
21
|
+
{ id: 'm4', value: 'dave' },
|
|
22
|
+
{ id: 'm5', value: 'eve' },
|
|
23
|
+
{ id: 'm6', value: 'frank' },
|
|
24
|
+
{ id: 'm7', value: 'grace' },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export const URLS: FixtureItem[] = [
|
|
28
|
+
{ id: 'u1', value: 'wordpress.org' },
|
|
29
|
+
{ id: 'u2', value: 'developer.wordpress.org/plugins/' },
|
|
30
|
+
{ id: 'u3', value: 'developer.wordpress.org/themes/' },
|
|
31
|
+
{ id: 'u4', value: 'developer.wordpress.org/block-editor/' },
|
|
32
|
+
{ id: 'u5', value: 'github.com/WordPress/gutenberg' },
|
|
33
|
+
{ id: 'u6', value: 'make.wordpress.org/core/' },
|
|
34
|
+
{ id: 'u7', value: 'make.wordpress.org/design/' },
|
|
35
|
+
];
|