@purpur/library 9.0.6 → 9.0.8
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 +45 -0
- package/CHANGELOG.md +22 -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-B_OBQM2h.js} +2 -2
- package/dist/{autocomplete-yD0-1vlF.js.map → autocomplete-B_OBQM2h.js.map} +1 -1
- package/dist/{autocomplete-0kGG_STe.mjs → autocomplete-DJ3zbA0m.mjs} +3 -3
- package/dist/{autocomplete-0kGG_STe.mjs.map → autocomplete-DJ3zbA0m.mjs.map} +1 -1
- package/dist/autocomplete.cjs.js +1 -1
- package/dist/autocomplete.es.js +1 -1
- package/dist/button-BxdChrq-.js +2 -0
- package/dist/button-BxdChrq-.js.map +1 -0
- package/dist/button-D-BBdNhd.mjs +105 -0
- package/dist/button-D-BBdNhd.mjs.map +1 -0
- package/dist/button.cjs.js +1 -1
- package/dist/button.es.js +1 -1
- package/dist/{calendar-DDie8jSH.mjs → calendar-9p_aA7KY.mjs} +2 -2
- package/dist/{calendar-DDie8jSH.mjs.map → calendar-9p_aA7KY.mjs.map} +1 -1
- package/dist/{calendar-pMM0fKEu.js → calendar-BSdvi_DA.js} +2 -2
- package/dist/{calendar-pMM0fKEu.js.map → calendar-BSdvi_DA.js.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.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-D_6iP2fC.mjs → date-field-Ch2lM7-P.mjs} +325 -310
- package/dist/{date-field-D_6iP2fC.mjs.map → date-field-Ch2lM7-P.mjs.map} +1 -1
- package/dist/date-field-DTI5mQkg.js +2 -0
- package/dist/{date-field-CPiTZqa0.js.map → date-field-DTI5mQkg.js.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-Bt3IaH23.mjs} +5 -5
- package/dist/{date-picker-BRnwwZv1.mjs.map → date-picker-Bt3IaH23.mjs.map} +1 -1
- package/dist/{date-picker-DlJGggam.js → date-picker-Dk39IXG5.js} +2 -2
- package/dist/{date-picker-DlJGggam.js.map → date-picker-Dk39IXG5.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-Boqmgh-i.mjs → drawer-B6j8nfAY.mjs} +14 -14
- package/dist/{drawer-Boqmgh-i.mjs.map → drawer-B6j8nfAY.mjs.map} +1 -1
- package/dist/{drawer-nBpCtIdI.js → drawer-CJsLdd2x.js} +2 -2
- package/dist/{drawer-nBpCtIdI.js.map → drawer-CJsLdd2x.js.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-B5HKmkXc.mjs} +5 -5
- package/dist/{hero-banner-B8fRHxXc.mjs.map → hero-banner-B5HKmkXc.mjs.map} +1 -1
- package/dist/{hero-banner-D3peC1NR.js → hero-banner-OnNSuxNT.js} +2 -2
- package/dist/{hero-banner-D3peC1NR.js.map → hero-banner-OnNSuxNT.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-B1eJu9HN.mjs} +19 -19
- package/dist/{modal-C2UQsW-g.mjs.map → modal-B1eJu9HN.mjs.map} +1 -1
- package/dist/{modal-nyhf5zxG.js → modal-CQiJ98iI.js} +2 -2
- package/dist/{modal-nyhf5zxG.js.map → modal-CQiJ98iI.js.map} +1 -1
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{notification-C32wHljA.mjs → notification-BtcM7Ndu.mjs} +22 -22
- package/dist/{notification-C32wHljA.mjs.map → notification-BtcM7Ndu.mjs.map} +1 -1
- package/dist/{notification-Bg1vQkQ3.js → notification-Dsg3Vzfi.js} +2 -2
- package/dist/{notification-Bg1vQkQ3.js.map → notification-Dsg3Vzfi.js.map} +1 -1
- package/dist/{notification-banner-C8XsBDTq.js → notification-banner-B0CUuKZn.js} +2 -2
- package/dist/{notification-banner-C8XsBDTq.js.map → notification-banner-B0CUuKZn.js.map} +1 -1
- package/dist/{notification-banner-BY2iZOIa.mjs → notification-banner-CbKcE7o4.mjs} +3 -3
- package/dist/{notification-banner-BY2iZOIa.mjs.map → notification-banner-CbKcE7o4.mjs.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-DBMI9Jy1.mjs → popover-D3b2gHm-.mjs} +25 -25
- package/dist/{popover-DBMI9Jy1.mjs.map → popover-D3b2gHm-.mjs.map} +1 -1
- package/dist/{popover-B1BgSoQx.js → popover-D6k4-oO1.js} +2 -2
- package/dist/{popover-B1BgSoQx.js.map → popover-D6k4-oO1.js.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-Bc-4Dnpc.js} +2 -2
- package/dist/{quantity-selector-DPOTlMSq.js.map → quantity-selector-Bc-4Dnpc.js.map} +1 -1
- package/dist/{quantity-selector-_VcZYLjR.mjs → quantity-selector-Djf8APeL.mjs} +5 -5
- package/dist/{quantity-selector-_VcZYLjR.mjs.map → quantity-selector-Djf8APeL.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-CxX4BBcg.js → search-field-0CBoxcNH.js} +2 -2
- package/dist/{search-field-CxX4BBcg.js.map → search-field-0CBoxcNH.js.map} +1 -1
- package/dist/{search-field-DH0xeW_J.mjs → search-field-aP_i6Nr0.mjs} +11 -11
- package/dist/{search-field-DH0xeW_J.mjs.map → search-field-aP_i6Nr0.mjs.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/stepper-BaoOY4Ea.js +2 -0
- package/dist/stepper-BaoOY4Ea.js.map +1 -0
- package/dist/{stepper-BfIbJwZn.mjs → stepper-CTdGj87I.mjs} +68 -71
- package/dist/stepper-CTdGj87I.mjs.map +1 -0
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/{table-DvcpczWf.mjs → table-D7qthqj_.mjs} +181 -179
- package/dist/{table-DvcpczWf.mjs.map → table-D7qthqj_.mjs.map} +1 -1
- package/dist/{table-BNeo_B1h.js → table-TdOPMFoP.js} +4 -4
- package/dist/{table-BNeo_B1h.js.map → table-TdOPMFoP.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-9zPmL99g.mjs} +2 -2
- package/dist/{text-field-PKAaXO1N.mjs.map → text-field-9zPmL99g.mjs.map} +1 -1
- package/dist/{text-field-B8a-NKm4.js → text-field-CKCwxTJX.js} +2 -2
- package/dist/{text-field-B8a-NKm4.js.map → text-field-CKCwxTJX.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-BtGtu3ph.mjs} +12 -12
- package/dist/{tooltip-DXi7ikUT.mjs.map → tooltip-BtGtu3ph.mjs.map} +1 -1
- package/dist/{tooltip-CLQLxoaf.js → tooltip-eUP35j3v.js} +2 -2
- package/dist/{tooltip-CLQLxoaf.js.map → tooltip-eUP35j3v.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 +22 -22
- 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
package/dist/table.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./table-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./table-TdOPMFoP.js");exports.Table=e.Table;exports.createColumnHelper=e.createColumnHelper;
|
|
2
2
|
//# sourceMappingURL=table.cjs.js.map
|
package/dist/table.es.js
CHANGED
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
import { jsx as l, jsxs as M } from "react/jsx-runtime";
|
|
2
|
+
import * as x from "react";
|
|
3
|
+
import { forwardRef as X, isValidElement as wt, useRef as P, useState as $, Children as y, useEffect as N } from "react";
|
|
4
|
+
import { b as Tt } from "./icon.es-CZcKxTaM.mjs";
|
|
5
|
+
import { P as R, c as k, u as Ct } from "./index-DCcK_d4W.mjs";
|
|
6
|
+
import { c as It } from "./index-DOfn3ixy.mjs";
|
|
7
|
+
import { c as J, I as $t, R as xt } from "./index-IpWiejWQ.mjs";
|
|
8
|
+
import { P as yt } from "./index-DDrLXRUs.mjs";
|
|
9
|
+
import { u as Nt } from "./index-ByaXH_ih.mjs";
|
|
10
|
+
import { u as Rt } from "./index-CEQ35j8b.mjs";
|
|
11
|
+
import { c as V } from "./bind-CU-R61T-.mjs";
|
|
12
|
+
const St = {
|
|
13
|
+
name: "chevron-left",
|
|
14
|
+
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>',
|
|
15
|
+
keywords: ["chevron-left"],
|
|
16
|
+
category: "utility"
|
|
17
|
+
}, Et = {
|
|
18
|
+
name: "chevron-right",
|
|
19
|
+
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>',
|
|
20
|
+
keywords: ["chevron-right"],
|
|
21
|
+
category: "utility"
|
|
22
|
+
};
|
|
23
|
+
var S = "Tabs", [At] = It(S, [
|
|
24
|
+
J
|
|
25
|
+
]), Q = J(), [jt, z] = At(S), U = x.forwardRef(
|
|
26
|
+
(e, r) => {
|
|
27
|
+
const {
|
|
28
|
+
__scopeTabs: s,
|
|
29
|
+
value: a,
|
|
30
|
+
onValueChange: i,
|
|
31
|
+
defaultValue: u,
|
|
32
|
+
orientation: o = "horizontal",
|
|
33
|
+
dir: n,
|
|
34
|
+
activationMode: h = "automatic",
|
|
35
|
+
...p
|
|
36
|
+
} = e, _ = Nt(n), [d, m] = Ct({
|
|
37
|
+
prop: a,
|
|
38
|
+
onChange: i,
|
|
39
|
+
defaultProp: u ?? "",
|
|
40
|
+
caller: S
|
|
41
|
+
});
|
|
42
|
+
return /* @__PURE__ */ l(
|
|
43
|
+
jt,
|
|
44
|
+
{
|
|
45
|
+
scope: s,
|
|
46
|
+
baseId: Rt(),
|
|
47
|
+
value: d,
|
|
48
|
+
onValueChange: m,
|
|
49
|
+
orientation: o,
|
|
50
|
+
dir: _,
|
|
51
|
+
activationMode: h,
|
|
52
|
+
children: /* @__PURE__ */ l(
|
|
53
|
+
R.div,
|
|
54
|
+
{
|
|
55
|
+
dir: _,
|
|
56
|
+
"data-orientation": o,
|
|
57
|
+
...p,
|
|
58
|
+
ref: r
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
U.displayName = S;
|
|
66
|
+
var Y = "TabsList", tt = x.forwardRef(
|
|
67
|
+
(e, r) => {
|
|
68
|
+
const { __scopeTabs: s, loop: a = !0, ...i } = e, u = z(Y, s), o = Q(s);
|
|
69
|
+
return /* @__PURE__ */ l(
|
|
70
|
+
xt,
|
|
71
|
+
{
|
|
72
|
+
asChild: !0,
|
|
73
|
+
...o,
|
|
74
|
+
orientation: u.orientation,
|
|
75
|
+
dir: u.dir,
|
|
76
|
+
loop: a,
|
|
77
|
+
children: /* @__PURE__ */ l(
|
|
78
|
+
R.div,
|
|
79
|
+
{
|
|
80
|
+
role: "tablist",
|
|
81
|
+
"aria-orientation": u.orientation,
|
|
82
|
+
...i,
|
|
83
|
+
ref: r
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
tt.displayName = Y;
|
|
91
|
+
var et = "TabsTrigger", rt = x.forwardRef(
|
|
92
|
+
(e, r) => {
|
|
93
|
+
const { __scopeTabs: s, value: a, disabled: i = !1, ...u } = e, o = z(et, s), n = Q(s), h = ot(o.baseId, a), p = st(o.baseId, a), _ = a === o.value;
|
|
94
|
+
return /* @__PURE__ */ l(
|
|
95
|
+
$t,
|
|
96
|
+
{
|
|
97
|
+
asChild: !0,
|
|
98
|
+
...n,
|
|
99
|
+
focusable: !i,
|
|
100
|
+
active: _,
|
|
101
|
+
children: /* @__PURE__ */ l(
|
|
102
|
+
R.button,
|
|
103
|
+
{
|
|
104
|
+
type: "button",
|
|
105
|
+
role: "tab",
|
|
106
|
+
"aria-selected": _,
|
|
107
|
+
"aria-controls": p,
|
|
108
|
+
"data-state": _ ? "active" : "inactive",
|
|
109
|
+
"data-disabled": i ? "" : void 0,
|
|
110
|
+
disabled: i,
|
|
111
|
+
id: h,
|
|
112
|
+
...u,
|
|
113
|
+
ref: r,
|
|
114
|
+
onMouseDown: k(e.onMouseDown, (d) => {
|
|
115
|
+
!i && d.button === 0 && d.ctrlKey === !1 ? o.onValueChange(a) : d.preventDefault();
|
|
116
|
+
}),
|
|
117
|
+
onKeyDown: k(e.onKeyDown, (d) => {
|
|
118
|
+
[" ", "Enter"].includes(d.key) && o.onValueChange(a);
|
|
119
|
+
}),
|
|
120
|
+
onFocus: k(e.onFocus, () => {
|
|
121
|
+
const d = o.activationMode !== "manual";
|
|
122
|
+
!_ && !i && d && o.onValueChange(a);
|
|
123
|
+
})
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
rt.displayName = et;
|
|
131
|
+
var nt = "TabsContent", at = x.forwardRef(
|
|
132
|
+
(e, r) => {
|
|
133
|
+
const { __scopeTabs: s, value: a, forceMount: i, children: u, ...o } = e, n = z(nt, s), h = ot(n.baseId, a), p = st(n.baseId, a), _ = a === n.value, d = x.useRef(_);
|
|
134
|
+
return x.useEffect(() => {
|
|
135
|
+
const m = requestAnimationFrame(() => d.current = !1);
|
|
136
|
+
return () => cancelAnimationFrame(m);
|
|
137
|
+
}, []), /* @__PURE__ */ l(yt, { present: i || _, children: ({ present: m }) => /* @__PURE__ */ l(
|
|
138
|
+
R.div,
|
|
139
|
+
{
|
|
140
|
+
"data-state": _ ? "active" : "inactive",
|
|
141
|
+
"data-orientation": n.orientation,
|
|
142
|
+
role: "tabpanel",
|
|
143
|
+
"aria-labelledby": h,
|
|
144
|
+
hidden: !m,
|
|
145
|
+
id: p,
|
|
146
|
+
tabIndex: 0,
|
|
147
|
+
...o,
|
|
148
|
+
ref: r,
|
|
149
|
+
style: {
|
|
150
|
+
...e.style,
|
|
151
|
+
animationDuration: d.current ? "0s" : void 0
|
|
152
|
+
},
|
|
153
|
+
children: m && u
|
|
154
|
+
}
|
|
155
|
+
) });
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
at.displayName = nt;
|
|
159
|
+
function ot(e, r) {
|
|
160
|
+
return `${e}-trigger-${r}`;
|
|
161
|
+
}
|
|
162
|
+
function st(e, r) {
|
|
163
|
+
return `${e}-content-${r}`;
|
|
164
|
+
}
|
|
165
|
+
var Lt = U, Dt = tt, Mt = rt, Pt = at;
|
|
166
|
+
const kt = {
|
|
167
|
+
"purpur-tab-content": "_purpur-tab-content_1ugbi_1",
|
|
168
|
+
"purpur-tab-content--force-mount": "_purpur-tab-content--force-mount_1ugbi_15"
|
|
169
|
+
}, Bt = V.bind(kt), Z = "purpur-tab-content", Vt = X(
|
|
170
|
+
({ children: e, tabId: r, "data-testid": s, className: a, disableForceMount: i, ...u }, o) => /* @__PURE__ */ l(
|
|
171
|
+
Pt,
|
|
172
|
+
{
|
|
173
|
+
ref: o,
|
|
174
|
+
className: Bt(Z, a, {
|
|
175
|
+
[`${Z}--force-mount`]: !i
|
|
176
|
+
}),
|
|
177
|
+
"data-testid": s,
|
|
178
|
+
value: r,
|
|
179
|
+
forceMount: !i || void 0,
|
|
180
|
+
tabIndex: 0,
|
|
181
|
+
...u,
|
|
182
|
+
children: e
|
|
183
|
+
}
|
|
184
|
+
)
|
|
185
|
+
), zt = (e) => !!e && wt(e) && !!e.props.name && !!e.props.tabId, Ft = {
|
|
186
|
+
"purpur-tab-header": "_purpur-tab-header_1tc2s_1",
|
|
187
|
+
"purpur-tab-header--contained": "_purpur-tab-header--contained_1tc2s_36",
|
|
188
|
+
"purpur-tab-header--contained-negative": "_purpur-tab-header--contained-negative_1tc2s_36",
|
|
189
|
+
"purpur-tab-header--line": "_purpur-tab-header--line_1tc2s_39",
|
|
190
|
+
"purpur-tab-header--line-negative": "_purpur-tab-header--line-negative_1tc2s_51",
|
|
191
|
+
"purpur-tab-header--full-width": "_purpur-tab-header--full-width_1tc2s_100"
|
|
192
|
+
}, Gt = V.bind(Ft), B = "purpur-tab-header", Kt = X(
|
|
193
|
+
({
|
|
194
|
+
index: e,
|
|
195
|
+
tabId: r,
|
|
196
|
+
variant: s,
|
|
197
|
+
negative: a,
|
|
198
|
+
onFocus: i,
|
|
199
|
+
fullWidth: u,
|
|
200
|
+
"data-testid": o,
|
|
201
|
+
children: n
|
|
202
|
+
}, h) => /* @__PURE__ */ l(
|
|
203
|
+
Mt,
|
|
204
|
+
{
|
|
205
|
+
id: `${r}-trigger`,
|
|
206
|
+
className: Gt(B, `${B}--${s}${a ? "-negative" : ""}`, {
|
|
207
|
+
[`${B}--full-width`]: u
|
|
208
|
+
}),
|
|
209
|
+
value: r,
|
|
210
|
+
"data-testid": o,
|
|
211
|
+
"data-index": e,
|
|
212
|
+
ref: h,
|
|
213
|
+
onFocus: i,
|
|
214
|
+
children: n
|
|
215
|
+
}
|
|
216
|
+
)
|
|
217
|
+
), Wt = {
|
|
218
|
+
"purpur-tabs__wrapper": "_purpur-tabs__wrapper_jv2vl_1",
|
|
219
|
+
"purpur-tabs__scroll-button": "_purpur-tabs__scroll-button_jv2vl_9",
|
|
220
|
+
"purpur-tabs__scroll-button--left": "_purpur-tabs__scroll-button--left_jv2vl_71",
|
|
221
|
+
"purpur-tabs__scroll-button--right": "_purpur-tabs__scroll-button--right_jv2vl_74",
|
|
222
|
+
"purpur-tabs__wrapper--scroll-start": "_purpur-tabs__wrapper--scroll-start_jv2vl_77",
|
|
223
|
+
"purpur-tabs__wrapper--scroll-end": "_purpur-tabs__wrapper--scroll-end_jv2vl_80",
|
|
224
|
+
"purpur-tabs--line": "_purpur-tabs--line_jv2vl_83",
|
|
225
|
+
"purpur-tabs--line-negative": "_purpur-tabs--line-negative_jv2vl_83",
|
|
226
|
+
"purpur-tabs__selected-border": "_purpur-tabs__selected-border_jv2vl_91",
|
|
227
|
+
"purpur-tabs__content-wrapper": "_purpur-tabs__content-wrapper_jv2vl_115",
|
|
228
|
+
"purpur-tabs--contained": "_purpur-tabs--contained_jv2vl_123",
|
|
229
|
+
"purpur-tabs__list": "_purpur-tabs__list_jv2vl_123",
|
|
230
|
+
"purpur-tabs--contained-negative": "_purpur-tabs--contained-negative_jv2vl_123",
|
|
231
|
+
"purpur-tabs__content-container": "_purpur-tabs__content-container_jv2vl_126",
|
|
232
|
+
"purpur-tabs--full-width": "_purpur-tabs--full-width_jv2vl_136"
|
|
233
|
+
}, ae = ["line", "contained"], Ht = (e) => new CustomEvent("tabChangeDetail", { detail: { value: e } }), C = V.bind(Wt), b = "purpur-tabs", Ot = (e, r) => {
|
|
234
|
+
if (typeof e?.getBoundingClientRect != "function" || typeof r?.scroll != "function")
|
|
235
|
+
return;
|
|
236
|
+
const s = e.getBoundingClientRect(), a = r.getBoundingClientRect(), i = r.clientWidth, u = parseInt(getComputedStyle(r).borderLeftWidth?.split("px")[0], 10), o = a.left + (isNaN(u) ? 0 : u);
|
|
237
|
+
let n;
|
|
238
|
+
s.right > a.right && (n = s.left + r.scrollLeft, n = n + s.width - i + i * 0.1, n = n - o), s.left < a.left && (n = s.left + r.scrollLeft, n = n - i * 0.1, n = n - o), n !== void 0 && r.scroll({ left: n, behavior: "smooth" });
|
|
239
|
+
}, qt = ({
|
|
240
|
+
children: e,
|
|
241
|
+
variant: r = "line",
|
|
242
|
+
negative: s = !1,
|
|
243
|
+
fullWidth: a = !1,
|
|
244
|
+
onChange: i,
|
|
245
|
+
className: u,
|
|
246
|
+
defaultValue: o,
|
|
247
|
+
animateHeight: n = !1,
|
|
248
|
+
"data-testid": h,
|
|
249
|
+
value: p,
|
|
250
|
+
..._
|
|
251
|
+
}) => {
|
|
252
|
+
const d = P(null), [m, it] = $(-1), [ct, F] = $({}), [lt, ut] = $(0), [dt, pt] = $(0), f = y.toArray(e).filter(zt), I = P(null), E = P(new Array(f.length)), G = 200, A = r === "line", _t = C(
|
|
253
|
+
b,
|
|
254
|
+
`${b}--${r}${s ? "-negative" : ""}`,
|
|
255
|
+
{ [`${b}--full-width`]: a },
|
|
256
|
+
u
|
|
257
|
+
), j = y.map(f, ({ props: { tabId: t } }) => t), bt = () => {
|
|
258
|
+
const t = j.findIndex((c) => c === o);
|
|
259
|
+
return t >= 0 ? t : 0;
|
|
260
|
+
}, [L, K] = $(bt), [ft, W] = $(
|
|
261
|
+
p ?? o ?? f[0].props.tabId
|
|
262
|
+
);
|
|
263
|
+
if (N(() => {
|
|
264
|
+
p && (W(p), K(f.findIndex((t) => t.props.tabId === p)));
|
|
265
|
+
}, [f, p]), new Set(j).size !== j.length)
|
|
266
|
+
throw new Error("tabId must be unique");
|
|
267
|
+
const D = (t, c) => c || h ? `${c || h}-${t}` : void 0, H = () => {
|
|
268
|
+
if (!A)
|
|
269
|
+
return;
|
|
270
|
+
const t = E.current[L];
|
|
271
|
+
ut(t?.offsetLeft || 0), pt(t?.getBoundingClientRect().width || 0);
|
|
272
|
+
}, O = (t) => {
|
|
273
|
+
W(t), A && !p && K(f.findIndex((c) => c.props.tabId === t)), i?.(Ht(t));
|
|
274
|
+
}, vt = (t) => {
|
|
275
|
+
if (I?.current) {
|
|
276
|
+
const { scrollLeft: c } = I.current, v = t === "left" ? -G : G;
|
|
277
|
+
I.current.scroll({ left: c + v, behavior: "smooth" });
|
|
278
|
+
}
|
|
279
|
+
}, q = ({ side: t }) => /* @__PURE__ */ l(
|
|
280
|
+
"button",
|
|
281
|
+
{
|
|
282
|
+
className: C(`${b}__scroll-button`, `${b}__scroll-button--${t}`),
|
|
283
|
+
onClick: () => vt(t),
|
|
284
|
+
type: "button",
|
|
285
|
+
"aria-hidden": "true",
|
|
286
|
+
tabIndex: -1,
|
|
287
|
+
"data-testid": D("scroll-button"),
|
|
288
|
+
children: /* @__PURE__ */ l(Tt, { svg: t === "left" ? St : Et, size: "md" })
|
|
289
|
+
}
|
|
290
|
+
);
|
|
291
|
+
N(() => {
|
|
292
|
+
const t = () => {
|
|
293
|
+
if (d.current && n) {
|
|
294
|
+
const v = d.current.offsetHeight;
|
|
295
|
+
it(v);
|
|
296
|
+
}
|
|
297
|
+
}, c = () => {
|
|
298
|
+
t(), H();
|
|
299
|
+
};
|
|
300
|
+
return t(), window.addEventListener("resize", c), () => {
|
|
301
|
+
window.removeEventListener("resize", c);
|
|
302
|
+
};
|
|
303
|
+
}, [L, n]), N(() => {
|
|
304
|
+
H();
|
|
305
|
+
}, [L, a, f.length, r]), N(() => {
|
|
306
|
+
const t = I.current;
|
|
307
|
+
if (!t) return;
|
|
308
|
+
const c = () => {
|
|
309
|
+
const { scrollLeft: v, scrollWidth: w, clientWidth: g } = t, T = w > g, ht = v <= 1, mt = v + g >= w - 1;
|
|
310
|
+
if (!T) {
|
|
311
|
+
F({});
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
F({
|
|
315
|
+
[`${b}__wrapper--scroll-start`]: !ht,
|
|
316
|
+
[`${b}__wrapper--scroll-end`]: !mt
|
|
317
|
+
});
|
|
318
|
+
};
|
|
319
|
+
return c(), t.addEventListener("scroll", c, { passive: !0 }), window.addEventListener("resize", c), () => {
|
|
320
|
+
t.removeEventListener("scroll", c), window.removeEventListener("resize", c);
|
|
321
|
+
};
|
|
322
|
+
}, []);
|
|
323
|
+
const gt = (t) => {
|
|
324
|
+
const c = t.target, v = parseInt(c.dataset.index ?? "", 10);
|
|
325
|
+
if (isNaN(v)) return;
|
|
326
|
+
const w = f.length;
|
|
327
|
+
let g = null;
|
|
328
|
+
switch (t.key) {
|
|
329
|
+
case "ArrowRight":
|
|
330
|
+
g = (v + 1) % w;
|
|
331
|
+
break;
|
|
332
|
+
case "ArrowLeft":
|
|
333
|
+
g = (v - 1 + w) % w;
|
|
334
|
+
break;
|
|
335
|
+
case "Home":
|
|
336
|
+
g = 0;
|
|
337
|
+
break;
|
|
338
|
+
case "End":
|
|
339
|
+
g = w - 1;
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
if (g !== null) {
|
|
343
|
+
const T = f[g].props.tabId;
|
|
344
|
+
O(T), E.current[g]?.focus();
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
return /* @__PURE__ */ l(
|
|
348
|
+
Lt,
|
|
349
|
+
{
|
|
350
|
+
defaultValue: o ?? f[0].props.tabId,
|
|
351
|
+
onValueChange: O,
|
|
352
|
+
"data-testid": h,
|
|
353
|
+
className: _t,
|
|
354
|
+
value: p ?? ft,
|
|
355
|
+
activationMode: "manual",
|
|
356
|
+
..._,
|
|
357
|
+
children: /* @__PURE__ */ M("div", { className: C(`${b}__container`), children: [
|
|
358
|
+
/* @__PURE__ */ M("div", { className: C(`${b}__wrapper`, ct), children: [
|
|
359
|
+
/* @__PURE__ */ M(
|
|
360
|
+
Dt,
|
|
361
|
+
{
|
|
362
|
+
ref: (t) => {
|
|
363
|
+
I.current = t;
|
|
364
|
+
},
|
|
365
|
+
className: C(`${b}__list`),
|
|
366
|
+
onKeyDown: gt,
|
|
367
|
+
children: [
|
|
368
|
+
y.map(f, (t, c) => {
|
|
369
|
+
const { name: v, tabId: w, "data-testid": g } = t.props;
|
|
370
|
+
return /* @__PURE__ */ l(
|
|
371
|
+
Kt,
|
|
372
|
+
{
|
|
373
|
+
"data-testid": D("header", g),
|
|
374
|
+
index: c,
|
|
375
|
+
tabId: w,
|
|
376
|
+
ref: (T) => {
|
|
377
|
+
T && (E.current[c] = T);
|
|
378
|
+
},
|
|
379
|
+
onFocus: (T) => {
|
|
380
|
+
Ot(T.target, I.current);
|
|
381
|
+
},
|
|
382
|
+
variant: r,
|
|
383
|
+
negative: s,
|
|
384
|
+
fullWidth: a,
|
|
385
|
+
children: v
|
|
386
|
+
}
|
|
387
|
+
);
|
|
388
|
+
}),
|
|
389
|
+
A && /* @__PURE__ */ l(
|
|
390
|
+
"div",
|
|
391
|
+
{
|
|
392
|
+
className: C(`${b}__selected-border`),
|
|
393
|
+
style: {
|
|
394
|
+
width: dt,
|
|
395
|
+
transform: `translateX(${lt}px)`
|
|
396
|
+
},
|
|
397
|
+
"data-testid": D("selected-border")
|
|
398
|
+
}
|
|
399
|
+
)
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
),
|
|
403
|
+
/* @__PURE__ */ l(q, { side: "left" }),
|
|
404
|
+
/* @__PURE__ */ l(q, { side: "right" })
|
|
405
|
+
] }),
|
|
406
|
+
/* @__PURE__ */ l(
|
|
407
|
+
"div",
|
|
408
|
+
{
|
|
409
|
+
className: n ? C(`${b}__content-wrapper`) : "",
|
|
410
|
+
style: { height: n && m > -1 ? `${m}px` : "auto" },
|
|
411
|
+
children: /* @__PURE__ */ l("div", { ref: d, className: C(`${b}__content-container`), children: y.map(f, (t) => t) })
|
|
412
|
+
}
|
|
413
|
+
)
|
|
414
|
+
] })
|
|
415
|
+
}
|
|
416
|
+
);
|
|
417
|
+
};
|
|
418
|
+
qt.Content = Vt;
|
|
419
|
+
export {
|
|
420
|
+
qt as T,
|
|
421
|
+
Ht as c,
|
|
422
|
+
ae as t
|
|
423
|
+
};
|
|
424
|
+
//# sourceMappingURL=tabs-Bye5lgZ1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-Bye5lgZ1.mjs","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 tabIndex={0}\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 const [activeIndex, setActiveIndex] = useState(getDefaultTabIndex);\n\n // Internal active tab ID — keeps Radix always controlled so our keydown handler\n // can activate tabs directly without relying on Radix's mouse/focus events.\n const [activeTabId, setActiveTabId] = useState<string>(\n value ?? defaultValue ?? tabContentChildren[0].props.tabId\n );\n\n useEffect(() => {\n if (value) {\n setActiveTabId(value);\n setActiveIndex(tabContentChildren.findIndex((child) => child.props.tabId === value));\n }\n }, [tabContentChildren, value]);\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 setActiveTabId(_value);\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 const handleTabListKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const currentIndex = parseInt(target.dataset.index ?? \"\", 10);\n if (isNaN(currentIndex)) return;\n\n const total = tabContentChildren.length;\n let nextIndex: number | null = null;\n\n switch (e.key) {\n case \"ArrowRight\":\n nextIndex = (currentIndex + 1) % total;\n break;\n case \"ArrowLeft\":\n nextIndex = (currentIndex - 1 + total) % total;\n break;\n case \"Home\":\n nextIndex = 0;\n break;\n case \"End\":\n nextIndex = total - 1;\n break;\n }\n\n if (nextIndex !== null) {\n const nextTabId = tabContentChildren[nextIndex].props.tabId;\n handleTabChange(nextTabId);\n tabChildren.current[nextIndex]?.focus();\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 ?? activeTabId}\n activationMode=\"manual\"\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 onKeyDown={handleTabListKeyDown}\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","activeIndex","setActiveIndex","activeTabId","setActiveTabId","useEffect","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","handleTabListKeyDown","currentIndex","total","nextIndex","nextTabId","Root","jsxs","el","childDataTestId"],"mappings":"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","x_google_ignoreList":[2]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const l=require("react/jsx-runtime"),u=require("react"),ve=require("./icon.es-j3eRib6d.js"),j=require("./index-DlMXYAr3.js"),ge=require("./index-kcwFA4Dv.js"),y=require("./index-BVmlsxuF.js"),he=require("./index-CleLBinl.js"),me=require("./index-Cje7xxa1.js"),we=require("./index-BtWPC8xc.js"),P=require("./bind-DeUYJ6m9.js");function xe(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const n=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(r,a,n.get?n:{enumerable:!0,get:()=>t[a]})}}return r.default=t,Object.freeze(r)}const I=xe(u),Ce={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"},Te={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",[je]=ge.createContextScope(S,[y.createRovingFocusGroupScope]),H=y.createRovingFocusGroupScope(),[$e,M]=je(S),K=I.forwardRef((t,r)=>{const{__scopeTabs:a,value:n,onValueChange:i,defaultValue:d,orientation:o="horizontal",dir:s,activationMode:m="automatic",..._}=t,b=me.useDirection(s),[p,w]=j.useControllableState({prop:n,onChange:i,defaultProp:d??"",caller:S});return l.jsx($e,{scope:a,baseId:we.useId(),value:p,onValueChange:w,orientation:o,dir:b,activationMode:m,children:l.jsx(j.Primitive.div,{dir:b,"data-orientation":o,..._,ref:r})})});K.displayName=S;var W="TabsList",Z=I.forwardRef((t,r)=>{const{__scopeTabs:a,loop:n=!0,...i}=t,d=M(W,a),o=H(a);return l.jsx(y.Root,{asChild:!0,...o,orientation:d.orientation,dir:d.dir,loop:n,children:l.jsx(j.Primitive.div,{role:"tablist","aria-orientation":d.orientation,...i,ref:r})})});Z.displayName=W;var X="TabsTrigger",J=I.forwardRef((t,r)=>{const{__scopeTabs:a,value:n,disabled:i=!1,...d}=t,o=M(X,a),s=H(a),m=Y(o.baseId,n),_=ee(o.baseId,n),b=n===o.value;return l.jsx(y.Item,{asChild:!0,...s,focusable:!i,active:b,children:l.jsx(j.Primitive.button,{type:"button",role:"tab","aria-selected":b,"aria-controls":_,"data-state":b?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:m,...d,ref:r,onMouseDown:j.composeEventHandlers(t.onMouseDown,p=>{!i&&p.button===0&&p.ctrlKey===!1?o.onValueChange(n):p.preventDefault()}),onKeyDown:j.composeEventHandlers(t.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&o.onValueChange(n)}),onFocus:j.composeEventHandlers(t.onFocus,()=>{const p=o.activationMode!=="manual";!b&&!i&&p&&o.onValueChange(n)})})})});J.displayName=X;var Q="TabsContent",U=I.forwardRef((t,r)=>{const{__scopeTabs:a,value:n,forceMount:i,children:d,...o}=t,s=M(Q,a),m=Y(s.baseId,n),_=ee(s.baseId,n),b=n===s.value,p=I.useRef(b);return I.useEffect(()=>{const w=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(w)},[]),l.jsx(he.Presence,{present:i||b,children:({present:w})=>l.jsx(j.Primitive.div,{"data-state":b?"active":"inactive","data-orientation":s.orientation,role:"tabpanel","aria-labelledby":m,hidden:!w,id:_,tabIndex:0,...o,ref:r,style:{...t.style,animationDuration:p.current?"0s":void 0},children:w&&d})})});U.displayName=Q;function Y(t,r){return`${t}-trigger-${r}`}function ee(t,r){return`${t}-content-${r}`}var Ie=K,ye=Z,Se=J,Ne=U;const Re={"purpur-tab-content":"_purpur-tab-content_1ugbi_1","purpur-tab-content--force-mount":"_purpur-tab-content--force-mount_1ugbi_15"},Ee=P.c.bind(Re),G="purpur-tab-content",Ae=u.forwardRef(({children:t,tabId:r,"data-testid":a,className:n,disableForceMount:i,...d},o)=>l.jsx(Ne,{ref:o,className:Ee(G,n,{[`${G}--force-mount`]:!i}),"data-testid":a,value:r,forceMount:!i||void 0,tabIndex:0,...d,children:t})),Le=t=>!!t&&u.isValidElement(t)&&!!t.props.name&&!!t.props.tabId,De={"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"},Pe=P.c.bind(De),D="purpur-tab-header",Me=u.forwardRef(({index:t,tabId:r,variant:a,negative:n,onFocus:i,fullWidth:d,"data-testid":o,children:s},m)=>l.jsx(Se,{id:`${r}-trigger`,className:Pe(D,`${D}--${a}${n?"-negative":""}`,{[`${D}--full-width`]:d}),value:r,"data-testid":o,"data-index":t,ref:m,onFocus:i,children:s})),ke={"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"},qe=["line","contained"],te=t=>new CustomEvent("tabChangeDetail",{detail:{value:t}}),T=P.c.bind(ke),f="purpur-tabs",Ve=(t,r)=>{if(typeof t?.getBoundingClientRect!="function"||typeof r?.scroll!="function")return;const a=t.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"})},re=({children:t,variant:r="line",negative:a=!1,fullWidth:n=!1,onChange:i,className:d,defaultValue:o,animateHeight:s=!1,"data-testid":m,value:_,...b})=>{const p=u.useRef(null),[w,ne]=u.useState(-1),[se,k]=u.useState({}),[ae,oe]=u.useState(0),[ie,ce]=u.useState(0),v=u.Children.toArray(t).filter(Le),$=u.useRef(null),N=u.useRef(new Array(v.length)),q=200,R=r==="line",le=T(f,`${f}--${r}${a?"-negative":""}`,{[`${f}--full-width`]:n},d),E=u.Children.map(v,({props:{tabId:e}})=>e),ue=()=>{const e=E.findIndex(c=>c===o);return e>=0?e:0},[A,V]=u.useState(ue),[de,z]=u.useState(_??o??v[0].props.tabId);if(u.useEffect(()=>{_&&(z(_),V(v.findIndex(e=>e.props.tabId===_)))},[v,_]),new Set(E).size!==E.length)throw new Error("tabId must be unique");const L=(e,c)=>c||m?`${c||m}-${e}`:void 0,B=()=>{if(!R)return;const e=N.current[A];oe(e?.offsetLeft||0),ce(e?.getBoundingClientRect().width||0)},F=e=>{z(e),R&&!_&&V(v.findIndex(c=>c.props.tabId===e)),i?.(te(e))},pe=e=>{if($?.current){const{scrollLeft:c}=$.current,g=e==="left"?-q:q;$.current.scroll({left:c+g,behavior:"smooth"})}},O=({side:e})=>l.jsx("button",{className:T(`${f}__scroll-button`,`${f}__scroll-button--${e}`),onClick:()=>pe(e),type:"button","aria-hidden":"true",tabIndex:-1,"data-testid":L("scroll-button"),children:l.jsx(ve.b,{svg:e==="left"?Ce:Te,size:"md"})});u.useEffect(()=>{const e=()=>{if(p.current&&s){const g=p.current.offsetHeight;ne(g)}},c=()=>{e(),B()};return e(),window.addEventListener("resize",c),()=>{window.removeEventListener("resize",c)}},[A,s]),u.useEffect(()=>{B()},[A,n,v.length,r]),u.useEffect(()=>{const e=$.current;if(!e)return;const c=()=>{const{scrollLeft:g,scrollWidth:x,clientWidth:h}=e,C=x>h,be=g<=1,fe=g+h>=x-1;if(!C){k({});return}k({[`${f}__wrapper--scroll-start`]:!be,[`${f}__wrapper--scroll-end`]:!fe})};return c(),e.addEventListener("scroll",c,{passive:!0}),window.addEventListener("resize",c),()=>{e.removeEventListener("scroll",c),window.removeEventListener("resize",c)}},[]);const _e=e=>{const c=e.target,g=parseInt(c.dataset.index??"",10);if(isNaN(g))return;const x=v.length;let h=null;switch(e.key){case"ArrowRight":h=(g+1)%x;break;case"ArrowLeft":h=(g-1+x)%x;break;case"Home":h=0;break;case"End":h=x-1;break}if(h!==null){const C=v[h].props.tabId;F(C),N.current[h]?.focus()}};return l.jsx(Ie,{defaultValue:o??v[0].props.tabId,onValueChange:F,"data-testid":m,className:le,value:_??de,activationMode:"manual",...b,children:l.jsxs("div",{className:T(`${f}__container`),children:[l.jsxs("div",{className:T(`${f}__wrapper`,se),children:[l.jsxs(ye,{ref:e=>{$.current=e},className:T(`${f}__list`),onKeyDown:_e,children:[u.Children.map(v,(e,c)=>{const{name:g,tabId:x,"data-testid":h}=e.props;return l.jsx(Me,{"data-testid":L("header",h),index:c,tabId:x,ref:C=>{C&&(N.current[c]=C)},onFocus:C=>{Ve(C.target,$.current)},variant:r,negative:a,fullWidth:n,children:g})}),R&&l.jsx("div",{className:T(`${f}__selected-border`),style:{width:ie,transform:`translateX(${ae}px)`},"data-testid":L("selected-border")})]}),l.jsx(O,{side:"left"}),l.jsx(O,{side:"right"})]}),l.jsx("div",{className:s?T(`${f}__content-wrapper`):"",style:{height:s&&w>-1?`${w}px`:"auto"},children:l.jsx("div",{ref:p,className:T(`${f}__content-container`),children:u.Children.map(v,e=>e)})})]})})};re.Content=Ae;exports.Tabs=re;exports.createTabChangeDetailEvent=te;exports.tabsVariants=qe;
|
|
2
|
+
//# sourceMappingURL=tabs-D-nfZHIA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-D-nfZHIA.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 tabIndex={0}\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 const [activeIndex, setActiveIndex] = useState(getDefaultTabIndex);\n\n // Internal active tab ID — keeps Radix always controlled so our keydown handler\n // can activate tabs directly without relying on Radix's mouse/focus events.\n const [activeTabId, setActiveTabId] = useState<string>(\n value ?? defaultValue ?? tabContentChildren[0].props.tabId\n );\n\n useEffect(() => {\n if (value) {\n setActiveTabId(value);\n setActiveIndex(tabContentChildren.findIndex((child) => child.props.tabId === value));\n }\n }, [tabContentChildren, value]);\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 setActiveTabId(_value);\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 const handleTabListKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const currentIndex = parseInt(target.dataset.index ?? \"\", 10);\n if (isNaN(currentIndex)) return;\n\n const total = tabContentChildren.length;\n let nextIndex: number | null = null;\n\n switch (e.key) {\n case \"ArrowRight\":\n nextIndex = (currentIndex + 1) % total;\n break;\n case \"ArrowLeft\":\n nextIndex = (currentIndex - 1 + total) % total;\n break;\n case \"Home\":\n nextIndex = 0;\n break;\n case \"End\":\n nextIndex = total - 1;\n break;\n }\n\n if (nextIndex !== null) {\n const nextTabId = tabContentChildren[nextIndex].props.tabId;\n handleTabChange(nextTabId);\n tabChildren.current[nextIndex]?.focus();\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 ?? activeTabId}\n activationMode=\"manual\"\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 onKeyDown={handleTabListKeyDown}\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","activeIndex","setActiveIndex","activeTabId","setActiveTabId","useEffect","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","handleTabListKeyDown","currentIndex","total","nextIndex","nextTabId","Root","jsxs","el","childDataTestId"],"mappings":"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","x_google_ignoreList":[2]}
|
package/dist/tabs.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./tabs-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./tabs-D-nfZHIA.js");exports.Tabs=a.Tabs;exports.createTabChangeDetailEvent=a.createTabChangeDetailEvent;exports.tabsVariants=a.tabsVariants;
|
|
2
2
|
//# sourceMappingURL=tabs.cjs.js.map
|