@purpur/library 9.0.6 → 9.0.7
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 +33 -0
- package/CHANGELOG.md +15 -1
- package/dist/{RichText-DRacgpis.mjs → RichText-Bi51HE6X.mjs} +3 -3
- package/dist/{RichText-DRacgpis.mjs.map → RichText-Bi51HE6X.mjs.map} +1 -1
- package/dist/{RichText-DMyGiMN0.js → RichText-DNroJJXv.js} +2 -2
- package/dist/{RichText-DMyGiMN0.js.map → RichText-DNroJJXv.js.map} +1 -1
- package/dist/{ThemeProvider-CrjMv3M8.mjs → ThemeProvider-BR1hJQOD.mjs} +85 -85
- package/dist/{ThemeProvider-CrjMv3M8.mjs.map → ThemeProvider-BR1hJQOD.mjs.map} +1 -1
- package/dist/{accordion-DWflnyWa.mjs → accordion-BKTz9DM6.mjs} +18 -18
- package/dist/{accordion-DWflnyWa.mjs.map → accordion-BKTz9DM6.mjs.map} +1 -1
- package/dist/{accordion-CF2fj2uq.js → accordion-DX8efWOt.js} +2 -2
- package/dist/{accordion-CF2fj2uq.js.map → accordion-DX8efWOt.js.map} +1 -1
- package/dist/accordion.cjs.js +1 -1
- package/dist/accordion.es.js +1 -1
- package/dist/{alert-badge-u7qAhYbR.mjs → alert-badge-DR8cigWu.mjs} +3 -3
- package/dist/{alert-badge-u7qAhYbR.mjs.map → alert-badge-DR8cigWu.mjs.map} +1 -1
- package/dist/alert-badge.es.js +1 -1
- package/dist/{autocomplete-yD0-1vlF.js → autocomplete-6qSqK3SI.js} +2 -2
- package/dist/{autocomplete-yD0-1vlF.js.map → autocomplete-6qSqK3SI.js.map} +1 -1
- package/dist/{autocomplete-0kGG_STe.mjs → autocomplete-B4dZx9zF.mjs} +3 -3
- package/dist/{autocomplete-0kGG_STe.mjs.map → autocomplete-B4dZx9zF.mjs.map} +1 -1
- package/dist/autocomplete.cjs.js +1 -1
- package/dist/autocomplete.es.js +1 -1
- package/dist/button-BfYKNBmC.mjs +102 -0
- package/dist/button-BfYKNBmC.mjs.map +1 -0
- package/dist/button-DDYGuqZ0.js +2 -0
- package/dist/button-DDYGuqZ0.js.map +1 -0
- package/dist/button.cjs.js +1 -1
- package/dist/button.es.js +1 -1
- package/dist/{calendar-pMM0fKEu.js → calendar-CxkJMONO.js} +2 -2
- package/dist/{calendar-pMM0fKEu.js.map → calendar-CxkJMONO.js.map} +1 -1
- package/dist/{calendar-DDie8jSH.mjs → calendar-vALLklKV.mjs} +2 -2
- package/dist/{calendar-DDie8jSH.mjs.map → calendar-vALLklKV.mjs.map} +1 -1
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.es.js +1 -1
- package/dist/{card-DiMVw06l.mjs → card-CkZQZOz1.mjs} +9 -9
- package/dist/{card-DiMVw06l.mjs.map → card-CkZQZOz1.mjs.map} +1 -1
- package/dist/{card-B512KHpr.js → card-VMa3cGCP.js} +2 -2
- package/dist/{card-B512KHpr.js.map → card-VMa3cGCP.js.map} +1 -1
- package/dist/card.cjs.js +1 -1
- package/dist/card.es.js +1 -1
- package/dist/{checkbox-LYzMiXu7.mjs → checkbox-D6qWgpWR.mjs} +8 -8
- package/dist/{checkbox-LYzMiXu7.mjs.map → checkbox-D6qWgpWR.mjs.map} +1 -1
- package/dist/checkbox.es.js +1 -1
- package/dist/{chip-group-aj1fdnjC.js → chip-group-B775zvKD.js} +2 -2
- package/dist/{chip-group-aj1fdnjC.js.map → chip-group-B775zvKD.js.map} +1 -1
- package/dist/{chip-group-CJVvfl_J.mjs → chip-group-xuOe7nL3.mjs} +3 -3
- package/dist/{chip-group-CJVvfl_J.mjs.map → chip-group-xuOe7nL3.mjs.map} +1 -1
- package/dist/chip-group.cjs.js +1 -1
- package/dist/chip-group.es.js +1 -1
- package/dist/components/button/src/button.d.ts +1 -2
- package/dist/components/button/src/button.d.ts.map +1 -1
- package/dist/components/date-field/src/date-field.d.ts.map +1 -1
- package/dist/components/stepper/src/stepper-button.d.ts.map +1 -1
- package/dist/components/table/src/table-toolbar.d.ts.map +1 -1
- package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
- package/dist/components/tabs/src/tabs.d.ts.map +1 -1
- package/dist/{container-Bw12NgHN.mjs → container-DLjBTB_w.mjs} +3 -3
- package/dist/{container-Bw12NgHN.mjs.map → container-DLjBTB_w.mjs.map} +1 -1
- package/dist/container.es.js +1 -1
- package/dist/{content-block-DUcjAZgG.mjs → content-block-BMOvlH7a.mjs} +6 -6
- package/dist/{content-block-DUcjAZgG.mjs.map → content-block-BMOvlH7a.mjs.map} +1 -1
- package/dist/{content-block-kzdUWgvH.js → content-block-Cd7xSE8t.js} +2 -2
- package/dist/{content-block-kzdUWgvH.js.map → content-block-Cd7xSE8t.js.map} +1 -1
- package/dist/content-block.cjs.js +1 -1
- package/dist/content-block.es.js +1 -1
- package/dist/{countdown-DxAGVUFI.mjs → countdown-DZ4IwkNy.mjs} +12 -12
- package/dist/{countdown-DxAGVUFI.mjs.map → countdown-DZ4IwkNy.mjs.map} +1 -1
- package/dist/countdown.es.js +1 -1
- package/dist/date-field-CORqon6B.js +2 -0
- package/dist/{date-field-CPiTZqa0.js.map → date-field-CORqon6B.js.map} +1 -1
- package/dist/{date-field-D_6iP2fC.mjs → date-field-CTJB8O0e.mjs} +325 -310
- package/dist/{date-field-D_6iP2fC.mjs.map → date-field-CTJB8O0e.mjs.map} +1 -1
- package/dist/date-field.cjs.js +1 -1
- package/dist/date-field.es.js +1 -1
- package/dist/{date-picker-BRnwwZv1.mjs → date-picker-CJcIJ5VL.mjs} +5 -5
- package/dist/{date-picker-BRnwwZv1.mjs.map → date-picker-CJcIJ5VL.mjs.map} +1 -1
- package/dist/{date-picker-DlJGggam.js → date-picker-Dv3W05Hf.js} +2 -2
- package/dist/{date-picker-DlJGggam.js.map → date-picker-Dv3W05Hf.js.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/{dismissable-chip-group-DsO2cZaF.js → dismissable-chip-group-CnziecOt.js} +2 -2
- package/dist/{dismissable-chip-group-DsO2cZaF.js.map → dismissable-chip-group-CnziecOt.js.map} +1 -1
- package/dist/{dismissable-chip-group-Bl0D18qM.mjs → dismissable-chip-group-ZCYOt1sB.mjs} +2 -2
- package/dist/{dismissable-chip-group-Bl0D18qM.mjs.map → dismissable-chip-group-ZCYOt1sB.mjs.map} +1 -1
- package/dist/dismissable-chip-group.cjs.js +1 -1
- package/dist/dismissable-chip-group.es.js +1 -1
- package/dist/{drawer-nBpCtIdI.js → drawer-Ce5LNpU2.js} +2 -2
- package/dist/{drawer-nBpCtIdI.js.map → drawer-Ce5LNpU2.js.map} +1 -1
- package/dist/{drawer-Boqmgh-i.mjs → drawer-DSFZ61OH.mjs} +14 -14
- package/dist/{drawer-Boqmgh-i.mjs.map → drawer-DSFZ61OH.mjs.map} +1 -1
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/{floating-ui.react-dom-0ol4sFzt.mjs → floating-ui.react-dom-gsHLgcoR.mjs} +5 -5
- package/dist/{floating-ui.react-dom-0ol4sFzt.mjs.map → floating-ui.react-dom-gsHLgcoR.mjs.map} +1 -1
- package/dist/{footer-DrjAwjuL.js → footer-BL0ewBZT.js} +2 -2
- package/dist/{footer-DrjAwjuL.js.map → footer-BL0ewBZT.js.map} +1 -1
- package/dist/{footer-DcWsihxS.mjs → footer-cH07Xqil.mjs} +5 -5
- package/dist/{footer-DcWsihxS.mjs.map → footer-cH07Xqil.mjs.map} +1 -1
- package/dist/footer.cjs.js +1 -1
- package/dist/footer.es.js +1 -1
- package/dist/heading-drD5ugCC.js +2 -0
- package/dist/{heading-DLCdW6gx.js.map → heading-drD5ugCC.js.map} +1 -1
- package/dist/heading-xwBuT_-9.mjs +75 -0
- package/dist/{heading-gqtQNo5n.mjs.map → heading-xwBuT_-9.mjs.map} +1 -1
- package/dist/heading.cjs.js +1 -1
- package/dist/heading.es.js +1 -1
- package/dist/{hero-banner-B8fRHxXc.mjs → hero-banner-CkSSlxTW.mjs} +5 -5
- package/dist/{hero-banner-B8fRHxXc.mjs.map → hero-banner-CkSSlxTW.mjs.map} +1 -1
- package/dist/{hero-banner-D3peC1NR.js → hero-banner-JFaqW20R.js} +2 -2
- package/dist/{hero-banner-D3peC1NR.js.map → hero-banner-JFaqW20R.js.map} +1 -1
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +44 -44
- package/dist/{listbox-u6__DsLw.mjs → listbox-oDeP8FvH.mjs} +2 -2
- package/dist/{listbox-u6__DsLw.mjs.map → listbox-oDeP8FvH.mjs.map} +1 -1
- package/dist/listbox.es.js +1 -1
- package/dist/{modal-C2UQsW-g.mjs → modal-2ymCXTup.mjs} +19 -19
- package/dist/{modal-C2UQsW-g.mjs.map → modal-2ymCXTup.mjs.map} +1 -1
- package/dist/{modal-nyhf5zxG.js → modal-CXi2xez5.js} +2 -2
- package/dist/{modal-nyhf5zxG.js.map → modal-CXi2xez5.js.map} +1 -1
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{notification-C32wHljA.mjs → notification-BFSOuDp8.mjs} +22 -22
- package/dist/{notification-C32wHljA.mjs.map → notification-BFSOuDp8.mjs.map} +1 -1
- package/dist/{notification-Bg1vQkQ3.js → notification-DdnI2rOh.js} +2 -2
- package/dist/{notification-Bg1vQkQ3.js.map → notification-DdnI2rOh.js.map} +1 -1
- package/dist/{notification-banner-BY2iZOIa.mjs → notification-banner-CQvBezAL.mjs} +3 -3
- package/dist/{notification-banner-BY2iZOIa.mjs.map → notification-banner-CQvBezAL.mjs.map} +1 -1
- package/dist/{notification-banner-C8XsBDTq.js → notification-banner-CT4ew8IQ.js} +2 -2
- package/dist/{notification-banner-C8XsBDTq.js.map → notification-banner-CT4ew8IQ.js.map} +1 -1
- package/dist/notification-banner.cjs.js +1 -1
- package/dist/notification-banner.es.js +1 -1
- package/dist/notification.cjs.js +1 -1
- package/dist/notification.es.js +1 -1
- package/dist/{pagination-CVVCAQ65.mjs → pagination-BdCjh1Pi.mjs} +2 -2
- package/dist/{pagination-CVVCAQ65.mjs.map → pagination-BdCjh1Pi.mjs.map} +1 -1
- package/dist/pagination.es.js +1 -1
- package/dist/{paragraph-DNtj7OLr.mjs → paragraph-Ci50OF1u.mjs} +3 -3
- package/dist/{paragraph-DNtj7OLr.mjs.map → paragraph-Ci50OF1u.mjs.map} +1 -1
- package/dist/paragraph.es.js +1 -1
- package/dist/{popover-B1BgSoQx.js → popover-D3qWbbU4.js} +2 -2
- package/dist/{popover-B1BgSoQx.js.map → popover-D3qWbbU4.js.map} +1 -1
- package/dist/{popover-DBMI9Jy1.mjs → popover-ZeQKmyEb.mjs} +25 -25
- package/dist/{popover-DBMI9Jy1.mjs.map → popover-ZeQKmyEb.mjs.map} +1 -1
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/{product-card-rfpJbzzV.mjs → product-card-BU1ThhCx.mjs} +12 -12
- package/dist/{product-card-rfpJbzzV.mjs.map → product-card-BU1ThhCx.mjs.map} +1 -1
- package/dist/{product-card-DOBHGAa2.js → product-card-CNBegEBW.js} +2 -2
- package/dist/{product-card-DOBHGAa2.js.map → product-card-CNBegEBW.js.map} +1 -1
- package/dist/product-card.cjs.js +1 -1
- package/dist/product-card.es.js +1 -1
- package/dist/{promotion-card-BIFOwMrw.js → promotion-card-CXNhskRl.js} +2 -2
- package/dist/{promotion-card-BIFOwMrw.js.map → promotion-card-CXNhskRl.js.map} +1 -1
- package/dist/{promotion-card-DeyqFnyP.mjs → promotion-card-_bPyVr9t.mjs} +9 -9
- package/dist/{promotion-card-DeyqFnyP.mjs.map → promotion-card-_bPyVr9t.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-DPOTlMSq.js → quantity-selector-CjSAaj7d.js} +2 -2
- package/dist/{quantity-selector-DPOTlMSq.js.map → quantity-selector-CjSAaj7d.js.map} +1 -1
- package/dist/{quantity-selector-_VcZYLjR.mjs → quantity-selector-HvyYSKah.mjs} +5 -5
- package/dist/{quantity-selector-_VcZYLjR.mjs.map → quantity-selector-HvyYSKah.mjs.map} +1 -1
- package/dist/quantity-selector.cjs.js +1 -1
- package/dist/quantity-selector.es.js +1 -1
- package/dist/{radio-button-group-CZ_FnVAi.js → radio-button-group-BaFpGAcD.js} +2 -2
- package/dist/{radio-button-group-CZ_FnVAi.js.map → radio-button-group-BaFpGAcD.js.map} +1 -1
- package/dist/{radio-button-group-BnCPcmSN.mjs → radio-button-group-CFqPsu5A.mjs} +5 -5
- package/dist/{radio-button-group-BnCPcmSN.mjs.map → radio-button-group-CFqPsu5A.mjs.map} +1 -1
- package/dist/radio-button-group.cjs.js +1 -1
- package/dist/radio-button-group.es.js +1 -1
- package/dist/{radio-card-group-DkaMcmen.mjs → radio-card-group-BlRZBa-9.mjs} +16 -16
- package/dist/{radio-card-group-DkaMcmen.mjs.map → radio-card-group-BlRZBa-9.mjs.map} +1 -1
- package/dist/{radio-card-group-BT5pV3tA.js → radio-card-group-sYcfDPJq.js} +2 -2
- package/dist/{radio-card-group-BT5pV3tA.js.map → radio-card-group-sYcfDPJq.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/scss/heading.mixins.scss +1 -1
- package/dist/{search-field-DH0xeW_J.mjs → search-field-BOmCVr5b.mjs} +11 -11
- package/dist/{search-field-DH0xeW_J.mjs.map → search-field-BOmCVr5b.mjs.map} +1 -1
- package/dist/{search-field-CxX4BBcg.js → search-field-CanOlkIY.js} +2 -2
- package/dist/{search-field-CxX4BBcg.js.map → search-field-CanOlkIY.js.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/{stepper-BfIbJwZn.mjs → stepper-D7T0wed7.mjs} +68 -71
- package/dist/stepper-D7T0wed7.mjs.map +1 -0
- package/dist/stepper-DYjJgEHL.js +2 -0
- package/dist/stepper-DYjJgEHL.js.map +1 -0
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/{table-DvcpczWf.mjs → table-B4pts_r4.mjs} +181 -179
- package/dist/{table-DvcpczWf.mjs.map → table-B4pts_r4.mjs.map} +1 -1
- package/dist/{table-BNeo_B1h.js → table-Bv_BISXV.js} +4 -4
- package/dist/{table-BNeo_B1h.js.map → table-Bv_BISXV.js.map} +1 -1
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/tabs-Bye5lgZ1.mjs +424 -0
- package/dist/tabs-Bye5lgZ1.mjs.map +1 -0
- package/dist/tabs-D-nfZHIA.js +2 -0
- package/dist/tabs-D-nfZHIA.js.map +1 -0
- package/dist/tabs.cjs.js +1 -1
- package/dist/tabs.es.js +1 -1
- package/dist/{text-area-Cb9Hm2Z9.mjs → text-area-CpYWt99s.mjs} +3 -3
- package/dist/{text-area-Cb9Hm2Z9.mjs.map → text-area-CpYWt99s.mjs.map} +1 -1
- package/dist/text-area.es.js +1 -1
- package/dist/{text-field-PKAaXO1N.mjs → text-field-5rIuW8gc.mjs} +2 -2
- package/dist/{text-field-PKAaXO1N.mjs.map → text-field-5rIuW8gc.mjs.map} +1 -1
- package/dist/{text-field-B8a-NKm4.js → text-field-Xt6T3zjO.js} +2 -2
- package/dist/{text-field-B8a-NKm4.js.map → text-field-Xt6T3zjO.js.map} +1 -1
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.es.js +1 -1
- package/dist/theme.es.js +2 -2
- package/dist/{toggle-Cezg5MUc.mjs → toggle-D23x1wWk.mjs} +9 -9
- package/dist/{toggle-Cezg5MUc.mjs.map → toggle-D23x1wWk.mjs.map} +1 -1
- package/dist/toggle.es.js +1 -1
- package/dist/tokens.es.js +3 -3
- package/dist/{tooltip-DXi7ikUT.mjs → tooltip-DkwyNxrQ.mjs} +12 -12
- package/dist/{tooltip-DXi7ikUT.mjs.map → tooltip-DkwyNxrQ.mjs.map} +1 -1
- package/dist/{tooltip-CLQLxoaf.js → tooltip-svlZkXBs.js} +2 -2
- package/dist/{tooltip-CLQLxoaf.js.map → tooltip-svlZkXBs.js.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/dist/{useColorScheme-DRQcbSog.mjs → useColorScheme-9rgSgG0N.mjs} +2 -2
- package/dist/{useColorScheme-DRQcbSog.mjs.map → useColorScheme-9rgSgG0N.mjs.map} +1 -1
- package/dist/{variables-91UvS2rU.mjs → variables-BVgnpUH9.mjs} +253 -253
- package/dist/{variables-91UvS2rU.mjs.map → variables-BVgnpUH9.mjs.map} +1 -1
- package/dist/{variables-BSsIx39i.mjs → variables-DkCN2x27.mjs} +7 -7
- package/dist/{variables-BSsIx39i.mjs.map → variables-DkCN2x27.mjs.map} +1 -1
- package/dist/{variables-BUfnQw6H.mjs → variables-Dr3Hsdn-.mjs} +9 -9
- package/dist/{variables-BUfnQw6H.mjs.map → variables-Dr3Hsdn-.mjs.map} +1 -1
- package/package.json +18 -18
- package/scripts/generate.mts +4 -1
- package/vite-plugin-generate-components-metadata.js +4 -1
- package/dist/button-ChYUPi2k.js +0 -2
- package/dist/button-ChYUPi2k.js.map +0 -1
- package/dist/button-DBX_tvfJ.mjs +0 -105
- package/dist/button-DBX_tvfJ.mjs.map +0 -1
- package/dist/date-field-CPiTZqa0.js +0 -2
- package/dist/heading-DLCdW6gx.js +0 -2
- package/dist/heading-gqtQNo5n.mjs +0 -75
- package/dist/stepper-B248FwO-.js +0 -2
- package/dist/stepper-B248FwO-.js.map +0 -1
- package/dist/stepper-BfIbJwZn.mjs.map +0 -1
- package/dist/tabs-CfHd4UQ2.js +0 -2
- package/dist/tabs-CfHd4UQ2.js.map +0 -1
- package/dist/tabs-CoXMAwMx.mjs +0 -396
- package/dist/tabs-CoXMAwMx.mjs.map +0 -1
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
-
import { c as h } from "./index-CxzxFFKm.mjs";
|
|
3
|
-
const p = {
|
|
4
|
-
"purpur-heading": "_purpur-heading_vo751_1",
|
|
5
|
-
"purpur-heading--hyphens": "_purpur-heading--hyphens_vo751_8",
|
|
6
|
-
"purpur-heading--negative": "_purpur-heading--negative_vo751_11",
|
|
7
|
-
"purpur-heading--subsection-100": "_purpur-heading--subsection-100_vo751_14",
|
|
8
|
-
"purpur-heading--title-100": "_purpur-heading--title-100_vo751_20",
|
|
9
|
-
"purpur-heading--title-200": "_purpur-heading--title-200_vo751_26",
|
|
10
|
-
"purpur-heading--title-300": "_purpur-heading--title-300_vo751_32",
|
|
11
|
-
"purpur-heading--title-400": "_purpur-heading--title-400_vo751_38",
|
|
12
|
-
"purpur-heading--title-500": "_purpur-heading--title-500_vo751_44",
|
|
13
|
-
"purpur-heading--title-600": "_purpur-heading--title-600_vo751_50",
|
|
14
|
-
"purpur-heading--title-700": "_purpur-heading--title-700_vo751_56",
|
|
15
|
-
"purpur-heading--display-5": "_purpur-heading--display-5_vo751_62",
|
|
16
|
-
"purpur-heading--display-10": "_purpur-heading--display-10_vo751_68",
|
|
17
|
-
"purpur-heading--display-15": "_purpur-heading--display-15_vo751_74",
|
|
18
|
-
"purpur-heading--display-20": "_purpur-heading--display-20_vo751_80",
|
|
19
|
-
"purpur-heading--display-25": "_purpur-heading--display-25_vo751_86",
|
|
20
|
-
"purpur-heading--display-50": "_purpur-heading--display-50_vo751_92",
|
|
21
|
-
"purpur-heading--display-100": "_purpur-heading--display-100_vo751_98",
|
|
22
|
-
"purpur-heading--display-200": "_purpur-heading--display-200_vo751_104"
|
|
23
|
-
}, T = {
|
|
24
|
-
H1: "h1",
|
|
25
|
-
H2: "h2",
|
|
26
|
-
H3: "h3",
|
|
27
|
-
H4: "h4",
|
|
28
|
-
H5: "h5",
|
|
29
|
-
H6: "h6"
|
|
30
|
-
}, g = {
|
|
31
|
-
TITLE100: "title-100",
|
|
32
|
-
TITLE200: "title-200",
|
|
33
|
-
TITLE300: "title-300",
|
|
34
|
-
TITLE400: "title-400",
|
|
35
|
-
TITLE500: "title-500",
|
|
36
|
-
TITLE600: "title-600",
|
|
37
|
-
TITLE700: "title-700",
|
|
38
|
-
SUBSECTION100: "subsection-100"
|
|
39
|
-
}, I = {
|
|
40
|
-
DISPLAY5: "display-5",
|
|
41
|
-
DISPLAY10: "display-10",
|
|
42
|
-
DISPLAY15: "display-15",
|
|
43
|
-
DISPLAY20: "display-20",
|
|
44
|
-
DISPLAY25: "display-25",
|
|
45
|
-
DISPLAY50: "display-50",
|
|
46
|
-
DISPLAY100: "display-100",
|
|
47
|
-
DISPLAY200: "display-200"
|
|
48
|
-
}, i = "purpur-heading", o = ({
|
|
49
|
-
children: a,
|
|
50
|
-
className: r = "",
|
|
51
|
-
enableHyphenation: e = !1,
|
|
52
|
-
negative: u = !1,
|
|
53
|
-
tag: d,
|
|
54
|
-
variant: t = g.TITLE100,
|
|
55
|
-
...n
|
|
56
|
-
}) => {
|
|
57
|
-
const s = d, _ = h([
|
|
58
|
-
r,
|
|
59
|
-
p[i],
|
|
60
|
-
p[`${i}--${t}`],
|
|
61
|
-
{
|
|
62
|
-
[p[`${i}--hyphens`]]: e,
|
|
63
|
-
[p[`${i}--negative`]]: u
|
|
64
|
-
}
|
|
65
|
-
]);
|
|
66
|
-
return /* @__PURE__ */ l(s, { className: _, ...n, children: a });
|
|
67
|
-
};
|
|
68
|
-
o.displayName = "Heading";
|
|
69
|
-
export {
|
|
70
|
-
I as D,
|
|
71
|
-
T as H,
|
|
72
|
-
g as T,
|
|
73
|
-
o as a
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=heading-gqtQNo5n.mjs.map
|
package/dist/stepper-B248FwO-.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),l=require("react"),$=require("./button-ChYUPi2k.js"),M=require("./chevron-left.es-B0vPg5XM.js"),W=require("./chevron-right.es-Bv376M3o.js"),I=require("./index-BVmlsxuF.js"),x=require("./index-CoR7YA3H.js"),T=require("./bind-DeUYJ6m9.js"),J=require("./tooltip-CLQLxoaf.js"),K=require("./checkmark.es-lYntWFA3.js"),Q=require("./visually-hidden-C2CKovZx.js"),X={PRIMARY:"primary"},L={SMALL_SCREEN:"small-screen",LARGE_SCREEN:"large-screen",ALWAYS:"always"},Z={"purpur-stepper__nav-container":"_purpur-stepper__nav-container_1rouo_1","purpur-stepper__nav":"_purpur-stepper__nav_1rouo_1","purpur-stepper":"_purpur-stepper_1rouo_1","purpur-stepper__scroll-button":"_purpur-stepper__scroll-button_1rouo_7","purpur-stepper__scroll-button--left":"_purpur-stepper__scroll-button--left_1rouo_18","purpur-stepper__scroll-button--right":"_purpur-stepper__scroll-button--right_1rouo_21","purpur-stepper__scroll-button-icon":"_purpur-stepper__scroll-button-icon_1rouo_24","purpur-stepper__hidden":"_purpur-stepper__hidden_1rouo_27"},ee={"purpur-stepper-container":"_purpur-stepper-container_162zw_1","purpur-stepper-container__inner--align-with-grid":"_purpur-stepper-container__inner--align-with-grid_162zw_5","purpur-stepper-container--primary":"_purpur-stepper-container--primary_162zw_18","purpur-stepper-container--secondary":"_purpur-stepper-container--secondary_162zw_21"},q=T.c.bind(ee),v="purpur-stepper-container",te=({["data-testid"]:t="purpur-stepper-container",children:r,className:s,alignWithGrid:n,variant:o,...p})=>{const h=q(s,v,{[`${v}--${o}`]:o,[`${v}--align-with-grid`]:n});return e.jsx("div",{className:h,"data-testid":t,...p,children:e.jsx("div",{className:q(`${v}__inner`,{[`${v}__inner--align-with-grid`]:n}),children:r})})},re=l.forwardRef(({children:t,...r},s)=>{const{finished:n,...o}=r;return e.jsx("div",{...o,ref:s,children:t})}),se=t=>!!t&&l.isValidElement(t)&&!!t.props.label,ne={"purpur-stepper-button":"_purpur-stepper-button_wjiph_1","purpur-stepper-button__trigger-outline":"_purpur-stepper-button__trigger-outline_wjiph_21","purpur-stepper-button--first":"_purpur-stepper-button--first_wjiph_33","purpur-stepper-button--current":"_purpur-stepper-button--current_wjiph_33","purpur-stepper-button--middle":"_purpur-stepper-button--middle_wjiph_38","purpur-stepper-button--last":"_purpur-stepper-button--last_wjiph_48","purpur-stepper-button--visibility-small-screen":"_purpur-stepper-button--visibility-small-screen_wjiph_58","purpur-stepper-button--visibility-large-screen":"_purpur-stepper-button--visibility-large-screen_wjiph_66","purpur-stepper-button__icon":"_purpur-stepper-button__icon_wjiph_90","purpur-stepper-button__step-number":"_purpur-stepper-button__step-number_wjiph_97","purpur-stepper-button__step-number--current":"_purpur-stepper-button__step-number--current_wjiph_108","purpur-stepper-button__step-number--disabled":"_purpur-stepper-button__step-number--disabled_wjiph_112","purpur-stepper-button__step-label":"_purpur-stepper-button__step-label_wjiph_117","arrow-forward":"_arrow-forward_wjiph_121","purpur-stepper-button--primary":"_purpur-stepper-button--primary_wjiph_133","purpur-stepper-button--disabled":"_purpur-stepper-button--disabled_wjiph_136","purpur-stepper-button--secondary":"_purpur-stepper-button--secondary_wjiph_142","arrow-tail":"_arrow-tail_wjiph_152","sr-only--lg-down":"_sr-only--lg-down_wjiph_171"},y=T.c.bind(ne),d="purpur-stepper-button",pe=({["data-testid"]:t,current:r,disabled:s,stepNumber:n})=>e.jsx("div",{"data-testid":t,className:y([`${d}__step-number`,{[`${d}__step-number--current`]:r},{[`${d}__step-number--disabled`]:s}]),children:n}),A=l.forwardRef(({className:t,["data-testid"]:r,variant:s,step:n,indexOfLastItem:o,index:p,currentStepIndex:h,whenToBeVisible:m,handleStepChange:u,handleStepFocus:a,completedStepLabel:i,..._},b)=>{const j=p===0?"first":p===o?"last":"middle",R=p===h;return e.jsx(I.Item,{asChild:!0,children:e.jsx($.Button,{..._,ref:b,className:y(t,d,`${d}--${j}`,`${d}--${s}`,`${d}--visibility-${m}`,{[`${d}--current`]:R},{[`${d}--disabled`]:n.disabled},{"arrow-tail":j!=="first"},{"arrow-forward":j!=="last"}),id:`stepper-trigger-button-${p}`,variant:$.BUTTON_VARIANT.TERTIARY_PURPLE,"data-testid":`${r}-step-trigger-item-${p}`,disabled:n.disabled,"aria-current":R&&"step",onClick:E=>u(E,p),onFocus:a,children:e.jsxs("span",{className:y(`${d}__trigger-outline`),children:[n.finished&&!R?e.jsx(K.a,{className:y(`${d}__icon`),"data-testid":`${r}-step-finished-icon`,size:"sm"}):e.jsx(pe,{"data-testid":`${r}-step-number`,current:R,disabled:n.disabled,stepNumber:p+1}),e.jsxs("span",{className:y(`${d}__step-label`,{"sr-only--lg-down":!R}),children:[n.finished&&e.jsx(Q.VisuallyHidden,{children:`${p+1} ${i}`}),n.label]})]})})})}),ie={"purpur-stepper-nav-items__list":"_purpur-stepper-nav-items__list_lgkh0_1","purpur-stepper-nav-items__list-item":"_purpur-stepper-nav-items__list-item_lgkh0_7","purpur-stepper-nav-items__list-item--current":"_purpur-stepper-nav-items__list-item--current_lgkh0_25","purpur-stepper-nav-items__tooltip-content":"_purpur-stepper-nav-items__tooltip-content_lgkh0_31","purpur-stepper-nav-items__tooltip-trigger-item-container":"_purpur-stepper-nav-items__tooltip-trigger-item-container_lgkh0_34"},C=T.c.bind(ie),N="purpur-stepper-nav-items",oe=l.forwardRef(({["data-testid"]:t,variant:r,handleStepChange:s,handleStepFocus:n,steps:o,firstStepRef:p,lastStepRef:h,currentStepIndex:m,completedStepLabel:u},a)=>{const i=o.map((_,b)=>{const j=_.disabled?e.jsx("span",{className:C(`${N}__tooltip-trigger-item-container`),children:e.jsx(A,{"data-testid":`${t}-disabled-sm`,variant:r,step:_,indexOfLastItem:o.length-1,index:b,currentStepIndex:m,whenToBeVisible:L.SMALL_SCREEN,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})}):null;return e.jsx("li",{className:C(`${N}__list-item`,{[`${N}__list-item--current`]:b===m}),ref:b===0?p:b===o.length-1?h:null,children:_.disabled?e.jsxs(e.Fragment,{children:[e.jsx(J.Tooltip,{contentClassName:C(`${N}__tooltip-content`),triggerElement:j,children:_.label}),e.jsx(A,{"data-testid":`${t}-disabled-lg`,variant:r,step:_,indexOfLastItem:o.length-1,index:b,currentStepIndex:m,whenToBeVisible:L.LARGE_SCREEN,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})]}):e.jsx(A,{"data-testid":t,variant:r,step:_,indexOfLastItem:o.length-1,index:b,currentStepIndex:m,whenToBeVisible:L.ALWAYS,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})},_.label)});return e.jsx(I.Root,{loop:!1,dir:"ltr",children:e.jsx("ol",{ref:a,className:C(`${N}__list`),children:i})})}),le=t=>{const r=l.useRef(!0),s=l.useRef(null);return l.useEffect(()=>{!r.current&&s.current!==null&&s.current.focus(),r.current=!1},[t]),{contentRef:s}},S={LEFT:"left",RIGHT:"right"},ue=()=>{const t=l.useRef(null),r=l.useRef(null),s=l.useRef(null),[n,o]=l.useState(!1),[p,h]=l.useState(!1),m=u=>{if(!t.current)return;const a=t.current,i=a.clientWidth,_=a.scrollLeft;u===S.LEFT&&a.scroll({behavior:"smooth",left:_-i/2}),u===S.RIGHT&&a.scroll({behavior:"smooth",left:_+i/2})};return l.useEffect(()=>{if(r.current&&s.current&&t.current){const u=new IntersectionObserver(a=>{for(const i of a){if(i.target===r.current){i.isIntersecting?o(!1):o(!0);continue}i.target===s.current&&(i.isIntersecting?h(!1):h(!0))}},{root:t.current,threshold:.95});return u.observe(r.current),u.observe(s.current),()=>u.disconnect()}},[r,s,t]),{scrollContainer:t,firstStepRef:r,lastStepRef:s,displayLeftScrollButton:n,displayRightScrollButton:p,handleHorizontalScroll:m}},g=T.c.bind(Z),c="purpur-stepper",B=({["aria-label"]:t,["data-testid"]:r,children:s,className:n,completedStepLabel:o,currentStepIndex:p=0,onStepChange:h,alignWithGrid:m=!1,leftScrollButtonAriaLabel:u,rightScrollButtonAriaLabel:a,variant:i=X.PRIMARY,..._})=>{const b=l.Children.toArray(s).filter(se),j=l.Children.map(b,f=>{const{disabled:w,finished:D,label:G}=f.props;return{disabled:w??!1,finished:D??!1,label:G}}),{contentRef:R}=le(p),{scrollContainer:E,firstStepRef:O,lastStepRef:z,displayLeftScrollButton:P,displayRightScrollButton:Y,handleHorizontalScroll:V}=ue(),H=g([n,c,{[`${c}--${i}`]:i}]),k=f=>{f.target.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})},U=(f,w)=>{f.preventDefault(),k(f),h(w)},F=f=>{k(f)};return e.jsxs("div",{className:H,..._,children:[e.jsx(te,{variant:i,alignWithGrid:m,children:e.jsxs("div",{className:g(`${c}__nav-container`),children:[e.jsxs(x.Root,{children:[e.jsx(x.Viewport,{ref:E,children:e.jsx("div",{"aria-label":t,"data-testid":r,className:g([`${c}__nav`,{[`${c}__nav--${i}`]:i}]),children:e.jsx(I.Root,{loop:!1,dir:"ltr",children:e.jsx(oe,{"data-testid":r,variant:i,firstStepRef:O,lastStepRef:z,steps:j,currentStepIndex:p,handleStepChange:U,handleStepFocus:F,completedStepLabel:o})})})}),e.jsx(x.Scrollbar,{orientation:"horizontal",children:e.jsx(x.Thumb,{})})]}),P&&e.jsx($.Button,{"aria-label":u,className:g([`${c}__scroll-button`,`${c}__scroll-button--left`]),variant:$.BUTTON_VARIANT.TERTIARY_PURPLE,tabIndex:-1,iconOnly:!0,onClick:()=>{V(S.LEFT)},children:e.jsx(M.l,{className:g(`${c}__scroll-button-icon`),size:"md"})}),Y&&e.jsx($.Button,{"aria-label":a,className:g([`${c}__scroll-button`,`${c}__scroll-button--right`]),variant:$.BUTTON_VARIANT.TERTIARY_PURPLE,tabIndex:-1,iconOnly:!0,onClick:()=>{V(S.RIGHT)},children:e.jsx(W.n,{className:g(`${c}__scroll-button-icon`),size:"md"})})]})}),e.jsx("div",{tabIndex:-1,"aria-labelledby":`stepper-trigger-button-${p}`,ref:R,style:{outline:"none"},children:e.jsx("div",{"aria-live":"polite",children:l.Children.map(b,(f,w)=>e.jsx("div",{className:g({[`${c}__hidden`]:w!==p}),hidden:w!==p,children:f}))})})]})};B.Content=re;B.displayName="Stepper";exports.Stepper=B;
|
|
2
|
-
//# sourceMappingURL=stepper-B248FwO-.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stepper-B248FwO-.js","sources":["../../../components/stepper/src/constants.ts","../../../components/stepper/src/stepper-container.tsx","../../../components/stepper/src/stepper-content.tsx","../../../components/stepper/src/stepper-button.tsx","../../../components/stepper/src/stepper-nav-items.tsx","../../../components/stepper/src/use-content-focus.hook.ts","../../../components/stepper/src/use-scroll-buttons.hook.ts","../../../components/stepper/src/stepper.tsx"],"sourcesContent":["export const STEPPER_VARIANT = {\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\",\n} as const;\n\nexport const VISIBILITY_STATES = {\n SMALL_SCREEN: \"small-screen\",\n LARGE_SCREEN: \"large-screen\",\n ALWAYS: \"always\",\n} as const;\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-container.module.scss\";\nimport { type StepperVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type StepperContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n alignWithGrid: boolean;\n variant: StepperVariant;\n};\n\nconst rootClassName = \"purpur-stepper-container\";\n\nexport const StepperContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-stepper-container\",\n children,\n className,\n alignWithGrid,\n variant,\n ...props\n}: StepperContainerProps) => {\n const classes: string = cx(className, rootClassName, {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--align-with-grid`]: alignWithGrid,\n });\n\n return (\n <div className={classes} data-testid={dataTestId} {...props}>\n <div\n className={cx(`${rootClassName}__inner`, {\n [`${rootClassName}__inner--align-with-grid`]: alignWithGrid,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { type Optional, type Step } from \"./types\";\n\nexport type StepperContentProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n} & Optional<Step, \"disabled\" | \"finished\">;\n\nexport const StepperContent = forwardRef<HTMLDivElement, StepperContentProps>(\n ({ children, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { finished, ...rest } = props;\n return (\n <div {...rest} ref={ref}>\n {children}\n </div>\n );\n }\n);\n\nexport const isStepperContent = (child?: ReactNode): child is ReactElement<StepperContentProps> =>\n !!child && isValidElement<StepperContentProps>(child) && !!child.props.label;\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-button.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n type VisibilityStates,\n} from \"./types\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-stepper-button\";\n\nexport type StepNumberProps = {\n current: boolean;\n disabled: boolean;\n stepNumber: number;\n [\"data-testid\"]?: string;\n};\n\nconst StepNumber = ({\n [\"data-testid\"]: dataTestId,\n current,\n disabled,\n stepNumber,\n}: StepNumberProps) => {\n return (\n <div\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__step-number`,\n {\n [`${rootClassName}__step-number--current`]: current,\n },\n {\n [`${rootClassName}__step-number--disabled`]: disabled,\n },\n ])}\n >\n {stepNumber}\n </div>\n );\n};\n\nexport type StepperButtonProps = Omit<BaseProps<\"button\">, \"children\"> & {\n variant: StepperVariant;\n step: Step;\n currentStepIndex: number;\n index: number;\n indexOfLastItem: number;\n whenToBeVisible: VisibilityStates;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperButton = forwardRef<HTMLButtonElement, StepperButtonProps>(\n (\n {\n className,\n [\"data-testid\"]: dataTestId,\n variant,\n step,\n indexOfLastItem,\n index,\n currentStepIndex,\n whenToBeVisible,\n handleStepChange,\n handleStepFocus,\n completedStepLabel,\n ...props\n },\n ref\n ) => {\n const placement = index === 0 ? \"first\" : index === indexOfLastItem ? \"last\" : \"middle\";\n const isCurrentStep = index === currentStepIndex;\n return (\n <RovingFocusGroup.Item asChild>\n <Button\n {...props}\n ref={ref}\n className={cx(\n className,\n rootClassName,\n `${rootClassName}--${placement}`,\n `${rootClassName}--${variant}`,\n `${rootClassName}--visibility-${whenToBeVisible}`,\n {\n [`${rootClassName}--current`]: isCurrentStep,\n },\n {\n [`${rootClassName}--disabled`]: step.disabled,\n },\n {\n [\"arrow-tail\"]: placement !== \"first\",\n },\n {\n [\"arrow-forward\"]: placement !== \"last\",\n }\n )}\n id={`stepper-trigger-button-${index}`}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n data-testid={`${dataTestId}-step-trigger-item-${index}`}\n disabled={step.disabled}\n aria-current={isCurrentStep && \"step\"}\n onClick={(e) => handleStepChange(e, index)}\n onFocus={handleStepFocus}\n >\n <span className={cx(`${rootClassName}__trigger-outline`)}>\n {step.finished && !isCurrentStep ? (\n <IconCheckmark\n className={cx(`${rootClassName}__icon`)}\n data-testid={`${dataTestId}-step-finished-icon`}\n size=\"sm\"\n />\n ) : (\n <StepNumber\n data-testid={`${dataTestId}-step-number`}\n current={isCurrentStep}\n disabled={step.disabled}\n stepNumber={index + 1}\n />\n )}\n <span\n className={cx(`${rootClassName}__step-label`, {\n [`sr-only--lg-down`]: !isCurrentStep,\n })}\n >\n {step.finished && (\n <VisuallyHidden>{`${index + 1} ${completedStepLabel}`}</VisuallyHidden>\n )}\n {step.label}\n </span>\n </span>\n </Button>\n </RovingFocusGroup.Item>\n );\n }\n);\n","import React, { forwardRef, type RefObject } from \"react\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport { VISIBILITY_STATES } from \"./constants\";\nimport { StepperButton } from \"./stepper-button\";\nimport styles from \"./stepper-nav-items.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n} from \"./types\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper-nav-items\";\n\nexport type StepperNavItemsProps = {\n variant: StepperVariant;\n [\"data-testid\"]?: string;\n firstStepRef: RefObject<HTMLLIElement | null>;\n lastStepRef: RefObject<HTMLLIElement | null>;\n steps: Step[];\n currentStepIndex: number;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperNavItems = forwardRef<HTMLOListElement, StepperNavItemsProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n variant,\n handleStepChange,\n handleStepFocus,\n steps,\n firstStepRef,\n lastStepRef,\n currentStepIndex,\n completedStepLabel,\n },\n ref\n ) => {\n const stepListItems = steps.map((step: Step, index: number) => {\n const tooltipTriggerItem = step.disabled ? (\n <span className={cx(`${rootClassName}__tooltip-trigger-item-container`)}>\n <StepperButton\n data-testid={`${dataTestId}-disabled-sm`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.SMALL_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </span>\n ) : null;\n\n return (\n <li\n className={cx(`${rootClassName}__list-item`, {\n [`${rootClassName}__list-item--current`]: index === currentStepIndex,\n })}\n ref={index === 0 ? firstStepRef : index === steps.length - 1 ? lastStepRef : null}\n key={step.label}\n >\n {step.disabled ? (\n <>\n <Tooltip\n contentClassName={cx(`${rootClassName}__tooltip-content`)}\n triggerElement={tooltipTriggerItem}\n >\n {step.label}\n </Tooltip>\n <StepperButton\n data-testid={`${dataTestId}-disabled-lg`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.LARGE_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </>\n ) : (\n <StepperButton\n data-testid={dataTestId}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.ALWAYS}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n )}\n </li>\n );\n });\n return (\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <ol ref={ref} className={cx(`${rootClassName}__list`)}>\n {stepListItems}\n </ol>\n </RovingFocusGroup.Root>\n );\n }\n);\n","import { type RefObject, useEffect, useRef } from \"react\";\n\ninterface UseContentFocusHook<T extends HTMLElement> {\n contentRef: RefObject<T | null>;\n}\n\nexport const useContentFocus = <T extends HTMLElement>(\n currentStepIndex: number\n): UseContentFocusHook<T> => {\n const firstLoad = useRef<boolean>(true);\n const contentRef = useRef<T | null>(null);\n\n useEffect(() => {\n if (!firstLoad.current && contentRef.current !== null) {\n contentRef.current.focus();\n }\n firstLoad.current = false;\n }, [currentStepIndex]);\n\n return {\n contentRef,\n };\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nexport const SCROLL_DIRECTION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n} as const;\n\nexport type ScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\nexport type UseScrollHook<ContainerElement, WatchedElement> = {\n scrollContainer: RefObject<ContainerElement | null>;\n firstStepRef: RefObject<WatchedElement | null>;\n lastStepRef: RefObject<WatchedElement | null>;\n displayLeftScrollButton: boolean;\n displayRightScrollButton: boolean;\n handleHorizontalScroll: (dir: ScrollDirection) => void;\n};\n\nexport const useScrollButtons = <\n ContainerElement extends HTMLElement,\n WatchedElement extends HTMLElement\n>(): UseScrollHook<ContainerElement, WatchedElement> => {\n const scrollContainer = useRef<ContainerElement | null>(null);\n const firstStepRef = useRef<WatchedElement | null>(null);\n const lastStepRef = useRef<WatchedElement | null>(null);\n const [displayLeftScrollButton, setDisplayLeftScrollButton] = useState(false);\n const [displayRightScrollButton, setDisplayRightScrollButton] = useState(false);\n\n const handleHorizontalScroll = (dir: ScrollDirection): void => {\n if (!scrollContainer.current) {\n return;\n }\n const scrollableContainer = scrollContainer.current;\n const scrollableContainerWidth = scrollableContainer.clientWidth;\n const currentScrollLeft = scrollableContainer.scrollLeft;\n if (dir === SCROLL_DIRECTION.LEFT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft - scrollableContainerWidth / 2,\n });\n }\n if (dir === SCROLL_DIRECTION.RIGHT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft + scrollableContainerWidth / 2,\n });\n }\n };\n\n useEffect(() => {\n if (firstStepRef.current && lastStepRef.current && scrollContainer.current) {\n const observer: IntersectionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target === firstStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayLeftScrollButton(false);\n } else {\n setDisplayLeftScrollButton(true);\n }\n continue;\n }\n if (entry.target === lastStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayRightScrollButton(false);\n } else {\n setDisplayRightScrollButton(true);\n }\n }\n }\n },\n {\n root: scrollContainer.current,\n threshold: 0.95,\n }\n );\n\n observer.observe(firstStepRef.current);\n observer.observe(lastStepRef.current);\n\n return () => observer.disconnect();\n }\n return undefined;\n }, [firstStepRef, lastStepRef, scrollContainer]);\n\n return {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n };\n};\n","import React, { Children, type ReactElement } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconChevronRight } from \"@purpur/icon/chevron-right\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport * as ScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport { STEPPER_VARIANT } from \"./constants\";\nimport styles from \"./stepper.module.scss\";\nimport { StepperContainer } from \"./stepper-container\";\nimport { isStepperContent, StepperContent } from \"./stepper-content\";\nimport { StepperNavItems } from \"./stepper-nav-items\";\nimport { type Step, type StepChangeFunction, type StepperVariant } from \"./types\";\nimport { useContentFocus } from \"./use-content-focus.hook\";\nimport { SCROLL_DIRECTION, useScrollButtons } from \"./use-scroll-buttons.hook\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper\";\n\nexport type StepperProps = Omit<BaseProps, \"children\"> & {\n children: Array<ReactElement<typeof StepperContent>> | ReactElement<typeof StepperContent>;\n completedStepLabel: string;\n currentStepIndex: number;\n onStepChange: StepChangeFunction;\n alignWithGrid?: boolean;\n leftScrollButtonAriaLabel: string;\n rightScrollButtonAriaLabel: string;\n variant: StepperVariant;\n};\n\nexport type StepperComponent<P> = React.FunctionComponent<P> & {\n Content: typeof StepperContent;\n};\n\nexport const Stepper: StepperComponent<StepperProps> = ({\n [\"aria-label\"]: ariaLabel,\n [\"data-testid\"]: dataTestId,\n children,\n className,\n completedStepLabel,\n currentStepIndex = 0,\n onStepChange,\n alignWithGrid = false,\n leftScrollButtonAriaLabel,\n rightScrollButtonAriaLabel,\n variant = STEPPER_VARIANT.PRIMARY,\n ...props\n}: StepperProps) => {\n const stepperContentChildren = Children.toArray(children).filter(isStepperContent);\n const steps: Step[] = Children.map(stepperContentChildren, (child) => {\n const { disabled, finished, label } = child.props;\n return {\n disabled: disabled ?? false,\n finished: finished ?? false,\n label,\n };\n });\n const { contentRef } = useContentFocus<HTMLDivElement>(currentStepIndex);\n const {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n } = useScrollButtons<HTMLDivElement, HTMLLIElement>();\n\n const classes: string = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n },\n ]);\n const scrollTriggerIntoView = (e: React.FocusEvent | React.MouseEvent): void => {\n (e.target as HTMLButtonElement).scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const handleStepChange = (e: React.MouseEvent, idx: number): void => {\n e.preventDefault();\n scrollTriggerIntoView(e);\n onStepChange(idx);\n };\n\n const handleStepFocus = (e: React.FocusEvent): void => {\n scrollTriggerIntoView(e);\n };\n\n return (\n <div className={classes} {...props}>\n <StepperContainer variant={variant} alignWithGrid={alignWithGrid}>\n <div className={cx(`${rootClassName}__nav-container`)}>\n <ScrollArea.Root>\n <ScrollArea.Viewport ref={scrollContainer}>\n <div\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__nav`,\n {\n [`${rootClassName}__nav--${variant}`]: variant,\n },\n ])}\n >\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <StepperNavItems\n data-testid={dataTestId}\n variant={variant}\n firstStepRef={firstStepRef}\n lastStepRef={lastStepRef}\n steps={steps}\n currentStepIndex={currentStepIndex}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n completedStepLabel={completedStepLabel}\n />\n </RovingFocusGroup.Root>\n </div>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"horizontal\">\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {displayLeftScrollButton && (\n <Button\n aria-label={leftScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--left`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.LEFT);\n }}\n >\n <IconChevronLeft className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n {displayRightScrollButton && (\n <Button\n aria-label={rightScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--right`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.RIGHT);\n }}\n >\n <IconChevronRight className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n </div>\n </StepperContainer>\n <div\n tabIndex={-1}\n aria-labelledby={`stepper-trigger-button-${currentStepIndex}`}\n ref={contentRef}\n style={{ outline: \"none\" }}\n >\n <div aria-live=\"polite\">\n {Children.map(stepperContentChildren, (child, index: number) => (\n <div\n className={cx({\n [`${rootClassName}__hidden`]: index !== currentStepIndex,\n })}\n hidden={index !== currentStepIndex}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nStepper.Content = StepperContent;\n\nStepper.displayName = \"Stepper\";\n"],"names":["STEPPER_VARIANT","VISIBILITY_STATES","cx","c","styles","rootClassName","StepperContainer","dataTestId","children","className","alignWithGrid","variant","props","classes","jsx","StepperContent","forwardRef","ref","finished","rest","isStepperContent","child","isValidElement","StepNumber","current","disabled","stepNumber","StepperButton","step","indexOfLastItem","index","currentStepIndex","whenToBeVisible","handleStepChange","handleStepFocus","completedStepLabel","placement","isCurrentStep","RovingFocusGroup.Item","Button","BUTTON_VARIANT","e","IconCheckmark","jsxs","VisuallyHidden","StepperNavItems","steps","firstStepRef","lastStepRef","stepListItems","tooltipTriggerItem","Fragment","Tooltip","RovingFocusGroup.Root","useContentFocus","firstLoad","useRef","contentRef","useEffect","SCROLL_DIRECTION","useScrollButtons","scrollContainer","displayLeftScrollButton","setDisplayLeftScrollButton","useState","displayRightScrollButton","setDisplayRightScrollButton","handleHorizontalScroll","dir","scrollableContainer","scrollableContainerWidth","currentScrollLeft","observer","entries","entry","Stepper","ariaLabel","onStepChange","leftScrollButtonAriaLabel","rightScrollButtonAriaLabel","stepperContentChildren","Children","label","scrollTriggerIntoView","idx","ScrollArea.Root","ScrollArea.Viewport","ScrollArea.Scrollbar","ScrollArea.Thumb","IconChevronLeft","IconChevronRight"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stepper-BfIbJwZn.mjs","sources":["../../../components/stepper/src/constants.ts","../../../components/stepper/src/stepper-container.tsx","../../../components/stepper/src/stepper-content.tsx","../../../components/stepper/src/stepper-button.tsx","../../../components/stepper/src/stepper-nav-items.tsx","../../../components/stepper/src/use-content-focus.hook.ts","../../../components/stepper/src/use-scroll-buttons.hook.ts","../../../components/stepper/src/stepper.tsx"],"sourcesContent":["export const STEPPER_VARIANT = {\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\",\n} as const;\n\nexport const VISIBILITY_STATES = {\n SMALL_SCREEN: \"small-screen\",\n LARGE_SCREEN: \"large-screen\",\n ALWAYS: \"always\",\n} as const;\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-container.module.scss\";\nimport { type StepperVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type StepperContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n alignWithGrid: boolean;\n variant: StepperVariant;\n};\n\nconst rootClassName = \"purpur-stepper-container\";\n\nexport const StepperContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-stepper-container\",\n children,\n className,\n alignWithGrid,\n variant,\n ...props\n}: StepperContainerProps) => {\n const classes: string = cx(className, rootClassName, {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--align-with-grid`]: alignWithGrid,\n });\n\n return (\n <div className={classes} data-testid={dataTestId} {...props}>\n <div\n className={cx(`${rootClassName}__inner`, {\n [`${rootClassName}__inner--align-with-grid`]: alignWithGrid,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { type Optional, type Step } from \"./types\";\n\nexport type StepperContentProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n} & Optional<Step, \"disabled\" | \"finished\">;\n\nexport const StepperContent = forwardRef<HTMLDivElement, StepperContentProps>(\n ({ children, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { finished, ...rest } = props;\n return (\n <div {...rest} ref={ref}>\n {children}\n </div>\n );\n }\n);\n\nexport const isStepperContent = (child?: ReactNode): child is ReactElement<StepperContentProps> =>\n !!child && isValidElement<StepperContentProps>(child) && !!child.props.label;\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-button.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n type VisibilityStates,\n} from \"./types\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-stepper-button\";\n\nexport type StepNumberProps = {\n current: boolean;\n disabled: boolean;\n stepNumber: number;\n [\"data-testid\"]?: string;\n};\n\nconst StepNumber = ({\n [\"data-testid\"]: dataTestId,\n current,\n disabled,\n stepNumber,\n}: StepNumberProps) => {\n return (\n <div\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__step-number`,\n {\n [`${rootClassName}__step-number--current`]: current,\n },\n {\n [`${rootClassName}__step-number--disabled`]: disabled,\n },\n ])}\n >\n {stepNumber}\n </div>\n );\n};\n\nexport type StepperButtonProps = Omit<BaseProps<\"button\">, \"children\"> & {\n variant: StepperVariant;\n step: Step;\n currentStepIndex: number;\n index: number;\n indexOfLastItem: number;\n whenToBeVisible: VisibilityStates;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperButton = forwardRef<HTMLButtonElement, StepperButtonProps>(\n (\n {\n className,\n [\"data-testid\"]: dataTestId,\n variant,\n step,\n indexOfLastItem,\n index,\n currentStepIndex,\n whenToBeVisible,\n handleStepChange,\n handleStepFocus,\n completedStepLabel,\n ...props\n },\n ref\n ) => {\n const placement = index === 0 ? \"first\" : index === indexOfLastItem ? \"last\" : \"middle\";\n const isCurrentStep = index === currentStepIndex;\n return (\n <RovingFocusGroup.Item asChild>\n <Button\n {...props}\n ref={ref}\n className={cx(\n className,\n rootClassName,\n `${rootClassName}--${placement}`,\n `${rootClassName}--${variant}`,\n `${rootClassName}--visibility-${whenToBeVisible}`,\n {\n [`${rootClassName}--current`]: isCurrentStep,\n },\n {\n [`${rootClassName}--disabled`]: step.disabled,\n },\n {\n [\"arrow-tail\"]: placement !== \"first\",\n },\n {\n [\"arrow-forward\"]: placement !== \"last\",\n }\n )}\n id={`stepper-trigger-button-${index}`}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n data-testid={`${dataTestId}-step-trigger-item-${index}`}\n disabled={step.disabled}\n aria-current={isCurrentStep && \"step\"}\n onClick={(e) => handleStepChange(e, index)}\n onFocus={handleStepFocus}\n >\n <span className={cx(`${rootClassName}__trigger-outline`)}>\n {step.finished && !isCurrentStep ? (\n <IconCheckmark\n className={cx(`${rootClassName}__icon`)}\n data-testid={`${dataTestId}-step-finished-icon`}\n size=\"sm\"\n />\n ) : (\n <StepNumber\n data-testid={`${dataTestId}-step-number`}\n current={isCurrentStep}\n disabled={step.disabled}\n stepNumber={index + 1}\n />\n )}\n <span\n className={cx(`${rootClassName}__step-label`, {\n [`sr-only--lg-down`]: !isCurrentStep,\n })}\n >\n {step.finished && (\n <VisuallyHidden>{`${index + 1} ${completedStepLabel}`}</VisuallyHidden>\n )}\n {step.label}\n </span>\n </span>\n </Button>\n </RovingFocusGroup.Item>\n );\n }\n);\n","import React, { forwardRef, type RefObject } from \"react\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport { VISIBILITY_STATES } from \"./constants\";\nimport { StepperButton } from \"./stepper-button\";\nimport styles from \"./stepper-nav-items.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n} from \"./types\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper-nav-items\";\n\nexport type StepperNavItemsProps = {\n variant: StepperVariant;\n [\"data-testid\"]?: string;\n firstStepRef: RefObject<HTMLLIElement | null>;\n lastStepRef: RefObject<HTMLLIElement | null>;\n steps: Step[];\n currentStepIndex: number;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperNavItems = forwardRef<HTMLOListElement, StepperNavItemsProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n variant,\n handleStepChange,\n handleStepFocus,\n steps,\n firstStepRef,\n lastStepRef,\n currentStepIndex,\n completedStepLabel,\n },\n ref\n ) => {\n const stepListItems = steps.map((step: Step, index: number) => {\n const tooltipTriggerItem = step.disabled ? (\n <span className={cx(`${rootClassName}__tooltip-trigger-item-container`)}>\n <StepperButton\n data-testid={`${dataTestId}-disabled-sm`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.SMALL_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </span>\n ) : null;\n\n return (\n <li\n className={cx(`${rootClassName}__list-item`, {\n [`${rootClassName}__list-item--current`]: index === currentStepIndex,\n })}\n ref={index === 0 ? firstStepRef : index === steps.length - 1 ? lastStepRef : null}\n key={step.label}\n >\n {step.disabled ? (\n <>\n <Tooltip\n contentClassName={cx(`${rootClassName}__tooltip-content`)}\n triggerElement={tooltipTriggerItem}\n >\n {step.label}\n </Tooltip>\n <StepperButton\n data-testid={`${dataTestId}-disabled-lg`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.LARGE_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </>\n ) : (\n <StepperButton\n data-testid={dataTestId}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.ALWAYS}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n )}\n </li>\n );\n });\n return (\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <ol ref={ref} className={cx(`${rootClassName}__list`)}>\n {stepListItems}\n </ol>\n </RovingFocusGroup.Root>\n );\n }\n);\n","import { type RefObject, useEffect, useRef } from \"react\";\n\ninterface UseContentFocusHook<T extends HTMLElement> {\n contentRef: RefObject<T | null>;\n}\n\nexport const useContentFocus = <T extends HTMLElement>(\n currentStepIndex: number\n): UseContentFocusHook<T> => {\n const firstLoad = useRef<boolean>(true);\n const contentRef = useRef<T | null>(null);\n\n useEffect(() => {\n if (!firstLoad.current && contentRef.current !== null) {\n contentRef.current.focus();\n }\n firstLoad.current = false;\n }, [currentStepIndex]);\n\n return {\n contentRef,\n };\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nexport const SCROLL_DIRECTION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n} as const;\n\nexport type ScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\nexport type UseScrollHook<ContainerElement, WatchedElement> = {\n scrollContainer: RefObject<ContainerElement | null>;\n firstStepRef: RefObject<WatchedElement | null>;\n lastStepRef: RefObject<WatchedElement | null>;\n displayLeftScrollButton: boolean;\n displayRightScrollButton: boolean;\n handleHorizontalScroll: (dir: ScrollDirection) => void;\n};\n\nexport const useScrollButtons = <\n ContainerElement extends HTMLElement,\n WatchedElement extends HTMLElement\n>(): UseScrollHook<ContainerElement, WatchedElement> => {\n const scrollContainer = useRef<ContainerElement | null>(null);\n const firstStepRef = useRef<WatchedElement | null>(null);\n const lastStepRef = useRef<WatchedElement | null>(null);\n const [displayLeftScrollButton, setDisplayLeftScrollButton] = useState(false);\n const [displayRightScrollButton, setDisplayRightScrollButton] = useState(false);\n\n const handleHorizontalScroll = (dir: ScrollDirection): void => {\n if (!scrollContainer.current) {\n return;\n }\n const scrollableContainer = scrollContainer.current;\n const scrollableContainerWidth = scrollableContainer.clientWidth;\n const currentScrollLeft = scrollableContainer.scrollLeft;\n if (dir === SCROLL_DIRECTION.LEFT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft - scrollableContainerWidth / 2,\n });\n }\n if (dir === SCROLL_DIRECTION.RIGHT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft + scrollableContainerWidth / 2,\n });\n }\n };\n\n useEffect(() => {\n if (firstStepRef.current && lastStepRef.current && scrollContainer.current) {\n const observer: IntersectionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target === firstStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayLeftScrollButton(false);\n } else {\n setDisplayLeftScrollButton(true);\n }\n continue;\n }\n if (entry.target === lastStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayRightScrollButton(false);\n } else {\n setDisplayRightScrollButton(true);\n }\n }\n }\n },\n {\n root: scrollContainer.current,\n threshold: 0.95,\n }\n );\n\n observer.observe(firstStepRef.current);\n observer.observe(lastStepRef.current);\n\n return () => observer.disconnect();\n }\n return undefined;\n }, [firstStepRef, lastStepRef, scrollContainer]);\n\n return {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n };\n};\n","import React, { Children, type ReactElement } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconChevronRight } from \"@purpur/icon/chevron-right\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport * as ScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport { STEPPER_VARIANT } from \"./constants\";\nimport styles from \"./stepper.module.scss\";\nimport { StepperContainer } from \"./stepper-container\";\nimport { isStepperContent, StepperContent } from \"./stepper-content\";\nimport { StepperNavItems } from \"./stepper-nav-items\";\nimport { type Step, type StepChangeFunction, type StepperVariant } from \"./types\";\nimport { useContentFocus } from \"./use-content-focus.hook\";\nimport { SCROLL_DIRECTION, useScrollButtons } from \"./use-scroll-buttons.hook\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper\";\n\nexport type StepperProps = Omit<BaseProps, \"children\"> & {\n children: Array<ReactElement<typeof StepperContent>> | ReactElement<typeof StepperContent>;\n completedStepLabel: string;\n currentStepIndex: number;\n onStepChange: StepChangeFunction;\n alignWithGrid?: boolean;\n leftScrollButtonAriaLabel: string;\n rightScrollButtonAriaLabel: string;\n variant: StepperVariant;\n};\n\nexport type StepperComponent<P> = React.FunctionComponent<P> & {\n Content: typeof StepperContent;\n};\n\nexport const Stepper: StepperComponent<StepperProps> = ({\n [\"aria-label\"]: ariaLabel,\n [\"data-testid\"]: dataTestId,\n children,\n className,\n completedStepLabel,\n currentStepIndex = 0,\n onStepChange,\n alignWithGrid = false,\n leftScrollButtonAriaLabel,\n rightScrollButtonAriaLabel,\n variant = STEPPER_VARIANT.PRIMARY,\n ...props\n}: StepperProps) => {\n const stepperContentChildren = Children.toArray(children).filter(isStepperContent);\n const steps: Step[] = Children.map(stepperContentChildren, (child) => {\n const { disabled, finished, label } = child.props;\n return {\n disabled: disabled ?? false,\n finished: finished ?? false,\n label,\n };\n });\n const { contentRef } = useContentFocus<HTMLDivElement>(currentStepIndex);\n const {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n } = useScrollButtons<HTMLDivElement, HTMLLIElement>();\n\n const classes: string = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n },\n ]);\n const scrollTriggerIntoView = (e: React.FocusEvent | React.MouseEvent): void => {\n (e.target as HTMLButtonElement).scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const handleStepChange = (e: React.MouseEvent, idx: number): void => {\n e.preventDefault();\n scrollTriggerIntoView(e);\n onStepChange(idx);\n };\n\n const handleStepFocus = (e: React.FocusEvent): void => {\n scrollTriggerIntoView(e);\n };\n\n return (\n <div className={classes} {...props}>\n <StepperContainer variant={variant} alignWithGrid={alignWithGrid}>\n <div className={cx(`${rootClassName}__nav-container`)}>\n <ScrollArea.Root>\n <ScrollArea.Viewport ref={scrollContainer}>\n <div\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__nav`,\n {\n [`${rootClassName}__nav--${variant}`]: variant,\n },\n ])}\n >\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <StepperNavItems\n data-testid={dataTestId}\n variant={variant}\n firstStepRef={firstStepRef}\n lastStepRef={lastStepRef}\n steps={steps}\n currentStepIndex={currentStepIndex}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n completedStepLabel={completedStepLabel}\n />\n </RovingFocusGroup.Root>\n </div>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"horizontal\">\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {displayLeftScrollButton && (\n <Button\n aria-label={leftScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--left`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.LEFT);\n }}\n >\n <IconChevronLeft className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n {displayRightScrollButton && (\n <Button\n aria-label={rightScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--right`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.RIGHT);\n }}\n >\n <IconChevronRight className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n </div>\n </StepperContainer>\n <div\n tabIndex={-1}\n aria-labelledby={`stepper-trigger-button-${currentStepIndex}`}\n ref={contentRef}\n style={{ outline: \"none\" }}\n >\n <div aria-live=\"polite\">\n {Children.map(stepperContentChildren, (child, index: number) => (\n <div\n className={cx({\n [`${rootClassName}__hidden`]: index !== currentStepIndex,\n })}\n hidden={index !== currentStepIndex}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nStepper.Content = StepperContent;\n\nStepper.displayName = \"Stepper\";\n"],"names":["STEPPER_VARIANT","VISIBILITY_STATES","cx","c","styles","rootClassName","StepperContainer","dataTestId","children","className","alignWithGrid","variant","props","classes","jsx","StepperContent","forwardRef","ref","finished","rest","isStepperContent","child","isValidElement","StepNumber","current","disabled","stepNumber","StepperButton","step","indexOfLastItem","index","currentStepIndex","whenToBeVisible","handleStepChange","handleStepFocus","completedStepLabel","placement","isCurrentStep","RovingFocusGroup.Item","Button","BUTTON_VARIANT","e","IconCheckmark","jsxs","VisuallyHidden","StepperNavItems","steps","firstStepRef","lastStepRef","stepListItems","tooltipTriggerItem","Fragment","Tooltip","RovingFocusGroup.Root","useContentFocus","firstLoad","useRef","contentRef","useEffect","SCROLL_DIRECTION","useScrollButtons","scrollContainer","displayLeftScrollButton","setDisplayLeftScrollButton","useState","displayRightScrollButton","setDisplayRightScrollButton","handleHorizontalScroll","dir","scrollableContainer","scrollableContainerWidth","currentScrollLeft","observer","entries","entry","Stepper","ariaLabel","onStepChange","leftScrollButtonAriaLabel","rightScrollButtonAriaLabel","stepperContentChildren","Children","label","scrollTriggerIntoView","idx","ScrollArea.Root","ScrollArea.Viewport","ScrollArea.Scrollbar","ScrollArea.Thumb","IconChevronLeft","IconChevronRight"],"mappings":"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"}
|
package/dist/tabs-CfHd4UQ2.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const c=require("react/jsx-runtime"),u=require("react"),_e=require("./icon.es-j3eRib6d.js"),x=require("./index-DlMXYAr3.js"),be=require("./index-kcwFA4Dv.js"),I=require("./index-BVmlsxuF.js"),fe=require("./index-CleLBinl.js"),ve=require("./index-Cje7xxa1.js"),ge=require("./index-BtWPC8xc.js"),L=require("./bind-DeUYJ6m9.js");function he(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const n=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(r,a,n.get?n:{enumerable:!0,get:()=>e[a]})}}return r.default=e,Object.freeze(r)}const T=he(u),me={name:"chevron-left",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M16.175 3.905a.9.9 0 0 1-.08 1.27L8.36 12l7.736 6.825a.9.9 0 0 1-1.191 1.35l-8.5-7.5a.9.9 0 0 1 0-1.35l8.5-7.5a.9.9 0 0 1 1.27.08Z" clip-rule="evenodd"/></svg>',keywords:["chevron-left"],category:"utility"},we={name:"chevron-right",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M7.809 3.924a.9.9 0 0 0 .115 1.267L16.094 12l-8.17 6.809a.9.9 0 0 0 1.152 1.382l9-7.5a.9.9 0 0 0 0-1.382l-9-7.5a.9.9 0 0 0-1.267.115Z" clip-rule="evenodd"/></svg>',keywords:["chevron-right"],category:"utility"};var S="Tabs",[xe]=be.createContextScope(S,[I.createRovingFocusGroupScope]),k=I.createRovingFocusGroupScope(),[Ce,D]=xe(S),G=T.forwardRef((e,r)=>{const{__scopeTabs:a,value:n,onValueChange:i,defaultValue:d,orientation:o="horizontal",dir:s,activationMode:f="automatic",...v}=e,_=ve.useDirection(s),[p,g]=x.useControllableState({prop:n,onChange:i,defaultProp:d??"",caller:S});return c.jsx(Ce,{scope:a,baseId:ge.useId(),value:p,onValueChange:g,orientation:o,dir:_,activationMode:f,children:c.jsx(x.Primitive.div,{dir:_,"data-orientation":o,...v,ref:r})})});G.displayName=S;var H="TabsList",W=T.forwardRef((e,r)=>{const{__scopeTabs:a,loop:n=!0,...i}=e,d=D(H,a),o=k(a);return c.jsx(I.Root,{asChild:!0,...o,orientation:d.orientation,dir:d.dir,loop:n,children:c.jsx(x.Primitive.div,{role:"tablist","aria-orientation":d.orientation,...i,ref:r})})});W.displayName=H;var K="TabsTrigger",Z=T.forwardRef((e,r)=>{const{__scopeTabs:a,value:n,disabled:i=!1,...d}=e,o=D(K,a),s=k(a),f=Q(o.baseId,n),v=U(o.baseId,n),_=n===o.value;return c.jsx(I.Item,{asChild:!0,...s,focusable:!i,active:_,children:c.jsx(x.Primitive.button,{type:"button",role:"tab","aria-selected":_,"aria-controls":v,"data-state":_?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:f,...d,ref:r,onMouseDown:x.composeEventHandlers(e.onMouseDown,p=>{!i&&p.button===0&&p.ctrlKey===!1?o.onValueChange(n):p.preventDefault()}),onKeyDown:x.composeEventHandlers(e.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&o.onValueChange(n)}),onFocus:x.composeEventHandlers(e.onFocus,()=>{const p=o.activationMode!=="manual";!_&&!i&&p&&o.onValueChange(n)})})})});Z.displayName=K;var X="TabsContent",J=T.forwardRef((e,r)=>{const{__scopeTabs:a,value:n,forceMount:i,children:d,...o}=e,s=D(X,a),f=Q(s.baseId,n),v=U(s.baseId,n),_=n===s.value,p=T.useRef(_);return T.useEffect(()=>{const g=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(g)},[]),c.jsx(fe.Presence,{present:i||_,children:({present:g})=>c.jsx(x.Primitive.div,{"data-state":_?"active":"inactive","data-orientation":s.orientation,role:"tabpanel","aria-labelledby":f,hidden:!g,id:v,tabIndex:0,...o,ref:r,style:{...e.style,animationDuration:p.current?"0s":void 0},children:g&&d})})});J.displayName=X;function Q(e,r){return`${e}-trigger-${r}`}function U(e,r){return`${e}-content-${r}`}var je=G,Te=W,$e=Z,ye=J;const Ie={"purpur-tab-content":"_purpur-tab-content_1ugbi_1","purpur-tab-content--force-mount":"_purpur-tab-content--force-mount_1ugbi_15"},Se=L.c.bind(Ie),O="purpur-tab-content",Re=u.forwardRef(({children:e,tabId:r,"data-testid":a,className:n,disableForceMount:i,...d},o)=>c.jsx(ye,{ref:o,className:Se(O,n,{[`${O}--force-mount`]:!i}),"data-testid":a,value:r,forceMount:!i||void 0,...d,children:e})),Ee=e=>!!e&&u.isValidElement(e)&&!!e.props.name&&!!e.props.tabId,Ne={"purpur-tab-header":"_purpur-tab-header_1tc2s_1","purpur-tab-header--contained":"_purpur-tab-header--contained_1tc2s_36","purpur-tab-header--contained-negative":"_purpur-tab-header--contained-negative_1tc2s_36","purpur-tab-header--line":"_purpur-tab-header--line_1tc2s_39","purpur-tab-header--line-negative":"_purpur-tab-header--line-negative_1tc2s_51","purpur-tab-header--full-width":"_purpur-tab-header--full-width_1tc2s_100"},Ae=L.c.bind(Ne),P="purpur-tab-header",Pe=u.forwardRef(({index:e,tabId:r,variant:a,negative:n,onFocus:i,fullWidth:d,"data-testid":o,children:s},f)=>c.jsx($e,{id:`${r}-trigger`,className:Ae(P,`${P}--${a}${n?"-negative":""}`,{[`${P}--full-width`]:d}),value:r,"data-testid":o,"data-index":e,ref:f,onFocus:i,children:s})),Le={"purpur-tabs__wrapper":"_purpur-tabs__wrapper_jv2vl_1","purpur-tabs__scroll-button":"_purpur-tabs__scroll-button_jv2vl_9","purpur-tabs__scroll-button--left":"_purpur-tabs__scroll-button--left_jv2vl_71","purpur-tabs__scroll-button--right":"_purpur-tabs__scroll-button--right_jv2vl_74","purpur-tabs__wrapper--scroll-start":"_purpur-tabs__wrapper--scroll-start_jv2vl_77","purpur-tabs__wrapper--scroll-end":"_purpur-tabs__wrapper--scroll-end_jv2vl_80","purpur-tabs--line":"_purpur-tabs--line_jv2vl_83","purpur-tabs--line-negative":"_purpur-tabs--line-negative_jv2vl_83","purpur-tabs__selected-border":"_purpur-tabs__selected-border_jv2vl_91","purpur-tabs__content-wrapper":"_purpur-tabs__content-wrapper_jv2vl_115","purpur-tabs--contained":"_purpur-tabs--contained_jv2vl_123","purpur-tabs__list":"_purpur-tabs__list_jv2vl_123","purpur-tabs--contained-negative":"_purpur-tabs--contained-negative_jv2vl_123","purpur-tabs__content-container":"_purpur-tabs__content-container_jv2vl_126","purpur-tabs--full-width":"_purpur-tabs--full-width_jv2vl_136"},De=["line","contained"],Y=e=>new CustomEvent("tabChangeDetail",{detail:{value:e}}),w=L.c.bind(Le),b="purpur-tabs",Me=(e,r)=>{if(typeof e?.getBoundingClientRect!="function"||typeof r?.scroll!="function")return;const a=e.getBoundingClientRect(),n=r.getBoundingClientRect(),i=r.clientWidth,d=parseInt(getComputedStyle(r).borderLeftWidth?.split("px")[0],10),o=n.left+(isNaN(d)?0:d);let s;a.right>n.right&&(s=a.left+r.scrollLeft,s=s+a.width-i+i*.1,s=s-o),a.left<n.left&&(s=a.left+r.scrollLeft,s=s-i*.1,s=s-o),s!==void 0&&r.scroll({left:s,behavior:"smooth"})},ee=({children:e,variant:r="line",negative:a=!1,fullWidth:n=!1,onChange:i,className:d,defaultValue:o,animateHeight:s=!1,"data-testid":f,value:v,..._})=>{const p=u.useRef(null),[g,te]=u.useState(-1),[re,M]=u.useState({}),[ne,se]=u.useState(0),[ae,oe]=u.useState(0),h=u.Children.toArray(e).filter(Ee),C=u.useRef(null),q=u.useRef(new Array(h.length)),V=200,R=r==="line",ie=w(b,`${b}--${r}${a?"-negative":""}`,{[`${b}--full-width`]:n},d),E=u.Children.map(h,({props:{tabId:t}})=>t),ce=()=>{const t=E.findIndex(l=>l===o);return t>=0?t:0};u.useEffect(()=>{v&&z(h.findIndex(t=>t.props.tabId===v))},[h,v]);const[N,z]=u.useState(ce);if(new Set(E).size!==E.length)throw new Error("tabId must be unique");const A=(t,l)=>l||f?`${l||f}-${t}`:void 0,B=()=>{if(!R)return;const t=q.current[N];se(t?.offsetLeft||0),oe(t?.getBoundingClientRect().width||0)},le=t=>{R&&!v&&z(h.findIndex(l=>l.props.tabId===t)),i?.(Y(t))},ue=t=>{if(C?.current){const{scrollLeft:l}=C.current,m=t==="left"?-V:V;C.current.scroll({left:l+m,behavior:"smooth"})}},F=({side:t})=>c.jsx("button",{className:w(`${b}__scroll-button`,`${b}__scroll-button--${t}`),onClick:()=>ue(t),type:"button","aria-hidden":"true",tabIndex:-1,"data-testid":A("scroll-button"),children:c.jsx(_e.b,{svg:t==="left"?me:we,size:"md"})});return u.useEffect(()=>{const t=()=>{if(p.current&&s){const m=p.current.offsetHeight;te(m)}},l=()=>{t(),B()};return t(),window.addEventListener("resize",l),()=>{window.removeEventListener("resize",l)}},[N,s]),u.useEffect(()=>{B()},[N,n,h.length,r]),u.useEffect(()=>{const t=C.current;if(!t)return;const l=()=>{const{scrollLeft:m,scrollWidth:$,clientWidth:y}=t,j=$>y,de=m<=1,pe=m+y>=$-1;if(!j){M({});return}M({[`${b}__wrapper--scroll-start`]:!de,[`${b}__wrapper--scroll-end`]:!pe})};return l(),t.addEventListener("scroll",l,{passive:!0}),window.addEventListener("resize",l),()=>{t.removeEventListener("scroll",l),window.removeEventListener("resize",l)}},[]),c.jsx(je,{defaultValue:o??h[0].props.tabId,onValueChange:le,"data-testid":f,className:ie,value:v,..._,children:c.jsxs("div",{className:w(`${b}__container`),children:[c.jsxs("div",{className:w(`${b}__wrapper`,re),children:[c.jsxs(Te,{ref:t=>{C.current=t},className:w(`${b}__list`),children:[u.Children.map(h,(t,l)=>{const{name:m,tabId:$,"data-testid":y}=t.props;return c.jsx(Pe,{"data-testid":A("header",y),index:l,tabId:$,ref:j=>{j&&(q.current[l]=j)},onFocus:j=>{Me(j.target,C.current)},variant:r,negative:a,fullWidth:n,children:m})}),R&&c.jsx("div",{className:w(`${b}__selected-border`),style:{width:ae,transform:`translateX(${ne}px)`},"data-testid":A("selected-border")})]}),c.jsx(F,{side:"left"}),c.jsx(F,{side:"right"})]}),c.jsx("div",{className:s?w(`${b}__content-wrapper`):"",style:{height:s&&g>-1?`${g}px`:"auto"},children:c.jsx("div",{ref:p,className:w(`${b}__content-container`),children:u.Children.map(h,t=>t)})})]})})};ee.Content=Re;exports.Tabs=ee;exports.createTabChangeDetailEvent=Y;exports.tabsVariants=De;
|
|
2
|
-
//# sourceMappingURL=tabs-CfHd4UQ2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-CfHd4UQ2.js","sources":["../../../components/icon/dist/assets/chevron-left.es.js","../../../components/icon/dist/assets/chevron-right.es.js","../../../common/temp/node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_2ad0945e3cb98dc5bbfaaf29c105e977/node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../components/tabs/src/tab-content.tsx","../../../components/tabs/src/tab-header.tsx","../../../components/tabs/src/tabs.utils.ts","../../../components/tabs/src/tabs.tsx"],"sourcesContent":["const e = {\n name: \"chevron-left\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M16.175 3.905a.9.9 0 0 1-.08 1.27L8.36 12l7.736 6.825a.9.9 0 0 1-1.191 1.35l-8.5-7.5a.9.9 0 0 1 0-1.35l8.5-7.5a.9.9 0 0 1 1.27.08Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"chevron-left\"],\n category: \"utility\"\n};\nexport {\n e as chevronLeft\n};\n//# sourceMappingURL=chevron-left.es.js.map\n","const e = {\n name: \"chevron-right\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M7.809 3.924a.9.9 0 0 0 .115 1.267L16.094 12l-8.17 6.809a.9.9 0 0 0 1.152 1.382l9-7.5a.9.9 0 0 0 0-1.382l-9-7.5a.9.9 0 0 0-1.267.115Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"chevron-right\"],\n category: \"utility\"\n};\nexport {\n e as chevronRight\n};\n//# sourceMappingURL=chevron-right.es.js.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Content } from \"@radix-ui/react-tabs\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./tab-content.module.scss\";\n\nexport type TabContentProps = Omit<BaseProps, \"children\"> & {\n /**\n * Content to be rendered inside a `button` element.\n * Only pass ReactNodes that are valid as children of a `button`, such as plain text,\n * inline elements like `span` or other non-interactive elements. Avoid block-level or interactive elements.\n */\n name: ReactNode;\n /**\n * A unique ID that associates the tab with a content.\n * */\n tabId: string;\n /**\n * If true, the inactive tab content will not be rendered.\n */\n disableForceMount?: boolean;\n children: ReactNode;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-tab-content\";\n\nexport const TabContent = forwardRef<HTMLDivElement, TabContentProps>(\n ({ children, tabId, \"data-testid\": dataTestId, className, disableForceMount, ...props }, ref) => (\n <Content\n ref={ref}\n className={cx(rootClassName, className, {\n [`${rootClassName}--force-mount`]: !disableForceMount,\n })}\n data-testid={dataTestId}\n value={tabId}\n forceMount={!disableForceMount || undefined}\n {...props}\n >\n {children}\n </Content>\n )\n);\n\nexport const isTabContent = (child?: ReactNode): child is ReactElement<TabContentProps> =>\n !!child && isValidElement<TabContentProps>(child) && !!child.props.name && !!child.props.tabId;\n","import React, {\n type FocusEventHandler,\n type ForwardedRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { Trigger } from \"@radix-ui/react-tabs\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./tab-header.module.scss\";\nimport { type TabsVariant } from \"./tabs.utils\";\n\ntype TabHeaderProps = {\n \"data-testid\"?: string;\n index: number;\n tabId: string;\n variant: TabsVariant;\n negative?: boolean;\n onFocus: FocusEventHandler<HTMLButtonElement>;\n fullWidth?: boolean;\n children: ReactNode;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-tab-header\";\n\nexport const TabHeader = forwardRef(\n <T extends HTMLButtonElement>(\n {\n index,\n tabId,\n variant,\n negative,\n onFocus,\n fullWidth,\n \"data-testid\": dataTestId,\n children,\n }: TabHeaderProps,\n ref: ForwardedRef<T>\n ) => (\n <Trigger\n id={`${tabId}-trigger`}\n className={cx(rootClassName, `${rootClassName}--${variant}${negative ? \"-negative\" : \"\"}`, {\n [`${rootClassName}--full-width`]: fullWidth,\n })}\n value={tabId}\n data-testid={dataTestId}\n data-index={index}\n ref={ref}\n onFocus={onFocus}\n >\n {children}\n </Trigger>\n )\n);\n","import type { FunctionComponent } from \"react\";\n\nimport type { TabContent } from \"./tab-content\";\n\nexport type TabsCmp<P> = FunctionComponent<P> & {\n Content: typeof TabContent;\n};\n\nexport const tabsVariants = [\"line\", \"contained\"] as const;\n\nexport type TabsVariant = (typeof tabsVariants)[number];\n\nexport const createTabChangeDetailEvent = (value: string) =>\n new CustomEvent<TabChangeDetail>(\"tabChangeDetail\", { detail: { value } });\n\nexport type TabChangeDetail = { value: string };\n","import React, {\n Children,\n type HTMLAttributes,\n type ReactElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Icon } from \"@purpur/icon\";\nimport { chevronLeft } from \"@purpur/icon/assets/chevron-left\";\nimport { chevronRight } from \"@purpur/icon/assets/chevron-right\";\nimport { List, Root } from \"@radix-ui/react-tabs\";\nimport c from \"classnames/bind\";\n\nimport { isTabContent, TabContent } from \"./tab-content\";\nimport { TabHeader } from \"./tab-header\";\nimport styles from \"./tabs.module.scss\";\nimport {\n createTabChangeDetailEvent,\n type TabChangeDetail,\n type TabsCmp,\n type TabsVariant,\n} from \"./tabs.utils\";\n\ntype TabsProps = {\n children: Array<ReactElement<typeof TabContent>> | ReactElement<typeof TabContent>;\n variant?: TabsVariant;\n negative?: boolean;\n fullWidth?: boolean;\n /**\n * The controlled value of the tabs. Must be used in conjunction with onChange.\n */\n value?: string;\n /**\n * Event handler called when the value changes.\n * */\n onChange?: (event: CustomEvent<TabChangeDetail>) => void;\n defaultValue?: string;\n /**\n * When true, animates the height of the component when switching tabs.\n * */\n animateHeight?: boolean;\n \"data-testid\"?: string;\n} & Pick<HTMLAttributes<HTMLDivElement>, \"style\" | \"className\">;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-tabs\";\n\nconst scrollToTarget = (target: HTMLElement, tabList?: HTMLDivElement | null) => {\n /**\n * scroll may not be available in test runner, so check existence before\n * proceeding. We can't use scrollIntoView() because Safari doesn't support\n * it fully.\n */\n if (\n typeof target?.getBoundingClientRect !== \"function\" ||\n typeof tabList?.scroll !== \"function\"\n ) {\n return;\n }\n\n const targetRect = target.getBoundingClientRect();\n const wrapperRect = tabList.getBoundingClientRect();\n const wrapperWidth = tabList.clientWidth;\n const wrapperOffset = parseInt(getComputedStyle(tabList).borderLeftWidth?.split(\"px\")[0], 10);\n const offset = wrapperRect.left + (isNaN(wrapperOffset) ? 0 : wrapperOffset);\n let left;\n\n // Handle forward navigation\n if (targetRect.right > wrapperRect.right) {\n left = targetRect.left + tabList.scrollLeft;\n left = left + targetRect.width - wrapperWidth + wrapperWidth * 0.1;\n left = left - offset;\n }\n\n // Handle backwards navigation\n if (targetRect.left < wrapperRect.left) {\n left = targetRect.left + tabList.scrollLeft;\n left = left - wrapperWidth * 0.1;\n left = left - offset;\n }\n\n if (left !== undefined) {\n tabList.scroll({ left, behavior: \"smooth\" });\n }\n};\n\nexport const Tabs: TabsCmp<TabsProps> = ({\n children,\n variant = \"line\",\n negative = false,\n fullWidth = false,\n onChange,\n className,\n defaultValue,\n animateHeight = false,\n \"data-testid\": dataTestId,\n value,\n ...props\n}) => {\n const contentRef = useRef<HTMLDivElement | null>(null);\n const [height, setHeight] = useState(-1);\n const [scrollClasses, setScrollClasses] = useState<{ [key: string]: boolean }>({});\n const [selectedTriggerOffset, setSelectedTriggerOffset] = useState(0);\n const [selectedTriggerWidth, setSelectedTriggerWidth] = useState(0);\n const tabContentChildren = Children.toArray(children).filter(isTabContent);\n const tabList = useRef<HTMLDivElement>(null);\n const tabChildren = useRef<HTMLButtonElement[]>(new Array(tabContentChildren.length));\n const sideScrollAdjustmentSize = 200;\n const isLineVariant = variant === \"line\";\n\n const classNames = cx(\n rootClassName,\n `${rootClassName}--${variant}${negative ? \"-negative\" : \"\"}`,\n { [`${rootClassName}--full-width`]: fullWidth },\n className\n );\n\n const tabIds = Children.map(tabContentChildren, ({ props: { tabId } }) => tabId);\n\n const getDefaultTabIndex = () => {\n const defaultIndex = tabIds.findIndex((tabIndex) => tabIndex === defaultValue);\n return defaultIndex >= 0 ? defaultIndex : 0;\n };\n\n useEffect(() => {\n if (value) {\n setActiveIndex(tabContentChildren.findIndex((child) => child.props.tabId === value));\n }\n }, [tabContentChildren, value]);\n\n const [activeIndex, setActiveIndex] = useState(getDefaultTabIndex);\n\n if (new Set(tabIds).size !== tabIds.length) {\n throw new Error(\"tabId must be unique\");\n }\n\n const getTestId = (name: string, id?: string) =>\n id || dataTestId ? `${id || dataTestId}-${name}` : undefined;\n\n const handleLinePosition = () => {\n if (!isLineVariant) {\n return;\n }\n\n const activeTabElement = tabChildren.current[activeIndex];\n\n setSelectedTriggerOffset(activeTabElement?.offsetLeft || 0);\n setSelectedTriggerWidth(activeTabElement?.getBoundingClientRect().width || 0);\n };\n\n const handleTabChange = (_value: string) => {\n if (isLineVariant && !value) {\n setActiveIndex(tabContentChildren.findIndex((child) => child.props.tabId === _value));\n }\n onChange?.(createTabChangeDetailEvent(_value));\n };\n\n const handleScrollButtonClick = (side: \"left\" | \"right\") => {\n if (tabList?.current) {\n const { scrollLeft } = tabList.current;\n const modifier = side === \"left\" ? -sideScrollAdjustmentSize : sideScrollAdjustmentSize;\n\n tabList.current.scroll({ left: scrollLeft + modifier, behavior: \"smooth\" });\n }\n };\n\n const ScrollButton = ({ side }: { side: \"left\" | \"right\" }) => (\n <button\n className={cx(`${rootClassName}__scroll-button`, `${rootClassName}__scroll-button--${side}`)}\n onClick={() => handleScrollButtonClick(side)}\n type=\"button\"\n aria-hidden=\"true\"\n tabIndex={-1}\n data-testid={getTestId(\"scroll-button\")}\n >\n <Icon svg={side === \"left\" ? chevronLeft : chevronRight} size=\"md\" />\n </button>\n );\n\n useEffect(() => {\n const setNewHeight = () => {\n if (contentRef.current && animateHeight) {\n const newHeight = contentRef.current.offsetHeight;\n setHeight(newHeight);\n }\n };\n\n const handleResize = () => {\n setNewHeight();\n handleLinePosition();\n };\n\n setNewHeight();\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [activeIndex, animateHeight]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n handleLinePosition();\n }, [activeIndex, fullWidth, tabContentChildren.length, variant]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n const root = tabList.current;\n if (!root) return;\n\n const updateScrollState = () => {\n const { scrollLeft, scrollWidth, clientWidth } = root;\n\n const canScroll = scrollWidth > clientWidth;\n const atStart = scrollLeft <= 1;\n const atEnd = scrollLeft + clientWidth >= scrollWidth - 1;\n\n if (!canScroll) {\n setScrollClasses({});\n return;\n }\n\n setScrollClasses({\n [`${rootClassName}__wrapper--scroll-start`]: !atStart,\n [`${rootClassName}__wrapper--scroll-end`]: !atEnd,\n });\n };\n\n updateScrollState();\n\n root.addEventListener(\"scroll\", updateScrollState, { passive: true });\n window.addEventListener(\"resize\", updateScrollState);\n\n return () => {\n root.removeEventListener(\"scroll\", updateScrollState);\n window.removeEventListener(\"resize\", updateScrollState);\n };\n }, []);\n\n return (\n <Root\n defaultValue={defaultValue ?? tabContentChildren[0].props.tabId}\n onValueChange={handleTabChange}\n data-testid={dataTestId}\n className={classNames}\n value={value}\n {...props}\n >\n <div className={cx(`${rootClassName}__container`)}>\n <div className={cx(`${rootClassName}__wrapper`, scrollClasses)}>\n <List\n ref={(el) => {\n tabList.current = el;\n }}\n className={cx(`${rootClassName}__list`)}\n >\n {Children.map(tabContentChildren, (child, index) => {\n const { name, tabId, \"data-testid\": childDataTestId } = child.props;\n return (\n <TabHeader\n data-testid={getTestId(\"header\", childDataTestId)}\n index={index}\n tabId={tabId}\n ref={(el) => {\n if (el) {\n tabChildren.current[index] = el;\n }\n }}\n onFocus={(e) => {\n scrollToTarget(e.target as HTMLElement, tabList.current);\n }}\n variant={variant}\n negative={negative}\n fullWidth={fullWidth}\n >\n {name}\n </TabHeader>\n );\n })}\n {isLineVariant && (\n <div\n className={cx(`${rootClassName}__selected-border`)}\n style={{\n width: selectedTriggerWidth,\n transform: `translateX(${selectedTriggerOffset}px)`,\n }}\n data-testid={getTestId(\"selected-border\")}\n />\n )}\n </List>\n <ScrollButton side=\"left\" />\n <ScrollButton side=\"right\" />\n </div>\n <div\n className={animateHeight ? cx(`${rootClassName}__content-wrapper`) : \"\"}\n style={{ height: animateHeight && height > -1 ? `${height}px` : \"auto\" }}\n >\n <div ref={contentRef} className={cx(`${rootClassName}__content-container`)}>\n {Children.map(tabContentChildren, (child) => child)}\n </div>\n </div>\n </div>\n </Root>\n );\n};\n\nTabs.Content = TabContent;\n\nexport * from \"./tabs.utils\";\n"],"names":["e","TABS_NAME","createTabsContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","cx","c","styles","rootClassName","TabContent","forwardRef","tabId","dataTestId","className","disableForceMount","ref","isTabContent","child","isValidElement","TabHeader","index","variant","negative","onFocus","fullWidth","tabsVariants","createTabChangeDetailEvent","scrollToTarget","target","tabList","targetRect","wrapperRect","wrapperWidth","wrapperOffset","offset","left","onChange","animateHeight","contentRef","useRef","height","setHeight","useState","scrollClasses","setScrollClasses","selectedTriggerOffset","setSelectedTriggerOffset","selectedTriggerWidth","setSelectedTriggerWidth","tabContentChildren","Children","tabChildren","sideScrollAdjustmentSize","isLineVariant","classNames","tabIds","getDefaultTabIndex","defaultIndex","tabIndex","useEffect","setActiveIndex","activeIndex","getTestId","name","id","handleLinePosition","activeTabElement","handleTabChange","_value","handleScrollButtonClick","side","scrollLeft","modifier","ScrollButton","Icon","chevronLeft","chevronRight","setNewHeight","newHeight","handleResize","root","updateScrollState","scrollWidth","clientWidth","canScroll","atStart","atEnd","Root","jsxs","el","childDataTestId"],"mappings":"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","x_google_ignoreList":[2]}
|