@purpur/library 9.2.3 → 9.3.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 +27 -0
- package/CHANGELOG.md +13 -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-B8w65g43.js → comparison-table-CitEzX7h.js} +2 -2
- package/dist/comparison-table-CitEzX7h.js.map +1 -0
- package/dist/{comparison-table-D1zJpdLL.mjs → comparison-table-Dmbjsqyg.mjs} +52 -52
- package/dist/comparison-table-Dmbjsqyg.mjs.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/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/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/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/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 +592 -589
- 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-COZ1POGG.mjs} +2 -2
- package/dist/{modal-BMg43Fvd.mjs.map → modal-COZ1POGG.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-DsgqX7Vv.js → table-DRYW0yw4.js} +2 -2
- package/dist/{table-DsgqX7Vv.js.map → table-DRYW0yw4.js.map} +1 -1
- package/dist/{table-Dx_dhGT6.mjs → table-DUY8kQfE.mjs} +5 -5
- package/dist/{table-Dx_dhGT6.mjs.map → table-DUY8kQfE.mjs.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 +20 -20
- 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.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/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
|