@purpur/library 9.0.5 → 9.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/CHANGELOG.json +39 -0
  2. package/CHANGELOG.md +20 -1
  3. package/dist/{RichText-DRacgpis.mjs → RichText-Bi51HE6X.mjs} +3 -3
  4. package/dist/{RichText-DRacgpis.mjs.map → RichText-Bi51HE6X.mjs.map} +1 -1
  5. package/dist/{RichText-DMyGiMN0.js → RichText-DNroJJXv.js} +2 -2
  6. package/dist/{RichText-DMyGiMN0.js.map → RichText-DNroJJXv.js.map} +1 -1
  7. package/dist/{ThemeProvider-CrjMv3M8.mjs → ThemeProvider-BR1hJQOD.mjs} +85 -85
  8. package/dist/{ThemeProvider-CrjMv3M8.mjs.map → ThemeProvider-BR1hJQOD.mjs.map} +1 -1
  9. package/dist/{accordion-DWflnyWa.mjs → accordion-BKTz9DM6.mjs} +18 -18
  10. package/dist/{accordion-DWflnyWa.mjs.map → accordion-BKTz9DM6.mjs.map} +1 -1
  11. package/dist/{accordion-CF2fj2uq.js → accordion-DX8efWOt.js} +2 -2
  12. package/dist/{accordion-CF2fj2uq.js.map → accordion-DX8efWOt.js.map} +1 -1
  13. package/dist/accordion.cjs.js +1 -1
  14. package/dist/accordion.es.js +1 -1
  15. package/dist/{alert-badge-u7qAhYbR.mjs → alert-badge-DR8cigWu.mjs} +3 -3
  16. package/dist/{alert-badge-u7qAhYbR.mjs.map → alert-badge-DR8cigWu.mjs.map} +1 -1
  17. package/dist/alert-badge.es.js +1 -1
  18. package/dist/{autocomplete-yD0-1vlF.js → autocomplete-6qSqK3SI.js} +2 -2
  19. package/dist/{autocomplete-yD0-1vlF.js.map → autocomplete-6qSqK3SI.js.map} +1 -1
  20. package/dist/{autocomplete-0kGG_STe.mjs → autocomplete-B4dZx9zF.mjs} +3 -3
  21. package/dist/{autocomplete-0kGG_STe.mjs.map → autocomplete-B4dZx9zF.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/button-BfYKNBmC.mjs +102 -0
  25. package/dist/button-BfYKNBmC.mjs.map +1 -0
  26. package/dist/button-DDYGuqZ0.js +2 -0
  27. package/dist/button-DDYGuqZ0.js.map +1 -0
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.es.js +1 -1
  30. package/dist/{calendar-pMM0fKEu.js → calendar-CxkJMONO.js} +2 -2
  31. package/dist/{calendar-pMM0fKEu.js.map → calendar-CxkJMONO.js.map} +1 -1
  32. package/dist/{calendar-DDie8jSH.mjs → calendar-vALLklKV.mjs} +2 -2
  33. package/dist/{calendar-DDie8jSH.mjs.map → calendar-vALLklKV.mjs.map} +1 -1
  34. package/dist/calendar.cjs.js +1 -1
  35. package/dist/calendar.es.js +1 -1
  36. package/dist/{card-DiMVw06l.mjs → card-CkZQZOz1.mjs} +9 -9
  37. package/dist/{card-DiMVw06l.mjs.map → card-CkZQZOz1.mjs.map} +1 -1
  38. package/dist/{card-B512KHpr.js → card-VMa3cGCP.js} +2 -2
  39. package/dist/{card-B512KHpr.js.map → card-VMa3cGCP.js.map} +1 -1
  40. package/dist/card.cjs.js +1 -1
  41. package/dist/card.es.js +1 -1
  42. package/dist/{checkbox-LYzMiXu7.mjs → checkbox-D6qWgpWR.mjs} +8 -8
  43. package/dist/{checkbox-LYzMiXu7.mjs.map → checkbox-D6qWgpWR.mjs.map} +1 -1
  44. package/dist/checkbox.es.js +1 -1
  45. package/dist/{chip-group-aj1fdnjC.js → chip-group-B775zvKD.js} +2 -2
  46. package/dist/{chip-group-aj1fdnjC.js.map → chip-group-B775zvKD.js.map} +1 -1
  47. package/dist/{chip-group-CJVvfl_J.mjs → chip-group-xuOe7nL3.mjs} +3 -3
  48. package/dist/{chip-group-CJVvfl_J.mjs.map → chip-group-xuOe7nL3.mjs.map} +1 -1
  49. package/dist/chip-group.cjs.js +1 -1
  50. package/dist/chip-group.es.js +1 -1
  51. package/dist/components/button/src/button.d.ts +1 -2
  52. package/dist/components/button/src/button.d.ts.map +1 -1
  53. package/dist/components/date-field/src/date-field.d.ts.map +1 -1
  54. package/dist/components/stepper/src/stepper-button.d.ts.map +1 -1
  55. package/dist/components/table/src/draggable-table.d.ts.map +1 -1
  56. package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
  57. package/dist/components/table/src/table-toolbar.d.ts.map +1 -1
  58. package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
  59. package/dist/components/tabs/src/tabs.d.ts.map +1 -1
  60. package/dist/{container-Bw12NgHN.mjs → container-DLjBTB_w.mjs} +3 -3
  61. package/dist/{container-Bw12NgHN.mjs.map → container-DLjBTB_w.mjs.map} +1 -1
  62. package/dist/container.es.js +1 -1
  63. package/dist/{content-block-DUcjAZgG.mjs → content-block-BMOvlH7a.mjs} +6 -6
  64. package/dist/{content-block-DUcjAZgG.mjs.map → content-block-BMOvlH7a.mjs.map} +1 -1
  65. package/dist/{content-block-kzdUWgvH.js → content-block-Cd7xSE8t.js} +2 -2
  66. package/dist/{content-block-kzdUWgvH.js.map → content-block-Cd7xSE8t.js.map} +1 -1
  67. package/dist/content-block.cjs.js +1 -1
  68. package/dist/content-block.es.js +1 -1
  69. package/dist/{countdown-DxAGVUFI.mjs → countdown-DZ4IwkNy.mjs} +12 -12
  70. package/dist/{countdown-DxAGVUFI.mjs.map → countdown-DZ4IwkNy.mjs.map} +1 -1
  71. package/dist/countdown.es.js +1 -1
  72. package/dist/date-field-CORqon6B.js +2 -0
  73. package/dist/{date-field-CPiTZqa0.js.map → date-field-CORqon6B.js.map} +1 -1
  74. package/dist/{date-field-D_6iP2fC.mjs → date-field-CTJB8O0e.mjs} +325 -310
  75. package/dist/{date-field-D_6iP2fC.mjs.map → date-field-CTJB8O0e.mjs.map} +1 -1
  76. package/dist/date-field.cjs.js +1 -1
  77. package/dist/date-field.es.js +1 -1
  78. package/dist/{date-picker-BRnwwZv1.mjs → date-picker-CJcIJ5VL.mjs} +5 -5
  79. package/dist/{date-picker-BRnwwZv1.mjs.map → date-picker-CJcIJ5VL.mjs.map} +1 -1
  80. package/dist/{date-picker-DlJGggam.js → date-picker-Dv3W05Hf.js} +2 -2
  81. package/dist/{date-picker-DlJGggam.js.map → date-picker-Dv3W05Hf.js.map} +1 -1
  82. package/dist/date-picker.cjs.js +1 -1
  83. package/dist/date-picker.es.js +1 -1
  84. package/dist/{dismissable-chip-group-DsO2cZaF.js → dismissable-chip-group-CnziecOt.js} +2 -2
  85. package/dist/{dismissable-chip-group-DsO2cZaF.js.map → dismissable-chip-group-CnziecOt.js.map} +1 -1
  86. package/dist/{dismissable-chip-group-Bl0D18qM.mjs → dismissable-chip-group-ZCYOt1sB.mjs} +2 -2
  87. package/dist/{dismissable-chip-group-Bl0D18qM.mjs.map → dismissable-chip-group-ZCYOt1sB.mjs.map} +1 -1
  88. package/dist/dismissable-chip-group.cjs.js +1 -1
  89. package/dist/dismissable-chip-group.es.js +1 -1
  90. package/dist/{drawer-nBpCtIdI.js → drawer-Ce5LNpU2.js} +2 -2
  91. package/dist/{drawer-nBpCtIdI.js.map → drawer-Ce5LNpU2.js.map} +1 -1
  92. package/dist/{drawer-Boqmgh-i.mjs → drawer-DSFZ61OH.mjs} +14 -14
  93. package/dist/{drawer-Boqmgh-i.mjs.map → drawer-DSFZ61OH.mjs.map} +1 -1
  94. package/dist/drawer.cjs.js +1 -1
  95. package/dist/drawer.es.js +1 -1
  96. package/dist/{floating-ui.react-dom-0ol4sFzt.mjs → floating-ui.react-dom-gsHLgcoR.mjs} +5 -5
  97. package/dist/{floating-ui.react-dom-0ol4sFzt.mjs.map → floating-ui.react-dom-gsHLgcoR.mjs.map} +1 -1
  98. package/dist/{footer-DrjAwjuL.js → footer-BL0ewBZT.js} +2 -2
  99. package/dist/{footer-DrjAwjuL.js.map → footer-BL0ewBZT.js.map} +1 -1
  100. package/dist/{footer-DcWsihxS.mjs → footer-cH07Xqil.mjs} +5 -5
  101. package/dist/{footer-DcWsihxS.mjs.map → footer-cH07Xqil.mjs.map} +1 -1
  102. package/dist/footer.cjs.js +1 -1
  103. package/dist/footer.es.js +1 -1
  104. package/dist/heading-drD5ugCC.js +2 -0
  105. package/dist/{heading-DLCdW6gx.js.map → heading-drD5ugCC.js.map} +1 -1
  106. package/dist/heading-xwBuT_-9.mjs +75 -0
  107. package/dist/{heading-gqtQNo5n.mjs.map → heading-xwBuT_-9.mjs.map} +1 -1
  108. package/dist/heading.cjs.js +1 -1
  109. package/dist/heading.es.js +1 -1
  110. package/dist/{hero-banner-B8fRHxXc.mjs → hero-banner-CkSSlxTW.mjs} +5 -5
  111. package/dist/{hero-banner-B8fRHxXc.mjs.map → hero-banner-CkSSlxTW.mjs.map} +1 -1
  112. package/dist/{hero-banner-D3peC1NR.js → hero-banner-JFaqW20R.js} +2 -2
  113. package/dist/{hero-banner-D3peC1NR.js.map → hero-banner-JFaqW20R.js.map} +1 -1
  114. package/dist/hero-banner.cjs.js +1 -1
  115. package/dist/hero-banner.es.js +1 -1
  116. package/dist/library.cjs.js +1 -1
  117. package/dist/library.es.js +44 -44
  118. package/dist/{listbox-u6__DsLw.mjs → listbox-oDeP8FvH.mjs} +2 -2
  119. package/dist/{listbox-u6__DsLw.mjs.map → listbox-oDeP8FvH.mjs.map} +1 -1
  120. package/dist/listbox.es.js +1 -1
  121. package/dist/{modal-C2UQsW-g.mjs → modal-2ymCXTup.mjs} +19 -19
  122. package/dist/{modal-C2UQsW-g.mjs.map → modal-2ymCXTup.mjs.map} +1 -1
  123. package/dist/{modal-nyhf5zxG.js → modal-CXi2xez5.js} +2 -2
  124. package/dist/{modal-nyhf5zxG.js.map → modal-CXi2xez5.js.map} +1 -1
  125. package/dist/modal.cjs.js +1 -1
  126. package/dist/modal.es.js +1 -1
  127. package/dist/{notification-C32wHljA.mjs → notification-BFSOuDp8.mjs} +22 -22
  128. package/dist/{notification-C32wHljA.mjs.map → notification-BFSOuDp8.mjs.map} +1 -1
  129. package/dist/{notification-Bg1vQkQ3.js → notification-DdnI2rOh.js} +2 -2
  130. package/dist/{notification-Bg1vQkQ3.js.map → notification-DdnI2rOh.js.map} +1 -1
  131. package/dist/{notification-banner-BY2iZOIa.mjs → notification-banner-CQvBezAL.mjs} +3 -3
  132. package/dist/{notification-banner-BY2iZOIa.mjs.map → notification-banner-CQvBezAL.mjs.map} +1 -1
  133. package/dist/{notification-banner-C8XsBDTq.js → notification-banner-CT4ew8IQ.js} +2 -2
  134. package/dist/{notification-banner-C8XsBDTq.js.map → notification-banner-CT4ew8IQ.js.map} +1 -1
  135. package/dist/notification-banner.cjs.js +1 -1
  136. package/dist/notification-banner.es.js +1 -1
  137. package/dist/notification.cjs.js +1 -1
  138. package/dist/notification.es.js +1 -1
  139. package/dist/{pagination-CVVCAQ65.mjs → pagination-BdCjh1Pi.mjs} +2 -2
  140. package/dist/{pagination-CVVCAQ65.mjs.map → pagination-BdCjh1Pi.mjs.map} +1 -1
  141. package/dist/pagination.es.js +1 -1
  142. package/dist/{paragraph-DNtj7OLr.mjs → paragraph-Ci50OF1u.mjs} +3 -3
  143. package/dist/{paragraph-DNtj7OLr.mjs.map → paragraph-Ci50OF1u.mjs.map} +1 -1
  144. package/dist/paragraph.es.js +1 -1
  145. package/dist/{popover-B1BgSoQx.js → popover-D3qWbbU4.js} +2 -2
  146. package/dist/popover-D3qWbbU4.js.map +1 -0
  147. package/dist/{popover-DBMI9Jy1.mjs → popover-ZeQKmyEb.mjs} +25 -25
  148. package/dist/popover-ZeQKmyEb.mjs.map +1 -0
  149. package/dist/popover.cjs.js +1 -1
  150. package/dist/popover.es.js +1 -1
  151. package/dist/{product-card-rfpJbzzV.mjs → product-card-BU1ThhCx.mjs} +12 -12
  152. package/dist/{product-card-rfpJbzzV.mjs.map → product-card-BU1ThhCx.mjs.map} +1 -1
  153. package/dist/{product-card-DOBHGAa2.js → product-card-CNBegEBW.js} +2 -2
  154. package/dist/{product-card-DOBHGAa2.js.map → product-card-CNBegEBW.js.map} +1 -1
  155. package/dist/product-card.cjs.js +1 -1
  156. package/dist/product-card.es.js +1 -1
  157. package/dist/{promotion-card-C7B5ZJaB.js → promotion-card-CXNhskRl.js} +2 -2
  158. package/dist/{promotion-card-C7B5ZJaB.js.map → promotion-card-CXNhskRl.js.map} +1 -1
  159. package/dist/{promotion-card-wGGt75eI.mjs → promotion-card-_bPyVr9t.mjs} +33 -33
  160. package/dist/{promotion-card-wGGt75eI.mjs.map → promotion-card-_bPyVr9t.mjs.map} +1 -1
  161. package/dist/promotion-card.cjs.js +1 -1
  162. package/dist/promotion-card.es.js +1 -1
  163. package/dist/purpur.css +1 -1
  164. package/dist/{quantity-selector-DPOTlMSq.js → quantity-selector-CjSAaj7d.js} +2 -2
  165. package/dist/{quantity-selector-DPOTlMSq.js.map → quantity-selector-CjSAaj7d.js.map} +1 -1
  166. package/dist/{quantity-selector-_VcZYLjR.mjs → quantity-selector-HvyYSKah.mjs} +5 -5
  167. package/dist/{quantity-selector-_VcZYLjR.mjs.map → quantity-selector-HvyYSKah.mjs.map} +1 -1
  168. package/dist/quantity-selector.cjs.js +1 -1
  169. package/dist/quantity-selector.es.js +1 -1
  170. package/dist/{radio-button-group-CZ_FnVAi.js → radio-button-group-BaFpGAcD.js} +2 -2
  171. package/dist/{radio-button-group-CZ_FnVAi.js.map → radio-button-group-BaFpGAcD.js.map} +1 -1
  172. package/dist/{radio-button-group-BnCPcmSN.mjs → radio-button-group-CFqPsu5A.mjs} +5 -5
  173. package/dist/{radio-button-group-BnCPcmSN.mjs.map → radio-button-group-CFqPsu5A.mjs.map} +1 -1
  174. package/dist/radio-button-group.cjs.js +1 -1
  175. package/dist/radio-button-group.es.js +1 -1
  176. package/dist/{radio-card-group-DkaMcmen.mjs → radio-card-group-BlRZBa-9.mjs} +16 -16
  177. package/dist/{radio-card-group-DkaMcmen.mjs.map → radio-card-group-BlRZBa-9.mjs.map} +1 -1
  178. package/dist/{radio-card-group-BT5pV3tA.js → radio-card-group-sYcfDPJq.js} +2 -2
  179. package/dist/{radio-card-group-BT5pV3tA.js.map → radio-card-group-sYcfDPJq.js.map} +1 -1
  180. package/dist/radio-card-group.cjs.js +1 -1
  181. package/dist/radio-card-group.es.js +1 -1
  182. package/dist/rich-text.cjs.js +1 -1
  183. package/dist/rich-text.es.js +1 -1
  184. package/dist/scss/heading.mixins.scss +1 -1
  185. package/dist/{search-field-DH0xeW_J.mjs → search-field-BOmCVr5b.mjs} +11 -11
  186. package/dist/{search-field-DH0xeW_J.mjs.map → search-field-BOmCVr5b.mjs.map} +1 -1
  187. package/dist/{search-field-CxX4BBcg.js → search-field-CanOlkIY.js} +2 -2
  188. package/dist/{search-field-CxX4BBcg.js.map → search-field-CanOlkIY.js.map} +1 -1
  189. package/dist/search-field.cjs.js +1 -1
  190. package/dist/search-field.es.js +1 -1
  191. package/dist/{stepper-BfIbJwZn.mjs → stepper-D7T0wed7.mjs} +68 -71
  192. package/dist/stepper-D7T0wed7.mjs.map +1 -0
  193. package/dist/stepper-DYjJgEHL.js +2 -0
  194. package/dist/stepper-DYjJgEHL.js.map +1 -0
  195. package/dist/stepper.cjs.js +1 -1
  196. package/dist/stepper.es.js +1 -1
  197. package/dist/{table-DvcpczWf.mjs → table-B4pts_r4.mjs} +181 -179
  198. package/dist/{table-DvcpczWf.mjs.map → table-B4pts_r4.mjs.map} +1 -1
  199. package/dist/{table-BNeo_B1h.js → table-Bv_BISXV.js} +4 -4
  200. package/dist/{table-BNeo_B1h.js.map → table-Bv_BISXV.js.map} +1 -1
  201. package/dist/table.cjs.js +1 -1
  202. package/dist/table.es.js +1 -1
  203. package/dist/tabs-Bye5lgZ1.mjs +424 -0
  204. package/dist/tabs-Bye5lgZ1.mjs.map +1 -0
  205. package/dist/tabs-D-nfZHIA.js +2 -0
  206. package/dist/tabs-D-nfZHIA.js.map +1 -0
  207. package/dist/tabs.cjs.js +1 -1
  208. package/dist/tabs.es.js +1 -1
  209. package/dist/{text-area-Cb9Hm2Z9.mjs → text-area-CpYWt99s.mjs} +3 -3
  210. package/dist/{text-area-Cb9Hm2Z9.mjs.map → text-area-CpYWt99s.mjs.map} +1 -1
  211. package/dist/text-area.es.js +1 -1
  212. package/dist/{text-field-PKAaXO1N.mjs → text-field-5rIuW8gc.mjs} +2 -2
  213. package/dist/{text-field-PKAaXO1N.mjs.map → text-field-5rIuW8gc.mjs.map} +1 -1
  214. package/dist/{text-field-B8a-NKm4.js → text-field-Xt6T3zjO.js} +2 -2
  215. package/dist/{text-field-B8a-NKm4.js.map → text-field-Xt6T3zjO.js.map} +1 -1
  216. package/dist/text-field.cjs.js +1 -1
  217. package/dist/text-field.es.js +1 -1
  218. package/dist/theme.es.js +2 -2
  219. package/dist/{toggle-Cezg5MUc.mjs → toggle-D23x1wWk.mjs} +9 -9
  220. package/dist/{toggle-Cezg5MUc.mjs.map → toggle-D23x1wWk.mjs.map} +1 -1
  221. package/dist/toggle.es.js +1 -1
  222. package/dist/tokens.es.js +3 -3
  223. package/dist/{tooltip-DXi7ikUT.mjs → tooltip-DkwyNxrQ.mjs} +12 -12
  224. package/dist/{tooltip-DXi7ikUT.mjs.map → tooltip-DkwyNxrQ.mjs.map} +1 -1
  225. package/dist/{tooltip-CLQLxoaf.js → tooltip-svlZkXBs.js} +2 -2
  226. package/dist/{tooltip-CLQLxoaf.js.map → tooltip-svlZkXBs.js.map} +1 -1
  227. package/dist/tooltip.cjs.js +1 -1
  228. package/dist/tooltip.es.js +1 -1
  229. package/dist/{useColorScheme-DRQcbSog.mjs → useColorScheme-9rgSgG0N.mjs} +2 -2
  230. package/dist/{useColorScheme-DRQcbSog.mjs.map → useColorScheme-9rgSgG0N.mjs.map} +1 -1
  231. package/dist/{variables-91UvS2rU.mjs → variables-BVgnpUH9.mjs} +253 -253
  232. package/dist/{variables-91UvS2rU.mjs.map → variables-BVgnpUH9.mjs.map} +1 -1
  233. package/dist/{variables-BSsIx39i.mjs → variables-DkCN2x27.mjs} +7 -7
  234. package/dist/{variables-BSsIx39i.mjs.map → variables-DkCN2x27.mjs.map} +1 -1
  235. package/dist/{variables-BUfnQw6H.mjs → variables-Dr3Hsdn-.mjs} +9 -9
  236. package/dist/{variables-BUfnQw6H.mjs.map → variables-Dr3Hsdn-.mjs.map} +1 -1
  237. package/package.json +27 -27
  238. package/scripts/generate.mts +4 -1
  239. package/vite-plugin-generate-components-metadata.js +4 -1
  240. package/dist/button-ChYUPi2k.js +0 -2
  241. package/dist/button-ChYUPi2k.js.map +0 -1
  242. package/dist/button-DBX_tvfJ.mjs +0 -105
  243. package/dist/button-DBX_tvfJ.mjs.map +0 -1
  244. package/dist/date-field-CPiTZqa0.js +0 -2
  245. package/dist/heading-DLCdW6gx.js +0 -2
  246. package/dist/heading-gqtQNo5n.mjs +0 -75
  247. package/dist/popover-B1BgSoQx.js.map +0 -1
  248. package/dist/popover-DBMI9Jy1.mjs.map +0 -1
  249. package/dist/stepper-B248FwO-.js +0 -2
  250. package/dist/stepper-B248FwO-.js.map +0 -1
  251. package/dist/stepper-BfIbJwZn.mjs.map +0 -1
  252. package/dist/tabs-CfHd4UQ2.js +0 -2
  253. package/dist/tabs-CfHd4UQ2.js.map +0 -1
  254. package/dist/tabs-CoXMAwMx.mjs +0 -396
  255. package/dist/tabs-CoXMAwMx.mjs.map +0 -1
@@ -1,396 +0,0 @@
1
- import { jsx as l, jsxs as P } from "react/jsx-runtime";
2
- import * as T from "react";
3
- import { forwardRef as q, isValidElement as gt, useRef as M, useState as $, Children as x, useEffect as N } from "react";
4
- import { b as ht } from "./icon.es-CZcKxTaM.mjs";
5
- import { P as R, c as D, u as mt } from "./index-DCcK_d4W.mjs";
6
- import { c as wt } from "./index-DOfn3ixy.mjs";
7
- import { c as Z, I as Ct, R as Tt } from "./index-IpWiejWQ.mjs";
8
- import { P as $t } from "./index-DDrLXRUs.mjs";
9
- import { u as It } from "./index-ByaXH_ih.mjs";
10
- import { u as yt } from "./index-CEQ35j8b.mjs";
11
- import { c as B } from "./bind-CU-R61T-.mjs";
12
- const xt = {
13
- name: "chevron-left",
14
- svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M16.175 3.905a.9.9 0 0 1-.08 1.27L8.36 12l7.736 6.825a.9.9 0 0 1-1.191 1.35l-8.5-7.5a.9.9 0 0 1 0-1.35l8.5-7.5a.9.9 0 0 1 1.27.08Z" clip-rule="evenodd"/></svg>',
15
- keywords: ["chevron-left"],
16
- category: "utility"
17
- }, Nt = {
18
- name: "chevron-right",
19
- svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M7.809 3.924a.9.9 0 0 0 .115 1.267L16.094 12l-8.17 6.809a.9.9 0 0 0 1.152 1.382l9-7.5a.9.9 0 0 0 0-1.382l-9-7.5a.9.9 0 0 0-1.267.115Z" clip-rule="evenodd"/></svg>',
20
- keywords: ["chevron-right"],
21
- category: "utility"
22
- };
23
- var S = "Tabs", [Rt] = wt(S, [
24
- Z
25
- ]), X = Z(), [St, z] = Rt(S), J = T.forwardRef(
26
- (e, r) => {
27
- const {
28
- __scopeTabs: s,
29
- value: o,
30
- onValueChange: i,
31
- defaultValue: u,
32
- orientation: a = "horizontal",
33
- dir: n,
34
- activationMode: b = "automatic",
35
- ...f
36
- } = e, p = It(n), [d, v] = mt({
37
- prop: o,
38
- onChange: i,
39
- defaultProp: u ?? "",
40
- caller: S
41
- });
42
- return /* @__PURE__ */ l(
43
- St,
44
- {
45
- scope: s,
46
- baseId: yt(),
47
- value: d,
48
- onValueChange: v,
49
- orientation: a,
50
- dir: p,
51
- activationMode: b,
52
- children: /* @__PURE__ */ l(
53
- R.div,
54
- {
55
- dir: p,
56
- "data-orientation": a,
57
- ...f,
58
- ref: r
59
- }
60
- )
61
- }
62
- );
63
- }
64
- );
65
- J.displayName = S;
66
- var Q = "TabsList", U = T.forwardRef(
67
- (e, r) => {
68
- const { __scopeTabs: s, loop: o = !0, ...i } = e, u = z(Q, s), a = X(s);
69
- return /* @__PURE__ */ l(
70
- Tt,
71
- {
72
- asChild: !0,
73
- ...a,
74
- orientation: u.orientation,
75
- dir: u.dir,
76
- loop: o,
77
- children: /* @__PURE__ */ l(
78
- R.div,
79
- {
80
- role: "tablist",
81
- "aria-orientation": u.orientation,
82
- ...i,
83
- ref: r
84
- }
85
- )
86
- }
87
- );
88
- }
89
- );
90
- U.displayName = Q;
91
- var Y = "TabsTrigger", tt = T.forwardRef(
92
- (e, r) => {
93
- const { __scopeTabs: s, value: o, disabled: i = !1, ...u } = e, a = z(Y, s), n = X(s), b = nt(a.baseId, o), f = ot(a.baseId, o), p = o === a.value;
94
- return /* @__PURE__ */ l(
95
- Ct,
96
- {
97
- asChild: !0,
98
- ...n,
99
- focusable: !i,
100
- active: p,
101
- children: /* @__PURE__ */ l(
102
- R.button,
103
- {
104
- type: "button",
105
- role: "tab",
106
- "aria-selected": p,
107
- "aria-controls": f,
108
- "data-state": p ? "active" : "inactive",
109
- "data-disabled": i ? "" : void 0,
110
- disabled: i,
111
- id: b,
112
- ...u,
113
- ref: r,
114
- onMouseDown: D(e.onMouseDown, (d) => {
115
- !i && d.button === 0 && d.ctrlKey === !1 ? a.onValueChange(o) : d.preventDefault();
116
- }),
117
- onKeyDown: D(e.onKeyDown, (d) => {
118
- [" ", "Enter"].includes(d.key) && a.onValueChange(o);
119
- }),
120
- onFocus: D(e.onFocus, () => {
121
- const d = a.activationMode !== "manual";
122
- !p && !i && d && a.onValueChange(o);
123
- })
124
- }
125
- )
126
- }
127
- );
128
- }
129
- );
130
- tt.displayName = Y;
131
- var et = "TabsContent", rt = T.forwardRef(
132
- (e, r) => {
133
- const { __scopeTabs: s, value: o, forceMount: i, children: u, ...a } = e, n = z(et, s), b = nt(n.baseId, o), f = ot(n.baseId, o), p = o === n.value, d = T.useRef(p);
134
- return T.useEffect(() => {
135
- const v = requestAnimationFrame(() => d.current = !1);
136
- return () => cancelAnimationFrame(v);
137
- }, []), /* @__PURE__ */ l($t, { present: i || p, children: ({ present: v }) => /* @__PURE__ */ l(
138
- R.div,
139
- {
140
- "data-state": p ? "active" : "inactive",
141
- "data-orientation": n.orientation,
142
- role: "tabpanel",
143
- "aria-labelledby": b,
144
- hidden: !v,
145
- id: f,
146
- tabIndex: 0,
147
- ...a,
148
- ref: r,
149
- style: {
150
- ...e.style,
151
- animationDuration: d.current ? "0s" : void 0
152
- },
153
- children: v && u
154
- }
155
- ) });
156
- }
157
- );
158
- rt.displayName = et;
159
- function nt(e, r) {
160
- return `${e}-trigger-${r}`;
161
- }
162
- function ot(e, r) {
163
- return `${e}-content-${r}`;
164
- }
165
- var Et = J, jt = U, At = tt, Lt = rt;
166
- const Pt = {
167
- "purpur-tab-content": "_purpur-tab-content_1ugbi_1",
168
- "purpur-tab-content--force-mount": "_purpur-tab-content--force-mount_1ugbi_15"
169
- }, Mt = B.bind(Pt), K = "purpur-tab-content", Dt = q(
170
- ({ children: e, tabId: r, "data-testid": s, className: o, disableForceMount: i, ...u }, a) => /* @__PURE__ */ l(
171
- Lt,
172
- {
173
- ref: a,
174
- className: Mt(K, o, {
175
- [`${K}--force-mount`]: !i
176
- }),
177
- "data-testid": s,
178
- value: r,
179
- forceMount: !i || void 0,
180
- ...u,
181
- children: e
182
- }
183
- )
184
- ), Vt = (e) => !!e && gt(e) && !!e.props.name && !!e.props.tabId, Bt = {
185
- "purpur-tab-header": "_purpur-tab-header_1tc2s_1",
186
- "purpur-tab-header--contained": "_purpur-tab-header--contained_1tc2s_36",
187
- "purpur-tab-header--contained-negative": "_purpur-tab-header--contained-negative_1tc2s_36",
188
- "purpur-tab-header--line": "_purpur-tab-header--line_1tc2s_39",
189
- "purpur-tab-header--line-negative": "_purpur-tab-header--line-negative_1tc2s_51",
190
- "purpur-tab-header--full-width": "_purpur-tab-header--full-width_1tc2s_100"
191
- }, zt = B.bind(Bt), V = "purpur-tab-header", Ft = q(
192
- ({
193
- index: e,
194
- tabId: r,
195
- variant: s,
196
- negative: o,
197
- onFocus: i,
198
- fullWidth: u,
199
- "data-testid": a,
200
- children: n
201
- }, b) => /* @__PURE__ */ l(
202
- At,
203
- {
204
- id: `${r}-trigger`,
205
- className: zt(V, `${V}--${s}${o ? "-negative" : ""}`, {
206
- [`${V}--full-width`]: u
207
- }),
208
- value: r,
209
- "data-testid": a,
210
- "data-index": e,
211
- ref: b,
212
- onFocus: i,
213
- children: n
214
- }
215
- )
216
- ), kt = {
217
- "purpur-tabs__wrapper": "_purpur-tabs__wrapper_jv2vl_1",
218
- "purpur-tabs__scroll-button": "_purpur-tabs__scroll-button_jv2vl_9",
219
- "purpur-tabs__scroll-button--left": "_purpur-tabs__scroll-button--left_jv2vl_71",
220
- "purpur-tabs__scroll-button--right": "_purpur-tabs__scroll-button--right_jv2vl_74",
221
- "purpur-tabs__wrapper--scroll-start": "_purpur-tabs__wrapper--scroll-start_jv2vl_77",
222
- "purpur-tabs__wrapper--scroll-end": "_purpur-tabs__wrapper--scroll-end_jv2vl_80",
223
- "purpur-tabs--line": "_purpur-tabs--line_jv2vl_83",
224
- "purpur-tabs--line-negative": "_purpur-tabs--line-negative_jv2vl_83",
225
- "purpur-tabs__selected-border": "_purpur-tabs__selected-border_jv2vl_91",
226
- "purpur-tabs__content-wrapper": "_purpur-tabs__content-wrapper_jv2vl_115",
227
- "purpur-tabs--contained": "_purpur-tabs--contained_jv2vl_123",
228
- "purpur-tabs__list": "_purpur-tabs__list_jv2vl_123",
229
- "purpur-tabs--contained-negative": "_purpur-tabs--contained-negative_jv2vl_123",
230
- "purpur-tabs__content-container": "_purpur-tabs__content-container_jv2vl_126",
231
- "purpur-tabs--full-width": "_purpur-tabs--full-width_jv2vl_136"
232
- }, ee = ["line", "contained"], Gt = (e) => new CustomEvent("tabChangeDetail", { detail: { value: e } }), m = B.bind(kt), _ = "purpur-tabs", Wt = (e, r) => {
233
- if (typeof e?.getBoundingClientRect != "function" || typeof r?.scroll != "function")
234
- return;
235
- const s = e.getBoundingClientRect(), o = r.getBoundingClientRect(), i = r.clientWidth, u = parseInt(getComputedStyle(r).borderLeftWidth?.split("px")[0], 10), a = o.left + (isNaN(u) ? 0 : u);
236
- let n;
237
- s.right > o.right && (n = s.left + r.scrollLeft, n = n + s.width - i + i * 0.1, n = n - a), s.left < o.left && (n = s.left + r.scrollLeft, n = n - i * 0.1, n = n - a), n !== void 0 && r.scroll({ left: n, behavior: "smooth" });
238
- }, Ot = ({
239
- children: e,
240
- variant: r = "line",
241
- negative: s = !1,
242
- fullWidth: o = !1,
243
- onChange: i,
244
- className: u,
245
- defaultValue: a,
246
- animateHeight: n = !1,
247
- "data-testid": b,
248
- value: f,
249
- ...p
250
- }) => {
251
- const d = M(null), [v, at] = $(-1), [st, F] = $({}), [it, ct] = $(0), [lt, ut] = $(0), g = x.toArray(e).filter(Vt), w = M(null), k = M(new Array(g.length)), G = 200, E = r === "line", dt = m(
252
- _,
253
- `${_}--${r}${s ? "-negative" : ""}`,
254
- { [`${_}--full-width`]: o },
255
- u
256
- ), j = x.map(g, ({ props: { tabId: t } }) => t), pt = () => {
257
- const t = j.findIndex((c) => c === a);
258
- return t >= 0 ? t : 0;
259
- };
260
- N(() => {
261
- f && W(g.findIndex((t) => t.props.tabId === f));
262
- }, [g, f]);
263
- const [A, W] = $(pt);
264
- if (new Set(j).size !== j.length)
265
- throw new Error("tabId must be unique");
266
- const L = (t, c) => c || b ? `${c || b}-${t}` : void 0, O = () => {
267
- if (!E)
268
- return;
269
- const t = k.current[A];
270
- ct(t?.offsetLeft || 0), ut(t?.getBoundingClientRect().width || 0);
271
- }, _t = (t) => {
272
- E && !f && W(g.findIndex((c) => c.props.tabId === t)), i?.(Gt(t));
273
- }, bt = (t) => {
274
- if (w?.current) {
275
- const { scrollLeft: c } = w.current, h = t === "left" ? -G : G;
276
- w.current.scroll({ left: c + h, behavior: "smooth" });
277
- }
278
- }, H = ({ side: t }) => /* @__PURE__ */ l(
279
- "button",
280
- {
281
- className: m(`${_}__scroll-button`, `${_}__scroll-button--${t}`),
282
- onClick: () => bt(t),
283
- type: "button",
284
- "aria-hidden": "true",
285
- tabIndex: -1,
286
- "data-testid": L("scroll-button"),
287
- children: /* @__PURE__ */ l(ht, { svg: t === "left" ? xt : Nt, size: "md" })
288
- }
289
- );
290
- return N(() => {
291
- const t = () => {
292
- if (d.current && n) {
293
- const h = d.current.offsetHeight;
294
- at(h);
295
- }
296
- }, c = () => {
297
- t(), O();
298
- };
299
- return t(), window.addEventListener("resize", c), () => {
300
- window.removeEventListener("resize", c);
301
- };
302
- }, [A, n]), N(() => {
303
- O();
304
- }, [A, o, g.length, r]), N(() => {
305
- const t = w.current;
306
- if (!t) return;
307
- const c = () => {
308
- const { scrollLeft: h, scrollWidth: I, clientWidth: y } = t, C = I > y, ft = h <= 1, vt = h + y >= I - 1;
309
- if (!C) {
310
- F({});
311
- return;
312
- }
313
- F({
314
- [`${_}__wrapper--scroll-start`]: !ft,
315
- [`${_}__wrapper--scroll-end`]: !vt
316
- });
317
- };
318
- return c(), t.addEventListener("scroll", c, { passive: !0 }), window.addEventListener("resize", c), () => {
319
- t.removeEventListener("scroll", c), window.removeEventListener("resize", c);
320
- };
321
- }, []), /* @__PURE__ */ l(
322
- Et,
323
- {
324
- defaultValue: a ?? g[0].props.tabId,
325
- onValueChange: _t,
326
- "data-testid": b,
327
- className: dt,
328
- value: f,
329
- ...p,
330
- children: /* @__PURE__ */ P("div", { className: m(`${_}__container`), children: [
331
- /* @__PURE__ */ P("div", { className: m(`${_}__wrapper`, st), children: [
332
- /* @__PURE__ */ P(
333
- jt,
334
- {
335
- ref: (t) => {
336
- w.current = t;
337
- },
338
- className: m(`${_}__list`),
339
- children: [
340
- x.map(g, (t, c) => {
341
- const { name: h, tabId: I, "data-testid": y } = t.props;
342
- return /* @__PURE__ */ l(
343
- Ft,
344
- {
345
- "data-testid": L("header", y),
346
- index: c,
347
- tabId: I,
348
- ref: (C) => {
349
- C && (k.current[c] = C);
350
- },
351
- onFocus: (C) => {
352
- Wt(C.target, w.current);
353
- },
354
- variant: r,
355
- negative: s,
356
- fullWidth: o,
357
- children: h
358
- }
359
- );
360
- }),
361
- E && /* @__PURE__ */ l(
362
- "div",
363
- {
364
- className: m(`${_}__selected-border`),
365
- style: {
366
- width: lt,
367
- transform: `translateX(${it}px)`
368
- },
369
- "data-testid": L("selected-border")
370
- }
371
- )
372
- ]
373
- }
374
- ),
375
- /* @__PURE__ */ l(H, { side: "left" }),
376
- /* @__PURE__ */ l(H, { side: "right" })
377
- ] }),
378
- /* @__PURE__ */ l(
379
- "div",
380
- {
381
- className: n ? m(`${_}__content-wrapper`) : "",
382
- style: { height: n && v > -1 ? `${v}px` : "auto" },
383
- children: /* @__PURE__ */ l("div", { ref: d, className: m(`${_}__content-container`), children: x.map(g, (t) => t) })
384
- }
385
- )
386
- ] })
387
- }
388
- );
389
- };
390
- Ot.Content = Dt;
391
- export {
392
- Ot as T,
393
- Gt as c,
394
- ee as t
395
- };
396
- //# sourceMappingURL=tabs-CoXMAwMx.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabs-CoXMAwMx.mjs","sources":["../../../components/icon/dist/assets/chevron-left.es.js","../../../components/icon/dist/assets/chevron-right.es.js","../../../common/temp/node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_2ad0945e3cb98dc5bbfaaf29c105e977/node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../components/tabs/src/tab-content.tsx","../../../components/tabs/src/tab-header.tsx","../../../components/tabs/src/tabs.utils.ts","../../../components/tabs/src/tabs.tsx"],"sourcesContent":["const e = {\n name: \"chevron-left\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M16.175 3.905a.9.9 0 0 1-.08 1.27L8.36 12l7.736 6.825a.9.9 0 0 1-1.191 1.35l-8.5-7.5a.9.9 0 0 1 0-1.35l8.5-7.5a.9.9 0 0 1 1.27.08Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"chevron-left\"],\n category: \"utility\"\n};\nexport {\n e as chevronLeft\n};\n//# sourceMappingURL=chevron-left.es.js.map\n","const e = {\n name: \"chevron-right\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M7.809 3.924a.9.9 0 0 0 .115 1.267L16.094 12l-8.17 6.809a.9.9 0 0 0 1.152 1.382l9-7.5a.9.9 0 0 0 0-1.382l-9-7.5a.9.9 0 0 0-1.267.115Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"chevron-right\"],\n category: \"utility\"\n};\nexport {\n e as chevronRight\n};\n//# sourceMappingURL=chevron-right.es.js.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Content } from \"@radix-ui/react-tabs\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./tab-content.module.scss\";\n\nexport type TabContentProps = Omit<BaseProps, \"children\"> & {\n /**\n * Content to be rendered inside a `button` element.\n * Only pass ReactNodes that are valid as children of a `button`, such as plain text,\n * inline elements like `span` or other non-interactive elements. Avoid block-level or interactive elements.\n */\n name: ReactNode;\n /**\n * A unique ID that associates the tab with a content.\n * */\n tabId: string;\n /**\n * If true, the inactive tab content will not be rendered.\n */\n disableForceMount?: boolean;\n children: ReactNode;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-tab-content\";\n\nexport const TabContent = forwardRef<HTMLDivElement, TabContentProps>(\n ({ children, tabId, \"data-testid\": dataTestId, className, disableForceMount, ...props }, ref) => (\n <Content\n ref={ref}\n className={cx(rootClassName, className, {\n [`${rootClassName}--force-mount`]: !disableForceMount,\n })}\n data-testid={dataTestId}\n value={tabId}\n forceMount={!disableForceMount || undefined}\n {...props}\n >\n {children}\n </Content>\n )\n);\n\nexport const isTabContent = (child?: ReactNode): child is ReactElement<TabContentProps> =>\n !!child && isValidElement<TabContentProps>(child) && !!child.props.name && !!child.props.tabId;\n","import React, {\n type FocusEventHandler,\n type ForwardedRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { Trigger } from \"@radix-ui/react-tabs\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./tab-header.module.scss\";\nimport { type TabsVariant } from \"./tabs.utils\";\n\ntype TabHeaderProps = {\n \"data-testid\"?: string;\n index: number;\n tabId: string;\n variant: TabsVariant;\n negative?: boolean;\n onFocus: FocusEventHandler<HTMLButtonElement>;\n fullWidth?: boolean;\n children: ReactNode;\n};\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-tab-header\";\n\nexport const TabHeader = forwardRef(\n <T extends HTMLButtonElement>(\n {\n index,\n tabId,\n variant,\n negative,\n onFocus,\n fullWidth,\n \"data-testid\": dataTestId,\n children,\n }: TabHeaderProps,\n ref: ForwardedRef<T>\n ) => (\n <Trigger\n id={`${tabId}-trigger`}\n className={cx(rootClassName, `${rootClassName}--${variant}${negative ? \"-negative\" : \"\"}`, {\n [`${rootClassName}--full-width`]: fullWidth,\n })}\n value={tabId}\n data-testid={dataTestId}\n data-index={index}\n ref={ref}\n onFocus={onFocus}\n >\n {children}\n </Trigger>\n )\n);\n","import type { FunctionComponent } from \"react\";\n\nimport type { TabContent } from \"./tab-content\";\n\nexport type TabsCmp<P> = FunctionComponent<P> & {\n Content: typeof TabContent;\n};\n\nexport const tabsVariants = [\"line\", \"contained\"] as const;\n\nexport type TabsVariant = (typeof tabsVariants)[number];\n\nexport const createTabChangeDetailEvent = (value: string) =>\n new CustomEvent<TabChangeDetail>(\"tabChangeDetail\", { detail: { value } });\n\nexport type TabChangeDetail = { value: string };\n","import React, {\n Children,\n type HTMLAttributes,\n type ReactElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Icon } from \"@purpur/icon\";\nimport { chevronLeft } from \"@purpur/icon/assets/chevron-left\";\nimport { chevronRight } from \"@purpur/icon/assets/chevron-right\";\nimport { List, Root } from \"@radix-ui/react-tabs\";\nimport c from \"classnames/bind\";\n\nimport { isTabContent, TabContent } from \"./tab-content\";\nimport { TabHeader } from \"./tab-header\";\nimport styles from \"./tabs.module.scss\";\nimport {\n createTabChangeDetailEvent,\n type TabChangeDetail,\n type TabsCmp,\n type TabsVariant,\n} from \"./tabs.utils\";\n\ntype TabsProps = {\n children: Array<ReactElement<typeof TabContent>> | ReactElement<typeof TabContent>;\n variant?: TabsVariant;\n negative?: boolean;\n fullWidth?: boolean;\n /**\n * The controlled value of the tabs. Must be used in conjunction with onChange.\n */\n value?: string;\n /**\n * Event handler called when the value changes.\n * */\n onChange?: (event: CustomEvent<TabChangeDetail>) => void;\n defaultValue?: string;\n /**\n * When true, animates the height of the component when switching tabs.\n * */\n animateHeight?: boolean;\n \"data-testid\"?: string;\n} & Pick<HTMLAttributes<HTMLDivElement>, \"style\" | \"className\">;\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-tabs\";\n\nconst scrollToTarget = (target: HTMLElement, tabList?: HTMLDivElement | null) => {\n /**\n * scroll may not be available in test runner, so check existence before\n * proceeding. We can't use scrollIntoView() because Safari doesn't support\n * it fully.\n */\n if (\n typeof target?.getBoundingClientRect !== \"function\" ||\n typeof tabList?.scroll !== \"function\"\n ) {\n return;\n }\n\n const targetRect = target.getBoundingClientRect();\n const wrapperRect = tabList.getBoundingClientRect();\n const wrapperWidth = tabList.clientWidth;\n const wrapperOffset = parseInt(getComputedStyle(tabList).borderLeftWidth?.split(\"px\")[0], 10);\n const offset = wrapperRect.left + (isNaN(wrapperOffset) ? 0 : wrapperOffset);\n let left;\n\n // Handle forward navigation\n if (targetRect.right > wrapperRect.right) {\n left = targetRect.left + tabList.scrollLeft;\n left = left + targetRect.width - wrapperWidth + wrapperWidth * 0.1;\n left = left - offset;\n }\n\n // Handle backwards navigation\n if (targetRect.left < wrapperRect.left) {\n left = targetRect.left + tabList.scrollLeft;\n left = left - wrapperWidth * 0.1;\n left = left - offset;\n }\n\n if (left !== undefined) {\n tabList.scroll({ left, behavior: \"smooth\" });\n }\n};\n\nexport const Tabs: TabsCmp<TabsProps> = ({\n children,\n variant = \"line\",\n negative = false,\n fullWidth = false,\n onChange,\n className,\n defaultValue,\n animateHeight = false,\n \"data-testid\": dataTestId,\n value,\n ...props\n}) => {\n const contentRef = useRef<HTMLDivElement | null>(null);\n const [height, setHeight] = useState(-1);\n const [scrollClasses, setScrollClasses] = useState<{ [key: string]: boolean }>({});\n const [selectedTriggerOffset, setSelectedTriggerOffset] = useState(0);\n const [selectedTriggerWidth, setSelectedTriggerWidth] = useState(0);\n const tabContentChildren = Children.toArray(children).filter(isTabContent);\n const tabList = useRef<HTMLDivElement>(null);\n const tabChildren = useRef<HTMLButtonElement[]>(new Array(tabContentChildren.length));\n const sideScrollAdjustmentSize = 200;\n const isLineVariant = variant === \"line\";\n\n const classNames = cx(\n rootClassName,\n `${rootClassName}--${variant}${negative ? \"-negative\" : \"\"}`,\n { [`${rootClassName}--full-width`]: fullWidth },\n className\n );\n\n const tabIds = Children.map(tabContentChildren, ({ props: { tabId } }) => tabId);\n\n const getDefaultTabIndex = () => {\n const defaultIndex = tabIds.findIndex((tabIndex) => tabIndex === defaultValue);\n return defaultIndex >= 0 ? defaultIndex : 0;\n };\n\n useEffect(() => {\n if (value) {\n setActiveIndex(tabContentChildren.findIndex((child) => child.props.tabId === value));\n }\n }, [tabContentChildren, value]);\n\n const [activeIndex, setActiveIndex] = useState(getDefaultTabIndex);\n\n if (new Set(tabIds).size !== tabIds.length) {\n throw new Error(\"tabId must be unique\");\n }\n\n const getTestId = (name: string, id?: string) =>\n id || dataTestId ? `${id || dataTestId}-${name}` : undefined;\n\n const handleLinePosition = () => {\n if (!isLineVariant) {\n return;\n }\n\n const activeTabElement = tabChildren.current[activeIndex];\n\n setSelectedTriggerOffset(activeTabElement?.offsetLeft || 0);\n setSelectedTriggerWidth(activeTabElement?.getBoundingClientRect().width || 0);\n };\n\n const handleTabChange = (_value: string) => {\n if (isLineVariant && !value) {\n setActiveIndex(tabContentChildren.findIndex((child) => child.props.tabId === _value));\n }\n onChange?.(createTabChangeDetailEvent(_value));\n };\n\n const handleScrollButtonClick = (side: \"left\" | \"right\") => {\n if (tabList?.current) {\n const { scrollLeft } = tabList.current;\n const modifier = side === \"left\" ? -sideScrollAdjustmentSize : sideScrollAdjustmentSize;\n\n tabList.current.scroll({ left: scrollLeft + modifier, behavior: \"smooth\" });\n }\n };\n\n const ScrollButton = ({ side }: { side: \"left\" | \"right\" }) => (\n <button\n className={cx(`${rootClassName}__scroll-button`, `${rootClassName}__scroll-button--${side}`)}\n onClick={() => handleScrollButtonClick(side)}\n type=\"button\"\n aria-hidden=\"true\"\n tabIndex={-1}\n data-testid={getTestId(\"scroll-button\")}\n >\n <Icon svg={side === \"left\" ? chevronLeft : chevronRight} size=\"md\" />\n </button>\n );\n\n useEffect(() => {\n const setNewHeight = () => {\n if (contentRef.current && animateHeight) {\n const newHeight = contentRef.current.offsetHeight;\n setHeight(newHeight);\n }\n };\n\n const handleResize = () => {\n setNewHeight();\n handleLinePosition();\n };\n\n setNewHeight();\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [activeIndex, animateHeight]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n handleLinePosition();\n }, [activeIndex, fullWidth, tabContentChildren.length, variant]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n const root = tabList.current;\n if (!root) return;\n\n const updateScrollState = () => {\n const { scrollLeft, scrollWidth, clientWidth } = root;\n\n const canScroll = scrollWidth > clientWidth;\n const atStart = scrollLeft <= 1;\n const atEnd = scrollLeft + clientWidth >= scrollWidth - 1;\n\n if (!canScroll) {\n setScrollClasses({});\n return;\n }\n\n setScrollClasses({\n [`${rootClassName}__wrapper--scroll-start`]: !atStart,\n [`${rootClassName}__wrapper--scroll-end`]: !atEnd,\n });\n };\n\n updateScrollState();\n\n root.addEventListener(\"scroll\", updateScrollState, { passive: true });\n window.addEventListener(\"resize\", updateScrollState);\n\n return () => {\n root.removeEventListener(\"scroll\", updateScrollState);\n window.removeEventListener(\"resize\", updateScrollState);\n };\n }, []);\n\n return (\n <Root\n defaultValue={defaultValue ?? tabContentChildren[0].props.tabId}\n onValueChange={handleTabChange}\n data-testid={dataTestId}\n className={classNames}\n value={value}\n {...props}\n >\n <div className={cx(`${rootClassName}__container`)}>\n <div className={cx(`${rootClassName}__wrapper`, scrollClasses)}>\n <List\n ref={(el) => {\n tabList.current = el;\n }}\n className={cx(`${rootClassName}__list`)}\n >\n {Children.map(tabContentChildren, (child, index) => {\n const { name, tabId, \"data-testid\": childDataTestId } = child.props;\n return (\n <TabHeader\n data-testid={getTestId(\"header\", childDataTestId)}\n index={index}\n tabId={tabId}\n ref={(el) => {\n if (el) {\n tabChildren.current[index] = el;\n }\n }}\n onFocus={(e) => {\n scrollToTarget(e.target as HTMLElement, tabList.current);\n }}\n variant={variant}\n negative={negative}\n fullWidth={fullWidth}\n >\n {name}\n </TabHeader>\n );\n })}\n {isLineVariant && (\n <div\n className={cx(`${rootClassName}__selected-border`)}\n style={{\n width: selectedTriggerWidth,\n transform: `translateX(${selectedTriggerOffset}px)`,\n }}\n data-testid={getTestId(\"selected-border\")}\n />\n )}\n </List>\n <ScrollButton side=\"left\" />\n <ScrollButton side=\"right\" />\n </div>\n <div\n className={animateHeight ? cx(`${rootClassName}__content-wrapper`) : \"\"}\n style={{ height: animateHeight && height > -1 ? `${height}px` : \"auto\" }}\n >\n <div ref={contentRef} className={cx(`${rootClassName}__content-container`)}>\n {Children.map(tabContentChildren, (child) => child)}\n </div>\n </div>\n </div>\n </Root>\n );\n};\n\nTabs.Content = TabContent;\n\nexport * from \"./tabs.utils\";\n"],"names":["e","TABS_NAME","createTabsContext","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","cx","c","styles","rootClassName","TabContent","forwardRef","tabId","dataTestId","className","disableForceMount","ref","isTabContent","child","isValidElement","TabHeader","index","variant","negative","onFocus","fullWidth","tabsVariants","createTabChangeDetailEvent","scrollToTarget","target","tabList","targetRect","wrapperRect","wrapperWidth","wrapperOffset","offset","left","onChange","animateHeight","contentRef","useRef","height","setHeight","useState","scrollClasses","setScrollClasses","selectedTriggerOffset","setSelectedTriggerOffset","selectedTriggerWidth","setSelectedTriggerWidth","tabContentChildren","Children","tabChildren","sideScrollAdjustmentSize","isLineVariant","classNames","tabIds","getDefaultTabIndex","defaultIndex","tabIndex","useEffect","setActiveIndex","activeIndex","getTestId","name","id","handleLinePosition","activeTabElement","handleTabChange","_value","handleScrollButtonClick","side","scrollLeft","modifier","ScrollButton","Icon","chevronLeft","chevronRight","setNewHeight","newHeight","handleResize","root","updateScrollState","scrollWidth","clientWidth","canScroll","atStart","atEnd","Root","jsxs","el","childDataTestId"],"mappings":"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","x_google_ignoreList":[2]}