@purpur/library 9.0.5 → 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 +39 -0
- package/CHANGELOG.md +20 -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/draggable-table.d.ts.map +1 -1
- package/dist/components/table/src/table-settings-drawer.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-D3qWbbU4.js.map +1 -0
- package/dist/{popover-DBMI9Jy1.mjs → popover-ZeQKmyEb.mjs} +25 -25
- package/dist/popover-ZeQKmyEb.mjs.map +1 -0
- 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-C7B5ZJaB.js → promotion-card-CXNhskRl.js} +2 -2
- package/dist/{promotion-card-C7B5ZJaB.js.map → promotion-card-CXNhskRl.js.map} +1 -1
- package/dist/{promotion-card-wGGt75eI.mjs → promotion-card-_bPyVr9t.mjs} +33 -33
- package/dist/{promotion-card-wGGt75eI.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 +27 -27
- 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/popover-B1BgSoQx.js.map +0 -1
- package/dist/popover-DBMI9Jy1.mjs.map +0 -1
- 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/tabs.es.js
CHANGED
|
@@ -3,8 +3,8 @@ import { forwardRef as N } from "react";
|
|
|
3
3
|
import { F as y } from "./field-error-text-CBSX8dGx.mjs";
|
|
4
4
|
import { F as O } from "./field-helper-text-C5ee4SFV.mjs";
|
|
5
5
|
import { L as A } from "./label-7sJe5-pX.mjs";
|
|
6
|
-
import "./ThemeProvider-
|
|
7
|
-
import { u as C } from "./useColorScheme-
|
|
6
|
+
import "./ThemeProvider-BR1hJQOD.mjs";
|
|
7
|
+
import { u as C } from "./useColorScheme-9rgSgG0N.mjs";
|
|
8
8
|
import { c as F } from "./bind-CU-R61T-.mjs";
|
|
9
9
|
const p = {
|
|
10
10
|
"purpur-text-area": "_purpur-text-area_1qqf0_1",
|
|
@@ -90,4 +90,4 @@ export {
|
|
|
90
90
|
R,
|
|
91
91
|
T
|
|
92
92
|
};
|
|
93
|
-
//# sourceMappingURL=text-area-
|
|
93
|
+
//# sourceMappingURL=text-area-CpYWt99s.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-area-
|
|
1
|
+
{"version":3,"file":"text-area-CpYWt99s.mjs","sources":["../../../components/text-area/src/text-area.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { Label } from \"@purpur/label\";\nimport { useColorScheme } from \"@purpur/theme\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-area.module.scss\";\n\nexport const ResizeOption = {\n NONE: \"none\",\n BOTH: \"both\",\n HORIZONTAL: \"horizontal\",\n VERTICAL: \"vertical\",\n} as const;\n\nexport type ResizeOption = (typeof ResizeOption)[keyof typeof ResizeOption];\n\nexport type TextAreaProps = Omit<BaseProps<\"textarea\">, \"id\"> & {\n id: string;\n /**\n * Use to render error message below the text area. The text area renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the text area's input. Renders below the text area.\n * */\n helperText?: string;\n /**\n * The label of the text area.\n * */\n label?: string;\n /**\n * The height of the text area, measured in number of rows.\n * */\n rows?: number;\n /**\n * The width of the text area, measured in number of cols.\n * */\n cols?: number;\n /**\n * Controls whether the text area can be resized, and in which direction.\n * */\n resize?: ResizeOption;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-area\";\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n id,\n [\"data-testid\"]: dataTestId,\n className,\n errorText,\n helperText,\n label,\n rows = 3,\n cols = 90,\n resize = ResizeOption.BOTH,\n style,\n ...props\n },\n ref\n ) => {\n const [colorScheme] = useColorScheme();\n\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n\n const helperTextId = helperText ? `${id}-helper-text` : undefined;\n\n const textAreaContainerClassnames = cx(`${rootClassName}__textarea-container`, {\n [`${rootClassName}__textarea-container--disabled`]: props.disabled,\n [`${rootClassName}__textarea-container--readonly`]: props.readOnly && !props.disabled,\n });\n\n return (\n <div className={cx(className, rootClassName)} data-testid={dataTestId}>\n {label && (\n <Label\n htmlFor={id}\n disabled={props.disabled}\n className={styles[`${rootClassName}__label`]}\n data-testid={getTestId(\"label\")}\n >\n {props.required && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={textAreaContainerClassnames}>\n <textarea\n {...props}\n ref={ref}\n id={id}\n data-testid={getTestId(\"textarea\")}\n aria-describedby={props[\"aria-describedby\"] || helperTextId}\n aria-invalid={props[\"aria-invalid\"] || !!errorText}\n className={cx(\n `${rootClassName}__textarea`,\n `${rootClassName}__textarea--${colorScheme}`,\n {\n [`${rootClassName}__textarea--error`]: !!errorText,\n }\n )}\n rows={rows}\n cols={cols}\n style={{ resize, ...style }}\n />\n <div className={styles[`${rootClassName}__frame`]} />\n </div>\n {helperTextId && (\n <FieldHelperText data-testid={getTestId(\"helper-text\")} id={helperTextId}>\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")}>{errorText}</FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n"],"names":["ResizeOption","cx","c","styles","rootClassName","TextArea","forwardRef","id","dataTestId","className","errorText","helperText","label","rows","cols","resize","style","props","ref","colorScheme","useColorScheme","getTestId","name","helperTextId","textAreaContainerClassnames","jsxs","Label","jsx","FieldHelperText","FieldErrorText"],"mappings":";;;;;;;;;;;;;;;;;;;;;GAUaA,IAAe;AAAA,EAC1B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,UAAU;AACZ,GAgCMC,IAAKC,EAAE,KAAKC,CAAM,GAClBC,IAAgB,oBAETC,IAAWC;AAAA,EACtB,CACE;AAAA,IACE,IAAAC;AAAA,IACA,CAAC,gBAAgBC;AAAA,IACjB,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,MAAAC,IAAO;AAAA,IACP,QAAAC,IAASf,EAAa;AAAA,IACtB,OAAAgB;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACC,CAAW,IAAIC,EAAA,GAEhBC,IAAY,CAACC,MAAkBd,IAAa,GAAGA,CAAU,IAAIc,CAAI,KAAK,QAEtEC,IAAeZ,IAAa,GAAGJ,CAAE,iBAAiB,QAElDiB,IAA8BvB,EAAG,GAAGG,CAAa,wBAAwB;AAAA,MAC7E,CAAC,GAAGA,CAAa,gCAAgC,GAAGa,EAAM;AAAA,MAC1D,CAAC,GAAGb,CAAa,gCAAgC,GAAGa,EAAM,YAAY,CAACA,EAAM;AAAA,IAAA,CAC9E;AAED,WACE,gBAAAQ,EAAC,SAAI,WAAWxB,EAAGQ,GAAWL,CAAa,GAAG,eAAaI,GACxD,UAAA;AAAA,MAAAI,KACC,gBAAAa;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,SAASnB;AAAA,UACT,UAAUU,EAAM;AAAA,UAChB,WAAWd,EAAO,GAAGC,CAAa,SAAS;AAAA,UAC3C,eAAaiB,EAAU,OAAO;AAAA,UAE7B,UAAA;AAAA,YAAAJ,EAAM,YAAY,gBAAAU,EAAC,QAAA,EAAK,eAAW,IAAC,UAAA,KAAC;AAAA,YACrCf;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAa,EAAC,OAAA,EAAI,WAAWD,GACd,UAAA;AAAA,QAAA,gBAAAG;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAGV;AAAA,YACJ,KAAAC;AAAA,YACA,IAAAX;AAAA,YACA,eAAac,EAAU,UAAU;AAAA,YACjC,oBAAkBJ,EAAM,kBAAkB,KAAKM;AAAA,YAC/C,gBAAcN,EAAM,cAAc,KAAK,CAAC,CAACP;AAAA,YACzC,WAAWT;AAAA,cACT,GAAGG,CAAa;AAAA,cAChB,GAAGA,CAAa,eAAee,CAAW;AAAA,cAC1C;AAAA,gBACE,CAAC,GAAGf,CAAa,mBAAmB,GAAG,CAAC,CAACM;AAAA,cAAA;AAAA,YAC3C;AAAA,YAEF,MAAAG;AAAA,YACA,MAAAC;AAAA,YACA,OAAO,EAAE,QAAAC,GAAQ,GAAGC,EAAA;AAAA,UAAM;AAAA,QAAA;AAAA,0BAE3B,OAAA,EAAI,WAAWb,EAAO,GAAGC,CAAa,SAAS,EAAA,CAAG;AAAA,MAAA,GACrD;AAAA,MACCmB,uBACEK,GAAA,EAAgB,eAAaP,EAAU,aAAa,GAAG,IAAIE,GACzD,UAAAZ,EAAA,CACH;AAAA,MAEDD,KACC,gBAAAiB,EAACE,GAAA,EAAe,eAAaR,EAAU,YAAY,GAAI,UAAAX,EAAA,CAAU;AAAA,IAAA,GAErE;AAAA,EAEJ;AACF;AAEAL,EAAS,cAAc;"}
|
package/dist/text-area.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as i, jsxs as u } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as T, forwardRef as k, useId as B, isValidElement as H } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { b as L } from "./button-BfYKNBmC.mjs";
|
|
4
4
|
import { F as M } from "./field-error-text-CBSX8dGx.mjs";
|
|
5
5
|
import { F as S } from "./field-helper-text-C5ee4SFV.mjs";
|
|
6
6
|
import { r as D } from "./check-circle-filled.es-umBwOv5_.mjs";
|
|
@@ -182,4 +182,4 @@ export {
|
|
|
182
182
|
C as T,
|
|
183
183
|
_e as i
|
|
184
184
|
};
|
|
185
|
-
//# sourceMappingURL=text-field-
|
|
185
|
+
//# sourceMappingURL=text-field-5rIuW8gc.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-field-PKAaXO1N.mjs","sources":["../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useId,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\ntype TextFieldBaseProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldBaseProps &\n TextFieldClearProps;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-field\";\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n ...inputProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["useMutableRefObject","value","useRef","cx","c","styles","rootClassName","TextField","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","inputProps","ref","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","isTextField","child","isValidElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text-field-5rIuW8gc.mjs","sources":["../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useId,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\ntype TextFieldBaseProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldBaseProps &\n TextFieldClearProps;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-field\";\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n ...inputProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["useMutableRefObject","value","useRef","cx","c","styles","rootClassName","TextField","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","inputProps","ref","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","isTextField","child","isValidElement"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const n=require("react/jsx-runtime"),s=require("react"),k=require("./button-
|
|
2
|
-
//# sourceMappingURL=text-field-
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),s=require("react"),k=require("./button-DDYGuqZ0.js"),z=require("./field-error-text-FhQulSV5.js"),H=require("./field-helper-text-DSKO-Tce.js"),B=require("./check-circle-filled.es-5-GXE9l4.js"),M=require("./close.es-VL3lKi1O.js"),S=require("./label-yHK80hhV.js"),D=require("./spinner-tKunS_o-.js"),G=require("./bind-DeUYJ6m9.js"),J={"purpur-text-field":"_purpur-text-field_1n0q1_1","purpur-text-field__label":"_purpur-text-field__label_1n0q1_7","purpur-text-field__label-text":"_purpur-text-field__label-text_1n0q1_12","purpur-text-field__field-row":"_purpur-text-field__field-row_1n0q1_15","purpur-text-field__frame":"_purpur-text-field__frame_1n0q1_19","purpur-text-field__frame--negative":"_purpur-text-field__frame--negative_1n0q1_26","purpur-text-field__input-container":"_purpur-text-field__input-container_1n0q1_29","purpur-text-field__input-container--disabled":"_purpur-text-field__input-container--disabled_1n0q1_40","purpur-text-field__input-container--readonly":"_purpur-text-field__input-container--readonly_1n0q1_43","purpur-text-field__input-container--has-clear-button":"_purpur-text-field__input-container--has-clear-button_1n0q1_46","purpur-text-field__input-container--end-adornment":"_purpur-text-field__input-container--end-adornment_1n0q1_49","purpur-text-field__input":"_purpur-text-field__input_1n0q1_29","purpur-text-field__input-container--start-adornment":"_purpur-text-field__input-container--start-adornment_1n0q1_55","purpur-text-field__input-container--negative":"_purpur-text-field__input-container--negative_1n0q1_61","purpur-text-field__input--valid":"_purpur-text-field__input--valid_1n0q1_109","purpur-text-field__input--error":"_purpur-text-field__input--error_1n0q1_109","purpur-text-field__input--negative":"_purpur-text-field__input--negative_1n0q1_130","purpur-text-field__adornment-container":"_purpur-text-field__adornment-container_1n0q1_146","purpur-text-field__valid-icon":"_purpur-text-field__valid-icon_1n0q1_151","purpur-text-field__valid-icon--negative":"_purpur-text-field__valid-icon--negative_1n0q1_154"},K=d=>s.useRef(d),_=G.c.bind(J),e="purpur-text-field",m=s.forwardRef(({["data-testid"]:d,className:R,clearButtonAriaLabel:b,beforeField:q,afterField:v,endAdornment:p,errorText:l,helperText:h,hideRequiredAsterisk:C=!1,label:$,loading:j=!1,onClear:y,startAdornment:I,valid:T=!1,negative:i=!1,...t},u)=>{const w=s.useId(),c=t.id??w,r=a=>d?`${d}-${a}`:void 0,N=T&&!l,o=h?`${c}-helper-text`:void 0,x=[I].filter(a=>!!a),g=(typeof t.value=="number"?t.value!==void 0:t.value?.length)&&!t.disabled&&!t.readOnly&&!j&&y&&b,F=K(null),E=a=>{F.current=a,typeof u=="function"?u(a):u&&(u.current=a)},O=()=>{y?.(),F.current?.focus()},f=[j&&n.jsx(D.Spinner,{disabled:t.disabled,size:"xs","data-testid":r("spinner"),negative:i},"spinner"),g&&n.jsx(k.Button,{negative:i,variant:"tertiary-purple",onClick:O,iconOnly:!0,"aria-label":b??"","data-testid":r("clear-button"),tabIndex:-1,children:n.jsx(M.r,{size:"xs"})},"clear-button"),N&&n.jsx(B.r,{"data-testid":r("valid-icon"),className:_(`${e}__valid-icon`,{[`${e}__valid-icon--negative`]:i})},"valid-icon")].filter(a=>!!a),V=_(`${e}__input-container`,{[`${e}__input-container--start-adornment`]:x.length,[`${e}__input-container--end-adornment`]:f.length||p,[`${e}__input-container--disabled`]:t.disabled,[`${e}__input-container--has-clear-button`]:g,[`${e}__input-container--readonly`]:t.readOnly&&!t.disabled,[`${e}__input-container--negative`]:i});return n.jsxs("div",{className:_(R,e),children:[$&&n.jsxs(S.Label,{htmlFor:c,className:_(`${e}__label`),"data-testid":r("label"),disabled:t.disabled,negative:i,children:[t.required&&!C&&n.jsx("span",{"aria-hidden":!0,children:"*"}),$]}),n.jsxs("div",{className:_(`${e}__field-row`),children:[!!q&&q,n.jsxs("div",{className:V,children:[!!x.length&&n.jsx("div",{"data-testid":r("start-adornments"),className:_(`${e}__adornment-container`),children:x}),n.jsx("input",{...t,id:c,ref:E,"data-testid":r("input"),"aria-describedby":t["aria-describedby"]||o,"aria-invalid":t["aria-invalid"]||!!l,className:_([`${e}__input`,{[`${e}__input--valid`]:N,[`${e}__input--error`]:!!l,[`${e}__input--negative`]:i}])}),n.jsx("div",{className:_(`${e}__frame`,{[`${e}__frame--negative`]:i})}),(!!f.length||p)&&n.jsxs("div",{"data-testid":r("end-adornments"),className:_(`${e}__adornment-container`),children:[f,p]})]}),!!v&&v]}),o&&n.jsx(H.FieldHelperText,{"data-testid":r("helper-text"),id:o,negative:i,disabled:t.disabled,children:h}),l&&n.jsx(z.FieldErrorText,{"data-testid":r("error-text"),negative:i,children:l})]})});m.displayName="TextField";const L=d=>s.isValidElement(d)&&d.type.displayName===m.displayName;exports.TextField=m;exports.isTextField=L;
|
|
2
|
+
//# sourceMappingURL=text-field-Xt6T3zjO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-field-B8a-NKm4.js","sources":["../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useId,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\ntype TextFieldBaseProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldBaseProps &\n TextFieldClearProps;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-field\";\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n ...inputProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["useMutableRefObject","value","useRef","cx","c","styles","rootClassName","TextField","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","inputProps","ref","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","isTextField","child","isValidElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text-field-Xt6T3zjO.js","sources":["../../../components/text-field/src/utils.ts","../../../components/text-field/src/text-field.tsx"],"sourcesContent":["import { type MutableRefObject, useRef } from \"react\";\n\nexport const useMutableRefObject = <T>(value: T): MutableRefObject<T> => {\n return useRef<T>(value) as MutableRefObject<T>;\n};\n","import React, {\n forwardRef,\n type HTMLInputTypeAttribute,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useId,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { IconCheckCircleFilled } from \"@purpur/icon/check-circle-filled\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Label } from \"@purpur/label\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./text-field.module.scss\";\nimport { useMutableRefObject } from \"./utils\";\n\ntype TextFieldBaseProps = {\n /**\n * Use to display e.g. a button before the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n beforeField?: ReactNode;\n /**\n * Use to display e.g. a button after the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n afterField?: ReactNode;\n /**\n * Use to display e.g. an icon at the end inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n endAdornment?: ReactNode;\n /**\n * Use to render error message below the text field. The text field renders with error appearance.\n * */\n errorText?: string;\n /**\n * Use to give context about the field's input. Renders below the field.\n * */\n helperText?: string;\n /**\n * The label of the text field.\n * */\n label?: string;\n /**\n * Use to render a spinner at the end inside of the text field.\n */\n loading?: boolean;\n /**\n * Hide the asterisk for required fields.\n * This is useful when the field is required but the context already indicates that.\n */\n hideRequiredAsterisk?: boolean;\n /**\n * Use to display e.g. an icon at the start inside of the text field.\n *\n * _NOTE: Should ideally only be used by other purpur components!_\n */\n startAdornment?: ReactNode;\n /**\n * Use to set the type of the field.\n */\n type?: Extract<\n HTMLInputTypeAttribute,\n \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\"\n >;\n /**\n * Use to render text field with valid appearance. A check\n * icon will render at the start inside of the input.\n */\n valid?: boolean;\n negative?: boolean;\n};\n\ntype TextFieldClearProps =\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel: string;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear: () => void;\n }\n | {\n /**\n * An accessible label for the clear button.\n * */\n clearButtonAriaLabel?: never;\n /**\n * Event handler called when the clear button is clicked.\n * */\n onClear?: never;\n };\n\nexport type TextFieldProps = Omit<BaseProps<\"input\">, \"type\"> &\n TextFieldBaseProps &\n TextFieldClearProps;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-text-field\";\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n clearButtonAriaLabel,\n beforeField,\n afterField,\n endAdornment,\n errorText,\n helperText,\n hideRequiredAsterisk = false,\n label,\n loading = false,\n onClear,\n startAdornment,\n valid = false,\n negative = false,\n ...inputProps\n },\n ref\n ) => {\n const randomId = useId();\n const inputId = inputProps.id ?? randomId;\n const getTestId = (name: string) => (dataTestId ? `${dataTestId}-${name}` : undefined);\n const isValid = valid && !errorText;\n const helperTextId = helperText ? `${inputId}-helper-text` : undefined;\n const startAdornments: ReactNode[] = [startAdornment].filter((adornment) => !!adornment);\n const hasValue =\n typeof inputProps.value === \"number\"\n ? inputProps.value !== undefined\n : inputProps.value?.length;\n const hasClearButton =\n hasValue &&\n !inputProps.disabled &&\n !inputProps.readOnly &&\n !loading &&\n onClear &&\n clearButtonAriaLabel;\n\n const internalRef = useMutableRefObject<HTMLInputElement | null>(null);\n const setRef = (node: HTMLInputElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n const handleClear = () => {\n onClear?.();\n internalRef.current?.focus();\n };\n\n const localEndAdornments: ReactNode[] = [\n loading && (\n <Spinner\n key=\"spinner\"\n disabled={inputProps.disabled}\n size=\"xs\"\n data-testid={getTestId(\"spinner\")}\n negative={negative}\n />\n ),\n hasClearButton && (\n <Button\n negative={negative}\n key=\"clear-button\"\n variant=\"tertiary-purple\"\n onClick={handleClear}\n iconOnly\n aria-label={clearButtonAriaLabel ?? \"\"}\n data-testid={getTestId(\"clear-button\")}\n tabIndex={-1}\n >\n <IconClose size=\"xs\" />\n </Button>\n ),\n isValid && (\n <IconCheckCircleFilled\n key=\"valid-icon\"\n data-testid={getTestId(\"valid-icon\")}\n className={cx(`${rootClassName}__valid-icon`, {\n [`${rootClassName}__valid-icon--negative`]: negative,\n })}\n />\n ),\n ].filter((adornment) => !!adornment);\n\n const inputContainerClassnames = cx(`${rootClassName}__input-container`, {\n [`${rootClassName}__input-container--start-adornment`]: startAdornments.length,\n [`${rootClassName}__input-container--end-adornment`]:\n localEndAdornments.length || endAdornment,\n [`${rootClassName}__input-container--disabled`]: inputProps.disabled,\n [`${rootClassName}__input-container--has-clear-button`]: hasClearButton,\n [`${rootClassName}__input-container--readonly`]: inputProps.readOnly && !inputProps.disabled,\n [`${rootClassName}__input-container--negative`]: negative,\n });\n\n return (\n <div className={cx(className, rootClassName)}>\n {label && (\n <Label\n htmlFor={inputId}\n className={cx(`${rootClassName}__label`)}\n data-testid={getTestId(\"label\")}\n disabled={inputProps.disabled}\n negative={negative}\n >\n {inputProps.required && !hideRequiredAsterisk && <span aria-hidden>*</span>}\n {label}\n </Label>\n )}\n <div className={cx(`${rootClassName}__field-row`)}>\n {!!beforeField && beforeField}\n <div className={inputContainerClassnames}>\n {!!startAdornments.length && (\n <div\n data-testid={getTestId(\"start-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {startAdornments}\n </div>\n )}\n <input\n {...inputProps}\n id={inputId}\n ref={setRef}\n data-testid={getTestId(\"input\")}\n aria-describedby={inputProps[\"aria-describedby\"] || helperTextId}\n aria-invalid={inputProps[\"aria-invalid\"] || !!errorText}\n className={cx([\n `${rootClassName}__input`,\n {\n [`${rootClassName}__input--valid`]: isValid,\n [`${rootClassName}__input--error`]: !!errorText,\n [`${rootClassName}__input--negative`]: negative,\n },\n ])}\n />\n <div\n className={cx(`${rootClassName}__frame`, {\n [`${rootClassName}__frame--negative`]: negative,\n })}\n />\n {(!!localEndAdornments.length || endAdornment) && (\n <div\n data-testid={getTestId(\"end-adornments\")}\n className={cx(`${rootClassName}__adornment-container`)}\n >\n {localEndAdornments}\n {endAdornment}\n </div>\n )}\n </div>\n {!!afterField && afterField}\n </div>\n {helperTextId && (\n <FieldHelperText\n data-testid={getTestId(\"helper-text\")}\n id={helperTextId}\n negative={negative}\n disabled={inputProps.disabled}\n >\n {helperText}\n </FieldHelperText>\n )}\n {errorText && (\n <FieldErrorText data-testid={getTestId(\"error-text\")} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport const isTextField = (child?: ReactNode): child is ReactElement<TextFieldProps> =>\n isValidElement<TextFieldProps>(child) &&\n (child.type as any).displayName === TextField.displayName; // eslint-disable-line @typescript-eslint/no-explicit-any\n"],"names":["useMutableRefObject","value","useRef","cx","c","styles","rootClassName","TextField","forwardRef","dataTestId","className","clearButtonAriaLabel","beforeField","afterField","endAdornment","errorText","helperText","hideRequiredAsterisk","label","loading","onClear","startAdornment","valid","negative","inputProps","ref","randomId","useId","inputId","getTestId","name","isValid","helperTextId","startAdornments","adornment","hasClearButton","internalRef","setRef","node","handleClear","localEndAdornments","jsx","Spinner","Button","IconClose","IconCheckCircleFilled","inputContainerClassnames","jsxs","Label","FieldHelperText","FieldErrorText","isTextField","child","isValidElement"],"mappings":"0jEAEaA,EAA0BC,GAC9BC,EAAAA,OAAUD,CAAK,ECyGlBE,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,oBAETC,EAAYC,EAAAA,WACvB,CACE,CACE,CAAC,eAAgBC,EACjB,UAAAC,EACA,qBAAAC,EACA,YAAAC,EACA,WAAAC,EACA,aAAAC,EACA,UAAAC,EACA,WAAAC,EACA,qBAAAC,EAAuB,GAAA,MACvBC,EACA,QAAAC,EAAU,GACV,QAAAC,EACA,eAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EAAW,GACX,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAWC,EAAAA,MAAA,EACXC,EAAUJ,EAAW,IAAME,EAC3BG,EAAaC,GAAkBrB,EAAa,GAAGA,CAAU,IAAIqB,CAAI,GAAK,OACtEC,EAAUT,GAAS,CAACP,EACpBiB,EAAehB,EAAa,GAAGY,CAAO,eAAiB,OACvDK,EAA+B,CAACZ,CAAc,EAAE,OAAQa,GAAc,CAAC,CAACA,CAAS,EAKjFC,GAHJ,OAAOX,EAAW,OAAU,SACxBA,EAAW,QAAU,OACrBA,EAAW,OAAO,SAGtB,CAACA,EAAW,UACZ,CAACA,EAAW,UACZ,CAACL,GACDC,GACAT,EAEIyB,EAAcpC,EAA6C,IAAI,EAC/DqC,EAAUC,GAAkC,CAChDF,EAAY,QAAUE,EAClB,OAAOb,GAAQ,WACjBA,EAAIa,CAAI,EACCb,IACTA,EAAI,QAAUa,EAElB,EACMC,EAAc,IAAM,CACxBnB,IAAA,EACAgB,EAAY,SAAS,MAAA,CACvB,EAEMI,EAAkC,CACtCrB,GACEsB,EAAAA,IAACC,EAAAA,QAAA,CAEC,SAAUlB,EAAW,SACrB,KAAK,KACL,cAAaK,EAAU,SAAS,EAChC,SAAAN,CAAA,EAJI,SAAA,EAORY,GACEM,EAAAA,IAACE,EAAAA,OAAA,CACC,SAAApB,EAEA,QAAQ,kBACR,QAASgB,EACT,SAAQ,GACR,aAAY5B,GAAwB,GACpC,cAAakB,EAAU,cAAc,EACrC,SAAU,GAEV,SAAAY,EAAAA,IAACG,EAAAA,EAAA,CAAU,KAAK,IAAA,CAAK,CAAA,EARjB,cAAA,EAWRb,GACEU,EAAAA,IAACI,EAAAA,EAAA,CAEC,cAAahB,EAAU,YAAY,EACnC,UAAW1B,EAAG,GAAGG,CAAa,eAAgB,CAC5C,CAAC,GAAGA,CAAa,wBAAwB,EAAGiB,CAAA,CAC7C,CAAA,EAJG,YAAA,CAKN,EAEF,OAAQW,GAAc,CAAC,CAACA,CAAS,EAE7BY,EAA2B3C,EAAG,GAAGG,CAAa,oBAAqB,CACvE,CAAC,GAAGA,CAAa,oCAAoC,EAAG2B,EAAgB,OACxE,CAAC,GAAG3B,CAAa,kCAAkC,EACjDkC,EAAmB,QAAU1B,EAC/B,CAAC,GAAGR,CAAa,6BAA6B,EAAGkB,EAAW,SAC5D,CAAC,GAAGlB,CAAa,qCAAqC,EAAG6B,EACzD,CAAC,GAAG7B,CAAa,6BAA6B,EAAGkB,EAAW,UAAY,CAACA,EAAW,SACpF,CAAC,GAAGlB,CAAa,6BAA6B,EAAGiB,CAAA,CAClD,EAED,cACG,MAAA,CAAI,UAAWpB,EAAGO,EAAWJ,CAAa,EACxC,SAAA,CAAAY,GACC6B,EAAAA,KAACC,EAAAA,MAAA,CACC,QAASpB,EACT,UAAWzB,EAAG,GAAGG,CAAa,SAAS,EACvC,cAAauB,EAAU,OAAO,EAC9B,SAAUL,EAAW,SACrB,SAAAD,EAEC,SAAA,CAAAC,EAAW,UAAY,CAACP,SAAyB,OAAA,CAAK,cAAW,GAAC,SAAA,IAAC,EACnEC,CAAA,CAAA,CAAA,SAGJ,MAAA,CAAI,UAAWf,EAAG,GAAGG,CAAa,aAAa,EAC7C,SAAA,CAAA,CAAC,CAACM,GAAeA,EAClBmC,EAAAA,KAAC,MAAA,CAAI,UAAWD,EACb,SAAA,CAAA,CAAC,CAACb,EAAgB,QACjBQ,EAAAA,IAAC,MAAA,CACC,cAAaZ,EAAU,kBAAkB,EACzC,UAAW1B,EAAG,GAAGG,CAAa,uBAAuB,EAEpD,SAAA2B,CAAA,CAAA,EAGLQ,EAAAA,IAAC,QAAA,CACE,GAAGjB,EACJ,GAAII,EACJ,IAAKS,EACL,cAAaR,EAAU,OAAO,EAC9B,mBAAkBL,EAAW,kBAAkB,GAAKQ,EACpD,eAAcR,EAAW,cAAc,GAAK,CAAC,CAACT,EAC9C,UAAWZ,EAAG,CACZ,GAAGG,CAAa,UAChB,CACE,CAAC,GAAGA,CAAa,gBAAgB,EAAGyB,EACpC,CAAC,GAAGzB,CAAa,gBAAgB,EAAG,CAAC,CAACS,EACtC,CAAC,GAAGT,CAAa,mBAAmB,EAAGiB,CAAA,CACzC,CACD,CAAA,CAAA,EAEHkB,EAAAA,IAAC,MAAA,CACC,UAAWtC,EAAG,GAAGG,CAAa,UAAW,CACvC,CAAC,GAAGA,CAAa,mBAAmB,EAAGiB,CAAA,CACxC,CAAA,CAAA,GAED,CAAC,CAACiB,EAAmB,QAAU1B,IAC/BiC,EAAAA,KAAC,MAAA,CACC,cAAalB,EAAU,gBAAgB,EACvC,UAAW1B,EAAG,GAAGG,CAAa,uBAAuB,EAEpD,SAAA,CAAAkC,EACA1B,CAAA,CAAA,CAAA,CACH,EAEJ,EACC,CAAC,CAACD,GAAcA,CAAA,EACnB,EACCmB,GACCS,EAAAA,IAACQ,EAAAA,gBAAA,CACC,cAAapB,EAAU,aAAa,EACpC,GAAIG,EACJ,SAAAT,EACA,SAAUC,EAAW,SAEpB,SAAAR,CAAA,CAAA,EAGJD,SACEmC,EAAAA,eAAA,CAAe,cAAarB,EAAU,YAAY,EAAG,SAAAN,EACnD,SAAAR,CAAA,CACH,CAAA,EAEJ,CAEJ,CACF,EAEAR,EAAU,YAAc,YAEjB,MAAM4C,EAAeC,GAC1BC,iBAA+BD,CAAK,GACnCA,EAAM,KAAa,cAAgB7C,EAAU"}
|
package/dist/text-field.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./text-field-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./text-field-Xt6T3zjO.js");exports.TextField=e.TextField;exports.isTextField=e.isTextField;
|
|
2
2
|
//# sourceMappingURL=text-field.cjs.js.map
|
package/dist/text-field.es.js
CHANGED
package/dist/theme.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { T as a, t as m,
|
|
2
|
-
import { u } from "./useColorScheme-
|
|
1
|
+
import { T as a, t as m, u as o, a as r } from "./ThemeProvider-BR1hJQOD.mjs";
|
|
2
|
+
import { u } from "./useColorScheme-9rgSgG0N.mjs";
|
|
3
3
|
export {
|
|
4
4
|
a as ThemeProvider,
|
|
5
5
|
m as teliaTheme,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { jsxs as X, jsx as v } from "react/jsx-runtime";
|
|
2
2
|
import * as z from "react";
|
|
3
|
-
import { useState as C, useCallback as
|
|
3
|
+
import { useState as C, useCallback as P, useEffect as R, isValidElement as W, cloneElement as A, useRef as x, forwardRef as I } from "react";
|
|
4
4
|
import { b as j } from "./icon.es-CZcKxTaM.mjs";
|
|
5
5
|
import { l as F } from "./checkmark-bold.es-CV3e_t3E.mjs";
|
|
6
6
|
import { L as U } from "./label-7sJe5-pX.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { P as V } from "./paragraph-Ci50OF1u.mjs";
|
|
8
8
|
import { u as G, c as J, a as K } from "./index-tyLV0iiH.mjs";
|
|
9
9
|
import { u as Q } from "./index-DLcqcWxM.mjs";
|
|
10
10
|
import { c as Y } from "./index-DOfn3ixy.mjs";
|
|
11
11
|
import { u as Z } from "./index-DPxjTK4w.mjs";
|
|
12
12
|
import { P as q } from "./index-CCNZ9uWB.mjs";
|
|
13
13
|
import { c as ee } from "./bind-CU-R61T-.mjs";
|
|
14
|
-
var
|
|
14
|
+
var M = "Switch", [te] = Y(M), [re, ne] = te(M), B = z.forwardRef(
|
|
15
15
|
(e, r) => {
|
|
16
16
|
const {
|
|
17
17
|
__scopeSwitch: t,
|
|
@@ -65,7 +65,7 @@ var P = "Switch", [te] = Y(P), [re, ne] = te(P), B = z.forwardRef(
|
|
|
65
65
|
] });
|
|
66
66
|
}
|
|
67
67
|
);
|
|
68
|
-
B.displayName =
|
|
68
|
+
B.displayName = M;
|
|
69
69
|
var H = "SwitchThumb", T = z.forwardRef(
|
|
70
70
|
(e, r) => {
|
|
71
71
|
const { __scopeSwitch: t, ...i } = e, o = ne(H, t);
|
|
@@ -129,7 +129,7 @@ const y = (e) => e && "touches" in e, ae = ({
|
|
|
129
129
|
const S = y(d.nativeEvent) ? d.nativeEvent.touches[0].clientX : d.nativeEvent.clientX;
|
|
130
130
|
f(S), t?.();
|
|
131
131
|
}
|
|
132
|
-
}, m =
|
|
132
|
+
}, m = P(
|
|
133
133
|
(d) => {
|
|
134
134
|
if (typeof p != "number")
|
|
135
135
|
return;
|
|
@@ -143,14 +143,14 @@ const y = (e) => e && "touches" in e, ae = ({
|
|
|
143
143
|
},
|
|
144
144
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
145
145
|
[i, h, a, p]
|
|
146
|
-
), _ =
|
|
146
|
+
), _ = P(() => {
|
|
147
147
|
f(void 0), h(void 0), c(!1), o?.();
|
|
148
148
|
}, [o, f]);
|
|
149
149
|
return R(() => (window.addEventListener("mousemove", m), window.addEventListener("touchmove", m), () => {
|
|
150
150
|
window.removeEventListener("mousemove", m), window.removeEventListener("touchmove", m);
|
|
151
151
|
}), [m]), R(() => (window.addEventListener("mouseup", _), window.addEventListener("touchend", _), () => {
|
|
152
152
|
window.removeEventListener("mouseup", _), window.removeEventListener("touchend", _);
|
|
153
|
-
}), [_]),
|
|
153
|
+
}), [_]), W(e) ? A(e, {
|
|
154
154
|
onMouseDown: l,
|
|
155
155
|
onTouchStart: l,
|
|
156
156
|
style: { ...u, transform: `translateX(${a ? n : g}px)` }
|
|
@@ -190,7 +190,7 @@ function ce() {
|
|
|
190
190
|
const e = x(!1);
|
|
191
191
|
return R(() => (e.current = !0, () => {
|
|
192
192
|
e.current = !1;
|
|
193
|
-
}), []),
|
|
193
|
+
}), []), P(() => e.current, []);
|
|
194
194
|
}
|
|
195
195
|
const ue = ({ checked: e, onChange: r }) => {
|
|
196
196
|
const t = x(null), i = x(null), [o, s] = C(void 0), [g, u] = C(!1), [n, h] = C(0), { height: p = 0 } = L({ ref: i, round: !0 }), { height: f = 0 } = L({ ref: t, round: !0 }), a = (f || 0) - p, c = p + a, l = a / 2, m = c / 2, _ = typeof o == "number" && (e ? o < m : o > m);
|
|
@@ -284,4 +284,4 @@ de.displayName = "Toggle";
|
|
|
284
284
|
export {
|
|
285
285
|
de as T
|
|
286
286
|
};
|
|
287
|
-
//# sourceMappingURL=toggle-
|
|
287
|
+
//# sourceMappingURL=toggle-D23x1wWk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-Cezg5MUc.mjs","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-switch@1.1.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_7c6a1205dfc0b547da67f2d77f280718/node_modules/@radix-ui/react-switch/dist/index.mjs","../../../components/toggle/src/DraggableX.tsx","../../../components/toggle/src/hooks/useResizeObserver.ts","../../../components/toggle/src/hooks/useToggleDrag.ts","../../../components/toggle/src/toggle.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/switch/src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import {\n cloneElement,\n type CSSProperties,\n isValidElement,\n type ReactElement,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { type SwitchThumbProps } from \"@radix-ui/react-switch\";\n\nexport type DraggableXProps = {\n children?: ReactElement<SwitchThumbProps>;\n disabled?: boolean;\n position: number;\n bounds: { left: number; right: number };\n onStart?: () => void;\n onDrag?: (args: { x: number }) => void;\n onStop?: () => void;\n style?: CSSProperties;\n};\n\nconst isTouchEvent = (e: MouseEvent | TouchEvent): e is TouchEvent => e && \"touches\" in e;\n\n/**\n * Bare minimum to make the toggle draggable.\n * It is created for usage in the toggle only but could easily be extracted and used elsewhere.\n *\n * It is called `DraggableX` since it's only for dragging along the x-axis.\n */\nexport const DraggableX = ({\n children,\n disabled,\n onStart,\n onDrag,\n onStop,\n bounds,\n position,\n style,\n}: DraggableXProps) => {\n const [dragX, setDragX] = useState<number | undefined>(undefined);\n const [dragStartX, setDragStartX] = useState<number | undefined>(undefined);\n const [isDragging, setIsDragging] = useState(false);\n\n const startDrag = (e: React.MouseEvent | React.TouchEvent) => {\n if (!disabled) {\n e.preventDefault();\n const clientX = isTouchEvent(e.nativeEvent)\n ? e.nativeEvent.touches[0].clientX\n : e.nativeEvent.clientX;\n setDragStartX(clientX);\n onStart?.();\n }\n };\n\n const onMouseMove = useCallback(\n (e: MouseEvent | TouchEvent) => {\n if (typeof dragStartX !== \"number\") {\n return;\n }\n\n const clientX = isTouchEvent(e) ? e.touches[0].clientX : e.clientX;\n const dragDelta = clientX - dragStartX;\n\n if (!dragDelta) {\n return;\n }\n\n const nextDragX = position + dragDelta;\n if (!isDragging && Math.abs(nextDragX)) {\n setIsDragging(true);\n }\n\n const nextDragXBounded = (() => {\n if (nextDragX > bounds.right) {\n return bounds.right;\n }\n\n if (nextDragX < bounds.left) {\n return bounds.left;\n }\n\n return nextDragX;\n })();\n\n setDragX(nextDragXBounded);\n onDrag?.({ x: nextDragXBounded });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onDrag, setDragX, isDragging, dragStartX]\n );\n\n const onMouseUp = useCallback(() => {\n setDragStartX(undefined);\n setDragX(undefined);\n setIsDragging(false);\n onStop?.();\n }, [onStop, setDragStartX]);\n\n useEffect(() => {\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"touchmove\", onMouseMove);\n\n return () => {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"touchmove\", onMouseMove);\n };\n }, [onMouseMove]);\n\n useEffect(() => {\n window.addEventListener(\"mouseup\", onMouseUp);\n window.addEventListener(\"touchend\", onMouseUp);\n\n return () => {\n window.removeEventListener(\"mouseup\", onMouseUp);\n window.removeEventListener(\"touchend\", onMouseUp);\n };\n }, [onMouseUp]);\n\n return isValidElement(children)\n ? cloneElement<SwitchThumbProps>(children, {\n onMouseDown: startDrag,\n onTouchStart: startDrag,\n style: { ...style, transform: `translateX(${isDragging ? dragX : position}px)` },\n })\n : null;\n};\n","import type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\n// This hook is a clone of useResizeObserver in b2c-sales/hooks\n\ntype Size = {\n width: number | undefined;\n height: number | undefined;\n};\n\ntype UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {\n ref: RefObject<T | null>;\n onResize?: (size: Size) => void;\n box?: \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\n round?: boolean;\n};\n\nconst initialSize: Size = {\n width: undefined,\n height: undefined,\n};\n\nexport function useResizeObserver<T extends HTMLElement = HTMLElement>(\n options: UseResizeObserverOptions<T>\n): Size {\n const { ref, box = \"content-box\", round } = options;\n const [{ width, height }, setSize] = useState<Size>(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef<Size>({ ...initialSize });\n const onResize = useRef<((size: Size) => void) | undefined>(undefined);\n onResize.current = options.onResize;\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) {\n return;\n }\n\n const observer = new ResizeObserver(([entry]) => {\n const boxProp =\n\n box === \"border-box\"\n ? \"borderBoxSize\"\n : box === \"device-pixel-content-box\"\n ? \"devicePixelContentBoxSize\"\n : \"contentBoxSize\";\n\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n\n const hasChanged =\n previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n\n if (hasChanged) {\n const newSize: Size = {\n width: newWidth && round ? Math.round(newWidth) : newWidth,\n height: newHeight && round ? Math.round(newHeight) : newHeight,\n };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n\n observer.observe(ref.current, { box });\n\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted, round]);\n\n return { width, height };\n}\n\ntype BoxSizesKey = keyof Pick<\n ResizeObserverEntry,\n \"borderBoxSize\" | \"contentBoxSize\" | \"devicePixelContentBoxSize\"\n>;\n\nfunction extractSize(\n entry: ResizeObserverEntry,\n box: BoxSizesKey,\n sizeType: keyof ResizeObserverSize\n): number | undefined {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return undefined;\n }\n\n return Array.isArray(entry[box])\n ? entry[box][0][sizeType]\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Support Firefox's non-standard behavior\n (entry[box][sizeType] as number);\n}\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n}\n","import { type RefObject, useRef, useState } from \"react\";\n\nimport { useResizeObserver } from \"./useResizeObserver\";\n\ntype UseToggleDragProps = {\n checked: boolean;\n onChange: ((checked: boolean) => void) | undefined;\n};\n\nexport const useToggleDrag = ({ checked, onChange }: UseToggleDragProps) => {\n const trackRef: RefObject<HTMLDivElement | null> = useRef(null);\n const thumbRef = useRef<HTMLSpanElement>(null);\n const [dragX, setDragX] = useState<number | undefined>(undefined);\n const [isDragging, setIsDragging] = useState(false);\n const [dragStopped, setDragStopped] = useState(0);\n\n const { height: thumbHeight = 0 } = useResizeObserver({ ref: thumbRef, round: true });\n const { height: switchHeight = 0 } = useResizeObserver({ ref: trackRef, round: true });\n\n const switchThumbHeightDelta = (switchHeight || 0) - thumbHeight;\n const maxDragRange = thumbHeight + switchThumbHeightDelta;\n const minDragRange = switchThumbHeightDelta / 2;\n const halfMaxDragRange = maxDragRange / 2;\n const isDraggedHalfway =\n typeof dragX === \"number\" && (checked ? dragX < halfMaxDragRange : dragX > halfMaxDragRange);\n\n const onDrag = ({ x }: { x: number }) => {\n setDragX(x);\n const dragDelta = Math.abs((checked ? maxDragRange : minDragRange) - x);\n\n // Add a threshold here for then accidentally dragging when clicking/touching\n dragDelta > 2 && setIsDragging(true);\n };\n\n const onStop = () => {\n setIsDragging(false);\n isDragging && setDragStopped(Date.now());\n if (isDraggedHalfway) {\n onChange?.(!checked);\n }\n };\n\n const onChangeWithDrag = () => {\n if (Date.now() - dragStopped > 50) {\n onChange?.(!checked);\n }\n setDragX(undefined);\n };\n\n return {\n trackRef,\n thumbRef,\n isDragging,\n bounds: { left: minDragRange, right: maxDragRange },\n position: checked ? maxDragRange : minDragRange,\n onDrag,\n onStop,\n onChangeWithDrag,\n };\n};\n","import React, { forwardRef, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Icon } from \"@purpur/icon\";\nimport { checkmarkBold } from \"@purpur/icon/assets/checkmark-bold\";\nimport { Label } from \"@purpur/label\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as Switch from \"@radix-ui/react-switch\";\nimport c from \"classnames/bind\";\n\nimport { DraggableX } from \"./DraggableX\";\nimport { useToggleDrag } from \"./hooks/useToggleDrag\";\nimport styles from \"./toggle.module.scss\";\n\nexport type ToggleProps = Omit<BaseProps<\"button\">, \"onChange\" | \"children\" | \"id\"> & {\n /**\n * To use when no label is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label (not recommended).\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * The controlled state of the toggle. Must be used in conjunction with `onChange`.\n * */\n checked?: boolean;\n /**\n * The state of the toggle when it is initially rendered. Use when you do not need to control its state.\n * */\n defaultChecked?: boolean;\n /**\n * When `true`, prevents the user from interacting with the toggle.\n * */\n disabled?: boolean;\n /**\n * When `true`, the toggle isn't draggable.\n * */\n disableDrag?: boolean;\n /**\n * ID of the toggle.\n * */\n id: string;\n /**\n * The label of the toggle.\n * */\n label?: string;\n /**\n * Set to decide which side of the toggle the label should be rendered.\n * */\n labelPosition?: \"left\" | \"right\";\n /**\n * The name of the toggle. Submitted with its owning form as part of a name/value pair, when wrapped in a form.\n * */\n name?: string;\n /**\n * Event handler called when the toggle is toggled.\n * */\n onChange?: (checked: boolean) => void;\n /**\n * When `true`, indicates that the user must check the toggle before the owning form can be submitted..\n * */\n required?: boolean;\n /**\n * The value given as data when wrapped with a form and submitted with a name.\n * */\n value?: string;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-toggle\";\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n label,\n onChange,\n labelPosition = \"right\",\n checked,\n disableDrag,\n defaultChecked,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = useState(\n typeof checked === \"boolean\" ? checked : !!defaultChecked\n );\n const isChecked = Boolean(typeof checked === \"boolean\" ? checked : internalChecked);\n const { thumbRef, trackRef, isDragging, onChangeWithDrag, ...draggableXProps } = useToggleDrag({\n checked: isChecked,\n onChange: (value) => {\n if (!props.disabled) {\n onChange?.(value);\n setInternalChecked(value);\n }\n },\n });\n\n const renderLabel = () => (\n <Label\n htmlFor={props.id}\n data-testid={dataTestId && `${dataTestId}-label`}\n disabled={props.disabled}\n className={cx(`${rootClassName}__label`, `${rootClassName}__label--${labelPosition}`)}\n >\n <Paragraph disabled={props.disabled}>{label}</Paragraph>\n </Label>\n );\n\n return (\n <div className={cx(className, `${rootClassName}__container`)}>\n {label && labelPosition === \"left\" && renderLabel()}\n <Switch.Root\n {...props}\n ref={ref}\n id={props.id}\n data-testid={dataTestId}\n className={cx(rootClassName)}\n onCheckedChange={onChangeWithDrag}\n checked={isChecked}\n >\n <span ref={trackRef} className={cx(`${rootClassName}__track`)}>\n <span className={cx(`${rootClassName}__checkmark-container`)}>\n <Icon className={cx(`${rootClassName}__checkmark`)} svg={checkmarkBold} size=\"xxs\" />\n </span>\n <DraggableX disabled={disableDrag} {...draggableXProps}>\n <Switch.Thumb\n ref={thumbRef}\n data-testid={dataTestId && `${dataTestId}-thumb`}\n className={cx(`${rootClassName}__thumb`, {\n [`${rootClassName}__thumb--dragging`]: isDragging,\n })}\n />\n </DraggableX>\n </span>\n </Switch.Root>\n {label && labelPosition === \"right\" && renderLabel()}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n"],"names":["SWITCH_NAME","createSwitchContext","createContextScope","SwitchProvider","useSwitchContext","Switch","React","props","forwardedRef","__scopeSwitch","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","switchProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","jsxs","jsx","Primitive","getState","composeEventHandlers","event","prevChecked","BubbleInput","THUMB_NAME","SwitchThumb","thumbProps","context","control","bubbles","inputProps","ref","usePrevious","controlSize","useSize","input","inputProto","Root","Thumb","isTouchEvent","DraggableX","children","onStart","onDrag","onStop","bounds","position","style","dragX","setDragX","useState","dragStartX","setDragStartX","isDragging","setIsDragging","startDrag","e","clientX","onMouseMove","useCallback","dragDelta","nextDragX","nextDragXBounded","onMouseUp","useEffect","isValidElement","cloneElement","initialSize","useResizeObserver","options","box","round","width","height","setSize","isMounted","useIsMounted","previousSize","useRef","onResize","observer","entry","boxProp","newWidth","extractSize","newHeight","newSize","sizeType","useToggleDrag","onChange","trackRef","thumbRef","dragStopped","setDragStopped","thumbHeight","switchHeight","switchThumbHeightDelta","maxDragRange","minDragRange","halfMaxDragRange","isDraggedHalfway","x","cx","c","styles","rootClassName","Toggle","forwardRef","dataTestId","className","label","labelPosition","disableDrag","internalChecked","setInternalChecked","isChecked","onChangeWithDrag","draggableXProps","renderLabel","Label","Paragraph","Switch.Root","Icon","checkmarkBold","Switch.Thumb"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"toggle-D23x1wWk.mjs","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-switch@1.1.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_7c6a1205dfc0b547da67f2d77f280718/node_modules/@radix-ui/react-switch/dist/index.mjs","../../../components/toggle/src/DraggableX.tsx","../../../components/toggle/src/hooks/useResizeObserver.ts","../../../components/toggle/src/hooks/useToggleDrag.ts","../../../components/toggle/src/toggle.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/switch/src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import {\n cloneElement,\n type CSSProperties,\n isValidElement,\n type ReactElement,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { type SwitchThumbProps } from \"@radix-ui/react-switch\";\n\nexport type DraggableXProps = {\n children?: ReactElement<SwitchThumbProps>;\n disabled?: boolean;\n position: number;\n bounds: { left: number; right: number };\n onStart?: () => void;\n onDrag?: (args: { x: number }) => void;\n onStop?: () => void;\n style?: CSSProperties;\n};\n\nconst isTouchEvent = (e: MouseEvent | TouchEvent): e is TouchEvent => e && \"touches\" in e;\n\n/**\n * Bare minimum to make the toggle draggable.\n * It is created for usage in the toggle only but could easily be extracted and used elsewhere.\n *\n * It is called `DraggableX` since it's only for dragging along the x-axis.\n */\nexport const DraggableX = ({\n children,\n disabled,\n onStart,\n onDrag,\n onStop,\n bounds,\n position,\n style,\n}: DraggableXProps) => {\n const [dragX, setDragX] = useState<number | undefined>(undefined);\n const [dragStartX, setDragStartX] = useState<number | undefined>(undefined);\n const [isDragging, setIsDragging] = useState(false);\n\n const startDrag = (e: React.MouseEvent | React.TouchEvent) => {\n if (!disabled) {\n e.preventDefault();\n const clientX = isTouchEvent(e.nativeEvent)\n ? e.nativeEvent.touches[0].clientX\n : e.nativeEvent.clientX;\n setDragStartX(clientX);\n onStart?.();\n }\n };\n\n const onMouseMove = useCallback(\n (e: MouseEvent | TouchEvent) => {\n if (typeof dragStartX !== \"number\") {\n return;\n }\n\n const clientX = isTouchEvent(e) ? e.touches[0].clientX : e.clientX;\n const dragDelta = clientX - dragStartX;\n\n if (!dragDelta) {\n return;\n }\n\n const nextDragX = position + dragDelta;\n if (!isDragging && Math.abs(nextDragX)) {\n setIsDragging(true);\n }\n\n const nextDragXBounded = (() => {\n if (nextDragX > bounds.right) {\n return bounds.right;\n }\n\n if (nextDragX < bounds.left) {\n return bounds.left;\n }\n\n return nextDragX;\n })();\n\n setDragX(nextDragXBounded);\n onDrag?.({ x: nextDragXBounded });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onDrag, setDragX, isDragging, dragStartX]\n );\n\n const onMouseUp = useCallback(() => {\n setDragStartX(undefined);\n setDragX(undefined);\n setIsDragging(false);\n onStop?.();\n }, [onStop, setDragStartX]);\n\n useEffect(() => {\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"touchmove\", onMouseMove);\n\n return () => {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"touchmove\", onMouseMove);\n };\n }, [onMouseMove]);\n\n useEffect(() => {\n window.addEventListener(\"mouseup\", onMouseUp);\n window.addEventListener(\"touchend\", onMouseUp);\n\n return () => {\n window.removeEventListener(\"mouseup\", onMouseUp);\n window.removeEventListener(\"touchend\", onMouseUp);\n };\n }, [onMouseUp]);\n\n return isValidElement(children)\n ? cloneElement<SwitchThumbProps>(children, {\n onMouseDown: startDrag,\n onTouchStart: startDrag,\n style: { ...style, transform: `translateX(${isDragging ? dragX : position}px)` },\n })\n : null;\n};\n","import type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\n// This hook is a clone of useResizeObserver in b2c-sales/hooks\n\ntype Size = {\n width: number | undefined;\n height: number | undefined;\n};\n\ntype UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {\n ref: RefObject<T | null>;\n onResize?: (size: Size) => void;\n box?: \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\n round?: boolean;\n};\n\nconst initialSize: Size = {\n width: undefined,\n height: undefined,\n};\n\nexport function useResizeObserver<T extends HTMLElement = HTMLElement>(\n options: UseResizeObserverOptions<T>\n): Size {\n const { ref, box = \"content-box\", round } = options;\n const [{ width, height }, setSize] = useState<Size>(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef<Size>({ ...initialSize });\n const onResize = useRef<((size: Size) => void) | undefined>(undefined);\n onResize.current = options.onResize;\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) {\n return;\n }\n\n const observer = new ResizeObserver(([entry]) => {\n const boxProp =\n\n box === \"border-box\"\n ? \"borderBoxSize\"\n : box === \"device-pixel-content-box\"\n ? \"devicePixelContentBoxSize\"\n : \"contentBoxSize\";\n\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n\n const hasChanged =\n previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n\n if (hasChanged) {\n const newSize: Size = {\n width: newWidth && round ? Math.round(newWidth) : newWidth,\n height: newHeight && round ? Math.round(newHeight) : newHeight,\n };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n\n observer.observe(ref.current, { box });\n\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted, round]);\n\n return { width, height };\n}\n\ntype BoxSizesKey = keyof Pick<\n ResizeObserverEntry,\n \"borderBoxSize\" | \"contentBoxSize\" | \"devicePixelContentBoxSize\"\n>;\n\nfunction extractSize(\n entry: ResizeObserverEntry,\n box: BoxSizesKey,\n sizeType: keyof ResizeObserverSize\n): number | undefined {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return undefined;\n }\n\n return Array.isArray(entry[box])\n ? entry[box][0][sizeType]\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Support Firefox's non-standard behavior\n (entry[box][sizeType] as number);\n}\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n}\n","import { type RefObject, useRef, useState } from \"react\";\n\nimport { useResizeObserver } from \"./useResizeObserver\";\n\ntype UseToggleDragProps = {\n checked: boolean;\n onChange: ((checked: boolean) => void) | undefined;\n};\n\nexport const useToggleDrag = ({ checked, onChange }: UseToggleDragProps) => {\n const trackRef: RefObject<HTMLDivElement | null> = useRef(null);\n const thumbRef = useRef<HTMLSpanElement>(null);\n const [dragX, setDragX] = useState<number | undefined>(undefined);\n const [isDragging, setIsDragging] = useState(false);\n const [dragStopped, setDragStopped] = useState(0);\n\n const { height: thumbHeight = 0 } = useResizeObserver({ ref: thumbRef, round: true });\n const { height: switchHeight = 0 } = useResizeObserver({ ref: trackRef, round: true });\n\n const switchThumbHeightDelta = (switchHeight || 0) - thumbHeight;\n const maxDragRange = thumbHeight + switchThumbHeightDelta;\n const minDragRange = switchThumbHeightDelta / 2;\n const halfMaxDragRange = maxDragRange / 2;\n const isDraggedHalfway =\n typeof dragX === \"number\" && (checked ? dragX < halfMaxDragRange : dragX > halfMaxDragRange);\n\n const onDrag = ({ x }: { x: number }) => {\n setDragX(x);\n const dragDelta = Math.abs((checked ? maxDragRange : minDragRange) - x);\n\n // Add a threshold here for then accidentally dragging when clicking/touching\n dragDelta > 2 && setIsDragging(true);\n };\n\n const onStop = () => {\n setIsDragging(false);\n isDragging && setDragStopped(Date.now());\n if (isDraggedHalfway) {\n onChange?.(!checked);\n }\n };\n\n const onChangeWithDrag = () => {\n if (Date.now() - dragStopped > 50) {\n onChange?.(!checked);\n }\n setDragX(undefined);\n };\n\n return {\n trackRef,\n thumbRef,\n isDragging,\n bounds: { left: minDragRange, right: maxDragRange },\n position: checked ? maxDragRange : minDragRange,\n onDrag,\n onStop,\n onChangeWithDrag,\n };\n};\n","import React, { forwardRef, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Icon } from \"@purpur/icon\";\nimport { checkmarkBold } from \"@purpur/icon/assets/checkmark-bold\";\nimport { Label } from \"@purpur/label\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as Switch from \"@radix-ui/react-switch\";\nimport c from \"classnames/bind\";\n\nimport { DraggableX } from \"./DraggableX\";\nimport { useToggleDrag } from \"./hooks/useToggleDrag\";\nimport styles from \"./toggle.module.scss\";\n\nexport type ToggleProps = Omit<BaseProps<\"button\">, \"onChange\" | \"children\" | \"id\"> & {\n /**\n * To use when no label is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label (not recommended).\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * The controlled state of the toggle. Must be used in conjunction with `onChange`.\n * */\n checked?: boolean;\n /**\n * The state of the toggle when it is initially rendered. Use when you do not need to control its state.\n * */\n defaultChecked?: boolean;\n /**\n * When `true`, prevents the user from interacting with the toggle.\n * */\n disabled?: boolean;\n /**\n * When `true`, the toggle isn't draggable.\n * */\n disableDrag?: boolean;\n /**\n * ID of the toggle.\n * */\n id: string;\n /**\n * The label of the toggle.\n * */\n label?: string;\n /**\n * Set to decide which side of the toggle the label should be rendered.\n * */\n labelPosition?: \"left\" | \"right\";\n /**\n * The name of the toggle. Submitted with its owning form as part of a name/value pair, when wrapped in a form.\n * */\n name?: string;\n /**\n * Event handler called when the toggle is toggled.\n * */\n onChange?: (checked: boolean) => void;\n /**\n * When `true`, indicates that the user must check the toggle before the owning form can be submitted..\n * */\n required?: boolean;\n /**\n * The value given as data when wrapped with a form and submitted with a name.\n * */\n value?: string;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-toggle\";\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n className,\n label,\n onChange,\n labelPosition = \"right\",\n checked,\n disableDrag,\n defaultChecked,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = useState(\n typeof checked === \"boolean\" ? checked : !!defaultChecked\n );\n const isChecked = Boolean(typeof checked === \"boolean\" ? checked : internalChecked);\n const { thumbRef, trackRef, isDragging, onChangeWithDrag, ...draggableXProps } = useToggleDrag({\n checked: isChecked,\n onChange: (value) => {\n if (!props.disabled) {\n onChange?.(value);\n setInternalChecked(value);\n }\n },\n });\n\n const renderLabel = () => (\n <Label\n htmlFor={props.id}\n data-testid={dataTestId && `${dataTestId}-label`}\n disabled={props.disabled}\n className={cx(`${rootClassName}__label`, `${rootClassName}__label--${labelPosition}`)}\n >\n <Paragraph disabled={props.disabled}>{label}</Paragraph>\n </Label>\n );\n\n return (\n <div className={cx(className, `${rootClassName}__container`)}>\n {label && labelPosition === \"left\" && renderLabel()}\n <Switch.Root\n {...props}\n ref={ref}\n id={props.id}\n data-testid={dataTestId}\n className={cx(rootClassName)}\n onCheckedChange={onChangeWithDrag}\n checked={isChecked}\n >\n <span ref={trackRef} className={cx(`${rootClassName}__track`)}>\n <span className={cx(`${rootClassName}__checkmark-container`)}>\n <Icon className={cx(`${rootClassName}__checkmark`)} svg={checkmarkBold} size=\"xxs\" />\n </span>\n <DraggableX disabled={disableDrag} {...draggableXProps}>\n <Switch.Thumb\n ref={thumbRef}\n data-testid={dataTestId && `${dataTestId}-thumb`}\n className={cx(`${rootClassName}__thumb`, {\n [`${rootClassName}__thumb--dragging`]: isDragging,\n })}\n />\n </DraggableX>\n </span>\n </Switch.Root>\n {label && labelPosition === \"right\" && renderLabel()}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n"],"names":["SWITCH_NAME","createSwitchContext","createContextScope","SwitchProvider","useSwitchContext","Switch","React","props","forwardedRef","__scopeSwitch","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","switchProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","jsxs","jsx","Primitive","getState","composeEventHandlers","event","prevChecked","BubbleInput","THUMB_NAME","SwitchThumb","thumbProps","context","control","bubbles","inputProps","ref","usePrevious","controlSize","useSize","input","inputProto","Root","Thumb","isTouchEvent","DraggableX","children","onStart","onDrag","onStop","bounds","position","style","dragX","setDragX","useState","dragStartX","setDragStartX","isDragging","setIsDragging","startDrag","e","clientX","onMouseMove","useCallback","dragDelta","nextDragX","nextDragXBounded","onMouseUp","useEffect","isValidElement","cloneElement","initialSize","useResizeObserver","options","box","round","width","height","setSize","isMounted","useIsMounted","previousSize","useRef","onResize","observer","entry","boxProp","newWidth","extractSize","newHeight","newSize","sizeType","useToggleDrag","onChange","trackRef","thumbRef","dragStopped","setDragStopped","thumbHeight","switchHeight","switchThumbHeightDelta","maxDragRange","minDragRange","halfMaxDragRange","isDraggedHalfway","x","cx","c","styles","rootClassName","Toggle","forwardRef","dataTestId","className","label","labelPosition","disableDrag","internalChecked","setInternalChecked","isChecked","onChangeWithDrag","draggableXProps","renderLabel","Label","Paragraph","Switch.Root","Icon","checkmarkBold","Switch.Thumb"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/toggle.es.js
CHANGED
package/dist/tokens.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { p as Ce, a as de,
|
|
1
|
+
import { p as yr, a as br, b as kr, c as Ir, d as xr, e as hr, f as Pr, g as Nr } from "./variables-DkCN2x27.mjs";
|
|
2
|
+
import { p as Or, a as Mr, b as Wr, c as fr, d as Ar, e as Er, f as Dr, g as Hr, h as Rr, i as Lr, j as Fr, k as Xr, l as wr, m as jr, n as Qr, o as qr, q as zr, r as Jr, s as Kr, t as Ur, u as Vr, v as Yr, w as Zr, x as _r, y as $r, z as ra, A as aa, B as ua, C as pa, D as oa, E as ea, F as ta, G as sa, H as na, I as ia, J as la, K as ca, L as ga, M as Ca, N as da, O as va, P as Ba, Q as Ta, R as Sa, S as ma, T as ya, U as ba, V as ka, W as Ia, X as xa, Y as ha, Z as Pa, _ as Na, $ as Ga, a0 as Oa, a1 as Ma, a2 as Wa, a3 as fa, a4 as Aa, a5 as Ea, a6 as Da, a7 as Ha, a8 as Ra, a9 as La, aa as Fa, ab as Xa, ac as wa, ad as ja, ae as Qa, af as qa, ag as za, ah as Ja, ai as Ka, aj as Ua, ak as Va, al as Ya, am as Za, an as _a, ao as $a, ap as ru, aq as au, ar as uu, as as pu, at as ou, au as eu, av as tu, aw as su, ax as nu, ay as iu, az as lu, aA as cu, aB as gu, aC as Cu, aD as du, aE as vu, aF as Bu, aG as Tu, aH as Su, aI as mu, aJ as yu, aK as bu, aL as ku, aM as Iu, aN as xu, aO as hu, aP as Pu, aQ as Nu, aR as Gu, aS as Ou, aT as Mu, aU as Wu, aV as fu, aW as Au, aX as Eu, aY as Du, aZ as Hu, a_ as Ru, a$ as Lu, b0 as Fu, b1 as Xu, b2 as wu, b3 as ju, b4 as Qu, b5 as qu, b6 as zu, b7 as Ju, b8 as Ku, b9 as Uu, ba as Vu, bb as Yu, bc as Zu, bd as _u, be as $u, bf as rp, bg as ap, bh as up, bi as pp, bj as op, bk as ep, bl as tp, bm as sp, bn as np, bo as ip, bp as lp, bq as cp, br as gp, bs as Cp, bt as dp, bu as vp, bv as Bp, bw as Tp, bx as Sp, by as mp, bz as yp, bA as bp, bB as kp, bC as Ip, bD as xp, bE as hp, bF as Pp, bG as Np, bH as Gp, bI as Op, bJ as Mp, bK as Wp, bL as fp, bM as Ap, bN as Ep, bO as Dp, bP as Hp, bQ as Rp, bR as Lp, bS as Fp, bT as Xp, bU as wp, bV as jp, bW as Qp, bX as qp, bY as zp, bZ as Jp, b_ as Kp, b$ as Up, c0 as Vp, c1 as Yp, c2 as Zp, c3 as _p, c4 as $p, c5 as ro, c6 as ao, c7 as uo, c8 as po, c9 as oo, ca as eo, cb as to, cc as so, cd as no, ce as io, cf as lo, cg as co, ch as go, ci as Co, cj as vo, ck as Bo, cl as To, cm as So, cn as mo, co as yo, cp as bo, cq as ko, cr as Io, cs as xo, ct as ho, cu as Po, cv as No, cw as Go, cx as Oo, cy as Mo, cz as Wo, cA as fo, cB as Ao, cC as Eo, cD as Do, cE as Ho, cF as Ro, cG as Lo, cH as Fo, cI as Xo, cJ as wo, cK as jo, cL as Qo, cM as qo, cN as zo, cO as Jo, cP as Ko, cQ as Uo, cR as Vo, cS as Yo, cT as Zo, cU as _o, cV as $o, cW as re, cX as ae, cY as ue, cZ as pe, c_ as oe, c$ as ee, d0 as te, d1 as se, d2 as ne, d3 as ie, d4 as le, d5 as ce } from "./variables-BVgnpUH9.mjs";
|
|
3
|
+
import { p as Ce, a as de, b as ve, c as Be, d as Te, e as Se, f as me, g as ye, h as be, i as ke, j as Ie } from "./variables-Dr3Hsdn-.mjs";
|
|
4
4
|
const r = "2px", a = "4px", u = "8px", p = "16px", o = "999px", e = "1px", t = "2px", s = "3px", n = "6px", i = "blur(24px)", l = "linear-gradient(289deg, #3694d3 -13%, #8c07d0 58%)", c = "linear-gradient(289deg, #62b2e7 -13%, #e4b6fb 58%)", g = "linear-gradient(291deg, #3694d3 -15%, #990ae3 44%)", C = "linear-gradient(291deg, #62b2e7 -15%, #990ae3 44%)", d = "linear-gradient(291deg, #3694d3 -15%, #4e0174 44%, #b12df4 133%)", v = "linear-gradient(280deg, #62b2e7 -15%, #f4e0ff 23%, #f4e0ff 68%, #d58df9 112%)", B = "linear-gradient(352deg, #62b2e7 -69%, #1f002e 15%, #1f002e 87%, #d58df9 183%)", T = "linear-gradient(289deg, #3694d3 -13%, #8c07d0 58%)", S = "linear-gradient(289deg, #62b2e7 -13%, #e4b6fb 58%)", m = "0rem 0rem 0rem 0rem rgba(0, 0, 0, 0.1)", y = "0rem 0.0625rem 0.25rem 0rem rgba(0, 0, 0, 0.1)", b = "0rem 0.25rem 0.75rem 0rem rgba(0, 0, 0, 0.1)", k = "0rem 0.75rem 1.5rem 0rem rgba(0, 0, 0, 0.1)", I = "0rem", x = "0.0625rem", h = "0.125rem", P = "0.25rem", N = "0.5rem", G = "0.75rem", O = "1rem", M = "1.25rem", W = "1.5rem", f = "2rem", A = "3rem", E = "4rem", D = "5rem", H = "6rem", R = "8rem", L = "1rem", F = "1.5rem", X = "1.5rem", w = "1.5rem", j = "1rem", Q = "1.5rem", q = "3rem", z = "3rem", J = "TeliaSans, Helvetica, Arial, 'Lucida Grande', sans-serif", K = "TeliaSansHeading, Helvetica, Arial, 'Lucida Grande', sans-serif", U = "400", V = "500", Y = "700", Z = "100%", _ = "110%", $ = "125%", rr = "150%", ar = "175%", ur = "0.75rem", pr = "0.875rem", or = "1rem", er = "1.125rem", tr = "1.25rem", sr = "1.375rem", nr = "1.5rem", ir = "1.75rem", lr = "2rem", cr = "2.25rem", gr = "2.5rem", Cr = "3rem", dr = "3.5rem", vr = "4rem", Br = "5rem", Tr = "6rem";
|
|
5
5
|
export {
|
|
6
6
|
o as purpurBorderRadiusFull,
|