@purpur/library 9.2.3 → 9.4.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 (304) hide show
  1. package/CHANGELOG.json +39 -0
  2. package/CHANGELOG.md +20 -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-D1zJpdLL.mjs → comparison-table-8bOJmz-L.mjs} +116 -116
  43. package/dist/comparison-table-8bOJmz-L.mjs.map +1 -0
  44. package/dist/comparison-table-mKL2IHXW.js +2 -0
  45. package/dist/comparison-table-mKL2IHXW.js.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/drawer/src/drawer-content.d.ts.map +1 -1
  58. package/dist/components/drawer/src/drawer.context.d.ts +1 -0
  59. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  60. package/dist/components/drawer/src/drawer.d.ts +6 -0
  61. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  62. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  63. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  64. package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -2
  65. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  66. package/dist/components/dropdown/src/useDropdown.d.ts +2 -1
  67. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  68. package/dist/components/listbox/src/listbox-item.d.ts +2 -2
  69. package/dist/components/listbox/src/listbox-item.d.ts.map +1 -1
  70. package/dist/components/listbox/src/listbox.d.ts +4 -1
  71. package/dist/components/listbox/src/listbox.d.ts.map +1 -1
  72. package/dist/components/toggle/src/toggle.d.ts +1 -0
  73. package/dist/components/toggle/src/toggle.d.ts.map +1 -1
  74. package/dist/components-metadata.js +4 -2
  75. package/dist/{content-block-Dm3L4g8w.mjs → content-block-CakKeJtN.mjs} +2 -2
  76. package/dist/{content-block-Dm3L4g8w.mjs.map → content-block-CakKeJtN.mjs.map} +1 -1
  77. package/dist/{content-block-CDRUH0pg.js → content-block-CrekbIfe.js} +2 -2
  78. package/dist/{content-block-CDRUH0pg.js.map → content-block-CrekbIfe.js.map} +1 -1
  79. package/dist/content-block.cjs.js +1 -1
  80. package/dist/content-block.es.js +1 -1
  81. package/dist/{countdown-DZ4IwkNy.mjs → countdown-BsLsEZBv.mjs} +2 -2
  82. package/dist/{countdown-DZ4IwkNy.mjs.map → countdown-BsLsEZBv.mjs.map} +1 -1
  83. package/dist/{countdown-CqYsZigV.js → countdown-hYrFLmRg.js} +2 -2
  84. package/dist/{countdown-CqYsZigV.js.map → countdown-hYrFLmRg.js.map} +1 -1
  85. package/dist/countdown.cjs.js +1 -1
  86. package/dist/countdown.es.js +1 -1
  87. package/dist/{date-picker-DwFDRL5Z.mjs → date-picker-CbUNbOhn.mjs} +2 -2
  88. package/dist/{date-picker-DwFDRL5Z.mjs.map → date-picker-CbUNbOhn.mjs.map} +1 -1
  89. package/dist/{date-picker-DVrcu2QU.js → date-picker-DYXNB5aU.js} +2 -2
  90. package/dist/{date-picker-DVrcu2QU.js.map → date-picker-DYXNB5aU.js.map} +1 -1
  91. package/dist/date-picker.cjs.js +1 -1
  92. package/dist/date-picker.es.js +1 -1
  93. package/dist/dismissable-chip-group-2updhyuR.js +2 -0
  94. package/dist/dismissable-chip-group-2updhyuR.js.map +1 -0
  95. package/dist/dismissable-chip-group-Cfs2s2BH.mjs +94 -0
  96. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +1 -0
  97. package/dist/dismissable-chip-group.cjs.js +1 -1
  98. package/dist/dismissable-chip-group.es.js +6 -5
  99. package/dist/drawer-8Acg4wkV.mjs +574 -0
  100. package/dist/drawer-8Acg4wkV.mjs.map +1 -0
  101. package/dist/drawer-BLHgcEqb.js +2 -0
  102. package/dist/drawer-BLHgcEqb.js.map +1 -0
  103. package/dist/drawer.cjs.js +1 -1
  104. package/dist/drawer.es.js +1 -1
  105. package/dist/dropdown-CMO_VD5e.mjs +916 -0
  106. package/dist/dropdown-CMO_VD5e.mjs.map +1 -0
  107. package/dist/dropdown-DJKNQnuo.js +2 -0
  108. package/dist/dropdown-DJKNQnuo.js.map +1 -0
  109. package/dist/dropdown.cjs.js +1 -1
  110. package/dist/dropdown.es.js +1 -1
  111. package/dist/{footer-BXs8uzTA.mjs → footer-BLPlXaZK.mjs} +4 -4
  112. package/dist/{footer-BXs8uzTA.mjs.map → footer-BLPlXaZK.mjs.map} +1 -1
  113. package/dist/{footer-DF9adlni.js → footer-D9AcPwlH.js} +2 -2
  114. package/dist/{footer-DF9adlni.js.map → footer-D9AcPwlH.js.map} +1 -1
  115. package/dist/footer.cjs.js +1 -1
  116. package/dist/footer.es.js +1 -1
  117. package/dist/{hero-banner-BfxclVFT.js → hero-banner-D1A-_qou.js} +2 -2
  118. package/dist/{hero-banner-BfxclVFT.js.map → hero-banner-D1A-_qou.js.map} +1 -1
  119. package/dist/{hero-banner-CxPvhXD2.mjs → hero-banner-DkC_BqM7.mjs} +3 -3
  120. package/dist/{hero-banner-CxPvhXD2.mjs.map → hero-banner-DkC_BqM7.mjs.map} +1 -1
  121. package/dist/hero-banner.cjs.js +1 -1
  122. package/dist/hero-banner.es.js +1 -1
  123. package/dist/{index-CKCTy3ZL.mjs → index-3NV-ckDX.mjs} +4 -4
  124. package/dist/{index-CKCTy3ZL.mjs.map → index-3NV-ckDX.mjs.map} +1 -1
  125. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  126. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  127. package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
  128. package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
  129. package/dist/library.cjs.js +1 -1
  130. package/dist/library.es.js +593 -590
  131. package/dist/listbox-ATP4hOWF.js +2 -0
  132. package/dist/listbox-ATP4hOWF.js.map +1 -0
  133. package/dist/listbox-i6BQQ-NZ.mjs +73 -0
  134. package/dist/listbox-i6BQQ-NZ.mjs.map +1 -0
  135. package/dist/listbox.cjs.js +1 -1
  136. package/dist/listbox.es.js +3 -2
  137. package/dist/{modal-COF_UhvY.js → modal-Baisuc6m.js} +2 -2
  138. package/dist/{modal-COF_UhvY.js.map → modal-Baisuc6m.js.map} +1 -1
  139. package/dist/{modal-BMg43Fvd.mjs → modal-fp37VbrH.mjs} +3 -3
  140. package/dist/{modal-BMg43Fvd.mjs.map → modal-fp37VbrH.mjs.map} +1 -1
  141. package/dist/modal.cjs.js +1 -1
  142. package/dist/modal.es.js +1 -1
  143. package/dist/{notification-BqjaT4E7.js → notification-B5bNNq86.js} +2 -2
  144. package/dist/{notification-BqjaT4E7.js.map → notification-B5bNNq86.js.map} +1 -1
  145. package/dist/{notification-DdRS5BF2.mjs → notification-BbQCmsnY.mjs} +2 -2
  146. package/dist/{notification-DdRS5BF2.mjs.map → notification-BbQCmsnY.mjs.map} +1 -1
  147. package/dist/notification.cjs.js +1 -1
  148. package/dist/notification.es.js +1 -1
  149. package/dist/{pagination-CVYUacXN.mjs → pagination-Cc_4zCQA.mjs} +2 -2
  150. package/dist/{pagination-CVYUacXN.mjs.map → pagination-Cc_4zCQA.mjs.map} +1 -1
  151. package/dist/{pagination-Bwlkvqye.js → pagination-rFRdkHII.js} +2 -2
  152. package/dist/{pagination-Bwlkvqye.js.map → pagination-rFRdkHII.js.map} +1 -1
  153. package/dist/pagination.cjs.js +1 -1
  154. package/dist/pagination.es.js +1 -1
  155. package/dist/paragraph-By4jMjnH.js +2 -0
  156. package/dist/{paragraph-BsI53OR0.js.map → paragraph-By4jMjnH.js.map} +1 -1
  157. package/dist/{paragraph-Ci50OF1u.mjs → paragraph-DSxXmX_0.mjs} +23 -23
  158. package/dist/{paragraph-Ci50OF1u.mjs.map → paragraph-DSxXmX_0.mjs.map} +1 -1
  159. package/dist/paragraph.cjs.js +1 -1
  160. package/dist/paragraph.es.js +1 -1
  161. package/dist/{popover-XCUa2GfC.js → popover-B0XJZ5mj.js} +2 -2
  162. package/dist/{popover-XCUa2GfC.js.map → popover-B0XJZ5mj.js.map} +1 -1
  163. package/dist/{popover-Dwqs1wGH.mjs → popover-_xJATlhN.mjs} +2 -2
  164. package/dist/{popover-Dwqs1wGH.mjs.map → popover-_xJATlhN.mjs.map} +1 -1
  165. package/dist/popover.cjs.js +1 -1
  166. package/dist/popover.es.js +1 -1
  167. package/dist/{product-card-BfB82XpS.mjs → product-card-C3_N0t-R.mjs} +3 -3
  168. package/dist/{product-card-BfB82XpS.mjs.map → product-card-C3_N0t-R.mjs.map} +1 -1
  169. package/dist/{product-card-bVQ7JhHj.js → product-card-CoY1KggV.js} +2 -2
  170. package/dist/{product-card-bVQ7JhHj.js.map → product-card-CoY1KggV.js.map} +1 -1
  171. package/dist/product-card.cjs.js +1 -1
  172. package/dist/product-card.es.js +1 -1
  173. package/dist/{promotion-card-DqBBt2sz.js → promotion-card-Bag64gqP.js} +2 -2
  174. package/dist/{promotion-card-DqBBt2sz.js.map → promotion-card-Bag64gqP.js.map} +1 -1
  175. package/dist/{promotion-card-BhNw94sC.mjs → promotion-card-BiHnQvhn.mjs} +4 -4
  176. package/dist/{promotion-card-BhNw94sC.mjs.map → promotion-card-BiHnQvhn.mjs.map} +1 -1
  177. package/dist/promotion-card.cjs.js +1 -1
  178. package/dist/promotion-card.es.js +1 -1
  179. package/dist/purpur.css +1 -1
  180. package/dist/quantity-selector-CDSfcTb1.js +2 -0
  181. package/dist/{quantity-selector-8AkKNDik.js.map → quantity-selector-CDSfcTb1.js.map} +1 -1
  182. package/dist/{quantity-selector-C23kU1hF.mjs → quantity-selector-CvBvnMeB.mjs} +35 -35
  183. package/dist/{quantity-selector-C23kU1hF.mjs.map → quantity-selector-CvBvnMeB.mjs.map} +1 -1
  184. package/dist/quantity-selector.cjs.js +1 -1
  185. package/dist/quantity-selector.es.js +1 -1
  186. package/dist/{radio-card-group-BlRZBa-9.mjs → radio-card-group-CneOprGY.mjs} +2 -2
  187. package/dist/{radio-card-group-BlRZBa-9.mjs.map → radio-card-group-CneOprGY.mjs.map} +1 -1
  188. package/dist/{radio-card-group-sYcfDPJq.js → radio-card-group-Ctuvg61o.js} +2 -2
  189. package/dist/{radio-card-group-sYcfDPJq.js.map → radio-card-group-Ctuvg61o.js.map} +1 -1
  190. package/dist/radio-card-group.cjs.js +1 -1
  191. package/dist/radio-card-group.es.js +1 -1
  192. package/dist/rich-text.cjs.js +1 -1
  193. package/dist/rich-text.es.js +1 -1
  194. package/dist/{search-field-CZ9mIyZ-.mjs → search-field-CpkHGIYi.mjs} +3 -3
  195. package/dist/{search-field-CZ9mIyZ-.mjs.map → search-field-CpkHGIYi.mjs.map} +1 -1
  196. package/dist/{search-field-DD9UkOca.js → search-field-Z0PqDARl.js} +2 -2
  197. package/dist/{search-field-DD9UkOca.js.map → search-field-Z0PqDARl.js.map} +1 -1
  198. package/dist/search-field.cjs.js +1 -1
  199. package/dist/search-field.es.js +1 -1
  200. package/dist/{stepper-uBfDdIju.mjs → stepper-CNnx_NiR.mjs} +2 -2
  201. package/dist/{stepper-uBfDdIju.mjs.map → stepper-CNnx_NiR.mjs.map} +1 -1
  202. package/dist/{stepper-w-raIwqJ.js → stepper-Df4X7DDR.js} +2 -2
  203. package/dist/{stepper-w-raIwqJ.js.map → stepper-Df4X7DDR.js.map} +1 -1
  204. package/dist/stepper.cjs.js +1 -1
  205. package/dist/stepper.es.js +1 -1
  206. package/dist/{table-Dx_dhGT6.mjs → table-D_sdSJyr.mjs} +6 -6
  207. package/dist/{table-Dx_dhGT6.mjs.map → table-D_sdSJyr.mjs.map} +1 -1
  208. package/dist/{table-DsgqX7Vv.js → table-gnGUejtb.js} +2 -2
  209. package/dist/{table-DsgqX7Vv.js.map → table-gnGUejtb.js.map} +1 -1
  210. package/dist/table.cjs.js +1 -1
  211. package/dist/table.es.js +1 -1
  212. package/dist/{text-area-DDZ_GQPW.mjs → text-area-kJvg6cFp.mjs} +3 -3
  213. package/dist/{text-area-DDZ_GQPW.mjs.map → text-area-kJvg6cFp.mjs.map} +1 -1
  214. package/dist/{text-area-C6W0fDiQ.js → text-area-peNKG7g4.js} +2 -2
  215. package/dist/{text-area-C6W0fDiQ.js.map → text-area-peNKG7g4.js.map} +1 -1
  216. package/dist/text-area.cjs.js +1 -1
  217. package/dist/text-area.es.js +1 -1
  218. package/dist/theme.cjs.js +1 -1
  219. package/dist/theme.es.js +2 -2
  220. package/dist/toggle-B8ZLUVar.js +2 -0
  221. package/dist/{toggle-C8IwTbX8.js.map → toggle-B8ZLUVar.js.map} +1 -1
  222. package/dist/toggle-CY3J8BRX.mjs +302 -0
  223. package/dist/{toggle-D23x1wWk.mjs.map → toggle-CY3J8BRX.mjs.map} +1 -1
  224. package/dist/toggle.cjs.js +1 -1
  225. package/dist/toggle.es.js +1 -1
  226. package/dist/tokens/color/variables.css +1 -0
  227. package/dist/tokens/color/variables.d.ts +1 -0
  228. package/dist/tokens/color/variables.dark.css +1 -0
  229. package/dist/tokens/color/variables.dark.d.ts +1 -0
  230. package/dist/tokens/color/variables.dark.js +1 -0
  231. package/dist/tokens/color/variables.dark.json +2 -1
  232. package/dist/tokens/color/variables.dark.scss +1 -0
  233. package/dist/tokens/color/variables.js +1 -0
  234. package/dist/tokens/color/variables.json +2 -1
  235. package/dist/tokens/color/variables.scss +1 -0
  236. package/dist/tokens.cjs.js +1 -1
  237. package/dist/tokens.es.js +76 -75
  238. package/dist/{tooltip-0pLBlDG3.js → tooltip-C8Zxnqdb.js} +2 -2
  239. package/dist/{tooltip-0pLBlDG3.js.map → tooltip-C8Zxnqdb.js.map} +1 -1
  240. package/dist/{tooltip-Kom0VfOC.mjs → tooltip-VlURN8H3.mjs} +2 -2
  241. package/dist/{tooltip-Kom0VfOC.mjs.map → tooltip-VlURN8H3.mjs.map} +1 -1
  242. package/dist/tooltip.cjs.js +1 -1
  243. package/dist/tooltip.es.js +1 -1
  244. package/dist/use-autocomplete.es-BwAzMcau.js +2 -0
  245. package/dist/use-autocomplete.es-BwAzMcau.js.map +1 -0
  246. package/dist/{use-autocomplete.es-CVv3z8t6.mjs → use-autocomplete.es-CKb0RHKG.mjs} +37 -35
  247. package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +1 -0
  248. package/dist/useColorScheme-DNyjsWX9.js +2 -0
  249. package/dist/{useColorScheme-0GMDl2GF.js.map → useColorScheme-DNyjsWX9.js.map} +1 -1
  250. package/dist/{useColorScheme-Di_Q0JR4.mjs → useColorScheme-tAkY9LHt.mjs} +2 -2
  251. package/dist/{useColorScheme-Di_Q0JR4.mjs.map → useColorScheme-tAkY9LHt.mjs.map} +1 -1
  252. package/dist/{variables-CKp4o9Tn.mjs → variables-B5hbV0Uy.mjs} +128 -127
  253. package/dist/variables-B5hbV0Uy.mjs.map +1 -0
  254. package/dist/variables-DoI78zZc.js +2 -0
  255. package/dist/variables-DoI78zZc.js.map +1 -0
  256. package/package.json +21 -21
  257. package/tokens/color/variables.css +1 -0
  258. package/tokens/color/variables.d.ts +1 -0
  259. package/tokens/color/variables.dark.css +1 -0
  260. package/tokens/color/variables.dark.d.ts +1 -0
  261. package/tokens/color/variables.dark.js +1 -0
  262. package/tokens/color/variables.dark.json +2 -1
  263. package/tokens/color/variables.dark.scss +1 -0
  264. package/tokens/color/variables.js +1 -0
  265. package/tokens/color/variables.json +2 -1
  266. package/tokens/color/variables.scss +1 -0
  267. package/dist/ThemeProvider-5r7lDX-h.js.map +0 -1
  268. package/dist/ThemeProvider-bkyFCeo6.mjs.map +0 -1
  269. package/dist/accordion-OsA0HvdA.js.map +0 -1
  270. package/dist/accordion-OtFSShSB.mjs.map +0 -1
  271. package/dist/checkbox-D6qWgpWR.mjs +0 -231
  272. package/dist/checkbox-D6qWgpWR.mjs.map +0 -1
  273. package/dist/checkbox-Dk3bZkZ3.js +0 -2
  274. package/dist/checkbox-Dk3bZkZ3.js.map +0 -1
  275. package/dist/comparison-table-B8w65g43.js +0 -2
  276. package/dist/comparison-table-B8w65g43.js.map +0 -1
  277. package/dist/comparison-table-D1zJpdLL.mjs.map +0 -1
  278. package/dist/dismissable-chip-group-Cd23yjBa.js +0 -2
  279. package/dist/dismissable-chip-group-Cd23yjBa.js.map +0 -1
  280. package/dist/dismissable-chip-group-D-gD93ON.mjs +0 -89
  281. package/dist/dismissable-chip-group-D-gD93ON.mjs.map +0 -1
  282. package/dist/drawer-Db2Mujc6.mjs +0 -565
  283. package/dist/drawer-Db2Mujc6.mjs.map +0 -1
  284. package/dist/drawer-DlwagnO4.js +0 -2
  285. package/dist/drawer-DlwagnO4.js.map +0 -1
  286. package/dist/dropdown-BsqVnd7z.js +0 -2
  287. package/dist/dropdown-BsqVnd7z.js.map +0 -1
  288. package/dist/dropdown-TO3Mh0bk.mjs +0 -910
  289. package/dist/dropdown-TO3Mh0bk.mjs.map +0 -1
  290. package/dist/listbox-COBHLRtB.js +0 -2
  291. package/dist/listbox-COBHLRtB.js.map +0 -1
  292. package/dist/listbox-DG4KmQP_.mjs +0 -66
  293. package/dist/listbox-DG4KmQP_.mjs.map +0 -1
  294. package/dist/paragraph-BsI53OR0.js +0 -2
  295. package/dist/quantity-selector-8AkKNDik.js +0 -2
  296. package/dist/toggle-C8IwTbX8.js +0 -2
  297. package/dist/toggle-D23x1wWk.mjs +0 -287
  298. package/dist/use-autocomplete.es-BHDgQLae.js +0 -2
  299. package/dist/use-autocomplete.es-BHDgQLae.js.map +0 -1
  300. package/dist/use-autocomplete.es-CVv3z8t6.mjs.map +0 -1
  301. package/dist/useColorScheme-0GMDl2GF.js +0 -2
  302. package/dist/variables-CKp4o9Tn.mjs.map +0 -1
  303. package/dist/variables-DH61hVNE.js +0 -2
  304. package/dist/variables-DH61hVNE.js.map +0 -1
@@ -0,0 +1,574 @@
1
+ import { jsx as e, jsxs as g, Fragment as I } from "react/jsx-runtime";
2
+ import H, { createContext as wr, forwardRef as z, useContext as hr, useRef as G, useEffect as fr } from "react";
3
+ import { a as mr, T as U, C as $r, D as vr, P as J, O as yr, b as br, R as gr } from "./index-3NV-ckDX.mjs";
4
+ import { c as k } from "./bind-CU-R61T-.mjs";
5
+ import { b as Q, a as F } from "./button-4-yWOgtD.mjs";
6
+ import { H as Z, D as B } from "./heading-xwBuT_-9.mjs";
7
+ import { l as Dr } from "./chevron-left.es-UFhf3v35.mjs";
8
+ import { r as Nr } from "./close.es-BPmk2wkU.mjs";
9
+ import { V as rr } from "./visually-hidden-BYFkJEp1.mjs";
10
+ import { R as jr, V as Pr, S as zr, T as Sr } from "./index-B8Mazo6u.mjs";
11
+ const ar = wr(null), Or = "_slideUp_9zrj7_1", xr = "_slideDown_9zrj7_1", kr = "_slideInRight_9zrj7_1", Ar = "_slideInLeft_9zrj7_1", Cr = "_slideOutRight_9zrj7_1", Er = "_slideOutLeft_9zrj7_1", Vr = "_fadeIn_9zrj7_1", Lr = "_fadeOut_9zrj7_1", Mr = {
12
+ "purpur-drawer-content": "_purpur-drawer-content_9zrj7_1",
13
+ slideUp: Or,
14
+ slideDown: xr,
15
+ "purpur-drawer-content--left": "_purpur-drawer-content--left_9zrj7_21",
16
+ "purpur-drawer-content--right": "_purpur-drawer-content--right_9zrj7_24",
17
+ "purpur-drawer-content--fit-to-content": "_purpur-drawer-content--fit-to-content_9zrj7_27",
18
+ slideInRight: kr,
19
+ slideInLeft: Ar,
20
+ slideOutRight: Cr,
21
+ slideOutLeft: Er,
22
+ "purpur-drawer-content__content-container": "_purpur-drawer-content__content-container_9zrj7_63",
23
+ "purpur-drawer-content__description": "_purpur-drawer-content__description_9zrj7_68",
24
+ "purpur-drawer-content--ai": "_purpur-drawer-content--ai_9zrj7_78",
25
+ "purpur-drawer-overlay": "_purpur-drawer-overlay_9zrj7_82",
26
+ fadeIn: Vr,
27
+ fadeOut: Lr
28
+ }, Ur = {
29
+ "purpur-drawer-container--header": "_purpur-drawer-container--header_1csed_1",
30
+ "purpur-drawer-container--ai": "_purpur-drawer-container--ai_1csed_4",
31
+ "purpur-drawer-container--body": "_purpur-drawer-container--body_1csed_7",
32
+ "purpur-drawer-container--sticky": "_purpur-drawer-container--sticky_1csed_15",
33
+ "purpur-drawer-container--footer": "_purpur-drawer-container--footer_1csed_23"
34
+ }, Yr = k.bind(Ur), Y = "purpur-drawer-container", x = z(
35
+ ({
36
+ ["data-testid"]: r = "purpur-drawer-container",
37
+ children: a,
38
+ className: o,
39
+ drawerVariant: n = "default",
40
+ variant: u = "body",
41
+ stickyFooter: c,
42
+ ...s
43
+ }, d) => {
44
+ const p = Yr([
45
+ Y,
46
+ {
47
+ [`${Y}--${u}`]: u,
48
+ [`${Y}--sticky`]: c,
49
+ [`${Y}--ai`]: n === "ai"
50
+ },
51
+ o
52
+ ]);
53
+ return /* @__PURE__ */ e("div", { className: p, "data-testid": r, ref: d, ...s, children: a });
54
+ }
55
+ );
56
+ x.displayName = "DrawerContainer";
57
+ const Hr = {
58
+ "purpur-drawer-frame": "_purpur-drawer-frame_vjt35_1",
59
+ "purpur-drawer-frame--ai": "_purpur-drawer-frame--ai_vjt35_11",
60
+ "purpur-drawer-frame--without-back-button": "_purpur-drawer-frame--without-back-button_vjt35_14",
61
+ "purpur-drawer-frame__header": "_purpur-drawer-frame__header_vjt35_14",
62
+ "purpur-drawer-frame--with-back-button": "_purpur-drawer-frame--with-back-button_vjt35_17",
63
+ "purpur-drawer-frame--left": "_purpur-drawer-frame--left_vjt35_21",
64
+ "purpur-drawer-frame--right": "_purpur-drawer-frame--right_vjt35_25",
65
+ "purpur-drawer-frame--sticky-footer": "_purpur-drawer-frame--sticky-footer_vjt35_36",
66
+ "purpur-drawer-frame__body": "_purpur-drawer-frame__body_vjt35_42",
67
+ "purpur-drawer-frame--fit-to-content": "_purpur-drawer-frame--fit-to-content_vjt35_46",
68
+ "purpur-drawer-frame__footer": "_purpur-drawer-frame__footer_vjt35_55",
69
+ "purpur-drawer-frame__content-container": "_purpur-drawer-frame__content-container_vjt35_58",
70
+ "purpur-drawer-frame__content-container--no-footer": "_purpur-drawer-frame__content-container--no-footer_vjt35_63"
71
+ }, Rr = {
72
+ "purpur-drawer-handle": "_purpur-drawer-handle_lz3ca_1",
73
+ "purpur-drawer-handle--ai": "_purpur-drawer-handle--ai_lz3ca_22"
74
+ }, Fr = (r, a, o, n, u, c) => ({
75
+ onPointerDown: (t) => {
76
+ r.current = { y: t.clientY };
77
+ },
78
+ onPointerMove: (t) => {
79
+ if (!r.current)
80
+ return;
81
+ const i = t.clientY - r.current.y, h = !!a.current, f = Math.max(0, i), _ = t.pointerType === "touch" ? 10 : 2, l = { y: f }, y = { originalEvent: t, delta: l };
82
+ h ? (a.current = l, n(y)) : er(l, 0) ? (a.current = l, o(), t.target.setPointerCapture(t.pointerId)) : Math.abs(i) > _ && (r.current = null);
83
+ },
84
+ onPointerUp: (t) => {
85
+ const i = a.current, h = t.target;
86
+ if (h.hasPointerCapture(t.pointerId) && h.releasePointerCapture(t.pointerId), a.current = null, r.current = null, i) {
87
+ const f = t.currentTarget, _ = { originalEvent: t, delta: i };
88
+ er(i, 0) && i.y > 200 ? c(_) : u(), f.addEventListener("click", (l) => l.preventDefault(), {
89
+ once: !0
90
+ });
91
+ }
92
+ }
93
+ }), er = (r, a = 0) => Math.abs(r.y) > a, Ir = k.bind(Rr), tr = "purpur-drawer-handle", nr = z(
94
+ ({
95
+ ["data-testid"]: r = "purpur-drawer-handle",
96
+ className: a,
97
+ onSwipeStart: o,
98
+ onSwipeMove: n,
99
+ onSwipeCancel: u,
100
+ onSwipeEnd: c,
101
+ variant: s = "default",
102
+ ...d
103
+ }, p) => {
104
+ const t = Ir([tr, { [`${tr}--ai`]: s === "ai" }, a]), i = H.useRef(null), h = H.useRef(null), { onPointerDown: f, onPointerMove: _, onPointerUp: l } = Fr(
105
+ h,
106
+ i,
107
+ o,
108
+ n,
109
+ u,
110
+ c
111
+ );
112
+ return /* @__PURE__ */ e(
113
+ "div",
114
+ {
115
+ className: t,
116
+ "data-testid": r,
117
+ onPointerDown: f,
118
+ onPointerMove: _,
119
+ onPointerUp: l,
120
+ ref: p,
121
+ ...d
122
+ }
123
+ );
124
+ }
125
+ );
126
+ nr.displayName = "DrawerHandle";
127
+ const Kr = {
128
+ "purpur-drawer-header": "_purpur-drawer-header_1dlfk_1",
129
+ "purpur-drawer-header__row": "_purpur-drawer-header__row_1dlfk_4",
130
+ "purpur-drawer-header__row--with-back-button": "_purpur-drawer-header__row--with-back-button_1dlfk_7",
131
+ "purpur-drawer-header__left": "_purpur-drawer-header__left_1dlfk_10",
132
+ "purpur-drawer-header__right": "_purpur-drawer-header__right_1dlfk_13",
133
+ "purpur-drawer-header__close-button": "_purpur-drawer-header__close-button_1dlfk_16",
134
+ "purpur-drawer-header__back-button--only-icon": "_purpur-drawer-header__back-button--only-icon_1dlfk_27",
135
+ "purpur-drawer-header__title": "_purpur-drawer-header__title_1dlfk_30"
136
+ }, N = k.bind(Kr), v = "purpur-drawer-header", or = z(
137
+ ({
138
+ ["data-testid"]: r = "purpur-drawer-header",
139
+ backButton: a,
140
+ backButtonText: o,
141
+ backButtonOnlyIcon: n,
142
+ className: u,
143
+ closeButtonAriaLabel: c,
144
+ headerContent: s,
145
+ onBackButtonClick: d,
146
+ onCloseClick: p,
147
+ title: t,
148
+ variant: i = "default",
149
+ ...h
150
+ }, f) => {
151
+ const _ = N([v, { [`${v}--ai`]: i === "ai" }, u]), l = !!(a && o && d), y = i === "ai", D = p ? H.Fragment : mr;
152
+ return /* @__PURE__ */ g("div", { className: _, "data-testid": r, ref: f, ...h, children: [
153
+ /* @__PURE__ */ g(
154
+ "div",
155
+ {
156
+ className: N([
157
+ `${v}__row`,
158
+ {
159
+ [`${v}__row--with-back-button`]: l
160
+ }
161
+ ]),
162
+ "data-testid": `${r}-row`,
163
+ children: [
164
+ /* @__PURE__ */ e("div", { className: N(`${v}__left`), children: l ? /* @__PURE__ */ g(
165
+ Q,
166
+ {
167
+ "aria-label": n ? o : "",
168
+ className: N([
169
+ `${v}__back-button`,
170
+ {
171
+ [`${v}__back-button--only-icon`]: n
172
+ }
173
+ ]),
174
+ "data-testid": `${r}-back-button`,
175
+ iconOnly: n,
176
+ negative: y,
177
+ onClick: d,
178
+ size: "sm",
179
+ variant: n ? F.TERTIARY_PURPLE : F.TEXT,
180
+ children: [
181
+ /* @__PURE__ */ e(Dr, { size: "sm" }),
182
+ !n && o
183
+ ]
184
+ }
185
+ ) : s ? /* @__PURE__ */ g(I, { children: [
186
+ s,
187
+ /* @__PURE__ */ e(rr, { asChild: !0, children: /* @__PURE__ */ e(U, { children: t }) })
188
+ ] }) : /* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e(
189
+ Z,
190
+ {
191
+ className: N(`${v}__title`),
192
+ "data-testid": `${r}-title`,
193
+ negative: y,
194
+ tag: "h2",
195
+ variant: B.DISPLAY10,
196
+ tabIndex: -1,
197
+ children: t
198
+ }
199
+ ) }) }),
200
+ /* @__PURE__ */ e("div", { className: N(`${v}__right`), children: /* @__PURE__ */ e(D, { ...p ? {} : { asChild: !0 }, children: /* @__PURE__ */ e(
201
+ Q,
202
+ {
203
+ "aria-label": c,
204
+ className: N(`${v}__close-button`),
205
+ iconOnly: !0,
206
+ negative: y,
207
+ onClick: p,
208
+ size: "sm",
209
+ variant: F.TERTIARY_PURPLE,
210
+ children: /* @__PURE__ */ e(Nr, { size: "sm" })
211
+ }
212
+ ) }) })
213
+ ]
214
+ }
215
+ ),
216
+ l && (s ? /* @__PURE__ */ g(I, { children: [
217
+ s,
218
+ /* @__PURE__ */ e(rr, { asChild: !0, children: /* @__PURE__ */ e(U, { children: t }) })
219
+ ] }) : /* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e(
220
+ Z,
221
+ {
222
+ "data-testid": `${r}-title-with-back-button`,
223
+ className: N(`${v}__title`),
224
+ negative: y,
225
+ tag: "h2",
226
+ tabIndex: -1,
227
+ variant: B.DISPLAY10,
228
+ children: t
229
+ }
230
+ ) }))
231
+ ] });
232
+ }
233
+ );
234
+ or.displayName = "DrawerHeader";
235
+ const Tr = {
236
+ "purpur-drawer-scroll-area__root": "_purpur-drawer-scroll-area__root_vzgxi_1",
237
+ "purpur-drawer-scroll-area__root--fit-to-content": "_purpur-drawer-scroll-area__root--fit-to-content_vzgxi_4",
238
+ "purpur-drawer-scroll-area__viewport": "_purpur-drawer-scroll-area__viewport_vzgxi_10",
239
+ "purpur-drawer-scroll-area__scrollbar": "_purpur-drawer-scroll-area__scrollbar_vzgxi_14",
240
+ "purpur-drawer-scroll-area--ai": "_purpur-drawer-scroll-area--ai_vzgxi_25",
241
+ "purpur-drawer-scroll-area__thumb": "_purpur-drawer-scroll-area__thumb_vzgxi_29"
242
+ }, C = k.bind(Tr), P = "purpur-drawer-scroll-area", K = z(
243
+ ({
244
+ ["data-testid"]: r = "purpur-drawer-scroll-area",
245
+ children: a,
246
+ className: o,
247
+ drawerVariant: n = "default",
248
+ fitToContent: u = !1,
249
+ ...c
250
+ }, s) => {
251
+ const d = C([
252
+ P,
253
+ { [`${P}--ai`]: n === "ai" },
254
+ o
255
+ ]);
256
+ return /* @__PURE__ */ e("div", { className: d, "data-testid": r, ref: s, ...c, children: /* @__PURE__ */ g(
257
+ jr,
258
+ {
259
+ className: C(`${P}__root`, {
260
+ [`${P}__root--fit-to-content`]: u
261
+ }),
262
+ children: [
263
+ /* @__PURE__ */ e(Pr, { className: C(`${P}__viewport`), children: a }),
264
+ /* @__PURE__ */ e(
265
+ zr,
266
+ {
267
+ className: C(`${P}__scrollbar`),
268
+ orientation: "vertical",
269
+ children: /* @__PURE__ */ e(Sr, { className: C(`${P}__thumb`) })
270
+ }
271
+ )
272
+ ]
273
+ }
274
+ ) });
275
+ }
276
+ );
277
+ K.displayName = "DrawerScrollArea";
278
+ const S = k.bind(Hr), m = "purpur-drawer-frame", sr = z(
279
+ ({
280
+ ["data-testid"]: r = "purpur-drawer-frame",
281
+ backButton: a,
282
+ backButtonText: o,
283
+ backButtonOnlyIcon: n,
284
+ children: u,
285
+ className: c,
286
+ closeButtonAriaLabel: s,
287
+ fitToContent: d = !1,
288
+ footerContent: p,
289
+ headerContent: t,
290
+ onBackButtonClick: i,
291
+ onCloseClick: h,
292
+ onSwipeStart: f,
293
+ onSwipeMove: _,
294
+ onSwipeCancel: l,
295
+ onSwipeEnd: y,
296
+ title: D,
297
+ stickyFooter: b,
298
+ position: E = "right",
299
+ variant: w = "default",
300
+ ...A
301
+ }, V) => {
302
+ const L = !!(a && o && i), R = w === "ai", M = S([
303
+ m,
304
+ {
305
+ [`${m}--fit-to-content`]: d,
306
+ [`${m}--sticky-footer`]: b,
307
+ [`${m}--left`]: E === "left",
308
+ [`${m}--right`]: E === "right",
309
+ [`${m}--without-back-button`]: !L,
310
+ [`${m}--with-back-button`]: L,
311
+ [`${m}--ai`]: R
312
+ },
313
+ c
314
+ ]);
315
+ return /* @__PURE__ */ g("div", { className: M, "data-testid": r, ref: V, ...A, children: [
316
+ /* @__PURE__ */ e(
317
+ nr,
318
+ {
319
+ onSwipeStart: f,
320
+ onSwipeMove: _,
321
+ onSwipeCancel: l,
322
+ onSwipeEnd: y,
323
+ variant: w
324
+ }
325
+ ),
326
+ /* @__PURE__ */ e(
327
+ x,
328
+ {
329
+ className: S(`${m}__header`),
330
+ variant: "header",
331
+ stickyFooter: b,
332
+ drawerVariant: w,
333
+ children: /* @__PURE__ */ e(
334
+ or,
335
+ {
336
+ title: D,
337
+ headerContent: t,
338
+ backButtonOnlyIcon: n,
339
+ backButton: a,
340
+ backButtonText: o,
341
+ closeButtonAriaLabel: s,
342
+ onBackButtonClick: i,
343
+ onCloseClick: h,
344
+ variant: w
345
+ }
346
+ )
347
+ }
348
+ ),
349
+ b ? /* @__PURE__ */ g(I, { children: [
350
+ /* @__PURE__ */ e(
351
+ K,
352
+ {
353
+ className: S(`${m}__body`),
354
+ "data-testid": `${r}-sticky-footer-scroll-area`,
355
+ fitToContent: d,
356
+ drawerVariant: w,
357
+ children: /* @__PURE__ */ e(x, { stickyFooter: !0, drawerVariant: w, children: u })
358
+ }
359
+ ),
360
+ p && /* @__PURE__ */ e(
361
+ x,
362
+ {
363
+ className: S(`${m}__footer`),
364
+ "data-testid": `${r}-sticky-footer`,
365
+ variant: "footer",
366
+ stickyFooter: b,
367
+ drawerVariant: w,
368
+ children: p
369
+ }
370
+ )
371
+ ] }) : /* @__PURE__ */ e(
372
+ K,
373
+ {
374
+ className: S(`${m}__body`),
375
+ "data-testid": `${r}-scroll-area`,
376
+ fitToContent: d,
377
+ drawerVariant: w,
378
+ children: /* @__PURE__ */ g(
379
+ "div",
380
+ {
381
+ className: S([
382
+ `${m}__content-container`,
383
+ { [`${m}__content-container--no-footer`]: !p }
384
+ ]),
385
+ children: [
386
+ /* @__PURE__ */ e(x, { stickyFooter: b, drawerVariant: w, children: u }),
387
+ p && /* @__PURE__ */ e(
388
+ x,
389
+ {
390
+ "data-testid": `${r}-footer`,
391
+ stickyFooter: b,
392
+ variant: "footer",
393
+ drawerVariant: w,
394
+ children: p
395
+ }
396
+ )
397
+ ]
398
+ }
399
+ )
400
+ }
401
+ )
402
+ ] });
403
+ }
404
+ );
405
+ sr.displayName = "DrawerFrame";
406
+ const qr = (r, a) => ({
407
+ onSwipeStart: () => {
408
+ r.current && r.current.setAttribute("data-swipe", "start");
409
+ },
410
+ onSwipeMove: (s) => {
411
+ if (!r.current)
412
+ return;
413
+ const { y: d } = s.delta;
414
+ r.current.setAttribute("data-swipe", "move"), r.current.style.setProperty("--purpur-drawer-swipe-move-y", `${d}px`);
415
+ },
416
+ onSwipeCancel: () => {
417
+ r.current && (r.current.setAttribute("data-swipe", "cancel"), r.current.style.removeProperty("--purpur-drawer-swipe-move-y"), r.current.style.removeProperty("--purpur-drawer-swipe-end-y"));
418
+ },
419
+ onSwipeEnd: (s) => {
420
+ if (!r.current)
421
+ return;
422
+ const { y: d } = s.delta;
423
+ r.current.setAttribute("data-swipe", "end"), r.current.style.removeProperty("--purpur-drawer-swipe-move-y"), r.current.style.setProperty("--purpur-drawer-swipe-end-y", `${d}px`), a?.(!1);
424
+ }
425
+ }), O = k.bind(Mr), j = "purpur-drawer-content", dr = z(
426
+ ({
427
+ ["data-testid"]: r = "purpur-drawer-content",
428
+ backButton: a = !1,
429
+ backButtonText: o,
430
+ backButtonOnlyIcon: n = !1,
431
+ bodyText: u,
432
+ children: c,
433
+ className: s,
434
+ closeButtonAriaLabel: d,
435
+ disableCloseOnClickOutside: p = !1,
436
+ fitToContent: t = !1,
437
+ footerContent: i,
438
+ headerContent: h,
439
+ onBackButtonClick: f,
440
+ onCloseClick: _,
441
+ stickyFooter: l = !1,
442
+ title: y,
443
+ zIndex: D,
444
+ position: b = "right",
445
+ ...E
446
+ }, w) => {
447
+ const A = hr(ar), V = A?.variant ?? "default", L = A?.isModal ?? !0, R = O([
448
+ j,
449
+ {
450
+ [`${j}--fit-to-content`]: t,
451
+ [`${j}--left`]: b === "left",
452
+ [`${j}--right`]: b === "right",
453
+ [`${j}--ai`]: V === "ai"
454
+ },
455
+ s
456
+ ]), M = G(null), q = G(null), ir = ($) => {
457
+ q.current = $, typeof w == "function" ? w($) : w && (w.current = $);
458
+ }, { onSwipeStart: cr, onSwipeMove: pr, onSwipeCancel: lr, onSwipeEnd: _r } = qr(
459
+ q,
460
+ A?.onOpenChange ?? null
461
+ ), W = /* @__PURE__ */ e(
462
+ $r,
463
+ {
464
+ onPointerDownOutside: ($) => {
465
+ if (p) {
466
+ $.preventDefault();
467
+ return;
468
+ }
469
+ _ && ($.preventDefault(), _());
470
+ },
471
+ onEscapeKeyDown: ($) => {
472
+ _ && ($.preventDefault(), _());
473
+ },
474
+ onOpenAutoFocus: () => {
475
+ const $ = M.current;
476
+ if ($) {
477
+ const X = $.querySelector("h2");
478
+ X && setTimeout(() => {
479
+ X.focus();
480
+ });
481
+ }
482
+ },
483
+ className: R,
484
+ "data-testid": r,
485
+ ref: ir,
486
+ ...!u && { "aria-describedby": void 0 },
487
+ ...E,
488
+ children: /* @__PURE__ */ e(
489
+ sr,
490
+ {
491
+ backButton: a,
492
+ backButtonText: o,
493
+ backButtonOnlyIcon: n,
494
+ closeButtonAriaLabel: d,
495
+ className: O(`${j}__drawer-frame`),
496
+ fitToContent: t,
497
+ footerContent: i,
498
+ headerContent: h,
499
+ ref: M,
500
+ onBackButtonClick: f,
501
+ onCloseClick: _,
502
+ onSwipeStart: cr,
503
+ onSwipeMove: pr,
504
+ onSwipeCancel: lr,
505
+ onSwipeEnd: _r,
506
+ stickyFooter: l,
507
+ title: y,
508
+ position: b,
509
+ variant: V,
510
+ children: u ? /* @__PURE__ */ g("div", { className: O(`${j}__content-container`), children: [
511
+ /* @__PURE__ */ e(
512
+ vr,
513
+ {
514
+ className: O(`${j}__description`),
515
+ "data-testid": `${r}-description`,
516
+ children: u
517
+ }
518
+ ),
519
+ /* @__PURE__ */ e("div", { children: c })
520
+ ] }) : c
521
+ }
522
+ )
523
+ }
524
+ );
525
+ return L ? /* @__PURE__ */ e(J, { children: /* @__PURE__ */ e(
526
+ yr,
527
+ {
528
+ className: O("purpur-drawer-overlay"),
529
+ style: D ? { zIndex: D } : void 0,
530
+ "data-testid": `${r}-overlay`,
531
+ children: W
532
+ }
533
+ ) }) : /* @__PURE__ */ e(J, { children: /* @__PURE__ */ e(
534
+ "div",
535
+ {
536
+ className: O("purpur-drawer-overlay"),
537
+ style: D ? { zIndex: D } : void 0,
538
+ "data-testid": `${r}-overlay`,
539
+ children: W
540
+ }
541
+ ) });
542
+ }
543
+ );
544
+ dr.displayName = "DrawerContent";
545
+ const ur = z(
546
+ ({ ["data-testid"]: r = "purpur-drawer-trigger", children: a, ...o }, n) => /* @__PURE__ */ e(br, { asChild: !0, "data-testid": r, ref: n, ...o, children: a })
547
+ );
548
+ ur.displayName = "DrawerTrigger";
549
+ const T = ({
550
+ ["data-testid"]: r = "purpur-drawer",
551
+ children: a,
552
+ className: o,
553
+ isModal: n = !0,
554
+ onOpenChange: u,
555
+ open: c = !1,
556
+ variant: s = "default",
557
+ ...d
558
+ }) => {
559
+ const [p, t] = H.useState(c), i = (f) => {
560
+ t(f), u?.(f);
561
+ };
562
+ fr(() => {
563
+ t(c);
564
+ }, [c]);
565
+ const h = { isModal: n, onOpenChange: i, variant: s };
566
+ return /* @__PURE__ */ e(ar.Provider, { value: h, children: /* @__PURE__ */ e("div", { className: o, "data-testid": r, ...d, children: /* @__PURE__ */ e(gr, { open: p, onOpenChange: i, modal: n, children: a }) }) });
567
+ };
568
+ T.Trigger = ur;
569
+ T.Content = dr;
570
+ T.displayName = "Drawer";
571
+ export {
572
+ T as D
573
+ };
574
+ //# sourceMappingURL=drawer-8Acg4wkV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer-8Acg4wkV.mjs","sources":["../../../components/drawer/src/drawer.context.ts","../../../components/drawer/src/drawer-container.tsx","../../../components/drawer/src/use-swipe-tracking.hook.ts","../../../components/drawer/src/drawer-handle.tsx","../../../components/drawer/src/drawer-header.tsx","../../../components/drawer/src/drawer-scroll-area.tsx","../../../components/drawer/src/drawer-frame.tsx","../../../components/drawer/src/use-swipe-to-dismiss.hook.ts","../../../components/drawer/src/drawer-content.tsx","../../../components/drawer/src/drawer-trigger.tsx","../../../components/drawer/src/drawer.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nimport { type DrawerVariant, type OpenHandlerFunction } from \"./types\";\n\nexport type DrawerContextValue = {\n isModal: boolean;\n onOpenChange: OpenHandlerFunction;\n variant: DrawerVariant;\n};\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-container.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n stickyFooter: boolean;\n variant?: \"header\" | \"body\" | \"footer\";\n};\n\nconst rootClassName = \"purpur-drawer-container\";\n\nexport const DrawerContainer = forwardRef<HTMLDivElement, DrawerContainerProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-container\",\n children,\n className,\n drawerVariant = \"default\",\n variant = \"body\",\n stickyFooter,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--sticky`]: stickyFooter,\n [`${rootClassName}--ai`]: drawerVariant === \"ai\",\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </div>\n );\n }\n);\n\nDrawerContainer.displayName = \"DrawerContainer\";\n","import type { PointerEvent, RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeTracking = {\n onPointerDown(event: PointerEvent): void;\n onPointerMove(event: PointerEvent): void;\n onPointerUp(event: PointerEvent): void;\n};\n\nexport const useSwipeTracking = (\n pointerStartRef: RefObject<{ y: number } | null>,\n swipeDeltaRef: RefObject<{ y: number } | null>,\n onSwipeStart: () => void,\n onSwipeMove: (event: SwipeEvent) => void,\n onSwipeCancel: () => void,\n onSwipeEnd: (event: SwipeEvent) => void\n): UseSwipeTracking => {\n const onPointerDown = (event: PointerEvent) => {\n pointerStartRef.current = { y: event.clientY };\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!pointerStartRef.current) {\n return;\n }\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const clampedY = Math.max(0, y);\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n onSwipeMove(eventDetail);\n } else if (isDeltaInDirection(delta, 0)) {\n swipeDeltaRef.current = delta;\n onSwipeStart();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n } else if (Math.abs(y) > moveStartBuffer) {\n // User is swiping in wrong direction so we disable swipe gesture\n // for the current pointer down interaction\n pointerStartRef.current = null;\n }\n };\n const onPointerUp = (event: PointerEvent) => {\n const delta = swipeDeltaRef.current;\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const swipeHandle = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, 0) && delta.y > 200) {\n onSwipeEnd(eventDetail);\n } else {\n onSwipeCancel();\n }\n // Prevent click event from triggering on items within the drawer when\n // pointer up is part of a swipe gesture\n swipeHandle.addEventListener(\"click\", (event) => event.preventDefault(), {\n once: true,\n });\n }\n };\n return {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n };\n};\n\nconst isDeltaInDirection = (delta: { y: number }, threshold = 0) => {\n const deltaY = Math.abs(delta.y);\n return deltaY > threshold;\n};\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-handle.module.scss\";\nimport { type DrawerVariant, type SwipeEvent } from \"./types\";\nimport { useSwipeTracking } from \"./use-swipe-tracking.hook\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHandleProps = Omit<BaseProps, \"children\"> & {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-handle\";\n\nexport const DrawerHandle = forwardRef<HTMLDivElement, DrawerHandleProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-handle\",\n className,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const pointerStartRef = React.useRef<{ y: number } | null>(null);\n const swipeDeltaRef = React.useRef<{ y: number } | null>(null);\n const { onPointerDown, onPointerMove, onPointerUp } = useSwipeTracking(\n swipeDeltaRef,\n pointerStartRef,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd\n );\n\n return (\n <div\n className={classes}\n data-testid={dataTestId}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nDrawerHandle.displayName = \"DrawerHandle\";\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { DisplayVariant, Heading } from \"@purpur/heading\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-header.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHeaderProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n closeButtonAriaLabel: string;\n headerContent?: React.ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n title: string;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-header\";\n\nexport const DrawerHeader = forwardRef<HTMLDivElement, DrawerHeaderProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-header\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n className,\n closeButtonAriaLabel,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n title,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n\n const CloseButtonWrapper = onCloseClick ? React.Fragment : RadixDialog.Close;\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <div\n className={cx([\n `${rootClassName}__row`,\n {\n [`${rootClassName}__row--with-back-button`]: hasBackButton,\n },\n ])}\n data-testid={`${dataTestId}-row`}\n >\n <div className={cx(`${rootClassName}__left`)}>\n {hasBackButton ? (\n <Button\n aria-label={backButtonOnlyIcon ? backButtonText : \"\"}\n className={cx([\n `${rootClassName}__back-button`,\n {\n [`${rootClassName}__back-button--only-icon`]: backButtonOnlyIcon,\n },\n ])}\n data-testid={`${dataTestId}-back-button`}\n iconOnly={backButtonOnlyIcon}\n negative={isAi}\n onClick={onBackButtonClick}\n size=\"sm\"\n variant={backButtonOnlyIcon ? BUTTON_VARIANT.TERTIARY_PURPLE : BUTTON_VARIANT.TEXT}\n >\n <IconChevronLeft size=\"sm\" />\n {!backButtonOnlyIcon && backButtonText}\n </Button>\n ) : headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n className={cx(`${rootClassName}__title`)}\n data-testid={`${dataTestId}-title`}\n negative={isAi}\n tag=\"h2\"\n variant={DisplayVariant.DISPLAY10}\n tabIndex={-1}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n )}\n </div>\n\n <div className={cx(`${rootClassName}__right`)}>\n <CloseButtonWrapper {...(onCloseClick ? {} : { asChild: true })}>\n <Button\n aria-label={closeButtonAriaLabel}\n className={cx(`${rootClassName}__close-button`)}\n iconOnly\n negative={isAi}\n onClick={onCloseClick}\n size=\"sm\"\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n >\n <IconClose size=\"sm\" />\n </Button>\n </CloseButtonWrapper>\n </div>\n </div>\n {hasBackButton &&\n (headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n data-testid={`${dataTestId}-title-with-back-button`}\n className={cx(`${rootClassName}__title`)}\n negative={isAi}\n tag=\"h2\"\n tabIndex={-1}\n variant={DisplayVariant.DISPLAY10}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n ))}\n </div>\n );\n }\n);\n\nDrawerHeader.displayName = \"DrawerHeader\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-scroll-area.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerScrollAreaProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n fitToContent?: boolean;\n};\n\nconst rootClassName = \"purpur-drawer-scroll-area\";\n\nexport const DrawerScrollArea = forwardRef<HTMLDivElement, DrawerScrollAreaProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-scroll-area\",\n children,\n className,\n drawerVariant = \"default\",\n fitToContent = false,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n { [`${rootClassName}--ai`]: drawerVariant === \"ai\" },\n className,\n ]);\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <RadixScrollArea.Root\n className={cx(`${rootClassName}__root`, {\n [`${rootClassName}__root--fit-to-content`]: fitToContent,\n })}\n >\n <RadixScrollArea.Viewport className={cx(`${rootClassName}__viewport`)}>\n {children}\n </RadixScrollArea.Viewport>\n <RadixScrollArea.Scrollbar\n className={cx(`${rootClassName}__scrollbar`)}\n orientation=\"vertical\"\n >\n <RadixScrollArea.Thumb className={cx(`${rootClassName}__thumb`)} />\n </RadixScrollArea.Scrollbar>\n </RadixScrollArea.Root>\n </div>\n );\n }\n);\n\nDrawerScrollArea.displayName = \"DrawerScrollArea\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContainer } from \"./drawer-container\";\nimport styles from \"./drawer-frame.module.scss\";\nimport { DrawerHandle } from \"./drawer-handle\";\nimport { DrawerHeader } from \"./drawer-header\";\nimport { DrawerScrollArea } from \"./drawer-scroll-area\";\nimport { type DrawerVariant, type Position, type SwipeEvent } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerFrameProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n children: ReactNode;\n closeButtonAriaLabel: string;\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n stickyFooter: boolean;\n title: string;\n position?: Position;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-frame\";\n\nexport const DrawerFrame = forwardRef<HTMLDivElement, DrawerFrameProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-frame\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n children,\n className,\n closeButtonAriaLabel,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n title,\n stickyFooter,\n position = \"right\",\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--sticky-footer`]: stickyFooter,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--without-back-button`]: !hasBackButton,\n [`${rootClassName}--with-back-button`]: hasBackButton,\n [`${rootClassName}--ai`]: isAi,\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <DrawerHandle\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n variant={variant}\n />\n <DrawerContainer\n className={cx(`${rootClassName}__header`)}\n variant=\"header\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n <DrawerHeader\n title={title}\n headerContent={headerContent}\n backButtonOnlyIcon={backButtonOnlyIcon}\n backButton={backButton}\n backButtonText={backButtonText}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n variant={variant}\n />\n </DrawerContainer>\n {stickyFooter ? (\n <>\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-sticky-footer-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <DrawerContainer stickyFooter drawerVariant={variant}>\n {children}\n </DrawerContainer>\n </DrawerScrollArea>\n {footerContent && (\n <DrawerContainer\n className={cx(`${rootClassName}__footer`)}\n data-testid={`${dataTestId}-sticky-footer`}\n variant=\"footer\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </>\n ) : (\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <div\n className={cx([\n `${rootClassName}__content-container`,\n { [`${rootClassName}__content-container--no-footer`]: !footerContent },\n ])}\n >\n <DrawerContainer stickyFooter={stickyFooter} drawerVariant={variant}>\n {children}\n </DrawerContainer>\n {footerContent && (\n <DrawerContainer\n data-testid={`${dataTestId}-footer`}\n stickyFooter={stickyFooter}\n variant=\"footer\"\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </div>\n </DrawerScrollArea>\n )}\n </div>\n );\n }\n);\n\nDrawerFrame.displayName = \"DrawerFrame\";\n","import type { RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeToDismiss = {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n};\n\nexport const useSwipeToDismiss = <T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n handleOpenChange: ((open: boolean) => void) | null\n): UseSwipeToDismiss => {\n const onSwipeStart = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"start\");\n };\n const onSwipeMove = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"move\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-move-y\", `${y}px`);\n };\n const onSwipeCancel = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"cancel\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-end-y\");\n };\n const onSwipeEnd = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"end\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-end-y\", `${y}px`);\n handleOpenChange?.(false);\n };\n\n return {\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n };\n};\n","import React, { forwardRef, type ReactNode, useContext, useRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport styles from \"./drawer-content.module.scss\";\nimport { DrawerFrame } from \"./drawer-frame\";\nimport { type Position } from \"./types\";\nimport { useSwipeToDismiss } from \"./use-swipe-to-dismiss.hook\";\n\nconst cx = c.bind(styles);\n\nexport type WithBackButton = {\n backButton: boolean;\n backButtonText: string;\n backButtonOnlyIcon?: boolean;\n onBackButtonClick: () => void;\n};\n\nexport type WithoutBackButton = {\n backButton?: never;\n backButtonText?: never;\n backButtonOnlyIcon?: never;\n onBackButtonClick?: never;\n};\n\nexport type DrawerContentProps = Omit<BaseProps, \"children\"> & {\n bodyText?: string;\n children: ReactNode;\n closeButtonAriaLabel: string;\n disableCloseOnClickOutside?: boolean;\n /**\n * If true, the drawer height will fit to its content on small screens.\n */\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onCloseClick?: () => void;\n stickyFooter?: boolean;\n title: string;\n zIndex?: number;\n position?: Position;\n} & (WithoutBackButton | WithBackButton);\n\nconst rootClassName = \"purpur-drawer-content\";\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-content\",\n backButton = false,\n backButtonText,\n backButtonOnlyIcon = false,\n bodyText,\n children,\n className,\n closeButtonAriaLabel,\n disableCloseOnClickOutside = false,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n stickyFooter = false,\n title,\n zIndex,\n position = \"right\",\n ...props\n },\n ref\n ) => {\n const drawerContext = useContext(DrawerContext);\n const variant = drawerContext?.variant ?? \"default\";\n const isModal = drawerContext?.isModal ?? true;\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--ai`]: variant === \"ai\",\n },\n className,\n ]);\n\n const drawerFrameRef = useRef<HTMLDivElement>(null);\n const internalDrawerContentRef = useRef<HTMLDivElement>(null);\n\n const setRef = (node: HTMLDivElement | null) => {\n internalDrawerContentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const { onSwipeStart, onSwipeMove, onSwipeCancel, onSwipeEnd } = useSwipeToDismiss(\n internalDrawerContentRef,\n drawerContext?.onOpenChange ?? null\n );\n\n const handlePointerDownOutside = (event: CustomEvent<{ originalEvent: PointerEvent }>) => {\n if (disableCloseOnClickOutside) {\n event.preventDefault();\n return;\n }\n\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleInitialFocus = () => {\n const frame = drawerFrameRef.current;\n if (frame) {\n const heading = frame.querySelector(\"h2\");\n\n heading &&\n setTimeout(() => {\n heading.focus();\n });\n }\n };\n\n const dialogContent = (\n <RadixDialog.Content\n onPointerDownOutside={handlePointerDownOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleInitialFocus}\n className={classes}\n data-testid={dataTestId}\n ref={setRef}\n {...(!bodyText && { [\"aria-describedby\"]: undefined })}\n {...props}\n >\n <DrawerFrame\n backButton={backButton}\n backButtonText={backButtonText}\n backButtonOnlyIcon={backButtonOnlyIcon}\n closeButtonAriaLabel={closeButtonAriaLabel}\n className={cx(`${rootClassName}__drawer-frame`)}\n fitToContent={fitToContent}\n footerContent={footerContent}\n headerContent={headerContent}\n ref={drawerFrameRef}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n stickyFooter={stickyFooter}\n title={title}\n position={position}\n variant={variant}\n >\n {bodyText ? (\n <div className={cx(`${rootClassName}__content-container`)}>\n <RadixDialog.Description\n className={cx(`${rootClassName}__description`)}\n data-testid={`${dataTestId}-description`}\n >\n {bodyText}\n </RadixDialog.Description>\n <div>{children}</div>\n </div>\n ) : (\n children\n )}\n </DrawerFrame>\n </RadixDialog.Content>\n );\n\n if (!isModal) {\n return (\n <RadixDialog.Portal>\n <div\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n {dialogContent}\n </div>\n </RadixDialog.Portal>\n );\n }\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n {dialogContent}\n </RadixDialog.Overlay>\n </RadixDialog.Portal>\n );\n }\n);\n\nDrawerContent.displayName = \"DrawerContent\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nexport type DrawerTriggerProps = Omit<BaseProps<\"button\">, \"children\"> & {\n children: ReactNode;\n};\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n ({ [\"data-testid\"]: dataTestId = \"purpur-drawer-trigger\", children, ...props }, ref) => {\n return (\n <RadixDialog.Trigger asChild data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n );\n }\n);\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n","import React, { type ReactNode, useEffect } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport { DrawerContent } from \"./drawer-content\";\nimport { DrawerTrigger } from \"./drawer-trigger\";\nimport { type DrawerVariant } from \"./types\";\n\nexport type { DrawerVariant };\n\nexport type DrawerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n /**\n * Whether the drawer should be modal. When `true` (default), focus is trapped\n * and pointer events outside the drawer are disabled. Set to `false` when rendering\n * components that use portals (e.g. DatePicker) inside the drawer.\n */\n isModal?: boolean;\n onOpenChange?: (open: boolean) => void;\n open: boolean;\n variant?: DrawerVariant;\n};\n\nexport type DrawerComponent<P> = React.FunctionComponent<P> & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n};\n\nexport const Drawer: DrawerComponent<DrawerProps> = ({\n [\"data-testid\"]: dataTestId = \"purpur-drawer\",\n children,\n className,\n isModal = true,\n onOpenChange,\n open = false,\n variant = \"default\",\n ...props\n}: DrawerProps) => {\n const [_open, _setOpen] = React.useState(open);\n\n const handleOpenChange = (newOpen: boolean) => {\n _setOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n useEffect(() => {\n _setOpen(open);\n }, [open]);\n\n const contextValue = { isModal, onOpenChange: handleOpenChange, variant };\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <div className={className} data-testid={dataTestId} {...props}>\n <RadixDialog.Root open={_open} onOpenChange={handleOpenChange} modal={isModal}>\n {children}\n </RadixDialog.Root>\n </div>\n </DrawerContext.Provider>\n );\n};\n\nDrawer.Trigger = DrawerTrigger;\nDrawer.Content = DrawerContent;\nDrawer.displayName = \"Drawer\";\n"],"names":["DrawerContext","createContext","cx","c","styles","rootClassName","DrawerContainer","forwardRef","dataTestId","children","className","drawerVariant","variant","stickyFooter","props","ref","classes","jsx","useSwipeTracking","pointerStartRef","swipeDeltaRef","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","event","y","hasSwipeMoveStarted","clampedY","moveStartBuffer","delta","eventDetail","isDeltaInDirection","target","swipeHandle","threshold","DrawerHandle","React","onPointerDown","onPointerMove","onPointerUp","DrawerHeader","backButton","backButtonText","backButtonOnlyIcon","closeButtonAriaLabel","headerContent","onBackButtonClick","onCloseClick","title","hasBackButton","isAi","CloseButtonWrapper","RadixDialog.Close","jsxs","Button","BUTTON_VARIANT","IconChevronLeft","Fragment","VisuallyHidden","RadixDialog.Title","Heading","DisplayVariant","IconClose","DrawerScrollArea","fitToContent","RadixScrollArea.Root","RadixScrollArea.Viewport","RadixScrollArea.Scrollbar","RadixScrollArea.Thumb","DrawerFrame","footerContent","position","useSwipeToDismiss","containerRef","handleOpenChange","DrawerContent","bodyText","disableCloseOnClickOutside","zIndex","drawerContext","useContext","isModal","drawerFrameRef","useRef","internalDrawerContentRef","setRef","node","dialogContent","RadixDialog.Content","frame","heading","RadixDialog.Description","RadixDialog.Portal","RadixDialog.Overlay","DrawerTrigger","RadixDialog.Trigger","Drawer","onOpenChange","open","_open","_setOpen","newOpen","useEffect","contextValue","RadixDialog.Root"],"mappings":"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"}