@purpur/library 9.2.3 → 9.4.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 +39 -0
- package/CHANGELOG.md +20 -1
- package/dist/LICENSE.txt +1 -1
- package/dist/{RichText-Bi51HE6X.mjs → RichText-jZ-sHV-u.mjs} +2 -2
- package/dist/{RichText-Bi51HE6X.mjs.map → RichText-jZ-sHV-u.mjs.map} +1 -1
- package/dist/{RichText-DNroJJXv.js → RichText-yobCUjTD.js} +2 -2
- package/dist/{RichText-DNroJJXv.js.map → RichText-yobCUjTD.js.map} +1 -1
- package/dist/{ThemeProvider-bkyFCeo6.mjs → ThemeProvider-CkX-BNWN.mjs} +2 -2
- package/dist/ThemeProvider-CkX-BNWN.mjs.map +1 -0
- package/dist/{ThemeProvider-5r7lDX-h.js → ThemeProvider-Dy771oix.js} +2 -2
- package/dist/ThemeProvider-Dy771oix.js.map +1 -0
- package/dist/{accordion-OtFSShSB.mjs → accordion-CIU4U8-4.mjs} +3 -3
- package/dist/accordion-CIU4U8-4.mjs.map +1 -0
- package/dist/{accordion-OsA0HvdA.js → accordion-DyhOG54L.js} +2 -2
- package/dist/accordion-DyhOG54L.js.map +1 -0
- package/dist/accordion.cjs.js +1 -1
- package/dist/accordion.es.js +3 -3
- package/dist/{autocomplete-D9uCJzjY.js → autocomplete-3kV1btuI.js} +2 -2
- package/dist/{autocomplete-D9uCJzjY.js.map → autocomplete-3kV1btuI.js.map} +1 -1
- package/dist/{autocomplete-BipmyKf0.mjs → autocomplete-BEGRn-Wh.mjs} +2 -2
- package/dist/{autocomplete-BipmyKf0.mjs.map → autocomplete-BEGRn-Wh.mjs.map} +1 -1
- package/dist/autocomplete.cjs.js +1 -1
- package/dist/autocomplete.es.js +1 -1
- package/dist/{card-DR2hvxjZ.mjs → card-C2mdp-ur.mjs} +2 -2
- package/dist/{card-DR2hvxjZ.mjs.map → card-C2mdp-ur.mjs.map} +1 -1
- package/dist/{card-CRHXm5NR.js → card-DFdUs5RG.js} +2 -2
- package/dist/{card-CRHXm5NR.js.map → card-DFdUs5RG.js.map} +1 -1
- package/dist/card.cjs.js +1 -1
- package/dist/card.es.js +1 -1
- package/dist/{carousel-BkxojLwn.mjs → carousel-DLkTL9sj.mjs} +29 -29
- package/dist/{carousel-BkxojLwn.mjs.map → carousel-DLkTL9sj.mjs.map} +1 -1
- package/dist/{carousel-BCw-5u92.js → carousel-DXrtxRz5.js} +2 -2
- package/dist/{carousel-BCw-5u92.js.map → carousel-DXrtxRz5.js.map} +1 -1
- package/dist/carousel.cjs.js +1 -1
- package/dist/carousel.es.js +1 -1
- package/dist/checkbox-BHTx89JQ.mjs +236 -0
- package/dist/checkbox-BHTx89JQ.mjs.map +1 -0
- package/dist/checkbox-CDNcNv6d.js +2 -0
- package/dist/checkbox-CDNcNv6d.js.map +1 -0
- package/dist/checkbox.cjs.js +1 -1
- package/dist/checkbox.es.js +1 -1
- package/dist/{comparison-table-D1zJpdLL.mjs → comparison-table-8bOJmz-L.mjs} +116 -116
- package/dist/comparison-table-8bOJmz-L.mjs.map +1 -0
- package/dist/comparison-table-mKL2IHXW.js +2 -0
- package/dist/comparison-table-mKL2IHXW.js.map +1 -0
- package/dist/comparison-table.cjs.js +1 -1
- package/dist/comparison-table.es.js +1 -1
- package/dist/components/accordion/src/accordion.d.ts +1 -1
- package/dist/components/accordion/src/accordion.d.ts.map +1 -1
- package/dist/components/checkbox/src/checkbox.d.ts +4 -0
- package/dist/components/checkbox/src/checkbox.d.ts.map +1 -1
- package/dist/components/comparison-table/src/comparison-table.d.ts +1 -1
- package/dist/components/comparison-table/src/comparison-table.d.ts.map +1 -1
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts.map +1 -1
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -2
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-content.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer.context.d.ts +1 -0
- package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +6 -0
- package/dist/components/drawer/src/drawer.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -2
- package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdown.d.ts +2 -1
- package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
- package/dist/components/listbox/src/listbox-item.d.ts +2 -2
- package/dist/components/listbox/src/listbox-item.d.ts.map +1 -1
- package/dist/components/listbox/src/listbox.d.ts +4 -1
- package/dist/components/listbox/src/listbox.d.ts.map +1 -1
- package/dist/components/toggle/src/toggle.d.ts +1 -0
- package/dist/components/toggle/src/toggle.d.ts.map +1 -1
- package/dist/components-metadata.js +4 -2
- package/dist/{content-block-Dm3L4g8w.mjs → content-block-CakKeJtN.mjs} +2 -2
- package/dist/{content-block-Dm3L4g8w.mjs.map → content-block-CakKeJtN.mjs.map} +1 -1
- package/dist/{content-block-CDRUH0pg.js → content-block-CrekbIfe.js} +2 -2
- package/dist/{content-block-CDRUH0pg.js.map → content-block-CrekbIfe.js.map} +1 -1
- package/dist/content-block.cjs.js +1 -1
- package/dist/content-block.es.js +1 -1
- package/dist/{countdown-DZ4IwkNy.mjs → countdown-BsLsEZBv.mjs} +2 -2
- package/dist/{countdown-DZ4IwkNy.mjs.map → countdown-BsLsEZBv.mjs.map} +1 -1
- package/dist/{countdown-CqYsZigV.js → countdown-hYrFLmRg.js} +2 -2
- package/dist/{countdown-CqYsZigV.js.map → countdown-hYrFLmRg.js.map} +1 -1
- package/dist/countdown.cjs.js +1 -1
- package/dist/countdown.es.js +1 -1
- package/dist/{date-picker-DwFDRL5Z.mjs → date-picker-CbUNbOhn.mjs} +2 -2
- package/dist/{date-picker-DwFDRL5Z.mjs.map → date-picker-CbUNbOhn.mjs.map} +1 -1
- package/dist/{date-picker-DVrcu2QU.js → date-picker-DYXNB5aU.js} +2 -2
- package/dist/{date-picker-DVrcu2QU.js.map → date-picker-DYXNB5aU.js.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/dismissable-chip-group-2updhyuR.js +2 -0
- package/dist/dismissable-chip-group-2updhyuR.js.map +1 -0
- package/dist/dismissable-chip-group-Cfs2s2BH.mjs +94 -0
- package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +1 -0
- package/dist/dismissable-chip-group.cjs.js +1 -1
- package/dist/dismissable-chip-group.es.js +6 -5
- package/dist/drawer-8Acg4wkV.mjs +574 -0
- package/dist/drawer-8Acg4wkV.mjs.map +1 -0
- package/dist/drawer-BLHgcEqb.js +2 -0
- package/dist/drawer-BLHgcEqb.js.map +1 -0
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/dropdown-CMO_VD5e.mjs +916 -0
- package/dist/dropdown-CMO_VD5e.mjs.map +1 -0
- package/dist/dropdown-DJKNQnuo.js +2 -0
- package/dist/dropdown-DJKNQnuo.js.map +1 -0
- package/dist/dropdown.cjs.js +1 -1
- package/dist/dropdown.es.js +1 -1
- package/dist/{footer-BXs8uzTA.mjs → footer-BLPlXaZK.mjs} +4 -4
- package/dist/{footer-BXs8uzTA.mjs.map → footer-BLPlXaZK.mjs.map} +1 -1
- package/dist/{footer-DF9adlni.js → footer-D9AcPwlH.js} +2 -2
- package/dist/{footer-DF9adlni.js.map → footer-D9AcPwlH.js.map} +1 -1
- package/dist/footer.cjs.js +1 -1
- package/dist/footer.es.js +1 -1
- package/dist/{hero-banner-BfxclVFT.js → hero-banner-D1A-_qou.js} +2 -2
- package/dist/{hero-banner-BfxclVFT.js.map → hero-banner-D1A-_qou.js.map} +1 -1
- package/dist/{hero-banner-CxPvhXD2.mjs → hero-banner-DkC_BqM7.mjs} +3 -3
- package/dist/{hero-banner-CxPvhXD2.mjs.map → hero-banner-DkC_BqM7.mjs.map} +1 -1
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/{index-CKCTy3ZL.mjs → index-3NV-ckDX.mjs} +4 -4
- package/dist/{index-CKCTy3ZL.mjs.map → index-3NV-ckDX.mjs.map} +1 -1
- package/dist/libraries/theme/src/theme-props.d.ts +1 -0
- package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
- package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
- package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +593 -590
- package/dist/listbox-ATP4hOWF.js +2 -0
- package/dist/listbox-ATP4hOWF.js.map +1 -0
- package/dist/listbox-i6BQQ-NZ.mjs +73 -0
- package/dist/listbox-i6BQQ-NZ.mjs.map +1 -0
- package/dist/listbox.cjs.js +1 -1
- package/dist/listbox.es.js +3 -2
- package/dist/{modal-COF_UhvY.js → modal-Baisuc6m.js} +2 -2
- package/dist/{modal-COF_UhvY.js.map → modal-Baisuc6m.js.map} +1 -1
- package/dist/{modal-BMg43Fvd.mjs → modal-fp37VbrH.mjs} +3 -3
- package/dist/{modal-BMg43Fvd.mjs.map → modal-fp37VbrH.mjs.map} +1 -1
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{notification-BqjaT4E7.js → notification-B5bNNq86.js} +2 -2
- package/dist/{notification-BqjaT4E7.js.map → notification-B5bNNq86.js.map} +1 -1
- package/dist/{notification-DdRS5BF2.mjs → notification-BbQCmsnY.mjs} +2 -2
- package/dist/{notification-DdRS5BF2.mjs.map → notification-BbQCmsnY.mjs.map} +1 -1
- package/dist/notification.cjs.js +1 -1
- package/dist/notification.es.js +1 -1
- package/dist/{pagination-CVYUacXN.mjs → pagination-Cc_4zCQA.mjs} +2 -2
- package/dist/{pagination-CVYUacXN.mjs.map → pagination-Cc_4zCQA.mjs.map} +1 -1
- package/dist/{pagination-Bwlkvqye.js → pagination-rFRdkHII.js} +2 -2
- package/dist/{pagination-Bwlkvqye.js.map → pagination-rFRdkHII.js.map} +1 -1
- package/dist/pagination.cjs.js +1 -1
- package/dist/pagination.es.js +1 -1
- package/dist/paragraph-By4jMjnH.js +2 -0
- package/dist/{paragraph-BsI53OR0.js.map → paragraph-By4jMjnH.js.map} +1 -1
- package/dist/{paragraph-Ci50OF1u.mjs → paragraph-DSxXmX_0.mjs} +23 -23
- package/dist/{paragraph-Ci50OF1u.mjs.map → paragraph-DSxXmX_0.mjs.map} +1 -1
- package/dist/paragraph.cjs.js +1 -1
- package/dist/paragraph.es.js +1 -1
- package/dist/{popover-XCUa2GfC.js → popover-B0XJZ5mj.js} +2 -2
- package/dist/{popover-XCUa2GfC.js.map → popover-B0XJZ5mj.js.map} +1 -1
- package/dist/{popover-Dwqs1wGH.mjs → popover-_xJATlhN.mjs} +2 -2
- package/dist/{popover-Dwqs1wGH.mjs.map → popover-_xJATlhN.mjs.map} +1 -1
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/{product-card-BfB82XpS.mjs → product-card-C3_N0t-R.mjs} +3 -3
- package/dist/{product-card-BfB82XpS.mjs.map → product-card-C3_N0t-R.mjs.map} +1 -1
- package/dist/{product-card-bVQ7JhHj.js → product-card-CoY1KggV.js} +2 -2
- package/dist/{product-card-bVQ7JhHj.js.map → product-card-CoY1KggV.js.map} +1 -1
- package/dist/product-card.cjs.js +1 -1
- package/dist/product-card.es.js +1 -1
- package/dist/{promotion-card-DqBBt2sz.js → promotion-card-Bag64gqP.js} +2 -2
- package/dist/{promotion-card-DqBBt2sz.js.map → promotion-card-Bag64gqP.js.map} +1 -1
- package/dist/{promotion-card-BhNw94sC.mjs → promotion-card-BiHnQvhn.mjs} +4 -4
- package/dist/{promotion-card-BhNw94sC.mjs.map → promotion-card-BiHnQvhn.mjs.map} +1 -1
- 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-CDSfcTb1.js +2 -0
- package/dist/{quantity-selector-8AkKNDik.js.map → quantity-selector-CDSfcTb1.js.map} +1 -1
- package/dist/{quantity-selector-C23kU1hF.mjs → quantity-selector-CvBvnMeB.mjs} +35 -35
- package/dist/{quantity-selector-C23kU1hF.mjs.map → quantity-selector-CvBvnMeB.mjs.map} +1 -1
- package/dist/quantity-selector.cjs.js +1 -1
- package/dist/quantity-selector.es.js +1 -1
- package/dist/{radio-card-group-BlRZBa-9.mjs → radio-card-group-CneOprGY.mjs} +2 -2
- package/dist/{radio-card-group-BlRZBa-9.mjs.map → radio-card-group-CneOprGY.mjs.map} +1 -1
- package/dist/{radio-card-group-sYcfDPJq.js → radio-card-group-Ctuvg61o.js} +2 -2
- package/dist/{radio-card-group-sYcfDPJq.js.map → radio-card-group-Ctuvg61o.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-CZ9mIyZ-.mjs → search-field-CpkHGIYi.mjs} +3 -3
- package/dist/{search-field-CZ9mIyZ-.mjs.map → search-field-CpkHGIYi.mjs.map} +1 -1
- package/dist/{search-field-DD9UkOca.js → search-field-Z0PqDARl.js} +2 -2
- package/dist/{search-field-DD9UkOca.js.map → search-field-Z0PqDARl.js.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/{stepper-uBfDdIju.mjs → stepper-CNnx_NiR.mjs} +2 -2
- package/dist/{stepper-uBfDdIju.mjs.map → stepper-CNnx_NiR.mjs.map} +1 -1
- package/dist/{stepper-w-raIwqJ.js → stepper-Df4X7DDR.js} +2 -2
- package/dist/{stepper-w-raIwqJ.js.map → stepper-Df4X7DDR.js.map} +1 -1
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/{table-Dx_dhGT6.mjs → table-D_sdSJyr.mjs} +6 -6
- package/dist/{table-Dx_dhGT6.mjs.map → table-D_sdSJyr.mjs.map} +1 -1
- package/dist/{table-DsgqX7Vv.js → table-gnGUejtb.js} +2 -2
- package/dist/{table-DsgqX7Vv.js.map → table-gnGUejtb.js.map} +1 -1
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/{text-area-DDZ_GQPW.mjs → text-area-kJvg6cFp.mjs} +3 -3
- package/dist/{text-area-DDZ_GQPW.mjs.map → text-area-kJvg6cFp.mjs.map} +1 -1
- package/dist/{text-area-C6W0fDiQ.js → text-area-peNKG7g4.js} +2 -2
- package/dist/{text-area-C6W0fDiQ.js.map → text-area-peNKG7g4.js.map} +1 -1
- package/dist/text-area.cjs.js +1 -1
- package/dist/text-area.es.js +1 -1
- package/dist/theme.cjs.js +1 -1
- package/dist/theme.es.js +2 -2
- package/dist/toggle-B8ZLUVar.js +2 -0
- package/dist/{toggle-C8IwTbX8.js.map → toggle-B8ZLUVar.js.map} +1 -1
- package/dist/toggle-CY3J8BRX.mjs +302 -0
- package/dist/{toggle-D23x1wWk.mjs.map → toggle-CY3J8BRX.mjs.map} +1 -1
- package/dist/toggle.cjs.js +1 -1
- package/dist/toggle.es.js +1 -1
- package/dist/tokens/color/variables.css +1 -0
- package/dist/tokens/color/variables.d.ts +1 -0
- package/dist/tokens/color/variables.dark.css +1 -0
- package/dist/tokens/color/variables.dark.d.ts +1 -0
- package/dist/tokens/color/variables.dark.js +1 -0
- package/dist/tokens/color/variables.dark.json +2 -1
- package/dist/tokens/color/variables.dark.scss +1 -0
- package/dist/tokens/color/variables.js +1 -0
- package/dist/tokens/color/variables.json +2 -1
- package/dist/tokens/color/variables.scss +1 -0
- package/dist/tokens.cjs.js +1 -1
- package/dist/tokens.es.js +76 -75
- package/dist/{tooltip-0pLBlDG3.js → tooltip-C8Zxnqdb.js} +2 -2
- package/dist/{tooltip-0pLBlDG3.js.map → tooltip-C8Zxnqdb.js.map} +1 -1
- package/dist/{tooltip-Kom0VfOC.mjs → tooltip-VlURN8H3.mjs} +2 -2
- package/dist/{tooltip-Kom0VfOC.mjs.map → tooltip-VlURN8H3.mjs.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/dist/use-autocomplete.es-BwAzMcau.js +2 -0
- package/dist/use-autocomplete.es-BwAzMcau.js.map +1 -0
- package/dist/{use-autocomplete.es-CVv3z8t6.mjs → use-autocomplete.es-CKb0RHKG.mjs} +37 -35
- package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +1 -0
- package/dist/useColorScheme-DNyjsWX9.js +2 -0
- package/dist/{useColorScheme-0GMDl2GF.js.map → useColorScheme-DNyjsWX9.js.map} +1 -1
- package/dist/{useColorScheme-Di_Q0JR4.mjs → useColorScheme-tAkY9LHt.mjs} +2 -2
- package/dist/{useColorScheme-Di_Q0JR4.mjs.map → useColorScheme-tAkY9LHt.mjs.map} +1 -1
- package/dist/{variables-CKp4o9Tn.mjs → variables-B5hbV0Uy.mjs} +128 -127
- package/dist/variables-B5hbV0Uy.mjs.map +1 -0
- package/dist/variables-DoI78zZc.js +2 -0
- package/dist/variables-DoI78zZc.js.map +1 -0
- package/package.json +21 -21
- package/tokens/color/variables.css +1 -0
- package/tokens/color/variables.d.ts +1 -0
- package/tokens/color/variables.dark.css +1 -0
- package/tokens/color/variables.dark.d.ts +1 -0
- package/tokens/color/variables.dark.js +1 -0
- package/tokens/color/variables.dark.json +2 -1
- package/tokens/color/variables.dark.scss +1 -0
- package/tokens/color/variables.js +1 -0
- package/tokens/color/variables.json +2 -1
- package/tokens/color/variables.scss +1 -0
- package/dist/ThemeProvider-5r7lDX-h.js.map +0 -1
- package/dist/ThemeProvider-bkyFCeo6.mjs.map +0 -1
- package/dist/accordion-OsA0HvdA.js.map +0 -1
- package/dist/accordion-OtFSShSB.mjs.map +0 -1
- package/dist/checkbox-D6qWgpWR.mjs +0 -231
- package/dist/checkbox-D6qWgpWR.mjs.map +0 -1
- package/dist/checkbox-Dk3bZkZ3.js +0 -2
- package/dist/checkbox-Dk3bZkZ3.js.map +0 -1
- package/dist/comparison-table-B8w65g43.js +0 -2
- package/dist/comparison-table-B8w65g43.js.map +0 -1
- package/dist/comparison-table-D1zJpdLL.mjs.map +0 -1
- package/dist/dismissable-chip-group-Cd23yjBa.js +0 -2
- package/dist/dismissable-chip-group-Cd23yjBa.js.map +0 -1
- package/dist/dismissable-chip-group-D-gD93ON.mjs +0 -89
- package/dist/dismissable-chip-group-D-gD93ON.mjs.map +0 -1
- package/dist/drawer-Db2Mujc6.mjs +0 -565
- package/dist/drawer-Db2Mujc6.mjs.map +0 -1
- package/dist/drawer-DlwagnO4.js +0 -2
- package/dist/drawer-DlwagnO4.js.map +0 -1
- package/dist/dropdown-BsqVnd7z.js +0 -2
- package/dist/dropdown-BsqVnd7z.js.map +0 -1
- package/dist/dropdown-TO3Mh0bk.mjs +0 -910
- package/dist/dropdown-TO3Mh0bk.mjs.map +0 -1
- package/dist/listbox-COBHLRtB.js +0 -2
- package/dist/listbox-COBHLRtB.js.map +0 -1
- package/dist/listbox-DG4KmQP_.mjs +0 -66
- package/dist/listbox-DG4KmQP_.mjs.map +0 -1
- package/dist/paragraph-BsI53OR0.js +0 -2
- package/dist/quantity-selector-8AkKNDik.js +0 -2
- package/dist/toggle-C8IwTbX8.js +0 -2
- package/dist/toggle-D23x1wWk.mjs +0 -287
- package/dist/use-autocomplete.es-BHDgQLae.js +0 -2
- package/dist/use-autocomplete.es-BHDgQLae.js.map +0 -1
- package/dist/use-autocomplete.es-CVv3z8t6.mjs.map +0 -1
- package/dist/useColorScheme-0GMDl2GF.js +0 -2
- package/dist/variables-CKp4o9Tn.mjs.map +0 -1
- package/dist/variables-DH61hVNE.js +0 -2
- package/dist/variables-DH61hVNE.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),q=require("react"),U=require("./spinner-tKunS_o-.js"),X=require("./text-field-CYJzQG3h.js"),B=require("./bind-DeUYJ6m9.js"),Z=require("./button-DmybVApa.js"),J=require("./minus.es-DtXArdKK.js"),K=require("./icon-DNHpBTHs-faYHqTXU.js"),L={"purpur-quantity-selector":"_purpur-quantity-selector_1hglo_1","purpur-quantity-selector--full-width":"_purpur-quantity-selector--full-width_1hglo_25","purpur-quantity-selector--loading":"_purpur-quantity-selector--loading_1hglo_31","purpur-quantity-selector--no-gap":"_purpur-quantity-selector--no-gap_1hglo_34","purpur-quantity-selector--no-gap-disabled-left":"_purpur-quantity-selector--no-gap-disabled-left_1hglo_39","purpur-quantity-selector--no-gap-disabled-right":"_purpur-quantity-selector--no-gap-disabled-right_1hglo_43","purpur-quantity-selector--no-gap-disabled":"_purpur-quantity-selector--no-gap-disabled_1hglo_39","purpur-quantity-selector__spinner":"_purpur-quantity-selector__spinner_1hglo_50","purpur-quantity-selector__spinner--full-width":"_purpur-quantity-selector__spinner--full-width_1hglo_57","purpur-quantity-selector__spinner--separated":"_purpur-quantity-selector__spinner--separated_1hglo_61"},Y={name:"plus",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z" clip-rule="evenodd"/></svg>',keywords:["plus"],category:"utility"},C=a=>n.jsx(K.b,{...a,svg:Y});C.displayName="IconPlus";const G={"purpur-quantity-selector-button":"_purpur-quantity-selector-button_qjlbs_1","purpur-quantity-selector-button--gap-left":"_purpur-quantity-selector-button--gap-left_qjlbs_4","purpur-quantity-selector-button--gap-right":"_purpur-quantity-selector-button--gap-right_qjlbs_7","purpur-quantity-selector-button--no-gap-right":"_purpur-quantity-selector-button--no-gap-right_qjlbs_10","purpur-quantity-selector-button--no-gap-left":"_purpur-quantity-selector-button--no-gap-left_qjlbs_13"},W=B.c.bind(G),b="purpur-quantity-selector-button",T=({["data-testid"]:a,["aria-label"]:f,disabled:s,hasGap:o,variant:p,buttonType:e,onClick:x})=>{const d=W(b,{[`${b}--gap-left`]:o&&e==="decrement",[`${b}--gap-right`]:o&&e==="increment",[`${b}--no-gap-left`]:!o&&e==="decrement",[`${b}--no-gap-right`]:!o&&e==="increment"});return n.jsx(Z.Button,{"data-testid":a,className:d,size:"sm",type:"submit",variant:p,onClick:()=>x(e),iconOnly:!0,"aria-label":f??"",disabled:s,tabIndex:-1,children:e==="increment"?n.jsx(C,{size:"xs"}):n.jsx(J.e,{size:"xs"})})},V=B.c.bind(L),tt=["attached","separated"],et=["primary","secondary"],r="purpur-quantity-selector",D=q.forwardRef(({["data-testid"]:a,className:f,variant:s,buttonVariant:o,onChange:p,value:e,defaultValue:x,fullWidth:d,disabled:F,loading:$,minValue:R,maxValue:E,ariaLabelDecrement:k,ariaLabelIncrement:z,...H},Q)=>{const[M,w]=q.useState(x??0),[v,j]=q.useState(M),u=e!==void 0,l=u?e:v,S=t=>a?`${a}-${t}`:void 0,i=F||$,y=Math.max(R??0,0),m=E??Number.MAX_SAFE_INTEGER,_=l===m,g=l===y;q.useEffect(()=>{u&&w(e)},[e,u]),q.useEffect(()=>{if(!u){const t=setTimeout(()=>{w(v)},300);return()=>clearTimeout(t)}},[v,u,p]);const O=V(f,r,{[`${r}--no-gap`]:s==="attached"&&!i&&!g&&!_,[`${r}--no-gap-disabled-left`]:s==="attached"&&!i&&!_&&g,[`${r}--no-gap-disabled-right`]:s==="attached"&&!i&&!g&&_,[`${r}--no-gap-disabled`]:s==="attached"&&(i||_&&g),[`${r}--full-width`]:d,[`${r}--loading`]:$}),A=t=>{if(!/^[0-9]*$/.test(t.target.value))return;const h=+t.target.value;h<y||h>m||(u||j(h),p(h))},I=t=>{const c=t==="increment"?l+1:l-1;c<0||(u||j(c),p(c))},N=t=>{const c=t==="increment"&&_||t==="decrement"&&g;return n.jsx(T,{"data-testid":S("button-"+t),variant:o,buttonType:t,hasGap:s==="separated",onClick:I,disabled:i||c,"aria-label":t==="increment"?z:k})},P=n.jsxs(n.Fragment,{children:[$&&n.jsx("div",{className:V(`${r}__spinner`,{[`${r}__spinner--full-width`]:d,[`${r}__spinner--separated`]:!d&&s==="separated"}),children:n.jsx(U.Spinner,{disabled:i,size:"xs","data-testid":S("spinner")},"spinner")}),N("decrement")]});return n.jsx(X.TextField,{value:l,type:"number",ref:Q,className:O,"data-testid":a,onChange:A,beforeField:P,afterField:N("increment"),disabled:i,min:y,max:m,role:"spinbutton","aria-valuenow":l,"aria-valuemax":m,"aria-valuemin":y,...H})});D.displayName="QuantitySelector";exports.QuantitySelector=D;exports.quantitySelectorButtonVariants=et;exports.quantitySelectorVariants=tt;
|
|
2
|
+
//# sourceMappingURL=quantity-selector-CDSfcTb1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantity-selector-8AkKNDik.js","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quantity-selector-CDSfcTb1.js","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"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"}
|
|
@@ -7,16 +7,16 @@ import { b as L } from "./button-4-yWOgtD.mjs";
|
|
|
7
7
|
import { e as Y } from "./minus.es-BK9qA9iJ.mjs";
|
|
8
8
|
import { b as G } from "./icon-DNHpBTHs-JfI8WyiR.mjs";
|
|
9
9
|
const W = {
|
|
10
|
-
"purpur-quantity-selector": "_purpur-quantity-
|
|
11
|
-
"purpur-quantity-selector--full-width": "_purpur-quantity-selector--full-
|
|
12
|
-
"purpur-quantity-selector--loading": "_purpur-quantity-selector--
|
|
13
|
-
"purpur-quantity-selector--no-gap": "_purpur-quantity-selector--no-
|
|
14
|
-
"purpur-quantity-selector--no-gap-disabled-left": "_purpur-quantity-selector--no-gap-disabled-
|
|
15
|
-
"purpur-quantity-selector--no-gap-disabled-right": "_purpur-quantity-selector--no-gap-disabled-
|
|
16
|
-
"purpur-quantity-selector--no-gap-disabled": "_purpur-quantity-selector--no-gap-
|
|
17
|
-
"purpur-quantity-selector__spinner": "_purpur-quantity-
|
|
18
|
-
"purpur-quantity-selector__spinner--full-width": "_purpur-quantity-selector__spinner--full-
|
|
19
|
-
"purpur-quantity-selector__spinner--separated": "_purpur-quantity-selector__spinner--
|
|
10
|
+
"purpur-quantity-selector": "_purpur-quantity-selector_1hglo_1",
|
|
11
|
+
"purpur-quantity-selector--full-width": "_purpur-quantity-selector--full-width_1hglo_25",
|
|
12
|
+
"purpur-quantity-selector--loading": "_purpur-quantity-selector--loading_1hglo_31",
|
|
13
|
+
"purpur-quantity-selector--no-gap": "_purpur-quantity-selector--no-gap_1hglo_34",
|
|
14
|
+
"purpur-quantity-selector--no-gap-disabled-left": "_purpur-quantity-selector--no-gap-disabled-left_1hglo_39",
|
|
15
|
+
"purpur-quantity-selector--no-gap-disabled-right": "_purpur-quantity-selector--no-gap-disabled-right_1hglo_43",
|
|
16
|
+
"purpur-quantity-selector--no-gap-disabled": "_purpur-quantity-selector--no-gap-disabled_1hglo_39",
|
|
17
|
+
"purpur-quantity-selector__spinner": "_purpur-quantity-selector__spinner_1hglo_50",
|
|
18
|
+
"purpur-quantity-selector__spinner--full-width": "_purpur-quantity-selector__spinner--full-width_1hglo_57",
|
|
19
|
+
"purpur-quantity-selector__spinner--separated": "_purpur-quantity-selector__spinner--separated_1hglo_61"
|
|
20
20
|
}, T = {
|
|
21
21
|
name: "plus",
|
|
22
22
|
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z" clip-rule="evenodd"/></svg>',
|
|
@@ -34,16 +34,16 @@ const tt = {
|
|
|
34
34
|
["data-testid"]: s,
|
|
35
35
|
["aria-label"]: f,
|
|
36
36
|
disabled: n,
|
|
37
|
-
hasGap:
|
|
37
|
+
hasGap: i,
|
|
38
38
|
variant: c,
|
|
39
39
|
buttonType: e,
|
|
40
40
|
onClick: h
|
|
41
41
|
}) => {
|
|
42
42
|
const d = et(m, {
|
|
43
|
-
[`${m}--gap-left`]:
|
|
44
|
-
[`${m}--gap-right`]:
|
|
45
|
-
[`${m}--no-gap-left`]: !
|
|
46
|
-
[`${m}--no-gap-right`]: !
|
|
43
|
+
[`${m}--gap-left`]: i && e === "decrement",
|
|
44
|
+
[`${m}--gap-right`]: i && e === "increment",
|
|
45
|
+
[`${m}--no-gap-left`]: !i && e === "decrement",
|
|
46
|
+
[`${m}--no-gap-right`]: !i && e === "increment"
|
|
47
47
|
});
|
|
48
48
|
return /* @__PURE__ */ a(
|
|
49
49
|
L,
|
|
@@ -66,7 +66,7 @@ const tt = {
|
|
|
66
66
|
["data-testid"]: s,
|
|
67
67
|
className: f,
|
|
68
68
|
variant: n,
|
|
69
|
-
buttonVariant:
|
|
69
|
+
buttonVariant: i,
|
|
70
70
|
onChange: c,
|
|
71
71
|
value: e,
|
|
72
72
|
defaultValue: h,
|
|
@@ -79,43 +79,43 @@ const tt = {
|
|
|
79
79
|
ariaLabelIncrement: Q,
|
|
80
80
|
...R
|
|
81
81
|
}, M) => {
|
|
82
|
-
const [O, x] = C(h ?? 0), [v, w] = C(O),
|
|
82
|
+
const [O, x] = C(h ?? 0), [v, w] = C(O), o = e !== void 0, l = o ? e : v, N = (t) => s ? `${s}-${t}` : void 0, u = F || $, b = Math.max(k ?? 0, 0), y = z ?? Number.MAX_SAFE_INTEGER, _ = l === y, g = l === b;
|
|
83
83
|
V(() => {
|
|
84
|
-
|
|
85
|
-
}, [e,
|
|
86
|
-
if (!
|
|
84
|
+
o && x(e);
|
|
85
|
+
}, [e, o]), V(() => {
|
|
86
|
+
if (!o) {
|
|
87
87
|
const t = setTimeout(() => {
|
|
88
88
|
x(v);
|
|
89
89
|
}, 300);
|
|
90
90
|
return () => clearTimeout(t);
|
|
91
91
|
}
|
|
92
|
-
}, [v,
|
|
92
|
+
}, [v, o, c]);
|
|
93
93
|
const A = j(f, r, {
|
|
94
|
-
[`${r}--no-gap`]: n === "attached" && !
|
|
95
|
-
[`${r}--no-gap-disabled-left`]: n === "attached" && !
|
|
96
|
-
[`${r}--no-gap-disabled-right`]: n === "attached" && !
|
|
97
|
-
[`${r}--no-gap-disabled`]: n === "attached" && (
|
|
94
|
+
[`${r}--no-gap`]: n === "attached" && !u && !g && !_,
|
|
95
|
+
[`${r}--no-gap-disabled-left`]: n === "attached" && !u && !_ && g,
|
|
96
|
+
[`${r}--no-gap-disabled-right`]: n === "attached" && !u && !g && _,
|
|
97
|
+
[`${r}--no-gap-disabled`]: n === "attached" && (u || _ && g),
|
|
98
98
|
[`${r}--full-width`]: d,
|
|
99
99
|
[`${r}--loading`]: $
|
|
100
100
|
}), H = (t) => {
|
|
101
101
|
if (!/^[0-9]*$/.test(t.target.value))
|
|
102
102
|
return;
|
|
103
103
|
const q = +t.target.value;
|
|
104
|
-
q <
|
|
104
|
+
q < b || q > y || (o || w(q), c(q));
|
|
105
105
|
}, I = (t) => {
|
|
106
106
|
const p = t === "increment" ? l + 1 : l - 1;
|
|
107
|
-
p < 0 || (
|
|
107
|
+
p < 0 || (o || w(p), c(p));
|
|
108
108
|
}, S = (t) => {
|
|
109
|
-
const p = t === "increment" && _ || t === "decrement" &&
|
|
109
|
+
const p = t === "increment" && _ || t === "decrement" && g;
|
|
110
110
|
return /* @__PURE__ */ a(
|
|
111
111
|
rt,
|
|
112
112
|
{
|
|
113
113
|
"data-testid": N("button-" + t),
|
|
114
|
-
variant:
|
|
114
|
+
variant: i,
|
|
115
115
|
buttonType: t,
|
|
116
116
|
hasGap: n === "separated",
|
|
117
117
|
onClick: I,
|
|
118
|
-
disabled:
|
|
118
|
+
disabled: u || p,
|
|
119
119
|
"aria-label": t === "increment" ? Q : E
|
|
120
120
|
}
|
|
121
121
|
);
|
|
@@ -130,7 +130,7 @@ const tt = {
|
|
|
130
130
|
children: /* @__PURE__ */ a(
|
|
131
131
|
J,
|
|
132
132
|
{
|
|
133
|
-
disabled:
|
|
133
|
+
disabled: u,
|
|
134
134
|
size: "xs",
|
|
135
135
|
"data-testid": N("spinner")
|
|
136
136
|
},
|
|
@@ -151,13 +151,13 @@ const tt = {
|
|
|
151
151
|
onChange: H,
|
|
152
152
|
beforeField: P,
|
|
153
153
|
afterField: S("increment"),
|
|
154
|
-
disabled:
|
|
155
|
-
min:
|
|
154
|
+
disabled: u,
|
|
155
|
+
min: b,
|
|
156
156
|
max: y,
|
|
157
157
|
role: "spinbutton",
|
|
158
158
|
"aria-valuenow": l,
|
|
159
159
|
"aria-valuemax": y,
|
|
160
|
-
"aria-valuemin":
|
|
160
|
+
"aria-valuemin": b,
|
|
161
161
|
...R
|
|
162
162
|
}
|
|
163
163
|
);
|
|
@@ -169,4 +169,4 @@ export {
|
|
|
169
169
|
dt as a,
|
|
170
170
|
_t as q
|
|
171
171
|
};
|
|
172
|
-
//# sourceMappingURL=quantity-selector-
|
|
172
|
+
//# sourceMappingURL=quantity-selector-CvBvnMeB.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantity-selector-C23kU1hF.mjs","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quantity-selector-CvBvnMeB.mjs","sources":["../../../components/icon/dist/components/plus.es.js","../../../components/quantity-selector/src/quantity-selector-button.tsx","../../../components/quantity-selector/src/quantity-selector.tsx"],"sourcesContent":["import { jsx as s } from \"react/jsx-runtime\";\nimport { I as l } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"plus\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 4.1a.9.9 0 0 1 .9.9v6.1H19a.9.9 0 1 1 0 1.8h-6.1V19a.9.9 0 0 1-1.8 0v-6.1H5a.9.9 0 0 1 0-1.8h6.1V5a.9.9 0 0 1 .9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"plus\"],\n category: \"utility\"\n}, r = (o) => /* @__PURE__ */ s(l, { ...o, svg: e });\nr.displayName = \"IconPlus\";\nexport {\n r as IconPlus\n};\n//# sourceMappingURL=plus.es.js.map\n","import React from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport { IconPlus } from \"@purpur/icon/plus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector-button.module.scss\";\n\ntype variant = \"primary\" | \"secondary\";\ntype buttonType = \"increment\" | \"decrement\";\n\ntype QuantitySelectorButtonProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n hasGap: boolean;\n variant: variant;\n buttonType: buttonType;\n onClick: (buttonType: buttonType) => void;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-quantity-selector-button\";\n\nexport const QuantitySelectorButton = ({\n [\"data-testid\"]: dataTestid,\n [\"aria-label\"]: ariaLabel,\n disabled,\n hasGap,\n variant,\n buttonType,\n onClick,\n}: QuantitySelectorButtonProps) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--gap-left`]: hasGap && buttonType === \"decrement\",\n [`${rootClassName}--gap-right`]: hasGap && buttonType === \"increment\",\n [`${rootClassName}--no-gap-left`]: !hasGap && buttonType === \"decrement\",\n [`${rootClassName}--no-gap-right`]: !hasGap && buttonType === \"increment\",\n });\n\n return (\n <Button\n data-testid={dataTestid}\n className={classes}\n size=\"sm\"\n type=\"submit\"\n variant={variant}\n onClick={() => onClick(buttonType)}\n iconOnly={true}\n aria-label={ariaLabel ?? \"\"}\n disabled={disabled}\n tabIndex={-1}\n >\n {buttonType === \"increment\" ? <IconPlus size=\"xs\" /> : <IconMinus size=\"xs\" />}\n </Button>\n );\n};\n","import React, { type ChangeEvent, forwardRef, useEffect, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport { TextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./quantity-selector.module.scss\";\nimport { QuantitySelectorButton } from \"./quantity-selector-button\";\n\nconst cx = c.bind(styles);\n\nexport const quantitySelectorVariants = [\"attached\", \"separated\"] as const;\nexport const quantitySelectorButtonVariants = [\"primary\", \"secondary\"] as const;\n\ntype Variant = (typeof quantitySelectorVariants)[number];\ntype ButtonVariant = (typeof quantitySelectorButtonVariants)[number];\n\nexport type QuantitySelectorProps = Omit<BaseProps<\"input\">, \"onChange\" | \"type\"> & {\n variant: Variant;\n buttonVariant: ButtonVariant;\n onChange: (value: number) => void;\n defaultValue?: number;\n ariaLabelIncrement?: string;\n ariaLabelDecrement?: string;\n /**\n * Used when the component is controlled\n */\n value?: number;\n minValue?: number;\n maxValue?: number;\n label?: string;\n errorText?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n};\n\nconst rootClassName = \"purpur-quantity-selector\";\n\nexport const QuantitySelector = forwardRef<HTMLInputElement, QuantitySelectorProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n variant,\n buttonVariant,\n onChange,\n value: controlledValue,\n defaultValue,\n fullWidth,\n disabled,\n loading,\n minValue,\n maxValue,\n ariaLabelDecrement,\n ariaLabelIncrement,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? 0);\n const [debouncedValue, setDebouncedValue] = useState(uncontrolledValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : debouncedValue;\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isDisabled = disabled || loading;\n const min = Math.max(minValue ?? 0, 0);\n const max = maxValue ?? Number.MAX_SAFE_INTEGER;\n const incrementDisabled = value === max;\n const decrementDisabled = value === min;\n\n useEffect(() => {\n if (isControlled) {\n setUncontrolledValue(controlledValue);\n }\n }, [controlledValue, isControlled]);\n\n useEffect(() => {\n if (!isControlled) {\n const timer = setTimeout(() => {\n setUncontrolledValue(debouncedValue);\n }, 300);\n\n return () => clearTimeout(timer);\n }\n return;\n }, [debouncedValue, isControlled, onChange]);\n\n const classes = cx(className, rootClassName, {\n [`${rootClassName}--no-gap`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && !incrementDisabled,\n [`${rootClassName}--no-gap-disabled-left`]:\n variant === \"attached\" && !isDisabled && !incrementDisabled && decrementDisabled,\n [`${rootClassName}--no-gap-disabled-right`]:\n variant === \"attached\" && !isDisabled && !decrementDisabled && incrementDisabled,\n [`${rootClassName}--no-gap-disabled`]:\n variant === \"attached\" && (isDisabled || (incrementDisabled && decrementDisabled)),\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--loading`]: loading,\n });\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericRegex = /^[0-9]*$/;\n if (!numericRegex.test(e.target.value)) {\n return;\n }\n const val = +e.target.value;\n if (val < min || val > max) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(val);\n }\n onChange(val);\n };\n\n const handleOnClick = (adjustmentType: \"increment\" | \"decrement\") => {\n const adjustedValue = adjustmentType === \"increment\" ? value + 1 : value - 1;\n if (adjustedValue < 0) {\n return;\n }\n\n if (!isControlled) {\n setDebouncedValue(adjustedValue);\n }\n onChange(adjustedValue);\n };\n\n const adjustmentButton = (adjustmentType: \"increment\" | \"decrement\") => {\n const buttonDisabled =\n (adjustmentType === \"increment\" && incrementDisabled) ||\n (adjustmentType === \"decrement\" && decrementDisabled);\n\n return (\n <QuantitySelectorButton\n data-testid={getTestId(\"button-\" + adjustmentType)}\n variant={buttonVariant}\n buttonType={adjustmentType}\n hasGap={variant === \"separated\"}\n onClick={handleOnClick}\n disabled={isDisabled || buttonDisabled}\n aria-label={adjustmentType === \"increment\" ? ariaLabelIncrement : ariaLabelDecrement}\n />\n );\n };\n\n const beforeField = (\n <>\n {loading && (\n <div\n className={cx(`${rootClassName}__spinner`, {\n [`${rootClassName}__spinner--full-width`]: fullWidth,\n [`${rootClassName}__spinner--separated`]: !fullWidth && variant === \"separated\",\n })}\n >\n <Spinner\n key=\"spinner\"\n disabled={isDisabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n />\n </div>\n )}\n {adjustmentButton(\"decrement\")}\n </>\n );\n\n return (\n <TextField\n value={value}\n type=\"number\"\n ref={ref}\n className={classes}\n data-testid={dataTestId}\n onChange={handleOnChange}\n beforeField={beforeField}\n afterField={adjustmentButton(\"increment\")}\n disabled={isDisabled}\n min={min}\n max={max}\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemax={max}\n aria-valuemin={min}\n {...props}\n />\n );\n }\n);\n\nQuantitySelector.displayName = \"QuantitySelector\";\n"],"names":["e","r","o","s","l","cx","c","styles","rootClassName","QuantitySelectorButton","dataTestid","ariaLabel","disabled","hasGap","variant","buttonType","onClick","classes","jsx","Button","IconPlus","IconMinus","quantitySelectorVariants","quantitySelectorButtonVariants","QuantitySelector","forwardRef","dataTestId","className","buttonVariant","onChange","controlledValue","defaultValue","fullWidth","loading","minValue","maxValue","ariaLabelDecrement","ariaLabelIncrement","props","ref","uncontrolledValue","setUncontrolledValue","useState","debouncedValue","setDebouncedValue","isControlled","value","getTestId","name","isDisabled","min","max","incrementDisabled","decrementDisabled","useEffect","timer","handleOnChange","val","handleOnClick","adjustmentType","adjustedValue","adjustmentButton","buttonDisabled","beforeField","jsxs","Fragment","Spinner","TextField"],"mappings":";;;;;;;;;;;;;;;;;;;GAEMA,IAAI;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU,CAAC,MAAM;AAAA,EACjB,UAAU;AACZ,GAAGC,IAAI,CAACC,MAAsBC,gBAAAA,EAAEC,GAAG,EAAE,GAAGF,GAAG,KAAKF,GAAG;AACnDC,EAAE,cAAc;;;;;;;GCaVI,KAAKC,EAAE,KAAKC,EAAM,GAClBC,IAAgB,mCAETC,KAAyB,CAAC;AAAA,EACrC,CAAC,gBAAgBC;AAAA,EACjB,CAAC,eAAeC;AAAA,EAChB,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AACF,MAAmC;AACjC,QAAMC,IAAUZ,GAAGG,GAAe;AAAA,IAChC,CAAC,GAAGA,CAAa,YAAY,GAAGK,KAAUE,MAAe;AAAA,IACzD,CAAC,GAAGP,CAAa,aAAa,GAAGK,KAAUE,MAAe;AAAA,IAC1D,CAAC,GAAGP,CAAa,eAAe,GAAG,CAACK,KAAUE,MAAe;AAAA,IAC7D,CAAC,GAAGP,CAAa,gBAAgB,GAAG,CAACK,KAAUE,MAAe;AAAA,EAAA,CAC/D;AAED,SACE,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAaT;AAAA,MACb,WAAWO;AAAA,MACX,MAAK;AAAA,MACL,MAAK;AAAA,MACL,SAAAH;AAAA,MACA,SAAS,MAAME,EAAQD,CAAU;AAAA,MACjC,UAAU;AAAA,MACV,cAAYJ,KAAa;AAAA,MACzB,UAAAC;AAAA,MACA,UAAU;AAAA,MAET,UAAAG,MAAe,cAAc,gBAAAG,EAACE,GAAA,EAAS,MAAK,MAAK,IAAK,gBAAAF,EAACG,GAAA,EAAU,MAAK,KAAA,CAAK;AAAA,IAAA;AAAA,EAAA;AAGlF,GC/CMhB,IAAKC,EAAE,KAAKC,CAAM,GAEXe,KAA2B,CAAC,YAAY,WAAW,GACnDC,KAAiC,CAAC,WAAW,WAAW,GAyB/Df,IAAgB,4BAETgB,KAAmBC;AAAA,EAC9B,CACE;AAAA,IACE,CAAC,gBAAgBC;AAAA,IACjB,WAAAC;AAAA,IACA,SAAAb;AAAA,IACA,eAAAc;AAAA,IACA,UAAAC;AAAA,IACA,OAAOC;AAAA,IACP,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAApB;AAAA,IACA,SAAAqB;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACC,GAAmBC,CAAoB,IAAIC,EAASX,KAAgB,CAAC,GACtE,CAACY,GAAgBC,CAAiB,IAAIF,EAASF,CAAiB,GAChEK,IAAef,MAAoB,QACnCgB,IAAQD,IAAef,IAAkBa,GAEzCI,IAAY,CAACC,MAAkBtB,IAAa,GAAGA,CAAU,IAAIsB,CAAI,KAAK,QACtEC,IAAarC,KAAYqB,GACzBiB,IAAM,KAAK,IAAIhB,KAAY,GAAG,CAAC,GAC/BiB,IAAMhB,KAAY,OAAO,kBACzBiB,IAAoBN,MAAUK,GAC9BE,IAAoBP,MAAUI;AAEpC,IAAAI,EAAU,MAAM;AACd,MAAIT,KACFJ,EAAqBX,CAAe;AAAA,IAExC,GAAG,CAACA,GAAiBe,CAAY,CAAC,GAElCS,EAAU,MAAM;AACd,UAAI,CAACT,GAAc;AACjB,cAAMU,IAAQ,WAAW,MAAM;AAC7B,UAAAd,EAAqBE,CAAc;AAAA,QACrC,GAAG,GAAG;AAEN,eAAO,MAAM,aAAaY,CAAK;AAAA,MACjC;AAAA,IAEF,GAAG,CAACZ,GAAgBE,GAAchB,CAAQ,CAAC;AAE3C,UAAMZ,IAAUZ,EAAGsB,GAAWnB,GAAe;AAAA,MAC3C,CAAC,GAAGA,CAAa,UAAU,GACzBM,MAAY,cAAc,CAACmC,KAAc,CAACI,KAAqB,CAACD;AAAA,MAClE,CAAC,GAAG5C,CAAa,wBAAwB,GACvCM,MAAY,cAAc,CAACmC,KAAc,CAACG,KAAqBC;AAAA,MACjE,CAAC,GAAG7C,CAAa,yBAAyB,GACxCM,MAAY,cAAc,CAACmC,KAAc,CAACI,KAAqBD;AAAA,MACjE,CAAC,GAAG5C,CAAa,mBAAmB,GAClCM,MAAY,eAAemC,KAAeG,KAAqBC;AAAA,MACjE,CAAC,GAAG7C,CAAa,cAAc,GAAGwB;AAAA,MAClC,CAAC,GAAGxB,CAAa,WAAW,GAAGyB;AAAA,IAAA,CAChC,GAEKuB,IAAiB,CAACxD,MAAqC;AAE3D,UAAI,CADiB,WACH,KAAKA,EAAE,OAAO,KAAK;AACnC;AAEF,YAAMyD,IAAM,CAACzD,EAAE,OAAO;AACtB,MAAIyD,IAAMP,KAAOO,IAAMN,MAIlBN,KACHD,EAAkBa,CAAG,GAEvB5B,EAAS4B,CAAG;AAAA,IACd,GAEMC,IAAgB,CAACC,MAA8C;AACnE,YAAMC,IAAgBD,MAAmB,cAAcb,IAAQ,IAAIA,IAAQ;AAC3E,MAAIc,IAAgB,MAIff,KACHD,EAAkBgB,CAAa,GAEjC/B,EAAS+B,CAAa;AAAA,IACxB,GAEMC,IAAmB,CAACF,MAA8C;AACtE,YAAMG,IACHH,MAAmB,eAAeP,KAClCO,MAAmB,eAAeN;AAErC,aACE,gBAAAnC;AAAA,QAACT;AAAA,QAAA;AAAA,UACC,eAAasC,EAAU,YAAYY,CAAc;AAAA,UACjD,SAAS/B;AAAA,UACT,YAAY+B;AAAA,UACZ,QAAQ7C,MAAY;AAAA,UACpB,SAAS4C;AAAA,UACT,UAAUT,KAAca;AAAA,UACxB,cAAYH,MAAmB,cAActB,IAAqBD;AAAA,QAAA;AAAA,MAAA;AAAA,IAGxE,GAEM2B,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,MAAAhC,KACC,gBAAAf;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWb,EAAG,GAAGG,CAAa,aAAa;AAAA,YACzC,CAAC,GAAGA,CAAa,uBAAuB,GAAGwB;AAAA,YAC3C,CAAC,GAAGxB,CAAa,sBAAsB,GAAG,CAACwB,KAAalB,MAAY;AAAA,UAAA,CACrE;AAAA,UAED,UAAA,gBAAAI;AAAA,YAACgD;AAAA,YAAA;AAAA,cAEC,UAAUjB;AAAA,cACV,MAAK;AAAA,cACL,eAAaF,EAAU,SAAS;AAAA,YAAA;AAAA,YAH5B;AAAA,UAAA;AAAA,QAIN;AAAA,MAAA;AAAA,MAGHc,EAAiB,WAAW;AAAA,IAAA,GAC/B;AAGF,WACE,gBAAA3C;AAAA,MAACiD;AAAA,MAAA;AAAA,QACC,OAAArB;AAAA,QACA,MAAK;AAAA,QACL,KAAAP;AAAA,QACA,WAAWtB;AAAA,QACX,eAAaS;AAAA,QACb,UAAU8B;AAAA,QACV,aAAAO;AAAA,QACA,YAAYF,EAAiB,WAAW;AAAA,QACxC,UAAUZ;AAAA,QACV,KAAAC;AAAA,QACA,KAAAC;AAAA,QACA,MAAK;AAAA,QACL,iBAAeL;AAAA,QACf,iBAAeK;AAAA,QACf,iBAAeD;AAAA,QACd,GAAGZ;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEAd,GAAiB,cAAc;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./quantity-selector-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./quantity-selector-CDSfcTb1.js");exports.QuantitySelector=t.QuantitySelector;exports.quantitySelectorButtonVariants=t.quantitySelectorButtonVariants;exports.quantitySelectorVariants=t.quantitySelectorVariants;
|
|
2
2
|
//# sourceMappingURL=quantity-selector.cjs.js.map
|
|
@@ -3,7 +3,7 @@ import { useState as O, forwardRef as v, isValidElement as A, Children as C, clo
|
|
|
3
3
|
import { H as z } from "./heading-xwBuT_-9.mjs";
|
|
4
4
|
import { I as E, a as P, R as S } from "./index-DSf4qCR-.mjs";
|
|
5
5
|
import { c as D } from "./bind-CU-R61T-.mjs";
|
|
6
|
-
import { P as R } from "./paragraph-
|
|
6
|
+
import { P as R } from "./paragraph-DSxXmX_0.mjs";
|
|
7
7
|
import { S as G } from "./skeleton-CDGzLI-T.mjs";
|
|
8
8
|
const L = {
|
|
9
9
|
"purpur-radio-card-group": "_purpur-radio-card-group_19msf_1",
|
|
@@ -165,4 +165,4 @@ export {
|
|
|
165
165
|
q as b,
|
|
166
166
|
N as c
|
|
167
167
|
};
|
|
168
|
-
//# sourceMappingURL=radio-card-group-
|
|
168
|
+
//# sourceMappingURL=radio-card-group-CneOprGY.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-card-group-BlRZBa-9.mjs","sources":["../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child?.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem, RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\nexport const RADIO_CARD_GROUP_ORIENTATION = [\"horizontal\", \"vertical\"] as const;\nexport const RADIO_POSITION = [\"right\", \"left\"] as const;\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: (typeof RADIO_CARD_GROUP_ORIENTATION)[number];\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: (typeof RADIO_POSITION)[number];\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","jsxs","Fragment","jsx","Skeleton","renderCustomElement","element","disabled","RadioCardItem","forwardRef","title","propsx","ref","body","children","id","image","value","props","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RADIO_CARD_GROUP_ORIENTATION","RADIO_POSITION","RadioCardGroup","dataTestId","ariaLabelledby","className","items","heading","headingTag","loop","orientation","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","item","cloneElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radio-card-group-CneOprGY.mjs","sources":["../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child?.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem, RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\nexport const RADIO_CARD_GROUP_ORIENTATION = [\"horizontal\", \"vertical\"] as const;\nexport const RADIO_POSITION = [\"right\", \"left\"] as const;\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: (typeof RADIO_CARD_GROUP_ORIENTATION)[number];\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: (typeof RADIO_POSITION)[number];\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","jsxs","Fragment","jsx","Skeleton","renderCustomElement","element","disabled","RadioCardItem","forwardRef","title","propsx","ref","body","children","id","image","value","props","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RADIO_CARD_GROUP_ORIENTATION","RADIO_POSITION","RadioCardGroup","dataTestId","ariaLabelledby","className","items","heading","headingTag","loop","orientation","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","item","cloneElement"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const a=require("react/jsx-runtime"),_=require("react"),I=require("./heading-drD5ugCC.js"),$=require("./index-BbtRr5Q6.js"),O=require("./bind-DeUYJ6m9.js"),C=require("./paragraph-
|
|
2
|
-
//# sourceMappingURL=radio-card-group-
|
|
1
|
+
"use strict";const a=require("react/jsx-runtime"),_=require("react"),I=require("./heading-drD5ugCC.js"),$=require("./index-BbtRr5Q6.js"),O=require("./bind-DeUYJ6m9.js"),C=require("./paragraph-By4jMjnH.js"),v=require("./skeleton-BU0KtWIM.js"),y={"purpur-radio-card-group":"_purpur-radio-card-group_19msf_1","purpur-radio-card-group--vertical":"_purpur-radio-card-group--vertical_19msf_5","purpur-radio-card-group--horizontal":"_purpur-radio-card-group--horizontal_19msf_9","purpur-radio-card-group--radio-left":"_purpur-radio-card-group--radio-left_19msf_18","purpur-radio-card-group__item":"_purpur-radio-card-group__item_19msf_18","purpur-radio-card-group__item-bottom-container":"_purpur-radio-card-group__item-bottom-container_19msf_21","purpur-radio-card-group__item-top-container":"_purpur-radio-card-group__item-top-container_19msf_24","purpur-radio-card-group__container":"_purpur-radio-card-group__container_19msf_35","purpur-radio-card-group__item-container":"_purpur-radio-card-group__item-container_19msf_42","purpur-radio-card-group__item-radio":"_purpur-radio-card-group__item-radio_19msf_77","purpur-radio-card-group__item-content":"_purpur-radio-card-group__item-content_19msf_108","purpur-radio-card-group__item-title":"_purpur-radio-card-group__item-title_19msf_121","purpur-radio-card-group__item-indicator":"_purpur-radio-card-group__item-indicator_19msf_141","purpur-radio-card-group__item-image-container":"_purpur-radio-card-group__item-image-container_19msf_151","purpur-radio-card-group__item-image":"_purpur-radio-card-group__item-image_19msf_151","purpur-radio-card-group__item-image--loaded":"_purpur-radio-card-group__item-image--loaded_19msf_164","purpur-radio-card-group__item-image-placeholder":"_purpur-radio-card-group__item-image-placeholder_19msf_167","purpur-radio-card-group__item-image-placeholder--loaded":"_purpur-radio-card-group__item-image-placeholder--loaded_19msf_172","purpur-radio-card-group__item-children":"_purpur-radio-card-group__item-children_19msf_175"},i=O.c.bind(y),h="purpur-radio-card-group__item-image",A=r=>!!r?.src&&!!r.altText,q=({src:r,altText:p,noPlaceholder:m,loading:e="lazy",["data-testid"]:o})=>{const[s,c]=_.useState(!1),l=()=>c(!0),u=i(h,{[`${h}--loaded`]:s}),g=i(`${h}-placeholder`,{[`${h}-placeholder--loaded`]:s});return a.jsxs(a.Fragment,{children:[a.jsx("img",{"data-testid":o,className:u,src:r,alt:p,loading:e,onLoad:l}),!m&&a.jsx(v.Skeleton,{className:g})]})},t="purpur-radio-card-group__item",R=(r,{disabled:p})=>typeof r=="function"?r({disabled:p}):r,N=_.forwardRef(({title:r,...p},m)=>{const{["data-testid"]:e,body:o,children:s,disabled:c,id:l,image:u,value:g}=p,d={...p};return a.jsxs("div",{className:i(`${t}-container`),ref:m,children:[a.jsxs($.Item2,{className:i(t),"data-testid":e,disabled:c,id:l,value:g,children:[u&&a.jsx("span",{className:i(`${t}-image-container`),children:A(u)?a.jsx(q,{...u,"data-testid":e&&`${e}-image`}):R(u,d)}),a.jsxs("span",{className:i(`${t}-content`),children:[a.jsxs("span",{className:i(`${t}-top-container`),children:[typeof r=="string"?a.jsx(C.Paragraph,{className:i(`${t}-title`),"data-testid":e&&`${e}-title`,variant:"paragraph-100",disabled:c,children:r}):R(r,d),a.jsx("span",{className:i(`${t}-radio`),children:a.jsx($.Indicator,{className:i(`${t}-indicator`)})})]}),o&&a.jsx("span",{className:i(`${t}-bottom-container`),children:typeof o=="string"?a.jsx(C.Paragraph,{"data-testid":e&&`${e}-body`,variant:"paragraph-100",disabled:c,children:o}):R(o,d)})]})]}),s]})});N.displayName="RadioCardItem";const D=r=>_.isValidElement(r)&&r?.type===N,P=["horizontal","vertical"],E=["right","left"],f="purpur-radio-card-group",j=_.forwardRef(({"data-testid":r,"aria-labelledby":p,children:m,className:e,items:o,heading:s,headingTag:c="h2",loop:l=!0,orientation:u="vertical",radioPosition:g="right",...d},b)=>{const x=_.Children.toArray(m).filter(D);return a.jsxs("div",{className:i(e,`${f}__container`),ref:b,children:[s&&a.jsxs(I.Heading,{"data-testid":r?`${r}-heading`:void 0,id:`${d.id}-heading`,tag:c,variant:"subsection-100",children:[d.required&&a.jsx("span",{"aria-hidden":!0,children:"* "}),s]}),(!!o?.length||x.length)&&a.jsxs($.Root2,{...d,"aria-labelledby":p||(s?`${d.id}-heading`:void 0),className:i(f,`${f}--${u}`,`${f}--radio-${g}`),"data-testid":r,loop:l,children:[o?.map(n=>a.jsx(N,{...n,disabled:n.disabled||d.disabled,"data-testid":r?`${r}-item`:void 0},n.id)),_.Children.map(x,n=>_.cloneElement(n,{disabled:n.props.disabled||d.disabled}))]})]})});j.displayName="RadioCardGroup";exports.RADIO_CARD_GROUP_ORIENTATION=P;exports.RADIO_POSITION=E;exports.RadioCardGroup=j;exports.RadioCardItem=N;
|
|
2
|
+
//# sourceMappingURL=radio-card-group-Ctuvg61o.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-card-group-sYcfDPJq.js","sources":["../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child?.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem, RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\nexport const RADIO_CARD_GROUP_ORIENTATION = [\"horizontal\", \"vertical\"] as const;\nexport const RADIO_POSITION = [\"right\", \"left\"] as const;\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: (typeof RADIO_CARD_GROUP_ORIENTATION)[number];\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: (typeof RADIO_POSITION)[number];\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","jsxs","Fragment","jsx","Skeleton","renderCustomElement","element","disabled","RadioCardItem","forwardRef","title","propsx","ref","body","children","id","image","value","props","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RADIO_CARD_GROUP_ORIENTATION","RADIO_POSITION","RadioCardGroup","dataTestId","ariaLabelledby","className","items","heading","headingTag","loop","orientation","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","item","cloneElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radio-card-group-Ctuvg61o.js","sources":["../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child?.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem, RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\nexport const RADIO_CARD_GROUP_ORIENTATION = [\"horizontal\", \"vertical\"] as const;\nexport const RADIO_POSITION = [\"right\", \"left\"] as const;\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: (typeof RADIO_CARD_GROUP_ORIENTATION)[number];\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: (typeof RADIO_POSITION)[number];\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","jsxs","Fragment","jsx","Skeleton","renderCustomElement","element","disabled","RadioCardItem","forwardRef","title","propsx","ref","body","children","id","image","value","props","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RADIO_CARD_GROUP_ORIENTATION","RADIO_POSITION","RadioCardGroup","dataTestId","ariaLabelledby","className","items","heading","headingTag","loop","orientation","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","item","cloneElement"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./radio-card-group-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./radio-card-group-Ctuvg61o.js");exports.RADIO_CARD_GROUP_ORIENTATION=r.RADIO_CARD_GROUP_ORIENTATION;exports.RADIO_POSITION=r.RADIO_POSITION;exports.RadioCardGroup=r.RadioCardGroup;exports.RadioCardItem=r.RadioCardItem;
|
|
2
2
|
//# sourceMappingURL=radio-card-group.cjs.js.map
|
package/dist/rich-text.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./RichText-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./RichText-yobCUjTD.js");exports.RichText=e.RichText;exports.richToPlainText=e.richToPlainText;
|
|
2
2
|
//# sourceMappingURL=rich-text.cjs.js.map
|
package/dist/rich-text.es.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as t, jsxs as B } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as x, useId as R } from "react";
|
|
3
|
-
import { L as N } from "./listbox-
|
|
4
|
-
import {
|
|
3
|
+
import { L as N } from "./listbox-i6BQQ-NZ.mjs";
|
|
4
|
+
import { t as A } from "./use-autocomplete.es-CKb0RHKG.mjs";
|
|
5
5
|
import { c as w } from "./bind-CU-R61T-.mjs";
|
|
6
6
|
import { s as F } from "./search.es-DoFKg2Hr.mjs";
|
|
7
7
|
import { T as V } from "./text-field-BQfxJobW.mjs";
|
|
@@ -148,4 +148,4 @@ export {
|
|
|
148
148
|
L as a,
|
|
149
149
|
U as s
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=search-field-
|
|
151
|
+
//# sourceMappingURL=search-field-CpkHGIYi.mjs.map
|