@purpur/library 9.2.3 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/CHANGELOG.json +27 -0
  2. package/CHANGELOG.md +13 -1
  3. package/dist/LICENSE.txt +1 -1
  4. package/dist/{RichText-Bi51HE6X.mjs → RichText-jZ-sHV-u.mjs} +2 -2
  5. package/dist/{RichText-Bi51HE6X.mjs.map → RichText-jZ-sHV-u.mjs.map} +1 -1
  6. package/dist/{RichText-DNroJJXv.js → RichText-yobCUjTD.js} +2 -2
  7. package/dist/{RichText-DNroJJXv.js.map → RichText-yobCUjTD.js.map} +1 -1
  8. package/dist/{ThemeProvider-bkyFCeo6.mjs → ThemeProvider-CkX-BNWN.mjs} +2 -2
  9. package/dist/ThemeProvider-CkX-BNWN.mjs.map +1 -0
  10. package/dist/{ThemeProvider-5r7lDX-h.js → ThemeProvider-Dy771oix.js} +2 -2
  11. package/dist/ThemeProvider-Dy771oix.js.map +1 -0
  12. package/dist/{accordion-OtFSShSB.mjs → accordion-CIU4U8-4.mjs} +3 -3
  13. package/dist/accordion-CIU4U8-4.mjs.map +1 -0
  14. package/dist/{accordion-OsA0HvdA.js → accordion-DyhOG54L.js} +2 -2
  15. package/dist/accordion-DyhOG54L.js.map +1 -0
  16. package/dist/accordion.cjs.js +1 -1
  17. package/dist/accordion.es.js +3 -3
  18. package/dist/{autocomplete-D9uCJzjY.js → autocomplete-3kV1btuI.js} +2 -2
  19. package/dist/{autocomplete-D9uCJzjY.js.map → autocomplete-3kV1btuI.js.map} +1 -1
  20. package/dist/{autocomplete-BipmyKf0.mjs → autocomplete-BEGRn-Wh.mjs} +2 -2
  21. package/dist/{autocomplete-BipmyKf0.mjs.map → autocomplete-BEGRn-Wh.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/{card-DR2hvxjZ.mjs → card-C2mdp-ur.mjs} +2 -2
  25. package/dist/{card-DR2hvxjZ.mjs.map → card-C2mdp-ur.mjs.map} +1 -1
  26. package/dist/{card-CRHXm5NR.js → card-DFdUs5RG.js} +2 -2
  27. package/dist/{card-CRHXm5NR.js.map → card-DFdUs5RG.js.map} +1 -1
  28. package/dist/card.cjs.js +1 -1
  29. package/dist/card.es.js +1 -1
  30. package/dist/{carousel-BkxojLwn.mjs → carousel-DLkTL9sj.mjs} +29 -29
  31. package/dist/{carousel-BkxojLwn.mjs.map → carousel-DLkTL9sj.mjs.map} +1 -1
  32. package/dist/{carousel-BCw-5u92.js → carousel-DXrtxRz5.js} +2 -2
  33. package/dist/{carousel-BCw-5u92.js.map → carousel-DXrtxRz5.js.map} +1 -1
  34. package/dist/carousel.cjs.js +1 -1
  35. package/dist/carousel.es.js +1 -1
  36. package/dist/checkbox-BHTx89JQ.mjs +236 -0
  37. package/dist/checkbox-BHTx89JQ.mjs.map +1 -0
  38. package/dist/checkbox-CDNcNv6d.js +2 -0
  39. package/dist/checkbox-CDNcNv6d.js.map +1 -0
  40. package/dist/checkbox.cjs.js +1 -1
  41. package/dist/checkbox.es.js +1 -1
  42. package/dist/{comparison-table-B8w65g43.js → comparison-table-CitEzX7h.js} +2 -2
  43. package/dist/comparison-table-CitEzX7h.js.map +1 -0
  44. package/dist/{comparison-table-D1zJpdLL.mjs → comparison-table-Dmbjsqyg.mjs} +52 -52
  45. package/dist/comparison-table-Dmbjsqyg.mjs.map +1 -0
  46. package/dist/comparison-table.cjs.js +1 -1
  47. package/dist/comparison-table.es.js +1 -1
  48. package/dist/components/accordion/src/accordion.d.ts +1 -1
  49. package/dist/components/accordion/src/accordion.d.ts.map +1 -1
  50. package/dist/components/checkbox/src/checkbox.d.ts +4 -0
  51. package/dist/components/checkbox/src/checkbox.d.ts.map +1 -1
  52. package/dist/components/comparison-table/src/comparison-table.d.ts +1 -1
  53. package/dist/components/comparison-table/src/comparison-table.d.ts.map +1 -1
  54. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts.map +1 -1
  55. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -2
  56. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  57. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  58. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  59. package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -2
  60. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  61. package/dist/components/dropdown/src/useDropdown.d.ts +2 -1
  62. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  63. package/dist/components/listbox/src/listbox-item.d.ts +2 -2
  64. package/dist/components/listbox/src/listbox-item.d.ts.map +1 -1
  65. package/dist/components/listbox/src/listbox.d.ts +4 -1
  66. package/dist/components/listbox/src/listbox.d.ts.map +1 -1
  67. package/dist/components/toggle/src/toggle.d.ts +1 -0
  68. package/dist/components/toggle/src/toggle.d.ts.map +1 -1
  69. package/dist/components-metadata.js +4 -2
  70. package/dist/{content-block-Dm3L4g8w.mjs → content-block-CakKeJtN.mjs} +2 -2
  71. package/dist/{content-block-Dm3L4g8w.mjs.map → content-block-CakKeJtN.mjs.map} +1 -1
  72. package/dist/{content-block-CDRUH0pg.js → content-block-CrekbIfe.js} +2 -2
  73. package/dist/{content-block-CDRUH0pg.js.map → content-block-CrekbIfe.js.map} +1 -1
  74. package/dist/content-block.cjs.js +1 -1
  75. package/dist/content-block.es.js +1 -1
  76. package/dist/{countdown-DZ4IwkNy.mjs → countdown-BsLsEZBv.mjs} +2 -2
  77. package/dist/{countdown-DZ4IwkNy.mjs.map → countdown-BsLsEZBv.mjs.map} +1 -1
  78. package/dist/{countdown-CqYsZigV.js → countdown-hYrFLmRg.js} +2 -2
  79. package/dist/{countdown-CqYsZigV.js.map → countdown-hYrFLmRg.js.map} +1 -1
  80. package/dist/countdown.cjs.js +1 -1
  81. package/dist/countdown.es.js +1 -1
  82. package/dist/dismissable-chip-group-2updhyuR.js +2 -0
  83. package/dist/dismissable-chip-group-2updhyuR.js.map +1 -0
  84. package/dist/dismissable-chip-group-Cfs2s2BH.mjs +94 -0
  85. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +1 -0
  86. package/dist/dismissable-chip-group.cjs.js +1 -1
  87. package/dist/dismissable-chip-group.es.js +6 -5
  88. package/dist/dropdown-CMO_VD5e.mjs +916 -0
  89. package/dist/dropdown-CMO_VD5e.mjs.map +1 -0
  90. package/dist/dropdown-DJKNQnuo.js +2 -0
  91. package/dist/dropdown-DJKNQnuo.js.map +1 -0
  92. package/dist/dropdown.cjs.js +1 -1
  93. package/dist/dropdown.es.js +1 -1
  94. package/dist/{footer-BXs8uzTA.mjs → footer-BLPlXaZK.mjs} +4 -4
  95. package/dist/{footer-BXs8uzTA.mjs.map → footer-BLPlXaZK.mjs.map} +1 -1
  96. package/dist/{footer-DF9adlni.js → footer-D9AcPwlH.js} +2 -2
  97. package/dist/{footer-DF9adlni.js.map → footer-D9AcPwlH.js.map} +1 -1
  98. package/dist/footer.cjs.js +1 -1
  99. package/dist/footer.es.js +1 -1
  100. package/dist/{hero-banner-BfxclVFT.js → hero-banner-D1A-_qou.js} +2 -2
  101. package/dist/{hero-banner-BfxclVFT.js.map → hero-banner-D1A-_qou.js.map} +1 -1
  102. package/dist/{hero-banner-CxPvhXD2.mjs → hero-banner-DkC_BqM7.mjs} +3 -3
  103. package/dist/{hero-banner-CxPvhXD2.mjs.map → hero-banner-DkC_BqM7.mjs.map} +1 -1
  104. package/dist/hero-banner.cjs.js +1 -1
  105. package/dist/hero-banner.es.js +1 -1
  106. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  107. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  108. package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
  109. package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
  110. package/dist/library.cjs.js +1 -1
  111. package/dist/library.es.js +592 -589
  112. package/dist/listbox-ATP4hOWF.js +2 -0
  113. package/dist/listbox-ATP4hOWF.js.map +1 -0
  114. package/dist/listbox-i6BQQ-NZ.mjs +73 -0
  115. package/dist/listbox-i6BQQ-NZ.mjs.map +1 -0
  116. package/dist/listbox.cjs.js +1 -1
  117. package/dist/listbox.es.js +3 -2
  118. package/dist/{modal-COF_UhvY.js → modal-Baisuc6m.js} +2 -2
  119. package/dist/{modal-COF_UhvY.js.map → modal-Baisuc6m.js.map} +1 -1
  120. package/dist/{modal-BMg43Fvd.mjs → modal-COZ1POGG.mjs} +2 -2
  121. package/dist/{modal-BMg43Fvd.mjs.map → modal-COZ1POGG.mjs.map} +1 -1
  122. package/dist/modal.cjs.js +1 -1
  123. package/dist/modal.es.js +1 -1
  124. package/dist/{notification-BqjaT4E7.js → notification-B5bNNq86.js} +2 -2
  125. package/dist/{notification-BqjaT4E7.js.map → notification-B5bNNq86.js.map} +1 -1
  126. package/dist/{notification-DdRS5BF2.mjs → notification-BbQCmsnY.mjs} +2 -2
  127. package/dist/{notification-DdRS5BF2.mjs.map → notification-BbQCmsnY.mjs.map} +1 -1
  128. package/dist/notification.cjs.js +1 -1
  129. package/dist/notification.es.js +1 -1
  130. package/dist/{pagination-CVYUacXN.mjs → pagination-Cc_4zCQA.mjs} +2 -2
  131. package/dist/{pagination-CVYUacXN.mjs.map → pagination-Cc_4zCQA.mjs.map} +1 -1
  132. package/dist/{pagination-Bwlkvqye.js → pagination-rFRdkHII.js} +2 -2
  133. package/dist/{pagination-Bwlkvqye.js.map → pagination-rFRdkHII.js.map} +1 -1
  134. package/dist/pagination.cjs.js +1 -1
  135. package/dist/pagination.es.js +1 -1
  136. package/dist/paragraph-By4jMjnH.js +2 -0
  137. package/dist/{paragraph-BsI53OR0.js.map → paragraph-By4jMjnH.js.map} +1 -1
  138. package/dist/{paragraph-Ci50OF1u.mjs → paragraph-DSxXmX_0.mjs} +23 -23
  139. package/dist/{paragraph-Ci50OF1u.mjs.map → paragraph-DSxXmX_0.mjs.map} +1 -1
  140. package/dist/paragraph.cjs.js +1 -1
  141. package/dist/paragraph.es.js +1 -1
  142. package/dist/{popover-XCUa2GfC.js → popover-B0XJZ5mj.js} +2 -2
  143. package/dist/{popover-XCUa2GfC.js.map → popover-B0XJZ5mj.js.map} +1 -1
  144. package/dist/{popover-Dwqs1wGH.mjs → popover-_xJATlhN.mjs} +2 -2
  145. package/dist/{popover-Dwqs1wGH.mjs.map → popover-_xJATlhN.mjs.map} +1 -1
  146. package/dist/popover.cjs.js +1 -1
  147. package/dist/popover.es.js +1 -1
  148. package/dist/{product-card-BfB82XpS.mjs → product-card-C3_N0t-R.mjs} +3 -3
  149. package/dist/{product-card-BfB82XpS.mjs.map → product-card-C3_N0t-R.mjs.map} +1 -1
  150. package/dist/{product-card-bVQ7JhHj.js → product-card-CoY1KggV.js} +2 -2
  151. package/dist/{product-card-bVQ7JhHj.js.map → product-card-CoY1KggV.js.map} +1 -1
  152. package/dist/product-card.cjs.js +1 -1
  153. package/dist/product-card.es.js +1 -1
  154. package/dist/{promotion-card-DqBBt2sz.js → promotion-card-Bag64gqP.js} +2 -2
  155. package/dist/{promotion-card-DqBBt2sz.js.map → promotion-card-Bag64gqP.js.map} +1 -1
  156. package/dist/{promotion-card-BhNw94sC.mjs → promotion-card-BiHnQvhn.mjs} +4 -4
  157. package/dist/{promotion-card-BhNw94sC.mjs.map → promotion-card-BiHnQvhn.mjs.map} +1 -1
  158. package/dist/promotion-card.cjs.js +1 -1
  159. package/dist/promotion-card.es.js +1 -1
  160. package/dist/purpur.css +1 -1
  161. package/dist/quantity-selector-CDSfcTb1.js +2 -0
  162. package/dist/{quantity-selector-8AkKNDik.js.map → quantity-selector-CDSfcTb1.js.map} +1 -1
  163. package/dist/{quantity-selector-C23kU1hF.mjs → quantity-selector-CvBvnMeB.mjs} +35 -35
  164. package/dist/{quantity-selector-C23kU1hF.mjs.map → quantity-selector-CvBvnMeB.mjs.map} +1 -1
  165. package/dist/quantity-selector.cjs.js +1 -1
  166. package/dist/quantity-selector.es.js +1 -1
  167. package/dist/{radio-card-group-BlRZBa-9.mjs → radio-card-group-CneOprGY.mjs} +2 -2
  168. package/dist/{radio-card-group-BlRZBa-9.mjs.map → radio-card-group-CneOprGY.mjs.map} +1 -1
  169. package/dist/{radio-card-group-sYcfDPJq.js → radio-card-group-Ctuvg61o.js} +2 -2
  170. package/dist/{radio-card-group-sYcfDPJq.js.map → radio-card-group-Ctuvg61o.js.map} +1 -1
  171. package/dist/radio-card-group.cjs.js +1 -1
  172. package/dist/radio-card-group.es.js +1 -1
  173. package/dist/rich-text.cjs.js +1 -1
  174. package/dist/rich-text.es.js +1 -1
  175. package/dist/{search-field-CZ9mIyZ-.mjs → search-field-CpkHGIYi.mjs} +3 -3
  176. package/dist/{search-field-CZ9mIyZ-.mjs.map → search-field-CpkHGIYi.mjs.map} +1 -1
  177. package/dist/{search-field-DD9UkOca.js → search-field-Z0PqDARl.js} +2 -2
  178. package/dist/{search-field-DD9UkOca.js.map → search-field-Z0PqDARl.js.map} +1 -1
  179. package/dist/search-field.cjs.js +1 -1
  180. package/dist/search-field.es.js +1 -1
  181. package/dist/{stepper-uBfDdIju.mjs → stepper-CNnx_NiR.mjs} +2 -2
  182. package/dist/{stepper-uBfDdIju.mjs.map → stepper-CNnx_NiR.mjs.map} +1 -1
  183. package/dist/{stepper-w-raIwqJ.js → stepper-Df4X7DDR.js} +2 -2
  184. package/dist/{stepper-w-raIwqJ.js.map → stepper-Df4X7DDR.js.map} +1 -1
  185. package/dist/stepper.cjs.js +1 -1
  186. package/dist/stepper.es.js +1 -1
  187. package/dist/{table-DsgqX7Vv.js → table-DRYW0yw4.js} +2 -2
  188. package/dist/{table-DsgqX7Vv.js.map → table-DRYW0yw4.js.map} +1 -1
  189. package/dist/{table-Dx_dhGT6.mjs → table-DUY8kQfE.mjs} +5 -5
  190. package/dist/{table-Dx_dhGT6.mjs.map → table-DUY8kQfE.mjs.map} +1 -1
  191. package/dist/table.cjs.js +1 -1
  192. package/dist/table.es.js +1 -1
  193. package/dist/{text-area-DDZ_GQPW.mjs → text-area-kJvg6cFp.mjs} +3 -3
  194. package/dist/{text-area-DDZ_GQPW.mjs.map → text-area-kJvg6cFp.mjs.map} +1 -1
  195. package/dist/{text-area-C6W0fDiQ.js → text-area-peNKG7g4.js} +2 -2
  196. package/dist/{text-area-C6W0fDiQ.js.map → text-area-peNKG7g4.js.map} +1 -1
  197. package/dist/text-area.cjs.js +1 -1
  198. package/dist/text-area.es.js +1 -1
  199. package/dist/theme.cjs.js +1 -1
  200. package/dist/theme.es.js +2 -2
  201. package/dist/toggle-B8ZLUVar.js +2 -0
  202. package/dist/{toggle-C8IwTbX8.js.map → toggle-B8ZLUVar.js.map} +1 -1
  203. package/dist/toggle-CY3J8BRX.mjs +302 -0
  204. package/dist/{toggle-D23x1wWk.mjs.map → toggle-CY3J8BRX.mjs.map} +1 -1
  205. package/dist/toggle.cjs.js +1 -1
  206. package/dist/toggle.es.js +1 -1
  207. package/dist/tokens/color/variables.css +1 -0
  208. package/dist/tokens/color/variables.d.ts +1 -0
  209. package/dist/tokens/color/variables.dark.css +1 -0
  210. package/dist/tokens/color/variables.dark.d.ts +1 -0
  211. package/dist/tokens/color/variables.dark.js +1 -0
  212. package/dist/tokens/color/variables.dark.json +2 -1
  213. package/dist/tokens/color/variables.dark.scss +1 -0
  214. package/dist/tokens/color/variables.js +1 -0
  215. package/dist/tokens/color/variables.json +2 -1
  216. package/dist/tokens/color/variables.scss +1 -0
  217. package/dist/tokens.cjs.js +1 -1
  218. package/dist/tokens.es.js +76 -75
  219. package/dist/{tooltip-0pLBlDG3.js → tooltip-C8Zxnqdb.js} +2 -2
  220. package/dist/{tooltip-0pLBlDG3.js.map → tooltip-C8Zxnqdb.js.map} +1 -1
  221. package/dist/{tooltip-Kom0VfOC.mjs → tooltip-VlURN8H3.mjs} +2 -2
  222. package/dist/{tooltip-Kom0VfOC.mjs.map → tooltip-VlURN8H3.mjs.map} +1 -1
  223. package/dist/tooltip.cjs.js +1 -1
  224. package/dist/tooltip.es.js +1 -1
  225. package/dist/use-autocomplete.es-BwAzMcau.js +2 -0
  226. package/dist/use-autocomplete.es-BwAzMcau.js.map +1 -0
  227. package/dist/{use-autocomplete.es-CVv3z8t6.mjs → use-autocomplete.es-CKb0RHKG.mjs} +37 -35
  228. package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +1 -0
  229. package/dist/useColorScheme-DNyjsWX9.js +2 -0
  230. package/dist/{useColorScheme-0GMDl2GF.js.map → useColorScheme-DNyjsWX9.js.map} +1 -1
  231. package/dist/{useColorScheme-Di_Q0JR4.mjs → useColorScheme-tAkY9LHt.mjs} +2 -2
  232. package/dist/{useColorScheme-Di_Q0JR4.mjs.map → useColorScheme-tAkY9LHt.mjs.map} +1 -1
  233. package/dist/{variables-CKp4o9Tn.mjs → variables-B5hbV0Uy.mjs} +128 -127
  234. package/dist/variables-B5hbV0Uy.mjs.map +1 -0
  235. package/dist/variables-DoI78zZc.js +2 -0
  236. package/dist/variables-DoI78zZc.js.map +1 -0
  237. package/package.json +20 -20
  238. package/tokens/color/variables.css +1 -0
  239. package/tokens/color/variables.d.ts +1 -0
  240. package/tokens/color/variables.dark.css +1 -0
  241. package/tokens/color/variables.dark.d.ts +1 -0
  242. package/tokens/color/variables.dark.js +1 -0
  243. package/tokens/color/variables.dark.json +2 -1
  244. package/tokens/color/variables.dark.scss +1 -0
  245. package/tokens/color/variables.js +1 -0
  246. package/tokens/color/variables.json +2 -1
  247. package/tokens/color/variables.scss +1 -0
  248. package/dist/ThemeProvider-5r7lDX-h.js.map +0 -1
  249. package/dist/ThemeProvider-bkyFCeo6.mjs.map +0 -1
  250. package/dist/accordion-OsA0HvdA.js.map +0 -1
  251. package/dist/accordion-OtFSShSB.mjs.map +0 -1
  252. package/dist/checkbox-D6qWgpWR.mjs +0 -231
  253. package/dist/checkbox-D6qWgpWR.mjs.map +0 -1
  254. package/dist/checkbox-Dk3bZkZ3.js +0 -2
  255. package/dist/checkbox-Dk3bZkZ3.js.map +0 -1
  256. package/dist/comparison-table-B8w65g43.js.map +0 -1
  257. package/dist/comparison-table-D1zJpdLL.mjs.map +0 -1
  258. package/dist/dismissable-chip-group-Cd23yjBa.js +0 -2
  259. package/dist/dismissable-chip-group-Cd23yjBa.js.map +0 -1
  260. package/dist/dismissable-chip-group-D-gD93ON.mjs +0 -89
  261. package/dist/dismissable-chip-group-D-gD93ON.mjs.map +0 -1
  262. package/dist/dropdown-BsqVnd7z.js +0 -2
  263. package/dist/dropdown-BsqVnd7z.js.map +0 -1
  264. package/dist/dropdown-TO3Mh0bk.mjs +0 -910
  265. package/dist/dropdown-TO3Mh0bk.mjs.map +0 -1
  266. package/dist/listbox-COBHLRtB.js +0 -2
  267. package/dist/listbox-COBHLRtB.js.map +0 -1
  268. package/dist/listbox-DG4KmQP_.mjs +0 -66
  269. package/dist/listbox-DG4KmQP_.mjs.map +0 -1
  270. package/dist/paragraph-BsI53OR0.js +0 -2
  271. package/dist/quantity-selector-8AkKNDik.js +0 -2
  272. package/dist/toggle-C8IwTbX8.js +0 -2
  273. package/dist/toggle-D23x1wWk.mjs +0 -287
  274. package/dist/use-autocomplete.es-BHDgQLae.js +0 -2
  275. package/dist/use-autocomplete.es-BHDgQLae.js.map +0 -1
  276. package/dist/use-autocomplete.es-CVv3z8t6.mjs.map +0 -1
  277. package/dist/useColorScheme-0GMDl2GF.js +0 -2
  278. package/dist/variables-CKp4o9Tn.mjs.map +0 -1
  279. package/dist/variables-DH61hVNE.js +0 -2
  280. package/dist/variables-DH61hVNE.js.map +0 -1
package/dist/table.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./table-DsgqX7Vv.js");exports.Table=e.Table;exports.createColumnHelper=e.createColumnHelper;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./table-DRYW0yw4.js");exports.Table=e.Table;exports.createColumnHelper=e.createColumnHelper;
2
2
  //# sourceMappingURL=table.cjs.js.map
package/dist/table.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { T as r, c as l } from "./table-Dx_dhGT6.mjs";
1
+ import { T as r, c as l } from "./table-DUY8kQfE.mjs";
2
2
  export {
3
3
  r as Table,
4
4
  l as createColumnHelper
@@ -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-bkyFCeo6.mjs";
7
- import { u as C } from "./useColorScheme-Di_Q0JR4.mjs";
6
+ import "./ThemeProvider-CkX-BNWN.mjs";
7
+ import { u as C } from "./useColorScheme-tAkY9LHt.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-DDZ_GQPW.mjs.map
93
+ //# sourceMappingURL=text-area-kJvg6cFp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-area-DDZ_GQPW.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;"}
1
+ {"version":3,"file":"text-area-kJvg6cFp.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;"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("react/jsx-runtime"),j=require("react"),y=require("./field-error-text-FhQulSV5.js"),O=require("./field-helper-text-DSKO-Tce.js"),R=require("./label-yHK80hhV.js");require("./ThemeProvider-5r7lDX-h.js");const T=require("./useColorScheme-0GMDl2GF.js"),A=require("./bind-DeUYJ6m9.js"),s={"purpur-text-area":"_purpur-text-area_1qqf0_1","purpur-text-area__label":"_purpur-text-area__label_1qqf0_8","purpur-text-area__label-text":"_purpur-text-area__label-text_1qqf0_13","purpur-text-area__frame":"_purpur-text-area__frame_1qqf0_16","purpur-text-area__textarea-container":"_purpur-text-area__textarea-container_1qqf0_23","purpur-text-area__textarea-container--disabled":"_purpur-text-area__textarea-container--disabled_1qqf0_33","purpur-text-area__textarea-container--readonly":"_purpur-text-area__textarea-container--readonly_1qqf0_36","purpur-text-area__textarea":"_purpur-text-area__textarea_1qqf0_23","purpur-text-area__textarea--light":"_purpur-text-area__textarea--light_1qqf0_52","purpur-text-area__textarea--dark":"_purpur-text-area__textarea--dark_1qqf0_60","purpur-text-area__textarea--valid":"_purpur-text-area__textarea--valid_1qqf0_91","purpur-text-area__textarea--error":"_purpur-text-area__textarea--error_1qqf0_91"},c={NONE:"none",BOTH:"both",HORIZONTAL:"horizontal",VERTICAL:"vertical"},l=A.c.bind(s),e="purpur-text-area",p=j.forwardRef(({id:i,["data-testid"]:x,className:o,errorText:r,helperText:n,label:d,rows:q=3,cols:b=90,resize:f=c.BOTH,style:h,...a},m)=>{const[$]=T.useColorScheme(),_=N=>x?`${x}-${N}`:void 0,u=n?`${i}-helper-text`:void 0,v=l(`${e}__textarea-container`,{[`${e}__textarea-container--disabled`]:a.disabled,[`${e}__textarea-container--readonly`]:a.readOnly&&!a.disabled});return t.jsxs("div",{className:l(o,e),"data-testid":x,children:[d&&t.jsxs(R.Label,{htmlFor:i,disabled:a.disabled,className:s[`${e}__label`],"data-testid":_("label"),children:[a.required&&t.jsx("span",{"aria-hidden":!0,children:"*"}),d]}),t.jsxs("div",{className:v,children:[t.jsx("textarea",{...a,ref:m,id:i,"data-testid":_("textarea"),"aria-describedby":a["aria-describedby"]||u,"aria-invalid":a["aria-invalid"]||!!r,className:l(`${e}__textarea`,`${e}__textarea--${$}`,{[`${e}__textarea--error`]:!!r}),rows:q,cols:b,style:{resize:f,...h}}),t.jsx("div",{className:s[`${e}__frame`]})]}),u&&t.jsx(O.FieldHelperText,{"data-testid":_("helper-text"),id:u,children:n}),r&&t.jsx(y.FieldErrorText,{"data-testid":_("error-text"),children:r})]})});p.displayName="TextArea";exports.ResizeOption=c;exports.TextArea=p;
2
- //# sourceMappingURL=text-area-C6W0fDiQ.js.map
1
+ "use strict";const t=require("react/jsx-runtime"),j=require("react"),y=require("./field-error-text-FhQulSV5.js"),O=require("./field-helper-text-DSKO-Tce.js"),R=require("./label-yHK80hhV.js");require("./ThemeProvider-Dy771oix.js");const T=require("./useColorScheme-DNyjsWX9.js"),A=require("./bind-DeUYJ6m9.js"),s={"purpur-text-area":"_purpur-text-area_1qqf0_1","purpur-text-area__label":"_purpur-text-area__label_1qqf0_8","purpur-text-area__label-text":"_purpur-text-area__label-text_1qqf0_13","purpur-text-area__frame":"_purpur-text-area__frame_1qqf0_16","purpur-text-area__textarea-container":"_purpur-text-area__textarea-container_1qqf0_23","purpur-text-area__textarea-container--disabled":"_purpur-text-area__textarea-container--disabled_1qqf0_33","purpur-text-area__textarea-container--readonly":"_purpur-text-area__textarea-container--readonly_1qqf0_36","purpur-text-area__textarea":"_purpur-text-area__textarea_1qqf0_23","purpur-text-area__textarea--light":"_purpur-text-area__textarea--light_1qqf0_52","purpur-text-area__textarea--dark":"_purpur-text-area__textarea--dark_1qqf0_60","purpur-text-area__textarea--valid":"_purpur-text-area__textarea--valid_1qqf0_91","purpur-text-area__textarea--error":"_purpur-text-area__textarea--error_1qqf0_91"},c={NONE:"none",BOTH:"both",HORIZONTAL:"horizontal",VERTICAL:"vertical"},l=A.c.bind(s),e="purpur-text-area",p=j.forwardRef(({id:i,["data-testid"]:x,className:o,errorText:r,helperText:n,label:d,rows:q=3,cols:b=90,resize:f=c.BOTH,style:h,...a},m)=>{const[$]=T.useColorScheme(),_=N=>x?`${x}-${N}`:void 0,u=n?`${i}-helper-text`:void 0,v=l(`${e}__textarea-container`,{[`${e}__textarea-container--disabled`]:a.disabled,[`${e}__textarea-container--readonly`]:a.readOnly&&!a.disabled});return t.jsxs("div",{className:l(o,e),"data-testid":x,children:[d&&t.jsxs(R.Label,{htmlFor:i,disabled:a.disabled,className:s[`${e}__label`],"data-testid":_("label"),children:[a.required&&t.jsx("span",{"aria-hidden":!0,children:"*"}),d]}),t.jsxs("div",{className:v,children:[t.jsx("textarea",{...a,ref:m,id:i,"data-testid":_("textarea"),"aria-describedby":a["aria-describedby"]||u,"aria-invalid":a["aria-invalid"]||!!r,className:l(`${e}__textarea`,`${e}__textarea--${$}`,{[`${e}__textarea--error`]:!!r}),rows:q,cols:b,style:{resize:f,...h}}),t.jsx("div",{className:s[`${e}__frame`]})]}),u&&t.jsx(O.FieldHelperText,{"data-testid":_("helper-text"),id:u,children:n}),r&&t.jsx(y.FieldErrorText,{"data-testid":_("error-text"),children:r})]})});p.displayName="TextArea";exports.ResizeOption=c;exports.TextArea=p;
2
+ //# sourceMappingURL=text-area-peNKG7g4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-area-C6W0fDiQ.js","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":"suCAUaA,EAAe,CAC1B,KAAM,OACN,KAAM,OACN,WAAY,aACZ,SAAU,UACZ,EAgCMC,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,mBAETC,EAAWC,EAAAA,WACtB,CACE,CACE,GAAAC,EACA,CAAC,eAAgBC,EACjB,UAAAC,EACA,UAAAC,EACA,WAAAC,EAAA,MACAC,EACA,KAAAC,EAAO,EACP,KAAAC,EAAO,GACP,OAAAC,EAASf,EAAa,KACtB,MAAAgB,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,CAAW,EAAIC,iBAAA,EAEhBC,EAAaC,GAAkBd,EAAa,GAAGA,CAAU,IAAIc,CAAI,GAAK,OAEtEC,EAAeZ,EAAa,GAAGJ,CAAE,eAAiB,OAElDiB,EAA8BvB,EAAG,GAAGG,CAAa,uBAAwB,CAC7E,CAAC,GAAGA,CAAa,gCAAgC,EAAGa,EAAM,SAC1D,CAAC,GAAGb,CAAa,gCAAgC,EAAGa,EAAM,UAAY,CAACA,EAAM,QAAA,CAC9E,EAED,OACEQ,OAAC,OAAI,UAAWxB,EAAGQ,EAAWL,CAAa,EAAG,cAAaI,EACxD,SAAA,CAAAI,GACCa,EAAAA,KAACC,EAAAA,MAAA,CACC,QAASnB,EACT,SAAUU,EAAM,SAChB,UAAWd,EAAO,GAAGC,CAAa,SAAS,EAC3C,cAAaiB,EAAU,OAAO,EAE7B,SAAA,CAAAJ,EAAM,UAAYU,EAAAA,IAAC,OAAA,CAAK,cAAW,GAAC,SAAA,IAAC,EACrCf,CAAA,CAAA,CAAA,EAGLa,EAAAA,KAAC,MAAA,CAAI,UAAWD,EACd,SAAA,CAAAG,EAAAA,IAAC,WAAA,CACE,GAAGV,EACJ,IAAAC,EACA,GAAAX,EACA,cAAac,EAAU,UAAU,EACjC,mBAAkBJ,EAAM,kBAAkB,GAAKM,EAC/C,eAAcN,EAAM,cAAc,GAAK,CAAC,CAACP,EACzC,UAAWT,EACT,GAAGG,CAAa,aAChB,GAAGA,CAAa,eAAee,CAAW,GAC1C,CACE,CAAC,GAAGf,CAAa,mBAAmB,EAAG,CAAC,CAACM,CAAA,CAC3C,EAEF,KAAAG,EACA,KAAAC,EACA,MAAO,CAAE,OAAAC,EAAQ,GAAGC,CAAA,CAAM,CAAA,QAE3B,MAAA,CAAI,UAAWb,EAAO,GAAGC,CAAa,SAAS,CAAA,CAAG,CAAA,EACrD,EACCmB,SACEK,kBAAA,CAAgB,cAAaP,EAAU,aAAa,EAAG,GAAIE,EACzD,SAAAZ,CAAA,CACH,EAEDD,GACCiB,EAAAA,IAACE,EAAAA,eAAA,CAAe,cAAaR,EAAU,YAAY,EAAI,SAAAX,CAAA,CAAU,CAAA,EAErE,CAEJ,CACF,EAEAL,EAAS,YAAc"}
1
+ {"version":3,"file":"text-area-peNKG7g4.js","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":"suCAUaA,EAAe,CAC1B,KAAM,OACN,KAAM,OACN,WAAY,aACZ,SAAU,UACZ,EAgCMC,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,mBAETC,EAAWC,EAAAA,WACtB,CACE,CACE,GAAAC,EACA,CAAC,eAAgBC,EACjB,UAAAC,EACA,UAAAC,EACA,WAAAC,EAAA,MACAC,EACA,KAAAC,EAAO,EACP,KAAAC,EAAO,GACP,OAAAC,EAASf,EAAa,KACtB,MAAAgB,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,CAAW,EAAIC,iBAAA,EAEhBC,EAAaC,GAAkBd,EAAa,GAAGA,CAAU,IAAIc,CAAI,GAAK,OAEtEC,EAAeZ,EAAa,GAAGJ,CAAE,eAAiB,OAElDiB,EAA8BvB,EAAG,GAAGG,CAAa,uBAAwB,CAC7E,CAAC,GAAGA,CAAa,gCAAgC,EAAGa,EAAM,SAC1D,CAAC,GAAGb,CAAa,gCAAgC,EAAGa,EAAM,UAAY,CAACA,EAAM,QAAA,CAC9E,EAED,OACEQ,OAAC,OAAI,UAAWxB,EAAGQ,EAAWL,CAAa,EAAG,cAAaI,EACxD,SAAA,CAAAI,GACCa,EAAAA,KAACC,EAAAA,MAAA,CACC,QAASnB,EACT,SAAUU,EAAM,SAChB,UAAWd,EAAO,GAAGC,CAAa,SAAS,EAC3C,cAAaiB,EAAU,OAAO,EAE7B,SAAA,CAAAJ,EAAM,UAAYU,EAAAA,IAAC,OAAA,CAAK,cAAW,GAAC,SAAA,IAAC,EACrCf,CAAA,CAAA,CAAA,EAGLa,EAAAA,KAAC,MAAA,CAAI,UAAWD,EACd,SAAA,CAAAG,EAAAA,IAAC,WAAA,CACE,GAAGV,EACJ,IAAAC,EACA,GAAAX,EACA,cAAac,EAAU,UAAU,EACjC,mBAAkBJ,EAAM,kBAAkB,GAAKM,EAC/C,eAAcN,EAAM,cAAc,GAAK,CAAC,CAACP,EACzC,UAAWT,EACT,GAAGG,CAAa,aAChB,GAAGA,CAAa,eAAee,CAAW,GAC1C,CACE,CAAC,GAAGf,CAAa,mBAAmB,EAAG,CAAC,CAACM,CAAA,CAC3C,EAEF,KAAAG,EACA,KAAAC,EACA,MAAO,CAAE,OAAAC,EAAQ,GAAGC,CAAA,CAAM,CAAA,QAE3B,MAAA,CAAI,UAAWb,EAAO,GAAGC,CAAa,SAAS,CAAA,CAAG,CAAA,EACrD,EACCmB,SACEK,kBAAA,CAAgB,cAAaP,EAAU,aAAa,EAAG,GAAIE,EACzD,SAAAZ,CAAA,CACH,EAEDD,GACCiB,EAAAA,IAACE,EAAAA,eAAA,CAAe,cAAaR,EAAU,YAAY,EAAI,SAAAX,CAAA,CAAU,CAAA,EAErE,CAEJ,CACF,EAEAL,EAAS,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./text-area-C6W0fDiQ.js");exports.ResizeOption=e.ResizeOption;exports.TextArea=e.TextArea;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./text-area-peNKG7g4.js");exports.ResizeOption=e.ResizeOption;exports.TextArea=e.TextArea;
2
2
  //# sourceMappingURL=text-area.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { R as o, T as r } from "./text-area-DDZ_GQPW.mjs";
1
+ import { R as o, T as r } from "./text-area-kJvg6cFp.mjs";
2
2
  export {
3
3
  o as ResizeOption,
4
4
  r as TextArea
package/dist/theme.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ThemeProvider-5r7lDX-h.js"),r=require("./useColorScheme-0GMDl2GF.js");exports.ThemeProvider=e.ThemeProvider;exports.teliaTheme=e.teliaTheme;exports.useApplyTheme=e.useApplyTheme;exports.useTheme=e.useTheme;exports.useColorScheme=r.useColorScheme;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ThemeProvider-Dy771oix.js"),r=require("./useColorScheme-DNyjsWX9.js");exports.ThemeProvider=e.ThemeProvider;exports.teliaTheme=e.teliaTheme;exports.useApplyTheme=e.useApplyTheme;exports.useTheme=e.useTheme;exports.useColorScheme=r.useColorScheme;
2
2
  //# sourceMappingURL=theme.cjs.js.map
package/dist/theme.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { T as a, t as m, u as o, a as r } from "./ThemeProvider-bkyFCeo6.mjs";
2
- import { u } from "./useColorScheme-Di_Q0JR4.mjs";
1
+ import { T as a, t as m, u as o, a as r } from "./ThemeProvider-CkX-BNWN.mjs";
2
+ import { u } from "./useColorScheme-tAkY9LHt.mjs";
3
3
  export {
4
4
  a as ThemeProvider,
5
5
  m as teliaTheme,
@@ -0,0 +1,2 @@
1
+ "use strict";const v=require("react/jsx-runtime"),n=require("react"),O=require("./icon.es-j3eRib6d.js"),H=require("./checkmark-bold.es-DdJFVVJG.js"),T=require("./label-yHK80hhV.js"),W=require("./paragraph-By4jMjnH.js"),E=require("./index-CxBG4Ssm.js"),A=require("./index-_XxjJPRD.js"),I=require("./index-kcwFA4Dv.js"),F=require("./index-DOFLOnao.js"),M=require("./index-Hk_HrrHM.js"),U=require("./bind-DeUYJ6m9.js");function V(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const D=V(n);var j="Switch",[G]=I.createContextScope(j),[J,K]=G(j),$=D.forwardRef((e,r)=>{const{__scopeSwitch:t,name:o,checked:a,defaultChecked:c,required:p,disabled:g,value:s="on",onCheckedChange:i,form:_,...f}=e,[l,u]=D.useState(null),d=A.useComposedRefs(r,k=>u(k)),b=D.useRef(!1),m=l?_||!!l.closest("form"):!0,[h=!1,x]=E.useControllableState({prop:a,defaultProp:c,onChange:i});return v.jsxs(J,{scope:t,checked:h,disabled:g,children:[v.jsx(M.Primitive.button,{type:"button",role:"switch","aria-checked":h,"aria-required":p,"data-state":L(h),"data-disabled":g?"":void 0,disabled:g,value:s,...f,ref:d,onClick:E.composeEventHandlers(e.onClick,k=>{x(w=>!w),m&&(b.current=k.isPropagationStopped(),b.current||k.stopPropagation())})}),m&&v.jsx(Q,{control:l,bubbles:!b.current,name:o,value:s,checked:h,required:p,disabled:g,form:_,style:{transform:"translateX(-100%)"}})]})});$.displayName=j;var q="SwitchThumb",N=D.forwardRef((e,r)=>{const{__scopeSwitch:t,...o}=e,a=K(q,t);return v.jsx(M.Primitive.span,{"data-state":L(a.checked),"data-disabled":a.disabled?"":void 0,...o,ref:r})});N.displayName=q;var Q=e=>{const{control:r,checked:t,bubbles:o=!0,...a}=e,c=D.useRef(null),p=E.usePrevious(t),g=F.useSize(r);return D.useEffect(()=>{const s=c.current,i=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(i,"checked").set;if(p!==t&&f){const l=new Event("click",{bubbles:o});f.call(s,t),s.dispatchEvent(l)}},[p,t,o]),v.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...a,tabIndex:-1,ref:c,style:{...e.style,...g,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function L(e){return e?"checked":"unchecked"}var Y=$,Z=N;const z=e=>e&&"touches"in e,ee=({children:e,disabled:r,onStart:t,onDrag:o,onStop:a,bounds:c,position:p,style:g})=>{const[s,i]=n.useState(void 0),[_,f]=n.useState(void 0),[l,u]=n.useState(!1),d=h=>{if(!r){h.preventDefault();const x=z(h.nativeEvent)?h.nativeEvent.touches[0].clientX:h.nativeEvent.clientX;f(x),t?.()}},b=n.useCallback(h=>{if(typeof _!="number")return;const k=(z(h)?h.touches[0].clientX:h.clientX)-_;if(!k)return;const w=p+k;!l&&Math.abs(w)&&u(!0);const R=w>c.right?c.right:w<c.left?c.left:w;i(R),o?.({x:R})},[o,i,l,_]),m=n.useCallback(()=>{f(void 0),i(void 0),u(!1),a?.()},[a,f]);return n.useEffect(()=>(window.addEventListener("mousemove",b),window.addEventListener("touchmove",b),()=>{window.removeEventListener("mousemove",b),window.removeEventListener("touchmove",b)}),[b]),n.useEffect(()=>(window.addEventListener("mouseup",m),window.addEventListener("touchend",m),()=>{window.removeEventListener("mouseup",m),window.removeEventListener("touchend",m)}),[m]),n.isValidElement(e)?n.cloneElement(e,{onMouseDown:d,onTouchStart:d,style:{...g,transform:`translateX(${l?s:p}px)`}}):null},X={width:void 0,height:void 0};function P(e){const{ref:r,box:t="content-box",round:o}=e,[{width:a,height:c},p]=n.useState(X),g=te(),s=n.useRef({...X}),i=n.useRef(void 0);return i.current=e.onResize,n.useEffect(()=>{if(!r.current||typeof window>"u"||!("ResizeObserver"in window))return;const _=new ResizeObserver(([f])=>{const l=t==="border-box"?"borderBoxSize":t==="device-pixel-content-box"?"devicePixelContentBoxSize":"contentBoxSize",u=y(f,l,"inlineSize"),d=y(f,l,"blockSize");if(s.current.width!==u||s.current.height!==d){const m={width:u&&o?Math.round(u):u,height:d&&o?Math.round(d):d};s.current.width=u,s.current.height=d,i.current?i.current(m):g()&&p(m)}});return _.observe(r.current,{box:t}),()=>{_.disconnect()}},[t,r,g,o]),{width:a,height:c}}function y(e,r,t){return e[r]?Array.isArray(e[r])?e[r][0][t]:e[r][t]:r==="contentBoxSize"?e.contentRect[t==="inlineSize"?"width":"height"]:void 0}function te(){const e=n.useRef(!1);return n.useEffect(()=>(e.current=!0,()=>{e.current=!1}),[]),n.useCallback(()=>e.current,[])}const re=({checked:e,onChange:r})=>{const t=n.useRef(null),o=n.useRef(null),[a,c]=n.useState(void 0),[p,g]=n.useState(!1),[s,i]=n.useState(0),{height:_=0}=P({ref:o,round:!0}),{height:f=0}=P({ref:t,round:!0}),l=(f||0)-_,u=_+l,d=l/2,b=u/2,m=typeof a=="number"&&(e?a<b:a>b);return{trackRef:t,thumbRef:o,isDragging:p,bounds:{left:d,right:u},position:e?u:d,onDrag:({x:w})=>{c(w),Math.abs((e?u:d)-w)>2&&g(!0)},onStop:()=>{g(!1),p&&i(Date.now()),m&&r?.(!e)},onChangeWithDrag:()=>{Date.now()-s>50&&r?.(!e),c(void 0)}}},ne={"purpur-toggle":"_purpur-toggle_15s9r_1","purpur-toggle__track":"_purpur-toggle__track_15s9r_7","purpur-toggle__checkmark-container":"_purpur-toggle__checkmark-container_15s9r_45","purpur-toggle__track--negative":"_purpur-toggle__track--negative_15s9r_60","purpur-toggle__thumb":"_purpur-toggle__thumb_15s9r_64","purpur-toggle__thumb--dragging":"_purpur-toggle__thumb--dragging_15s9r_89","purpur-toggle__thumb--negative":"_purpur-toggle__thumb--negative_15s9r_98","purpur-toggle__checkmark":"_purpur-toggle__checkmark_15s9r_45","purpur-toggle__label--right":"_purpur-toggle__label--right_15s9r_126","purpur-toggle__label--left":"_purpur-toggle__label--left_15s9r_129","purpur-toggle__container":"_purpur-toggle__container_15s9r_132","purpur-toggle--negative":"_purpur-toggle--negative_15s9r_141"},C=U.c.bind(ne),S="purpur-toggle",B=n.forwardRef(({["data-testid"]:e,className:r,label:t,onChange:o,labelPosition:a="right",checked:c,disableDrag:p,defaultChecked:g,negative:s=!1,...i},_)=>{const[f,l]=n.useState(typeof c=="boolean"?c:!!g),u=!!(typeof c=="boolean"?c:f),{thumbRef:d,trackRef:b,isDragging:m,onChangeWithDrag:h,...x}=re({checked:u,onChange:w=>{i.disabled||(o?.(w),l(w))}}),k=()=>v.jsx(T.Label,{htmlFor:i.id,"data-testid":e&&`${e}-label`,disabled:i.disabled,className:C(`${S}__label`,`${S}__label--${a}`),negative:s,children:v.jsx(W.Paragraph,{disabled:i.disabled,negative:s,children:t})});return v.jsxs("div",{className:C(r,`${S}__container`),children:[t&&a==="left"&&k(),v.jsx(Y,{...i,ref:_,id:i.id,"data-testid":e,className:C(S,{[`${S}--negative`]:s}),onCheckedChange:h,checked:u,children:v.jsxs("span",{ref:b,className:C(`${S}__track`,{[`${S}__track--negative`]:s}),children:[v.jsx("span",{className:C(`${S}__checkmark-container`),children:v.jsx(O.b,{className:C(`${S}__checkmark`),svg:H.l,size:"xxs"})}),v.jsx(ee,{disabled:p,...x,children:v.jsx(Z,{ref:d,"data-testid":e&&`${e}-thumb`,className:C(`${S}__thumb`,{[`${S}__thumb--dragging`]:m,[`${S}__thumb--negative`]:s})})})]})}),t&&a==="right"&&k()]})});B.displayName="Toggle";exports.Toggle=B;
2
+ //# sourceMappingURL=toggle-B8ZLUVar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-C8IwTbX8.js","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-B8ZLUVar.js","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 negative?: boolean;\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 negative = false,\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 negative={negative}\n >\n <Paragraph disabled={props.disabled} negative={negative}>\n {label}\n </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, { [`${rootClassName}--negative`]: negative })}\n onCheckedChange={onChangeWithDrag}\n checked={isChecked}\n >\n <span\n ref={trackRef}\n className={cx(`${rootClassName}__track`, {\n [`${rootClassName}__track--negative`]: negative,\n })}\n >\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 [`${rootClassName}__thumb--negative`]: negative,\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","negative","internalChecked","setInternalChecked","isChecked","onChangeWithDrag","draggableXProps","renderLabel","Label","Paragraph","Switch.Root","Icon","checkmarkBold","Switch.Thumb"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,302 @@
1
+ import { jsxs as z, jsx as k } from "react/jsx-runtime";
2
+ import * as x from "react";
3
+ import { useState as S, useCallback as P, useEffect as E, isValidElement as A, cloneElement as I, useRef as R, forwardRef as j } from "react";
4
+ import { b as q } from "./icon.es-CZcKxTaM.mjs";
5
+ import { l as F } from "./checkmark-bold.es-CV3e_t3E.mjs";
6
+ import { L as U } from "./label-7sJe5-pX.mjs";
7
+ import { P as V } from "./paragraph-DSxXmX_0.mjs";
8
+ import { u as G, c as J, a as K } from "./index-tyLV0iiH.mjs";
9
+ import { u as Q } from "./index-DLcqcWxM.mjs";
10
+ import { c as Y } from "./index-DOfn3ixy.mjs";
11
+ import { u as Z } from "./index-DPxjTK4w.mjs";
12
+ import { P as B } from "./index-CCNZ9uWB.mjs";
13
+ import { c as ee } from "./bind-CU-R61T-.mjs";
14
+ var M = "Switch", [te] = Y(M), [re, ne] = te(M), H = x.forwardRef(
15
+ (e, r) => {
16
+ const {
17
+ __scopeSwitch: t,
18
+ name: a,
19
+ checked: s,
20
+ defaultChecked: i,
21
+ required: h,
22
+ disabled: l,
23
+ value: n = "on",
24
+ onCheckedChange: o,
25
+ form: p,
26
+ ..._
27
+ } = e, [u, c] = x.useState(null), g = Q(r, (w) => c(w)), f = x.useRef(!1), m = u ? p || !!u.closest("form") : !0, [d = !1, C] = G({
28
+ prop: s,
29
+ defaultProp: i,
30
+ onChange: o
31
+ });
32
+ return /* @__PURE__ */ z(re, { scope: t, checked: d, disabled: l, children: [
33
+ /* @__PURE__ */ k(
34
+ B.button,
35
+ {
36
+ type: "button",
37
+ role: "switch",
38
+ "aria-checked": d,
39
+ "aria-required": h,
40
+ "data-state": W(d),
41
+ "data-disabled": l ? "" : void 0,
42
+ disabled: l,
43
+ value: n,
44
+ ..._,
45
+ ref: g,
46
+ onClick: J(e.onClick, (w) => {
47
+ C((v) => !v), m && (f.current = w.isPropagationStopped(), f.current || w.stopPropagation());
48
+ })
49
+ }
50
+ ),
51
+ m && /* @__PURE__ */ k(
52
+ oe,
53
+ {
54
+ control: u,
55
+ bubbles: !f.current,
56
+ name: a,
57
+ value: n,
58
+ checked: d,
59
+ required: h,
60
+ disabled: l,
61
+ form: p,
62
+ style: { transform: "translateX(-100%)" }
63
+ }
64
+ )
65
+ ] });
66
+ }
67
+ );
68
+ H.displayName = M;
69
+ var T = "SwitchThumb", O = x.forwardRef(
70
+ (e, r) => {
71
+ const { __scopeSwitch: t, ...a } = e, s = ne(T, t);
72
+ return /* @__PURE__ */ k(
73
+ B.span,
74
+ {
75
+ "data-state": W(s.checked),
76
+ "data-disabled": s.disabled ? "" : void 0,
77
+ ...a,
78
+ ref: r
79
+ }
80
+ );
81
+ }
82
+ );
83
+ O.displayName = T;
84
+ var oe = (e) => {
85
+ const { control: r, checked: t, bubbles: a = !0, ...s } = e, i = x.useRef(null), h = K(t), l = Z(r);
86
+ return x.useEffect(() => {
87
+ const n = i.current, o = window.HTMLInputElement.prototype, _ = Object.getOwnPropertyDescriptor(o, "checked").set;
88
+ if (h !== t && _) {
89
+ const u = new Event("click", { bubbles: a });
90
+ _.call(n, t), n.dispatchEvent(u);
91
+ }
92
+ }, [h, t, a]), /* @__PURE__ */ k(
93
+ "input",
94
+ {
95
+ type: "checkbox",
96
+ "aria-hidden": !0,
97
+ defaultChecked: t,
98
+ ...s,
99
+ tabIndex: -1,
100
+ ref: i,
101
+ style: {
102
+ ...e.style,
103
+ ...l,
104
+ position: "absolute",
105
+ pointerEvents: "none",
106
+ opacity: 0,
107
+ margin: 0
108
+ }
109
+ }
110
+ );
111
+ };
112
+ function W(e) {
113
+ return e ? "checked" : "unchecked";
114
+ }
115
+ var se = H, ie = O;
116
+ const $ = (e) => e && "touches" in e, ae = ({
117
+ children: e,
118
+ disabled: r,
119
+ onStart: t,
120
+ onDrag: a,
121
+ onStop: s,
122
+ bounds: i,
123
+ position: h,
124
+ style: l
125
+ }) => {
126
+ const [n, o] = S(void 0), [p, _] = S(void 0), [u, c] = S(!1), g = (d) => {
127
+ if (!r) {
128
+ d.preventDefault();
129
+ const C = $(d.nativeEvent) ? d.nativeEvent.touches[0].clientX : d.nativeEvent.clientX;
130
+ _(C), t?.();
131
+ }
132
+ }, f = P(
133
+ (d) => {
134
+ if (typeof p != "number")
135
+ return;
136
+ const w = ($(d) ? d.touches[0].clientX : d.clientX) - p;
137
+ if (!w)
138
+ return;
139
+ const v = h + w;
140
+ !u && Math.abs(v) && c(!0);
141
+ const X = v > i.right ? i.right : v < i.left ? i.left : v;
142
+ o(X), a?.({ x: X });
143
+ },
144
+ // eslint-disable-next-line react-hooks/exhaustive-deps
145
+ [a, o, u, p]
146
+ ), m = P(() => {
147
+ _(void 0), o(void 0), c(!1), s?.();
148
+ }, [s, _]);
149
+ return E(() => (window.addEventListener("mousemove", f), window.addEventListener("touchmove", f), () => {
150
+ window.removeEventListener("mousemove", f), window.removeEventListener("touchmove", f);
151
+ }), [f]), E(() => (window.addEventListener("mouseup", m), window.addEventListener("touchend", m), () => {
152
+ window.removeEventListener("mouseup", m), window.removeEventListener("touchend", m);
153
+ }), [m]), A(e) ? I(e, {
154
+ onMouseDown: g,
155
+ onTouchStart: g,
156
+ style: { ...l, transform: `translateX(${u ? n : h}px)` }
157
+ }) : null;
158
+ }, y = {
159
+ width: void 0,
160
+ height: void 0
161
+ };
162
+ function N(e) {
163
+ const { ref: r, box: t = "content-box", round: a } = e, [{ width: s, height: i }, h] = S(y), l = ce(), n = R({ ...y }), o = R(void 0);
164
+ return o.current = e.onResize, E(() => {
165
+ if (!r.current || typeof window > "u" || !("ResizeObserver" in window))
166
+ return;
167
+ const p = new ResizeObserver(([_]) => {
168
+ const u = t === "border-box" ? "borderBoxSize" : t === "device-pixel-content-box" ? "devicePixelContentBoxSize" : "contentBoxSize", c = L(_, u, "inlineSize"), g = L(_, u, "blockSize");
169
+ if (n.current.width !== c || n.current.height !== g) {
170
+ const m = {
171
+ width: c && a ? Math.round(c) : c,
172
+ height: g && a ? Math.round(g) : g
173
+ };
174
+ n.current.width = c, n.current.height = g, o.current ? o.current(m) : l() && h(m);
175
+ }
176
+ });
177
+ return p.observe(r.current, { box: t }), () => {
178
+ p.disconnect();
179
+ };
180
+ }, [t, r, l, a]), { width: s, height: i };
181
+ }
182
+ function L(e, r, t) {
183
+ return e[r] ? Array.isArray(e[r]) ? e[r][0][t] : (
184
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
185
+ // @ts-ignore Support Firefox's non-standard behavior
186
+ e[r][t]
187
+ ) : r === "contentBoxSize" ? e.contentRect[t === "inlineSize" ? "width" : "height"] : void 0;
188
+ }
189
+ function ce() {
190
+ const e = R(!1);
191
+ return E(() => (e.current = !0, () => {
192
+ e.current = !1;
193
+ }), []), P(() => e.current, []);
194
+ }
195
+ const ue = ({ checked: e, onChange: r }) => {
196
+ const t = R(null), a = R(null), [s, i] = S(void 0), [h, l] = S(!1), [n, o] = S(0), { height: p = 0 } = N({ ref: a, round: !0 }), { height: _ = 0 } = N({ ref: t, round: !0 }), u = (_ || 0) - p, c = p + u, g = u / 2, f = c / 2, m = typeof s == "number" && (e ? s < f : s > f);
197
+ return {
198
+ trackRef: t,
199
+ thumbRef: a,
200
+ isDragging: h,
201
+ bounds: { left: g, right: c },
202
+ position: e ? c : g,
203
+ onDrag: ({ x: v }) => {
204
+ i(v), Math.abs((e ? c : g) - v) > 2 && l(!0);
205
+ },
206
+ onStop: () => {
207
+ l(!1), h && o(Date.now()), m && r?.(!e);
208
+ },
209
+ onChangeWithDrag: () => {
210
+ Date.now() - n > 50 && r?.(!e), i(void 0);
211
+ }
212
+ };
213
+ }, le = {
214
+ "purpur-toggle": "_purpur-toggle_15s9r_1",
215
+ "purpur-toggle__track": "_purpur-toggle__track_15s9r_7",
216
+ "purpur-toggle__checkmark-container": "_purpur-toggle__checkmark-container_15s9r_45",
217
+ "purpur-toggle__track--negative": "_purpur-toggle__track--negative_15s9r_60",
218
+ "purpur-toggle__thumb": "_purpur-toggle__thumb_15s9r_64",
219
+ "purpur-toggle__thumb--dragging": "_purpur-toggle__thumb--dragging_15s9r_89",
220
+ "purpur-toggle__thumb--negative": "_purpur-toggle__thumb--negative_15s9r_98",
221
+ "purpur-toggle__checkmark": "_purpur-toggle__checkmark_15s9r_45",
222
+ "purpur-toggle__label--right": "_purpur-toggle__label--right_15s9r_126",
223
+ "purpur-toggle__label--left": "_purpur-toggle__label--left_15s9r_129",
224
+ "purpur-toggle__container": "_purpur-toggle__container_15s9r_132",
225
+ "purpur-toggle--negative": "_purpur-toggle--negative_15s9r_141"
226
+ }, D = ee.bind(le), b = "purpur-toggle", ge = j(
227
+ ({
228
+ ["data-testid"]: e,
229
+ className: r,
230
+ label: t,
231
+ onChange: a,
232
+ labelPosition: s = "right",
233
+ checked: i,
234
+ disableDrag: h,
235
+ defaultChecked: l,
236
+ negative: n = !1,
237
+ ...o
238
+ }, p) => {
239
+ const [_, u] = S(
240
+ typeof i == "boolean" ? i : !!l
241
+ ), c = !!(typeof i == "boolean" ? i : _), { thumbRef: g, trackRef: f, isDragging: m, onChangeWithDrag: d, ...C } = ue({
242
+ checked: c,
243
+ onChange: (v) => {
244
+ o.disabled || (a?.(v), u(v));
245
+ }
246
+ }), w = () => /* @__PURE__ */ k(
247
+ U,
248
+ {
249
+ htmlFor: o.id,
250
+ "data-testid": e && `${e}-label`,
251
+ disabled: o.disabled,
252
+ className: D(`${b}__label`, `${b}__label--${s}`),
253
+ negative: n,
254
+ children: /* @__PURE__ */ k(V, { disabled: o.disabled, negative: n, children: t })
255
+ }
256
+ );
257
+ return /* @__PURE__ */ z("div", { className: D(r, `${b}__container`), children: [
258
+ t && s === "left" && w(),
259
+ /* @__PURE__ */ k(
260
+ se,
261
+ {
262
+ ...o,
263
+ ref: p,
264
+ id: o.id,
265
+ "data-testid": e,
266
+ className: D(b, { [`${b}--negative`]: n }),
267
+ onCheckedChange: d,
268
+ checked: c,
269
+ children: /* @__PURE__ */ z(
270
+ "span",
271
+ {
272
+ ref: f,
273
+ className: D(`${b}__track`, {
274
+ [`${b}__track--negative`]: n
275
+ }),
276
+ children: [
277
+ /* @__PURE__ */ k("span", { className: D(`${b}__checkmark-container`), children: /* @__PURE__ */ k(q, { className: D(`${b}__checkmark`), svg: F, size: "xxs" }) }),
278
+ /* @__PURE__ */ k(ae, { disabled: h, ...C, children: /* @__PURE__ */ k(
279
+ ie,
280
+ {
281
+ ref: g,
282
+ "data-testid": e && `${e}-thumb`,
283
+ className: D(`${b}__thumb`, {
284
+ [`${b}__thumb--dragging`]: m,
285
+ [`${b}__thumb--negative`]: n
286
+ })
287
+ }
288
+ ) })
289
+ ]
290
+ }
291
+ )
292
+ }
293
+ ),
294
+ t && s === "right" && w()
295
+ ] });
296
+ }
297
+ );
298
+ ge.displayName = "Toggle";
299
+ export {
300
+ ge as T
301
+ };
302
+ //# sourceMappingURL=toggle-CY3J8BRX.mjs.map