@medusajs/dashboard 3.0.0-snapshot-20251212142124 → 3.0.0-snapshot-20251214110905

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 (248) hide show
  1. package/dist/{add-campaign-promotions-JQKPED4U.mjs → add-campaign-promotions-PHAHMGXP.mjs} +2 -2
  2. package/dist/{adjust-inventory-2MFA656V.mjs → adjust-inventory-I5VYMAI4.mjs} +2 -2
  3. package/dist/{api-key-management-create-ZUVF3SLR.mjs → api-key-management-create-CVRFY4PL.mjs} +2 -2
  4. package/dist/{api-key-management-detail-F7ZRCFPA.mjs → api-key-management-detail-HRVP6HRC.mjs} +3 -3
  5. package/dist/{api-key-management-edit-42HNUSXL.mjs → api-key-management-edit-JMU3WEPX.mjs} +2 -2
  6. package/dist/{api-key-management-sales-channels-7FVABESO.mjs → api-key-management-sales-channels-4OU5VGIG.mjs} +2 -2
  7. package/dist/app.css +45 -0
  8. package/dist/app.js +13473 -12039
  9. package/dist/app.mjs +4 -4
  10. package/dist/{campaign-budget-edit-6DMZGUCI.mjs → campaign-budget-edit-B5MSE26J.mjs} +2 -2
  11. package/dist/{campaign-configuration-UNFRB5HR.mjs → campaign-configuration-QOE3D2BE.mjs} +2 -2
  12. package/dist/{campaign-create-QXG7PD3S.mjs → campaign-create-FJOECKGT.mjs} +3 -3
  13. package/dist/{campaign-detail-6VNSVZHQ.mjs → campaign-detail-BDI3P2SF.mjs} +3 -3
  14. package/dist/{campaign-edit-HN4US7DV.mjs → campaign-edit-K2POQH7M.mjs} +2 -2
  15. package/dist/{categories-metadata-ORPB2LIW.mjs → categories-metadata-BARTITD5.mjs} +6 -6
  16. package/dist/{category-create-FFIBWXAH.mjs → category-create-L2KJCHPO.mjs} +2 -2
  17. package/dist/{category-detail-RICXPIVS.mjs → category-detail-CUMEBNXU.mjs} +22 -7
  18. package/dist/{category-edit-74MZ6TXN.mjs → category-edit-U6SLZSAX.mjs} +2 -2
  19. package/dist/{category-list-AH2EGTI7.mjs → category-list-W7JW4PWA.mjs} +16 -1
  20. package/dist/{category-organize-B6EFBFKB.mjs → category-organize-LLSVAO3U.mjs} +2 -2
  21. package/dist/{category-products-L4XIX3IQ.mjs → category-products-GYXTDDBQ.mjs} +8 -8
  22. package/dist/{chunk-XTQ7UFA3.mjs → chunk-2HDKZN4Q.mjs} +1 -1
  23. package/dist/chunk-35LSPN2U.mjs +66 -0
  24. package/dist/{chunk-PNPT4W2F.mjs → chunk-3BJLNORD.mjs} +1 -1
  25. package/dist/{chunk-4G2UHUXX.mjs → chunk-67KHYLIQ.mjs} +9 -9
  26. package/dist/{chunk-AMOGGDOW.mjs → chunk-AIZ6W4QI.mjs} +1 -1
  27. package/dist/{chunk-EQBVGH3N.mjs → chunk-B3AOQW2B.mjs} +1 -1
  28. package/dist/{chunk-UKECZ5PA.mjs → chunk-BBTE6VKD.mjs} +3 -3
  29. package/dist/{chunk-3YPRDSZ6.mjs → chunk-BZKI5J2M.mjs} +1 -1
  30. package/dist/{chunk-25UWYEJX.mjs → chunk-CQOOXWPZ.mjs} +1 -1
  31. package/dist/{chunk-42OOM4DJ.mjs → chunk-D6UW7URG.mjs} +23 -6
  32. package/dist/{chunk-LHNU4DYZ.mjs → chunk-DS5IRNJY.mjs} +2 -2
  33. package/dist/{chunk-4VNR7DND.mjs → chunk-F5NZDW7L.mjs} +2 -2
  34. package/dist/{chunk-JJGE3EV6.mjs → chunk-F63F3FIT.mjs} +2 -2
  35. package/dist/{chunk-W7SLPIO2.mjs → chunk-FEB3ZGTL.mjs} +214 -17
  36. package/dist/{chunk-4YAPXPLM.mjs → chunk-FPBKWWSI.mjs} +1 -1
  37. package/dist/{chunk-EXDBX4YX.mjs → chunk-GC3QXC6D.mjs} +3 -3
  38. package/dist/{chunk-JUVGXLY5.mjs → chunk-HKKZJTRO.mjs} +188 -13
  39. package/dist/{chunk-EQTBJSBZ.mjs → chunk-KIIT4BNH.mjs} +3 -0
  40. package/dist/{chunk-KF7ZWW4K.mjs → chunk-LCEKY54O.mjs} +2 -2
  41. package/dist/{chunk-D4J3CEWH.mjs → chunk-N3SAXQVR.mjs} +2 -2
  42. package/dist/{chunk-Q6MSICBU.mjs → chunk-O333RR6K.mjs} +1 -1
  43. package/dist/{chunk-YV4ANEZF.mjs → chunk-PXZEQZ6Q.mjs} +1 -1
  44. package/dist/{chunk-Q4E6LV6K.mjs → chunk-Q4AXBDFH.mjs} +269 -182
  45. package/dist/{chunk-CZFLKMYE.mjs → chunk-RMDYKRWW.mjs} +4 -4
  46. package/dist/{chunk-GN6OCHP4.mjs → chunk-RU4ZS47V.mjs} +11 -1
  47. package/dist/{chunk-UM4OIJZ3.mjs → chunk-S22SJRPO.mjs} +1 -1
  48. package/dist/{chunk-HWKLNKOY.mjs → chunk-U726TGCM.mjs} +1 -1
  49. package/dist/{chunk-XXBP2Z5M.mjs → chunk-WVA4O7QS.mjs} +1 -1
  50. package/dist/{chunk-L4NOVTH5.mjs → chunk-YIOBBZUB.mjs} +2 -2
  51. package/dist/{chunk-FIFVOKTK.mjs → chunk-Z6NHG5LQ.mjs} +1 -1
  52. package/dist/{collection-add-products-MO4FGYD5.mjs → collection-add-products-4WBPS6PY.mjs} +8 -8
  53. package/dist/{collection-create-DCRW344Z.mjs → collection-create-4JX4YE47.mjs} +2 -2
  54. package/dist/{collection-detail-ZCHVPXW5.mjs → collection-detail-HT4SSV32.mjs} +22 -7
  55. package/dist/{collection-edit-UNFEW6HT.mjs → collection-edit-MXL35GQQ.mjs} +2 -2
  56. package/dist/{collection-list-3UUFO7AP.mjs → collection-list-FYONEBDN.mjs} +29 -14
  57. package/dist/{collection-metadata-ZOYQDOOT.mjs → collection-metadata-YEZ2TBRX.mjs} +6 -6
  58. package/dist/{customer-create-XCLZENJS.mjs → customer-create-IA56MXE6.mjs} +2 -2
  59. package/dist/{customer-create-address-4HZUIAM7.mjs → customer-create-address-27M25HTO.mjs} +2 -2
  60. package/dist/{customer-detail-RMZTHQIQ.mjs → customer-detail-MB7CS7OG.mjs} +6 -6
  61. package/dist/{customer-edit-BW5GVTQI.mjs → customer-edit-XQ5NWIVX.mjs} +2 -2
  62. package/dist/{customer-group-add-customers-HUGHHMU6.mjs → customer-group-add-customers-DM4VLTNB.mjs} +5 -5
  63. package/dist/{customer-group-create-6YV7W6TI.mjs → customer-group-create-RY4FVEIW.mjs} +2 -2
  64. package/dist/{customer-group-detail-4S7WB3WV.mjs → customer-group-detail-U5UAP7QS.mjs} +6 -6
  65. package/dist/{customer-group-edit-7NXU34BQ.mjs → customer-group-edit-MQWARIQZ.mjs} +2 -2
  66. package/dist/{customer-group-list-JQX6PW6E.mjs → customer-group-list-KAS6JSCQ.mjs} +3 -3
  67. package/dist/{customer-group-metadata-WK2BGEGO.mjs → customer-group-metadata-JQJRLLXG.mjs} +3 -3
  68. package/dist/{customer-metadata-ZUWCUTM7.mjs → customer-metadata-HN2DYD5I.mjs} +3 -3
  69. package/dist/{customers-add-customer-group-JKTM33OU.mjs → customers-add-customer-group-UKLSPYEU.mjs} +8 -8
  70. package/dist/{edit-inventory-item-Y5W6VTHJ.mjs → edit-inventory-item-RATTNP2Y.mjs} +2 -2
  71. package/dist/{edit-inventory-item-attributes-NAAZDFEJ.mjs → edit-inventory-item-attributes-JHH5GSNL.mjs} +2 -2
  72. package/dist/{edit-reservation-2UD4RZJX.mjs → edit-reservation-UZCSNLHY.mjs} +2 -2
  73. package/dist/{edit-rules-AXG2NQNS.mjs → edit-rules-VMEHCXYQ.mjs} +5 -5
  74. package/dist/en.json +34 -0
  75. package/dist/{inventory-create-6SKU4TZL.mjs → inventory-create-KN72V2KK.mjs} +6 -6
  76. package/dist/{inventory-detail-LAYYI2QT.mjs → inventory-detail-7OHCFAJO.mjs} +3 -3
  77. package/dist/{inventory-metadata-Q6E6SZF3.mjs → inventory-metadata-I3IRRMLH.mjs} +6 -6
  78. package/dist/{inventory-stock-SNAWXRBE.mjs → inventory-stock-5IUICNEH.mjs} +7 -7
  79. package/dist/{invite-VKHAAF4Z.mjs → invite-FVE4ZBKB.mjs} +2 -2
  80. package/dist/{location-create-RPLEXUZR.mjs → location-create-WZ43K3W7.mjs} +2 -2
  81. package/dist/{location-detail-XXH22FLG.mjs → location-detail-3MSUGB4W.mjs} +8 -8
  82. package/dist/{location-edit-L4ISEQHX.mjs → location-edit-VCS7GVWQ.mjs} +2 -2
  83. package/dist/{location-fulfillment-providers-FSC27EK7.mjs → location-fulfillment-providers-ZVZMLCIC.mjs} +6 -6
  84. package/dist/{location-list-Z42ZYHUF.mjs → location-list-KVBA6J47.mjs} +2 -2
  85. package/dist/{location-sales-channels-YMABMECM.mjs → location-sales-channels-NKNM5TQK.mjs} +2 -2
  86. package/dist/{location-service-zone-create-NSMZCD5N.mjs → location-service-zone-create-3FWF3DG5.mjs} +3 -3
  87. package/dist/{location-service-zone-edit-6OUAFEZD.mjs → location-service-zone-edit-KHHMSPXD.mjs} +2 -2
  88. package/dist/{location-service-zone-manage-areas-SEC6LKCZ.mjs → location-service-zone-manage-areas-YFEAZUUN.mjs} +3 -3
  89. package/dist/{location-service-zone-shipping-option-create-GWNLLSM5.mjs → location-service-zone-shipping-option-create-CZWEHKVJ.mjs} +7 -7
  90. package/dist/{location-service-zone-shipping-option-edit-QS6HTWST.mjs → location-service-zone-shipping-option-edit-4CGPQ3VT.mjs} +5 -5
  91. package/dist/{location-service-zone-shipping-option-pricing-23QLNSBT.mjs → location-service-zone-shipping-option-pricing-Z5IFOLFJ.mjs} +4 -4
  92. package/dist/{login-MFUCIAT6.mjs → login-OCYZM7SI.mjs} +5 -5
  93. package/dist/{manage-locations-JD6FSBOT.mjs → manage-locations-MLNMPQ5I.mjs} +2 -2
  94. package/dist/{order-allocate-items-3DDI4V3W.mjs → order-allocate-items-VRPPVPP3.mjs} +3 -3
  95. package/dist/{order-create-claim-G7BDA7WR.mjs → order-create-claim-O3ZYTAIC.mjs} +7 -7
  96. package/dist/{order-create-edit-BXYPZRZV.mjs → order-create-edit-HUS7IRS3.mjs} +6 -6
  97. package/dist/{order-create-exchange-AGEXEKOF.mjs → order-create-exchange-TUP4NHHX.mjs} +13 -13
  98. package/dist/{order-create-fulfillment-GMLSBCEK.mjs → order-create-fulfillment-4BGDYHBB.mjs} +5 -5
  99. package/dist/{order-create-refund-BT33POIN.mjs → order-create-refund-FA5ERI7M.mjs} +5 -5
  100. package/dist/{order-create-return-QGXWSPMP.mjs → order-create-return-7GPHJ2WU.mjs} +4 -4
  101. package/dist/{order-create-shipment-ZVTOKNC4.mjs → order-create-shipment-27UBYPKT.mjs} +5 -5
  102. package/dist/{order-detail-MORQRSHL.mjs → order-detail-2J7KDTKG.mjs} +11 -11
  103. package/dist/{order-edit-billing-address-IUVC4GSZ.mjs → order-edit-billing-address-E7CD5FBQ.mjs} +5 -5
  104. package/dist/{order-edit-email-MKLJPREH.mjs → order-edit-email-ELRIQYVN.mjs} +5 -5
  105. package/dist/{order-edit-shipping-address-GFSRTDFG.mjs → order-edit-shipping-address-HVNAJUZI.mjs} +5 -5
  106. package/dist/order-export-TRMFVBFO.mjs +121 -0
  107. package/dist/{order-list-QOYJFYD5.mjs → order-list-Y4FET3XV.mjs} +38 -82
  108. package/dist/{order-metadata-BRSYOGKE.mjs → order-metadata-THARHEJC.mjs} +6 -6
  109. package/dist/{order-receive-return-NI345L43.mjs → order-receive-return-X5ASB7DL.mjs} +6 -6
  110. package/dist/{order-request-transfer-ZGGIUFRV.mjs → order-request-transfer-PKF4ULJY.mjs} +5 -5
  111. package/dist/{price-list-configuration-CWTP3Y5X.mjs → price-list-configuration-SZRY7CXO.mjs} +4 -4
  112. package/dist/{price-list-create-HDYM5ZGW.mjs → price-list-create-TYNSJDDM.mjs} +15 -15
  113. package/dist/{price-list-detail-GVGNB5AY.mjs → price-list-detail-ORYFRNB6.mjs} +6 -6
  114. package/dist/{price-list-edit-SW7YIR3Z.mjs → price-list-edit-I5QNCWJP.mjs} +2 -2
  115. package/dist/{price-list-prices-add-P4XHE3F4.mjs → price-list-prices-add-MWAUNUBF.mjs} +10 -10
  116. package/dist/{price-list-prices-edit-C6SX2TLJ.mjs → price-list-prices-edit-Z4YJ4YBY.mjs} +4 -4
  117. package/dist/{product-attributes-AXSXHPI5.mjs → product-attributes-5QW6ZEYB.mjs} +6 -6
  118. package/dist/{product-create-CAGTWFTS.mjs → product-create-YQ76CEF3.mjs} +7 -7
  119. package/dist/{product-create-option-GEGQNSMQ.mjs → product-create-option-UMZKRNTC.mjs} +2 -2
  120. package/dist/{product-create-variant-5DLZZQPL.mjs → product-create-variant-IASRY2JX.mjs} +6 -6
  121. package/dist/{product-detail-FSORFVRL.mjs → product-detail-NVLJQGGK.mjs} +51 -10
  122. package/dist/{product-edit-EYQIREZ6.mjs → product-edit-DP42G3EU.mjs} +6 -6
  123. package/dist/{product-edit-option-HBIOBQTS.mjs → product-edit-option-ZMTSLRG5.mjs} +2 -2
  124. package/dist/{product-export-4XRDDWZQ.mjs → product-export-OK5FCD42.mjs} +15 -15
  125. package/dist/{product-image-variants-edit-KCFCTXE2.mjs → product-image-variants-edit-VEWNL52X.mjs} +5 -5
  126. package/dist/{product-import-JTEXWYY7.mjs → product-import-LX625CIX.mjs} +5 -5
  127. package/dist/{product-list-T4OZG4OC.mjs → product-list-TXEPE6NL.mjs} +19 -7
  128. package/dist/{product-media-EGK66SRX.mjs → product-media-ULNJ7JJY.mjs} +2 -2
  129. package/dist/{product-metadata-5BLG4EIR.mjs → product-metadata-ZKKBE6GG.mjs} +6 -6
  130. package/dist/{product-organization-BEXN2KXC.mjs → product-organization-NMA2WJNT.mjs} +6 -6
  131. package/dist/{product-prices-WQDE4XYT.mjs → product-prices-5WCCQDS6.mjs} +3 -3
  132. package/dist/{product-sales-channels-ZICOOOKY.mjs → product-sales-channels-2PN4L7II.mjs} +2 -2
  133. package/dist/{product-shipping-profile-KIDRTPWA.mjs → product-shipping-profile-45XXB7FM.mjs} +2 -2
  134. package/dist/{product-stock-SSJVQPBZ.mjs → product-stock-KUHH6MFA.mjs} +7 -7
  135. package/dist/{product-tag-create-ZPYRJTC4.mjs → product-tag-create-7EVRE5BL.mjs} +5 -5
  136. package/dist/{product-tag-detail-VRGVJNDT.mjs → product-tag-detail-WULO55NT.mjs} +31 -16
  137. package/dist/{product-tag-edit-2KFYOID4.mjs → product-tag-edit-J4ODRLXN.mjs} +5 -5
  138. package/dist/{product-tag-list-WTX6GV7O.mjs → product-tag-list-V4CCQTL6.mjs} +31 -16
  139. package/dist/{product-tag-metadata-Y7YHTUKM.mjs → product-tag-metadata-KHDYQMSG.mjs} +6 -6
  140. package/dist/{product-type-create-HBDROTGB.mjs → product-type-create-KHSNCQCV.mjs} +2 -2
  141. package/dist/{product-type-detail-3ZLSMENL.mjs → product-type-detail-F35MUSLD.mjs} +22 -7
  142. package/dist/{product-type-edit-H3JCMVRV.mjs → product-type-edit-3LRBWZ3S.mjs} +2 -2
  143. package/dist/{product-type-list-QX7QC6RI.mjs → product-type-list-K2GULUPF.mjs} +19 -4
  144. package/dist/{product-type-metadata-GJACA4N6.mjs → product-type-metadata-CGXFFEJO.mjs} +6 -6
  145. package/dist/{product-variant-detail-L5G4CPVH.mjs → product-variant-detail-NT2MB3Z4.mjs} +19 -4
  146. package/dist/{product-variant-edit-YXALQPQT.mjs → product-variant-edit-KZ6D5CSA.mjs} +5 -5
  147. package/dist/{product-variant-manage-inventory-items-BLHCH6QD.mjs → product-variant-manage-inventory-items-OGM64KYP.mjs} +2 -2
  148. package/dist/{product-variant-media-KLSUISGH.mjs → product-variant-media-C3KCFODU.mjs} +2 -2
  149. package/dist/{product-variant-metadata-OQOE34VY.mjs → product-variant-metadata-I2PN64TH.mjs} +6 -6
  150. package/dist/{profile-edit-5EEKOEO5.mjs → profile-edit-YZCUGEXF.mjs} +2 -2
  151. package/dist/{promotion-add-campaign-JRTM7WBR.mjs → promotion-add-campaign-DO67QK6M.mjs} +3 -3
  152. package/dist/{promotion-create-OXNLKBL7.mjs → promotion-create-4KVSXYAI.mjs} +12 -12
  153. package/dist/{promotion-detail-N6VHHN3X.mjs → promotion-detail-NGNVELME.mjs} +3 -3
  154. package/dist/{promotion-edit-details-AREFQ6O5.mjs → promotion-edit-details-6BSOOWQN.mjs} +2 -2
  155. package/dist/{refund-reason-create-L36EUXXM.mjs → refund-reason-create-CTAPBK3X.mjs} +5 -5
  156. package/dist/{refund-reason-edit-364ALB4G.mjs → refund-reason-edit-B6HRNXGE.mjs} +5 -5
  157. package/dist/{refund-reason-list-ICO2GYRP.mjs → refund-reason-list-7OUHUORB.mjs} +4 -4
  158. package/dist/{region-add-countries-AFWXMQ6W.mjs → region-add-countries-7U4J5RW6.mjs} +2 -2
  159. package/dist/{region-create-YC4VZ4AS.mjs → region-create-IUGX33M5.mjs} +2 -2
  160. package/dist/{region-edit-5GO25GDF.mjs → region-edit-WAU347DP.mjs} +2 -2
  161. package/dist/{region-metadata-VNLW6NYZ.mjs → region-metadata-GRG3QSJY.mjs} +6 -6
  162. package/dist/{reservation-create-Z2SUMBGT.mjs → reservation-create-C6HTEF3R.mjs} +2 -2
  163. package/dist/{reservation-detail-YXIUIN5I.mjs → reservation-detail-KAI7N5UP.mjs} +3 -3
  164. package/dist/{reservation-metadata-7H7TYWZW.mjs → reservation-metadata-TWV7KLOB.mjs} +6 -6
  165. package/dist/{reset-password-5TAYQEUV.mjs → reset-password-Y5WVXV4Q.mjs} +2 -2
  166. package/dist/{return-reason-create-NXWDC6AC.mjs → return-reason-create-HM54WRJY.mjs} +2 -2
  167. package/dist/{return-reason-edit-M6IKNNKB.mjs → return-reason-edit-VSIRHVQ6.mjs} +2 -2
  168. package/dist/return-reason-list-IFFIDA5O.mjs +1 -1
  169. package/dist/{sales-channel-add-products-N7EPWF2N.mjs → sales-channel-add-products-CBECZU46.mjs} +8 -8
  170. package/dist/{sales-channel-create-E7BDTPWD.mjs → sales-channel-create-4XLJDVJO.mjs} +2 -2
  171. package/dist/{sales-channel-detail-DV6BKC5B.mjs → sales-channel-detail-NQSBPPIE.mjs} +6 -6
  172. package/dist/{sales-channel-edit-HMPA3Y3L.mjs → sales-channel-edit-UZGSXD5X.mjs} +2 -2
  173. package/dist/{sales-channel-list-33QC2ZXP.mjs → sales-channel-list-UYN2OCBR.mjs} +3 -3
  174. package/dist/{sales-channel-metadata-HYYQEVRZ.mjs → sales-channel-metadata-4XWXYN2E.mjs} +6 -6
  175. package/dist/{shipping-option-type-create-IXYDKBKG.mjs → shipping-option-type-create-U7PIKVMV.mjs} +5 -5
  176. package/dist/{shipping-option-type-detail-WMZ3DEY6.mjs → shipping-option-type-detail-QNZLQGI6.mjs} +4 -4
  177. package/dist/{shipping-option-type-edit-YYO3Q2QV.mjs → shipping-option-type-edit-BP6HLZ7B.mjs} +5 -5
  178. package/dist/{shipping-option-type-list-YAL6IQF2.mjs → shipping-option-type-list-L274RM6A.mjs} +4 -4
  179. package/dist/{shipping-profile-create-752TMBBE.mjs → shipping-profile-create-26R64I3Z.mjs} +2 -2
  180. package/dist/{shipping-profile-metadata-YBXPOVZF.mjs → shipping-profile-metadata-BZKPLXHO.mjs} +6 -6
  181. package/dist/{store-add-currencies-3VMLZ6KB.mjs → store-add-currencies-ZFS3WZHG.mjs} +2 -2
  182. package/dist/{store-add-locales-AYY44DB3.mjs → store-add-locales-EXR3NLOM.mjs} +4 -4
  183. package/dist/{store-detail-4YVABC3P.mjs → store-detail-T4YY5NHG.mjs} +3 -3
  184. package/dist/{store-edit-EPAHLLKP.mjs → store-edit-AB5CDUTK.mjs} +2 -2
  185. package/dist/{store-metadata-QQD2NP5U.mjs → store-metadata-FN3WZLXA.mjs} +6 -6
  186. package/dist/{tax-region-create-AFGAIC3C.mjs → tax-region-create-PWXTFE3Q.mjs} +5 -5
  187. package/dist/{tax-region-detail-LM7VIA2N.mjs → tax-region-detail-GJW63AMV.mjs} +22 -22
  188. package/dist/{tax-region-edit-ZLSY22NQ.mjs → tax-region-edit-WOUO7TPQ.mjs} +5 -5
  189. package/dist/{tax-region-list-BXZBUXRJ.mjs → tax-region-list-P4LDOPZD.mjs} +3 -3
  190. package/dist/{tax-region-province-create-5JP3PVID.mjs → tax-region-province-create-GKJ7WMRS.mjs} +2 -2
  191. package/dist/{tax-region-province-detail-ZF75A3Z2.mjs → tax-region-province-detail-FCHPIRXW.mjs} +21 -21
  192. package/dist/{tax-region-tax-override-create-JVMTMMWB.mjs → tax-region-tax-override-create-ZLWXRNLN.mjs} +16 -16
  193. package/dist/{tax-region-tax-override-edit-HS4BCVC7.mjs → tax-region-tax-override-edit-ZM2JUFNJ.mjs} +17 -17
  194. package/dist/{tax-region-tax-rate-create-O2SDSXCH.mjs → tax-region-tax-rate-create-MECFGVPL.mjs} +2 -2
  195. package/dist/{tax-region-tax-rate-edit-W62VEVKT.mjs → tax-region-tax-rate-edit-7DYSPYOD.mjs} +2 -2
  196. package/dist/translation-list-Y2GWTRGW.mjs +302 -0
  197. package/dist/translations-edit-PM4PSMRF.mjs +390 -0
  198. package/dist/{user-edit-LXQCTDGA.mjs → user-edit-ZBB4RMTP.mjs} +2 -2
  199. package/dist/{user-invite-2OKB7SCF.mjs → user-invite-XB635N26.mjs} +2 -2
  200. package/dist/{user-metadata-U3WGLABX.mjs → user-metadata-LNADHFTW.mjs} +6 -6
  201. package/dist/{workflow-execution-detail-L4IESFKA.mjs → workflow-execution-detail-POTSURJX.mjs} +4 -4
  202. package/package.json +9 -9
  203. package/src/components/common/icon-avatar/icon-avatar.tsx +4 -0
  204. package/src/components/data-grid/components/data-grid-textarea-modal-cell.tsx +233 -0
  205. package/src/components/data-grid/components/index.ts +1 -0
  206. package/src/components/data-grid/data-grid.tsx +2 -0
  207. package/src/components/layout/settings-layout/settings-layout.tsx +11 -1
  208. package/src/components/modals/route-focus-modal/route-focus-modal.tsx +8 -3
  209. package/src/components/modals/route-modal-form/route-modal-form.tsx +6 -1
  210. package/src/components/modals/route-modal-provider/route-provider.tsx +16 -4
  211. package/src/dashboard-app/routes/get-route.map.tsx +25 -0
  212. package/src/hooks/api/index.ts +1 -0
  213. package/src/hooks/api/orders.tsx +18 -1
  214. package/src/hooks/api/product-variants.tsx +7 -1
  215. package/src/hooks/api/translations.tsx +254 -0
  216. package/src/i18n/translations/$schema.json +104 -0
  217. package/src/i18n/translations/en.json +34 -0
  218. package/src/i18n/translations/es.json +22 -0
  219. package/src/routes/categories/category-detail/components/category-general-section/category-general-section.tsx +16 -1
  220. package/src/routes/categories/category-list/components/category-list-table/category-list-table.tsx +16 -1
  221. package/src/routes/collections/collection-detail/components/collection-general-section/collection-general-section.tsx +16 -1
  222. package/src/routes/collections/collection-list/components/collection-list-table/collection-row-actions.tsx +16 -1
  223. package/src/routes/orders/order-export/components/export-filters.tsx +22 -0
  224. package/src/routes/orders/order-export/index.ts +1 -0
  225. package/src/routes/orders/order-export/order-export.tsx +66 -0
  226. package/src/routes/orders/order-list/components/order-list-table/configurable-order-list-table.tsx +14 -6
  227. package/src/routes/orders/order-list/components/order-list-table/order-list-table.tsx +8 -2
  228. package/src/routes/product-tags/product-tag-detail/components/product-tag-general-section/product-tag-general-section.tsx +16 -1
  229. package/src/routes/product-tags/product-tag-list/components/product-tag-list-table/product-tag-list-table.tsx +16 -1
  230. package/src/routes/product-types/product-type-detail/components/product-type-general-section/product-type-general-section.tsx +16 -1
  231. package/src/routes/product-types/product-type-list/components/product-type-list-table/product-table-row-actions.tsx +16 -1
  232. package/src/routes/product-variants/product-variant-detail/components/variant-general-section/variant-general-section.tsx +16 -1
  233. package/src/routes/products/product-detail/components/product-general-section/product-general-section.tsx +16 -1
  234. package/src/routes/products/product-detail/components/product-variant-section/product-variant-section.tsx +32 -1
  235. package/src/routes/products/product-list/components/product-list-table/product-list-table.tsx +15 -1
  236. package/src/routes/translations/translation-list/components/active-locales-section/active-locales-section.tsx +68 -0
  237. package/src/routes/translations/translation-list/components/translation-list-section/translation-list-section.tsx +46 -0
  238. package/src/routes/translations/translation-list/components/translations-completion-section/translations-completion-section.tsx +67 -0
  239. package/src/routes/translations/translation-list/index.tsx +1 -0
  240. package/src/routes/translations/translation-list/translation-list.tsx +128 -0
  241. package/src/routes/translations/translations-edit/components/translations-edit-form/index.ts +1 -0
  242. package/src/routes/translations/translations-edit/components/translations-edit-form/translations-edit-form.tsx +423 -0
  243. package/src/routes/translations/translations-edit/index.ts +1 -0
  244. package/src/routes/translations/translations-edit/translations-edit.tsx +67 -0
  245. package/src/routes/translations/translations-edit/utils/index.ts +1 -0
  246. package/src/routes/translations/translations-edit/utils/reference-label-map.ts +10 -0
  247. package/dist/{customer-list-ZXCGIXJC.mjs → customer-list-TG4D4QOT.mjs} +3 -3
  248. package/dist/{region-list-XQRIBDMF.mjs → region-list-JAQXIBYD.mjs} +3 -3
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-6HTZNHPT.mjs";
5
5
  import {
6
6
  RouteDrawer
7
- } from "./chunk-XXBP2Z5M.mjs";
7
+ } from "./chunk-WVA4O7QS.mjs";
8
8
  import {
9
9
  useRouteModal
10
- } from "./chunk-42OOM4DJ.mjs";
10
+ } from "./chunk-D6UW7URG.mjs";
11
11
  import {
12
12
  Form
13
13
  } from "./chunk-OBQI23QM.mjs";
@@ -14,10 +14,10 @@ import "./chunk-DZWH2RV6.mjs";
14
14
  import {
15
15
  KeyboundForm
16
16
  } from "./chunk-6HTZNHPT.mjs";
17
- import "./chunk-XXBP2Z5M.mjs";
17
+ import "./chunk-WVA4O7QS.mjs";
18
18
  import {
19
19
  RouteFocusModal
20
- } from "./chunk-42OOM4DJ.mjs";
20
+ } from "./chunk-D6UW7URG.mjs";
21
21
  import {
22
22
  isFetchError
23
23
  } from "./chunk-ONB3JEHR.mjs";
@@ -1,24 +1,24 @@
1
1
  import "./chunk-XRTVFYCW.mjs";
2
2
  import {
3
3
  MetadataForm
4
- } from "./chunk-D4J3CEWH.mjs";
4
+ } from "./chunk-N3SAXQVR.mjs";
5
5
  import "./chunk-IUCDCPJU.mjs";
6
6
  import "./chunk-6HTZNHPT.mjs";
7
7
  import {
8
8
  RouteDrawer
9
- } from "./chunk-XXBP2Z5M.mjs";
10
- import "./chunk-42OOM4DJ.mjs";
9
+ } from "./chunk-WVA4O7QS.mjs";
10
+ import "./chunk-D6UW7URG.mjs";
11
11
  import "./chunk-LPEUYMRK.mjs";
12
12
  import "./chunk-OC7BQLYI.mjs";
13
13
  import "./chunk-S4DMV3ZT.mjs";
14
14
  import "./chunk-OBQI23QM.mjs";
15
- import "./chunk-JUVGXLY5.mjs";
15
+ import "./chunk-HKKZJTRO.mjs";
16
16
  import "./chunk-I4OBEAOJ.mjs";
17
17
  import "./chunk-HI6URQ7H.mjs";
18
18
  import "./chunk-6CLQKVAU.mjs";
19
+ import "./chunk-KI7TOXBR.mjs";
19
20
  import "./chunk-HKIF5HVL.mjs";
20
21
  import "./chunk-XIVBRONM.mjs";
21
- import "./chunk-KI7TOXBR.mjs";
22
22
  import "./chunk-WAXMT4IY.mjs";
23
23
  import "./chunk-DYDGGABK.mjs";
24
24
  import "./chunk-LGNTHZ5Y.mjs";
@@ -33,7 +33,7 @@ import "./chunk-NHDFPGQ3.mjs";
33
33
  import "./chunk-A63RZVX6.mjs";
34
34
  import "./chunk-HBXV7ENS.mjs";
35
35
  import "./chunk-CDORR33H.mjs";
36
- import "./chunk-GN6OCHP4.mjs";
36
+ import "./chunk-RU4ZS47V.mjs";
37
37
  import "./chunk-N4O5FAUC.mjs";
38
38
  import "./chunk-7AX6R6G6.mjs";
39
39
  import "./chunk-N3FCYZV6.mjs";
@@ -20,16 +20,16 @@ import {
20
20
  import {
21
21
  useDocumentDirection
22
22
  } from "./chunk-S4DMV3ZT.mjs";
23
- import "./chunk-JUVGXLY5.mjs";
23
+ import "./chunk-HKKZJTRO.mjs";
24
24
  import "./chunk-I4OBEAOJ.mjs";
25
25
  import "./chunk-HI6URQ7H.mjs";
26
26
  import "./chunk-6CLQKVAU.mjs";
27
- import "./chunk-HKIF5HVL.mjs";
28
- import "./chunk-XIVBRONM.mjs";
29
27
  import {
30
28
  useWorkflowExecution,
31
29
  workflowExecutionsQueryKeys
32
30
  } from "./chunk-KI7TOXBR.mjs";
31
+ import "./chunk-HKIF5HVL.mjs";
32
+ import "./chunk-XIVBRONM.mjs";
33
33
  import "./chunk-WAXMT4IY.mjs";
34
34
  import "./chunk-DYDGGABK.mjs";
35
35
  import "./chunk-LGNTHZ5Y.mjs";
@@ -41,7 +41,7 @@ import "./chunk-NHDFPGQ3.mjs";
41
41
  import "./chunk-A63RZVX6.mjs";
42
42
  import "./chunk-HBXV7ENS.mjs";
43
43
  import "./chunk-CDORR33H.mjs";
44
- import "./chunk-GN6OCHP4.mjs";
44
+ import "./chunk-RU4ZS47V.mjs";
45
45
  import "./chunk-N4O5FAUC.mjs";
46
46
  import "./chunk-7AX6R6G6.mjs";
47
47
  import "./chunk-N3FCYZV6.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medusajs/dashboard",
3
- "version": "3.0.0-snapshot-20251212142124",
3
+ "version": "3.0.0-snapshot-20251214110905",
4
4
  "scripts": {
5
5
  "generate:static": "node ./scripts/generate-currencies.js && prettier --write ./src/lib/currencies.ts",
6
6
  "dev": "../../../node_modules/.bin/vite",
@@ -46,10 +46,10 @@
46
46
  "@dnd-kit/utilities": "^3.2.2",
47
47
  "@hookform/error-message": "^2.0.1",
48
48
  "@hookform/resolvers": "3.4.2",
49
- "@medusajs/admin-shared": "3.0.0-snapshot-20251212142124",
50
- "@medusajs/icons": "3.0.0-snapshot-20251212142124",
51
- "@medusajs/js-sdk": "3.0.0-snapshot-20251212142124",
52
- "@medusajs/ui": "4.0.31-snapshot-20251212142124",
49
+ "@medusajs/admin-shared": "3.0.0-snapshot-20251214110905",
50
+ "@medusajs/icons": "3.0.0-snapshot-20251214110905",
51
+ "@medusajs/js-sdk": "3.0.0-snapshot-20251214110905",
52
+ "@medusajs/ui": "4.0.31-snapshot-20251214110905",
53
53
  "@radix-ui/react-dialog": "1.1.4",
54
54
  "@radix-ui/react-dismissable-layer": "1.1.4",
55
55
  "@tanstack/react-query": "5.64.2",
@@ -80,10 +80,10 @@
80
80
  "zod": "3.25.76"
81
81
  },
82
82
  "devDependencies": {
83
- "@medusajs/admin-shared": "3.0.0-snapshot-20251212142124",
84
- "@medusajs/admin-vite-plugin": "3.0.0-snapshot-20251212142124",
85
- "@medusajs/types": "3.0.0-snapshot-20251212142124",
86
- "@medusajs/ui-preset": "3.0.0-snapshot-20251212142124"
83
+ "@medusajs/admin-shared": "3.0.0-snapshot-20251214110905",
84
+ "@medusajs/admin-vite-plugin": "3.0.0-snapshot-20251214110905",
85
+ "@medusajs/types": "3.0.0-snapshot-20251214110905",
86
+ "@medusajs/ui-preset": "3.0.0-snapshot-20251214110905"
87
87
  },
88
88
  "packageManager": "yarn@3.2.1"
89
89
  }
@@ -4,6 +4,7 @@ import { PropsWithChildren } from "react"
4
4
  type IconAvatarProps = PropsWithChildren<{
5
5
  className?: string
6
6
  size?: "small" | "large" | "xlarge"
7
+ variant?: "squared" | "rounded"
7
8
  }>
8
9
 
9
10
  /**
@@ -13,6 +14,7 @@ type IconAvatarProps = PropsWithChildren<{
13
14
  */
14
15
  export const IconAvatar = ({
15
16
  size = "small",
17
+ variant = "rounded",
16
18
  children,
17
19
  className,
18
20
  }: IconAvatarProps) => {
@@ -20,6 +22,8 @@ export const IconAvatar = ({
20
22
  <div
21
23
  className={clx(
22
24
  "shadow-borders-base flex size-7 items-center justify-center",
25
+ variant === "squared" && "rounded-md",
26
+ variant === "rounded" && "rounded-full",
23
27
  "[&>div]:bg-ui-bg-field [&>div]:text-ui-fg-subtle [&>div]:flex [&>div]:size-6 [&>div]:items-center [&>div]:justify-center",
24
28
  {
25
29
  "size-7 rounded-md [&>div]:size-6 [&>div]:rounded-[4px]":
@@ -0,0 +1,233 @@
1
+ import { clx, Textarea } from "@medusajs/ui"
2
+ import { Popover as RadixPopover } from "radix-ui"
3
+ import { useCallback, useEffect, useRef, useState } from "react"
4
+ import { Controller, ControllerRenderProps } from "react-hook-form"
5
+
6
+ import { useCombinedRefs } from "../../../hooks/use-combined-refs"
7
+ import { useDataGridCell, useDataGridCellError } from "../hooks"
8
+ import { useDataGridContext } from "../context"
9
+ import { DataGridCellProps, InputProps, DataGridCellContext } from "../types"
10
+ import { DataGridCellContainer } from "./data-grid-cell-container"
11
+
12
+ type DataGridExpandableTextCellProps<TData, TValue = any> = DataGridCellProps<
13
+ TData,
14
+ TValue
15
+ > & {
16
+ fieldLabel?: string
17
+ }
18
+
19
+ export const DataGridExpandableTextCell = <TData, TValue = any>({
20
+ context,
21
+ fieldLabel,
22
+ }: DataGridExpandableTextCellProps<TData, TValue>) => {
23
+ const { field, control, renderProps } = useDataGridCell({
24
+ context,
25
+ })
26
+ const errorProps = useDataGridCellError({ context })
27
+
28
+ const { container, input } = renderProps
29
+
30
+ return (
31
+ <Controller
32
+ control={control}
33
+ name={field}
34
+ render={({ field }) => {
35
+ return (
36
+ <Inner
37
+ field={field}
38
+ inputProps={input}
39
+ fieldLabel={fieldLabel}
40
+ container={container}
41
+ errorProps={errorProps}
42
+ />
43
+ )
44
+ }}
45
+ />
46
+ )
47
+ }
48
+
49
+ const Inner = ({
50
+ field,
51
+ inputProps,
52
+ fieldLabel: _fieldLabel,
53
+ container,
54
+ errorProps,
55
+ }: {
56
+ field: ControllerRenderProps<any, string>
57
+ inputProps: InputProps
58
+ fieldLabel?: string
59
+ container: any
60
+ errorProps: any
61
+ }) => {
62
+ const { onChange: _, onBlur, ref, value, ...rest } = field
63
+ const { ref: inputRef, onBlur: onInputBlur, onChange, ...input } = inputProps
64
+ const { setSingleRange, anchor } = useDataGridContext()
65
+ const { row, col } = anchor || { row: 0, col: 0 }
66
+
67
+ const [localValue, setLocalValue] = useState(value || "")
68
+ const [isPopoverOpen, setIsPopoverOpen] = useState(false)
69
+ const [popoverValue, setPopoverValue] = useState(value || "")
70
+ const popoverContentRef = useRef<HTMLDivElement>(null)
71
+
72
+ useEffect(() => {
73
+ setLocalValue(value || "")
74
+ }, [value])
75
+
76
+ useEffect(() => {
77
+ if (isPopoverOpen) {
78
+ setPopoverValue(value || "")
79
+ }
80
+ }, [isPopoverOpen, value])
81
+
82
+ // Prevent DataGrid keyboard handlers from intercepting keys when popover is open
83
+ useEffect(() => {
84
+ if (!isPopoverOpen || !popoverContentRef.current) {
85
+ return
86
+ }
87
+
88
+ const handleKeyDownCapture = (e: KeyboardEvent) => {
89
+ const target = e.target as HTMLElement
90
+ const isTextarea = target.tagName === "TEXTAREA"
91
+ const isInPopover =
92
+ popoverContentRef.current && popoverContentRef.current.contains(target)
93
+
94
+ if (isTextarea || isInPopover) {
95
+ const dataGridKeys = [
96
+ "Enter",
97
+ "Delete",
98
+ "Backspace",
99
+ "ArrowUp",
100
+ "ArrowDown",
101
+ "ArrowLeft",
102
+ "ArrowRight",
103
+ "Tab",
104
+ " ",
105
+ ]
106
+
107
+ // Stop the keys from reaching DataGrid, so the textarea can handle them
108
+ if (dataGridKeys.includes(e.key) && e.key !== "Escape") {
109
+ e.stopImmediatePropagation()
110
+ }
111
+ }
112
+ }
113
+
114
+ window.addEventListener("keydown", handleKeyDownCapture, true)
115
+
116
+ return () => {
117
+ window.removeEventListener("keydown", handleKeyDownCapture, true)
118
+ }
119
+ }, [isPopoverOpen])
120
+
121
+ const combinedRefs = useCombinedRefs(inputRef, ref)
122
+
123
+ const handleOverlayMouseDown = useCallback(
124
+ (e: React.MouseEvent) => {
125
+ if (e.detail === 2) {
126
+ e.preventDefault()
127
+ e.stopPropagation()
128
+ setSingleRange({ row, col })
129
+ setIsPopoverOpen(true)
130
+ return
131
+ }
132
+ // For single clicks, use the normal handler which sets anchor and focuses container
133
+ container.overlayProps.onMouseDown?.(e)
134
+ },
135
+ [container.overlayProps, setSingleRange, row, col]
136
+ )
137
+
138
+ const customContainer = {
139
+ ...container,
140
+ overlayProps: {
141
+ ...container.overlayProps,
142
+ onMouseDown: handleOverlayMouseDown,
143
+ },
144
+ }
145
+
146
+ const handlePopoverSave = () => {
147
+ onChange(popoverValue, value)
148
+ setLocalValue(popoverValue)
149
+ setIsPopoverOpen(false)
150
+ onBlur()
151
+ onInputBlur()
152
+ }
153
+
154
+ const handlePopoverKeyDown = useCallback((e: React.KeyboardEvent) => {
155
+ if (e.key !== "Escape") {
156
+ e.stopPropagation()
157
+ }
158
+ }, [])
159
+
160
+ const displayValue = localValue || ""
161
+ const truncatedValue =
162
+ displayValue.length > 50
163
+ ? `${displayValue.substring(0, 50)}...`
164
+ : displayValue
165
+
166
+ return (
167
+ <RadixPopover.Root
168
+ open={isPopoverOpen}
169
+ onOpenChange={(open) => {
170
+ if (!open) {
171
+ handlePopoverSave()
172
+ } else {
173
+ setIsPopoverOpen(true)
174
+ }
175
+ }}
176
+ >
177
+ <DataGridCellContainer {...customContainer} {...errorProps}>
178
+ <RadixPopover.Anchor asChild>
179
+ <div
180
+ className={clx(
181
+ "txt-compact-small text-ui-fg-subtle flex size-full cursor-pointer items-center justify-center bg-transparent outline-none",
182
+ "focus:cursor-text"
183
+ )}
184
+ >
185
+ <span className="w-full truncate text-center">
186
+ {truncatedValue}
187
+ </span>
188
+ </div>
189
+ </RadixPopover.Anchor>
190
+ <input
191
+ className="sr-only"
192
+ autoComplete="off"
193
+ tabIndex={-1}
194
+ value={localValue}
195
+ onChange={(e) => setLocalValue(e.target.value)}
196
+ ref={combinedRefs}
197
+ onBlur={() => {
198
+ onBlur()
199
+ onInputBlur()
200
+ onChange(localValue, value)
201
+ }}
202
+ {...input}
203
+ {...rest}
204
+ />
205
+ </DataGridCellContainer>
206
+ <RadixPopover.Portal>
207
+ <RadixPopover.Content
208
+ className={clx(
209
+ "bg-ui-bg-base shadow-elevation-flyout flex max-h-[80vh] w-[600px] overflow-hidden p-0 outline-none"
210
+ )}
211
+ align="start"
212
+ side="bottom"
213
+ sideOffset={-29}
214
+ alignOffset={-16}
215
+ collisionPadding={24}
216
+ onEscapeKeyDown={handlePopoverSave}
217
+ onKeyDown={handlePopoverKeyDown}
218
+ >
219
+ <div ref={popoverContentRef} className="h-full w-full">
220
+ <Textarea
221
+ value={popoverValue}
222
+ onChange={(e) => setPopoverValue(e.target.value)}
223
+ onKeyDown={(e) => {
224
+ e.stopPropagation()
225
+ }}
226
+ className="!bg-ui-bg-base h-full min-h-[300px] w-full resize-none border-0 p-4 !shadow-none focus-visible:!shadow-none"
227
+ />
228
+ </div>
229
+ </RadixPopover.Content>
230
+ </RadixPopover.Portal>
231
+ </RadixPopover.Root>
232
+ )
233
+ }
@@ -5,3 +5,4 @@ export { DataGridReadonlyCell as DataGridReadOnlyCell } from "./data-grid-readon
5
5
  export { DataGridRoot, type DataGridRootProps } from "./data-grid-root"
6
6
  export { DataGridSkeleton } from "./data-grid-skeleton"
7
7
  export { DataGridTextCell } from "./data-grid-text-cell"
8
+ export { DataGridExpandableTextCell } from "./data-grid-textarea-modal-cell"
@@ -8,6 +8,7 @@ import {
8
8
  DataGridRoot,
9
9
  DataGridSkeleton,
10
10
  DataGridTextCell,
11
+ DataGridExpandableTextCell,
11
12
  type DataGridRootProps,
12
13
  } from "./components"
13
14
 
@@ -35,6 +36,7 @@ const _DataGrid = <TData, TFieldValues extends FieldValues = FieldValues>({
35
36
  export const DataGrid = Object.assign(_DataGrid, {
36
37
  BooleanCell: DataGridBooleanCell,
37
38
  TextCell: DataGridTextCell,
39
+ ExpandableTextCell: DataGridExpandableTextCell,
38
40
  NumberCell: DataGridNumberCell,
39
41
  CurrencyCell: DataGridCurrencyCell,
40
42
  ReadonlyCell: DataGridReadOnlyCell,
@@ -9,6 +9,7 @@ import { useExtension } from "../../../providers/extension-provider"
9
9
  import { INavItem, NavItem } from "../nav-item"
10
10
  import { Shell } from "../shell"
11
11
  import { UserMenu } from "../user-menu"
12
+ import { useFeatureFlag } from "../../../providers/feature-flag-provider"
12
13
 
13
14
  export const SettingsLayout = () => {
14
15
  return (
@@ -19,6 +20,7 @@ export const SettingsLayout = () => {
19
20
  }
20
21
 
21
22
  const useSettingRoutes = (): INavItem[] => {
23
+ const isTranslationsEnabled = useFeatureFlag("translation")
22
24
  const { t } = useTranslation()
23
25
 
24
26
  return useMemo(
@@ -63,8 +65,16 @@ const useSettingRoutes = (): INavItem[] => {
63
65
  label: t("stockLocations.domain"),
64
66
  to: "/settings/locations",
65
67
  },
68
+ ...(isTranslationsEnabled
69
+ ? [
70
+ {
71
+ label: t("translations.domain"),
72
+ to: "/settings/translations",
73
+ },
74
+ ]
75
+ : []),
66
76
  ],
67
- [t]
77
+ [t, isTranslationsEnabled]
68
78
  )
69
79
  }
70
80
 
@@ -8,7 +8,7 @@ import { RouteModalProvider } from "../route-modal-provider/route-provider"
8
8
  import { StackedModalProvider } from "../stacked-modal-provider"
9
9
 
10
10
  type RouteFocusModalProps = PropsWithChildren<{
11
- prev?: string | Partial<Path>
11
+ prev?: string | Partial<Path> | number
12
12
  }>
13
13
 
14
14
  const Root = ({ prev = "..", children }: RouteFocusModalProps) => {
@@ -16,7 +16,8 @@ const Root = ({ prev = "..", children }: RouteFocusModalProps) => {
16
16
  const [open, setOpen] = useState(false)
17
17
  const [stackedModalOpen, onStackedModalOpen] = useState(false)
18
18
 
19
- const to = useStateAwareTo(prev)
19
+ const to: string | Partial<Path> | number =
20
+ typeof prev === "number" ? prev : useStateAwareTo(prev)
20
21
 
21
22
  /**
22
23
  * Open the modal when the component mounts. This
@@ -34,7 +35,11 @@ const Root = ({ prev = "..", children }: RouteFocusModalProps) => {
34
35
  const handleOpenChange = (open: boolean) => {
35
36
  if (!open) {
36
37
  document.body.style.pointerEvents = "auto"
37
- navigate(to, { replace: true })
38
+ if (typeof to === "number") {
39
+ navigate(to)
40
+ } else {
41
+ navigate(to, { replace: true })
42
+ }
38
43
  return
39
44
  }
40
45
 
@@ -24,7 +24,12 @@ export const RouteModalForm = <TFieldValues extends FieldValues = any>({
24
24
  } = form
25
25
 
26
26
  const blocker = useBlocker(({ currentLocation, nextLocation }) => {
27
- const { isSubmitSuccessful } = nextLocation.state || {}
27
+ // Check both nextLocation and currentLocation state for successful submission
28
+ // This handles browser history navigation (-1) where we set state on current location
29
+ const { isSubmitSuccessful: nextIsSuccessful } = nextLocation.state || {}
30
+ const { isSubmitSuccessful: currentIsSuccessful } =
31
+ currentLocation.state || {}
32
+ const isSubmitSuccessful = nextIsSuccessful || currentIsSuccessful
28
33
 
29
34
  if (isSubmitSuccessful) {
30
35
  onClose?.(true)
@@ -1,9 +1,9 @@
1
1
  import { PropsWithChildren, useCallback, useMemo, useState } from "react"
2
- import { Path, useNavigate } from "react-router-dom"
2
+ import { Path, useLocation, useNavigate } from "react-router-dom"
3
3
  import { RouteModalProviderContext } from "./route-modal-context"
4
4
 
5
5
  type RouteModalProviderProps = PropsWithChildren<{
6
- prev: string | Partial<Path>
6
+ prev: string | Partial<Path> | number
7
7
  }>
8
8
 
9
9
  export const RouteModalProvider = ({
@@ -11,15 +11,27 @@ export const RouteModalProvider = ({
11
11
  children,
12
12
  }: RouteModalProviderProps) => {
13
13
  const navigate = useNavigate()
14
+ const location = useLocation()
14
15
 
15
16
  const [closeOnEscape, setCloseOnEscape] = useState(true)
16
17
 
17
18
  const handleSuccess = useCallback(
18
19
  (path?: string) => {
19
20
  const to = path || prev
20
- navigate(to, { replace: true, state: { isSubmitSuccessful: true } })
21
+ if (typeof to === "number") {
22
+ // Replace current location with success state, then navigate back
23
+ navigate(location.pathname + location.search, {
24
+ replace: true,
25
+ state: { ...location.state, isSubmitSuccessful: true },
26
+ })
27
+ setTimeout(() => {
28
+ navigate(to)
29
+ }, 0)
30
+ } else {
31
+ navigate(to, { replace: true, state: { isSubmitSuccessful: true } })
32
+ }
21
33
  },
22
- [navigate, prev]
34
+ [navigate, prev, location]
23
35
  )
24
36
 
25
37
  const value = useMemo(
@@ -300,6 +300,12 @@ export function getRouteMap({
300
300
  {
301
301
  path: "",
302
302
  lazy: () => import("../../routes/orders/order-list"),
303
+ children: [
304
+ {
305
+ path: "export",
306
+ lazy: () => import("../../routes/orders/order-export"),
307
+ },
308
+ ],
303
309
  },
304
310
  {
305
311
  path: ":id",
@@ -1834,6 +1840,25 @@ export function getRouteMap({
1834
1840
  },
1835
1841
  ],
1836
1842
  },
1843
+ {
1844
+ path: "translations",
1845
+ errorElement: <ErrorBoundary />,
1846
+ handle: {
1847
+ breadcrumb: () => t("translations.domain"),
1848
+ },
1849
+ children: [
1850
+ {
1851
+ path: "",
1852
+ lazy: () =>
1853
+ import("../../routes/translations/translation-list"),
1854
+ },
1855
+ {
1856
+ path: "edit",
1857
+ lazy: () =>
1858
+ import("../../routes/translations/translations-edit"),
1859
+ },
1860
+ ],
1861
+ },
1837
1862
  ...(settingsRoutes?.[0]?.children || []),
1838
1863
  ],
1839
1864
  },
@@ -34,6 +34,7 @@ export * from "./store"
34
34
  export * from "./tags"
35
35
  export * from "./tax-rates"
36
36
  export * from "./tax-regions"
37
+ export * from "./translations"
37
38
  export * from "./users"
38
39
  export * from "./views"
39
40
  export * from "./workflow-executions"
@@ -10,8 +10,8 @@ import {
10
10
  import { sdk } from "../../lib/client"
11
11
  import { queryClient } from "../../lib/query-client"
12
12
  import { queryKeysFactory, TQueryKey } from "../../lib/query-key-factory"
13
- import { reservationItemsQueryKeys } from "./reservations"
14
13
  import { inventoryItemsQueryKeys } from "./inventory"
14
+ import { reservationItemsQueryKeys } from "./reservations"
15
15
 
16
16
  const ORDERS_QUERY_KEY = "orders" as const
17
17
  const _orderKeys = queryKeysFactory(ORDERS_QUERY_KEY) as TQueryKey<"orders"> & {
@@ -438,3 +438,20 @@ export const useUpdateOrderChange = (
438
438
  ...options,
439
439
  })
440
440
  }
441
+
442
+ export const useExportOrders = (
443
+ query?: HttpTypes.AdminOrderFilters,
444
+ options?: UseMutationOptions<
445
+ { transaction_id: string },
446
+ FetchError,
447
+ HttpTypes.AdminOrderFilters
448
+ >
449
+ ) => {
450
+ return useMutation({
451
+ mutationFn: () => sdk.admin.order.export(query),
452
+ onSuccess: (data, variables, context) => {
453
+ options?.onSuccess?.(data, variables, context)
454
+ },
455
+ ...options,
456
+ })
457
+ }
@@ -2,6 +2,7 @@ import { QueryKey, useQuery, UseQueryOptions } from "@tanstack/react-query"
2
2
  import { sdk } from "../../lib/client"
3
3
  import { queryKeysFactory } from "../../lib/query-key-factory"
4
4
  import { FetchError } from "@medusajs/js-sdk"
5
+ import { HttpTypes } from "@medusajs/types"
5
6
 
6
7
  const PRODUCT_VARIANT_QUERY_KEY = "product_variant" as const
7
8
  export const productVariantQueryKeys = queryKeysFactory(
@@ -11,7 +12,12 @@ export const productVariantQueryKeys = queryKeysFactory(
11
12
  export const useVariants = (
12
13
  query?: Record<string, any>,
13
14
  options?: Omit<
14
- UseQueryOptions<any, FetchError, any, QueryKey>,
15
+ UseQueryOptions<
16
+ HttpTypes.AdminProductVariantListResponse,
17
+ FetchError,
18
+ HttpTypes.AdminProductVariantListResponse,
19
+ QueryKey
20
+ >,
15
21
  "queryFn" | "queryKey"
16
22
  >
17
23
  ) => {