@purpur/library 9.10.0 → 10.0.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.json +124 -0
- package/CHANGELOG.md +53 -1
- package/dist/LICENSE.txt +270 -175
- package/dist/{RichText-BAVZadzi.js → RichText-B865Qkzj.js} +2 -2
- package/dist/{RichText-BAVZadzi.js.map → RichText-B865Qkzj.js.map} +1 -1
- package/dist/{RichText-D4vznH1B.mjs → RichText-CPkBwXNI.mjs} +3 -3
- package/dist/{RichText-D4vznH1B.mjs.map → RichText-CPkBwXNI.mjs.map} +1 -1
- package/dist/accordion-aEZas0k1.mjs +122 -0
- package/dist/accordion-aEZas0k1.mjs.map +1 -0
- package/dist/accordion-zwsF1oUj.js +2 -0
- package/dist/accordion-zwsF1oUj.js.map +1 -0
- package/dist/accordion.cjs.js +1 -1
- package/dist/accordion.es.js +1 -1
- package/dist/button-C5CYysw5.js +2 -0
- package/dist/button-C5CYysw5.js.map +1 -0
- package/dist/button-mHw_J7JU.mjs +106 -0
- package/dist/button-mHw_J7JU.mjs.map +1 -0
- package/dist/button.cjs.js +1 -1
- package/dist/button.es.js +1 -1
- package/dist/{calendar-Cru-p6gC.mjs → calendar-DTL_g0ue.mjs} +4 -14
- package/dist/{calendar-Cru-p6gC.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
- package/dist/{calendar-DDR8CQYo.js → calendar-DVOrK53J.js} +2 -2
- package/dist/{calendar-DDR8CQYo.js.map → calendar-DVOrK53J.js.map} +1 -1
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.es.js +1 -1
- package/dist/{card-t2ZkZ82G.mjs → card-C0yhMN5d.mjs} +3 -3
- package/dist/card-C0yhMN5d.mjs.map +1 -0
- package/dist/{card-pdsBEJif.js → card-CIlY38WI.js} +2 -2
- package/dist/card-CIlY38WI.js.map +1 -0
- package/dist/card.cjs.js +1 -1
- package/dist/card.es.js +1 -1
- package/dist/{carousel-BIKcwvYz.mjs → carousel-Dq9yzk_-.mjs} +2 -2
- package/dist/{carousel-BIKcwvYz.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
- package/dist/{carousel-DnSaLDZf.js → carousel-j-s6M1hu.js} +2 -2
- package/dist/{carousel-DnSaLDZf.js.map → carousel-j-s6M1hu.js.map} +1 -1
- package/dist/carousel.cjs.js +1 -1
- package/dist/carousel.es.js +1 -1
- package/dist/{chat-field-Wjvh2J6C.js → chat-field-CLAjIHlM.js} +2 -2
- package/dist/{chat-field-Wjvh2J6C.js.map → chat-field-CLAjIHlM.js.map} +1 -1
- package/dist/{chat-field-CVF4DooY.mjs → chat-field-nxFRXoQx.mjs} +2 -2
- package/dist/{chat-field-CVF4DooY.mjs.map → chat-field-nxFRXoQx.mjs.map} +1 -1
- package/dist/chat-field.cjs.js +1 -1
- package/dist/chat-field.es.js +1 -1
- package/dist/{chip-group-B775zvKD.js → chip-group-BLuG0MC6.js} +2 -2
- package/dist/{chip-group-B775zvKD.js.map → chip-group-BLuG0MC6.js.map} +1 -1
- package/dist/{chip-group-xuOe7nL3.mjs → chip-group-Bo4kJ8Vq.mjs} +2 -2
- package/dist/{chip-group-xuOe7nL3.mjs.map → chip-group-Bo4kJ8Vq.mjs.map} +1 -1
- package/dist/chip-group.cjs.js +1 -1
- package/dist/chip-group.es.js +1 -1
- package/dist/color-dot-BEE5rKco.js.map +1 -1
- package/dist/color-dot-Dz9yzVX3.mjs.map +1 -1
- package/dist/{comparison-table-Dtqxz8vL.js → comparison-table-CRWRijfG.js} +2 -2
- package/dist/{comparison-table-Dtqxz8vL.js.map → comparison-table-CRWRijfG.js.map} +1 -1
- package/dist/{comparison-table-D1evE0ri.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
- package/dist/{comparison-table-D1evE0ri.mjs.map → comparison-table-DYaRaP9Z.mjs.map} +1 -1
- package/dist/comparison-table.cjs.js +1 -1
- package/dist/comparison-table.es.js +1 -1
- package/dist/components/accordion/src/accordion-item.d.ts +3 -3
- package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
- package/dist/components/accordion/src/accordion.d.ts +3 -7
- package/dist/components/accordion/src/accordion.d.ts.map +1 -1
- package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -1
- package/dist/components/alert-badge/src/alert-badge.d.ts +1 -1
- package/dist/components/avatar/src/avatar.d.ts +1 -1
- package/dist/components/badge/src/badge.d.ts +1 -1
- package/dist/components/button/src/button.d.ts +7 -8
- package/dist/components/button/src/button.d.ts.map +1 -1
- package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
- package/dist/components/calendar/src/calendar.d.ts.map +1 -1
- package/dist/components/card/src/card-content-container.d.ts +1 -1
- package/dist/components/card/src/card-content.d.ts +1 -1
- package/dist/components/card/src/card-cta.d.ts +1 -1
- package/dist/components/card/src/card-heading.d.ts +4 -4
- package/dist/components/card/src/card-heading.d.ts.map +1 -1
- package/dist/components/card/src/card-media-layout.d.ts +1 -1
- package/dist/components/card/src/card-media.d.ts +1 -1
- package/dist/components/card/src/card-root.d.ts +1 -1
- package/dist/components/checkbox/src/checkbox.d.ts +1 -1
- package/dist/components/color-dot/src/color-dot.d.ts +2 -1
- package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
- package/dist/components/content-block/src/content-block-group.d.ts +1 -1
- package/dist/components/content-block/src/content-block.d.ts +3 -3
- package/dist/components/content-block/src/content-block.d.ts.map +1 -1
- package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
- package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
- package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +2 -2
- package/dist/components/cta-link/src/cta-link.d.ts +10 -10
- package/dist/components/date-picker/src/date-picker.d.ts +5 -5
- package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
- package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +1 -1
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -4
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-container.d.ts +1 -1
- package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-content.d.ts +2 -2
- package/dist/components/drawer/src/drawer-frame.d.ts +1 -1
- package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
- package/dist/components/drawer/src/drawer-header.d.ts +1 -1
- package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
- package/dist/components/drawer/src/drawer.context.d.ts +2 -0
- package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +2 -0
- package/dist/components/drawer/src/drawer.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
- package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
- package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
- package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
- package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
- package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
- package/dist/components/field-error-text/src/field-error-text.d.ts +2 -2
- package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
- package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
- package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
- package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
- package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
- package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
- package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload.d.ts +6 -0
- package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
- package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
- package/dist/components/footer/src/footer-navigation.d.ts +1 -1
- package/dist/components/footer/src/footer.d.ts +3 -3
- package/dist/components/grid/src/grid.item.d.ts +1 -1
- package/dist/components/heading/src/heading.d.ts +20 -2
- package/dist/components/heading/src/heading.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner-actions.d.ts +1 -1
- package/dist/components/hero-banner/src/hero-banner-media.d.ts +1 -1
- package/dist/components/hero-banner/src/hero-banner-types.d.ts +2 -2
- package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
- package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
- package/dist/components/icon/src/icon.d.ts +2 -2
- package/dist/components/label/src/label.d.ts +1 -1
- package/dist/components/listbox/src/listbox-item.d.ts +1 -1
- package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
- package/dist/components/logo/src/logo.types.d.ts +2 -2
- package/dist/components/modal/src/modal-content.d.ts +1 -1
- package/dist/components/modal/src/modal-content.d.ts.map +1 -1
- package/dist/components/notification-banner/src/notification-banner.d.ts +5 -5
- package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
- package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
- package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
- package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
- package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
- package/dist/components/pagination/src/types.d.ts +1 -1
- package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
- package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
- package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
- package/dist/components/password-field/src/password-strength.d.ts +2 -2
- package/dist/components/promotion-card/src/promotion-card.d.ts +9 -9
- package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
- package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
- package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
- package/dist/components/quantity-selector/src/quantity-selector.d.ts +2 -5
- package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
- package/dist/components/radio-card-group/src/radio-card-group.d.ts +2 -2
- package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
- package/dist/components/rich-text/src/types.d.ts +3 -3
- package/dist/components/search-field/src/search-field.d.ts +6 -6
- package/dist/components/skeleton/src/skeleton.d.ts +1 -1
- package/dist/components/spinner/src/spinner.d.ts +2 -2
- package/dist/components/stepper/src/stepper-container.d.ts +1 -1
- package/dist/components/stepper/src/stepper-content.d.ts +1 -1
- package/dist/components/stepper/src/{stepper-button.d.ts → stepper-link.d.ts} +5 -4
- package/dist/components/stepper/src/stepper-link.d.ts.map +1 -0
- package/dist/components/stepper/src/stepper-nav-items.d.ts +1 -0
- package/dist/components/stepper/src/stepper-nav-items.d.ts.map +1 -1
- package/dist/components/stepper/src/stepper.d.ts.map +1 -1
- package/dist/components/stepper/src/types.d.ts +2 -2
- package/dist/components/stepper/src/types.d.ts.map +1 -1
- package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
- package/dist/components/table/src/cell-types/button-group-cell.d.ts +3 -3
- package/dist/components/table/src/draggable-table.d.ts.map +1 -1
- package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
- package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
- package/dist/components/table/src/table-content.d.ts +1 -1
- package/dist/components/table/src/table-headers.d.ts +2 -3
- package/dist/components/table/src/table-headers.d.ts.map +1 -1
- package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
- package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
- package/dist/components/table/src/table.d.ts +2 -9
- package/dist/components/table/src/table.d.ts.map +1 -1
- package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
- package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
- package/dist/components/table/src/test-utils/table-data.d.ts +3 -3
- package/dist/components/tabs/src/tab-content.d.ts +3 -1
- package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
- package/dist/components/text-area/src/text-area.d.ts +1 -1
- package/dist/components/text-field/src/text-field-ai.d.ts +4 -4
- package/dist/components/text-field/src/text-field-base.d.ts +4 -4
- package/dist/components/text-field/src/text-field.d.ts +5 -5
- package/dist/components/text-spacing/src/text-spacing.d.ts +2 -2
- package/dist/components/tooltip/src/tooltip.d.ts +4 -6
- package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
- package/dist/components-metadata.js +20 -10
- package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
- package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
- package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
- package/dist/content-block-DQppQumZ.js.map +1 -0
- package/dist/content-block.cjs.js +1 -1
- package/dist/content-block.es.js +1 -1
- package/dist/core.esm-BmIwrKkJ.js +6 -0
- package/dist/core.esm-BmIwrKkJ.js.map +1 -0
- package/dist/core.esm-CKGHpLM_.mjs +2892 -0
- package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
- package/dist/country-flag-icon/LICENSE.txt +11 -0
- package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
- package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
- package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
- package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
- package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
- package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
- package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
- package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
- package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
- package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
- package/dist/{date-field-hA79n6mP.js → date-field-CtpWDaSh.js} +2 -2
- package/dist/{date-field-hA79n6mP.js.map → date-field-CtpWDaSh.js.map} +1 -1
- package/dist/{date-field-DVp_RMNm.mjs → date-field-_rCuf15v.mjs} +2 -2
- package/dist/{date-field-DVp_RMNm.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
- package/dist/date-field.cjs.js +1 -1
- package/dist/date-field.es.js +1 -1
- package/dist/{date-picker-Dzoo_hhQ.js → date-picker-BYlszX1W.js} +2 -2
- package/dist/{date-picker-Dzoo_hhQ.js.map → date-picker-BYlszX1W.js.map} +1 -1
- package/dist/{date-picker-B8ta-Q8V.mjs → date-picker-sqcNAplg.mjs} +6 -6
- package/dist/{date-picker-B8ta-Q8V.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/date-range-field-B33XeBW8.js +2 -0
- package/dist/date-range-field-B33XeBW8.js.map +1 -0
- package/dist/{date-range-field-BZUjfftV.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
- package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
- package/dist/date-range-field.cjs.js +1 -1
- package/dist/date-range-field.es.js +1 -1
- package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
- package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
- package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
- package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
- package/dist/dismissable-chip-group.cjs.js +1 -1
- package/dist/dismissable-chip-group.es.js +1 -1
- package/dist/{drawer-cIUx6WSZ.mjs → drawer-Chx3H8EU.mjs} +241 -233
- package/dist/drawer-Chx3H8EU.mjs.map +1 -0
- package/dist/drawer-oFJcxW58.js +2 -0
- package/dist/drawer-oFJcxW58.js.map +1 -0
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/dropdown-Bn7WvsL2.js +2 -0
- package/dist/dropdown-Bn7WvsL2.js.map +1 -0
- package/dist/dropdown-CrufJnb4.mjs +945 -0
- package/dist/dropdown-CrufJnb4.mjs.map +1 -0
- package/dist/dropdown.cjs.js +1 -1
- package/dist/dropdown.es.js +1 -1
- package/dist/file-upload-Ctw6LCTU.mjs +589 -0
- package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
- package/dist/file-upload-MvNuX4ks.js +2 -0
- package/dist/file-upload-MvNuX4ks.js.map +1 -0
- package/dist/file-upload.cjs.js +2 -0
- package/dist/file-upload.cjs.js.map +1 -0
- package/dist/file-upload.es.js +5 -0
- package/dist/file-upload.es.js.map +1 -0
- package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
- package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
- package/dist/footer-Bbemct3Z.js +2 -0
- package/dist/footer-Bbemct3Z.js.map +1 -0
- package/dist/{footer-D-2b7UIB.mjs → footer-DkVmTd-f.mjs} +25 -25
- package/dist/footer-DkVmTd-f.mjs.map +1 -0
- package/dist/footer.cjs.js +1 -1
- package/dist/footer.es.js +1 -1
- package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
- package/dist/heading-BG7JTFO1.mjs.map +1 -0
- package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
- package/dist/heading-BPeRwNYu.js.map +1 -0
- package/dist/heading.cjs.js +1 -1
- package/dist/heading.es.js +6 -5
- package/dist/{hero-banner-n9K-Jsdz.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
- package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
- package/dist/{hero-banner--v-ezYMr.js → hero-banner-Mag1OwL4.js} +2 -2
- package/dist/hero-banner-Mag1OwL4.js.map +1 -0
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/index-BPY_9ddu.js +2 -0
- package/dist/index-BPY_9ddu.js.map +1 -0
- package/dist/index-Fewa56cA.mjs +440 -0
- package/dist/index-Fewa56cA.mjs.map +1 -0
- package/dist/libraries/library/src/calendar.d.ts +1 -1
- package/dist/libraries/library/src/card.d.ts +1 -1
- package/dist/libraries/library/src/container.d.ts +1 -1
- package/dist/libraries/library/src/content-block.d.ts +1 -1
- package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
- package/dist/libraries/library/src/drawer.d.ts +1 -1
- package/dist/libraries/library/src/file-upload.d.ts +6 -0
- package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
- package/dist/libraries/library/src/library.d.ts +2 -1
- package/dist/libraries/library/src/library.d.ts.map +1 -1
- package/dist/libraries/library/src/notification-banner.d.ts +1 -1
- package/dist/libraries/library/src/notification.d.ts +1 -1
- package/dist/libraries/library/src/password-field.d.ts +6 -2
- package/dist/libraries/library/src/password-field.d.ts.map +1 -1
- package/dist/libraries/library/src/radio-button-group.d.ts +1 -1
- package/dist/libraries/library/src/radio-card-group.d.ts +1 -1
- package/dist/libraries/library/src/spinner.d.ts +1 -1
- package/dist/libraries/library/src/stepper.d.ts +1 -1
- package/dist/libraries/library/src/tooltip.d.ts +1 -1
- package/dist/libraries/library/src/visually-hidden.d.ts +1 -1
- package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +603 -601
- package/dist/library.es.js.map +1 -1
- package/dist/link-Dzqd0QuD.js +2 -0
- package/dist/{link-DhWVrkTz.js.map → link-Dzqd0QuD.js.map} +1 -1
- package/dist/link-ccCdDvBc.mjs +72 -0
- package/dist/{link-DY5WLpyc.mjs.map → link-ccCdDvBc.mjs.map} +1 -1
- package/dist/link.cjs.js +1 -1
- package/dist/link.es.js +1 -1
- package/dist/main-B501z9Ql.js +2 -0
- package/dist/main-B501z9Ql.js.map +1 -0
- package/dist/main-L71Sqg3s.mjs +1016 -0
- package/dist/main-L71Sqg3s.mjs.map +1 -0
- package/dist/{modal-D0Qxrvx5.js → modal-CXOYUsJm.js} +2 -2
- package/dist/modal-CXOYUsJm.js.map +1 -0
- package/dist/{modal-Bu1Zv5Ic.mjs → modal-Pwvhrzn-.mjs} +31 -31
- package/dist/modal-Pwvhrzn-.mjs.map +1 -0
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{notification-D2oClkX2.js → notification-BkM2vLzI.js} +2 -2
- package/dist/{notification-D2oClkX2.js.map → notification-BkM2vLzI.js.map} +1 -1
- package/dist/{notification-DiVdy6E_.mjs → notification-Cbn0UN1p.mjs} +3 -3
- package/dist/{notification-DiVdy6E_.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
- package/dist/notification-banner-B9RhXAZ8.js +2 -0
- package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
- package/dist/{notification-banner-CZTQZ5Le.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
- package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
- package/dist/notification-banner.cjs.js +1 -1
- package/dist/notification-banner.es.js +1 -1
- package/dist/notification.cjs.js +1 -1
- package/dist/notification.es.js +1 -1
- package/dist/password-field-Cy_E-D_G.mjs +200 -0
- package/dist/password-field-Cy_E-D_G.mjs.map +1 -0
- package/dist/password-field-lKyWHjQS.js +2 -0
- package/dist/password-field-lKyWHjQS.js.map +1 -0
- package/dist/password-field.cjs.js +2 -0
- package/dist/password-field.cjs.js.map +1 -0
- package/dist/password-field.es.js +6 -0
- package/dist/password-field.es.js.map +1 -0
- package/dist/popover-B6ntmuEK.mjs +614 -0
- package/dist/popover-B6ntmuEK.mjs.map +1 -0
- package/dist/popover-DJHMEFXP.js +2 -0
- package/dist/popover-DJHMEFXP.js.map +1 -0
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
- package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
- package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
- package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
- package/dist/product-card.cjs.js +1 -1
- package/dist/product-card.es.js +1 -1
- package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
- package/dist/promotion-card-B3mz__m7.js.map +1 -0
- package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
- package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
- package/dist/promotion-card.cjs.js +1 -1
- package/dist/promotion-card.es.js +1 -1
- package/dist/purpur.css +1 -1
- package/dist/quantity-selector-Cy0aJGGX.js +2 -0
- package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
- package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
- package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
- package/dist/quantity-selector.cjs.js +1 -1
- package/dist/quantity-selector.es.js +2 -3
- package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
- package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
- package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
- package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
- package/dist/radio-button-group.cjs.js +1 -1
- package/dist/radio-button-group.es.js +1 -1
- package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
- package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
- package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
- package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
- package/dist/radio-card-group.cjs.js +1 -1
- package/dist/radio-card-group.es.js +1 -1
- package/dist/rich-text.cjs.js +1 -1
- package/dist/rich-text.es.js +1 -1
- package/dist/{search-field-afhtC6q5.mjs → search-field-BTJtRyw5.mjs} +3 -3
- package/dist/{search-field-afhtC6q5.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
- package/dist/{search-field-WJBtiK0K.js → search-field-nzVXak1a.js} +2 -2
- package/dist/{search-field-WJBtiK0K.js.map → search-field-nzVXak1a.js.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/stepper-D59T-Y2_.mjs +469 -0
- package/dist/stepper-D59T-Y2_.mjs.map +1 -0
- package/dist/stepper-Dao4XaDV.js +2 -0
- package/dist/stepper-Dao4XaDV.js.map +1 -0
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/table-DRSgesQ4.mjs +4545 -0
- package/dist/table-DRSgesQ4.mjs.map +1 -0
- package/dist/table-zBs9JALh.js +5 -0
- package/dist/table-zBs9JALh.js.map +1 -0
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/tabs-D2__wbCs.js +2 -0
- package/dist/tabs-D2__wbCs.js.map +1 -0
- package/dist/tabs-DOG5g2wf.mjs +440 -0
- package/dist/tabs-DOG5g2wf.mjs.map +1 -0
- package/dist/tabs.cjs.js +1 -1
- package/dist/tabs.es.js +1 -1
- package/dist/{text-field-VW8ObP83.js → text-field-BSgqJjpv.js} +2 -2
- package/dist/text-field-BSgqJjpv.js.map +1 -0
- package/dist/{text-field-D0e-cRbG.mjs → text-field-MQHeITxy.mjs} +3 -3
- package/dist/text-field-MQHeITxy.mjs.map +1 -0
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.es.js +1 -1
- package/dist/tooltip-DeP1UsPW.js +2 -0
- package/dist/{tooltip-B-11qk-0.js.map → tooltip-DeP1UsPW.js.map} +1 -1
- package/dist/{tooltip-DngYHn5W.mjs → tooltip-bqdd2lJL.mjs} +347 -309
- package/dist/{tooltip-DngYHn5W.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/package.json +21 -26
- package/scripts/generate.mts +1 -4
- package/src/aliases.ts +8 -4
- package/src/entries.js +2 -1
- package/src/{autocomplete.ts → file-upload.ts} +1 -1
- package/src/library.ts +2 -2
- package/src/password-field.ts +0 -1
- package/src/purpur.css +4 -0
- package/dist/accordion-B6OoQ4uZ.mjs +0 -128
- package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
- package/dist/accordion-BfpN5h4C.js +0 -2
- package/dist/accordion-BfpN5h4C.js.map +0 -1
- package/dist/autocomplete-BX1KDZqL.js +0 -2
- package/dist/autocomplete-BX1KDZqL.js.map +0 -1
- package/dist/autocomplete-CmLzmWp4.mjs +0 -228
- package/dist/autocomplete-CmLzmWp4.mjs.map +0 -1
- package/dist/autocomplete.cjs.js +0 -2
- package/dist/autocomplete.cjs.js.map +0 -1
- package/dist/autocomplete.es.js +0 -6
- package/dist/autocomplete.es.js.map +0 -1
- package/dist/button-4-yWOgtD.mjs +0 -109
- package/dist/button-4-yWOgtD.mjs.map +0 -1
- package/dist/button-DmybVApa.js +0 -2
- package/dist/button-DmybVApa.js.map +0 -1
- package/dist/card-pdsBEJif.js.map +0 -1
- package/dist/card-t2ZkZ82G.mjs.map +0 -1
- package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
- package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
- package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
- package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
- package/dist/components/autocomplete/src/utils.d.ts +0 -7
- package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
- package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
- package/dist/content-block-CDMrz41K.mjs.map +0 -1
- package/dist/content-block-DyYAnL2e.js.map +0 -1
- package/dist/date-range-field-BZUjfftV.mjs.map +0 -1
- package/dist/date-range-field-Dqqgj41u.js +0 -2
- package/dist/date-range-field-Dqqgj41u.js.map +0 -1
- package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
- package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
- package/dist/drawer-DyLQfvEh.js +0 -2
- package/dist/drawer-DyLQfvEh.js.map +0 -1
- package/dist/drawer-cIUx6WSZ.mjs.map +0 -1
- package/dist/dropdown-C8VsfTQw.mjs +0 -936
- package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
- package/dist/dropdown-p4R2yCnJ.js +0 -2
- package/dist/dropdown-p4R2yCnJ.js.map +0 -1
- package/dist/footer-Cn1-zG1v.js +0 -2
- package/dist/footer-Cn1-zG1v.js.map +0 -1
- package/dist/footer-D-2b7UIB.mjs.map +0 -1
- package/dist/heading-drD5ugCC.js.map +0 -1
- package/dist/heading-xwBuT_-9.mjs.map +0 -1
- package/dist/hero-banner--v-ezYMr.js.map +0 -1
- package/dist/hero-banner-n9K-Jsdz.mjs.map +0 -1
- package/dist/libraries/library/src/autocomplete.d.ts +0 -6
- package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
- package/dist/link-DY5WLpyc.mjs +0 -72
- package/dist/link-DhWVrkTz.js +0 -2
- package/dist/modal-Bu1Zv5Ic.mjs.map +0 -1
- package/dist/modal-D0Qxrvx5.js.map +0 -1
- package/dist/notification-banner-BxHwTFnH.js +0 -2
- package/dist/notification-banner-BxHwTFnH.js.map +0 -1
- package/dist/notification-banner-CZTQZ5Le.mjs.map +0 -1
- package/dist/popover-CY75TnbA.js +0 -2
- package/dist/popover-CY75TnbA.js.map +0 -1
- package/dist/popover-wiiwtqWE.mjs +0 -1043
- package/dist/popover-wiiwtqWE.mjs.map +0 -1
- package/dist/promotion-card-C1UoxzcV.js.map +0 -1
- package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
- package/dist/quantity-selector-BEYMDsBM.js +0 -2
- package/dist/quantity-selector-BEYMDsBM.js.map +0 -1
- package/dist/quantity-selector-Cp-e5xKJ.mjs +0 -172
- package/dist/quantity-selector-Cp-e5xKJ.mjs.map +0 -1
- package/dist/stepper-20s8dnPA.mjs +0 -449
- package/dist/stepper-20s8dnPA.mjs.map +0 -1
- package/dist/stepper-VDiR2I8F.js +0 -2
- package/dist/stepper-VDiR2I8F.js.map +0 -1
- package/dist/table-B5ZitZoL.js +0 -9
- package/dist/table-B5ZitZoL.js.map +0 -1
- package/dist/table-CNIL-60s.mjs +0 -7428
- package/dist/table-CNIL-60s.mjs.map +0 -1
- package/dist/tabs-Bye5lgZ1.mjs +0 -424
- package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
- package/dist/tabs-D-nfZHIA.js +0 -2
- package/dist/tabs-D-nfZHIA.js.map +0 -1
- package/dist/text-field-D0e-cRbG.mjs.map +0 -1
- package/dist/text-field-VW8ObP83.js.map +0 -1
- package/dist/tooltip-B-11qk-0.js +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../../../../../components/autocomplete/src/autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAgB,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,KAAmC,MAAM,OAAO,CAAC;AAOxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,KAAK,iBAAiB,CAAC,CAAC,SAAS,kBAAkB,IAAI,QAAQ,CAC7D,qBAAqB,CAAC,CAAC,CAAC,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;IAClE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,SAAS,CAAC;CACzC,CACF,CAAC;AA8FF,eAAO,MAAM,YAAY,8GAAoC,CAAC;AAG9D,YAAY,EACV,kBAAkB,EAClB,qBAAqB,IAAI,sBAAsB,GAChD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { BaseProps } from '../../../libraries/common-types/src/common-types';
|
|
3
|
-
import { ListboxItemProps, ListboxProps } from '../../listbox/src/listbox';
|
|
4
|
-
export type AutocompleteOption = {
|
|
5
|
-
label: string;
|
|
6
|
-
id: string;
|
|
7
|
-
value?: string;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
};
|
|
10
|
-
export type InputProps = Omit<BaseProps<"input">, "onFocus" | "onMouseDown"> & {
|
|
11
|
-
onFocus: (event: React.FocusEvent<HTMLInputElement> | undefined) => void;
|
|
12
|
-
onMouseDown: (event: React.MouseEvent<HTMLInputElement> | undefined) => void;
|
|
13
|
-
};
|
|
14
|
-
type ComboboxProps = {
|
|
15
|
-
combobox: true;
|
|
16
|
-
/**
|
|
17
|
-
* An accessible label for the button that toggles the list of options for a combobox.
|
|
18
|
-
* */
|
|
19
|
-
comboboxButtonAriaLabel: string;
|
|
20
|
-
noOptionsText: ReactNode;
|
|
21
|
-
};
|
|
22
|
-
type NoComboboxProps = {
|
|
23
|
-
combobox?: never;
|
|
24
|
-
comboboxButtonAriaLabel?: never;
|
|
25
|
-
noOptionsText?: ReactNode;
|
|
26
|
-
};
|
|
27
|
-
export type UseAutocompleteResult<T extends AutocompleteOption> = {
|
|
28
|
-
highlightFirstOption?: boolean;
|
|
29
|
-
defaultInputValue?: string;
|
|
30
|
-
inputValue?: string;
|
|
31
|
-
filterOption?: (inputValue: string | undefined, option: T) => boolean;
|
|
32
|
-
id: string;
|
|
33
|
-
listboxLabel: string;
|
|
34
|
-
listboxMaxHeight?: string | number;
|
|
35
|
-
onInputBlur?: React.FocusEventHandler<HTMLInputElement>;
|
|
36
|
-
onInputChange?: (value: string) => void;
|
|
37
|
-
onInputFocus?: (event: React.FocusEvent<HTMLInputElement> | undefined) => undefined;
|
|
38
|
-
onInputKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
|
|
39
|
-
onInputMouseDown?: (event: React.MouseEvent<HTMLInputElement> | undefined) => undefined;
|
|
40
|
-
openOnFocus?: boolean;
|
|
41
|
-
onSelect?: (option: T | undefined) => void;
|
|
42
|
-
options: T[];
|
|
43
|
-
selectedOption?: T;
|
|
44
|
-
["data-testid"]?: string;
|
|
45
|
-
} & (ComboboxProps | NoComboboxProps);
|
|
46
|
-
export declare const useAutocomplete: <T extends AutocompleteOption>({ combobox, comboboxButtonAriaLabel, highlightFirstOption, defaultInputValue, inputValue, filterOption, id, listboxLabel, listboxMaxHeight, onInputBlur, onInputChange, onInputFocus, onInputKeyDown, onInputMouseDown, openOnFocus, noOptionsText, onSelect, options, selectedOption, ["data-testid"]: dataTestid, }: UseAutocompleteResult<T>) => {
|
|
47
|
-
id: string;
|
|
48
|
-
inputProps: InputProps;
|
|
49
|
-
internalRef: import('react').RefObject<HTMLDivElement | null>;
|
|
50
|
-
optionsToShow: (T | undefined)[];
|
|
51
|
-
showListbox: boolean;
|
|
52
|
-
noOptionsText: ReactNode;
|
|
53
|
-
combobox: true | undefined;
|
|
54
|
-
comboboxButtonAriaLabel: string | undefined;
|
|
55
|
-
getListBoxItemProps: (option: T, index: number) => ListboxItemProps;
|
|
56
|
-
listboxProps: ListboxProps;
|
|
57
|
-
};
|
|
58
|
-
export {};
|
|
59
|
-
//# sourceMappingURL=useAutocomplete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAutocomplete.d.ts","sourceRoot":"","sources":["../../../../../../components/autocomplete/src/useAutocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAItE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG;IAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IACzE,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;CAC9E,CAAC;AAEF,KAAK,aAAa,GAAG;IAInB,QAAQ,EAAE,IAAI,CAAC;IACf;;SAEK;IACL,uBAAuB,EAAE,MAAM,CAAC;IAIhC,aAAa,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,uBAAuB,CAAC,EAAE,KAAK,CAAC;IAIhC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IAIhE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAI/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAI3B,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAItE,EAAE,EAAE,MAAM,CAAC;IAIX,YAAY,EAAE,MAAM,CAAC;IAIrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAInC,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAIxD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAIxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,SAAS,KAAK,SAAS,CAAC;IAIpF,cAAc,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAI9D,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,SAAS,KAAK,SAAS,CAAC;IAIxF,WAAW,CAAC,EAAE,OAAO,CAAC;IAItB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAI3C,OAAO,EAAE,CAAC,EAAE,CAAC;IAIb,cAAc,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,CAAC,aAAa,GAAG,eAAe,CAAC,CAAC;AAEtC,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,kBAAkB,EAAE,uTAqB3D,qBAAqB,CAAC,CAAC,CAAC;;;;;;;;;kCA2LY,CAAC,SAAS,MAAM,KAAG,gBAAgB;;CA0DzE,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { RefObject } from 'react';
|
|
2
|
-
export type Prettify<T> = {
|
|
3
|
-
[K in keyof T]: T[K];
|
|
4
|
-
} & {};
|
|
5
|
-
export declare const useRefObject: <T>(value: T) => RefObject<T>;
|
|
6
|
-
export declare const useOnClickOutside: (element: HTMLElement | null, callback: () => void) => void;
|
|
7
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../components/autocomplete/src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,OAAO,CAAC;AAGvE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,SAAS,CAAC,CAAC,CAErD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS,WAAW,GAAG,IAAI,EAAE,UAAU,MAAM,IAAI,SAgBlF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stepper-button.d.ts","sourceRoot":"","sources":["../../../../../../components/stepper/src/stepper-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMtD,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAKjB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AA0BF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IACvE,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,gBAAgB,CAAC;IAClC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,eAAe,EAAE,uBAAuB,CAAC;IACzC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,aAAa,2GAoFzB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-block-CDMrz41K.mjs","sources":["../../../components/content-block/src/content-block-group.tsx","../../../components/content-block/src/content-block.tsx"],"sourcesContent":["import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block-group.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block-group\";\n\nexport const ContentBlockGroupContext = createContext<{\n negative?: boolean;\n reverse?: boolean;\n} | null>(null);\n\nexport type ContentBlockGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n mediaStartPosition?: \"left\" | \"right\";\n};\n\nexport const ContentBlockGroup = ({\n children,\n className,\n negative,\n mediaStartPosition = \"left\",\n ...props\n}: ContentBlockGroupProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <ContentBlockGroupContext.Provider\n value={{ negative, reverse: mediaStartPosition === \"right\" }}\n >\n {children}\n </ContentBlockGroupContext.Provider>\n </div>\n );\n};\n\nContentBlockGroup.displayName = \"ContentBlockGroup\";\n","import React, { type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block.module.scss\";\nimport { ContentBlockGroup, ContentBlockGroupContext } from \"./content-block-group\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block\";\n\nexport type ContentBlockProps = BaseProps & {\n /**\n * @deprecated Set negative on ContentBlockGroup instead\n */\n negative?: boolean;\n image?: ReactNode;\n video?: ReactNode;\n /**\n * @deprecated Use beforeTitle instead\n */\n badge?: ReactNode;\n actions?: ReactNode;\n listItems?: string[];\n beforeTitle?: ReactNode;\n title?: string;\n headingTag?: HeadingTagType;\n headingVariant?: HeadingVariant;\n};\n\nexport const ContentBlock = ({\n className,\n negative,\n image,\n video,\n badge,\n beforeTitle,\n title,\n actions,\n listItems,\n headingTag = \"h2\",\n headingVariant = \"display-15\",\n children,\n ...props\n}: ContentBlockProps) => {\n const context = useContext(ContentBlockGroupContext);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: context?.negative || negative,\n [`${rootClassName}--reverse`]: context?.reverse,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <div className={cx(`${rootClassName}__section`)}>\n {video ? (\n <div className={cx(`${rootClassName}__video-wrapper`)}>{video}</div>\n ) : (\n <div className={cx(`${rootClassName}__image-wrapper`)}>{image}</div>\n )}\n </div>\n <div className={cx(`${rootClassName}__section`)}>\n <div className={cx(`${rootClassName}__content-wrapper`)}>\n {badge && <div className={cx(`${rootClassName}__badge-wrapper`)}>{badge}</div>}\n {beforeTitle}\n {title?.trim() && (\n <Heading variant={headingVariant} tag={headingTag} negative={negative}>\n {title}\n </Heading>\n )}\n <div className={cx(`${rootClassName}__content`)}>{children}</div>\n {!!listItems?.length && (\n <ul className={cx(`${rootClassName}__list`)}>\n {listItems.map(\n (item) =>\n item && (\n <li className={cx(`${rootClassName}__list-item`)} key={item}>\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__list-item-icon`)} />\n <Paragraph negative={negative}>{item}</Paragraph>\n </li>\n )\n )}\n </ul>\n )}\n {actions && <div className={cx(`${rootClassName}__actions`)}>{actions}</div>}\n </div>\n </div>\n </div>\n );\n};\n\nContentBlock.Group = ContentBlockGroup;\nContentBlock.displayName = \"ContentBlock\";\n"],"names":["cx","c","styles","rootClassName","ContentBlockGroupContext","createContext","ContentBlockGroup","children","className","negative","mediaStartPosition","props","classes","jsx","ContentBlock","image","video","badge","beforeTitle","title","actions","listItems","headingTag","headingVariant","context","useContext","jsxs","Heading","item","IconCheckmark","Paragraph"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-block-DyYAnL2e.js","sources":["../../../components/content-block/src/content-block-group.tsx","../../../components/content-block/src/content-block.tsx"],"sourcesContent":["import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block-group.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block-group\";\n\nexport const ContentBlockGroupContext = createContext<{\n negative?: boolean;\n reverse?: boolean;\n} | null>(null);\n\nexport type ContentBlockGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n mediaStartPosition?: \"left\" | \"right\";\n};\n\nexport const ContentBlockGroup = ({\n children,\n className,\n negative,\n mediaStartPosition = \"left\",\n ...props\n}: ContentBlockGroupProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <ContentBlockGroupContext.Provider\n value={{ negative, reverse: mediaStartPosition === \"right\" }}\n >\n {children}\n </ContentBlockGroupContext.Provider>\n </div>\n );\n};\n\nContentBlockGroup.displayName = \"ContentBlockGroup\";\n","import React, { type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block.module.scss\";\nimport { ContentBlockGroup, ContentBlockGroupContext } from \"./content-block-group\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block\";\n\nexport type ContentBlockProps = BaseProps & {\n /**\n * @deprecated Set negative on ContentBlockGroup instead\n */\n negative?: boolean;\n image?: ReactNode;\n video?: ReactNode;\n /**\n * @deprecated Use beforeTitle instead\n */\n badge?: ReactNode;\n actions?: ReactNode;\n listItems?: string[];\n beforeTitle?: ReactNode;\n title?: string;\n headingTag?: HeadingTagType;\n headingVariant?: HeadingVariant;\n};\n\nexport const ContentBlock = ({\n className,\n negative,\n image,\n video,\n badge,\n beforeTitle,\n title,\n actions,\n listItems,\n headingTag = \"h2\",\n headingVariant = \"display-15\",\n children,\n ...props\n}: ContentBlockProps) => {\n const context = useContext(ContentBlockGroupContext);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: context?.negative || negative,\n [`${rootClassName}--reverse`]: context?.reverse,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <div className={cx(`${rootClassName}__section`)}>\n {video ? (\n <div className={cx(`${rootClassName}__video-wrapper`)}>{video}</div>\n ) : (\n <div className={cx(`${rootClassName}__image-wrapper`)}>{image}</div>\n )}\n </div>\n <div className={cx(`${rootClassName}__section`)}>\n <div className={cx(`${rootClassName}__content-wrapper`)}>\n {badge && <div className={cx(`${rootClassName}__badge-wrapper`)}>{badge}</div>}\n {beforeTitle}\n {title?.trim() && (\n <Heading variant={headingVariant} tag={headingTag} negative={negative}>\n {title}\n </Heading>\n )}\n <div className={cx(`${rootClassName}__content`)}>{children}</div>\n {!!listItems?.length && (\n <ul className={cx(`${rootClassName}__list`)}>\n {listItems.map(\n (item) =>\n item && (\n <li className={cx(`${rootClassName}__list-item`)} key={item}>\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__list-item-icon`)} />\n <Paragraph negative={negative}>{item}</Paragraph>\n </li>\n )\n )}\n </ul>\n )}\n {actions && <div className={cx(`${rootClassName}__actions`)}>{actions}</div>}\n </div>\n </div>\n </div>\n );\n};\n\nContentBlock.Group = ContentBlockGroup;\nContentBlock.displayName = \"ContentBlock\";\n"],"names":["cx","c","styles","rootClassName","ContentBlockGroupContext","createContext","ContentBlockGroup","children","className","negative","mediaStartPosition","props","classes","jsx","ContentBlock","image","video","badge","beforeTitle","title","actions","listItems","headingTag","headingVariant","context","useContext","jsxs","Heading","item","IconCheckmark","Paragraph"],"mappings":"q2CAMMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,6BAETC,EAA2BC,EAAAA,cAG9B,IAAI,EAQDC,EAAoB,CAAC,CAChC,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,mBAAAC,EAAqB,OACrB,GAAGC,CACL,IAA8B,CAC5B,MAAMC,EAAUZ,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGM,CAAA,EAElCD,CAAA,CACD,EAED,OACEK,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAU,GAAGD,EAC3B,SAAAE,EAAAA,IAACT,EAAyB,SAAzB,CACC,MAAO,CAAE,SAAAK,EAAU,QAASC,IAAuB,OAAA,EAElD,SAAAH,CAAA,CAAA,EAEL,CAEJ,EAEAD,EAAkB,YAAc,oBCpChC,MAAMN,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,uBAqBTW,EAAe,CAAC,CAC3B,UAAAN,EACA,SAAAC,EACA,MAAAM,EACA,MAAAC,EACA,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,QAAAC,EACA,UAAAC,EACA,WAAAC,EAAa,KACb,eAAAC,EAAiB,aACjB,SAAAhB,EACA,GAAGI,CACL,IAAyB,CACvB,MAAMa,EAAUC,EAAAA,WAAWrB,CAAwB,EAE7CQ,EAAUZ,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGqB,GAAS,UAAYf,EACrD,CAAC,GAAGN,CAAa,WAAW,EAAGqB,GAAS,OAAA,EAE1ChB,CAAA,CACD,EAED,OACEkB,EAAAA,KAAC,MAAA,CAAI,UAAWd,EAAU,GAAGD,EAC3B,SAAA,CAAAE,EAAAA,IAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAC3C,SAAAa,EACCH,MAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAa,CAAA,CAAM,EAE9DH,EAAAA,IAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAY,CAAA,CAAM,EAElE,EACAF,MAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAC5C,SAAAuB,EAAAA,KAAC,OAAI,UAAW1B,EAAG,GAAGG,CAAa,mBAAmB,EACnD,SAAA,CAAAc,GAASJ,EAAAA,IAAC,OAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAc,CAAA,CAAM,EACvEC,EACAC,GAAO,KAAA,GACNN,MAACc,EAAAA,QAAA,CAAQ,QAASJ,EAAgB,IAAKD,EAAY,SAAAb,EAChD,SAAAU,CAAA,CACH,EAEFN,MAAC,OAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAAI,SAAAI,EAAS,EAC1D,CAAC,CAACc,GAAW,QACZR,EAAAA,IAAC,KAAA,CAAG,UAAWb,EAAG,GAAGG,CAAa,QAAQ,EACvC,SAAAkB,EAAU,IACRO,GACCA,GACEF,EAAAA,KAAC,KAAA,CAAG,UAAW1B,EAAG,GAAGG,CAAa,aAAa,EAC7C,SAAA,CAAAU,EAAAA,IAACgB,EAAAA,EAAA,CAAc,KAAK,KAAK,UAAW7B,EAAG,GAAGG,CAAa,kBAAkB,CAAA,CAAG,EAC5EU,EAAAA,IAACiB,EAAAA,UAAA,CAAU,SAAArB,EAAqB,SAAAmB,CAAA,CAAK,CAAA,CAAA,EAFgBA,CAGvD,CAAA,EAGR,EAEDR,SAAY,MAAA,CAAI,UAAWpB,EAAG,GAAGG,CAAa,WAAW,EAAI,SAAAiB,CAAA,CAAQ,CAAA,CAAA,CACxE,CAAA,CACF,CAAA,EACF,CAEJ,EAEAN,EAAa,MAAQR,EACrBQ,EAAa,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-field-BZUjfftV.mjs","sources":["../../../components/icon/dist/components/calendar.es.js","../../../components/date-range-field/src/date-range-field.tsx"],"sourcesContent":["import { jsx as h } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst o = {\n name: \"calendar\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8 1.6a.9.9 0 0 1 .9.9V7a.9.9 0 0 1-1.8 0V5.9H4a.1.1 0 0 0-.1.1v3.105A.91.91 0 0 1 4 9.1h16.1V6a.1.1 0 0 0-.1-.1h-3.1V7a.9.9 0 1 1-1.8 0V5.9h-3.6a.9.9 0 1 1 0-1.8h3.6V2.5a.9.9 0 1 1 1.8 0v1.6H20c1.05 0 1.9.85 1.9 1.9v14a1.9 1.9 0 0 1-1.9 1.9H4A1.9 1.9 0 0 1 2.1 20V6c0-1.05.85-1.9 1.9-1.9h3.1V2.5a.9.9 0 0 1 .9-.9Zm12.1 9.3H4a.917.917 0 0 1-.1-.005V20a.1.1 0 0 0 .1.1h16a.1.1 0 0 0 .1-.1v-9.1ZM5.6 13.5a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm-10 4a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"calendar\"],\n category: \"other\"\n}, r = (a) => /* @__PURE__ */ h(e, { ...a, svg: o });\nr.displayName = \"IconCalendar\";\nexport {\n r as IconCalendar\n};\n//# sourceMappingURL=calendar.es.js.map\n","import React, { type ForwardedRef, forwardRef, useId, useRef } from \"react\";\nimport { DateField, type DateFieldProps } from \"@purpur/date-field\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCalendar } from \"@purpur/icon/calendar\";\nimport { Label } from \"@purpur/label\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport c from \"classnames/bind\";\n\nimport \"@purpur/date-field/styles\";\nimport \"@purpur/field-error-text/styles\";\nimport \"@purpur/field-helper-text/styles\";\nimport \"@purpur/icon/styles\";\nimport \"@purpur/label/styles\";\nimport styles from \"./date-range-field.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-date-range-field\";\n\ntype IndividualFieldProps = Omit<\n DateFieldProps,\n | \"value\"\n | \"onChange\"\n | \"disabled\"\n | \"readOnly\"\n | \"required\"\n | \"negative\"\n | \"formatHintLabel\"\n | \"dateChars\"\n | \"aria-labelledby\"\n | \"aria-describedby\"\n | \"data-testid\"\n | \"startAdornment\"\n | \"className\"\n | \"ref\"\n>;\n\nexport type DateRangeFieldProps = {\n label?: string;\n fromLabel: string;\n toLabel: string;\n helperText?: string;\n errorText?: string;\n formatHintLabel: string;\n dateChars?: DateFieldProps[\"dateChars\"];\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n hideRequiredAsterisk?: boolean;\n\n fromValue?: Date;\n toValue?: Date;\n onFromChange?: (date: Date | undefined) => void;\n onToChange?: (date: Date | undefined) => void;\n\n fromFieldProps?: IndividualFieldProps;\n toFieldProps?: IndividualFieldProps;\n\n fromInputRef?: React.Ref<HTMLInputElement>;\n toInputRef?: React.Ref<HTMLInputElement>;\n\n className?: string;\n [\"data-testid\"]?: string;\n};\n\nexport const DateRangeField = forwardRef(\n (\n {\n label,\n fromLabel,\n toLabel,\n helperText,\n errorText,\n formatHintLabel,\n dateChars,\n disabled,\n readOnly,\n required,\n hideRequiredAsterisk,\n fromValue,\n toValue,\n onFromChange,\n onToChange,\n fromFieldProps,\n toFieldProps,\n fromInputRef: externalFromInputRef,\n toInputRef: externalToInputRef,\n className,\n ...rest\n }: DateRangeFieldProps,\n ref: ForwardedRef<HTMLFieldSetElement>\n ) => {\n const dataTestId = rest[\"data-testid\"];\n const baseId = useId();\n const fromInputRef = useRef<HTMLInputElement>(null);\n const setFromInputRef = (node: HTMLInputElement | null) => {\n fromInputRef.current = node;\n if (typeof externalFromInputRef === \"function\") {\n externalFromInputRef(node);\n } else if (externalFromInputRef) {\n (externalFromInputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n }\n };\n const labelId = label ? `${baseId}-label` : undefined;\n const fromHiddenLabelId = `${baseId}-from-label`;\n const toHiddenLabelId = `${baseId}-to-label`;\n const helperId = helperText ? `${baseId}-helper` : undefined;\n const errorId = errorText ? `${baseId}-error` : undefined;\n\n const describedBy = [helperId, errorId].filter(Boolean).join(\" \") || undefined;\n\n return (\n <fieldset\n ref={ref}\n className={cx(rootClassName, className, {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--readonly`]: readOnly && !disabled,\n })}\n data-testid={dataTestId}\n >\n {label && (\n // Mimics native <label> click-to-focus; no key handler needed (<legend> is not focusable).\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <legend\n id={labelId}\n className={cx(`${rootClassName}__label`, {\n [`${rootClassName}__label--disabled`]: disabled,\n })}\n data-testid={dataTestId && `${dataTestId}-label`}\n onClick={\n disabled\n ? undefined\n : () => {\n fromInputRef.current?.focus();\n }\n }\n >\n <Label disabled={disabled}>\n {required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n </legend>\n )}\n\n <VisuallyHidden>\n <span id={fromHiddenLabelId}>{fromLabel}</span>\n <span id={toHiddenLabelId}>{toLabel}</span>\n </VisuallyHidden>\n\n <div className={cx(`${rootClassName}__fields`)}>\n <DateField\n {...fromFieldProps}\n ref={setFromInputRef}\n id={fromFieldProps?.id ?? `${baseId}-from`}\n className={cx(`${rootClassName}__field`, `${rootClassName}__field--from`)}\n startAdornment={<IconCalendar size=\"sm\" />}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n errorText={errorText}\n formatHintLabel={formatHintLabel}\n dateChars={dateChars}\n value={fromValue}\n onChange={onFromChange}\n aria-labelledby={[labelId, fromHiddenLabelId].filter(Boolean).join(\" \") || undefined}\n aria-describedby={describedBy}\n data-testid={dataTestId && `${dataTestId}-from`}\n />\n <DateField\n {...toFieldProps}\n ref={externalToInputRef}\n id={toFieldProps?.id ?? `${baseId}-to`}\n className={cx(`${rootClassName}__field`, `${rootClassName}__field--to`)}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n errorText={errorText}\n formatHintLabel={formatHintLabel}\n dateChars={dateChars}\n value={toValue}\n onChange={onToChange}\n aria-labelledby={[labelId, toHiddenLabelId].filter(Boolean).join(\" \") || undefined}\n aria-describedby={describedBy}\n data-testid={dataTestId && `${dataTestId}-to`}\n />\n </div>\n\n {helperText && (\n <FieldHelperText id={helperId!} disabled={disabled}>\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText\n id={errorId}\n data-testid={dataTestId && `${dataTestId}-error`}\n >\n {errorText}\n </FieldErrorText>\n )}\n </fieldset>\n );\n }\n);\n\nDateRangeField.displayName = \"DateRangeField\";\n"],"names":["o","r","a","h","e","cx","c","styles","rootClassName","DateRangeField","forwardRef","label","fromLabel","toLabel","helperText","errorText","formatHintLabel","dateChars","disabled","readOnly","required","hideRequiredAsterisk","fromValue","toValue","onFromChange","onToChange","fromFieldProps","toFieldProps","externalFromInputRef","externalToInputRef","className","rest","ref","dataTestId","baseId","useId","fromInputRef","useRef","setFromInputRef","node","labelId","fromHiddenLabelId","toHiddenLabelId","helperId","errorId","describedBy","jsxs","jsx","Label","VisuallyHidden","DateField","IconCalendar","FieldHelperText","FieldErrorText"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),p=require("react"),V=require("./date-field-hA79n6mP.js"),M=require("./field-error-text-FhQulSV5.js"),z=require("./field-helper-text-DSKO-Tce.js"),G=require("./icon-DNHpBTHs-faYHqTXU.js"),J=require("./label-yHK80hhV.js"),K=require("./visually-hidden-C2CKovZx.js"),Q=require("./bind-DeUYJ6m9.js");;/* empty css */const S={name:"calendar",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M8 1.6a.9.9 0 0 1 .9.9V7a.9.9 0 0 1-1.8 0V5.9H4a.1.1 0 0 0-.1.1v3.105A.91.91 0 0 1 4 9.1h16.1V6a.1.1 0 0 0-.1-.1h-3.1V7a.9.9 0 1 1-1.8 0V5.9h-3.6a.9.9 0 1 1 0-1.8h3.6V2.5a.9.9 0 1 1 1.8 0v1.6H20c1.05 0 1.9.85 1.9 1.9v14a1.9 1.9 0 0 1-1.9 1.9H4A1.9 1.9 0 0 1 2.1 20V6c0-1.05.85-1.9 1.9-1.9h3.1V2.5a.9.9 0 0 1 .9-.9Zm12.1 9.3H4a.917.917 0 0 1-.1-.005V20a.1.1 0 0 0 .1.1h16a.1.1 0 0 0 .1-.1v-9.1ZM5.6 13.5a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm-10 4a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Z" clip-rule="evenodd"/></svg>',keywords:["calendar"],category:"other"},g=l=>e.jsx(G.b,{...l,svg:S});g.displayName="IconCalendar";const T={"purpur-date-range-field":"_purpur-date-range-field_1gys2_1","purpur-date-range-field__label":"_purpur-date-range-field__label_1gys2_10","purpur-date-range-field__label--disabled":"_purpur-date-range-field__label--disabled_1gys2_18","purpur-date-range-field__fields":"_purpur-date-range-field__fields_1gys2_21","purpur-date-range-field__field":"_purpur-date-range-field__field_1gys2_21","purpur-date-range-field__field--from":"_purpur-date-range-field__field--from_1gys2_32","purpur-date-range-field__field--to":"_purpur-date-range-field__field--to_1gys2_43"},t=Q.c.bind(T),a="purpur-date-range-field",N=p.forwardRef(({label:l,fromLabel:q,toLabel:R,helperText:o,errorText:s,formatHintLabel:h,dateChars:m,disabled:r,readOnly:c,required:_,hideRequiredAsterisk:Z,fromValue:w,toValue:B,onFromChange:D,onToChange:C,fromFieldProps:b,toFieldProps:v,fromInputRef:n,toInputRef:F,className:A,...k},E)=>{const d=k["data-testid"],i=p.useId(),y=p.useRef(null),L=f=>{y.current=f,typeof n=="function"?n(f):n&&(n.current=f)},u=l?`${i}-label`:void 0,j=`${i}-from-label`,$=`${i}-to-label`,x=o?`${i}-helper`:void 0,H=s?`${i}-error`:void 0,I=[x,H].filter(Boolean).join(" ")||void 0;return e.jsxs("fieldset",{ref:E,className:t(a,A,{[`${a}--disabled`]:r,[`${a}--readonly`]:c&&!r}),"data-testid":d,children:[l&&e.jsx("legend",{id:u,className:t(`${a}__label`,{[`${a}__label--disabled`]:r}),"data-testid":d&&`${d}-label`,onClick:r?void 0:()=>{y.current?.focus()},children:e.jsxs(J.Label,{disabled:r,children:[_&&!Z&&e.jsx("span",{"aria-hidden":!0,children:"*"}),l]})}),e.jsxs(K.VisuallyHidden,{children:[e.jsx("span",{id:j,children:q}),e.jsx("span",{id:$,children:R})]}),e.jsxs("div",{className:t(`${a}__fields`),children:[e.jsx(V.DateField,{...b,ref:L,id:b?.id??`${i}-from`,className:t(`${a}__field`,`${a}__field--from`),startAdornment:e.jsx(g,{size:"sm"}),disabled:r,readOnly:c,required:_,errorText:s,formatHintLabel:h,dateChars:m,value:w,onChange:D,"aria-labelledby":[u,j].filter(Boolean).join(" ")||void 0,"aria-describedby":I,"data-testid":d&&`${d}-from`}),e.jsx(V.DateField,{...v,ref:F,id:v?.id??`${i}-to`,className:t(`${a}__field`,`${a}__field--to`),disabled:r,readOnly:c,required:_,errorText:s,formatHintLabel:h,dateChars:m,value:B,onChange:C,"aria-labelledby":[u,$].filter(Boolean).join(" ")||void 0,"aria-describedby":I,"data-testid":d&&`${d}-to`})]}),o&&e.jsx(z.FieldHelperText,{id:x,disabled:r,children:o}),s&&e.jsx(M.FieldErrorText,{id:H,"data-testid":d&&`${d}-error`,children:s})]})});N.displayName="DateRangeField";exports.DateRangeField=N;exports.r=g;
|
|
2
|
-
//# sourceMappingURL=date-range-field-Dqqgj41u.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-field-Dqqgj41u.js","sources":["../../../components/icon/dist/components/calendar.es.js","../../../components/date-range-field/src/date-range-field.tsx"],"sourcesContent":["import { jsx as h } from \"react/jsx-runtime\";\nimport { I as e } from \"../icon-DNHpBTHs.mjs\";\nconst o = {\n name: \"calendar\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M8 1.6a.9.9 0 0 1 .9.9V7a.9.9 0 0 1-1.8 0V5.9H4a.1.1 0 0 0-.1.1v3.105A.91.91 0 0 1 4 9.1h16.1V6a.1.1 0 0 0-.1-.1h-3.1V7a.9.9 0 1 1-1.8 0V5.9h-3.6a.9.9 0 1 1 0-1.8h3.6V2.5a.9.9 0 1 1 1.8 0v1.6H20c1.05 0 1.9.85 1.9 1.9v14a1.9 1.9 0 0 1-1.9 1.9H4A1.9 1.9 0 0 1 2.1 20V6c0-1.05.85-1.9 1.9-1.9h3.1V2.5a.9.9 0 0 1 .9-.9Zm12.1 9.3H4a.917.917 0 0 1-.1-.005V20a.1.1 0 0 0 .1.1h16a.1.1 0 0 0 .1-.1v-9.1ZM5.6 13.5a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm-10 4a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Zm5 0a.9.9 0 0 1 .9-.9h1a.9.9 0 1 1 0 1.8h-1a.9.9 0 0 1-.9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"calendar\"],\n category: \"other\"\n}, r = (a) => /* @__PURE__ */ h(e, { ...a, svg: o });\nr.displayName = \"IconCalendar\";\nexport {\n r as IconCalendar\n};\n//# sourceMappingURL=calendar.es.js.map\n","import React, { type ForwardedRef, forwardRef, useId, useRef } from \"react\";\nimport { DateField, type DateFieldProps } from \"@purpur/date-field\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCalendar } from \"@purpur/icon/calendar\";\nimport { Label } from \"@purpur/label\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport c from \"classnames/bind\";\n\nimport \"@purpur/date-field/styles\";\nimport \"@purpur/field-error-text/styles\";\nimport \"@purpur/field-helper-text/styles\";\nimport \"@purpur/icon/styles\";\nimport \"@purpur/label/styles\";\nimport styles from \"./date-range-field.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-date-range-field\";\n\ntype IndividualFieldProps = Omit<\n DateFieldProps,\n | \"value\"\n | \"onChange\"\n | \"disabled\"\n | \"readOnly\"\n | \"required\"\n | \"negative\"\n | \"formatHintLabel\"\n | \"dateChars\"\n | \"aria-labelledby\"\n | \"aria-describedby\"\n | \"data-testid\"\n | \"startAdornment\"\n | \"className\"\n | \"ref\"\n>;\n\nexport type DateRangeFieldProps = {\n label?: string;\n fromLabel: string;\n toLabel: string;\n helperText?: string;\n errorText?: string;\n formatHintLabel: string;\n dateChars?: DateFieldProps[\"dateChars\"];\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n hideRequiredAsterisk?: boolean;\n\n fromValue?: Date;\n toValue?: Date;\n onFromChange?: (date: Date | undefined) => void;\n onToChange?: (date: Date | undefined) => void;\n\n fromFieldProps?: IndividualFieldProps;\n toFieldProps?: IndividualFieldProps;\n\n fromInputRef?: React.Ref<HTMLInputElement>;\n toInputRef?: React.Ref<HTMLInputElement>;\n\n className?: string;\n [\"data-testid\"]?: string;\n};\n\nexport const DateRangeField = forwardRef(\n (\n {\n label,\n fromLabel,\n toLabel,\n helperText,\n errorText,\n formatHintLabel,\n dateChars,\n disabled,\n readOnly,\n required,\n hideRequiredAsterisk,\n fromValue,\n toValue,\n onFromChange,\n onToChange,\n fromFieldProps,\n toFieldProps,\n fromInputRef: externalFromInputRef,\n toInputRef: externalToInputRef,\n className,\n ...rest\n }: DateRangeFieldProps,\n ref: ForwardedRef<HTMLFieldSetElement>\n ) => {\n const dataTestId = rest[\"data-testid\"];\n const baseId = useId();\n const fromInputRef = useRef<HTMLInputElement>(null);\n const setFromInputRef = (node: HTMLInputElement | null) => {\n fromInputRef.current = node;\n if (typeof externalFromInputRef === \"function\") {\n externalFromInputRef(node);\n } else if (externalFromInputRef) {\n (externalFromInputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n }\n };\n const labelId = label ? `${baseId}-label` : undefined;\n const fromHiddenLabelId = `${baseId}-from-label`;\n const toHiddenLabelId = `${baseId}-to-label`;\n const helperId = helperText ? `${baseId}-helper` : undefined;\n const errorId = errorText ? `${baseId}-error` : undefined;\n\n const describedBy = [helperId, errorId].filter(Boolean).join(\" \") || undefined;\n\n return (\n <fieldset\n ref={ref}\n className={cx(rootClassName, className, {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--readonly`]: readOnly && !disabled,\n })}\n data-testid={dataTestId}\n >\n {label && (\n // Mimics native <label> click-to-focus; no key handler needed (<legend> is not focusable).\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <legend\n id={labelId}\n className={cx(`${rootClassName}__label`, {\n [`${rootClassName}__label--disabled`]: disabled,\n })}\n data-testid={dataTestId && `${dataTestId}-label`}\n onClick={\n disabled\n ? undefined\n : () => {\n fromInputRef.current?.focus();\n }\n }\n >\n <Label disabled={disabled}>\n {required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n </legend>\n )}\n\n <VisuallyHidden>\n <span id={fromHiddenLabelId}>{fromLabel}</span>\n <span id={toHiddenLabelId}>{toLabel}</span>\n </VisuallyHidden>\n\n <div className={cx(`${rootClassName}__fields`)}>\n <DateField\n {...fromFieldProps}\n ref={setFromInputRef}\n id={fromFieldProps?.id ?? `${baseId}-from`}\n className={cx(`${rootClassName}__field`, `${rootClassName}__field--from`)}\n startAdornment={<IconCalendar size=\"sm\" />}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n errorText={errorText}\n formatHintLabel={formatHintLabel}\n dateChars={dateChars}\n value={fromValue}\n onChange={onFromChange}\n aria-labelledby={[labelId, fromHiddenLabelId].filter(Boolean).join(\" \") || undefined}\n aria-describedby={describedBy}\n data-testid={dataTestId && `${dataTestId}-from`}\n />\n <DateField\n {...toFieldProps}\n ref={externalToInputRef}\n id={toFieldProps?.id ?? `${baseId}-to`}\n className={cx(`${rootClassName}__field`, `${rootClassName}__field--to`)}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n errorText={errorText}\n formatHintLabel={formatHintLabel}\n dateChars={dateChars}\n value={toValue}\n onChange={onToChange}\n aria-labelledby={[labelId, toHiddenLabelId].filter(Boolean).join(\" \") || undefined}\n aria-describedby={describedBy}\n data-testid={dataTestId && `${dataTestId}-to`}\n />\n </div>\n\n {helperText && (\n <FieldHelperText id={helperId!} disabled={disabled}>\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText\n id={errorId}\n data-testid={dataTestId && `${dataTestId}-error`}\n >\n {errorText}\n </FieldErrorText>\n )}\n </fieldset>\n );\n }\n);\n\nDateRangeField.displayName = \"DateRangeField\";\n"],"names":["o","r","a","h","e","cx","c","styles","rootClassName","DateRangeField","forwardRef","label","fromLabel","toLabel","helperText","errorText","formatHintLabel","dateChars","disabled","readOnly","required","hideRequiredAsterisk","fromValue","toValue","onFromChange","onToChange","fromFieldProps","toFieldProps","externalFromInputRef","externalToInputRef","className","rest","ref","dataTestId","baseId","useId","fromInputRef","useRef","setFromInputRef","node","labelId","fromHiddenLabelId","toHiddenLabelId","helperId","errorId","describedBy","jsxs","jsx","Label","VisuallyHidden","DateField","IconCalendar","FieldHelperText","FieldErrorText"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dismissable-chip-group-2updhyuR.js","sources":["../../../components/dismissable-chip-group/src/dismissable-chip-group-item.tsx","../../../components/dismissable-chip-group/src/dismissable-chip-group.tsx"],"sourcesContent":["import React, { type MouseEvent, type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport c from \"classnames/bind\";\n\nimport {\n DismissableChipGroupNegativeContext,\n DismissableChipGroupSizeContext,\n} from \"./dismissable-chip-group\";\nimport styles from \"./dismissable-chip-group.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type DismissableChipGroupItemProps = Omit<BaseProps<\"button\">, \"aria-label\" | \"children\"> & {\n [\"aria-label\"]: string;\n children: ReactNode;\n onDismiss?: (id?: string) => void;\n};\n\nconst rootClassName = \"purpur-dismissable-chip-group-item\";\n\nexport const DismissableChipGroupItem = ({\n children,\n id,\n onDismiss,\n disabled,\n ...props\n}: DismissableChipGroupItemProps) => {\n const size = useContext(DismissableChipGroupSizeContext);\n const negative = useContext(DismissableChipGroupNegativeContext);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n } else {\n onDismiss?.(id);\n }\n };\n\n return (\n <li key={id} className={cx(`${rootClassName}-wrapper`)}>\n <button\n {...props}\n className={cx(`${rootClassName}`, {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--negative`]: negative,\n [`${rootClassName}--${size}`]: size,\n })}\n key={id}\n disabled={disabled}\n aria-disabled={disabled}\n onClick={handleClick}\n >\n {children}\n <IconClose size={size === \"sm\" ? \"xs\" : \"sm\"} />\n </button>\n </li>\n );\n};\n\nDismissableChipGroupItem.displayName = \"DismissableChipGroupItem\";\n","import React, { createContext, type ReactNode, useId } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./dismissable-chip-group.module.scss\";\nimport { DismissableChipGroupItem } from \"./dismissable-chip-group-item\";\n\nconst cx = c.bind(styles);\n\nexport const sizes = [\"sm\", \"md\"] as const;\nexport const DEFAULT_SIZE = \"md\" as const;\n\nexport type Size = (typeof sizes)[number];\n\nexport type DismissableChipGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n fullWidth?: boolean;\n negative?: boolean;\n size?: Size;\n title?: string;\n titleTag?: HeadingTagType;\n};\n\nexport const DismissableChipGroupSizeContext = createContext<Size>(DEFAULT_SIZE);\nexport const DismissableChipGroupNegativeContext = createContext(false);\n\nconst rootClassName = \"purpur-dismissable-chip-group\";\n\nexport const DismissableChipGroup = ({\n children,\n className,\n fullWidth = false,\n negative = false,\n size = DEFAULT_SIZE,\n title,\n titleTag,\n ...props\n}: DismissableChipGroupProps) => {\n const id = useId();\n const classes = cx(rootClassName, { [`${rootClassName}--negative`]: negative }, className);\n\n return (\n <div\n {...props}\n aria-labelledby={title ? `${id}-label` : undefined}\n className={classes}\n role=\"group\"\n >\n {title && (\n <Heading tag={titleTag ?? \"h2\"} variant=\"subsection-100\" negative={negative}>\n {title}\n </Heading>\n )}\n <ul\n data-testid=\"dismissable-chip-group-container\"\n className={cx(`${rootClassName}__container`, {\n [`${rootClassName}__container--full-width`]: fullWidth,\n [`${rootClassName}__container--${size}`]: size,\n })}\n aria-live=\"polite\"\n aria-relevant=\"additions removals\"\n >\n <DismissableChipGroupNegativeContext.Provider value={negative}>\n <DismissableChipGroupSizeContext.Provider value={size}>\n {children}\n </DismissableChipGroupSizeContext.Provider>\n </DismissableChipGroupNegativeContext.Provider>\n </ul>\n </div>\n );\n};\n\nDismissableChipGroup.Item = DismissableChipGroupItem;\n\nDismissableChipGroup.displayName = \"DismissableChipGroup\";\n"],"names":["cx","c","styles","rootClassName","DismissableChipGroupItem","children","id","onDismiss","disabled","props","size","useContext","DismissableChipGroupSizeContext","negative","DismissableChipGroupNegativeContext","handleClick","e","createElement","IconClose","sizes","DEFAULT_SIZE","createContext","DismissableChipGroup","className","fullWidth","title","titleTag","useId","classes","jsxs","jsx","Heading"],"mappings":"8zCAWMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAQlBC,EAAgB,qCAETC,EAA2B,CAAC,CACvC,SAAAC,EACA,GAAAC,EACA,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAAqC,CACnC,MAAMC,EAAOC,EAAAA,WAAWC,CAA+B,EACjDC,EAAWF,EAAAA,WAAWG,CAAmC,EAEzDC,EAAeC,GAAqC,CACpDR,EACFQ,EAAE,eAAA,EAEFT,IAAYD,CAAE,CAElB,EAEA,aACG,KAAA,CAAY,UAAWN,EAAG,GAAGG,CAAa,UAAU,EACnD,SAAAc,EAAAA,cAAC,SAAA,CACE,GAAGR,EACJ,UAAWT,EAAG,GAAGG,CAAa,GAAI,CAChC,CAAC,GAAGA,CAAa,YAAY,EAAGK,EAChC,CAAC,GAAGL,CAAa,YAAY,EAAGU,EAChC,CAAC,GAAGV,CAAa,KAAKO,CAAI,EAAE,EAAGA,CAAA,CAChC,EACD,IAAKJ,EACL,SAAAE,EACA,gBAAeA,EACf,QAASO,CAAA,EAERV,QACAa,EAAAA,EAAA,CAAU,KAAMR,IAAS,KAAO,KAAO,IAAA,CAAM,CAAA,GAdzCJ,CAgBT,CAEJ,EAEAF,EAAyB,YAAc,2BCpDvC,MAAMJ,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAEXiB,EAAQ,CAAC,KAAM,IAAI,EACnBC,EAAe,KAafR,EAAkCS,EAAAA,cAAoBD,CAAY,EAClEN,EAAsCO,EAAAA,cAAc,EAAK,EAEhElB,EAAgB,gCAETmB,EAAuB,CAAC,CACnC,SAAAjB,EACA,UAAAkB,EACA,UAAAC,EAAY,GACZ,SAAAX,EAAW,GACX,KAAAH,EAAOU,EACP,MAAAK,EACA,SAAAC,EACA,GAAGjB,CACL,IAAiC,CAC/B,MAAMH,EAAKqB,EAAAA,MAAA,EACLC,EAAU5B,EAAGG,EAAe,CAAE,CAAC,GAAGA,CAAa,YAAY,EAAGU,CAAA,EAAYU,CAAS,EAEzF,OACEM,EAAAA,KAAC,MAAA,CACE,GAAGpB,EACJ,kBAAiBgB,EAAQ,GAAGnB,CAAE,SAAW,OACzC,UAAWsB,EACX,KAAK,QAEJ,SAAA,CAAAH,GACCK,EAAAA,IAACC,WAAQ,IAAKL,GAAY,KAAM,QAAQ,iBAAiB,SAAAb,EACtD,SAAAY,CAAA,CACH,EAEFK,EAAAA,IAAC,KAAA,CACC,cAAY,mCACZ,UAAW9B,EAAG,GAAGG,CAAa,cAAe,CAC3C,CAAC,GAAGA,CAAa,yBAAyB,EAAGqB,EAC7C,CAAC,GAAGrB,CAAa,gBAAgBO,CAAI,EAAE,EAAGA,CAAA,CAC3C,EACD,YAAU,SACV,gBAAc,qBAEd,SAAAoB,EAAAA,IAAChB,EAAoC,SAApC,CAA6C,MAAOD,EACnD,SAAAiB,EAAAA,IAAClB,EAAgC,SAAhC,CAAyC,MAAOF,EAC9C,SAAAL,EACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAGN,EAEAiB,EAAqB,KAAOlB,EAE5BkB,EAAqB,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dismissable-chip-group-Cfs2s2BH.mjs","sources":["../../../components/dismissable-chip-group/src/dismissable-chip-group-item.tsx","../../../components/dismissable-chip-group/src/dismissable-chip-group.tsx"],"sourcesContent":["import React, { type MouseEvent, type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport c from \"classnames/bind\";\n\nimport {\n DismissableChipGroupNegativeContext,\n DismissableChipGroupSizeContext,\n} from \"./dismissable-chip-group\";\nimport styles from \"./dismissable-chip-group.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type DismissableChipGroupItemProps = Omit<BaseProps<\"button\">, \"aria-label\" | \"children\"> & {\n [\"aria-label\"]: string;\n children: ReactNode;\n onDismiss?: (id?: string) => void;\n};\n\nconst rootClassName = \"purpur-dismissable-chip-group-item\";\n\nexport const DismissableChipGroupItem = ({\n children,\n id,\n onDismiss,\n disabled,\n ...props\n}: DismissableChipGroupItemProps) => {\n const size = useContext(DismissableChipGroupSizeContext);\n const negative = useContext(DismissableChipGroupNegativeContext);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n } else {\n onDismiss?.(id);\n }\n };\n\n return (\n <li key={id} className={cx(`${rootClassName}-wrapper`)}>\n <button\n {...props}\n className={cx(`${rootClassName}`, {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--negative`]: negative,\n [`${rootClassName}--${size}`]: size,\n })}\n key={id}\n disabled={disabled}\n aria-disabled={disabled}\n onClick={handleClick}\n >\n {children}\n <IconClose size={size === \"sm\" ? \"xs\" : \"sm\"} />\n </button>\n </li>\n );\n};\n\nDismissableChipGroupItem.displayName = \"DismissableChipGroupItem\";\n","import React, { createContext, type ReactNode, useId } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./dismissable-chip-group.module.scss\";\nimport { DismissableChipGroupItem } from \"./dismissable-chip-group-item\";\n\nconst cx = c.bind(styles);\n\nexport const sizes = [\"sm\", \"md\"] as const;\nexport const DEFAULT_SIZE = \"md\" as const;\n\nexport type Size = (typeof sizes)[number];\n\nexport type DismissableChipGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n fullWidth?: boolean;\n negative?: boolean;\n size?: Size;\n title?: string;\n titleTag?: HeadingTagType;\n};\n\nexport const DismissableChipGroupSizeContext = createContext<Size>(DEFAULT_SIZE);\nexport const DismissableChipGroupNegativeContext = createContext(false);\n\nconst rootClassName = \"purpur-dismissable-chip-group\";\n\nexport const DismissableChipGroup = ({\n children,\n className,\n fullWidth = false,\n negative = false,\n size = DEFAULT_SIZE,\n title,\n titleTag,\n ...props\n}: DismissableChipGroupProps) => {\n const id = useId();\n const classes = cx(rootClassName, { [`${rootClassName}--negative`]: negative }, className);\n\n return (\n <div\n {...props}\n aria-labelledby={title ? `${id}-label` : undefined}\n className={classes}\n role=\"group\"\n >\n {title && (\n <Heading tag={titleTag ?? \"h2\"} variant=\"subsection-100\" negative={negative}>\n {title}\n </Heading>\n )}\n <ul\n data-testid=\"dismissable-chip-group-container\"\n className={cx(`${rootClassName}__container`, {\n [`${rootClassName}__container--full-width`]: fullWidth,\n [`${rootClassName}__container--${size}`]: size,\n })}\n aria-live=\"polite\"\n aria-relevant=\"additions removals\"\n >\n <DismissableChipGroupNegativeContext.Provider value={negative}>\n <DismissableChipGroupSizeContext.Provider value={size}>\n {children}\n </DismissableChipGroupSizeContext.Provider>\n </DismissableChipGroupNegativeContext.Provider>\n </ul>\n </div>\n );\n};\n\nDismissableChipGroup.Item = DismissableChipGroupItem;\n\nDismissableChipGroup.displayName = \"DismissableChipGroup\";\n"],"names":["cx","c","styles","rootClassName","DismissableChipGroupItem","children","id","onDismiss","disabled","props","size","useContext","DismissableChipGroupSizeContext","negative","DismissableChipGroupNegativeContext","handleClick","e","createElement","IconClose","sizes","DEFAULT_SIZE","createContext","DismissableChipGroup","className","fullWidth","title","titleTag","useId","classes","jsxs","jsx","Heading"],"mappings":";;;;;;;;;;;;;;;;;;GAWMA,IAAKC,EAAE,KAAKC,CAAM,GAQlBC,IAAgB,sCAETC,IAA2B,CAAC;AAAA,EACvC,UAAAC;AAAA,EACA,IAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAAqC;AACnC,QAAMC,IAAOC,EAAWC,CAA+B,GACjDC,IAAWF,EAAWG,CAAmC,GAEzDC,IAAc,CAACC,MAAqC;AACxD,IAAIR,IACFQ,EAAE,eAAA,IAEFT,IAAYD,CAAE;AAAA,EAElB;AAEA,2BACG,MAAA,EAAY,WAAWN,EAAG,GAAGG,CAAa,UAAU,GACnD,UAAA,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,WAAWT,EAAG,GAAGG,CAAa,IAAI;AAAA,QAChC,CAAC,GAAGA,CAAa,YAAY,GAAGK;AAAA,QAChC,CAAC,GAAGL,CAAa,YAAY,GAAGU;AAAA,QAChC,CAAC,GAAGV,CAAa,KAAKO,CAAI,EAAE,GAAGA;AAAA,MAAA,CAChC;AAAA,MACD,KAAKJ;AAAA,MACL,UAAAE;AAAA,MACA,iBAAeA;AAAA,MACf,SAASO;AAAA,IAAA;AAAA,IAERV;AAAA,sBACAa,GAAA,EAAU,MAAMR,MAAS,OAAO,OAAO,KAAA,CAAM;AAAA,EAAA,KAdzCJ,CAgBT;AAEJ;AAEAF,EAAyB,cAAc;ACpDvC,MAAMJ,IAAKC,EAAE,KAAKC,CAAM,GAEXiB,IAAQ,CAAC,MAAM,IAAI,GACnBC,IAAe,MAafR,IAAkCS,EAAoBD,CAAY,GAClEN,IAAsCO,EAAc,EAAK,GAEhElB,IAAgB,iCAETmB,IAAuB,CAAC;AAAA,EACnC,UAAAjB;AAAA,EACA,WAAAkB;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,UAAAX,IAAW;AAAA,EACX,MAAAH,IAAOU;AAAA,EACP,OAAAK;AAAA,EACA,UAAAC;AAAA,EACA,GAAGjB;AACL,MAAiC;AAC/B,QAAMH,IAAKqB,EAAA,GACLC,IAAU5B,EAAGG,GAAe,EAAE,CAAC,GAAGA,CAAa,YAAY,GAAGU,EAAA,GAAYU,CAAS;AAEzF,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGpB;AAAA,MACJ,mBAAiBgB,IAAQ,GAAGnB,CAAE,WAAW;AAAA,MACzC,WAAWsB;AAAA,MACX,MAAK;AAAA,MAEJ,UAAA;AAAA,QAAAH,KACC,gBAAAK,EAACC,KAAQ,KAAKL,KAAY,MAAM,SAAQ,kBAAiB,UAAAb,GACtD,UAAAY,EAAA,CACH;AAAA,QAEF,gBAAAK;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAW9B,EAAG,GAAGG,CAAa,eAAe;AAAA,cAC3C,CAAC,GAAGA,CAAa,yBAAyB,GAAGqB;AAAA,cAC7C,CAAC,GAAGrB,CAAa,gBAAgBO,CAAI,EAAE,GAAGA;AAAA,YAAA,CAC3C;AAAA,YACD,aAAU;AAAA,YACV,iBAAc;AAAA,YAEd,UAAA,gBAAAoB,EAAChB,EAAoC,UAApC,EAA6C,OAAOD,GACnD,UAAA,gBAAAiB,EAAClB,EAAgC,UAAhC,EAAyC,OAAOF,GAC9C,UAAAL,GACH,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAiB,EAAqB,OAAOlB;AAE5BkB,EAAqB,cAAc;"}
|
package/dist/drawer-DyLQfvEh.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const r=require("react/jsx-runtime"),_=require("react"),j=require("./index-2cFVyGXq.js");require("./ThemeProvider-BJGm3zai.js");const wr=require("./useThemePortalContainer-CUcqV327.js"),O=require("./bind-DeUYJ6m9.js"),E=require("./button-DmybVApa.js"),L=require("./heading-drD5ugCC.js"),fr=require("./chevron-left.es-B0vPg5XM.js"),hr=require("./close.es-VL3lKi1O.js"),G=require("./visually-hidden-C2CKovZx.js"),T=require("./index-CoR7YA3H.js"),Z=_.createContext(null),mr="_slideUp_9zrj7_1",jr="_slideDown_9zrj7_1",$r="_slideInRight_9zrj7_1",vr="_slideInLeft_9zrj7_1",xr="_slideOutRight_9zrj7_1",yr="_slideOutLeft_9zrj7_1",gr="_fadeIn_9zrj7_1",br="_fadeOut_9zrj7_1",Nr={"purpur-drawer-content":"_purpur-drawer-content_9zrj7_1",slideUp:mr,slideDown:jr,"purpur-drawer-content--left":"_purpur-drawer-content--left_9zrj7_21","purpur-drawer-content--right":"_purpur-drawer-content--right_9zrj7_24","purpur-drawer-content--fit-to-content":"_purpur-drawer-content--fit-to-content_9zrj7_27",slideInRight:$r,slideInLeft:vr,slideOutRight:xr,slideOutLeft:yr,"purpur-drawer-content__content-container":"_purpur-drawer-content__content-container_9zrj7_63","purpur-drawer-content__description":"_purpur-drawer-content__description_9zrj7_68","purpur-drawer-content--ai":"_purpur-drawer-content--ai_9zrj7_78","purpur-drawer-overlay":"_purpur-drawer-overlay_9zrj7_82",fadeIn:gr,fadeOut:br},Dr={"purpur-drawer-container--header":"_purpur-drawer-container--header_1csed_1","purpur-drawer-container--ai":"_purpur-drawer-container--ai_1csed_4","purpur-drawer-container--body":"_purpur-drawer-container--body_1csed_7","purpur-drawer-container--sticky":"_purpur-drawer-container--sticky_1csed_15","purpur-drawer-container--footer":"_purpur-drawer-container--footer_1csed_23"},Pr=O.c.bind(Dr),M="purpur-drawer-container",C=_.forwardRef(({["data-testid"]:e="purpur-drawer-container",children:a,className:s,drawerVariant:n="default",variant:d="body",stickyFooter:l,...o},u)=>{const p=Pr([M,{[`${M}--${d}`]:d,[`${M}--sticky`]:l,[`${M}--ai`]:n==="ai"},s]);return r.jsx("div",{className:p,"data-testid":e,ref:u,...o,children:a})});C.displayName="DrawerContainer";const zr={"purpur-drawer-frame":"_purpur-drawer-frame_vjt35_1","purpur-drawer-frame--ai":"_purpur-drawer-frame--ai_vjt35_11","purpur-drawer-frame--without-back-button":"_purpur-drawer-frame--without-back-button_vjt35_14","purpur-drawer-frame__header":"_purpur-drawer-frame__header_vjt35_14","purpur-drawer-frame--with-back-button":"_purpur-drawer-frame--with-back-button_vjt35_17","purpur-drawer-frame--left":"_purpur-drawer-frame--left_vjt35_21","purpur-drawer-frame--right":"_purpur-drawer-frame--right_vjt35_25","purpur-drawer-frame--sticky-footer":"_purpur-drawer-frame--sticky-footer_vjt35_36","purpur-drawer-frame__body":"_purpur-drawer-frame__body_vjt35_42","purpur-drawer-frame--fit-to-content":"_purpur-drawer-frame--fit-to-content_vjt35_46","purpur-drawer-frame__footer":"_purpur-drawer-frame__footer_vjt35_55","purpur-drawer-frame__content-container":"_purpur-drawer-frame__content-container_vjt35_58","purpur-drawer-frame__content-container--no-footer":"_purpur-drawer-frame__content-container--no-footer_vjt35_63"},Sr={"purpur-drawer-handle":"_purpur-drawer-handle_lz3ca_1","purpur-drawer-handle--ai":"_purpur-drawer-handle--ai_lz3ca_22"},Ar=(e,a,s,n,d,l)=>({onPointerDown:t=>{e.current={y:t.clientY}},onPointerMove:t=>{if(!e.current)return;const i=t.clientY-e.current.y,w=!!a.current,f=Math.max(0,i),$=t.pointerType==="touch"?10:2,c={y:f},g={originalEvent:t,delta:c};w?(a.current=c,n(g)):J(c,0)?(a.current=c,s(),t.target.setPointerCapture(t.pointerId)):Math.abs(i)>$&&(e.current=null)},onPointerUp:t=>{const i=a.current,w=t.target;if(w.hasPointerCapture(t.pointerId)&&w.releasePointerCapture(t.pointerId),a.current=null,e.current=null,i){const f=t.currentTarget,$={originalEvent:t,delta:i};J(i,0)&&i.y>200?l($):d(),f.addEventListener("click",c=>c.preventDefault(),{once:!0})}}}),J=(e,a=0)=>Math.abs(e.y)>a,Cr=O.c.bind(Sr),Q="purpur-drawer-handle",rr=_.forwardRef(({["data-testid"]:e="purpur-drawer-handle",className:a,onSwipeStart:s,onSwipeMove:n,onSwipeCancel:d,onSwipeEnd:l,variant:o="default",...u},p)=>{const t=Cr([Q,{[`${Q}--ai`]:o==="ai"},a]),i=_.useRef(null),w=_.useRef(null),{onPointerDown:f,onPointerMove:$,onPointerUp:c}=Ar(w,i,s,n,d,l);return r.jsx("div",{className:t,"data-testid":e,onPointerDown:f,onPointerMove:$,onPointerUp:c,ref:p,...u})});rr.displayName="DrawerHandle";const Or={"purpur-drawer-header":"_purpur-drawer-header_1dlfk_1","purpur-drawer-header__row":"_purpur-drawer-header__row_1dlfk_4","purpur-drawer-header__row--with-back-button":"_purpur-drawer-header__row--with-back-button_1dlfk_7","purpur-drawer-header__left":"_purpur-drawer-header__left_1dlfk_10","purpur-drawer-header__right":"_purpur-drawer-header__right_1dlfk_13","purpur-drawer-header__close-button":"_purpur-drawer-header__close-button_1dlfk_16","purpur-drawer-header__back-button--only-icon":"_purpur-drawer-header__back-button--only-icon_1dlfk_27","purpur-drawer-header__title":"_purpur-drawer-header__title_1dlfk_30"},b=O.c.bind(Or),y="purpur-drawer-header",er=_.forwardRef(({["data-testid"]:e="purpur-drawer-header",backButton:a,backButtonText:s,backButtonOnlyIcon:n,className:d,closeButtonAriaLabel:l,headerContent:o,onBackButtonClick:u,onCloseClick:p,title:t,variant:i="default",...w},f)=>{const $=b([y,{[`${y}--ai`]:i==="ai"},d]),c=!!(a&&s&&u),g=i==="ai",V=p?_.Fragment:j.Close;return r.jsxs("div",{className:$,"data-testid":e,ref:f,...w,children:[r.jsxs("div",{className:b([`${y}__row`,{[`${y}__row--with-back-button`]:c}]),"data-testid":`${e}-row`,children:[r.jsx("div",{className:b(`${y}__left`),children:c?r.jsxs(E.Button,{"aria-label":n?s:"",className:b([`${y}__back-button`,{[`${y}__back-button--only-icon`]:n}]),"data-testid":`${e}-back-button`,iconOnly:n,negative:g,onClick:u,size:"sm",variant:n?E.BUTTON_VARIANT.TERTIARY_PURPLE:E.BUTTON_VARIANT.TEXT,children:[r.jsx(fr.l,{size:"sm"}),!n&&s]}):o?r.jsxs(r.Fragment,{children:[o,r.jsx(G.VisuallyHidden,{asChild:!0,children:r.jsx(j.Title,{children:t})})]}):r.jsx(j.Title,{asChild:!0,children:r.jsx(L.Heading,{className:b(`${y}__title`),"data-testid":`${e}-title`,negative:g,tag:"h2",variant:L.DisplayVariant.DISPLAY10,tabIndex:-1,children:t})})}),r.jsx("div",{className:b(`${y}__right`),children:r.jsx(V,{...p?{}:{asChild:!0},children:r.jsx(E.Button,{"aria-label":l,className:b(`${y}__close-button`),iconOnly:!0,negative:g,onClick:p,size:"sm",variant:E.BUTTON_VARIANT.TERTIARY_PURPLE,children:r.jsx(hr.r,{size:"sm"})})})})]}),c&&(o?r.jsxs(r.Fragment,{children:[o,r.jsx(G.VisuallyHidden,{asChild:!0,children:r.jsx(j.Title,{children:t})})]}):r.jsx(j.Title,{asChild:!0,children:r.jsx(L.Heading,{"data-testid":`${e}-title-with-back-button`,className:b(`${y}__title`),negative:g,tag:"h2",tabIndex:-1,variant:L.DisplayVariant.DISPLAY10,children:t})}))]})});er.displayName="DrawerHeader";const Vr={"purpur-drawer-scroll-area__root":"_purpur-drawer-scroll-area__root_vzgxi_1","purpur-drawer-scroll-area__root--fit-to-content":"_purpur-drawer-scroll-area__root--fit-to-content_vzgxi_4","purpur-drawer-scroll-area__viewport":"_purpur-drawer-scroll-area__viewport_vzgxi_10","purpur-drawer-scroll-area__scrollbar":"_purpur-drawer-scroll-area__scrollbar_vzgxi_14","purpur-drawer-scroll-area--ai":"_purpur-drawer-scroll-area--ai_vzgxi_25","purpur-drawer-scroll-area__thumb":"_purpur-drawer-scroll-area__thumb_vzgxi_29"},q=O.c.bind(Vr),D="purpur-drawer-scroll-area",F=_.forwardRef(({["data-testid"]:e="purpur-drawer-scroll-area",children:a,className:s,drawerVariant:n="default",fitToContent:d=!1,...l},o)=>{const u=q([D,{[`${D}--ai`]:n==="ai"},s]);return r.jsx("div",{className:u,"data-testid":e,ref:o,...l,children:r.jsxs(T.Root,{className:q(`${D}__root`,{[`${D}__root--fit-to-content`]:d}),children:[r.jsx(T.Viewport,{className:q(`${D}__viewport`),children:a}),r.jsx(T.Scrollbar,{className:q(`${D}__scrollbar`),orientation:"vertical",children:r.jsx(T.Thumb,{className:q(`${D}__thumb`)})})]})})});F.displayName="DrawerScrollArea";const S=O.c.bind(zr),h="purpur-drawer-frame",tr=_.forwardRef(({["data-testid"]:e="purpur-drawer-frame",backButton:a,backButtonText:s,backButtonOnlyIcon:n,children:d,className:l,closeButtonAriaLabel:o,fitToContent:u=!1,footerContent:p,headerContent:t,onBackButtonClick:i,onCloseClick:w,onSwipeStart:f,onSwipeMove:$,onSwipeCancel:c,onSwipeEnd:g,title:V,stickyFooter:v,position:P="right",variant:m="default",...z},k)=>{const R=!!(a&&s&&i),H=m==="ai",Y=S([h,{[`${h}--fit-to-content`]:u,[`${h}--sticky-footer`]:v,[`${h}--left`]:P==="left",[`${h}--right`]:P==="right",[`${h}--without-back-button`]:!R,[`${h}--with-back-button`]:R,[`${h}--ai`]:H},l]);return r.jsxs("div",{className:Y,"data-testid":e,ref:k,...z,children:[r.jsx(rr,{onSwipeStart:f,onSwipeMove:$,onSwipeCancel:c,onSwipeEnd:g,variant:m}),r.jsx(C,{className:S(`${h}__header`),variant:"header",stickyFooter:v,drawerVariant:m,children:r.jsx(er,{title:V,headerContent:t,backButtonOnlyIcon:n,backButton:a,backButtonText:s,closeButtonAriaLabel:o,onBackButtonClick:i,onCloseClick:w,variant:m})}),v?r.jsxs(r.Fragment,{children:[r.jsx(F,{className:S(`${h}__body`),"data-testid":`${e}-sticky-footer-scroll-area`,fitToContent:u,drawerVariant:m,children:r.jsx(C,{stickyFooter:!0,drawerVariant:m,children:d})}),p&&r.jsx(C,{className:S(`${h}__footer`),"data-testid":`${e}-sticky-footer`,variant:"footer",stickyFooter:v,drawerVariant:m,children:p})]}):r.jsx(F,{className:S(`${h}__body`),"data-testid":`${e}-scroll-area`,fitToContent:u,drawerVariant:m,children:r.jsxs("div",{className:S([`${h}__content-container`,{[`${h}__content-container--no-footer`]:!p}]),children:[r.jsx(C,{stickyFooter:v,drawerVariant:m,children:d}),p&&r.jsx(C,{"data-testid":`${e}-footer`,stickyFooter:v,variant:"footer",drawerVariant:m,children:p})]})})]})});tr.displayName="DrawerFrame";const kr=(e,a)=>({onSwipeStart:()=>{e.current&&e.current.setAttribute("data-swipe","start")},onSwipeMove:o=>{if(!e.current)return;const{y:u}=o.delta;e.current.setAttribute("data-swipe","move"),e.current.style.setProperty("--purpur-drawer-swipe-move-y",`${u}px`)},onSwipeCancel:()=>{e.current&&(e.current.setAttribute("data-swipe","cancel"),e.current.style.removeProperty("--purpur-drawer-swipe-move-y"),e.current.style.removeProperty("--purpur-drawer-swipe-end-y"))},onSwipeEnd:o=>{if(!e.current)return;const{y:u}=o.delta;e.current.setAttribute("data-swipe","end"),e.current.style.removeProperty("--purpur-drawer-swipe-move-y"),e.current.style.setProperty("--purpur-drawer-swipe-end-y",`${u}px`),a?.(!1)}}),A=O.c.bind(Nr),N="purpur-drawer-content",ar=_.forwardRef(({["data-testid"]:e="purpur-drawer-content",backButton:a=!1,backButtonText:s,backButtonOnlyIcon:n=!1,bodyText:d,children:l,className:o,closeButtonAriaLabel:u,container:p,disableCloseOnClickOutside:t=!1,fitToContent:i=!1,footerContent:w,headerContent:f,onBackButtonClick:$,onCloseClick:c,stickyFooter:g=!1,title:V,zIndex:v,position:P="right",...m},z)=>{const k=_.useContext(Z),R=k?.variant??"default",H=k?.isModal??!0,Y=wr.useThemePortalContainer(),I=p===void 0?Y:p??void 0,sr=A([N,{[`${N}--fit-to-content`]:i,[`${N}--left`]:P==="left",[`${N}--right`]:P==="right",[`${N}--ai`]:R==="ai"},o]),K=_.useRef(null),W=_.useRef(null),or=x=>{W.current=x,typeof z=="function"?z(x):z&&(z.current=x)},{onSwipeStart:ur,onSwipeMove:ir,onSwipeCancel:dr,onSwipeEnd:cr}=kr(W,k?.onOpenChange??null),lr=x=>{if(t){x.preventDefault();return}c&&(x.preventDefault(),c())},pr=x=>{c&&(x.preventDefault(),c())},_r=()=>{const x=K.current;if(x){const B=x.querySelector("h2");B&&setTimeout(()=>{B.focus()})}},X=r.jsx(j.Content,{onPointerDownOutside:lr,onEscapeKeyDown:pr,onOpenAutoFocus:_r,className:sr,"data-testid":e,ref:or,...!d&&{"aria-describedby":void 0},...m,children:r.jsx(tr,{backButton:a,backButtonText:s,backButtonOnlyIcon:n,closeButtonAriaLabel:u,className:A(`${N}__drawer-frame`),fitToContent:i,footerContent:w,headerContent:f,ref:K,onBackButtonClick:$,onCloseClick:c,onSwipeStart:ur,onSwipeMove:ir,onSwipeCancel:dr,onSwipeEnd:cr,stickyFooter:g,title:V,position:P,variant:R,children:d?r.jsxs("div",{className:A(`${N}__content-container`),children:[r.jsx(j.Description,{className:A(`${N}__description`),"data-testid":`${e}-description`,children:d}),r.jsx("div",{children:l})]}):l})});return H?r.jsx(j.Portal,{container:I,children:r.jsx(j.Overlay,{className:A("purpur-drawer-overlay"),style:v?{zIndex:v}:void 0,"data-testid":`${e}-overlay`,children:X})}):r.jsx(j.Portal,{container:I,children:r.jsx("div",{className:A("purpur-drawer-overlay"),style:v?{zIndex:v}:void 0,"data-testid":`${e}-overlay`,children:X})})});ar.displayName="DrawerContent";const nr=_.forwardRef(({["data-testid"]:e="purpur-drawer-trigger",children:a,...s},n)=>r.jsx(j.Trigger,{asChild:!0,"data-testid":e,ref:n,...s,children:a}));nr.displayName="DrawerTrigger";const U=({["data-testid"]:e="purpur-drawer",children:a,className:s,isModal:n=!0,onOpenChange:d,open:l=!1,variant:o="default",...u})=>{const[p,t]=_.useState(l),i=f=>{t(f),d?.(f)};_.useEffect(()=>{t(l)},[l]);const w={isModal:n,onOpenChange:i,variant:o};return r.jsx(Z.Provider,{value:w,children:r.jsx("div",{className:s,"data-testid":e,...u,children:r.jsx(j.Root,{open:p,onOpenChange:i,modal:n,children:a})})})};U.Trigger=nr;U.Content=ar;U.displayName="Drawer";exports.Drawer=U;
|
|
2
|
-
//# sourceMappingURL=drawer-DyLQfvEh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-DyLQfvEh.js","sources":["../../../components/drawer/src/drawer.context.ts","../../../components/drawer/src/drawer-container.tsx","../../../components/drawer/src/use-swipe-tracking.hook.ts","../../../components/drawer/src/drawer-handle.tsx","../../../components/drawer/src/drawer-header.tsx","../../../components/drawer/src/drawer-scroll-area.tsx","../../../components/drawer/src/drawer-frame.tsx","../../../components/drawer/src/use-swipe-to-dismiss.hook.ts","../../../components/drawer/src/drawer-content.tsx","../../../components/drawer/src/drawer-trigger.tsx","../../../components/drawer/src/drawer.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nimport { type DrawerVariant, type OpenHandlerFunction } from \"./types\";\n\nexport type DrawerContextValue = {\n isModal: boolean;\n onOpenChange: OpenHandlerFunction;\n variant: DrawerVariant;\n};\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-container.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n stickyFooter: boolean;\n variant?: \"header\" | \"body\" | \"footer\";\n};\n\nconst rootClassName = \"purpur-drawer-container\";\n\nexport const DrawerContainer = forwardRef<HTMLDivElement, DrawerContainerProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-container\",\n children,\n className,\n drawerVariant = \"default\",\n variant = \"body\",\n stickyFooter,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--sticky`]: stickyFooter,\n [`${rootClassName}--ai`]: drawerVariant === \"ai\",\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </div>\n );\n }\n);\n\nDrawerContainer.displayName = \"DrawerContainer\";\n","import type { PointerEvent, RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeTracking = {\n onPointerDown(event: PointerEvent): void;\n onPointerMove(event: PointerEvent): void;\n onPointerUp(event: PointerEvent): void;\n};\n\nexport const useSwipeTracking = (\n pointerStartRef: RefObject<{ y: number } | null>,\n swipeDeltaRef: RefObject<{ y: number } | null>,\n onSwipeStart: () => void,\n onSwipeMove: (event: SwipeEvent) => void,\n onSwipeCancel: () => void,\n onSwipeEnd: (event: SwipeEvent) => void\n): UseSwipeTracking => {\n const onPointerDown = (event: PointerEvent) => {\n pointerStartRef.current = { y: event.clientY };\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!pointerStartRef.current) {\n return;\n }\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const clampedY = Math.max(0, y);\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n onSwipeMove(eventDetail);\n } else if (isDeltaInDirection(delta, 0)) {\n swipeDeltaRef.current = delta;\n onSwipeStart();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n } else if (Math.abs(y) > moveStartBuffer) {\n // User is swiping in wrong direction so we disable swipe gesture\n // for the current pointer down interaction\n pointerStartRef.current = null;\n }\n };\n const onPointerUp = (event: PointerEvent) => {\n const delta = swipeDeltaRef.current;\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const swipeHandle = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, 0) && delta.y > 200) {\n onSwipeEnd(eventDetail);\n } else {\n onSwipeCancel();\n }\n // Prevent click event from triggering on items within the drawer when\n // pointer up is part of a swipe gesture\n swipeHandle.addEventListener(\"click\", (event) => event.preventDefault(), {\n once: true,\n });\n }\n };\n return {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n };\n};\n\nconst isDeltaInDirection = (delta: { y: number }, threshold = 0) => {\n const deltaY = Math.abs(delta.y);\n return deltaY > threshold;\n};\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-handle.module.scss\";\nimport { type DrawerVariant, type SwipeEvent } from \"./types\";\nimport { useSwipeTracking } from \"./use-swipe-tracking.hook\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHandleProps = Omit<BaseProps, \"children\"> & {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-handle\";\n\nexport const DrawerHandle = forwardRef<HTMLDivElement, DrawerHandleProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-handle\",\n className,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const pointerStartRef = React.useRef<{ y: number } | null>(null);\n const swipeDeltaRef = React.useRef<{ y: number } | null>(null);\n const { onPointerDown, onPointerMove, onPointerUp } = useSwipeTracking(\n swipeDeltaRef,\n pointerStartRef,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd\n );\n\n return (\n <div\n className={classes}\n data-testid={dataTestId}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nDrawerHandle.displayName = \"DrawerHandle\";\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { DisplayVariant, Heading } from \"@purpur/heading\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-header.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHeaderProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n closeButtonAriaLabel: string;\n headerContent?: React.ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n title: string;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-header\";\n\nexport const DrawerHeader = forwardRef<HTMLDivElement, DrawerHeaderProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-header\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n className,\n closeButtonAriaLabel,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n title,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n\n const CloseButtonWrapper = onCloseClick ? React.Fragment : RadixDialog.Close;\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <div\n className={cx([\n `${rootClassName}__row`,\n {\n [`${rootClassName}__row--with-back-button`]: hasBackButton,\n },\n ])}\n data-testid={`${dataTestId}-row`}\n >\n <div className={cx(`${rootClassName}__left`)}>\n {hasBackButton ? (\n <Button\n aria-label={backButtonOnlyIcon ? backButtonText : \"\"}\n className={cx([\n `${rootClassName}__back-button`,\n {\n [`${rootClassName}__back-button--only-icon`]: backButtonOnlyIcon,\n },\n ])}\n data-testid={`${dataTestId}-back-button`}\n iconOnly={backButtonOnlyIcon}\n negative={isAi}\n onClick={onBackButtonClick}\n size=\"sm\"\n variant={backButtonOnlyIcon ? BUTTON_VARIANT.TERTIARY_PURPLE : BUTTON_VARIANT.TEXT}\n >\n <IconChevronLeft size=\"sm\" />\n {!backButtonOnlyIcon && backButtonText}\n </Button>\n ) : headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n className={cx(`${rootClassName}__title`)}\n data-testid={`${dataTestId}-title`}\n negative={isAi}\n tag=\"h2\"\n variant={DisplayVariant.DISPLAY10}\n tabIndex={-1}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n )}\n </div>\n\n <div className={cx(`${rootClassName}__right`)}>\n <CloseButtonWrapper {...(onCloseClick ? {} : { asChild: true })}>\n <Button\n aria-label={closeButtonAriaLabel}\n className={cx(`${rootClassName}__close-button`)}\n iconOnly\n negative={isAi}\n onClick={onCloseClick}\n size=\"sm\"\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n >\n <IconClose size=\"sm\" />\n </Button>\n </CloseButtonWrapper>\n </div>\n </div>\n {hasBackButton &&\n (headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n data-testid={`${dataTestId}-title-with-back-button`}\n className={cx(`${rootClassName}__title`)}\n negative={isAi}\n tag=\"h2\"\n tabIndex={-1}\n variant={DisplayVariant.DISPLAY10}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n ))}\n </div>\n );\n }\n);\n\nDrawerHeader.displayName = \"DrawerHeader\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-scroll-area.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerScrollAreaProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n fitToContent?: boolean;\n};\n\nconst rootClassName = \"purpur-drawer-scroll-area\";\n\nexport const DrawerScrollArea = forwardRef<HTMLDivElement, DrawerScrollAreaProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-scroll-area\",\n children,\n className,\n drawerVariant = \"default\",\n fitToContent = false,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n { [`${rootClassName}--ai`]: drawerVariant === \"ai\" },\n className,\n ]);\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <RadixScrollArea.Root\n className={cx(`${rootClassName}__root`, {\n [`${rootClassName}__root--fit-to-content`]: fitToContent,\n })}\n >\n <RadixScrollArea.Viewport className={cx(`${rootClassName}__viewport`)}>\n {children}\n </RadixScrollArea.Viewport>\n <RadixScrollArea.Scrollbar\n className={cx(`${rootClassName}__scrollbar`)}\n orientation=\"vertical\"\n >\n <RadixScrollArea.Thumb className={cx(`${rootClassName}__thumb`)} />\n </RadixScrollArea.Scrollbar>\n </RadixScrollArea.Root>\n </div>\n );\n }\n);\n\nDrawerScrollArea.displayName = \"DrawerScrollArea\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContainer } from \"./drawer-container\";\nimport styles from \"./drawer-frame.module.scss\";\nimport { DrawerHandle } from \"./drawer-handle\";\nimport { DrawerHeader } from \"./drawer-header\";\nimport { DrawerScrollArea } from \"./drawer-scroll-area\";\nimport { type DrawerVariant, type Position, type SwipeEvent } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerFrameProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n children: ReactNode;\n closeButtonAriaLabel: string;\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n stickyFooter: boolean;\n title: string;\n position?: Position;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-frame\";\n\nexport const DrawerFrame = forwardRef<HTMLDivElement, DrawerFrameProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-frame\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n children,\n className,\n closeButtonAriaLabel,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n title,\n stickyFooter,\n position = \"right\",\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--sticky-footer`]: stickyFooter,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--without-back-button`]: !hasBackButton,\n [`${rootClassName}--with-back-button`]: hasBackButton,\n [`${rootClassName}--ai`]: isAi,\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <DrawerHandle\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n variant={variant}\n />\n <DrawerContainer\n className={cx(`${rootClassName}__header`)}\n variant=\"header\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n <DrawerHeader\n title={title}\n headerContent={headerContent}\n backButtonOnlyIcon={backButtonOnlyIcon}\n backButton={backButton}\n backButtonText={backButtonText}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n variant={variant}\n />\n </DrawerContainer>\n {stickyFooter ? (\n <>\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-sticky-footer-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <DrawerContainer stickyFooter drawerVariant={variant}>\n {children}\n </DrawerContainer>\n </DrawerScrollArea>\n {footerContent && (\n <DrawerContainer\n className={cx(`${rootClassName}__footer`)}\n data-testid={`${dataTestId}-sticky-footer`}\n variant=\"footer\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </>\n ) : (\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <div\n className={cx([\n `${rootClassName}__content-container`,\n { [`${rootClassName}__content-container--no-footer`]: !footerContent },\n ])}\n >\n <DrawerContainer stickyFooter={stickyFooter} drawerVariant={variant}>\n {children}\n </DrawerContainer>\n {footerContent && (\n <DrawerContainer\n data-testid={`${dataTestId}-footer`}\n stickyFooter={stickyFooter}\n variant=\"footer\"\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </div>\n </DrawerScrollArea>\n )}\n </div>\n );\n }\n);\n\nDrawerFrame.displayName = \"DrawerFrame\";\n","import type { RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeToDismiss = {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n};\n\nexport const useSwipeToDismiss = <T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n handleOpenChange: ((open: boolean) => void) | null\n): UseSwipeToDismiss => {\n const onSwipeStart = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"start\");\n };\n const onSwipeMove = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"move\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-move-y\", `${y}px`);\n };\n const onSwipeCancel = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"cancel\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-end-y\");\n };\n const onSwipeEnd = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"end\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-end-y\", `${y}px`);\n handleOpenChange?.(false);\n };\n\n return {\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n };\n};\n","import React, { forwardRef, type ReactNode, useContext, useRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { useThemePortalContainer } from \"@purpur/theme\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport styles from \"./drawer-content.module.scss\";\nimport { DrawerFrame } from \"./drawer-frame\";\nimport { type Position } from \"./types\";\nimport { useSwipeToDismiss } from \"./use-swipe-to-dismiss.hook\";\n\nconst cx = c.bind(styles);\n\nexport type WithBackButton = {\n backButton: boolean;\n backButtonText: string;\n backButtonOnlyIcon?: boolean;\n onBackButtonClick: () => void;\n};\n\nexport type WithoutBackButton = {\n backButton?: never;\n backButtonText?: never;\n backButtonOnlyIcon?: never;\n onBackButtonClick?: never;\n};\n\nexport type DrawerContentProps = Omit<BaseProps, \"children\"> & {\n bodyText?: string;\n children: ReactNode;\n closeButtonAriaLabel: string;\n /**\n * Optional DOM element to portal the drawer content into. When omitted,\n * the drawer renders inside the nearest `ThemeProvider` so it inherits\n * the active color scheme. Pass `document.body` (or any other element) to\n * override. Pass `null` to fall back to Radix' default (`document.body`).\n */\n container?: HTMLElement | null;\n disableCloseOnClickOutside?: boolean;\n /**\n * If true, the drawer height will fit to its content on small screens.\n */\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onCloseClick?: () => void;\n stickyFooter?: boolean;\n title: string;\n zIndex?: number;\n position?: Position;\n} & (WithoutBackButton | WithBackButton);\n\nconst rootClassName = \"purpur-drawer-content\";\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-content\",\n backButton = false,\n backButtonText,\n backButtonOnlyIcon = false,\n bodyText,\n children,\n className,\n closeButtonAriaLabel,\n container,\n disableCloseOnClickOutside = false,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n stickyFooter = false,\n title,\n zIndex,\n position = \"right\",\n ...props\n },\n ref\n ) => {\n const drawerContext = useContext(DrawerContext);\n const variant = drawerContext?.variant ?? \"default\";\n const isModal = drawerContext?.isModal ?? true;\n const themePortalContainer = useThemePortalContainer();\n const portalContainer =\n container === undefined ? themePortalContainer : container ?? undefined;\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--ai`]: variant === \"ai\",\n },\n className,\n ]);\n\n const drawerFrameRef = useRef<HTMLDivElement>(null);\n const internalDrawerContentRef = useRef<HTMLDivElement>(null);\n\n const setRef = (node: HTMLDivElement | null) => {\n internalDrawerContentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const { onSwipeStart, onSwipeMove, onSwipeCancel, onSwipeEnd } = useSwipeToDismiss(\n internalDrawerContentRef,\n drawerContext?.onOpenChange ?? null\n );\n\n const handlePointerDownOutside = (event: CustomEvent<{ originalEvent: PointerEvent }>) => {\n if (disableCloseOnClickOutside) {\n event.preventDefault();\n return;\n }\n\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleInitialFocus = () => {\n const frame = drawerFrameRef.current;\n if (frame) {\n const heading = frame.querySelector(\"h2\");\n\n heading &&\n setTimeout(() => {\n heading.focus();\n });\n }\n };\n\n const dialogContent = (\n <RadixDialog.Content\n onPointerDownOutside={handlePointerDownOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleInitialFocus}\n className={classes}\n data-testid={dataTestId}\n ref={setRef}\n {...(!bodyText && { [\"aria-describedby\"]: undefined })}\n {...props}\n >\n <DrawerFrame\n backButton={backButton}\n backButtonText={backButtonText}\n backButtonOnlyIcon={backButtonOnlyIcon}\n closeButtonAriaLabel={closeButtonAriaLabel}\n className={cx(`${rootClassName}__drawer-frame`)}\n fitToContent={fitToContent}\n footerContent={footerContent}\n headerContent={headerContent}\n ref={drawerFrameRef}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n stickyFooter={stickyFooter}\n title={title}\n position={position}\n variant={variant}\n >\n {bodyText ? (\n <div className={cx(`${rootClassName}__content-container`)}>\n <RadixDialog.Description\n className={cx(`${rootClassName}__description`)}\n data-testid={`${dataTestId}-description`}\n >\n {bodyText}\n </RadixDialog.Description>\n <div>{children}</div>\n </div>\n ) : (\n children\n )}\n </DrawerFrame>\n </RadixDialog.Content>\n );\n\n if (!isModal) {\n return (\n <RadixDialog.Portal container={portalContainer}>\n <div\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n {dialogContent}\n </div>\n </RadixDialog.Portal>\n );\n }\n\n return (\n <RadixDialog.Portal container={portalContainer}>\n <RadixDialog.Overlay\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n {dialogContent}\n </RadixDialog.Overlay>\n </RadixDialog.Portal>\n );\n }\n);\n\nDrawerContent.displayName = \"DrawerContent\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nexport type DrawerTriggerProps = Omit<BaseProps<\"button\">, \"children\"> & {\n children: ReactNode;\n};\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n ({ [\"data-testid\"]: dataTestId = \"purpur-drawer-trigger\", children, ...props }, ref) => {\n return (\n <RadixDialog.Trigger asChild data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n );\n }\n);\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n","import React, { type ReactNode, useEffect } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport { DrawerContent } from \"./drawer-content\";\nimport { DrawerTrigger } from \"./drawer-trigger\";\nimport { type DrawerVariant } from \"./types\";\n\nexport type { DrawerVariant };\n\nexport type DrawerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n /**\n * Whether the drawer should be modal. When `true` (default), focus is trapped\n * and pointer events outside the drawer are disabled. Set to `false` when rendering\n * components that use portals (e.g. DatePicker) inside the drawer.\n */\n isModal?: boolean;\n onOpenChange?: (open: boolean) => void;\n open: boolean;\n variant?: DrawerVariant;\n};\n\nexport type DrawerComponent<P> = React.FunctionComponent<P> & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n};\n\nexport const Drawer: DrawerComponent<DrawerProps> = ({\n [\"data-testid\"]: dataTestId = \"purpur-drawer\",\n children,\n className,\n isModal = true,\n onOpenChange,\n open = false,\n variant = \"default\",\n ...props\n}: DrawerProps) => {\n const [_open, _setOpen] = React.useState(open);\n\n const handleOpenChange = (newOpen: boolean) => {\n _setOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n useEffect(() => {\n _setOpen(open);\n }, [open]);\n\n const contextValue = { isModal, onOpenChange: handleOpenChange, variant };\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <div className={className} data-testid={dataTestId} {...props}>\n <RadixDialog.Root open={_open} onOpenChange={handleOpenChange} modal={isModal}>\n {children}\n </RadixDialog.Root>\n </div>\n </DrawerContext.Provider>\n );\n};\n\nDrawer.Trigger = DrawerTrigger;\nDrawer.Content = DrawerContent;\nDrawer.displayName = \"Drawer\";\n"],"names":["DrawerContext","createContext","cx","c","styles","rootClassName","DrawerContainer","forwardRef","dataTestId","children","className","drawerVariant","variant","stickyFooter","props","ref","classes","jsx","useSwipeTracking","pointerStartRef","swipeDeltaRef","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","event","y","hasSwipeMoveStarted","clampedY","moveStartBuffer","delta","eventDetail","isDeltaInDirection","target","swipeHandle","threshold","DrawerHandle","React","onPointerDown","onPointerMove","onPointerUp","DrawerHeader","backButton","backButtonText","backButtonOnlyIcon","closeButtonAriaLabel","headerContent","onBackButtonClick","onCloseClick","title","hasBackButton","isAi","CloseButtonWrapper","RadixDialog.Close","jsxs","Button","BUTTON_VARIANT","IconChevronLeft","Fragment","VisuallyHidden","RadixDialog.Title","Heading","DisplayVariant","IconClose","DrawerScrollArea","fitToContent","RadixScrollArea.Root","RadixScrollArea.Viewport","RadixScrollArea.Scrollbar","RadixScrollArea.Thumb","DrawerFrame","footerContent","position","useSwipeToDismiss","containerRef","handleOpenChange","DrawerContent","bodyText","container","disableCloseOnClickOutside","zIndex","drawerContext","useContext","isModal","themePortalContainer","useThemePortalContainer","portalContainer","drawerFrameRef","useRef","internalDrawerContentRef","setRef","node","handlePointerDownOutside","handleEscapeKeyDown","handleInitialFocus","frame","heading","dialogContent","RadixDialog.Content","RadixDialog.Description","RadixDialog.Portal","RadixDialog.Overlay","DrawerTrigger","RadixDialog.Trigger","Drawer","onOpenChange","open","_open","_setOpen","newOpen","useEffect","contextValue","RadixDialog.Root"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-cIUx6WSZ.mjs","sources":["../../../components/drawer/src/drawer.context.ts","../../../components/drawer/src/drawer-container.tsx","../../../components/drawer/src/use-swipe-tracking.hook.ts","../../../components/drawer/src/drawer-handle.tsx","../../../components/drawer/src/drawer-header.tsx","../../../components/drawer/src/drawer-scroll-area.tsx","../../../components/drawer/src/drawer-frame.tsx","../../../components/drawer/src/use-swipe-to-dismiss.hook.ts","../../../components/drawer/src/drawer-content.tsx","../../../components/drawer/src/drawer-trigger.tsx","../../../components/drawer/src/drawer.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nimport { type DrawerVariant, type OpenHandlerFunction } from \"./types\";\n\nexport type DrawerContextValue = {\n isModal: boolean;\n onOpenChange: OpenHandlerFunction;\n variant: DrawerVariant;\n};\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-container.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n stickyFooter: boolean;\n variant?: \"header\" | \"body\" | \"footer\";\n};\n\nconst rootClassName = \"purpur-drawer-container\";\n\nexport const DrawerContainer = forwardRef<HTMLDivElement, DrawerContainerProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-container\",\n children,\n className,\n drawerVariant = \"default\",\n variant = \"body\",\n stickyFooter,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--sticky`]: stickyFooter,\n [`${rootClassName}--ai`]: drawerVariant === \"ai\",\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </div>\n );\n }\n);\n\nDrawerContainer.displayName = \"DrawerContainer\";\n","import type { PointerEvent, RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeTracking = {\n onPointerDown(event: PointerEvent): void;\n onPointerMove(event: PointerEvent): void;\n onPointerUp(event: PointerEvent): void;\n};\n\nexport const useSwipeTracking = (\n pointerStartRef: RefObject<{ y: number } | null>,\n swipeDeltaRef: RefObject<{ y: number } | null>,\n onSwipeStart: () => void,\n onSwipeMove: (event: SwipeEvent) => void,\n onSwipeCancel: () => void,\n onSwipeEnd: (event: SwipeEvent) => void\n): UseSwipeTracking => {\n const onPointerDown = (event: PointerEvent) => {\n pointerStartRef.current = { y: event.clientY };\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!pointerStartRef.current) {\n return;\n }\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const clampedY = Math.max(0, y);\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n onSwipeMove(eventDetail);\n } else if (isDeltaInDirection(delta, 0)) {\n swipeDeltaRef.current = delta;\n onSwipeStart();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n } else if (Math.abs(y) > moveStartBuffer) {\n // User is swiping in wrong direction so we disable swipe gesture\n // for the current pointer down interaction\n pointerStartRef.current = null;\n }\n };\n const onPointerUp = (event: PointerEvent) => {\n const delta = swipeDeltaRef.current;\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const swipeHandle = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, 0) && delta.y > 200) {\n onSwipeEnd(eventDetail);\n } else {\n onSwipeCancel();\n }\n // Prevent click event from triggering on items within the drawer when\n // pointer up is part of a swipe gesture\n swipeHandle.addEventListener(\"click\", (event) => event.preventDefault(), {\n once: true,\n });\n }\n };\n return {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n };\n};\n\nconst isDeltaInDirection = (delta: { y: number }, threshold = 0) => {\n const deltaY = Math.abs(delta.y);\n return deltaY > threshold;\n};\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-handle.module.scss\";\nimport { type DrawerVariant, type SwipeEvent } from \"./types\";\nimport { useSwipeTracking } from \"./use-swipe-tracking.hook\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHandleProps = Omit<BaseProps, \"children\"> & {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-handle\";\n\nexport const DrawerHandle = forwardRef<HTMLDivElement, DrawerHandleProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-handle\",\n className,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const pointerStartRef = React.useRef<{ y: number } | null>(null);\n const swipeDeltaRef = React.useRef<{ y: number } | null>(null);\n const { onPointerDown, onPointerMove, onPointerUp } = useSwipeTracking(\n swipeDeltaRef,\n pointerStartRef,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd\n );\n\n return (\n <div\n className={classes}\n data-testid={dataTestId}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nDrawerHandle.displayName = \"DrawerHandle\";\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { DisplayVariant, Heading } from \"@purpur/heading\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-header.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHeaderProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n closeButtonAriaLabel: string;\n headerContent?: React.ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n title: string;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-header\";\n\nexport const DrawerHeader = forwardRef<HTMLDivElement, DrawerHeaderProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-header\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n className,\n closeButtonAriaLabel,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n title,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n\n const CloseButtonWrapper = onCloseClick ? React.Fragment : RadixDialog.Close;\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <div\n className={cx([\n `${rootClassName}__row`,\n {\n [`${rootClassName}__row--with-back-button`]: hasBackButton,\n },\n ])}\n data-testid={`${dataTestId}-row`}\n >\n <div className={cx(`${rootClassName}__left`)}>\n {hasBackButton ? (\n <Button\n aria-label={backButtonOnlyIcon ? backButtonText : \"\"}\n className={cx([\n `${rootClassName}__back-button`,\n {\n [`${rootClassName}__back-button--only-icon`]: backButtonOnlyIcon,\n },\n ])}\n data-testid={`${dataTestId}-back-button`}\n iconOnly={backButtonOnlyIcon}\n negative={isAi}\n onClick={onBackButtonClick}\n size=\"sm\"\n variant={backButtonOnlyIcon ? BUTTON_VARIANT.TERTIARY_PURPLE : BUTTON_VARIANT.TEXT}\n >\n <IconChevronLeft size=\"sm\" />\n {!backButtonOnlyIcon && backButtonText}\n </Button>\n ) : headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n className={cx(`${rootClassName}__title`)}\n data-testid={`${dataTestId}-title`}\n negative={isAi}\n tag=\"h2\"\n variant={DisplayVariant.DISPLAY10}\n tabIndex={-1}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n )}\n </div>\n\n <div className={cx(`${rootClassName}__right`)}>\n <CloseButtonWrapper {...(onCloseClick ? {} : { asChild: true })}>\n <Button\n aria-label={closeButtonAriaLabel}\n className={cx(`${rootClassName}__close-button`)}\n iconOnly\n negative={isAi}\n onClick={onCloseClick}\n size=\"sm\"\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n >\n <IconClose size=\"sm\" />\n </Button>\n </CloseButtonWrapper>\n </div>\n </div>\n {hasBackButton &&\n (headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n data-testid={`${dataTestId}-title-with-back-button`}\n className={cx(`${rootClassName}__title`)}\n negative={isAi}\n tag=\"h2\"\n tabIndex={-1}\n variant={DisplayVariant.DISPLAY10}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n ))}\n </div>\n );\n }\n);\n\nDrawerHeader.displayName = \"DrawerHeader\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-scroll-area.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerScrollAreaProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n fitToContent?: boolean;\n};\n\nconst rootClassName = \"purpur-drawer-scroll-area\";\n\nexport const DrawerScrollArea = forwardRef<HTMLDivElement, DrawerScrollAreaProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-scroll-area\",\n children,\n className,\n drawerVariant = \"default\",\n fitToContent = false,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n { [`${rootClassName}--ai`]: drawerVariant === \"ai\" },\n className,\n ]);\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <RadixScrollArea.Root\n className={cx(`${rootClassName}__root`, {\n [`${rootClassName}__root--fit-to-content`]: fitToContent,\n })}\n >\n <RadixScrollArea.Viewport className={cx(`${rootClassName}__viewport`)}>\n {children}\n </RadixScrollArea.Viewport>\n <RadixScrollArea.Scrollbar\n className={cx(`${rootClassName}__scrollbar`)}\n orientation=\"vertical\"\n >\n <RadixScrollArea.Thumb className={cx(`${rootClassName}__thumb`)} />\n </RadixScrollArea.Scrollbar>\n </RadixScrollArea.Root>\n </div>\n );\n }\n);\n\nDrawerScrollArea.displayName = \"DrawerScrollArea\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContainer } from \"./drawer-container\";\nimport styles from \"./drawer-frame.module.scss\";\nimport { DrawerHandle } from \"./drawer-handle\";\nimport { DrawerHeader } from \"./drawer-header\";\nimport { DrawerScrollArea } from \"./drawer-scroll-area\";\nimport { type DrawerVariant, type Position, type SwipeEvent } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerFrameProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n children: ReactNode;\n closeButtonAriaLabel: string;\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n stickyFooter: boolean;\n title: string;\n position?: Position;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-frame\";\n\nexport const DrawerFrame = forwardRef<HTMLDivElement, DrawerFrameProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-frame\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n children,\n className,\n closeButtonAriaLabel,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n title,\n stickyFooter,\n position = \"right\",\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--sticky-footer`]: stickyFooter,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--without-back-button`]: !hasBackButton,\n [`${rootClassName}--with-back-button`]: hasBackButton,\n [`${rootClassName}--ai`]: isAi,\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <DrawerHandle\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n variant={variant}\n />\n <DrawerContainer\n className={cx(`${rootClassName}__header`)}\n variant=\"header\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n <DrawerHeader\n title={title}\n headerContent={headerContent}\n backButtonOnlyIcon={backButtonOnlyIcon}\n backButton={backButton}\n backButtonText={backButtonText}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n variant={variant}\n />\n </DrawerContainer>\n {stickyFooter ? (\n <>\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-sticky-footer-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <DrawerContainer stickyFooter drawerVariant={variant}>\n {children}\n </DrawerContainer>\n </DrawerScrollArea>\n {footerContent && (\n <DrawerContainer\n className={cx(`${rootClassName}__footer`)}\n data-testid={`${dataTestId}-sticky-footer`}\n variant=\"footer\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </>\n ) : (\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <div\n className={cx([\n `${rootClassName}__content-container`,\n { [`${rootClassName}__content-container--no-footer`]: !footerContent },\n ])}\n >\n <DrawerContainer stickyFooter={stickyFooter} drawerVariant={variant}>\n {children}\n </DrawerContainer>\n {footerContent && (\n <DrawerContainer\n data-testid={`${dataTestId}-footer`}\n stickyFooter={stickyFooter}\n variant=\"footer\"\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </div>\n </DrawerScrollArea>\n )}\n </div>\n );\n }\n);\n\nDrawerFrame.displayName = \"DrawerFrame\";\n","import type { RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeToDismiss = {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n};\n\nexport const useSwipeToDismiss = <T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n handleOpenChange: ((open: boolean) => void) | null\n): UseSwipeToDismiss => {\n const onSwipeStart = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"start\");\n };\n const onSwipeMove = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"move\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-move-y\", `${y}px`);\n };\n const onSwipeCancel = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"cancel\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-end-y\");\n };\n const onSwipeEnd = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"end\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-end-y\", `${y}px`);\n handleOpenChange?.(false);\n };\n\n return {\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n };\n};\n","import React, { forwardRef, type ReactNode, useContext, useRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { useThemePortalContainer } from \"@purpur/theme\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport styles from \"./drawer-content.module.scss\";\nimport { DrawerFrame } from \"./drawer-frame\";\nimport { type Position } from \"./types\";\nimport { useSwipeToDismiss } from \"./use-swipe-to-dismiss.hook\";\n\nconst cx = c.bind(styles);\n\nexport type WithBackButton = {\n backButton: boolean;\n backButtonText: string;\n backButtonOnlyIcon?: boolean;\n onBackButtonClick: () => void;\n};\n\nexport type WithoutBackButton = {\n backButton?: never;\n backButtonText?: never;\n backButtonOnlyIcon?: never;\n onBackButtonClick?: never;\n};\n\nexport type DrawerContentProps = Omit<BaseProps, \"children\"> & {\n bodyText?: string;\n children: ReactNode;\n closeButtonAriaLabel: string;\n /**\n * Optional DOM element to portal the drawer content into. When omitted,\n * the drawer renders inside the nearest `ThemeProvider` so it inherits\n * the active color scheme. Pass `document.body` (or any other element) to\n * override. Pass `null` to fall back to Radix' default (`document.body`).\n */\n container?: HTMLElement | null;\n disableCloseOnClickOutside?: boolean;\n /**\n * If true, the drawer height will fit to its content on small screens.\n */\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onCloseClick?: () => void;\n stickyFooter?: boolean;\n title: string;\n zIndex?: number;\n position?: Position;\n} & (WithoutBackButton | WithBackButton);\n\nconst rootClassName = \"purpur-drawer-content\";\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-content\",\n backButton = false,\n backButtonText,\n backButtonOnlyIcon = false,\n bodyText,\n children,\n className,\n closeButtonAriaLabel,\n container,\n disableCloseOnClickOutside = false,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n stickyFooter = false,\n title,\n zIndex,\n position = \"right\",\n ...props\n },\n ref\n ) => {\n const drawerContext = useContext(DrawerContext);\n const variant = drawerContext?.variant ?? \"default\";\n const isModal = drawerContext?.isModal ?? true;\n const themePortalContainer = useThemePortalContainer();\n const portalContainer =\n container === undefined ? themePortalContainer : container ?? undefined;\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--ai`]: variant === \"ai\",\n },\n className,\n ]);\n\n const drawerFrameRef = useRef<HTMLDivElement>(null);\n const internalDrawerContentRef = useRef<HTMLDivElement>(null);\n\n const setRef = (node: HTMLDivElement | null) => {\n internalDrawerContentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const { onSwipeStart, onSwipeMove, onSwipeCancel, onSwipeEnd } = useSwipeToDismiss(\n internalDrawerContentRef,\n drawerContext?.onOpenChange ?? null\n );\n\n const handlePointerDownOutside = (event: CustomEvent<{ originalEvent: PointerEvent }>) => {\n if (disableCloseOnClickOutside) {\n event.preventDefault();\n return;\n }\n\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleInitialFocus = () => {\n const frame = drawerFrameRef.current;\n if (frame) {\n const heading = frame.querySelector(\"h2\");\n\n heading &&\n setTimeout(() => {\n heading.focus();\n });\n }\n };\n\n const dialogContent = (\n <RadixDialog.Content\n onPointerDownOutside={handlePointerDownOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleInitialFocus}\n className={classes}\n data-testid={dataTestId}\n ref={setRef}\n {...(!bodyText && { [\"aria-describedby\"]: undefined })}\n {...props}\n >\n <DrawerFrame\n backButton={backButton}\n backButtonText={backButtonText}\n backButtonOnlyIcon={backButtonOnlyIcon}\n closeButtonAriaLabel={closeButtonAriaLabel}\n className={cx(`${rootClassName}__drawer-frame`)}\n fitToContent={fitToContent}\n footerContent={footerContent}\n headerContent={headerContent}\n ref={drawerFrameRef}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n stickyFooter={stickyFooter}\n title={title}\n position={position}\n variant={variant}\n >\n {bodyText ? (\n <div className={cx(`${rootClassName}__content-container`)}>\n <RadixDialog.Description\n className={cx(`${rootClassName}__description`)}\n data-testid={`${dataTestId}-description`}\n >\n {bodyText}\n </RadixDialog.Description>\n <div>{children}</div>\n </div>\n ) : (\n children\n )}\n </DrawerFrame>\n </RadixDialog.Content>\n );\n\n if (!isModal) {\n return (\n <RadixDialog.Portal container={portalContainer}>\n <div\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n {dialogContent}\n </div>\n </RadixDialog.Portal>\n );\n }\n\n return (\n <RadixDialog.Portal container={portalContainer}>\n <RadixDialog.Overlay\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n {dialogContent}\n </RadixDialog.Overlay>\n </RadixDialog.Portal>\n );\n }\n);\n\nDrawerContent.displayName = \"DrawerContent\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nexport type DrawerTriggerProps = Omit<BaseProps<\"button\">, \"children\"> & {\n children: ReactNode;\n};\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n ({ [\"data-testid\"]: dataTestId = \"purpur-drawer-trigger\", children, ...props }, ref) => {\n return (\n <RadixDialog.Trigger asChild data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n );\n }\n);\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n","import React, { type ReactNode, useEffect } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport { DrawerContent } from \"./drawer-content\";\nimport { DrawerTrigger } from \"./drawer-trigger\";\nimport { type DrawerVariant } from \"./types\";\n\nexport type { DrawerVariant };\n\nexport type DrawerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n /**\n * Whether the drawer should be modal. When `true` (default), focus is trapped\n * and pointer events outside the drawer are disabled. Set to `false` when rendering\n * components that use portals (e.g. DatePicker) inside the drawer.\n */\n isModal?: boolean;\n onOpenChange?: (open: boolean) => void;\n open: boolean;\n variant?: DrawerVariant;\n};\n\nexport type DrawerComponent<P> = React.FunctionComponent<P> & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n};\n\nexport const Drawer: DrawerComponent<DrawerProps> = ({\n [\"data-testid\"]: dataTestId = \"purpur-drawer\",\n children,\n className,\n isModal = true,\n onOpenChange,\n open = false,\n variant = \"default\",\n ...props\n}: DrawerProps) => {\n const [_open, _setOpen] = React.useState(open);\n\n const handleOpenChange = (newOpen: boolean) => {\n _setOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n useEffect(() => {\n _setOpen(open);\n }, [open]);\n\n const contextValue = { isModal, onOpenChange: handleOpenChange, variant };\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <div className={className} data-testid={dataTestId} {...props}>\n <RadixDialog.Root open={_open} onOpenChange={handleOpenChange} modal={isModal}>\n {children}\n </RadixDialog.Root>\n </div>\n </DrawerContext.Provider>\n );\n};\n\nDrawer.Trigger = DrawerTrigger;\nDrawer.Content = DrawerContent;\nDrawer.displayName = \"Drawer\";\n"],"names":["DrawerContext","createContext","cx","c","styles","rootClassName","DrawerContainer","forwardRef","dataTestId","children","className","drawerVariant","variant","stickyFooter","props","ref","classes","jsx","useSwipeTracking","pointerStartRef","swipeDeltaRef","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","event","y","hasSwipeMoveStarted","clampedY","moveStartBuffer","delta","eventDetail","isDeltaInDirection","target","swipeHandle","threshold","DrawerHandle","React","onPointerDown","onPointerMove","onPointerUp","DrawerHeader","backButton","backButtonText","backButtonOnlyIcon","closeButtonAriaLabel","headerContent","onBackButtonClick","onCloseClick","title","hasBackButton","isAi","CloseButtonWrapper","RadixDialog.Close","jsxs","Button","BUTTON_VARIANT","IconChevronLeft","Fragment","VisuallyHidden","RadixDialog.Title","Heading","DisplayVariant","IconClose","DrawerScrollArea","fitToContent","RadixScrollArea.Root","RadixScrollArea.Viewport","RadixScrollArea.Scrollbar","RadixScrollArea.Thumb","DrawerFrame","footerContent","position","useSwipeToDismiss","containerRef","handleOpenChange","DrawerContent","bodyText","container","disableCloseOnClickOutside","zIndex","drawerContext","useContext","isModal","themePortalContainer","useThemePortalContainer","portalContainer","drawerFrameRef","useRef","internalDrawerContentRef","setRef","node","dialogContent","RadixDialog.Content","frame","heading","RadixDialog.Description","RadixDialog.Portal","RadixDialog.Overlay","DrawerTrigger","RadixDialog.Trigger","Drawer","onOpenChange","open","_open","_setOpen","newOpen","useEffect","contextValue","RadixDialog.Root"],"mappings":"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"}
|