@commercetools/nimbus 0.0.0-canary-20251024075337 → 0.0.0-canary-20251024090130

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 (308) hide show
  1. package/dist/chunks/{Button-CafJrK0a.es.js → Button-C4ud7YxN.es.js} +3 -3
  2. package/dist/chunks/{Button-CafJrK0a.es.js.map → Button-C4ud7YxN.es.js.map} +1 -1
  3. package/dist/chunks/{DateField-BjKTTWs5.es.js → DateField-oXtVK-_5.es.js} +6 -6
  4. package/dist/chunks/{DateField-BjKTTWs5.es.js.map → DateField-oXtVK-_5.es.js.map} +1 -1
  5. package/dist/chunks/{DatePicker-BrgxRTyS.es.js → DatePicker-DrWdEOUQ.es.js} +40 -40
  6. package/dist/chunks/{DatePicker-BrgxRTyS.es.js.map → DatePicker-DrWdEOUQ.es.js.map} +1 -1
  7. package/dist/chunks/{Dialog-Cx5MzP6O.es.js → Dialog-C3sNnu1k.es.js} +5 -5
  8. package/dist/chunks/{Dialog-Cx5MzP6O.es.js.map → Dialog-C3sNnu1k.es.js.map} +1 -1
  9. package/dist/chunks/{Group-Bd9Zcn-V.es.js → Group-CiDvtaeM.es.js} +2 -2
  10. package/dist/chunks/{Group-Bd9Zcn-V.es.js.map → Group-CiDvtaeM.es.js.map} +1 -1
  11. package/dist/chunks/{Header-D6CYH5C_.es.js → Header-BxizMPpp.es.js} +2 -2
  12. package/dist/chunks/{Header-D6CYH5C_.es.js.map → Header-BxizMPpp.es.js.map} +1 -1
  13. package/dist/chunks/{Heading-DPlDZAaf.es.js → Heading-CAI_WTdS.es.js} +14 -14
  14. package/dist/chunks/{Heading-DPlDZAaf.es.js.map → Heading-CAI_WTdS.es.js.map} +1 -1
  15. package/dist/chunks/{Input-EnWCwj65.es.js → Input-De-sfAtq.es.js} +2 -2
  16. package/dist/chunks/{Input-EnWCwj65.es.js.map → Input-De-sfAtq.es.js.map} +1 -1
  17. package/dist/chunks/{Label-7OK510ha.es.js → Label-BS7NIWvY.es.js} +2 -2
  18. package/dist/chunks/{Label-7OK510ha.es.js.map → Label-BS7NIWvY.es.js.map} +1 -1
  19. package/dist/chunks/{ListBox-C4BToxCj.es.js → ListBox-BfRQSQ3P.es.js} +4 -4
  20. package/dist/chunks/{ListBox-C4BToxCj.es.js.map → ListBox-BfRQSQ3P.es.js.map} +1 -1
  21. package/dist/chunks/{Modal-DowTFCAo.es.js → Modal-BTJk-mW-.es.js} +3 -3
  22. package/dist/chunks/{Modal-DowTFCAo.es.js.map → Modal-BTJk-mW-.es.js.map} +1 -1
  23. package/dist/chunks/{ProgressBar-DA797ATA.es.js → ProgressBar-Dl4ZrjfX.es.js} +3 -3
  24. package/dist/chunks/{ProgressBar-DA797ATA.es.js.map → ProgressBar-Dl4ZrjfX.es.js.map} +1 -1
  25. package/dist/chunks/{Separator-B0kvBk7k.es.js → Separator-BOfmJd-0.es.js} +2 -2
  26. package/dist/chunks/{Separator-B0kvBk7k.es.js.map → Separator-BOfmJd-0.es.js.map} +1 -1
  27. package/dist/chunks/{TextArea-B__-6Fht.es.js → TextArea-DR4R6vJD.es.js} +2 -2
  28. package/dist/chunks/{TextArea-B__-6Fht.es.js.map → TextArea-DR4R6vJD.es.js.map} +1 -1
  29. package/dist/chunks/{ToggleButton-wAaapRtE.es.js → ToggleButton-DMoUAyoo.es.js} +2 -2
  30. package/dist/chunks/{ToggleButton-wAaapRtE.es.js.map → ToggleButton-DMoUAyoo.es.js.map} +1 -1
  31. package/dist/chunks/{accordion-BMztnndo.es.js → accordion-DyTTsrDh.es.js} +4 -4
  32. package/dist/chunks/{accordion-BMztnndo.es.js.map → accordion-DyTTsrDh.es.js.map} +1 -1
  33. package/dist/chunks/{alert-DEy9gf3U.es.js → alert-DCm-d72j.es.js} +2 -2
  34. package/dist/chunks/{alert-DEy9gf3U.es.js.map → alert-DCm-d72j.es.js.map} +1 -1
  35. package/dist/chunks/avatar-BNhECwD5.cjs.js +2 -0
  36. package/dist/chunks/avatar-BNhECwD5.cjs.js.map +1 -0
  37. package/dist/chunks/avatar-DFibCsCs.es.js +47 -0
  38. package/dist/chunks/avatar-DFibCsCs.es.js.map +1 -0
  39. package/dist/chunks/{button-B4vE-tAz.es.js → button-Ccof5UcQ.es.js} +4 -4
  40. package/dist/chunks/{button-B4vE-tAz.es.js.map → button-Ccof5UcQ.es.js.map} +1 -1
  41. package/dist/chunks/calendar-CcA9vDZ_.es.js +209 -0
  42. package/dist/chunks/calendar-CcA9vDZ_.es.js.map +1 -0
  43. package/dist/chunks/calendar-Dm2LIuao.cjs.js +2 -0
  44. package/dist/chunks/calendar-Dm2LIuao.cjs.js.map +1 -0
  45. package/dist/chunks/{checkbox-B-1U4AKF.es.js → checkbox-CFDf2T7S.es.js} +3 -3
  46. package/dist/chunks/{checkbox-B-1U4AKF.es.js.map → checkbox-CFDf2T7S.es.js.map} +1 -1
  47. package/dist/chunks/{collapsible-motion-CeEspYkc.es.js → collapsible-motion-DmWoSXyS.es.js} +3 -3
  48. package/dist/chunks/{collapsible-motion-CeEspYkc.es.js.map → collapsible-motion-DmWoSXyS.es.js.map} +1 -1
  49. package/dist/chunks/combobox-BuuiDfjq.cjs.js +2 -0
  50. package/dist/chunks/combobox-BuuiDfjq.cjs.js.map +1 -0
  51. package/dist/chunks/{combobox-0cCAwg3W.es.js → combobox-C1DerhP1.es.js} +1064 -1032
  52. package/dist/chunks/combobox-C1DerhP1.es.js.map +1 -0
  53. package/dist/chunks/{data-table-BxITOPnx.es.js → data-table-BuGUlgQU.es.js} +1169 -1116
  54. package/dist/chunks/data-table-BuGUlgQU.es.js.map +1 -0
  55. package/dist/chunks/data-table-CyNImBEZ.cjs.js +2 -0
  56. package/dist/chunks/data-table-CyNImBEZ.cjs.js.map +1 -0
  57. package/dist/chunks/{date-input-D70l0IsY.es.js → date-input-B_T7Az3-.es.js} +4 -4
  58. package/dist/chunks/{date-input-D70l0IsY.es.js.map → date-input-B_T7Az3-.es.js.map} +1 -1
  59. package/dist/chunks/{date-picker-Dk3QgvCN.cjs.js → date-picker-BEDlqfYN.cjs.js} +2 -2
  60. package/dist/chunks/date-picker-BEDlqfYN.cjs.js.map +1 -0
  61. package/dist/chunks/{date-picker-FvaPPqXZ.es.js → date-picker-DcDxaZ6Y.es.js} +14 -14
  62. package/dist/chunks/date-picker-DcDxaZ6Y.es.js.map +1 -0
  63. package/dist/chunks/date-range-picker-C5G8uDlJ.es.js +358 -0
  64. package/dist/chunks/date-range-picker-C5G8uDlJ.es.js.map +1 -0
  65. package/dist/chunks/date-range-picker-vr0DE_0V.cjs.js +2 -0
  66. package/dist/chunks/date-range-picker-vr0DE_0V.cjs.js.map +1 -0
  67. package/dist/chunks/{dialog-Bsg1kLnV.es.js → dialog-C9OHxEA2.es.js} +2 -2
  68. package/dist/chunks/{dialog-Bsg1kLnV.es.js.map → dialog-C9OHxEA2.es.js.map} +1 -1
  69. package/dist/chunks/{dialog.title-BmLccUat.es.js → dialog.title-CGSRn_GL.es.js} +7 -7
  70. package/dist/chunks/{dialog.title-BmLccUat.es.js.map → dialog.title-CGSRn_GL.es.js.map} +1 -1
  71. package/dist/chunks/{draggable-list-CadviYoN.es.js → draggable-list-5SfJXtEK.es.js} +10 -10
  72. package/dist/chunks/{draggable-list-CadviYoN.es.js.map → draggable-list-5SfJXtEK.es.js.map} +1 -1
  73. package/dist/chunks/{drawer-BsHkmwKB.es.js → drawer-LRm6SeM-.es.js} +8 -8
  74. package/dist/chunks/{drawer-BsHkmwKB.es.js.map → drawer-LRm6SeM-.es.js.map} +1 -1
  75. package/dist/chunks/{extract-style-props-CTU5PJnh.es.js → extract-style-props-CZpdYA8m.es.js} +2 -2
  76. package/dist/chunks/{extract-style-props-CTU5PJnh.es.js.map → extract-style-props-CZpdYA8m.es.js.map} +1 -1
  77. package/dist/chunks/{form-field-CH7MhZMM.es.js → form-field-B6PqLujT.es.js} +3 -3
  78. package/dist/chunks/{form-field-CH7MhZMM.es.js.map → form-field-B6PqLujT.es.js.map} +1 -1
  79. package/dist/chunks/{group-DDgNGiAB.es.js → group-BLPsc2Lf.es.js} +2 -2
  80. package/dist/chunks/{group-DDgNGiAB.es.js.map → group-BLPsc2Lf.es.js.map} +1 -1
  81. package/dist/chunks/{heading-DwvFL6nk.es.js → heading-14HwlWvH.es.js} +2 -2
  82. package/dist/chunks/{heading-DwvFL6nk.es.js.map → heading-14HwlWvH.es.js.map} +1 -1
  83. package/dist/chunks/{icon-button-CNauu_zf.es.js → icon-button-g4dZUH5O.es.js} +2 -2
  84. package/dist/chunks/{icon-button-CNauu_zf.es.js.map → icon-button-g4dZUH5O.es.js.map} +1 -1
  85. package/dist/chunks/{icon-toggle-button-D5ic1FhD.es.js → icon-toggle-button-DBGgxBWR.es.js} +2 -2
  86. package/dist/chunks/{icon-toggle-button-D5ic1FhD.es.js.map → icon-toggle-button-DBGgxBWR.es.js.map} +1 -1
  87. package/dist/chunks/{index-jNM4sRnI.es.js → index-CaeeOiBp.es.js} +3 -3
  88. package/dist/chunks/{index-jNM4sRnI.es.js.map → index-CaeeOiBp.es.js.map} +1 -1
  89. package/dist/chunks/{kbd-C6IVVksK.es.js → kbd-Cy3jFCSc.es.js} +2 -2
  90. package/dist/chunks/{kbd-C6IVVksK.es.js.map → kbd-Cy3jFCSc.es.js.map} +1 -1
  91. package/dist/chunks/loading-spinner-ByHGBHzt.es.js.map +1 -1
  92. package/dist/chunks/loading-spinner-DsKcjJ2b.cjs.js.map +1 -1
  93. package/dist/chunks/{localized-field-u03KZc2G.cjs.js → localized-field-BffTavHV.cjs.js} +2 -2
  94. package/dist/chunks/localized-field-BffTavHV.cjs.js.map +1 -0
  95. package/dist/chunks/{localized-field-D4HBEdq0.es.js → localized-field-CHV3AGQ-.es.js} +10 -10
  96. package/dist/chunks/localized-field-CHV3AGQ-.es.js.map +1 -0
  97. package/dist/chunks/{menu-CvowvbXh.es.js → menu-B5r0vnY6.es.js} +5 -5
  98. package/dist/chunks/{menu-CvowvbXh.es.js.map → menu-B5r0vnY6.es.js.map} +1 -1
  99. package/dist/chunks/{money-input-DHiEn7XA.es.js → money-input-Con6I5Ej.es.js} +7 -7
  100. package/dist/chunks/money-input-Con6I5Ej.es.js.map +1 -0
  101. package/dist/chunks/money-input-qNQdmjtx.cjs.js.map +1 -1
  102. package/dist/chunks/{multiline-text-input-BD_Pe10q.es.js → multiline-text-input-Cta4bg2-.es.js} +4 -4
  103. package/dist/chunks/{multiline-text-input-BD_Pe10q.es.js.map → multiline-text-input-Cta4bg2-.es.js.map} +1 -1
  104. package/dist/chunks/{nimbus-provider-DD5Om-MD.es.js → nimbus-provider-BtTUZMKb.es.js} +2 -2
  105. package/dist/chunks/{nimbus-provider-DD5Om-MD.es.js.map → nimbus-provider-BtTUZMKb.es.js.map} +1 -1
  106. package/dist/chunks/{number-input-DO5bD82a.es.js → number-input-BClKrTYK.es.js} +5 -5
  107. package/dist/chunks/{number-input-DO5bD82a.es.js.map → number-input-BClKrTYK.es.js.map} +1 -1
  108. package/dist/chunks/number-input-BUdRuDBZ.cjs.js.map +1 -1
  109. package/dist/chunks/pagination-BL1y2lAx.cjs.js +2 -0
  110. package/dist/chunks/pagination-BL1y2lAx.cjs.js.map +1 -0
  111. package/dist/chunks/pagination-BqjffQ1Z.es.js +210 -0
  112. package/dist/chunks/pagination-BqjffQ1Z.es.js.map +1 -0
  113. package/dist/chunks/{password-input-D4vhdbQW.es.js → password-input-DoWjkkoL.es.js} +4 -4
  114. package/dist/chunks/password-input-DoWjkkoL.es.js.map +1 -0
  115. package/dist/chunks/password-input-Dtu0_JiV.cjs.js.map +1 -1
  116. package/dist/chunks/{popover-qy-Vw0qP.es.js → popover-Dtxly24d.es.js} +2 -2
  117. package/dist/chunks/{popover-qy-Vw0qP.es.js.map → popover-Dtxly24d.es.js.map} +1 -1
  118. package/dist/chunks/{progress-bar-h8RUoyYt.es.js → progress-bar-oCdd2qvN.es.js} +4 -4
  119. package/dist/chunks/{progress-bar-h8RUoyYt.es.js.map → progress-bar-oCdd2qvN.es.js.map} +1 -1
  120. package/dist/chunks/{radio-input-qdrHc_fC.es.js → radio-input-eA3VvPwV.es.js} +5 -5
  121. package/dist/chunks/{radio-input-qdrHc_fC.es.js.map → radio-input-eA3VvPwV.es.js.map} +1 -1
  122. package/dist/chunks/range-calendar-BXMVhACe.cjs.js +2 -0
  123. package/dist/chunks/range-calendar-BXMVhACe.cjs.js.map +1 -0
  124. package/dist/chunks/range-calendar-BnB1F7_i.es.js +209 -0
  125. package/dist/chunks/range-calendar-BnB1F7_i.es.js.map +1 -0
  126. package/dist/chunks/rich-text-input-BebV_CaK.es.js +1200 -0
  127. package/dist/chunks/rich-text-input-BebV_CaK.es.js.map +1 -0
  128. package/dist/chunks/rich-text-input-D6WXRxiJ.cjs.js +10 -0
  129. package/dist/chunks/rich-text-input-D6WXRxiJ.cjs.js.map +1 -0
  130. package/dist/chunks/scoped-search-input-B5wDEKhF.es.js +143 -0
  131. package/dist/chunks/scoped-search-input-B5wDEKhF.es.js.map +1 -0
  132. package/dist/chunks/scoped-search-input-C3Vuxp-X.cjs.js +2 -0
  133. package/dist/chunks/scoped-search-input-C3Vuxp-X.cjs.js.map +1 -0
  134. package/dist/chunks/{search-input-CD_OQQwA.es.js → search-input-CmmBtmQf.es.js} +9 -9
  135. package/dist/chunks/{search-input-CD_OQQwA.es.js.map → search-input-CmmBtmQf.es.js.map} +1 -1
  136. package/dist/chunks/search-input-D4ISfjCg.cjs.js.map +1 -1
  137. package/dist/chunks/select-DLnPgZGL.cjs.js.map +1 -1
  138. package/dist/chunks/{select-Dny1auOH.es.js → select-DYkIoOqo.es.js} +10 -10
  139. package/dist/chunks/{select-Dny1auOH.es.js.map → select-DYkIoOqo.es.js.map} +1 -1
  140. package/dist/chunks/{separator-CCqidzEw.es.js → separator-D2824IwZ.es.js} +4 -4
  141. package/dist/chunks/{separator-CCqidzEw.es.js.map → separator-D2824IwZ.es.js.map} +1 -1
  142. package/dist/chunks/split-button-D4fKtZU6.cjs.js +2 -0
  143. package/dist/chunks/split-button-D4fKtZU6.cjs.js.map +1 -0
  144. package/dist/chunks/split-button-P5JM5TIs.es.js +106 -0
  145. package/dist/chunks/split-button-P5JM5TIs.es.js.map +1 -0
  146. package/dist/chunks/{switch-BRRuFpzu.es.js → switch-jX2Q8faO.es.js} +3 -3
  147. package/dist/chunks/{switch-BRRuFpzu.es.js.map → switch-jX2Q8faO.es.js.map} +1 -1
  148. package/dist/chunks/{tabs-BXoJTX6z.es.js → tabs-Bcs39h4J.es.js} +3 -3
  149. package/dist/chunks/{tabs-BXoJTX6z.es.js.map → tabs-Bcs39h4J.es.js.map} +1 -1
  150. package/dist/chunks/tag-group-Dx690E8r.cjs.js +2 -0
  151. package/dist/chunks/tag-group-Dx690E8r.cjs.js.map +1 -0
  152. package/dist/chunks/{tag-group-CDx2BCfu.es.js → tag-group-k_jEVQhv.es.js} +120 -110
  153. package/dist/chunks/tag-group-k_jEVQhv.es.js.map +1 -0
  154. package/dist/chunks/{text-BufUKCee.es.js → text-5xQLnEG4.es.js} +2 -2
  155. package/dist/chunks/{text-BufUKCee.es.js.map → text-5xQLnEG4.es.js.map} +1 -1
  156. package/dist/chunks/{text-input-CJNTJbW0.es.js → text-input-D8mfBGrA.es.js} +4 -4
  157. package/dist/chunks/{text-input-CJNTJbW0.es.js.map → text-input-D8mfBGrA.es.js.map} +1 -1
  158. package/dist/chunks/{time-input-CHA4irr4.es.js → time-input-9W94XJTY.es.js} +4 -4
  159. package/dist/chunks/{time-input-CHA4irr4.es.js.map → time-input-9W94XJTY.es.js.map} +1 -1
  160. package/dist/chunks/{toggle-button-C_WSvD7l.es.js → toggle-button-D1v2OtiG.es.js} +4 -4
  161. package/dist/chunks/{toggle-button-C_WSvD7l.es.js.map → toggle-button-D1v2OtiG.es.js.map} +1 -1
  162. package/dist/chunks/{toggle-button-group-CF1NxUIC.es.js → toggle-button-group-Bla1fe1z.es.js} +2 -2
  163. package/dist/chunks/{toggle-button-group-CF1NxUIC.es.js.map → toggle-button-group-Bla1fe1z.es.js.map} +1 -1
  164. package/dist/chunks/{toolbar-CdR1MLqf.es.js → toolbar-DpBQgamV.es.js} +4 -4
  165. package/dist/chunks/{toolbar-CdR1MLqf.es.js.map → toolbar-DpBQgamV.es.js.map} +1 -1
  166. package/dist/chunks/{tooltip-B6mt46EB.es.js → tooltip-BX45xCJd.es.js} +2 -2
  167. package/dist/chunks/{tooltip-B6mt46EB.es.js.map → tooltip-BX45xCJd.es.js.map} +1 -1
  168. package/dist/chunks/{useDateFormatter-BqUHVksS.es.js → useDateFormatter-DOSckBIG.es.js} +6 -6
  169. package/dist/chunks/{useDateFormatter-BqUHVksS.es.js.map → useDateFormatter-DOSckBIG.es.js.map} +1 -1
  170. package/dist/chunks/{useGridListItem-Cr6HZ3kJ.es.js → useGridListItem-Th8ivSlM.es.js} +2 -2
  171. package/dist/chunks/{useGridListItem-Cr6HZ3kJ.es.js.map → useGridListItem-Th8ivSlM.es.js.map} +1 -1
  172. package/dist/chunks/{utils-DF3YB901.es.js → utils-DDFsiM-7.es.js} +3 -3
  173. package/dist/chunks/{utils-DF3YB901.es.js.map → utils-DDFsiM-7.es.js.map} +1 -1
  174. package/dist/components/accordion.es.js +1 -1
  175. package/dist/components/alert.es.js +1 -1
  176. package/dist/components/avatar/avatar.i18n.d.ts +7 -0
  177. package/dist/components/avatar.cjs +1 -1
  178. package/dist/components/avatar.es.js +1 -1
  179. package/dist/components/button.es.js +1 -1
  180. package/dist/components/calendar/calendar.i18n.d.ts +22 -0
  181. package/dist/components/calendar.cjs +1 -1
  182. package/dist/components/calendar.es.js +1 -1
  183. package/dist/components/checkbox.es.js +1 -1
  184. package/dist/components/collapsible-motion.es.js +1 -1
  185. package/dist/components/combobox/combobox.i18n.d.ts +32 -0
  186. package/dist/components/combobox.cjs +1 -1
  187. package/dist/components/combobox.es.js +1 -1
  188. package/dist/components/components.es.js +1 -1
  189. package/dist/components/data-table/data-table.i18n.d.ts +37 -0
  190. package/dist/components/data-table.cjs +1 -1
  191. package/dist/components/data-table.es.js +1 -1
  192. package/dist/components/date-input.es.js +1 -1
  193. package/dist/components/date-picker/date-picker.i18n.d.ts +1 -2
  194. package/dist/components/date-picker.cjs +1 -1
  195. package/dist/components/date-picker.es.js +1 -1
  196. package/dist/components/date-range-picker/date-range-picker.i18n.d.ts +67 -0
  197. package/dist/components/date-range-picker.cjs +1 -1
  198. package/dist/components/date-range-picker.es.js +1 -1
  199. package/dist/components/dialog.es.js +1 -1
  200. package/dist/components/draggable-list.es.js +1 -1
  201. package/dist/components/drawer.es.js +1 -1
  202. package/dist/components/form-field.es.js +1 -1
  203. package/dist/components/group.es.js +1 -1
  204. package/dist/components/heading.es.js +1 -1
  205. package/dist/components/icon-button.es.js +1 -1
  206. package/dist/components/icon-toggle-button.es.js +1 -1
  207. package/dist/components/kbd.es.js +1 -1
  208. package/dist/components/loading-spinner/loading-spinner.i18n.d.ts +1 -2
  209. package/dist/components/localized-field/localized-field.i18n.d.ts +1 -2
  210. package/dist/components/localized-field.cjs +1 -1
  211. package/dist/components/localized-field.es.js +1 -1
  212. package/dist/components/money-input/money-input.i18n.d.ts +1 -2
  213. package/dist/components/money-input.es.js +1 -1
  214. package/dist/components/multiline-text-input.es.js +1 -1
  215. package/dist/components/nimbus-provider.es.js +1 -1
  216. package/dist/components/number-input/number-input.i18n.d.ts +1 -2
  217. package/dist/components/number-input.es.js +1 -1
  218. package/dist/components/pagination/pagination.i18n.d.ts +42 -0
  219. package/dist/components/pagination.cjs +1 -1
  220. package/dist/components/pagination.es.js +1 -1
  221. package/dist/components/password-input/password-input.i18n.d.ts +1 -2
  222. package/dist/components/password-input.es.js +1 -1
  223. package/dist/components/popover.es.js +1 -1
  224. package/dist/components/progress-bar.es.js +1 -1
  225. package/dist/components/radio-input.es.js +1 -1
  226. package/dist/components/range-calendar/range-calendar.i18n.d.ts +22 -0
  227. package/dist/components/range-calendar.cjs +1 -1
  228. package/dist/components/range-calendar.es.js +1 -1
  229. package/dist/components/rich-text-input/constants/text-styles.d.ts +6 -1
  230. package/dist/components/rich-text-input/hooks/use-toolbar-state.d.ts +4 -2
  231. package/dist/components/rich-text-input/rich-text-input.i18n.d.ts +122 -0
  232. package/dist/components/rich-text-input/utils/index.d.ts +0 -1
  233. package/dist/components/rich-text-input.cjs +1 -1
  234. package/dist/components/rich-text-input.es.js +1 -1
  235. package/dist/components/scoped-search-input/scoped-search-input.i18n.d.ts +1 -12
  236. package/dist/components/scoped-search-input.cjs +1 -1
  237. package/dist/components/scoped-search-input.es.js +1 -1
  238. package/dist/components/search-input/search-input.i18n.d.ts +1 -2
  239. package/dist/components/search-input.es.js +1 -1
  240. package/dist/components/select/select.i18n.d.ts +1 -2
  241. package/dist/components/select.es.js +1 -1
  242. package/dist/components/separator.es.js +1 -1
  243. package/dist/components/split-button/split-button.i18n.d.ts +7 -0
  244. package/dist/components/split-button.cjs +1 -1
  245. package/dist/components/split-button.es.js +1 -1
  246. package/dist/components/switch.es.js +1 -1
  247. package/dist/components/tabs.es.js +1 -1
  248. package/dist/components/tag-group/tag-group.i18n.d.ts +7 -0
  249. package/dist/components/tag-group.cjs +1 -1
  250. package/dist/components/tag-group.es.js +1 -1
  251. package/dist/components/text-input.es.js +1 -1
  252. package/dist/components/text.es.js +1 -1
  253. package/dist/components/time-input.es.js +1 -1
  254. package/dist/components/toggle-button-group.es.js +1 -1
  255. package/dist/components/toggle-button.es.js +1 -1
  256. package/dist/components/toolbar.es.js +1 -1
  257. package/dist/components/tooltip.es.js +1 -1
  258. package/dist/index.cjs +1 -1
  259. package/dist/index.es.js +51 -51
  260. package/package.json +5 -5
  261. package/dist/chunks/avatar-BGM-BDJa.cjs.js +0 -2
  262. package/dist/chunks/avatar-BGM-BDJa.cjs.js.map +0 -1
  263. package/dist/chunks/avatar-CTiSGVoD.es.js +0 -40
  264. package/dist/chunks/avatar-CTiSGVoD.es.js.map +0 -1
  265. package/dist/chunks/calendar-57M9FKqt.cjs.js +0 -2
  266. package/dist/chunks/calendar-57M9FKqt.cjs.js.map +0 -1
  267. package/dist/chunks/calendar-Kwoe0bYZ.es.js +0 -187
  268. package/dist/chunks/calendar-Kwoe0bYZ.es.js.map +0 -1
  269. package/dist/chunks/combobox-0cCAwg3W.es.js.map +0 -1
  270. package/dist/chunks/combobox-CKozWtj7.cjs.js +0 -2
  271. package/dist/chunks/combobox-CKozWtj7.cjs.js.map +0 -1
  272. package/dist/chunks/data-table-BxITOPnx.es.js.map +0 -1
  273. package/dist/chunks/data-table-Depm8_y5.cjs.js +0 -2
  274. package/dist/chunks/data-table-Depm8_y5.cjs.js.map +0 -1
  275. package/dist/chunks/date-picker-Dk3QgvCN.cjs.js.map +0 -1
  276. package/dist/chunks/date-picker-FvaPPqXZ.es.js.map +0 -1
  277. package/dist/chunks/date-range-picker-CMWsBL9j.cjs.js +0 -2
  278. package/dist/chunks/date-range-picker-CMWsBL9j.cjs.js.map +0 -1
  279. package/dist/chunks/date-range-picker-vH5DixcB.es.js +0 -281
  280. package/dist/chunks/date-range-picker-vH5DixcB.es.js.map +0 -1
  281. package/dist/chunks/localized-field-D4HBEdq0.es.js.map +0 -1
  282. package/dist/chunks/localized-field-u03KZc2G.cjs.js.map +0 -1
  283. package/dist/chunks/money-input-DHiEn7XA.es.js.map +0 -1
  284. package/dist/chunks/pagination-CjUoltTe.es.js +0 -160
  285. package/dist/chunks/pagination-CjUoltTe.es.js.map +0 -1
  286. package/dist/chunks/pagination-CnPACrJ5.cjs.js +0 -2
  287. package/dist/chunks/pagination-CnPACrJ5.cjs.js.map +0 -1
  288. package/dist/chunks/password-input-D4vhdbQW.es.js.map +0 -1
  289. package/dist/chunks/range-calendar-BjuErXNK.es.js +0 -187
  290. package/dist/chunks/range-calendar-BjuErXNK.es.js.map +0 -1
  291. package/dist/chunks/range-calendar-Cjqu4SXg.cjs.js +0 -2
  292. package/dist/chunks/range-calendar-Cjqu4SXg.cjs.js.map +0 -1
  293. package/dist/chunks/rich-text-input-B41QcSHY.cjs.js +0 -10
  294. package/dist/chunks/rich-text-input-B41QcSHY.cjs.js.map +0 -1
  295. package/dist/chunks/rich-text-input-BGVyDm30.es.js +0 -1074
  296. package/dist/chunks/rich-text-input-BGVyDm30.es.js.map +0 -1
  297. package/dist/chunks/scoped-search-input-CO9xtMOE.es.js +0 -153
  298. package/dist/chunks/scoped-search-input-CO9xtMOE.es.js.map +0 -1
  299. package/dist/chunks/scoped-search-input-COM1I724.cjs.js +0 -2
  300. package/dist/chunks/scoped-search-input-COM1I724.cjs.js.map +0 -1
  301. package/dist/chunks/split-button-C8BsVNhR.cjs.js +0 -2
  302. package/dist/chunks/split-button-C8BsVNhR.cjs.js.map +0 -1
  303. package/dist/chunks/split-button-YwopMYuE.es.js +0 -100
  304. package/dist/chunks/split-button-YwopMYuE.es.js.map +0 -1
  305. package/dist/chunks/tag-group-Beqgbttp.cjs.js +0 -2
  306. package/dist/chunks/tag-group-Beqgbttp.cjs.js.map +0 -1
  307. package/dist/chunks/tag-group-CDx2BCfu.es.js.map +0 -1
  308. package/dist/components/rich-text-input/utils/text-style-utils.d.ts +0 -33
@@ -1 +0,0 @@
1
- {"version":3,"file":"localized-field-D4HBEdq0.es.js","sources":["../../src/components/localized-field/localized-field.i18n.ts","../../src/components/localized-field/localized-field.slots.tsx","../../src/components/localized-field/utils/localized-field.utils.tsx","../../src/components/localized-field/components/localized-field.locale-field.tsx","../../src/components/localized-field/components/localized-field.root.tsx","../../src/components/localized-field/localized-field.tsx"],"sourcesContent":["import { defineMessages } from \"react-intl\";\n\nexport default defineMessages({\n missingRequiredField: {\n id: \"Nimbus.LocalizedField.missingRequiredField\",\n description: \"Error message for missing required value\",\n defaultMessage: \"This field is required. Provide at least one value.\",\n },\n infoBoxTriggerAriaLabel: {\n id: \"Nimbus.LocalizedField.infoBoxTriggerAriaLabel\",\n description: \"aria label for button that triggers more info dialog\",\n defaultMessage: \"more info\",\n },\n showLanguages: {\n id: \"Nimbus.LocalizedField.showLanguages\",\n description:\n \"Label for showing all language inputs when toggle button is pressed\",\n defaultMessage: \"Show all languages\",\n },\n hideLanguages: {\n id: \"Nimbus.LocalizedField.hideLanguages\",\n description:\n \"Label for hiding all language inputs when toggle button is pressed\",\n defaultMessage: \"Hide all languages\",\n },\n showCurrencies: {\n id: \"Nimbus.LocalizedField.showCurrencies\",\n description:\n \"Label for showing all currency inputs when toggle button is pressed\",\n defaultMessage: \"Show all currencies\",\n },\n hideCurrencies: {\n id: \"Nimbus.LocalizedField.hideCurrencies\",\n description:\n \"Label for hiding all currency inputs when toggle button is pressed\",\n defaultMessage: \"Hide all currencies\",\n },\n});\n","import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport type {\n LocalizedFieldRootSlotProps,\n LocalizedFieldLabelSlotProps,\n LocalizedFieldInfoDialogSlotProps,\n LocalizedFieldFieldsContainerSlotProps,\n LocalizedFieldDescriptionSlotProps,\n LocalizedFieldErrorSlotProps,\n LocalizedFieldToggleButtonContainerSlotProps,\n LocalizedFieldLocaleFieldRootSlotProps,\n LocalizedFieldLocaleFieldLabelSlotProps,\n LocalizedFieldLocaleFieldInputSlotProps,\n} from \"./localized-field.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"localizedField\",\n});\n\n// Root Slot\nexport const LocalizedFieldRootSlot = withProvider<\n HTMLFieldSetElement,\n LocalizedFieldRootSlotProps\n>(\"fieldset\", \"root\");\n\n// Label Slot\nexport const LocalizedFieldLabelSlot = withContext<\n HTMLLabelElement,\n LocalizedFieldLabelSlotProps\n>(\"legend\", \"label\");\n\n// InfoDialog Slot\nexport const LocalizedFieldInfoDialogSlot = withContext<\n HTMLDivElement,\n LocalizedFieldInfoDialogSlotProps\n>(\"div\", \"infoDialog\");\n\n// FieldsContainer Slot\nexport const LocalizedFieldFieldsContainerSlot = withContext<\n HTMLDivElement,\n LocalizedFieldFieldsContainerSlotProps\n>(\"div\", \"fieldsContainer\");\n\n// Description Slot\nexport const LocalizedFieldDescriptionSlot = withContext<\n HTMLDivElement,\n LocalizedFieldDescriptionSlotProps\n>(\"div\", \"description\");\n\n// Error Slot\nexport const LocalizedFieldErrorSlot = withContext<\n HTMLDivElement,\n LocalizedFieldErrorSlotProps\n>(\"div\", \"error\");\n\n// ToggleButtonContainer Slot\nexport const LocalizedFieldToggleButtonContainerSlot = withContext<\n HTMLDivElement,\n LocalizedFieldToggleButtonContainerSlotProps\n>(\"div\", \"toggleButtonContainer\");\n\n// LocaleFieldRoot Slot\nexport const LocalizedFieldLocaleFieldRootSlot = withContext<\n HTMLDivElement,\n LocalizedFieldLocaleFieldRootSlotProps\n>(\"div\", \"localeFieldRoot\");\n\n// FieldLabel Slot\nexport const LocalizedFieldLocaleFieldLabelSlot = withContext<\n HTMLDivElement,\n LocalizedFieldLocaleFieldLabelSlotProps\n>(\"div\", \"localeFieldLabel\");\n\n// FieldInput Slot\nexport const LocalizedFieldLocaleFieldInputSlot = withContext<\n HTMLDivElement,\n LocalizedFieldLocaleFieldInputSlotProps\n>(\"div\", \"localeFieldInput\");\n","import { FormattedMessage } from \"react-intl\";\nimport {\n FormField,\n type CurrencyCode,\n type MoneyInputValue,\n type MoneyValue,\n type TFieldErrors,\n MoneyInput,\n} from \"@/components\";\nimport messages from \"../localized-field.i18n\";\nimport type { LocalizedString } from \"../localized-field.types\";\n\ntype LanguagesSplitByDefaultLocale = {\n related: string[];\n unrelated: string[];\n};\n\ntype TouchedLocalizedString = { [locale: string]: boolean };\n\ntype CustomFormikErrors<Values> = {\n [K in keyof Values]?: TFieldErrors;\n};\n\nexport const RequiredValueErrorMessage = () => (\n <FormField.Error>\n <FormattedMessage {...messages.missingRequiredField} />\n </FormField.Error>\n);\n\nexport const getLocaleFieldAttribute = (\n fieldGroupAttr?: string,\n locale?: string\n): string | undefined =>\n fieldGroupAttr && locale ? `${fieldGroupAttr}.${locale}` : undefined;\n\n// gets the language tag of a given locale, e.g. `de` in `de-DE`\nexport const getLanguageForLocale = (locale: string): string =>\n locale.split(\"-\")[0];\n\n// splits the locales into two groups:\n// - the 'related' array contains locales with the same language tag as the default locale,\n// e.g. if the default locale is de-DE, related would be ['de-DE', 'de-CH']\n// - the 'unrelated' array contains locales with a different different language tag from the default locale\n//. e.g. if the default locale is de-DE, unrelated would be ['pt-BR', 'en-GB', 'zh-Hans']\nexport const splitLanguages = (\n defaultLocale: string,\n locales: string[]\n): LanguagesSplitByDefaultLocale => {\n const defaultLanguage = getLanguageForLocale(defaultLocale);\n const related = locales.filter(\n (locale) => getLanguageForLocale(locale) === defaultLanguage\n );\n const unrelated = locales.filter(\n (locale) => getLanguageForLocale(locale) !== defaultLanguage\n );\n return {\n unrelated,\n related,\n };\n};\n\n// sorts locales with the following priority:\n// - The selected locale is placed first (e.g pt-BR)\n// - All locales using the same language tag as the selected language\n// follow (e.g. pt, pt-PT). They are sorted alphabetically.\n// - All other locales follow, sorted alphabetically as well\nexport const sortLocalesByDefaultLocaleLanguage = (\n defaultLocale: string,\n allLocales: string[]\n): string[] => {\n const { related, unrelated } = splitLanguages(\n defaultLocale,\n allLocales.filter((locale: string) => locale !== defaultLocale)\n );\n\n return [defaultLocale, ...related.sort(), ...unrelated.sort()];\n};\n\nexport const sortCurrencies = (\n defaultCurrency: CurrencyCode,\n allCurrencies: CurrencyCode[]\n) => {\n const remainingCurrencies = allCurrencies.filter(\n (currency) => currency !== defaultCurrency\n );\n return [defaultCurrency, ...remainingCurrencies.sort()];\n};\n\nexport const getHasInvalidLocalizedFields = <TErrors extends object>(\n errors?: TErrors,\n defaultLocaleOrCurrency?: string\n): boolean => {\n if (errors && Object.keys(errors).length > 0 && defaultLocaleOrCurrency) {\n return Object.keys(errors).some(\n (localeOrCurrency) => localeOrCurrency !== defaultLocaleOrCurrency\n );\n }\n return false;\n};\n\nexport const createLocalizedString = (\n locales: string[],\n existingLocalizedString: LocalizedString\n): LocalizedString => {\n const localesInLocalizedString = Array.from(\n new Set([...locales, ...Object.keys(existingLocalizedString)])\n );\n\n return localesInLocalizedString.reduce<LocalizedString>(\n (localizedString, locale) => ({\n ...localizedString,\n [locale]: existingLocalizedString?.[locale] || \"\",\n }),\n {}\n );\n};\n\n// Note: I prefer `isLocalizedStringEmpty`, but keeping this as `isEmpty` for api consistency with UI Kit\nexport const isEmpty = (localizedString?: LocalizedString): boolean => {\n if (!localizedString) return true;\n return Object.values(localizedString).every(\n (value?: string) => !value || value?.trim().length === 0\n );\n};\n\nexport const omitEmptyTranslations = <Translations extends LocalizedString>(\n localizedString: Translations\n): LocalizedString => {\n // TODO: is it necessary to create a util that enforces a consistent warning/error format, e.g.\n // `<COMPONENT_NAME> - Warning: <WARNING_MESSAGE>`\n if (typeof localizedString !== \"object\") {\n console.warn(\n \"Nimbus Localized Field - Warning: omitEmptyTranslations must be called with an object\"\n );\n }\n\n return Object.entries(localizedString).reduce<LocalizedString>(\n (localizedStringWithoutEmptyTranslations, [locale, value]) => {\n if (value && value.trim().length > 0) {\n return {\n ...localizedStringWithoutEmptyTranslations,\n [locale]: value,\n };\n }\n return localizedStringWithoutEmptyTranslations;\n },\n {}\n );\n};\n\nexport const isTouched = (touched?: TouchedLocalizedString): boolean => {\n if (touched) {\n return Object.values(touched).some(Boolean);\n }\n return false;\n};\n\n/**\n * Use this function to convert the Formik `errors` object type to\n * our custom field errors type.\n * This is primarly useful when using TypeScript.\n */\nexport function toFieldErrors<FormValues>(\n errors: unknown\n): CustomFormikErrors<FormValues> {\n return errors as CustomFormikErrors<FormValues>;\n}\n\nexport const convertToMoneyValues = (\n values: MoneyInputValue[],\n currency: string\n): Array<MoneyValue | null> =>\n Object.values(values).map<MoneyValue | null>((value) => {\n return MoneyInput.convertToMoneyValue(value, currency);\n });\n\nexport const parseMoneyValues = (\n moneyValues: MoneyValue[] = [],\n locale: string\n): Record<CurrencyCode, MoneyInputValue> =>\n moneyValues.reduce<Record<CurrencyCode, MoneyInputValue>>(\n (allValues, moneyValue) => {\n const value = MoneyInput.parseMoneyValue(moneyValue, locale);\n return {\n ...allValues,\n [value.currencyCode]: value,\n };\n },\n {} as Record<CurrencyCode, MoneyInputValue>\n );\n\nexport const getHighPrecisionCurrencies = (\n values: Record<CurrencyCode, MoneyInputValue>,\n locale: string\n): CurrencyCode[] => {\n const typedCurrencyCodes = Object.keys(values) as CurrencyCode[];\n return typedCurrencyCodes.filter((currencyCode) =>\n MoneyInput.isHighPrecision(values[currencyCode], locale)\n );\n};\n\nexport const getEmptyCurrencies = (\n values: Record<CurrencyCode, MoneyInputValue>\n): CurrencyCode[] => {\n const typedCurrencyCodes = Object.keys(values) as CurrencyCode[];\n return typedCurrencyCodes.filter((currencyCode) =>\n MoneyInput.isEmpty(values[currencyCode])\n );\n};\n","import { useCallback } from \"react\";\nimport {\n FormField,\n Icon,\n TextInput,\n MoneyInput,\n type CustomEvent,\n MultilineTextInput,\n RichTextInput,\n type MoneyInputValue,\n type CurrencyCode,\n} from \"@/components\";\nimport { WarningAmber } from \"@commercetools/nimbus-icons\";\nimport {\n LocalizedFieldLocaleFieldRootSlot,\n LocalizedFieldLocaleFieldInputSlot,\n LocalizedFieldLocaleFieldLabelSlot,\n} from \"../localized-field.slots\";\nimport type { LocalizedFieldLocaleFieldProps } from \"../localized-field.types\";\n\nexport const LocalizedFieldLocaleField = ({\n type,\n size,\n localeOrCurrency,\n id,\n name,\n inputValue: inputValueFromProps,\n description,\n warning,\n error,\n onChange,\n onBlur,\n onFocus,\n isRequired,\n isReadOnly,\n isDisabled,\n isInvalid,\n touched,\n ...otherProps\n}: LocalizedFieldLocaleFieldProps) => {\n let InputComponent:\n | typeof TextInput\n | typeof MultilineTextInput\n | typeof MoneyInput\n | typeof RichTextInput;\n switch (type) {\n case \"text\":\n default:\n InputComponent = TextInput;\n break;\n case \"multiLine\":\n InputComponent = MultilineTextInput;\n break;\n case \"money\":\n InputComponent = MoneyInput;\n break;\n case \"richText\":\n InputComponent = RichTextInput;\n break;\n }\n\n const getInputValue = () => {\n if (type === \"money\") {\n return inputValueFromProps\n ? (inputValueFromProps as MoneyInputValue)\n : ({ amount: \"\", currencyCode: localeOrCurrency } as MoneyInputValue);\n }\n return inputValueFromProps ? inputValueFromProps : \"\";\n };\n\n const inputValue = getInputValue();\n\n const handleChange = useCallback(\n (value: string | CustomEvent | undefined) => {\n // The `MoneyInput` onChange event value is a custom value,\n // and the `MoneyInput` modifies the input id and name since it is in a `group`,\n // so we need to build a separate return object for the MoneInput to return\n // the expected values\n const isMoneyInputEvent = typeof value === \"object\";\n const changeValue = {\n target: isMoneyInputEvent\n ? {\n id: value.target.id,\n name: value.target.name,\n locale: undefined,\n currency: localeOrCurrency as CurrencyCode,\n value: value.target.value,\n }\n : { id, name, locale: localeOrCurrency, currency: undefined, value },\n };\n onChange(changeValue);\n },\n [id, name, localeOrCurrency, onChange]\n );\n\n return (\n <LocalizedFieldLocaleFieldRootSlot asChild>\n <FormField.Root\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={(isInvalid || !!error) && touched}\n direction=\"row\"\n size={size}\n id={id}\n >\n <LocalizedFieldLocaleFieldLabelSlot\n display={type === \"money\" ? \"none\" : undefined}\n {...(isDisabled && { \"data-disabled\": isDisabled })}\n asChild\n >\n <FormField.Label>\n {localeOrCurrency.toLocaleUpperCase()}\n </FormField.Label>\n </LocalizedFieldLocaleFieldLabelSlot>\n <FormField.Input>\n <LocalizedFieldLocaleFieldInputSlot\n aria-required={isRequired}\n asChild\n >\n <InputComponent\n {...otherProps}\n size={size}\n value={inputValue as string & MoneyInputValue}\n onChange={handleChange}\n onBlur={(e: React.FocusEvent | CustomEvent) =>\n onBlur?.(e, localeOrCurrency)\n }\n onFocus={(e: React.FocusEvent | CustomEvent) =>\n onFocus?.(e, localeOrCurrency)\n }\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={(isInvalid || !!error) && touched}\n />\n </LocalizedFieldLocaleFieldInputSlot>\n </FormField.Input>\n {(description || (warning && touched)) && (\n <FormField.Description\n role={warning && touched ? \"status\" : undefined}\n color={warning && touched ? \"warning.11\" : undefined}\n display=\"flex\"\n gap=\"100\"\n alignItems=\"center\"\n >\n {warning && touched ? (\n <>\n <Icon colorPalette=\"warning\">\n <WarningAmber />\n </Icon>\n {warning}\n </>\n ) : (\n description\n )}\n </FormField.Description>\n )}\n {error && touched && <FormField.Error>{error}</FormField.Error>}\n </FormField.Root>\n </LocalizedFieldLocaleFieldRootSlot>\n );\n};\n","import { useState, useMemo } from \"react\";\nimport { useIntl } from \"react-intl\";\nimport {\n Collection as RaCollection,\n Dialog as RaDialog,\n DialogTrigger as RaDialogTrigger,\n} from \"react-aria-components\";\nimport { useField, useId } from \"react-aria\";\nimport {\n ErrorOutline,\n HelpOutline,\n Language,\n Payments,\n WarningAmber,\n} from \"@commercetools/nimbus-icons\";\nimport {\n Box,\n Button,\n FieldErrors,\n Icon,\n IconButton,\n Stack,\n type CurrencyCode,\n} from \"@/components\";\nimport { Popover } from \"../../popover\";\nimport messages from \"../localized-field.i18n\";\nimport {\n LocalizedFieldRootSlot,\n LocalizedFieldLabelSlot,\n LocalizedFieldInfoDialogSlot,\n LocalizedFieldFieldsContainerSlot,\n LocalizedFieldDescriptionSlot,\n LocalizedFieldErrorSlot,\n LocalizedFieldToggleButtonContainerSlot,\n} from \"../localized-field.slots\";\nimport type {\n LocalizedFieldProps,\n MergedLocaleFieldData,\n LocalizedCurrency,\n} from \"../localized-field.types\";\n\nimport {\n getHasInvalidLocalizedFields,\n getLocaleFieldAttribute,\n sortCurrencies,\n sortLocalesByDefaultLocaleLanguage,\n} from \"../utils/localized-field.utils\";\nimport { LocalizedFieldLocaleField } from \"./localized-field.locale-field\";\n\nexport const LocalizedField = ({\n type = \"text\",\n id,\n name,\n defaultLocaleOrCurrency,\n valuesByLocaleOrCurrency,\n placeholdersByLocaleOrCurrency,\n descriptionsByLocaleOrCurrency,\n warningsByLocaleOrCurrency,\n errorsByLocaleOrCurrency,\n label,\n hint,\n description,\n warning,\n warnings,\n renderWarning,\n error,\n errors,\n renderError,\n touched,\n isRequired,\n isDisabled,\n isReadOnly,\n onChange,\n onBlur,\n onFocus,\n defaultExpanded = false,\n displayAllLocalesOrCurrencies = false,\n size,\n autoFocus,\n [\"data-track-component\"]: dataTrackComponent,\n [\"data-testid\"]: dataTestId,\n [\"data-test\"]: dataTest,\n // DOM & Style props for wrapper container\n ...rest\n}: LocalizedFieldProps) => {\n const [expanded, setExpanded] = useState(\n displayAllLocalesOrCurrencies || defaultExpanded\n );\n\n const { formatMessage } = useIntl();\n\n // Used to associate more info dialog with fieldset via `aria-controls`\n const localeFieldsContainerId = useId();\n // Used to associate more info dialog with fieldset via `aria-details`\n const moreDetailsButtonId = useId();\n\n // Either `error` exists, or there are `true` fields in the UI Kit compat `errors` object\n const hasError: boolean = Boolean(\n error || (errors && Object.values(errors).some((error) => error === true))\n );\n\n // Either `warning` exists, or there are `true` fields in the UI Kit compat `warnings` object\n const hasWarning: boolean = Boolean(\n warning || (warnings && Object.values(warnings).some(Boolean))\n );\n\n // FieldGroup is invalid if a non-field-specific error is passed and the group has been touched\n // When FieldGroup is invalid, all fields will display error styling without displaying a field-specific error message\n const isInvalid: boolean = !!(hasError && touched);\n\n const { labelProps, fieldProps, descriptionProps, errorMessageProps } =\n useField({\n id,\n label,\n description,\n errorMessage: error,\n isInvalid,\n });\n\n // Array of locales/currencies to display as input fields\n const localizationKeys: string[] | CurrencyCode[] = Object.keys(\n valuesByLocaleOrCurrency\n );\n\n // Merge all -ByLocaleOrCurrencies data for each field\n const allDataForFields = useMemo(() => {\n const sortedFieldData =\n type === \"money\"\n ? sortCurrencies(\n defaultLocaleOrCurrency as CurrencyCode,\n localizationKeys as CurrencyCode[]\n )\n : sortLocalesByDefaultLocaleLanguage(\n defaultLocaleOrCurrency,\n localizationKeys\n );\n\n return sortedFieldData.reduce(\n (allFieldData: MergedLocaleFieldData[], localizationKey) => {\n const allDataForLocale = {\n localeOrCurrency: localizationKey,\n inputValue:\n type === \"money\"\n ? (valuesByLocaleOrCurrency as LocalizedCurrency)[localizationKey]\n : (valuesByLocaleOrCurrency[localizationKey] as string),\n placeholder: placeholdersByLocaleOrCurrency?.[localizationKey],\n description: descriptionsByLocaleOrCurrency?.[localizationKey],\n warning: warningsByLocaleOrCurrency?.[localizationKey],\n error: errorsByLocaleOrCurrency?.[localizationKey],\n // autoFocus default/first locale field\n ...(localizationKey === defaultLocaleOrCurrency && autoFocus\n ? { autoFocus }\n : {}),\n isInvalid,\n isRequired,\n isDisabled,\n isReadOnly,\n };\n if (\n expanded ||\n // Only display defaultLocaleOrInput field if fieldGroup is not expanded\n (!expanded && localizationKey === defaultLocaleOrCurrency)\n ) {\n return [...allFieldData, allDataForLocale];\n }\n return allFieldData;\n },\n []\n );\n }, [\n valuesByLocaleOrCurrency,\n placeholdersByLocaleOrCurrency,\n descriptionsByLocaleOrCurrency,\n warningsByLocaleOrCurrency,\n errorsByLocaleOrCurrency,\n defaultLocaleOrCurrency,\n expanded,\n isInvalid,\n isRequired,\n isDisabled,\n isReadOnly,\n ]);\n\n const groupHasInvalidLocalizedFields = getHasInvalidLocalizedFields(\n errorsByLocaleOrCurrency,\n defaultLocaleOrCurrency\n );\n\n const shouldExpandInvalidFields =\n (groupHasInvalidLocalizedFields || hasError) && touched;\n // If there are fields that are invalid, ensure that field group\n // shows all fields so that invalid field is visible\n if (shouldExpandInvalidFields && !expanded) {\n setExpanded(true);\n }\n\n return (\n <LocalizedFieldRootSlot\n {...rest}\n {...fieldProps}\n aria-details={hint ? moreDetailsButtonId : undefined}\n type={type}\n size={size}\n name={name}\n >\n {label && (\n <Stack direction=\"row\" gap=\"0\">\n <LocalizedFieldLabelSlot {...labelProps}>\n {label}\n {isRequired && <sup aria-hidden=\"true\">*</sup>}\n </LocalizedFieldLabelSlot>\n {hint && (\n <RaDialogTrigger>\n <IconButton\n id={moreDetailsButtonId}\n aria-label={formatMessage(messages.infoBoxTriggerAriaLabel)}\n size=\"2xs\"\n tone=\"info\"\n variant=\"link\"\n >\n <HelpOutline />\n </IconButton>\n\n <Popover padding={0}>\n <LocalizedFieldInfoDialogSlot asChild>\n <RaDialog>\n <Box p=\"300\">{hint}</Box>\n </RaDialog>\n </LocalizedFieldInfoDialogSlot>\n </Popover>\n </RaDialogTrigger>\n )}\n </Stack>\n )}\n <LocalizedFieldFieldsContainerSlot\n id={localeFieldsContainerId}\n data-expanded={expanded}\n >\n <RaCollection items={allDataForFields}>\n {(item) => {\n return (\n <LocalizedFieldLocaleField\n {...item}\n size={size}\n type={type}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n touched={touched}\n // Format field attributes to match uikit pattern\n id={getLocaleFieldAttribute(\n fieldProps.id,\n item.localeOrCurrency\n )}\n name={getLocaleFieldAttribute(name, item.localeOrCurrency)}\n data-test={getLocaleFieldAttribute(\n dataTest,\n item.localeOrCurrency\n )}\n data-testid={getLocaleFieldAttribute(\n dataTestId,\n item.localeOrCurrency\n )}\n data-track-component={getLocaleFieldAttribute(\n dataTrackComponent,\n item.localeOrCurrency\n )}\n />\n );\n }}\n </RaCollection>\n </LocalizedFieldFieldsContainerSlot>\n\n {!displayAllLocalesOrCurrencies && localizationKeys.length > 1 && (\n <LocalizedFieldToggleButtonContainerSlot>\n <Button\n aria-controls={localeFieldsContainerId}\n aria-describedby={labelProps.id}\n aria-expanded={expanded}\n onPress={() => setExpanded(!expanded)}\n isDisabled={isDisabled || (shouldExpandInvalidFields && expanded)}\n variant=\"ghost\"\n size=\"2xs\"\n colorPalette=\"primary\"\n >\n <Box\n as={type === \"money\" ? Payments : Language}\n display=\"inline-flex\"\n boxSize=\"400\"\n verticalAlign=\"text-bottom\"\n mr=\"100\"\n />\n {type === \"money\"\n ? expanded\n ? formatMessage(messages.hideCurrencies)\n : formatMessage(messages.showCurrencies)\n : expanded\n ? formatMessage(messages.hideLanguages)\n : formatMessage(messages.showLanguages)}\n </Button>\n </LocalizedFieldToggleButtonContainerSlot>\n )}\n {(description || (hasWarning && touched)) && (\n <LocalizedFieldDescriptionSlot\n role={hasWarning && touched ? \"status\" : undefined}\n color={hasWarning && touched ? \"warning.11\" : undefined}\n // In order to associate the warnings from both the warning and legacy warnings props with the fieldset,\n // we must associate, them to this element with aria-labelledby\n aria-labelledby={`${descriptionProps.id}-warning`}\n {...descriptionProps}\n >\n {/** Warnings are for compat with UI Kit localized fields */}\n {hasWarning && touched ? (\n <>\n <Icon colorPalette=\"warning\">\n <WarningAmber />\n </Icon>\n <Stack gap=\"0\" id={`${descriptionProps.id}-warning`}>\n {warning}\n {warnings && hasWarning && (\n <FieldErrors\n errors={warnings}\n renderError={renderWarning}\n colorPalette=\"warning\"\n role={undefined}\n />\n )}\n </Stack>\n </>\n ) : (\n description\n )}\n </LocalizedFieldDescriptionSlot>\n )}\n {isInvalid && (\n <LocalizedFieldErrorSlot\n // In order to associate the errors from both the error and legacy errors props with the fieldset,\n // we must associate them to this element with aria-labelledby.\n aria-labelledby={`${errorMessageProps.id}-error`}\n role=\"alert\"\n {...errorMessageProps}\n >\n <Icon>\n <ErrorOutline />\n </Icon>\n <Stack gap=\"0\" id={`${errorMessageProps.id}-error`}>\n {error}\n {errors && hasError && (\n <FieldErrors\n errors={errors}\n renderError={renderError}\n role={undefined}\n />\n )}\n </Stack>\n </LocalizedFieldErrorSlot>\n )}\n </LocalizedFieldRootSlot>\n );\n};\n","import { LocalizedField as LocalizedFieldRoot } from \"./components/localized-field.root\";\nimport {\n getLocaleFieldAttribute,\n createLocalizedString,\n isEmpty,\n omitEmptyTranslations,\n isTouched,\n RequiredValueErrorMessage,\n toFieldErrors,\n convertToMoneyValues,\n parseMoneyValues,\n getHighPrecisionCurrencies,\n getEmptyCurrencies,\n} from \"./utils/localized-field.utils\";\n\nexport const LocalizedField = Object.assign(LocalizedFieldRoot, {\n // Add util methods here for compat with uikit - see https://github.com/commercetools/ui-kit/blob/e97e0c7e8f3e9393981bf1949573212d7c571c90/packages/components/inputs/localized-text-input/src/localized-text-input.tsx#L396\n getId: getLocaleFieldAttribute,\n getName: getLocaleFieldAttribute,\n isTouched,\n isEmpty,\n createLocalizedString,\n omitEmptyTranslations,\n RequiredValueErrorMessage,\n toFieldErrors,\n convertToMoneyValues,\n parseMoneyValues,\n getHighPrecisionCurrencies,\n getEmptyCurrencies,\n});\n"],"names":["messages","defineMessages","withProvider","withContext","createSlotRecipeContext","LocalizedFieldRootSlot","LocalizedFieldLabelSlot","LocalizedFieldInfoDialogSlot","LocalizedFieldFieldsContainerSlot","LocalizedFieldDescriptionSlot","LocalizedFieldErrorSlot","LocalizedFieldToggleButtonContainerSlot","LocalizedFieldLocaleFieldRootSlot","LocalizedFieldLocaleFieldLabelSlot","LocalizedFieldLocaleFieldInputSlot","RequiredValueErrorMessage","jsx","FormField","FormattedMessage","getLocaleFieldAttribute","fieldGroupAttr","locale","getLanguageForLocale","splitLanguages","defaultLocale","locales","defaultLanguage","related","sortLocalesByDefaultLocaleLanguage","allLocales","unrelated","sortCurrencies","defaultCurrency","allCurrencies","remainingCurrencies","currency","getHasInvalidLocalizedFields","errors","defaultLocaleOrCurrency","localeOrCurrency","createLocalizedString","existingLocalizedString","localizedString","isEmpty","value","omitEmptyTranslations","localizedStringWithoutEmptyTranslations","isTouched","touched","toFieldErrors","convertToMoneyValues","values","MoneyInput","parseMoneyValues","moneyValues","allValues","moneyValue","getHighPrecisionCurrencies","currencyCode","getEmptyCurrencies","LocalizedFieldLocaleField","type","size","id","name","inputValueFromProps","description","warning","error","onChange","onBlur","onFocus","isRequired","isReadOnly","isDisabled","isInvalid","otherProps","InputComponent","TextInput","MultilineTextInput","RichTextInput","inputValue","handleChange","useCallback","changeValue","jsxs","e","Fragment","Icon","WarningAmber","LocalizedField","valuesByLocaleOrCurrency","placeholdersByLocaleOrCurrency","descriptionsByLocaleOrCurrency","warningsByLocaleOrCurrency","errorsByLocaleOrCurrency","label","hint","warnings","renderWarning","renderError","defaultExpanded","displayAllLocalesOrCurrencies","autoFocus","dataTrackComponent","dataTestId","dataTest","rest","expanded","setExpanded","useState","formatMessage","useIntl","localeFieldsContainerId","useId","moreDetailsButtonId","hasError","hasWarning","labelProps","fieldProps","descriptionProps","errorMessageProps","useField","localizationKeys","allDataForFields","useMemo","allFieldData","localizationKey","allDataForLocale","shouldExpandInvalidFields","Stack","RaDialogTrigger","IconButton","HelpOutline","Popover","RaDialog","Box","RaCollection","item","Button","Payments","Language","FieldErrors","ErrorOutline","LocalizedFieldRoot"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"localized-field-u03KZc2G.cjs.js","sources":["../../src/components/localized-field/localized-field.i18n.ts","../../src/components/localized-field/localized-field.slots.tsx","../../src/components/localized-field/utils/localized-field.utils.tsx","../../src/components/localized-field/components/localized-field.locale-field.tsx","../../src/components/localized-field/components/localized-field.root.tsx","../../src/components/localized-field/localized-field.tsx"],"sourcesContent":["import { defineMessages } from \"react-intl\";\n\nexport default defineMessages({\n missingRequiredField: {\n id: \"Nimbus.LocalizedField.missingRequiredField\",\n description: \"Error message for missing required value\",\n defaultMessage: \"This field is required. Provide at least one value.\",\n },\n infoBoxTriggerAriaLabel: {\n id: \"Nimbus.LocalizedField.infoBoxTriggerAriaLabel\",\n description: \"aria label for button that triggers more info dialog\",\n defaultMessage: \"more info\",\n },\n showLanguages: {\n id: \"Nimbus.LocalizedField.showLanguages\",\n description:\n \"Label for showing all language inputs when toggle button is pressed\",\n defaultMessage: \"Show all languages\",\n },\n hideLanguages: {\n id: \"Nimbus.LocalizedField.hideLanguages\",\n description:\n \"Label for hiding all language inputs when toggle button is pressed\",\n defaultMessage: \"Hide all languages\",\n },\n showCurrencies: {\n id: \"Nimbus.LocalizedField.showCurrencies\",\n description:\n \"Label for showing all currency inputs when toggle button is pressed\",\n defaultMessage: \"Show all currencies\",\n },\n hideCurrencies: {\n id: \"Nimbus.LocalizedField.hideCurrencies\",\n description:\n \"Label for hiding all currency inputs when toggle button is pressed\",\n defaultMessage: \"Hide all currencies\",\n },\n});\n","import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport type {\n LocalizedFieldRootSlotProps,\n LocalizedFieldLabelSlotProps,\n LocalizedFieldInfoDialogSlotProps,\n LocalizedFieldFieldsContainerSlotProps,\n LocalizedFieldDescriptionSlotProps,\n LocalizedFieldErrorSlotProps,\n LocalizedFieldToggleButtonContainerSlotProps,\n LocalizedFieldLocaleFieldRootSlotProps,\n LocalizedFieldLocaleFieldLabelSlotProps,\n LocalizedFieldLocaleFieldInputSlotProps,\n} from \"./localized-field.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"localizedField\",\n});\n\n// Root Slot\nexport const LocalizedFieldRootSlot = withProvider<\n HTMLFieldSetElement,\n LocalizedFieldRootSlotProps\n>(\"fieldset\", \"root\");\n\n// Label Slot\nexport const LocalizedFieldLabelSlot = withContext<\n HTMLLabelElement,\n LocalizedFieldLabelSlotProps\n>(\"legend\", \"label\");\n\n// InfoDialog Slot\nexport const LocalizedFieldInfoDialogSlot = withContext<\n HTMLDivElement,\n LocalizedFieldInfoDialogSlotProps\n>(\"div\", \"infoDialog\");\n\n// FieldsContainer Slot\nexport const LocalizedFieldFieldsContainerSlot = withContext<\n HTMLDivElement,\n LocalizedFieldFieldsContainerSlotProps\n>(\"div\", \"fieldsContainer\");\n\n// Description Slot\nexport const LocalizedFieldDescriptionSlot = withContext<\n HTMLDivElement,\n LocalizedFieldDescriptionSlotProps\n>(\"div\", \"description\");\n\n// Error Slot\nexport const LocalizedFieldErrorSlot = withContext<\n HTMLDivElement,\n LocalizedFieldErrorSlotProps\n>(\"div\", \"error\");\n\n// ToggleButtonContainer Slot\nexport const LocalizedFieldToggleButtonContainerSlot = withContext<\n HTMLDivElement,\n LocalizedFieldToggleButtonContainerSlotProps\n>(\"div\", \"toggleButtonContainer\");\n\n// LocaleFieldRoot Slot\nexport const LocalizedFieldLocaleFieldRootSlot = withContext<\n HTMLDivElement,\n LocalizedFieldLocaleFieldRootSlotProps\n>(\"div\", \"localeFieldRoot\");\n\n// FieldLabel Slot\nexport const LocalizedFieldLocaleFieldLabelSlot = withContext<\n HTMLDivElement,\n LocalizedFieldLocaleFieldLabelSlotProps\n>(\"div\", \"localeFieldLabel\");\n\n// FieldInput Slot\nexport const LocalizedFieldLocaleFieldInputSlot = withContext<\n HTMLDivElement,\n LocalizedFieldLocaleFieldInputSlotProps\n>(\"div\", \"localeFieldInput\");\n","import { FormattedMessage } from \"react-intl\";\nimport {\n FormField,\n type CurrencyCode,\n type MoneyInputValue,\n type MoneyValue,\n type TFieldErrors,\n MoneyInput,\n} from \"@/components\";\nimport messages from \"../localized-field.i18n\";\nimport type { LocalizedString } from \"../localized-field.types\";\n\ntype LanguagesSplitByDefaultLocale = {\n related: string[];\n unrelated: string[];\n};\n\ntype TouchedLocalizedString = { [locale: string]: boolean };\n\ntype CustomFormikErrors<Values> = {\n [K in keyof Values]?: TFieldErrors;\n};\n\nexport const RequiredValueErrorMessage = () => (\n <FormField.Error>\n <FormattedMessage {...messages.missingRequiredField} />\n </FormField.Error>\n);\n\nexport const getLocaleFieldAttribute = (\n fieldGroupAttr?: string,\n locale?: string\n): string | undefined =>\n fieldGroupAttr && locale ? `${fieldGroupAttr}.${locale}` : undefined;\n\n// gets the language tag of a given locale, e.g. `de` in `de-DE`\nexport const getLanguageForLocale = (locale: string): string =>\n locale.split(\"-\")[0];\n\n// splits the locales into two groups:\n// - the 'related' array contains locales with the same language tag as the default locale,\n// e.g. if the default locale is de-DE, related would be ['de-DE', 'de-CH']\n// - the 'unrelated' array contains locales with a different different language tag from the default locale\n//. e.g. if the default locale is de-DE, unrelated would be ['pt-BR', 'en-GB', 'zh-Hans']\nexport const splitLanguages = (\n defaultLocale: string,\n locales: string[]\n): LanguagesSplitByDefaultLocale => {\n const defaultLanguage = getLanguageForLocale(defaultLocale);\n const related = locales.filter(\n (locale) => getLanguageForLocale(locale) === defaultLanguage\n );\n const unrelated = locales.filter(\n (locale) => getLanguageForLocale(locale) !== defaultLanguage\n );\n return {\n unrelated,\n related,\n };\n};\n\n// sorts locales with the following priority:\n// - The selected locale is placed first (e.g pt-BR)\n// - All locales using the same language tag as the selected language\n// follow (e.g. pt, pt-PT). They are sorted alphabetically.\n// - All other locales follow, sorted alphabetically as well\nexport const sortLocalesByDefaultLocaleLanguage = (\n defaultLocale: string,\n allLocales: string[]\n): string[] => {\n const { related, unrelated } = splitLanguages(\n defaultLocale,\n allLocales.filter((locale: string) => locale !== defaultLocale)\n );\n\n return [defaultLocale, ...related.sort(), ...unrelated.sort()];\n};\n\nexport const sortCurrencies = (\n defaultCurrency: CurrencyCode,\n allCurrencies: CurrencyCode[]\n) => {\n const remainingCurrencies = allCurrencies.filter(\n (currency) => currency !== defaultCurrency\n );\n return [defaultCurrency, ...remainingCurrencies.sort()];\n};\n\nexport const getHasInvalidLocalizedFields = <TErrors extends object>(\n errors?: TErrors,\n defaultLocaleOrCurrency?: string\n): boolean => {\n if (errors && Object.keys(errors).length > 0 && defaultLocaleOrCurrency) {\n return Object.keys(errors).some(\n (localeOrCurrency) => localeOrCurrency !== defaultLocaleOrCurrency\n );\n }\n return false;\n};\n\nexport const createLocalizedString = (\n locales: string[],\n existingLocalizedString: LocalizedString\n): LocalizedString => {\n const localesInLocalizedString = Array.from(\n new Set([...locales, ...Object.keys(existingLocalizedString)])\n );\n\n return localesInLocalizedString.reduce<LocalizedString>(\n (localizedString, locale) => ({\n ...localizedString,\n [locale]: existingLocalizedString?.[locale] || \"\",\n }),\n {}\n );\n};\n\n// Note: I prefer `isLocalizedStringEmpty`, but keeping this as `isEmpty` for api consistency with UI Kit\nexport const isEmpty = (localizedString?: LocalizedString): boolean => {\n if (!localizedString) return true;\n return Object.values(localizedString).every(\n (value?: string) => !value || value?.trim().length === 0\n );\n};\n\nexport const omitEmptyTranslations = <Translations extends LocalizedString>(\n localizedString: Translations\n): LocalizedString => {\n // TODO: is it necessary to create a util that enforces a consistent warning/error format, e.g.\n // `<COMPONENT_NAME> - Warning: <WARNING_MESSAGE>`\n if (typeof localizedString !== \"object\") {\n console.warn(\n \"Nimbus Localized Field - Warning: omitEmptyTranslations must be called with an object\"\n );\n }\n\n return Object.entries(localizedString).reduce<LocalizedString>(\n (localizedStringWithoutEmptyTranslations, [locale, value]) => {\n if (value && value.trim().length > 0) {\n return {\n ...localizedStringWithoutEmptyTranslations,\n [locale]: value,\n };\n }\n return localizedStringWithoutEmptyTranslations;\n },\n {}\n );\n};\n\nexport const isTouched = (touched?: TouchedLocalizedString): boolean => {\n if (touched) {\n return Object.values(touched).some(Boolean);\n }\n return false;\n};\n\n/**\n * Use this function to convert the Formik `errors` object type to\n * our custom field errors type.\n * This is primarly useful when using TypeScript.\n */\nexport function toFieldErrors<FormValues>(\n errors: unknown\n): CustomFormikErrors<FormValues> {\n return errors as CustomFormikErrors<FormValues>;\n}\n\nexport const convertToMoneyValues = (\n values: MoneyInputValue[],\n currency: string\n): Array<MoneyValue | null> =>\n Object.values(values).map<MoneyValue | null>((value) => {\n return MoneyInput.convertToMoneyValue(value, currency);\n });\n\nexport const parseMoneyValues = (\n moneyValues: MoneyValue[] = [],\n locale: string\n): Record<CurrencyCode, MoneyInputValue> =>\n moneyValues.reduce<Record<CurrencyCode, MoneyInputValue>>(\n (allValues, moneyValue) => {\n const value = MoneyInput.parseMoneyValue(moneyValue, locale);\n return {\n ...allValues,\n [value.currencyCode]: value,\n };\n },\n {} as Record<CurrencyCode, MoneyInputValue>\n );\n\nexport const getHighPrecisionCurrencies = (\n values: Record<CurrencyCode, MoneyInputValue>,\n locale: string\n): CurrencyCode[] => {\n const typedCurrencyCodes = Object.keys(values) as CurrencyCode[];\n return typedCurrencyCodes.filter((currencyCode) =>\n MoneyInput.isHighPrecision(values[currencyCode], locale)\n );\n};\n\nexport const getEmptyCurrencies = (\n values: Record<CurrencyCode, MoneyInputValue>\n): CurrencyCode[] => {\n const typedCurrencyCodes = Object.keys(values) as CurrencyCode[];\n return typedCurrencyCodes.filter((currencyCode) =>\n MoneyInput.isEmpty(values[currencyCode])\n );\n};\n","import { useCallback } from \"react\";\nimport {\n FormField,\n Icon,\n TextInput,\n MoneyInput,\n type CustomEvent,\n MultilineTextInput,\n RichTextInput,\n type MoneyInputValue,\n type CurrencyCode,\n} from \"@/components\";\nimport { WarningAmber } from \"@commercetools/nimbus-icons\";\nimport {\n LocalizedFieldLocaleFieldRootSlot,\n LocalizedFieldLocaleFieldInputSlot,\n LocalizedFieldLocaleFieldLabelSlot,\n} from \"../localized-field.slots\";\nimport type { LocalizedFieldLocaleFieldProps } from \"../localized-field.types\";\n\nexport const LocalizedFieldLocaleField = ({\n type,\n size,\n localeOrCurrency,\n id,\n name,\n inputValue: inputValueFromProps,\n description,\n warning,\n error,\n onChange,\n onBlur,\n onFocus,\n isRequired,\n isReadOnly,\n isDisabled,\n isInvalid,\n touched,\n ...otherProps\n}: LocalizedFieldLocaleFieldProps) => {\n let InputComponent:\n | typeof TextInput\n | typeof MultilineTextInput\n | typeof MoneyInput\n | typeof RichTextInput;\n switch (type) {\n case \"text\":\n default:\n InputComponent = TextInput;\n break;\n case \"multiLine\":\n InputComponent = MultilineTextInput;\n break;\n case \"money\":\n InputComponent = MoneyInput;\n break;\n case \"richText\":\n InputComponent = RichTextInput;\n break;\n }\n\n const getInputValue = () => {\n if (type === \"money\") {\n return inputValueFromProps\n ? (inputValueFromProps as MoneyInputValue)\n : ({ amount: \"\", currencyCode: localeOrCurrency } as MoneyInputValue);\n }\n return inputValueFromProps ? inputValueFromProps : \"\";\n };\n\n const inputValue = getInputValue();\n\n const handleChange = useCallback(\n (value: string | CustomEvent | undefined) => {\n // The `MoneyInput` onChange event value is a custom value,\n // and the `MoneyInput` modifies the input id and name since it is in a `group`,\n // so we need to build a separate return object for the MoneInput to return\n // the expected values\n const isMoneyInputEvent = typeof value === \"object\";\n const changeValue = {\n target: isMoneyInputEvent\n ? {\n id: value.target.id,\n name: value.target.name,\n locale: undefined,\n currency: localeOrCurrency as CurrencyCode,\n value: value.target.value,\n }\n : { id, name, locale: localeOrCurrency, currency: undefined, value },\n };\n onChange(changeValue);\n },\n [id, name, localeOrCurrency, onChange]\n );\n\n return (\n <LocalizedFieldLocaleFieldRootSlot asChild>\n <FormField.Root\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={(isInvalid || !!error) && touched}\n direction=\"row\"\n size={size}\n id={id}\n >\n <LocalizedFieldLocaleFieldLabelSlot\n display={type === \"money\" ? \"none\" : undefined}\n {...(isDisabled && { \"data-disabled\": isDisabled })}\n asChild\n >\n <FormField.Label>\n {localeOrCurrency.toLocaleUpperCase()}\n </FormField.Label>\n </LocalizedFieldLocaleFieldLabelSlot>\n <FormField.Input>\n <LocalizedFieldLocaleFieldInputSlot\n aria-required={isRequired}\n asChild\n >\n <InputComponent\n {...otherProps}\n size={size}\n value={inputValue as string & MoneyInputValue}\n onChange={handleChange}\n onBlur={(e: React.FocusEvent | CustomEvent) =>\n onBlur?.(e, localeOrCurrency)\n }\n onFocus={(e: React.FocusEvent | CustomEvent) =>\n onFocus?.(e, localeOrCurrency)\n }\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={(isInvalid || !!error) && touched}\n />\n </LocalizedFieldLocaleFieldInputSlot>\n </FormField.Input>\n {(description || (warning && touched)) && (\n <FormField.Description\n role={warning && touched ? \"status\" : undefined}\n color={warning && touched ? \"warning.11\" : undefined}\n display=\"flex\"\n gap=\"100\"\n alignItems=\"center\"\n >\n {warning && touched ? (\n <>\n <Icon colorPalette=\"warning\">\n <WarningAmber />\n </Icon>\n {warning}\n </>\n ) : (\n description\n )}\n </FormField.Description>\n )}\n {error && touched && <FormField.Error>{error}</FormField.Error>}\n </FormField.Root>\n </LocalizedFieldLocaleFieldRootSlot>\n );\n};\n","import { useState, useMemo } from \"react\";\nimport { useIntl } from \"react-intl\";\nimport {\n Collection as RaCollection,\n Dialog as RaDialog,\n DialogTrigger as RaDialogTrigger,\n} from \"react-aria-components\";\nimport { useField, useId } from \"react-aria\";\nimport {\n ErrorOutline,\n HelpOutline,\n Language,\n Payments,\n WarningAmber,\n} from \"@commercetools/nimbus-icons\";\nimport {\n Box,\n Button,\n FieldErrors,\n Icon,\n IconButton,\n Stack,\n type CurrencyCode,\n} from \"@/components\";\nimport { Popover } from \"../../popover\";\nimport messages from \"../localized-field.i18n\";\nimport {\n LocalizedFieldRootSlot,\n LocalizedFieldLabelSlot,\n LocalizedFieldInfoDialogSlot,\n LocalizedFieldFieldsContainerSlot,\n LocalizedFieldDescriptionSlot,\n LocalizedFieldErrorSlot,\n LocalizedFieldToggleButtonContainerSlot,\n} from \"../localized-field.slots\";\nimport type {\n LocalizedFieldProps,\n MergedLocaleFieldData,\n LocalizedCurrency,\n} from \"../localized-field.types\";\n\nimport {\n getHasInvalidLocalizedFields,\n getLocaleFieldAttribute,\n sortCurrencies,\n sortLocalesByDefaultLocaleLanguage,\n} from \"../utils/localized-field.utils\";\nimport { LocalizedFieldLocaleField } from \"./localized-field.locale-field\";\n\nexport const LocalizedField = ({\n type = \"text\",\n id,\n name,\n defaultLocaleOrCurrency,\n valuesByLocaleOrCurrency,\n placeholdersByLocaleOrCurrency,\n descriptionsByLocaleOrCurrency,\n warningsByLocaleOrCurrency,\n errorsByLocaleOrCurrency,\n label,\n hint,\n description,\n warning,\n warnings,\n renderWarning,\n error,\n errors,\n renderError,\n touched,\n isRequired,\n isDisabled,\n isReadOnly,\n onChange,\n onBlur,\n onFocus,\n defaultExpanded = false,\n displayAllLocalesOrCurrencies = false,\n size,\n autoFocus,\n [\"data-track-component\"]: dataTrackComponent,\n [\"data-testid\"]: dataTestId,\n [\"data-test\"]: dataTest,\n // DOM & Style props for wrapper container\n ...rest\n}: LocalizedFieldProps) => {\n const [expanded, setExpanded] = useState(\n displayAllLocalesOrCurrencies || defaultExpanded\n );\n\n const { formatMessage } = useIntl();\n\n // Used to associate more info dialog with fieldset via `aria-controls`\n const localeFieldsContainerId = useId();\n // Used to associate more info dialog with fieldset via `aria-details`\n const moreDetailsButtonId = useId();\n\n // Either `error` exists, or there are `true` fields in the UI Kit compat `errors` object\n const hasError: boolean = Boolean(\n error || (errors && Object.values(errors).some((error) => error === true))\n );\n\n // Either `warning` exists, or there are `true` fields in the UI Kit compat `warnings` object\n const hasWarning: boolean = Boolean(\n warning || (warnings && Object.values(warnings).some(Boolean))\n );\n\n // FieldGroup is invalid if a non-field-specific error is passed and the group has been touched\n // When FieldGroup is invalid, all fields will display error styling without displaying a field-specific error message\n const isInvalid: boolean = !!(hasError && touched);\n\n const { labelProps, fieldProps, descriptionProps, errorMessageProps } =\n useField({\n id,\n label,\n description,\n errorMessage: error,\n isInvalid,\n });\n\n // Array of locales/currencies to display as input fields\n const localizationKeys: string[] | CurrencyCode[] = Object.keys(\n valuesByLocaleOrCurrency\n );\n\n // Merge all -ByLocaleOrCurrencies data for each field\n const allDataForFields = useMemo(() => {\n const sortedFieldData =\n type === \"money\"\n ? sortCurrencies(\n defaultLocaleOrCurrency as CurrencyCode,\n localizationKeys as CurrencyCode[]\n )\n : sortLocalesByDefaultLocaleLanguage(\n defaultLocaleOrCurrency,\n localizationKeys\n );\n\n return sortedFieldData.reduce(\n (allFieldData: MergedLocaleFieldData[], localizationKey) => {\n const allDataForLocale = {\n localeOrCurrency: localizationKey,\n inputValue:\n type === \"money\"\n ? (valuesByLocaleOrCurrency as LocalizedCurrency)[localizationKey]\n : (valuesByLocaleOrCurrency[localizationKey] as string),\n placeholder: placeholdersByLocaleOrCurrency?.[localizationKey],\n description: descriptionsByLocaleOrCurrency?.[localizationKey],\n warning: warningsByLocaleOrCurrency?.[localizationKey],\n error: errorsByLocaleOrCurrency?.[localizationKey],\n // autoFocus default/first locale field\n ...(localizationKey === defaultLocaleOrCurrency && autoFocus\n ? { autoFocus }\n : {}),\n isInvalid,\n isRequired,\n isDisabled,\n isReadOnly,\n };\n if (\n expanded ||\n // Only display defaultLocaleOrInput field if fieldGroup is not expanded\n (!expanded && localizationKey === defaultLocaleOrCurrency)\n ) {\n return [...allFieldData, allDataForLocale];\n }\n return allFieldData;\n },\n []\n );\n }, [\n valuesByLocaleOrCurrency,\n placeholdersByLocaleOrCurrency,\n descriptionsByLocaleOrCurrency,\n warningsByLocaleOrCurrency,\n errorsByLocaleOrCurrency,\n defaultLocaleOrCurrency,\n expanded,\n isInvalid,\n isRequired,\n isDisabled,\n isReadOnly,\n ]);\n\n const groupHasInvalidLocalizedFields = getHasInvalidLocalizedFields(\n errorsByLocaleOrCurrency,\n defaultLocaleOrCurrency\n );\n\n const shouldExpandInvalidFields =\n (groupHasInvalidLocalizedFields || hasError) && touched;\n // If there are fields that are invalid, ensure that field group\n // shows all fields so that invalid field is visible\n if (shouldExpandInvalidFields && !expanded) {\n setExpanded(true);\n }\n\n return (\n <LocalizedFieldRootSlot\n {...rest}\n {...fieldProps}\n aria-details={hint ? moreDetailsButtonId : undefined}\n type={type}\n size={size}\n name={name}\n >\n {label && (\n <Stack direction=\"row\" gap=\"0\">\n <LocalizedFieldLabelSlot {...labelProps}>\n {label}\n {isRequired && <sup aria-hidden=\"true\">*</sup>}\n </LocalizedFieldLabelSlot>\n {hint && (\n <RaDialogTrigger>\n <IconButton\n id={moreDetailsButtonId}\n aria-label={formatMessage(messages.infoBoxTriggerAriaLabel)}\n size=\"2xs\"\n tone=\"info\"\n variant=\"link\"\n >\n <HelpOutline />\n </IconButton>\n\n <Popover padding={0}>\n <LocalizedFieldInfoDialogSlot asChild>\n <RaDialog>\n <Box p=\"300\">{hint}</Box>\n </RaDialog>\n </LocalizedFieldInfoDialogSlot>\n </Popover>\n </RaDialogTrigger>\n )}\n </Stack>\n )}\n <LocalizedFieldFieldsContainerSlot\n id={localeFieldsContainerId}\n data-expanded={expanded}\n >\n <RaCollection items={allDataForFields}>\n {(item) => {\n return (\n <LocalizedFieldLocaleField\n {...item}\n size={size}\n type={type}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n touched={touched}\n // Format field attributes to match uikit pattern\n id={getLocaleFieldAttribute(\n fieldProps.id,\n item.localeOrCurrency\n )}\n name={getLocaleFieldAttribute(name, item.localeOrCurrency)}\n data-test={getLocaleFieldAttribute(\n dataTest,\n item.localeOrCurrency\n )}\n data-testid={getLocaleFieldAttribute(\n dataTestId,\n item.localeOrCurrency\n )}\n data-track-component={getLocaleFieldAttribute(\n dataTrackComponent,\n item.localeOrCurrency\n )}\n />\n );\n }}\n </RaCollection>\n </LocalizedFieldFieldsContainerSlot>\n\n {!displayAllLocalesOrCurrencies && localizationKeys.length > 1 && (\n <LocalizedFieldToggleButtonContainerSlot>\n <Button\n aria-controls={localeFieldsContainerId}\n aria-describedby={labelProps.id}\n aria-expanded={expanded}\n onPress={() => setExpanded(!expanded)}\n isDisabled={isDisabled || (shouldExpandInvalidFields && expanded)}\n variant=\"ghost\"\n size=\"2xs\"\n colorPalette=\"primary\"\n >\n <Box\n as={type === \"money\" ? Payments : Language}\n display=\"inline-flex\"\n boxSize=\"400\"\n verticalAlign=\"text-bottom\"\n mr=\"100\"\n />\n {type === \"money\"\n ? expanded\n ? formatMessage(messages.hideCurrencies)\n : formatMessage(messages.showCurrencies)\n : expanded\n ? formatMessage(messages.hideLanguages)\n : formatMessage(messages.showLanguages)}\n </Button>\n </LocalizedFieldToggleButtonContainerSlot>\n )}\n {(description || (hasWarning && touched)) && (\n <LocalizedFieldDescriptionSlot\n role={hasWarning && touched ? \"status\" : undefined}\n color={hasWarning && touched ? \"warning.11\" : undefined}\n // In order to associate the warnings from both the warning and legacy warnings props with the fieldset,\n // we must associate, them to this element with aria-labelledby\n aria-labelledby={`${descriptionProps.id}-warning`}\n {...descriptionProps}\n >\n {/** Warnings are for compat with UI Kit localized fields */}\n {hasWarning && touched ? (\n <>\n <Icon colorPalette=\"warning\">\n <WarningAmber />\n </Icon>\n <Stack gap=\"0\" id={`${descriptionProps.id}-warning`}>\n {warning}\n {warnings && hasWarning && (\n <FieldErrors\n errors={warnings}\n renderError={renderWarning}\n colorPalette=\"warning\"\n role={undefined}\n />\n )}\n </Stack>\n </>\n ) : (\n description\n )}\n </LocalizedFieldDescriptionSlot>\n )}\n {isInvalid && (\n <LocalizedFieldErrorSlot\n // In order to associate the errors from both the error and legacy errors props with the fieldset,\n // we must associate them to this element with aria-labelledby.\n aria-labelledby={`${errorMessageProps.id}-error`}\n role=\"alert\"\n {...errorMessageProps}\n >\n <Icon>\n <ErrorOutline />\n </Icon>\n <Stack gap=\"0\" id={`${errorMessageProps.id}-error`}>\n {error}\n {errors && hasError && (\n <FieldErrors\n errors={errors}\n renderError={renderError}\n role={undefined}\n />\n )}\n </Stack>\n </LocalizedFieldErrorSlot>\n )}\n </LocalizedFieldRootSlot>\n );\n};\n","import { LocalizedField as LocalizedFieldRoot } from \"./components/localized-field.root\";\nimport {\n getLocaleFieldAttribute,\n createLocalizedString,\n isEmpty,\n omitEmptyTranslations,\n isTouched,\n RequiredValueErrorMessage,\n toFieldErrors,\n convertToMoneyValues,\n parseMoneyValues,\n getHighPrecisionCurrencies,\n getEmptyCurrencies,\n} from \"./utils/localized-field.utils\";\n\nexport const LocalizedField = Object.assign(LocalizedFieldRoot, {\n // Add util methods here for compat with uikit - see https://github.com/commercetools/ui-kit/blob/e97e0c7e8f3e9393981bf1949573212d7c571c90/packages/components/inputs/localized-text-input/src/localized-text-input.tsx#L396\n getId: getLocaleFieldAttribute,\n getName: getLocaleFieldAttribute,\n isTouched,\n isEmpty,\n createLocalizedString,\n omitEmptyTranslations,\n RequiredValueErrorMessage,\n toFieldErrors,\n convertToMoneyValues,\n parseMoneyValues,\n getHighPrecisionCurrencies,\n getEmptyCurrencies,\n});\n"],"names":["messages","defineMessages","withProvider","withContext","createSlotRecipeContext","LocalizedFieldRootSlot","LocalizedFieldLabelSlot","LocalizedFieldInfoDialogSlot","LocalizedFieldFieldsContainerSlot","LocalizedFieldDescriptionSlot","LocalizedFieldErrorSlot","LocalizedFieldToggleButtonContainerSlot","LocalizedFieldLocaleFieldRootSlot","LocalizedFieldLocaleFieldLabelSlot","LocalizedFieldLocaleFieldInputSlot","RequiredValueErrorMessage","jsx","FormField","FormattedMessage","getLocaleFieldAttribute","fieldGroupAttr","locale","getLanguageForLocale","splitLanguages","defaultLocale","locales","defaultLanguage","related","sortLocalesByDefaultLocaleLanguage","allLocales","unrelated","sortCurrencies","defaultCurrency","allCurrencies","remainingCurrencies","currency","getHasInvalidLocalizedFields","errors","defaultLocaleOrCurrency","localeOrCurrency","createLocalizedString","existingLocalizedString","localizedString","isEmpty","value","omitEmptyTranslations","localizedStringWithoutEmptyTranslations","isTouched","touched","toFieldErrors","convertToMoneyValues","values","MoneyInput","parseMoneyValues","moneyValues","allValues","moneyValue","getHighPrecisionCurrencies","currencyCode","getEmptyCurrencies","LocalizedFieldLocaleField","type","size","id","name","inputValueFromProps","description","warning","error","onChange","onBlur","onFocus","isRequired","isReadOnly","isDisabled","isInvalid","otherProps","InputComponent","TextInput","MultilineTextInput","RichTextInput","inputValue","handleChange","useCallback","changeValue","jsxs","e","Fragment","Icon","WarningAmber","LocalizedField","valuesByLocaleOrCurrency","placeholdersByLocaleOrCurrency","descriptionsByLocaleOrCurrency","warningsByLocaleOrCurrency","errorsByLocaleOrCurrency","label","hint","warnings","renderWarning","renderError","defaultExpanded","displayAllLocalesOrCurrencies","autoFocus","dataTrackComponent","dataTestId","dataTest","rest","expanded","setExpanded","useState","formatMessage","useIntl","localeFieldsContainerId","useId","moreDetailsButtonId","hasError","hasWarning","labelProps","fieldProps","descriptionProps","errorMessageProps","useField","localizationKeys","allDataForFields","useMemo","allFieldData","localizationKey","allDataForLocale","shouldExpandInvalidFields","Stack","RaDialogTrigger","IconButton","HelpOutline","Popover","RaDialog","Box","RaCollection","item","Button","Payments","Language","FieldErrors","ErrorOutline","LocalizedFieldRoot"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"money-input-DHiEn7XA.es.js","sources":["../../src/components/money-input/utils/currencies.ts","../../src/components/money-input/money-input.slots.tsx","../../src/components/money-input/utils/parsing-utilities.ts","../../src/components/money-input/utils/static-methods.ts","../../src/components/money-input/money-input.i18n.ts","../../src/components/money-input/money-input.tsx"],"sourcesContent":["// ARCHITECTURE NOTE: Shared Currency Data\n//\n// This currency data is used by TWO INDEPENDENT formatting systems:\n//\n// 1. NumberInput System (live user interaction):\n// - Creates format options for NumberInput\n// - Powers React Aria NumberField formatting as users type\n//\n// 2. MoneyInput Static Methods System (API compatibility):\n// - Uses parseStringToMoneyValue() + TMoneyValue objects\n// - Only triggered by explicit static method calls\n//\n// Both systems access this same data but for different purposes.\n// Changes here affect both NumberInput behavior AND MoneyInput static methods.\n\nconst currencies = {\n ADP: { fractionDigits: 0 },\n AED: { fractionDigits: 2 },\n AFA: { fractionDigits: 2 },\n AFN: { fractionDigits: 2 },\n ALL: { fractionDigits: 2 },\n AMD: { fractionDigits: 2 },\n ANG: { fractionDigits: 2 },\n AOA: { fractionDigits: 2 },\n ARS: { fractionDigits: 2 },\n ATS: { fractionDigits: 2 },\n AUD: { fractionDigits: 2 },\n AWG: { fractionDigits: 2 },\n AYM: { fractionDigits: 2 },\n AZM: { fractionDigits: 2 },\n AZN: { fractionDigits: 2 },\n BAM: { fractionDigits: 2 },\n BBD: { fractionDigits: 2 },\n BDT: { fractionDigits: 2 },\n BEF: { fractionDigits: 0 },\n BGL: { fractionDigits: 2 },\n BGN: { fractionDigits: 2 },\n BHD: { fractionDigits: 3 },\n BIF: { fractionDigits: 0 },\n BMD: { fractionDigits: 2 },\n BND: { fractionDigits: 2 },\n BOB: { fractionDigits: 2 },\n BOV: { fractionDigits: 2 },\n BRL: { fractionDigits: 2 },\n BSD: { fractionDigits: 2 },\n BTN: { fractionDigits: 2 },\n BWP: { fractionDigits: 2 },\n BYB: { fractionDigits: 0 },\n BYN: { fractionDigits: 2 },\n BYR: { fractionDigits: 0 },\n BZD: { fractionDigits: 2 },\n CAD: { fractionDigits: 2 },\n CDF: { fractionDigits: 2 },\n CHF: { fractionDigits: 2 },\n CLF: { fractionDigits: 0 },\n CLP: { fractionDigits: 0 },\n CNY: { fractionDigits: 2 },\n COP: { fractionDigits: 2 },\n CRC: { fractionDigits: 2 },\n CSD: { fractionDigits: 2 },\n CUC: { fractionDigits: 2 },\n CUP: { fractionDigits: 2 },\n CVE: { fractionDigits: 2 },\n CYP: { fractionDigits: 2 },\n CZK: { fractionDigits: 2 },\n DEM: { fractionDigits: 2 },\n DJF: { fractionDigits: 0 },\n DKK: { fractionDigits: 2 },\n DOP: { fractionDigits: 2 },\n DZD: { fractionDigits: 2 },\n EEK: { fractionDigits: 2 },\n EGP: { fractionDigits: 2 },\n ERN: { fractionDigits: 2 },\n ESP: { fractionDigits: 0 },\n ETB: { fractionDigits: 2 },\n EUR: { fractionDigits: 2 },\n FIM: { fractionDigits: 2 },\n FJD: { fractionDigits: 2 },\n FKP: { fractionDigits: 2 },\n FRF: { fractionDigits: 2 },\n GBP: { fractionDigits: 2 },\n GEL: { fractionDigits: 2 },\n GHC: { fractionDigits: 2 },\n GHS: { fractionDigits: 2 },\n GIP: { fractionDigits: 2 },\n GMD: { fractionDigits: 2 },\n GNF: { fractionDigits: 0 },\n GRD: { fractionDigits: 0 },\n GTQ: { fractionDigits: 2 },\n GWP: { fractionDigits: 2 },\n GYD: { fractionDigits: 2 },\n HKD: { fractionDigits: 2 },\n HNL: { fractionDigits: 2 },\n HRK: { fractionDigits: 2 },\n HTG: { fractionDigits: 2 },\n HUF: { fractionDigits: 2 },\n IDR: { fractionDigits: 2 },\n IEP: { fractionDigits: 2 },\n ILS: { fractionDigits: 2 },\n INR: { fractionDigits: 2 },\n IQD: { fractionDigits: 3 },\n IRR: { fractionDigits: 2 },\n ISK: { fractionDigits: 0 },\n ITL: { fractionDigits: 0 },\n JMD: { fractionDigits: 2 },\n JOD: { fractionDigits: 3 },\n JPY: { fractionDigits: 0 },\n KES: { fractionDigits: 2 },\n KGS: { fractionDigits: 2 },\n KHR: { fractionDigits: 2 },\n KMF: { fractionDigits: 0 },\n KPW: { fractionDigits: 2 },\n KRW: { fractionDigits: 0 },\n KWD: { fractionDigits: 3 },\n KYD: { fractionDigits: 2 },\n KZT: { fractionDigits: 2 },\n LAK: { fractionDigits: 2 },\n LBP: { fractionDigits: 2 },\n LKR: { fractionDigits: 2 },\n LRD: { fractionDigits: 2 },\n LSL: { fractionDigits: 2 },\n LTL: { fractionDigits: 2 },\n LUF: { fractionDigits: 0 },\n LVL: { fractionDigits: 2 },\n LYD: { fractionDigits: 3 },\n MAD: { fractionDigits: 2 },\n MDL: { fractionDigits: 2 },\n MGA: { fractionDigits: 2 },\n MGF: { fractionDigits: 0 },\n MKD: { fractionDigits: 2 },\n MMK: { fractionDigits: 2 },\n MNT: { fractionDigits: 2 },\n MOP: { fractionDigits: 2 },\n MRO: { fractionDigits: 2 },\n MTL: { fractionDigits: 2 },\n MUR: { fractionDigits: 2 },\n MVR: { fractionDigits: 2 },\n MWK: { fractionDigits: 2 },\n MXN: { fractionDigits: 2 },\n MXV: { fractionDigits: 2 },\n MYR: { fractionDigits: 2 },\n MZM: { fractionDigits: 2 },\n MZN: { fractionDigits: 2 },\n NAD: { fractionDigits: 2 },\n NGN: { fractionDigits: 2 },\n NIO: { fractionDigits: 2 },\n NLG: { fractionDigits: 2 },\n NOK: { fractionDigits: 2 },\n NPR: { fractionDigits: 2 },\n NZD: { fractionDigits: 2 },\n OMR: { fractionDigits: 3 },\n PAB: { fractionDigits: 2 },\n PEN: { fractionDigits: 2 },\n PGK: { fractionDigits: 2 },\n PHP: { fractionDigits: 2 },\n PKR: { fractionDigits: 2 },\n PLN: { fractionDigits: 2 },\n PTE: { fractionDigits: 0 },\n PYG: { fractionDigits: 0 },\n QAR: { fractionDigits: 2 },\n ROL: { fractionDigits: 2 },\n RON: { fractionDigits: 2 },\n RSD: { fractionDigits: 2 },\n RUB: { fractionDigits: 2 },\n RUR: { fractionDigits: 2 },\n RWF: { fractionDigits: 0 },\n SAR: { fractionDigits: 2 },\n SBD: { fractionDigits: 2 },\n SCR: { fractionDigits: 2 },\n SDD: { fractionDigits: 2 },\n SDG: { fractionDigits: 2 },\n SEK: { fractionDigits: 2 },\n SGD: { fractionDigits: 2 },\n SHP: { fractionDigits: 2 },\n SIT: { fractionDigits: 2 },\n SKK: { fractionDigits: 2 },\n SLL: { fractionDigits: 2 },\n SOS: { fractionDigits: 2 },\n SRD: { fractionDigits: 2 },\n SRG: { fractionDigits: 2 },\n SSP: { fractionDigits: 2 },\n STD: { fractionDigits: 2 },\n SVC: { fractionDigits: 2 },\n SYP: { fractionDigits: 2 },\n SZL: { fractionDigits: 2 },\n THB: { fractionDigits: 2 },\n TJS: { fractionDigits: 2 },\n TMM: { fractionDigits: 2 },\n TMT: { fractionDigits: 2 },\n TND: { fractionDigits: 3 },\n TOP: { fractionDigits: 2 },\n TPE: { fractionDigits: 0 },\n TRL: { fractionDigits: 0 },\n TRY: { fractionDigits: 2 },\n TTD: { fractionDigits: 2 },\n TWD: { fractionDigits: 2 },\n TZS: { fractionDigits: 2 },\n UAH: { fractionDigits: 2 },\n UGX: { fractionDigits: 0 },\n USD: { fractionDigits: 2 },\n USN: { fractionDigits: 2 },\n USS: { fractionDigits: 2 },\n UYU: { fractionDigits: 2 },\n UZS: { fractionDigits: 2 },\n VEB: { fractionDigits: 2 },\n VEF: { fractionDigits: 2 },\n VND: { fractionDigits: 0 },\n VUV: { fractionDigits: 0 },\n WST: { fractionDigits: 2 },\n XAF: { fractionDigits: 0 },\n XAG: { fractionDigits: -1 },\n XAU: { fractionDigits: -1 },\n XBA: { fractionDigits: -1 },\n XBB: { fractionDigits: -1 },\n XBC: { fractionDigits: -1 },\n XBD: { fractionDigits: -1 },\n XCD: { fractionDigits: 2 },\n XDR: { fractionDigits: -1 },\n XFO: { fractionDigits: -1 },\n XFU: { fractionDigits: -1 },\n XOF: { fractionDigits: 0 },\n XPD: { fractionDigits: -1 },\n XPF: { fractionDigits: 0 },\n XPT: { fractionDigits: -1 },\n XSU: { fractionDigits: -1 },\n XTS: { fractionDigits: -1 },\n XUA: { fractionDigits: -1 },\n XXX: { fractionDigits: -1 },\n YER: { fractionDigits: 2 },\n YUM: { fractionDigits: 2 },\n ZAR: { fractionDigits: 2 },\n ZMK: { fractionDigits: 2 },\n ZMW: { fractionDigits: 2 },\n ZWD: { fractionDigits: 2 },\n ZWL: { fractionDigits: 2 },\n ZWN: { fractionDigits: 2 },\n ZWR: { fractionDigits: 2 },\n} as const;\n\nexport default currencies;\n","import { createSlotRecipeContext } from \"@chakra-ui/react\";\nimport { Group } from \"@/components\";\nimport type {\n MoneyInputRootSlotProps,\n MoneyInputContainerSlotProps,\n MoneyInputCurrencySelectSlotProps,\n MoneyInputCurrencyLabelSlotProps,\n MoneyInputAmountInputSlotProps,\n MoneyInputBadgeSlotProps,\n} from \"./money-input.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"moneyInput\",\n});\n\nexport const MoneyInputRootSlot = withProvider<\n HTMLDivElement,\n MoneyInputRootSlotProps\n>(Group, \"root\");\n\nexport const MoneyInputContainerSlot = withContext<\n HTMLDivElement,\n MoneyInputContainerSlotProps\n>(\"div\", \"container\");\n\nexport const MoneyInputCurrencySelectSlot = withContext<\n HTMLDivElement,\n MoneyInputCurrencySelectSlotProps\n>(\"div\", \"currencySelect\");\n\nexport const MoneyInputCurrencyLabelSlot = withContext<\n HTMLLabelElement,\n MoneyInputCurrencyLabelSlotProps\n>(\"label\", \"currencyLabel\");\n\nexport const MoneyInputAmountInputSlot = withContext<\n HTMLInputElement,\n MoneyInputAmountInputSlotProps\n>(\"input\", \"amountInput\");\n\nexport const MoneyInputBadgeSlot = withContext<\n HTMLDivElement,\n MoneyInputBadgeSlotProps\n>(\"div\", \"badge\");\n","import currencies from \"./currencies\";\n\nexport type CurrencyCode = keyof typeof currencies;\n\ntype MoneyConditionalProps =\n | { type: \"highPrecision\"; preciseAmount: number }\n | {\n type: \"centPrecision\";\n preciseAmount?: never;\n };\n\nexport type MoneyValue = {\n currencyCode: CurrencyCode;\n centAmount: number;\n fractionDigits: number;\n} & MoneyConditionalProps;\n\nexport type MoneyInputValue = {\n amount: string;\n currencyCode: CurrencyCode | \"\";\n};\n\n// Currency parsing utilities for MoneyInput static methods\nexport const parseStringToMoneyValue = (\n rawAmount: string,\n locale: string,\n currencyCode?: CurrencyCode | \"\"\n): MoneyValue | null => {\n if (!currencyCode) return null;\n\n const currency = currencies[currencyCode];\n if (!currency) return null;\n // The user may enter a value with a comma, dot, or apostrophe as the decimal separator.\n if (rawAmount.length === 0 || rawAmount.trim() === \"\") return null;\n\n // Only warn if locale is missing AND currency has zero fraction digits\n if (!locale && currency.fractionDigits === 0) {\n console.warn(\n `MoneyInput: A locale must be provided when currency has no fraction digits (${currencyCode})`\n );\n }\n const amountAsNumber = parseFloat(rawAmount);\n if (isNaN(amountAsNumber)) return null;\n\n // The cent amount is rounded to the currency's default number\n // of fraction digits for prices with high precision.\n //\n // Additionally, JavaScript is sometimes incorrect when multiplying floats,\n // e.g. 2.49 * 100 -> 249.00000000000003\n // While inaccuracy from multiplying floating point numbers is a\n // general problem in JS, we can avoid it by cutting off all\n // decimals. This is possible since cents is the base unit, so we\n // operate on integers anyways\n // Also we should the round the value to ensure that we come close\n // to the nearest decimal value\n // ref: https://github.com/commercetools/merchant-center-frontend/pull/770\n const centAmount = Math.trunc(\n Math.round(amountAsNumber * 10 ** currency.fractionDigits)\n );\n\n const fractionDigitsOfAmount =\n // The conversion to a string will always use a dot as the separator.\n // That means we don't have to handle a comma.\n String(amountAsNumber).indexOf(\".\") === -1\n ? 0\n : String(amountAsNumber).length - String(amountAsNumber).indexOf(\".\") - 1;\n\n if (fractionDigitsOfAmount > currency.fractionDigits) {\n return {\n type: \"highPrecision\",\n currencyCode,\n centAmount,\n preciseAmount: parseInt(\n // Here we need to convert a number like 8.066652 to its centamount\n // We could do that by multiplying it with 10 ** number-of-fraction-digits\n // but then we'll run into problems with JavaScript's floating point\n // number precision and end up with 8066651.9999999, and then parseInt\n // cuts off the remainder.\n // So instead of using maths to convert the number, we just replace\n // the dot inside the number which does the same thing.\n // We don't need to replace \",\" as well, as numbers always us a dot\n // when converted using String().\n //\n // The mathematical way: amountAsNumber * 10 ** fractionDigitsOfAmount,\n String(amountAsNumber).replace(\".\", \"\"),\n 10\n ),\n fractionDigits: fractionDigitsOfAmount,\n };\n }\n\n return {\n type: \"centPrecision\",\n currencyCode,\n centAmount,\n fractionDigits: currency.fractionDigits,\n };\n};\n\nexport const createNullMoneyValue = (\n currencyCode: CurrencyCode\n): MoneyValue => ({\n type: \"centPrecision\",\n currencyCode,\n centAmount: NaN,\n fractionDigits: 2,\n});\n\nexport const extractDecimalAmount = (moneyValue: MoneyValue) =>\n moneyValue.type === \"highPrecision\"\n ? moneyValue.preciseAmount / 10 ** moneyValue.fractionDigits\n : moneyValue.centAmount /\n 10 ** currencies[moneyValue.currencyCode].fractionDigits;\n","import currencies from \"./currencies\";\nimport {\n parseStringToMoneyValue,\n extractDecimalAmount,\n type MoneyValue,\n type MoneyInputValue,\n} from \"./parsing-utilities\";\n\n// Replace lodash/has with native implementation\nconst has = (obj: Record<string, unknown>, key: string): boolean => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\n// Static method implementations - preserve exact logic from UI Kit\nexport function getMoneyGroupAttribute(\n attr?: string,\n inputType?: string\n): string | undefined {\n return attr && inputType ? `${attr}.${inputType}` : undefined;\n}\n\nexport const transformFormInputToMoneyValue = (\n value: MoneyInputValue,\n locale: string\n) =>\n parseStringToMoneyValue(\n typeof value.amount === \"string\" ? value.amount.trim() : \"\",\n locale,\n value.currencyCode\n );\n\nexport const formatMoneyValueForDisplay = (\n moneyValue: MoneyValue,\n locale: string\n): MoneyInputValue => {\n if (!moneyValue) return { currencyCode: \"\", amount: \"\" };\n\n console.warn(\n typeof locale === \"string\",\n \"MoneyInput.parseMoneyValue: A locale must be passed as the second argument\"\n );\n\n console.warn(\n typeof moneyValue === \"object\",\n \"MoneyInput.parseMoneyValue: Value must be passed as an object or be undefined\"\n );\n\n console.warn(\n typeof moneyValue.currencyCode === \"string\",\n 'MoneyInput.parseMoneyValue: Value must contain \"currencyCode\"'\n );\n\n if (typeof moneyValue.currencyCode !== \"string\") {\n throw new Error(\n 'MoneyInput.parseMoneyValue: Value must contain \"currencyCode\"'\n );\n }\n\n console.warn(\n has(currencies, moneyValue.currencyCode),\n \"MoneyInput.parseMoneyValue: Value must use known currency code\"\n );\n\n if (!has(currencies, moneyValue.currencyCode)) {\n throw new Error(\n \"MoneyInput.parseMoneyValue: Value must use known currency code\"\n );\n }\n\n console.warn(\n // highPrecision or centPrecision values must be set\n typeof moneyValue.centAmount === \"number\" ||\n (typeof moneyValue.preciseAmount === \"number\" &&\n typeof moneyValue.fractionDigits === \"number\"),\n 'MoneyInput.parseMoneyValue: Value must contain \"amount\"'\n );\n\n // Direct formatting without circular conversion\n const amountAsNumber = extractDecimalAmount(moneyValue);\n const fractionDigits = moneyValue.preciseAmount\n ? moneyValue.fractionDigits\n : currencies[moneyValue.currencyCode].fractionDigits;\n\n const amount = isNaN(amountAsNumber)\n ? \"\"\n : amountAsNumber.toLocaleString(locale, {\n minimumFractionDigits: fractionDigits,\n });\n\n return { amount, currencyCode: moneyValue.currencyCode };\n};\n\nexport const isEmpty = (formValue: MoneyInputValue) => {\n return (\n !formValue ||\n formValue?.amount?.trim() === \"\" ||\n formValue?.currencyCode?.trim() === \"\"\n );\n};\n\nexport const isHighPrecision = (\n formValue: MoneyInputValue,\n locale: string\n): boolean => {\n if (isEmpty(formValue)) {\n return false;\n }\n const moneyValue = transformFormInputToMoneyValue(formValue, locale);\n return moneyValue?.type === \"highPrecision\";\n};\n","import { defineMessages } from \"react-intl\";\n\nexport default defineMessages({\n currencySelectLabel: {\n id: \"Nimbus.MoneyInput.currencySelectLabel\",\n description: \"aria-label for currency selection dropdown\",\n defaultMessage: \"Currency\",\n },\n amountInputLabel: {\n id: \"Nimbus.MoneyInput.amountInputLabel\",\n description: \"aria-label for amount input\",\n defaultMessage: \"Amount\",\n },\n highPrecisionPrice: {\n id: \"Nimbus.MoneyInput.highPrecisionPrice\",\n description: \"tooltip text for high precision price badge\",\n defaultMessage: \"High precision price\",\n },\n});\n","import { useCallback, useMemo } from \"react\";\nimport { useSlotRecipe } from \"@chakra-ui/react/styled-system\";\nimport { useId, useLocale } from \"react-aria\";\nimport { designTokens } from \"@commercetools/nimbus-tokens\";\nimport { useIntl, FormattedMessage } from \"react-intl\";\nimport {\n NumberInput,\n Select,\n Tooltip,\n Box,\n MakeElementFocusable,\n} from \"@/components\";\nimport { HighPrecision } from \"@commercetools/nimbus-icons\";\nimport { extractStyleProps } from \"@/utils\";\nimport currenciesData from \"./utils/currencies\";\nimport {\n MoneyInputRootSlot,\n MoneyInputContainerSlot,\n MoneyInputCurrencySelectSlot,\n MoneyInputCurrencyLabelSlot,\n MoneyInputAmountInputSlot,\n MoneyInputBadgeSlot,\n} from \"./money-input.slots\";\nimport { moneyInputRecipe } from \"./money-input.recipe\";\nimport {\n getMoneyGroupAttribute,\n isHighPrecision,\n transformFormInputToMoneyValue,\n formatMoneyValueForDisplay,\n isEmpty,\n} from \"./utils\";\nimport type {\n CustomEvent,\n MoneyInputProps,\n CurrencyCode,\n} from \"./money-input.types\";\nimport messages from \"./money-input.i18n\";\n\n/**\n * # MoneyInput\n *\n * A specialized input component for entering monetary amounts with currency selection.\n * Supports high precision values and automatic locale-based formatting.\n *\n * ## Usage\n *\n * ### Modern API (Recommended)\n *\n * Use the modern event handlers for better type safety and cleaner code:\n *\n * ```tsx\n * function MyComponent() {\n * const [value, setValue] = useState<TValue>({\n * amount: \"\",\n * currencyCode: \"USD\",\n * });\n *\n * return (\n * <MoneyInput\n * value={value}\n * currencies={[\"USD\", \"EUR\", \"GBP\"]}\n * onValueChange={setValue} // Recommended: handles complete value changes\n * onAmountChange={(amount) => console.log(\"Amount:\", amount)}\n * onCurrencyChange={(currency) => console.log(\"Currency:\", currency)}\n * />\n * );\n * }\n * ```\n *\n * ### Legacy API (Deprecated)\n *\n * For backward compatibility only - migrate to modern API when possible:\n *\n * ```tsx\n * function LegacyComponent() {\n * const [value, setValue] = useState<TValue>({ amount: \"\", currencyCode: \"USD\" });\n *\n * const handleChange = (event: TCustomEvent) => {\n * const { name, value } = event.target;\n * if (name?.endsWith(\".amount\")) {\n * setValue(prev => ({ ...prev, amount: value as string }));\n * } else if (name?.endsWith(\".currencyCode\")) {\n * setValue(prev => ({ ...prev, currencyCode: value as CurrencyCode }));\n * }\n * };\n *\n * return (\n * <MoneyInput\n * value={value}\n * currencies={[\"USD\", \"EUR\"]}\n * onChange={handleChange} // Deprecated - use onValueChange instead\n * />\n * );\n * }\n * ```\n *\n * ## Features\n *\n * - **Type-safe currency handling** with CurrencyCode enum\n * - **High precision support** for values exceeding standard currency precision\n * - **Automatic locale formatting** using React Aria NumberField\n * - **Accessibility compliant** following WCAG 2.1 AA standards\n * - **Dual API support** for backward compatibility and modern development\n */\nexport const MoneyInput = (props: MoneyInputProps) => {\n const {\n id,\n name,\n value,\n currencies = [],\n onChange,\n onValueChange,\n onAmountChange,\n onCurrencyChange,\n onFocus,\n onBlur,\n isDisabled,\n isReadOnly,\n isInvalid,\n isRequired,\n hasHighPrecisionBadge = true,\n isCurrencyInputDisabled,\n placeholder = \"0.00\",\n autoFocus,\n size,\n ...restProps\n } = props;\n\n // Generate IDs\n const defaultGroupId = useId();\n const groupId = id ?? defaultGroupId;\n\n // Get locale for formatting\n const { locale } = useLocale();\n const intl = useIntl();\n\n // Convert string value to number for NumberInput\n const numericValue = value.amount ? parseFloat(value.amount) : undefined;\n\n // Detect whether the currency select or currency label should display\n const hasNoCurrencies = !currencies || currencies.length === 0;\n\n // High precision detection using raw input value - default to en if locale is not provided\n const isCurrentlyHighPrecision = isHighPrecision(value, locale || \"en\");\n\n // Create currency-aware format options for NumberInput\n const formatOptions: Intl.NumberFormatOptions = useMemo(() => {\n if (!value.currencyCode) return {};\n\n // Decimal style: pure number formatting without currency symbols\n // Handles high precision mode for extended decimal places\n return {\n minimumFractionDigits: currenciesData[value.currencyCode].fractionDigits, // Always respect currency minimum (e.g., 2 for USD, 0 for JPY)\n maximumFractionDigits: 20, // Always use a maximum of 20 decimal places to match API precision\n useGrouping: true, // Keep thousand separators for readability (formatted per locale)\n style: \"decimal\", // Use decimal to avoid currency symbol conflicts\n };\n }, [value.currencyCode, locale]);\n\n // Recipe setup\n const recipe = useSlotRecipe({ recipe: moneyInputRecipe });\n const [recipeProps, recipeRestProps] = recipe.splitVariantProps({\n ...restProps,\n size,\n });\n const [styleProps, remainingProps] = extractStyleProps(recipeRestProps);\n\n // Id's and Names for each group input type\n const amountInputId = getMoneyGroupAttribute(groupId, \"amount\");\n const currencySelectId = getMoneyGroupAttribute(groupId, \"currencyCode\");\n const amountInputName = getMoneyGroupAttribute(name, \"amount\");\n const currencySelectName = getMoneyGroupAttribute(name, \"currencyCode\");\n\n // Event handlers - NumberInput will preserve decimal precision with new settings\n const handleAmountChange = useCallback(\n (newValue: number) => {\n const stringValue = newValue.toString();\n\n // Support legacy API\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: stringValue,\n },\n };\n onChange?.(event);\n\n // Support modern APIs\n const newValueObject = { ...value, amount: stringValue };\n onValueChange?.(newValueObject);\n onAmountChange?.(stringValue);\n },\n [onChange, onValueChange, onAmountChange, value, groupId, name]\n );\n\n const handleAmountFocus = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: value.amount,\n },\n };\n onFocus?.(event);\n }, [onFocus, value.amount, id, name]);\n\n const handleAmountBlur = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: value.amount,\n },\n };\n onBlur?.(event);\n }, [onBlur, value, id, name]);\n\n const handleCurrencyChange = useCallback(\n (currencyCode: string) => {\n // Support legacy API\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: currencyCode,\n },\n };\n onChange?.(event);\n\n // Support modern APIs\n const newValueObject = {\n ...value,\n currencyCode: currencyCode as CurrencyCode,\n };\n onValueChange?.(newValueObject);\n onCurrencyChange?.(currencyCode as CurrencyCode);\n },\n [onChange, onValueChange, onCurrencyChange, value, id, name]\n );\n\n const handleCurrencyFocus = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: value.currencyCode,\n },\n };\n onFocus?.(event);\n }, [onFocus, value.currencyCode, id, name]);\n\n const handleCurrencyBlur = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: value.currencyCode,\n },\n };\n onBlur?.(event);\n }, [onBlur, value.currencyCode, id, name]);\n\n const handleCurrencySelectionChange = useCallback(\n (selectedKey: string | number | null) => {\n if (selectedKey && typeof selectedKey === \"string\") {\n handleCurrencyChange(selectedKey);\n }\n },\n [handleCurrencyChange]\n );\n\n const noCurrenciesLabelId = useId();\n const highPrecisionBadgeId = useId();\n\n return (\n <MoneyInputRootSlot {...recipeProps} {...styleProps} {...remainingProps}>\n <MoneyInputContainerSlot>\n {/* Currency Select or Label */}\n <MoneyInputCurrencySelectSlot>\n {hasNoCurrencies ? (\n <MoneyInputCurrencyLabelSlot\n {...(isDisabled && { \"data-disabled\": isDisabled })}\n asChild\n >\n <label id={noCurrenciesLabelId}>{value.currencyCode}</label>\n </MoneyInputCurrencyLabelSlot>\n ) : (\n <Select.Root\n id={currencySelectId}\n name={currencySelectName}\n selectedKey={value.currencyCode || null}\n onSelectionChange={handleCurrencySelectionChange}\n onFocus={handleCurrencyFocus}\n onBlur={handleCurrencyBlur}\n isDisabled={isCurrencyInputDisabled || isDisabled || isReadOnly}\n isClearable={false}\n placeholder=\"\"\n aria-label={intl.formatMessage(messages.currencySelectLabel)}\n size={size}\n >\n <Select.Options>\n {currencies.map((currencyCode) => (\n <Select.Option key={currencyCode} id={currencyCode}>\n {currencyCode}\n </Select.Option>\n ))}\n </Select.Options>\n </Select.Root>\n )}\n </MoneyInputCurrencySelectSlot>\n\n {/* Amount Input - NumberInput handles live user interaction */}\n <MoneyInputAmountInputSlot\n data-has-high-precision={\n hasHighPrecisionBadge && isCurrentlyHighPrecision\n }\n asChild\n >\n <NumberInput\n id={amountInputId}\n name={amountInputName}\n value={numericValue}\n formatOptions={formatOptions}\n onChange={handleAmountChange}\n onFocus={handleAmountFocus}\n onBlur={handleAmountBlur}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isRequired={isRequired}\n placeholder={placeholder}\n autoFocus={autoFocus}\n size={size}\n //base accessible name: \"Amount\"\n aria-label={intl.formatMessage(messages.amountInputLabel)}\n // accessible name when hasNoCurrencies=true: \"<CURRENCY_CODE> Amount\"\n aria-labelledby={noCurrenciesLabelId}\n // accessible name when high precision: \"High Precision Amount\"\n aria-describedby={highPrecisionBadgeId}\n // See the types file for why we don't use step\n step={undefined}\n />\n </MoneyInputAmountInputSlot>\n {/* High Precision Badge */}\n {hasHighPrecisionBadge && isCurrentlyHighPrecision && (\n <MoneyInputBadgeSlot>\n <Tooltip.Root delay={0} closeDelay={0}>\n <MakeElementFocusable>\n <Box\n as={HighPrecision}\n id={highPrecisionBadgeId}\n color={isDisabled ? \"neutral.8\" : \"neutral.11\"}\n aria-label={intl.formatMessage(messages.highPrecisionPrice)}\n // Position the badge correctly as we don't want layout shift that occurs with trailingElement use in the underlying NumberInput\n transform={`translateX(-${designTokens.spacing[\"1200\"]})`}\n />\n </MakeElementFocusable>\n <Tooltip.Content placement=\"top\">\n <FormattedMessage {...messages.highPrecisionPrice} />\n </Tooltip.Content>\n </Tooltip.Root>\n </MoneyInputBadgeSlot>\n )}\n </MoneyInputContainerSlot>\n </MoneyInputRootSlot>\n );\n};\n\n// Static methods for UI-Kit compatibility and internal utilities\nMoneyInput.getAmountInputId = (id?: string) =>\n getMoneyGroupAttribute(id, \"amount\");\nMoneyInput.getCurrencyDropdownId = (id?: string) =>\n getMoneyGroupAttribute(id, \"currencyCode\");\nMoneyInput.convertToMoneyValue = transformFormInputToMoneyValue;\nMoneyInput.parseMoneyValue = formatMoneyValueForDisplay;\nMoneyInput.isEmpty = isEmpty;\nMoneyInput.isHighPrecision = isHighPrecision;\n\n// Display name\nMoneyInput.displayName = \"MoneyInput\";\n"],"names":["currencies","withProvider","withContext","createSlotRecipeContext","MoneyInputRootSlot","Group","MoneyInputContainerSlot","MoneyInputCurrencySelectSlot","MoneyInputCurrencyLabelSlot","MoneyInputAmountInputSlot","MoneyInputBadgeSlot","parseStringToMoneyValue","rawAmount","locale","currencyCode","currency","amountAsNumber","centAmount","fractionDigitsOfAmount","extractDecimalAmount","moneyValue","has","obj","key","getMoneyGroupAttribute","attr","inputType","transformFormInputToMoneyValue","value","formatMoneyValueForDisplay","fractionDigits","isEmpty","formValue","isHighPrecision","messages","defineMessages","MoneyInput","props","id","name","onChange","onValueChange","onAmountChange","onCurrencyChange","onFocus","onBlur","isDisabled","isReadOnly","isInvalid","isRequired","hasHighPrecisionBadge","isCurrencyInputDisabled","placeholder","autoFocus","size","restProps","defaultGroupId","useId","groupId","useLocale","intl","useIntl","numericValue","hasNoCurrencies","isCurrentlyHighPrecision","formatOptions","useMemo","currenciesData","recipe","useSlotRecipe","moneyInputRecipe","recipeProps","recipeRestProps","styleProps","remainingProps","extractStyleProps","amountInputId","currencySelectId","amountInputName","currencySelectName","handleAmountChange","useCallback","newValue","stringValue","newValueObject","handleAmountFocus","event","handleAmountBlur","handleCurrencyChange","handleCurrencyFocus","handleCurrencyBlur","handleCurrencySelectionChange","selectedKey","noCurrenciesLabelId","highPrecisionBadgeId","jsx","jsxs","Select","NumberInput","Tooltip","MakeElementFocusable","Box","HighPrecision","designTokens","FormattedMessage"],"mappings":";;;;;;;;;;;;;;;;;AAeA,MAAMA,IAAa;AAAA,EACjB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,E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"}
@@ -1,160 +0,0 @@
1
- import { jsxs as p, jsx as t } from "react/jsx-runtime";
2
- import { useState as y, useCallback as x, useMemo as G } from "react";
3
- import { ChevronLeft as L, ChevronRight as j } from "@commercetools/nimbus-icons";
4
- import { S as R } from "./stack-CoNreM7B.es.js";
5
- import { Flex as v } from "@chakra-ui/react/flex";
6
- import { S as N } from "./select-Dny1auOH.es.js";
7
- import { T as C } from "./text-BufUKCee.es.js";
8
- import { I as D } from "./icon-button-CNauu_zf.es.js";
9
- import { N as V } from "./number-input-DO5bD82a.es.js";
10
- function B({
11
- totalItems: n,
12
- currentPage: m,
13
- pageSize: h = 20,
14
- onPageChange: s,
15
- onPageSizeChange: g
16
- }) {
17
- const [M, u] = y(1), [z, T] = y(h), r = m !== void 0, a = r ? m : M, o = h ?? z, i = Math.max(1, Math.ceil(n / o)), e = Math.max(1, Math.min(a, i)), P = Math.min((e - 1) * o + 1, n), w = Math.min(e * o, n), d = e > 1, f = e < i, l = x(
18
- (c) => {
19
- const S = Math.max(1, Math.min(c, i));
20
- r || u(S), s?.(S);
21
- },
22
- [i, r, s]
23
- ), I = x(() => {
24
- d && l(e - 1);
25
- }, [d, e, l]), O = x(() => {
26
- f && l(e + 1);
27
- }, [f, e, l]), k = x(
28
- (c) => {
29
- const S = Math.ceil(n / c), b = Math.min(e, S);
30
- T(c), !r && b !== e && u(b), g?.(c), b !== e && s?.(b);
31
- },
32
- [n, e, r, s, g]
33
- );
34
- return G(
35
- () => ({
36
- totalItems: n,
37
- currentPage: e,
38
- pageSize: o,
39
- totalPages: i,
40
- startItem: P,
41
- endItem: w,
42
- hasPreviousPage: d,
43
- hasNextPage: f,
44
- goToPage: l,
45
- goToPreviousPage: I,
46
- goToNextPage: O,
47
- setPageSize: k
48
- }),
49
- [
50
- n,
51
- e,
52
- o,
53
- i,
54
- P,
55
- w,
56
- d,
57
- f,
58
- l,
59
- I,
60
- O,
61
- k
62
- ]
63
- );
64
- }
65
- const F = (n) => {
66
- const {
67
- totalItems: m,
68
- currentPage: h,
69
- pageSize: s,
70
- pageSizeOptions: g = [10, 20, 50, 100],
71
- onPageChange: M,
72
- onPageSizeChange: u,
73
- "aria-label": z = "Pagination",
74
- enablePageInput: T = !0,
75
- enablePageSizeSelector: r = !0
76
- } = n, a = B({
77
- totalItems: m,
78
- currentPage: h,
79
- pageSize: s,
80
- onPageChange: M,
81
- onPageSizeChange: u
82
- }), o = G(
83
- () => g.map((e) => ({
84
- id: e.toString(),
85
- name: `${e}`
86
- })),
87
- [g]
88
- ), i = (e) => {
89
- if (e) {
90
- const P = parseInt(e.toString(), 10);
91
- a.setPageSize(P);
92
- }
93
- };
94
- return /* @__PURE__ */ p(R, { gap: "400", direction: { base: "column", sm: "row" }, align: "center", children: [
95
- r && /* @__PURE__ */ p(v, { align: "center", gap: "200", children: [
96
- /* @__PURE__ */ t(
97
- N.Root,
98
- {
99
- isClearable: !1,
100
- selectedKey: a.pageSize.toString(),
101
- onSelectionChange: i,
102
- "aria-label": "Items per page",
103
- children: /* @__PURE__ */ t(N.Options, { children: o.map((e) => /* @__PURE__ */ t(N.Option, { id: e.id, children: e.name }, e.id)) })
104
- }
105
- ),
106
- /* @__PURE__ */ t(C, { color: "neutral.12", children: "items per page" })
107
- ] }),
108
- /* @__PURE__ */ t(v, { flexGrow: "1" }),
109
- /* @__PURE__ */ p(v, { align: "center", gap: "200", role: "navigation", "aria-label": z, children: [
110
- /* @__PURE__ */ t(
111
- D,
112
- {
113
- onClick: a.goToPreviousPage,
114
- isDisabled: !a.hasPreviousPage,
115
- variant: "ghost",
116
- tone: "primary",
117
- "aria-label": "Go to previous page",
118
- children: /* @__PURE__ */ t(L, {})
119
- }
120
- ),
121
- /* @__PURE__ */ p(v, { align: "center", gap: "200", children: [
122
- /* @__PURE__ */ t(C, { color: "neutral.12", children: "Page" }),
123
- T ? /* @__PURE__ */ t(
124
- V,
125
- {
126
- value: a.currentPage,
127
- onChange: (e) => a.goToPage(e || 1),
128
- minValue: 1,
129
- maxValue: a.totalPages,
130
- step: 1,
131
- isDisabled: !1,
132
- width: "9ch",
133
- "aria-label": "Current page",
134
- "aria-current": "page"
135
- }
136
- ) : /* @__PURE__ */ t(C, { fontWeight: "semibold", color: "neutral.12", "aria-current": "page", children: a.currentPage }),
137
- /* @__PURE__ */ p(C, { color: "neutral.12", children: [
138
- "of ",
139
- a.totalPages.toLocaleString()
140
- ] })
141
- ] }),
142
- /* @__PURE__ */ t(
143
- D,
144
- {
145
- onClick: a.goToNextPage,
146
- isDisabled: !a.hasNextPage,
147
- variant: "ghost",
148
- tone: "primary",
149
- "aria-label": "Go to next page",
150
- children: /* @__PURE__ */ t(j, {})
151
- }
152
- )
153
- ] })
154
- ] });
155
- };
156
- F.displayName = "Pagination";
157
- export {
158
- F as P
159
- };
160
- //# sourceMappingURL=pagination-CjUoltTe.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-CjUoltTe.es.js","sources":["../../src/components/pagination/hooks/use-pagination.ts","../../src/components/pagination/pagination.tsx"],"sourcesContent":["import { useState, useCallback, useMemo } from \"react\";\n\nexport type PaginationState = {\n /** Total number of items across all pages */\n totalItems: number;\n /** Current active page (1-based) */\n currentPage: number;\n /** Number of items displayed per page */\n pageSize: number;\n /** Total number of pages available */\n totalPages: number;\n /** Index of the first item on current page (1-based) */\n startItem: number;\n /** Index of the last item on current page (1-based) */\n endItem: number;\n /** Whether there is a previous page available */\n hasPreviousPage: boolean;\n /** Whether there is a next page available */\n hasNextPage: boolean;\n};\n\nexport type UsePaginationProps = {\n /** Total number of items to paginate */\n totalItems: number;\n /** Initial current page (1-based), defaults to 1 */\n currentPage?: number;\n /** Initial number of items per page, defaults to 10 */\n pageSize?: number;\n /** Callback fired when the current page changes */\n onPageChange?: (page: number) => void;\n /** Callback fired when the page size changes */\n onPageSizeChange?: (pageSize: number) => void;\n};\n\nexport type UsePaginationReturn = PaginationState & {\n /** Navigate to a specific page number (1-based) */\n goToPage: (page: number) => void;\n /** Navigate to the previous page, if available */\n goToPreviousPage: () => void;\n /** Navigate to the next page, if available */\n goToNextPage: () => void;\n /** Change the number of items displayed per page */\n setPageSize: (pageSize: number) => void;\n};\n\n/**\n * # usePagination\n *\n * Custom hook that provides pagination state management and navigation controls.\n *\n * Supports both controlled and uncontrolled modes:\n * - Controlled: Parent component manages currentPage state via props and callbacks\n * - Uncontrolled: Hook manages internal currentPage state automatically\n *\n * @param props - Configuration object for pagination behavior\n * @param props.totalItems - Total number of items to paginate\n * @param props.currentPage - Current page number (controlled mode). If undefined, uses uncontrolled mode\n * @param props.pageSize - Number of items per page (defaults to 20)\n * @param props.onPageChange - Callback fired when page changes\n * @param props.onPageSizeChange - Callback fired when page size changes\n *\n * @returns Object containing pagination state and navigation functions:\n * - totalItems: Total number of items\n * - currentPage: Current active page number (1-based)\n * - pageSize: Number of items per page\n * - totalPages: Total number of pages\n * - startItem: First item number on current page\n * - endItem: Last item number on current page\n * - hasPreviousPage: Whether previous page exists\n * - hasNextPage: Whether next page exists\n * - goToPage: Function to navigate to specific page\n * - goToPreviousPage: Function to navigate to previous page\n * - goToNextPage: Function to navigate to next page\n * - setPageSize: Function to change page size\n *\n */\nexport function usePagination({\n totalItems,\n currentPage: controlledCurrentPage,\n pageSize: controlledPageSize = 20,\n onPageChange,\n onPageSizeChange,\n}: UsePaginationProps): UsePaginationReturn {\n // Internal state for uncontrolled mode\n const [internalCurrentPage, setInternalCurrentPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(controlledPageSize);\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledCurrentPage !== undefined;\n const currentPage = isControlled\n ? controlledCurrentPage\n : internalCurrentPage;\n const pageSize = controlledPageSize ?? internalPageSize;\n\n // Calculate pagination values\n const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));\n\n // Ensure currentPage is within valid bounds\n const validCurrentPage = Math.max(1, Math.min(currentPage, totalPages));\n\n const startItem = Math.min((validCurrentPage - 1) * pageSize + 1, totalItems);\n const endItem = Math.min(validCurrentPage * pageSize, totalItems);\n\n const hasPreviousPage = validCurrentPage > 1;\n const hasNextPage = validCurrentPage < totalPages;\n\n // Page navigation functions\n const goToPage = useCallback(\n (page: number) => {\n const newPage = Math.max(1, Math.min(page, totalPages));\n\n if (!isControlled) {\n setInternalCurrentPage(newPage);\n }\n\n onPageChange?.(newPage);\n },\n [totalPages, isControlled, onPageChange]\n );\n\n const goToPreviousPage = useCallback(() => {\n if (hasPreviousPage) {\n goToPage(validCurrentPage - 1);\n }\n }, [hasPreviousPage, validCurrentPage, goToPage]);\n\n const goToNextPage = useCallback(() => {\n if (hasNextPage) {\n goToPage(validCurrentPage + 1);\n }\n }, [hasNextPage, validCurrentPage, goToPage]);\n\n const setPageSize = useCallback(\n (newPageSize: number) => {\n const newTotalPages = Math.ceil(totalItems / newPageSize);\n const newPage = Math.min(validCurrentPage, newTotalPages);\n\n setInternalPageSize(newPageSize);\n\n if (!isControlled && newPage !== validCurrentPage) {\n setInternalCurrentPage(newPage);\n }\n\n onPageSizeChange?.(newPageSize);\n\n if (newPage !== validCurrentPage) {\n onPageChange?.(newPage);\n }\n },\n [totalItems, validCurrentPage, isControlled, onPageChange, onPageSizeChange]\n );\n\n return useMemo(\n () => ({\n totalItems,\n currentPage: validCurrentPage,\n pageSize,\n totalPages,\n startItem,\n endItem,\n hasPreviousPage,\n hasNextPage,\n goToPage,\n goToPreviousPage,\n goToNextPage,\n setPageSize,\n }),\n [\n totalItems,\n validCurrentPage,\n pageSize,\n totalPages,\n startItem,\n endItem,\n hasPreviousPage,\n hasNextPage,\n goToPage,\n goToPreviousPage,\n goToNextPage,\n setPageSize,\n ]\n );\n}\n","import { useMemo } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"@commercetools/nimbus-icons\";\nimport {\n Flex,\n IconButton,\n NumberInput,\n Select,\n Stack,\n Text,\n} from \"@/components\";\nimport { usePagination } from \"./hooks/use-pagination\";\nimport type { PaginationProps } from \"./pagination.types\";\n\n/**\n * # Pagination\n *\n * A component that allows users to navigate through pages and control page size.\n * Combines a page size selector and page navigator for comprehensive pagination control.\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/pagination}\n */\nexport const Pagination = (props: PaginationProps) => {\n const {\n totalItems,\n currentPage,\n pageSize,\n pageSizeOptions = [10, 20, 50, 100],\n onPageChange,\n onPageSizeChange,\n \"aria-label\": ariaLabel = \"Pagination\",\n enablePageInput = true,\n enablePageSizeSelector = true,\n } = props;\n\n const pagination = usePagination({\n totalItems,\n currentPage,\n pageSize,\n onPageChange,\n onPageSizeChange,\n });\n\n // Prepare page size options for select\n const pageSizeSelectOptions = useMemo(\n () =>\n pageSizeOptions.map((size) => ({\n id: size.toString(),\n name: `${size}`,\n })),\n [pageSizeOptions]\n );\n\n const handlePageSizeChange = (key: React.Key | null) => {\n if (key) {\n const newPageSize = parseInt(key.toString(), 10);\n pagination.setPageSize(newPageSize);\n }\n };\n\n return (\n <Stack gap=\"400\" direction={{ base: \"column\", sm: \"row\" }} align=\"center\">\n {/* Page Size Selector */}\n {enablePageSizeSelector && (\n <Flex align=\"center\" gap=\"200\">\n <Select.Root\n isClearable={false}\n selectedKey={pagination.pageSize.toString()}\n onSelectionChange={handlePageSizeChange}\n aria-label=\"Items per page\"\n >\n <Select.Options>\n {pageSizeSelectOptions.map((option) => (\n <Select.Option key={option.id} id={option.id}>\n {option.name}\n </Select.Option>\n ))}\n </Select.Options>\n </Select.Root>\n <Text color=\"neutral.12\">items per page</Text>\n </Flex>\n )}\n <Flex flexGrow=\"1\" />\n {/* Page Navigator */}\n <Flex align=\"center\" gap=\"200\" role=\"navigation\" aria-label={ariaLabel}>\n <IconButton\n onClick={pagination.goToPreviousPage}\n isDisabled={!pagination.hasPreviousPage}\n variant=\"ghost\"\n tone=\"primary\"\n aria-label=\"Go to previous page\"\n >\n <ChevronLeft />\n </IconButton>\n\n <Flex align=\"center\" gap=\"200\">\n <Text color=\"neutral.12\">Page</Text>\n {enablePageInput ? (\n <NumberInput\n value={pagination.currentPage}\n onChange={(value: number | undefined) =>\n pagination.goToPage(value || 1)\n }\n minValue={1}\n maxValue={pagination.totalPages}\n step={1}\n isDisabled={false}\n width=\"9ch\"\n aria-label=\"Current page\"\n aria-current=\"page\"\n />\n ) : (\n <Text fontWeight=\"semibold\" color=\"neutral.12\" aria-current=\"page\">\n {pagination.currentPage}\n </Text>\n )}\n <Text color=\"neutral.12\">\n of {pagination.totalPages.toLocaleString()}\n </Text>\n </Flex>\n\n <IconButton\n onClick={pagination.goToNextPage}\n isDisabled={!pagination.hasNextPage}\n variant=\"ghost\"\n tone=\"primary\"\n aria-label=\"Go to next page\"\n >\n <ChevronRight />\n </IconButton>\n </Flex>\n </Stack>\n );\n};\n\n// Manually assign a displayName for debugging purposes\nPagination.displayName = \"Pagination\";\n"],"names":["usePagination","totalItems","controlledCurrentPage","controlledPageSize","onPageChange","onPageSizeChange","internalCurrentPage","setInternalCurrentPage","useState","internalPageSize","setInternalPageSize","isControlled","currentPage","pageSize","totalPages","validCurrentPage","startItem","endItem","hasPreviousPage","hasNextPage","goToPage","useCallback","page","newPage","goToPreviousPage","goToNextPage","setPageSize","newPageSize","newTotalPages","useMemo","Pagination","props","pageSizeOptions","ariaLabel","enablePageInput","enablePageSizeSelector","pagination","pageSizeSelectOptions","size","handlePageSizeChange","key","jsxs","Stack","Flex","jsx","Select","option","Text","IconButton","ChevronLeft","NumberInput","value","ChevronRight"],"mappings":";;;;;;;;;AA4EO,SAASA,EAAc;AAAA,EAC5B,YAAAC;AAAA,EACA,aAAaC;AAAA,EACb,UAAUC,IAAqB;AAAA,EAC/B,cAAAC;AAAA,EACA,kBAAAC;AACF,GAA4C;AAE1C,QAAM,CAACC,GAAqBC,CAAsB,IAAIC,EAAS,CAAC,GAC1D,CAACC,GAAkBC,CAAmB,IAAIF,EAASL,CAAkB,GAGrEQ,IAAeT,MAA0B,QACzCU,IAAcD,IAChBT,IACAI,GACEO,IAAWV,KAAsBM,GAGjCK,IAAa,KAAK,IAAI,GAAG,KAAK,KAAKb,IAAaY,CAAQ,CAAC,GAGzDE,IAAmB,KAAK,IAAI,GAAG,KAAK,IAAIH,GAAaE,CAAU,CAAC,GAEhEE,IAAY,KAAK,KAAKD,IAAmB,KAAKF,IAAW,GAAGZ,CAAU,GACtEgB,IAAU,KAAK,IAAIF,IAAmBF,GAAUZ,CAAU,GAE1DiB,IAAkBH,IAAmB,GACrCI,IAAcJ,IAAmBD,GAGjCM,IAAWC;AAAA,IACf,CAACC,MAAiB;AAChB,YAAMC,IAAU,KAAK,IAAI,GAAG,KAAK,IAAID,GAAMR,CAAU,CAAC;AAEtD,MAAKH,KACHJ,EAAuBgB,CAAO,GAGhCnB,IAAemB,CAAO;AAAA,IACxB;AAAA,IACA,CAACT,GAAYH,GAAcP,CAAY;AAAA,EAAA,GAGnCoB,IAAmBH,EAAY,MAAM;AACzC,IAAIH,KACFE,EAASL,IAAmB,CAAC;AAAA,EAEjC,GAAG,CAACG,GAAiBH,GAAkBK,CAAQ,CAAC,GAE1CK,IAAeJ,EAAY,MAAM;AACrC,IAAIF,KACFC,EAASL,IAAmB,CAAC;AAAA,EAEjC,GAAG,CAACI,GAAaJ,GAAkBK,CAAQ,CAAC,GAEtCM,IAAcL;AAAA,IAClB,CAACM,MAAwB;AACvB,YAAMC,IAAgB,KAAK,KAAK3B,IAAa0B,CAAW,GAClDJ,IAAU,KAAK,IAAIR,GAAkBa,CAAa;AAExD,MAAAlB,EAAoBiB,CAAW,GAE3B,CAAChB,KAAgBY,MAAYR,KAC/BR,EAAuBgB,CAAO,GAGhClB,IAAmBsB,CAAW,GAE1BJ,MAAYR,KACdX,IAAemB,CAAO;AAAA,IAE1B;AAAA,IACA,CAACtB,GAAYc,GAAkBJ,GAAcP,GAAcC,CAAgB;AAAA,EAAA;AAG7E,SAAOwB;AAAA,IACL,OAAO;AAAA,MACL,YAAA5B;AAAA,MACA,aAAac;AAAA,MACb,UAAAF;AAAA,MACA,YAAAC;AAAA,MACA,WAAAE;AAAA,MACA,SAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,UAAAC;AAAA,MACA,kBAAAI;AAAA,MACA,cAAAC;AAAA,MACA,aAAAC;AAAA,IAAA;AAAA,IAEF;AAAA,MACEzB;AAAA,MACAc;AAAA,MACAF;AAAA,MACAC;AAAA,MACAE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAI;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF;AAEJ;ACjKO,MAAMI,IAAa,CAACC,MAA2B;AACpD,QAAM;AAAA,IACJ,YAAA9B;AAAA,IACA,aAAAW;AAAA,IACA,UAAAC;AAAA,IACA,iBAAAmB,IAAkB,CAAC,IAAI,IAAI,IAAI,GAAG;AAAA,IAClC,cAAA5B;AAAA,IACA,kBAAAC;AAAA,IACA,cAAc4B,IAAY;AAAA,IAC1B,iBAAAC,IAAkB;AAAA,IAClB,wBAAAC,IAAyB;AAAA,EAAA,IACvBJ,GAEEK,IAAapC,EAAc;AAAA,IAC/B,YAAAC;AAAA,IACA,aAAAW;AAAA,IACA,UAAAC;AAAA,IACA,cAAAT;AAAA,IACA,kBAAAC;AAAA,EAAA,CACD,GAGKgC,IAAwBR;AAAA,IAC5B,MACEG,EAAgB,IAAI,CAACM,OAAU;AAAA,MAC7B,IAAIA,EAAK,SAAA;AAAA,MACT,MAAM,GAAGA,CAAI;AAAA,IAAA,EACb;AAAA,IACJ,CAACN,CAAe;AAAA,EAAA,GAGZO,IAAuB,CAACC,MAA0B;AACtD,QAAIA,GAAK;AACP,YAAMb,IAAc,SAASa,EAAI,SAAA,GAAY,EAAE;AAC/C,MAAAJ,EAAW,YAAYT,CAAW;AAAA,IACpC;AAAA,EACF;AAEA,SACE,gBAAAc,EAACC,GAAA,EAAM,KAAI,OAAM,WAAW,EAAE,MAAM,UAAU,IAAI,MAAA,GAAS,OAAM,UAE9D,UAAA;AAAA,IAAAP,KACC,gBAAAM,EAACE,GAAA,EAAK,OAAM,UAAS,KAAI,OACvB,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC,EAAO;AAAA,QAAP;AAAA,UACC,aAAa;AAAA,UACb,aAAaT,EAAW,SAAS,SAAA;AAAA,UACjC,mBAAmBG;AAAA,UACnB,cAAW;AAAA,UAEX,UAAA,gBAAAK,EAACC,EAAO,SAAP,EACE,YAAsB,IAAI,CAACC,MAC1B,gBAAAF,EAACC,EAAO,QAAP,EAA8B,IAAIC,EAAO,IACvC,UAAAA,EAAO,QADUA,EAAO,EAE3B,CACD,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAF,EAACG,GAAA,EAAK,OAAM,cAAa,UAAA,iBAAA,CAAc;AAAA,IAAA,GACzC;AAAA,IAEF,gBAAAH,EAACD,GAAA,EAAK,UAAS,IAAA,CAAI;AAAA,IAEnB,gBAAAF,EAACE,KAAK,OAAM,UAAS,KAAI,OAAM,MAAK,cAAa,cAAYV,GAC3D,UAAA;AAAA,MAAA,gBAAAW;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,SAASZ,EAAW;AAAA,UACpB,YAAY,CAACA,EAAW;AAAA,UACxB,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,cAAW;AAAA,UAEX,4BAACa,GAAA,CAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAGf,gBAAAR,EAACE,GAAA,EAAK,OAAM,UAAS,KAAI,OACvB,UAAA;AAAA,QAAA,gBAAAC,EAACG,GAAA,EAAK,OAAM,cAAa,UAAA,QAAI;AAAA,QAC5Bb,IACC,gBAAAU;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,OAAOd,EAAW;AAAA,YAClB,UAAU,CAACe,MACTf,EAAW,SAASe,KAAS,CAAC;AAAA,YAEhC,UAAU;AAAA,YACV,UAAUf,EAAW;AAAA,YACrB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,OAAM;AAAA,YACN,cAAW;AAAA,YACX,gBAAa;AAAA,UAAA;AAAA,QAAA,IAGf,gBAAAQ,EAACG,GAAA,EAAK,YAAW,YAAW,OAAM,cAAa,gBAAa,QACzD,UAAAX,EAAW,YAAA,CACd;AAAA,QAEF,gBAAAK,EAACM,GAAA,EAAK,OAAM,cAAa,UAAA;AAAA,UAAA;AAAA,UACnBX,EAAW,WAAW,eAAA;AAAA,QAAe,EAAA,CAC3C;AAAA,MAAA,GACF;AAAA,MAEA,gBAAAQ;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,SAASZ,EAAW;AAAA,UACpB,YAAY,CAACA,EAAW;AAAA,UACxB,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,cAAW;AAAA,UAEX,4BAACgB,GAAA,CAAA,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAGAtB,EAAW,cAAc;"}
@@ -1,2 +0,0 @@
1
- "use strict";const a=require("react/jsx-runtime"),r=require("react"),N=require("@commercetools/nimbus-icons"),O=require("./stack-CIN13EDn.cjs.js"),j=require("@chakra-ui/react/flex"),T=require("./select-DLnPgZGL.cjs.js"),f=require("./text-BtRhIklG.cjs.js"),w=require("./icon-button-B28VUff9.cjs.js"),R=require("./number-input-BUdRuDBZ.cjs.js");function y({totalItems:n,currentPage:x,pageSize:h=20,onPageChange:c,onPageSizeChange:g}){const[C,P]=r.useState(1),[v,M]=r.useState(h),s=x!==void 0,t=s?x:C,o=h??v,i=Math.max(1,Math.ceil(n/o)),e=Math.max(1,Math.min(t,i)),p=Math.min((e-1)*o+1,n),q=Math.min(e*o,n),d=e>1,m=e<i,l=r.useCallback(u=>{const S=Math.max(1,Math.min(u,i));s||P(S),c?.(S)},[i,s,c]),z=r.useCallback(()=>{d&&l(e-1)},[d,e,l]),k=r.useCallback(()=>{m&&l(e+1)},[m,e,l]),I=r.useCallback(u=>{const S=Math.ceil(n/u),b=Math.min(e,S);M(u),!s&&b!==e&&P(b),g?.(u),b!==e&&c?.(b)},[n,e,s,c,g]);return r.useMemo(()=>({totalItems:n,currentPage:e,pageSize:o,totalPages:i,startItem:p,endItem:q,hasPreviousPage:d,hasNextPage:m,goToPage:l,goToPreviousPage:z,goToNextPage:k,setPageSize:I}),[n,e,o,i,p,q,d,m,l,z,k,I])}const F=n=>{const{totalItems:x,currentPage:h,pageSize:c,pageSizeOptions:g=[10,20,50,100],onPageChange:C,onPageSizeChange:P,"aria-label":v="Pagination",enablePageInput:M=!0,enablePageSizeSelector:s=!0}=n,t=y({totalItems:x,currentPage:h,pageSize:c,onPageChange:C,onPageSizeChange:P}),o=r.useMemo(()=>g.map(e=>({id:e.toString(),name:`${e}`})),[g]),i=e=>{if(e){const p=parseInt(e.toString(),10);t.setPageSize(p)}};return a.jsxs(O.Stack,{gap:"400",direction:{base:"column",sm:"row"},align:"center",children:[s&&a.jsxs(j.Flex,{align:"center",gap:"200",children:[a.jsx(T.Select.Root,{isClearable:!1,selectedKey:t.pageSize.toString(),onSelectionChange:i,"aria-label":"Items per page",children:a.jsx(T.Select.Options,{children:o.map(e=>a.jsx(T.Select.Option,{id:e.id,children:e.name},e.id))})}),a.jsx(f.Text,{color:"neutral.12",children:"items per page"})]}),a.jsx(j.Flex,{flexGrow:"1"}),a.jsxs(j.Flex,{align:"center",gap:"200",role:"navigation","aria-label":v,children:[a.jsx(w.IconButton,{onClick:t.goToPreviousPage,isDisabled:!t.hasPreviousPage,variant:"ghost",tone:"primary","aria-label":"Go to previous page",children:a.jsx(N.ChevronLeft,{})}),a.jsxs(j.Flex,{align:"center",gap:"200",children:[a.jsx(f.Text,{color:"neutral.12",children:"Page"}),M?a.jsx(R.NumberInput,{value:t.currentPage,onChange:e=>t.goToPage(e||1),minValue:1,maxValue:t.totalPages,step:1,isDisabled:!1,width:"9ch","aria-label":"Current page","aria-current":"page"}):a.jsx(f.Text,{fontWeight:"semibold",color:"neutral.12","aria-current":"page",children:t.currentPage}),a.jsxs(f.Text,{color:"neutral.12",children:["of ",t.totalPages.toLocaleString()]})]}),a.jsx(w.IconButton,{onClick:t.goToNextPage,isDisabled:!t.hasNextPage,variant:"ghost",tone:"primary","aria-label":"Go to next page",children:a.jsx(N.ChevronRight,{})})]})]})};F.displayName="Pagination";exports.Pagination=F;
2
- //# sourceMappingURL=pagination-CnPACrJ5.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-CnPACrJ5.cjs.js","sources":["../../src/components/pagination/hooks/use-pagination.ts","../../src/components/pagination/pagination.tsx"],"sourcesContent":["import { useState, useCallback, useMemo } from \"react\";\n\nexport type PaginationState = {\n /** Total number of items across all pages */\n totalItems: number;\n /** Current active page (1-based) */\n currentPage: number;\n /** Number of items displayed per page */\n pageSize: number;\n /** Total number of pages available */\n totalPages: number;\n /** Index of the first item on current page (1-based) */\n startItem: number;\n /** Index of the last item on current page (1-based) */\n endItem: number;\n /** Whether there is a previous page available */\n hasPreviousPage: boolean;\n /** Whether there is a next page available */\n hasNextPage: boolean;\n};\n\nexport type UsePaginationProps = {\n /** Total number of items to paginate */\n totalItems: number;\n /** Initial current page (1-based), defaults to 1 */\n currentPage?: number;\n /** Initial number of items per page, defaults to 10 */\n pageSize?: number;\n /** Callback fired when the current page changes */\n onPageChange?: (page: number) => void;\n /** Callback fired when the page size changes */\n onPageSizeChange?: (pageSize: number) => void;\n};\n\nexport type UsePaginationReturn = PaginationState & {\n /** Navigate to a specific page number (1-based) */\n goToPage: (page: number) => void;\n /** Navigate to the previous page, if available */\n goToPreviousPage: () => void;\n /** Navigate to the next page, if available */\n goToNextPage: () => void;\n /** Change the number of items displayed per page */\n setPageSize: (pageSize: number) => void;\n};\n\n/**\n * # usePagination\n *\n * Custom hook that provides pagination state management and navigation controls.\n *\n * Supports both controlled and uncontrolled modes:\n * - Controlled: Parent component manages currentPage state via props and callbacks\n * - Uncontrolled: Hook manages internal currentPage state automatically\n *\n * @param props - Configuration object for pagination behavior\n * @param props.totalItems - Total number of items to paginate\n * @param props.currentPage - Current page number (controlled mode). If undefined, uses uncontrolled mode\n * @param props.pageSize - Number of items per page (defaults to 20)\n * @param props.onPageChange - Callback fired when page changes\n * @param props.onPageSizeChange - Callback fired when page size changes\n *\n * @returns Object containing pagination state and navigation functions:\n * - totalItems: Total number of items\n * - currentPage: Current active page number (1-based)\n * - pageSize: Number of items per page\n * - totalPages: Total number of pages\n * - startItem: First item number on current page\n * - endItem: Last item number on current page\n * - hasPreviousPage: Whether previous page exists\n * - hasNextPage: Whether next page exists\n * - goToPage: Function to navigate to specific page\n * - goToPreviousPage: Function to navigate to previous page\n * - goToNextPage: Function to navigate to next page\n * - setPageSize: Function to change page size\n *\n */\nexport function usePagination({\n totalItems,\n currentPage: controlledCurrentPage,\n pageSize: controlledPageSize = 20,\n onPageChange,\n onPageSizeChange,\n}: UsePaginationProps): UsePaginationReturn {\n // Internal state for uncontrolled mode\n const [internalCurrentPage, setInternalCurrentPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(controlledPageSize);\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledCurrentPage !== undefined;\n const currentPage = isControlled\n ? controlledCurrentPage\n : internalCurrentPage;\n const pageSize = controlledPageSize ?? internalPageSize;\n\n // Calculate pagination values\n const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));\n\n // Ensure currentPage is within valid bounds\n const validCurrentPage = Math.max(1, Math.min(currentPage, totalPages));\n\n const startItem = Math.min((validCurrentPage - 1) * pageSize + 1, totalItems);\n const endItem = Math.min(validCurrentPage * pageSize, totalItems);\n\n const hasPreviousPage = validCurrentPage > 1;\n const hasNextPage = validCurrentPage < totalPages;\n\n // Page navigation functions\n const goToPage = useCallback(\n (page: number) => {\n const newPage = Math.max(1, Math.min(page, totalPages));\n\n if (!isControlled) {\n setInternalCurrentPage(newPage);\n }\n\n onPageChange?.(newPage);\n },\n [totalPages, isControlled, onPageChange]\n );\n\n const goToPreviousPage = useCallback(() => {\n if (hasPreviousPage) {\n goToPage(validCurrentPage - 1);\n }\n }, [hasPreviousPage, validCurrentPage, goToPage]);\n\n const goToNextPage = useCallback(() => {\n if (hasNextPage) {\n goToPage(validCurrentPage + 1);\n }\n }, [hasNextPage, validCurrentPage, goToPage]);\n\n const setPageSize = useCallback(\n (newPageSize: number) => {\n const newTotalPages = Math.ceil(totalItems / newPageSize);\n const newPage = Math.min(validCurrentPage, newTotalPages);\n\n setInternalPageSize(newPageSize);\n\n if (!isControlled && newPage !== validCurrentPage) {\n setInternalCurrentPage(newPage);\n }\n\n onPageSizeChange?.(newPageSize);\n\n if (newPage !== validCurrentPage) {\n onPageChange?.(newPage);\n }\n },\n [totalItems, validCurrentPage, isControlled, onPageChange, onPageSizeChange]\n );\n\n return useMemo(\n () => ({\n totalItems,\n currentPage: validCurrentPage,\n pageSize,\n totalPages,\n startItem,\n endItem,\n hasPreviousPage,\n hasNextPage,\n goToPage,\n goToPreviousPage,\n goToNextPage,\n setPageSize,\n }),\n [\n totalItems,\n validCurrentPage,\n pageSize,\n totalPages,\n startItem,\n endItem,\n hasPreviousPage,\n hasNextPage,\n goToPage,\n goToPreviousPage,\n goToNextPage,\n setPageSize,\n ]\n );\n}\n","import { useMemo } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"@commercetools/nimbus-icons\";\nimport {\n Flex,\n IconButton,\n NumberInput,\n Select,\n Stack,\n Text,\n} from \"@/components\";\nimport { usePagination } from \"./hooks/use-pagination\";\nimport type { PaginationProps } from \"./pagination.types\";\n\n/**\n * # Pagination\n *\n * A component that allows users to navigate through pages and control page size.\n * Combines a page size selector and page navigator for comprehensive pagination control.\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/pagination}\n */\nexport const Pagination = (props: PaginationProps) => {\n const {\n totalItems,\n currentPage,\n pageSize,\n pageSizeOptions = [10, 20, 50, 100],\n onPageChange,\n onPageSizeChange,\n \"aria-label\": ariaLabel = \"Pagination\",\n enablePageInput = true,\n enablePageSizeSelector = true,\n } = props;\n\n const pagination = usePagination({\n totalItems,\n currentPage,\n pageSize,\n onPageChange,\n onPageSizeChange,\n });\n\n // Prepare page size options for select\n const pageSizeSelectOptions = useMemo(\n () =>\n pageSizeOptions.map((size) => ({\n id: size.toString(),\n name: `${size}`,\n })),\n [pageSizeOptions]\n );\n\n const handlePageSizeChange = (key: React.Key | null) => {\n if (key) {\n const newPageSize = parseInt(key.toString(), 10);\n pagination.setPageSize(newPageSize);\n }\n };\n\n return (\n <Stack gap=\"400\" direction={{ base: \"column\", sm: \"row\" }} align=\"center\">\n {/* Page Size Selector */}\n {enablePageSizeSelector && (\n <Flex align=\"center\" gap=\"200\">\n <Select.Root\n isClearable={false}\n selectedKey={pagination.pageSize.toString()}\n onSelectionChange={handlePageSizeChange}\n aria-label=\"Items per page\"\n >\n <Select.Options>\n {pageSizeSelectOptions.map((option) => (\n <Select.Option key={option.id} id={option.id}>\n {option.name}\n </Select.Option>\n ))}\n </Select.Options>\n </Select.Root>\n <Text color=\"neutral.12\">items per page</Text>\n </Flex>\n )}\n <Flex flexGrow=\"1\" />\n {/* Page Navigator */}\n <Flex align=\"center\" gap=\"200\" role=\"navigation\" aria-label={ariaLabel}>\n <IconButton\n onClick={pagination.goToPreviousPage}\n isDisabled={!pagination.hasPreviousPage}\n variant=\"ghost\"\n tone=\"primary\"\n aria-label=\"Go to previous page\"\n >\n <ChevronLeft />\n </IconButton>\n\n <Flex align=\"center\" gap=\"200\">\n <Text color=\"neutral.12\">Page</Text>\n {enablePageInput ? (\n <NumberInput\n value={pagination.currentPage}\n onChange={(value: number | undefined) =>\n pagination.goToPage(value || 1)\n }\n minValue={1}\n maxValue={pagination.totalPages}\n step={1}\n isDisabled={false}\n width=\"9ch\"\n aria-label=\"Current page\"\n aria-current=\"page\"\n />\n ) : (\n <Text fontWeight=\"semibold\" color=\"neutral.12\" aria-current=\"page\">\n {pagination.currentPage}\n </Text>\n )}\n <Text color=\"neutral.12\">\n of {pagination.totalPages.toLocaleString()}\n </Text>\n </Flex>\n\n <IconButton\n onClick={pagination.goToNextPage}\n isDisabled={!pagination.hasNextPage}\n variant=\"ghost\"\n tone=\"primary\"\n aria-label=\"Go to next page\"\n >\n <ChevronRight />\n </IconButton>\n </Flex>\n </Stack>\n );\n};\n\n// Manually assign a displayName for debugging purposes\nPagination.displayName = \"Pagination\";\n"],"names":["usePagination","totalItems","controlledCurrentPage","controlledPageSize","onPageChange","onPageSizeChange","internalCurrentPage","setInternalCurrentPage","useState","internalPageSize","setInternalPageSize","isControlled","currentPage","pageSize","totalPages","validCurrentPage","startItem","endItem","hasPreviousPage","hasNextPage","goToPage","useCallback","page","newPage","goToPreviousPage","goToNextPage","setPageSize","newPageSize","newTotalPages","useMemo","Pagination","props","pageSizeOptions","ariaLabel","enablePageInput","enablePageSizeSelector","pagination","pageSizeSelectOptions","size","handlePageSizeChange","key","jsxs","Stack","Flex","jsx","Select","option","Text","IconButton","ChevronLeft","NumberInput","value","ChevronRight"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-input-D4vhdbQW.es.js","sources":["../../src/components/password-input/password-input.i18n.ts","../../src/components/password-input/password-input.tsx"],"sourcesContent":["import { defineMessages } from \"react-intl\";\n\nexport default defineMessages({\n hide: {\n id: \"Nimbus.PasswordInput.hide\",\n description: \"aria-label & tooltip for hide password button\",\n defaultMessage: \"Hide password\",\n },\n show: {\n id: \"Nimbus.PasswordInput.show\",\n description: \"aria-label & tooltip for show password button\",\n defaultMessage: \"Show password\",\n },\n});\n","import { useState } from \"react\";\nimport { IconButton, Tooltip } from \"@/components\";\nimport { TextInput } from \"@/components/text-input\";\nimport { Visibility, VisibilityOff } from \"@commercetools/nimbus-icons\";\nimport type { PasswordInputProps } from \"./password-input.types\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport messages from \"./password-input.i18n\";\n\n/**\n * # PasswordInput\n *\n * A password input is a text field that hides entered characters for secure password entry.\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/inputs/passwordinput}\n */\nexport const PasswordInput = (props: PasswordInputProps) => {\n const { ref, size = \"md\", isDisabled } = props;\n\n const intl = useIntl();\n const [showPassword, setShowPassword] = useState(false);\n\n const toggleVisibility = () => setShowPassword(!showPassword);\n\n return (\n <TextInput\n ref={ref}\n {...props}\n trailingElement={\n <Tooltip.Root>\n <IconButton\n size={size === \"md\" ? \"xs\" : \"2xs\"}\n variant=\"ghost\"\n tone=\"primary\"\n aria-label={\n showPassword\n ? intl.formatMessage(messages.hide)\n : intl.formatMessage(messages.show)\n }\n onPress={toggleVisibility}\n isDisabled={isDisabled}\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n <Tooltip.Content>\n <FormattedMessage\n {...(showPassword ? messages.hide : messages.show)}\n />\n </Tooltip.Content>\n </Tooltip.Root>\n }\n type={showPassword ? \"text\" : \"password\"}\n />\n );\n};\n\nPasswordInput.displayName = \"PasswordInput\";\n"],"names":["messages","defineMessages","PasswordInput","props","ref","size","isDisabled","intl","useIntl","showPassword","setShowPassword","useState","toggleVisibility","jsx","TextInput","jsxs","Tooltip","IconButton","VisibilityOff","Visibility","FormattedMessage"],"mappings":";;;;;;;AAEA,MAAAA,IAAe,gBAAAC,EAAe;AAAA,EAC5B,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,gBAAgB;AAAA,EAAA;AAAA,EAElB,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,gBAAgB;AAAA,EAAA;AAEpB,CAAC,GCEYC,IAAgB,CAACC,MAA8B;AAC1D,QAAM,EAAE,KAAAC,GAAK,MAAAC,IAAO,MAAM,YAAAC,MAAeH,GAEnCI,IAAOC,EAAA,GACP,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAEhDC,IAAmB,MAAMF,EAAgB,CAACD,CAAY;AAE5D,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAV;AAAA,MACC,GAAGD;AAAA,MACJ,iBACE,gBAAAY,EAACC,EAAQ,MAAR,EACC,UAAA;AAAA,QAAA,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAMZ,MAAS,OAAO,OAAO;AAAA,YAC7B,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,cACEI,IACIF,EAAK,cAAcP,EAAS,IAAI,IAChCO,EAAK,cAAcP,EAAS,IAAI;AAAA,YAEtC,SAASY;AAAA,YACT,YAAAN;AAAA,YAEC,UAAAG,IAAe,gBAAAI,EAACK,GAAA,CAAA,CAAc,sBAAMC,GAAA,CAAA,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAElD,gBAAAN,EAACG,EAAQ,SAAR,EACC,UAAA,gBAAAH;AAAA,UAACO;AAAA,UAAA;AAAA,YACE,GAAIX,IAAeT,EAAS,OAAOA,EAAS;AAAA,UAAA;AAAA,QAAA,EAC/C,CACF;AAAA,MAAA,GACF;AAAA,MAEF,MAAMS,IAAe,SAAS;AAAA,IAAA;AAAA,EAAA;AAGpC;AAEAP,EAAc,cAAc;"}