@medusajs/dashboard 3.0.0-snapshot-20251216135612 → 3.0.0-snapshot-20260102125810

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 (291) hide show
  1. package/dist/add-locales-2OZXZCT5.mjs +81 -0
  2. package/dist/{adjust-inventory-26YXAXQL.mjs → adjust-inventory-47KGDWME.mjs} +2 -2
  3. package/dist/{api-key-management-create-EMP32G2D.mjs → api-key-management-create-EFPPZPZ7.mjs} +4 -4
  4. package/dist/{api-key-management-detail-6RCDH73M.mjs → api-key-management-detail-4IFED7SF.mjs} +15 -15
  5. package/dist/{api-key-management-edit-IBM3ZXHK.mjs → api-key-management-edit-QGVBNLUL.mjs} +4 -4
  6. package/dist/{api-key-management-list-KC5GOWAU.mjs → api-key-management-list-ROIJIIPQ.mjs} +4 -4
  7. package/dist/{api-key-management-sales-channels-LUB5G6RC.mjs → api-key-management-sales-channels-7P5L45AT.mjs} +6 -6
  8. package/dist/app.css +39 -3
  9. package/dist/app.js +18590 -16625
  10. package/dist/app.mjs +13 -13
  11. package/dist/{campaign-create-FJOECKGT.mjs → campaign-create-EZGZ4SBQ.mjs} +3 -3
  12. package/dist/{campaign-detail-5Q4BYCPX.mjs → campaign-detail-NFKLFPY4.mjs} +12 -12
  13. package/dist/{categories-metadata-J7M3XWI7.mjs → categories-metadata-G7BACZ26.mjs} +12 -12
  14. package/dist/{category-create-KHJZSC7G.mjs → category-create-7MV25HYX.mjs} +6 -6
  15. package/dist/{category-detail-S5IPXMHX.mjs → category-detail-XJQQ7UU4.mjs} +14 -14
  16. package/dist/{category-edit-CTA2EPDG.mjs → category-edit-LV7EARAB.mjs} +3 -3
  17. package/dist/{category-list-QBYJ4T3R.mjs → category-list-NIVLV5S3.mjs} +6 -6
  18. package/dist/{category-organize-SXP33XET.mjs → category-organize-SCRGWKDG.mjs} +3 -3
  19. package/dist/{category-products-KPW6BA5J.mjs → category-products-FXFSMCR6.mjs} +13 -13
  20. package/dist/{chunk-OXPE5TAY.mjs → chunk-24C2YVFU.mjs} +1 -1
  21. package/dist/{chunk-4JQR6QNW.mjs → chunk-333HK6Y6.mjs} +2 -2
  22. package/dist/{chunk-DODQ3KJT.mjs → chunk-3RRA56WC.mjs} +8 -3
  23. package/dist/{chunk-5LGRZSEH.mjs → chunk-3YPZ3R4U.mjs} +1 -1
  24. package/dist/{chunk-2DULKOPN.mjs → chunk-5ISRTMYH.mjs} +1 -1
  25. package/dist/{chunk-PHLCT2HA.mjs → chunk-5ZPKY5XP.mjs} +1 -1
  26. package/dist/{chunk-U6G4M5LP.mjs → chunk-6EXKKRZY.mjs} +1 -1
  27. package/dist/{chunk-GRZSG4EP.mjs → chunk-74WPAWMW.mjs} +127 -226
  28. package/dist/chunk-7AXHHXCX.mjs +4 -0
  29. package/dist/{chunk-YKYVCQRS.mjs → chunk-BJ44US4R.mjs} +382 -242
  30. package/dist/{chunk-BMS2QLJY.mjs → chunk-BMJ5RYIO.mjs} +1 -1
  31. package/dist/{chunk-Y2YVTIJI.mjs → chunk-CW5PQUJ6.mjs} +1 -1
  32. package/dist/{chunk-IAV7IKJ6.mjs → chunk-DN5BRKVN.mjs} +1 -1
  33. package/dist/{chunk-RS7DWLEP.mjs → chunk-DQUXK4WW.mjs} +1 -1
  34. package/dist/{chunk-2XTBDCGE.mjs → chunk-DWH2OQFK.mjs} +1 -1
  35. package/dist/{chunk-CCQD65EY.mjs → chunk-FKNW5MLZ.mjs} +360 -288
  36. package/dist/{chunk-HTCYX4VD.mjs → chunk-G35UUG2P.mjs} +1 -1
  37. package/dist/{chunk-QKALAT7P.mjs → chunk-GGONMC2N.mjs} +1 -1
  38. package/dist/{chunk-FYWHE3W5.mjs → chunk-GJN5SXGZ.mjs} +1 -1
  39. package/dist/{chunk-CVHJAKLQ.mjs → chunk-HDO2UCKF.mjs} +1 -1
  40. package/dist/{chunk-3C6WQ7NH.mjs → chunk-IWNNQ6HA.mjs} +37 -3
  41. package/dist/{chunk-OL24RDYM.mjs → chunk-KHJL6MUQ.mjs} +8 -8
  42. package/dist/{chunk-6P4Q4AAP.mjs → chunk-KPI4WFJU.mjs} +3 -3
  43. package/dist/{chunk-AHZLMCZF.mjs → chunk-KSDXSKJ7.mjs} +1 -1
  44. package/dist/{chunk-BZKI5J2M.mjs → chunk-L7A2JIQY.mjs} +3 -3
  45. package/dist/{chunk-XY7A7GZJ.mjs → chunk-LEAMWI5H.mjs} +1 -1
  46. package/dist/{chunk-A4XYK3MY.mjs → chunk-LG5B2BVB.mjs} +2 -2
  47. package/dist/{chunk-23GTCEOV.mjs → chunk-ML7BA2NY.mjs} +1 -1
  48. package/dist/{chunk-OFN7DIZA.mjs → chunk-OYHFHBNL.mjs} +94 -7
  49. package/dist/{chunk-OSHH5GAS.mjs → chunk-Q34TRFIW.mjs} +1 -13
  50. package/dist/{chunk-UJ2TMPV4.mjs → chunk-QBIQEVTU.mjs} +0 -12
  51. package/dist/{chunk-YYOPBKME.mjs → chunk-QHRAWZGA.mjs} +3 -3
  52. package/dist/{chunk-A2WBKOXJ.mjs → chunk-SO2DE6MM.mjs} +2 -2
  53. package/dist/chunk-T6DDBLGY.mjs +13 -0
  54. package/dist/{chunk-EHU67PIM.mjs → chunk-TOCMU7UV.mjs} +7 -3
  55. package/dist/{chunk-YIOBBZUB.mjs → chunk-U7KANQ5A.mjs} +2 -2
  56. package/dist/{chunk-Z6BFNHEO.mjs → chunk-UCYUWNJL.mjs} +109 -62
  57. package/dist/{chunk-WYATCUOM.mjs → chunk-V2RGYIAG.mjs} +10 -10
  58. package/dist/{chunk-UWY5ZV66.mjs → chunk-VQ73B7ZZ.mjs} +1 -13
  59. package/dist/chunk-XD72PXRS.mjs +329 -0
  60. package/dist/{store-add-locales-VJ4RJ7UI.mjs → chunk-YFXI6CWD.mjs} +2 -67
  61. package/dist/{chunk-AWRCV3ME.mjs → chunk-YM4XGCHB.mjs} +1 -1
  62. package/dist/{chunk-ZMG5B4FG.mjs → chunk-ZGV5NOTE.mjs} +1 -1
  63. package/dist/{collection-add-products-FU2BS3D3.mjs → collection-add-products-YDMBU2JY.mjs} +13 -13
  64. package/dist/{collection-create-GWKWVT7B.mjs → collection-create-RXHEXU6T.mjs} +3 -3
  65. package/dist/{collection-detail-VJE7XHLV.mjs → collection-detail-75XPGVOX.mjs} +13 -13
  66. package/dist/{collection-edit-EZIO2BR5.mjs → collection-edit-CGF47VIN.mjs} +3 -3
  67. package/dist/{collection-list-IGA6SCNF.mjs → collection-list-75N5NYXQ.mjs} +18 -17
  68. package/dist/{collection-metadata-QK7MI3D2.mjs → collection-metadata-TGGC6HM2.mjs} +12 -12
  69. package/dist/{customer-detail-MOV2T3LF.mjs → customer-detail-KDLZ23B3.mjs} +17 -16
  70. package/dist/{customer-group-detail-6T7OXGQD.mjs → customer-group-detail-ZIAVMOYS.mjs} +12 -12
  71. package/dist/{customer-group-list-AJEAF5D2.mjs → customer-group-list-BDDC5VVZ.mjs} +15 -15
  72. package/dist/{customers-add-customer-group-QVTVSQYM.mjs → customers-add-customer-group-B3ASQGP6.mjs} +12 -12
  73. package/dist/{edit-inventory-item-H7DAZWIT.mjs → edit-inventory-item-OKAXQRJ5.mjs} +2 -2
  74. package/dist/{edit-inventory-item-attributes-7HTXXPGZ.mjs → edit-inventory-item-attributes-FVWDV6O5.mjs} +2 -2
  75. package/dist/{edit-reservation-OVTRZHJR.mjs → edit-reservation-3PU6YSNJ.mjs} +3 -3
  76. package/dist/{edit-rules-SMVRTCUP.mjs → edit-rules-LOJ3P4YB.mjs} +14 -14
  77. package/dist/en.json +85 -5
  78. package/dist/{inventory-create-ANYUM4P5.mjs → inventory-create-C2WWS7QR.mjs} +13 -13
  79. package/dist/{inventory-detail-ZPSEMYI2.mjs → inventory-detail-AKOZ4T3Z.mjs} +12 -12
  80. package/dist/{inventory-list-RXJPSVZE.mjs → inventory-list-DRFJIU2O.mjs} +2 -2
  81. package/dist/{inventory-metadata-FNEJ3RAT.mjs → inventory-metadata-N6CJZEWD.mjs} +12 -12
  82. package/dist/{inventory-stock-FD4ZM4BB.mjs → inventory-stock-IJ2N7LKC.mjs} +14 -14
  83. package/dist/{location-detail-N3GUZSY7.mjs → location-detail-PL4Y43RS.mjs} +16 -16
  84. package/dist/{location-fulfillment-providers-7ZUJAGNY.mjs → location-fulfillment-providers-2PLOVSXC.mjs} +17 -16
  85. package/dist/{location-sales-channels-P3QJTFDT.mjs → location-sales-channels-SZARSLWT.mjs} +5 -5
  86. package/dist/{location-service-zone-shipping-option-create-ZJ4GIBTJ.mjs → location-service-zone-shipping-option-create-CUNSAP24.mjs} +15 -15
  87. package/dist/{location-service-zone-shipping-option-edit-4CGPQ3VT.mjs → location-service-zone-shipping-option-edit-OJ462SVM.mjs} +1 -1
  88. package/dist/{location-service-zone-shipping-option-pricing-CR4BVYG3.mjs → location-service-zone-shipping-option-pricing-5HN2Z5RB.mjs} +2 -2
  89. package/dist/login-VBUNWZHI.mjs +301 -0
  90. package/dist/{manage-locations-7HH6R4UP.mjs → manage-locations-JPCSBA5D.mjs} +2 -2
  91. package/dist/{order-allocate-items-HZGGYJ42.mjs → order-allocate-items-6QHQASQJ.mjs} +4 -4
  92. package/dist/{order-create-claim-SCDJGM46.mjs → order-create-claim-ECVSH5GC.mjs} +22 -22
  93. package/dist/{order-create-edit-JIE3HDHP.mjs → order-create-edit-EVIOJIXE.mjs} +14 -13
  94. package/dist/{order-create-exchange-LQU4YN7F.mjs → order-create-exchange-ZVYYOGI3.mjs} +22 -22
  95. package/dist/{order-create-fulfillment-OWUVTZXW.mjs → order-create-fulfillment-FDIFEV6X.mjs} +16 -16
  96. package/dist/{order-create-refund-Q6HQY42R.mjs → order-create-refund-TNPGKR5P.mjs} +17 -17
  97. package/dist/{order-create-return-52GHGW5Z.mjs → order-create-return-NR6XQLDD.mjs} +9 -9
  98. package/dist/{order-create-shipment-WAGGEPRW.mjs → order-create-shipment-UP3WGRWB.mjs} +12 -12
  99. package/dist/{order-detail-PVPGEWGY.mjs → order-detail-F6D5DV74.mjs} +28 -28
  100. package/dist/{order-edit-billing-address-UM76J4KX.mjs → order-edit-billing-address-D4AJ6Z5Q.mjs} +44 -12
  101. package/dist/{order-edit-email-CL3KNOCM.mjs → order-edit-email-MXYA5BII.mjs} +12 -12
  102. package/dist/{order-edit-shipping-address-PIESTGVL.mjs → order-edit-shipping-address-GKW2ZPGR.mjs} +42 -12
  103. package/dist/{order-export-LE363ZLB.mjs → order-export-KQUI2TK7.mjs} +14 -14
  104. package/dist/{order-list-GRLQWN4L.mjs → order-list-7A5UKGXR.mjs} +11 -11
  105. package/dist/{order-metadata-FHBB7MTG.mjs → order-metadata-2IXELA7C.mjs} +12 -12
  106. package/dist/{order-receive-return-PRVKP6J2.mjs → order-receive-return-XXHOXGDC.mjs} +13 -13
  107. package/dist/{order-request-transfer-XSAGRUMT.mjs → order-request-transfer-2ENR64VR.mjs} +13 -13
  108. package/dist/{price-list-configuration-6S3MLNXQ.mjs → price-list-configuration-BZ3ZH5FY.mjs} +3 -3
  109. package/dist/{price-list-create-MFRUQADC.mjs → price-list-create-GFGNP6OS.mjs} +16 -16
  110. package/dist/{price-list-detail-Q5VG5VGW.mjs → price-list-detail-SNNOR5N7.mjs} +17 -17
  111. package/dist/{price-list-edit-53UW35L3.mjs → price-list-edit-YW5BXBF2.mjs} +3 -3
  112. package/dist/{price-list-list-DG5YEZ44.mjs → price-list-list-OF562HME.mjs} +4 -4
  113. package/dist/{price-list-prices-add-SDU5YZAT.mjs → price-list-prices-add-F7A2EV7L.mjs} +15 -15
  114. package/dist/{price-list-prices-edit-5USQR4D4.mjs → price-list-prices-edit-PQ26MOJE.mjs} +5 -5
  115. package/dist/{product-attributes-EFIRUBRO.mjs → product-attributes-JTPGHUXZ.mjs} +13 -13
  116. package/dist/{product-create-K6EWZHIT.mjs → product-create-VFLLQWVX.mjs} +485 -561
  117. package/dist/{product-create-variant-ERKHTEJZ.mjs → product-create-variant-PLZ5Q2R6.mjs} +14 -14
  118. package/dist/{product-detail-DKPZDEIY.mjs → product-detail-ISHFZV7X.mjs} +45 -66
  119. package/dist/{product-edit-55YXTIGO.mjs → product-edit-6EDDNIM6.mjs} +13 -13
  120. package/dist/{product-export-5AD7NELI.mjs → product-export-UMMROQ7T.mjs} +18 -17
  121. package/dist/{product-image-variants-edit-M6QF2RLE.mjs → product-image-variants-edit-VRG3AJID.mjs} +12 -12
  122. package/dist/{product-import-V3KQN4TV.mjs → product-import-EPS4KDID.mjs} +12 -12
  123. package/dist/{product-list-EUWZIFTM.mjs → product-list-37O7VB2L.mjs} +20 -20
  124. package/dist/{product-media-3VJ7KENL.mjs → product-media-IV5NUSLW.mjs} +3 -3
  125. package/dist/{product-metadata-GL2MVPDI.mjs → product-metadata-KTVRI7B3.mjs} +12 -12
  126. package/dist/product-option-create-JUGLFR2K.mjs +336 -0
  127. package/dist/product-option-detail-VVK3YBCE.mjs +331 -0
  128. package/dist/product-option-edit-7FQSKI2R.mjs +325 -0
  129. package/dist/product-option-list-YHGRI7OJ.mjs +268 -0
  130. package/dist/product-option-metadata-P2DHDGYR.mjs +73 -0
  131. package/dist/product-options-manage-4SZDF5H5.mjs +325 -0
  132. package/dist/{product-organization-N3VBRXF4.mjs → product-organization-OEUSIWNQ.mjs} +15 -15
  133. package/dist/{product-prices-4C36AG4R.mjs → product-prices-GUO3KM2U.mjs} +3 -3
  134. package/dist/{product-sales-channels-PPXUG4KT.mjs → product-sales-channels-BOZD3AC3.mjs} +5 -5
  135. package/dist/{product-shipping-profile-ETQFZ7DC.mjs → product-shipping-profile-FNFRDY47.mjs} +3 -3
  136. package/dist/{product-stock-VEGE6SUZ.mjs → product-stock-2DNYG73L.mjs} +14 -14
  137. package/dist/{product-tag-create-PQMDDKWH.mjs → product-tag-create-CW7GUCZW.mjs} +12 -12
  138. package/dist/{product-tag-detail-I3MBZX7U.mjs → product-tag-detail-IB5VIZ3K.mjs} +26 -25
  139. package/dist/{product-tag-edit-K3BBQLJR.mjs → product-tag-edit-ZSXD3DOC.mjs} +12 -12
  140. package/dist/{product-tag-list-JUWSOMB7.mjs → product-tag-list-MJO5PURP.mjs} +24 -23
  141. package/dist/{product-tag-metadata-MJH5LH7E.mjs → product-tag-metadata-DAKCXWZF.mjs} +12 -12
  142. package/dist/{product-type-create-DRFXTL5O.mjs → product-type-create-NRLNMABQ.mjs} +2 -2
  143. package/dist/{product-type-detail-RKHT5NBL.mjs → product-type-detail-J2IMAZW6.mjs} +14 -14
  144. package/dist/{product-type-edit-SRHCZDK7.mjs → product-type-edit-BHTPMMVI.mjs} +2 -2
  145. package/dist/{product-type-list-QQKAHBJ3.mjs → product-type-list-MQ2PW2IE.mjs} +3 -3
  146. package/dist/{product-type-metadata-CDJDFFGQ.mjs → product-type-metadata-BCZMUG3K.mjs} +12 -12
  147. package/dist/{product-variant-detail-XAYG5CKE.mjs → product-variant-detail-4L6DHT3K.mjs} +12 -12
  148. package/dist/{product-variant-edit-DEZEY2H2.mjs → product-variant-edit-PZU4P65H.mjs} +13 -13
  149. package/dist/{product-variant-manage-inventory-items-Y2VEOHP7.mjs → product-variant-manage-inventory-items-E3GPBPEZ.mjs} +3 -3
  150. package/dist/{product-variant-media-2WLVNGI4.mjs → product-variant-media-BSNCO642.mjs} +2 -2
  151. package/dist/{product-variant-metadata-VTZDNWUT.mjs → product-variant-metadata-FHGGZGPV.mjs} +12 -12
  152. package/dist/{promotion-add-campaign-DO67QK6M.mjs → promotion-add-campaign-NQSIFI33.mjs} +3 -3
  153. package/dist/{promotion-create-HWFNUQXG.mjs → promotion-create-GBZWJVAI.mjs} +24 -21
  154. package/dist/{promotion-detail-QC36KXB3.mjs → promotion-detail-W2OGUESO.mjs} +12 -12
  155. package/dist/{refund-reason-create-YHCDEHGQ.mjs → refund-reason-create-DLVRT5OU.mjs} +12 -12
  156. package/dist/{refund-reason-edit-CZ5QZ2SZ.mjs → refund-reason-edit-XCSU7RMH.mjs} +12 -12
  157. package/dist/{refund-reason-list-OJYYEYJE.mjs → refund-reason-list-G6UNVGPG.mjs} +18 -18
  158. package/dist/{region-create-NA7Y2LN4.mjs → region-create-2CRTF7HJ.mjs} +1 -1
  159. package/dist/{region-edit-WAU347DP.mjs → region-edit-IB3PJE7V.mjs} +1 -1
  160. package/dist/{region-metadata-H6XXUQ4S.mjs → region-metadata-WBEUKOI6.mjs} +12 -12
  161. package/dist/{reservation-create-ZCIYM6JI.mjs → reservation-create-ERFJUBME.mjs} +4 -4
  162. package/dist/{reservation-detail-LZAQL4XA.mjs → reservation-detail-Y6UZRZXY.mjs} +12 -12
  163. package/dist/{reservation-list-B47DXTA7.mjs → reservation-list-LEDZB7KL.mjs} +3 -3
  164. package/dist/{reservation-metadata-5HZSDDOK.mjs → reservation-metadata-7KH4EXMN.mjs} +12 -12
  165. package/dist/{return-reason-list-SCBGTOEI.mjs → return-reason-list-UUQAL464.mjs} +6 -6
  166. package/dist/{sales-channel-add-products-F7YV4MO5.mjs → sales-channel-add-products-GSPG7OTK.mjs} +14 -14
  167. package/dist/{sales-channel-create-MI7HHZYE.mjs → sales-channel-create-MM237EBQ.mjs} +3 -3
  168. package/dist/{sales-channel-detail-MXIPZCGA.mjs → sales-channel-detail-65ZFV2OI.mjs} +14 -14
  169. package/dist/{sales-channel-edit-VSHOIR37.mjs → sales-channel-edit-AC2J4N3M.mjs} +3 -3
  170. package/dist/{sales-channel-list-RLGL7FM3.mjs → sales-channel-list-LXLW7X3U.mjs} +14 -14
  171. package/dist/{sales-channel-metadata-M364R4RJ.mjs → sales-channel-metadata-QUAL2RH6.mjs} +13 -13
  172. package/dist/{shipping-option-type-create-C5WUWON7.mjs → shipping-option-type-create-EU75JC2Q.mjs} +12 -12
  173. package/dist/{shipping-option-type-detail-PENS2K73.mjs → shipping-option-type-detail-5GYEWATD.mjs} +13 -13
  174. package/dist/{shipping-option-type-edit-CIU5EHRP.mjs → shipping-option-type-edit-YR4JXT5M.mjs} +12 -12
  175. package/dist/{shipping-option-type-list-DIOX7VG7.mjs → shipping-option-type-list-BLC4Z5QW.mjs} +13 -13
  176. package/dist/{shipping-profile-metadata-75G2NNMA.mjs → shipping-profile-metadata-64YRWPDA.mjs} +12 -12
  177. package/dist/store-add-locales-TSMLNFZP.mjs +81 -0
  178. package/dist/{store-detail-JSNPOB2F.mjs → store-detail-3SS53LZR.mjs} +13 -13
  179. package/dist/{store-edit-5ZS562ZO.mjs → store-edit-SMEWFETF.mjs} +1 -1
  180. package/dist/{store-metadata-CYXTVJUE.mjs → store-metadata-IJGVDDA6.mjs} +12 -12
  181. package/dist/{tax-region-create-DWGL4EUT.mjs → tax-region-create-XLYIS5XX.mjs} +13 -13
  182. package/dist/{tax-region-detail-2AE2EFI3.mjs → tax-region-detail-66FKEGFB.mjs} +29 -28
  183. package/dist/{tax-region-edit-EEVEEU2Q.mjs → tax-region-edit-GBR4EDW7.mjs} +13 -13
  184. package/dist/{tax-region-province-detail-4ERSEQFF.mjs → tax-region-province-detail-OBA7Q7MQ.mjs} +29 -28
  185. package/dist/{tax-region-tax-override-create-PHCGEF7V.mjs → tax-region-tax-override-create-34WYD2QZ.mjs} +28 -27
  186. package/dist/{tax-region-tax-override-edit-SMRPSILC.mjs → tax-region-tax-override-edit-6WJVOGWA.mjs} +27 -26
  187. package/dist/translation-list-J65VNNAX.mjs +527 -0
  188. package/dist/{translations-edit-HUNKY7CO.mjs → translations-edit-6P3KC4MO.mjs} +285 -320
  189. package/dist/{user-detail-BJUXLZZQ.mjs → user-detail-VMOJFHIJ.mjs} +2 -2
  190. package/dist/{user-metadata-2WPJOEJA.mjs → user-metadata-UOPVFX2L.mjs} +12 -12
  191. package/dist/{workflow-execution-detail-H2AKEZJX.mjs → workflow-execution-detail-WAQ7IG4T.mjs} +12 -12
  192. package/package.json +9 -9
  193. package/src/components/data-grid/components/data-grid-cell-container.tsx +7 -10
  194. package/src/components/data-grid/components/data-grid-multiline-cell.tsx +103 -0
  195. package/src/components/data-grid/components/data-grid-readonly-cell.tsx +1 -4
  196. package/src/components/data-grid/components/data-grid-root.tsx +68 -51
  197. package/src/components/data-grid/components/data-grid-text-cell.tsx +6 -76
  198. package/src/components/data-grid/components/index.ts +1 -0
  199. package/src/components/data-grid/data-grid.tsx +2 -0
  200. package/src/components/data-grid/hooks/use-data-grid-cell.tsx +12 -0
  201. package/src/components/data-grid/hooks/use-data-grid-form-handlers.tsx +1 -0
  202. package/src/components/data-grid/hooks/use-data-grid-keydown-event.tsx +65 -7
  203. package/src/components/data-grid/types.ts +1 -0
  204. package/src/components/inputs/combobox/combobox.tsx +185 -95
  205. package/src/components/layout/main-layout/main-layout.tsx +7 -4
  206. package/src/components/table/table-cells/order/country-cell/country-cell.tsx +5 -1
  207. package/src/dashboard-app/routes/get-route.map.tsx +68 -12
  208. package/src/hooks/api/cloud.tsx +41 -0
  209. package/src/hooks/api/index.ts +3 -1
  210. package/src/hooks/api/product-options.tsx +151 -0
  211. package/src/hooks/api/products.tsx +26 -66
  212. package/src/hooks/api/translations.tsx +103 -191
  213. package/src/hooks/table/columns/use-order-table-columns.tsx +5 -3
  214. package/src/hooks/table/columns/use-product-option-table-columns.tsx +44 -0
  215. package/src/hooks/table/filters/index.ts +1 -0
  216. package/src/hooks/table/filters/use-product-option-table-filters.tsx +33 -0
  217. package/src/hooks/table/query/use-product-option-table-query.tsx +34 -0
  218. package/src/i18n/translations/$schema.json +304 -12
  219. package/src/i18n/translations/en.json +85 -5
  220. package/src/i18n/translations/es.json +21 -1
  221. package/src/routes/customers/customer-detail/components/customer-order-section/customer-order-section.tsx +1 -1
  222. package/src/routes/login/components/cloud-auth-login.tsx +114 -0
  223. package/src/routes/login/login.tsx +9 -1
  224. package/src/routes/orders/order-create-edit/components/order-edit-create-form/order-edit-item.tsx +1 -0
  225. package/src/routes/orders/order-edit-billing-address/components/edit-order-billing-address-form/edit-order-billing-address-form.tsx +34 -0
  226. package/src/routes/orders/order-edit-shipping-address/components/edit-order-shipping-address-form/edit-order-shipping-address-form.tsx +32 -0
  227. package/src/routes/product-options/common/hooks/use-delete-product-option-action.tsx +41 -0
  228. package/src/routes/product-options/product-option-create/components/create-product-option-form/create-product-option-details.tsx +71 -0
  229. package/src/routes/product-options/product-option-create/components/create-product-option-form/create-product-option-form.tsx +192 -0
  230. package/src/routes/product-options/product-option-create/components/create-product-option-form/create-product-option-organize.tsx +77 -0
  231. package/src/routes/product-options/product-option-create/components/create-product-option-form/index.ts +1 -0
  232. package/src/routes/product-options/product-option-create/components/create-product-option-form/schema.ts +15 -0
  233. package/src/routes/product-options/product-option-create/index.ts +1 -0
  234. package/src/routes/product-options/product-option-create/product-option-create.tsx +10 -0
  235. package/src/routes/product-options/product-option-detail/breadcrumb.tsx +14 -0
  236. package/src/routes/product-options/product-option-detail/components/product-option-general-section/index.ts +1 -0
  237. package/src/routes/product-options/product-option-detail/components/product-option-general-section/product-option-general-section.tsx +84 -0
  238. package/src/routes/product-options/product-option-detail/components/product-option-product-section/index.ts +1 -0
  239. package/src/routes/product-options/product-option-detail/components/product-option-product-section/product-option-product-section.tsx +82 -0
  240. package/src/routes/product-options/product-option-detail/index.ts +3 -0
  241. package/src/routes/product-options/product-option-detail/loader.ts +18 -0
  242. package/src/routes/product-options/product-option-detail/product-option-detail.tsx +50 -0
  243. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/edit-product-option-details.tsx +94 -0
  244. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/edit-product-option-form.tsx +116 -0
  245. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/edit-product-option-organize.tsx +77 -0
  246. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/index.ts +1 -0
  247. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/schema.ts +13 -0
  248. package/src/routes/product-options/product-option-edit/index.ts +1 -0
  249. package/src/routes/product-options/product-option-edit/product-option-edit.tsx +34 -0
  250. package/src/routes/product-options/product-option-list/components/product-option-list-table/index.ts +1 -0
  251. package/src/routes/product-options/product-option-list/components/product-option-list-table/product-option-list-table.tsx +140 -0
  252. package/src/routes/product-options/product-option-list/index.ts +1 -0
  253. package/src/routes/product-options/product-option-list/product-option-list.tsx +19 -0
  254. package/src/routes/product-options/product-option-metadata/index.ts +1 -0
  255. package/src/routes/product-options/product-option-metadata/product-option-metadata.tsx +27 -0
  256. package/src/routes/products/product-create/components/product-create-details-form/components/product-create-details-general-section/product-create-general-section.tsx +16 -4
  257. package/src/routes/products/product-create/components/product-create-details-form/components/product-create-details-variant-section/product-create-details-variant-section.tsx +327 -194
  258. package/src/routes/products/product-create/components/product-create-form/product-create-form.tsx +4 -7
  259. package/src/routes/products/product-create/constants.ts +2 -0
  260. package/src/routes/products/product-create/utils.ts +6 -1
  261. package/src/routes/products/product-detail/components/product-option-section/product-option-section.tsx +33 -51
  262. package/src/routes/products/product-options-manage/components/product-options-manage-form/index.ts +1 -0
  263. package/src/routes/products/product-options-manage/components/product-options-manage-form/product-options-manage-form.tsx +296 -0
  264. package/src/routes/products/product-options-manage/index.ts +1 -0
  265. package/src/routes/products/product-options-manage/product-options-manage.tsx +35 -0
  266. package/src/routes/promotions/promotion-create/components/create-promotion-form/create-promotion-form.tsx +6 -0
  267. package/src/routes/translations/add-locales/add-locales.tsx +29 -0
  268. package/src/routes/translations/add-locales/index.tsx +1 -0
  269. package/src/routes/translations/translation-list/components/active-locales-section/active-locales-section.tsx +42 -17
  270. package/src/routes/translations/translation-list/components/translation-list-section/translation-list-section.tsx +5 -1
  271. package/src/routes/translations/translation-list/components/translations-completion-section/translations-completion-section.tsx +253 -41
  272. package/src/routes/translations/translation-list/translation-list.tsx +8 -2
  273. package/src/routes/translations/translations-edit/components/translations-edit-form/translations-edit-form.tsx +337 -380
  274. package/src/routes/translations/translations-edit/translations-edit.tsx +8 -13
  275. package/dist/chunk-HGRIOEAR.mjs +0 -32
  276. package/dist/chunk-XDJ7OMBR.mjs +0 -160
  277. package/dist/login-VNOLI5YG.mjs +0 -201
  278. package/dist/product-create-option-7AOXAA4S.mjs +0 -151
  279. package/dist/product-edit-option-LWJT3CYJ.mjs +0 -156
  280. package/dist/translation-list-S5Z6PG2R.mjs +0 -295
  281. package/src/routes/products/product-create-option/components/create-product-option-form/create-product-option-form.tsx +0 -122
  282. package/src/routes/products/product-create-option/components/create-product-option-form/index.ts +0 -1
  283. package/src/routes/products/product-create-option/index.ts +0 -1
  284. package/src/routes/products/product-create-option/product-create-option.tsx +0 -30
  285. package/src/routes/products/product-edit-option/components/edit-product-option-form/edit-product-option-form.tsx +0 -123
  286. package/src/routes/products/product-edit-option/components/edit-product-option-form/index.ts +0 -1
  287. package/src/routes/products/product-edit-option/index.ts +0 -1
  288. package/src/routes/products/product-edit-option/product-edit-option.tsx +0 -35
  289. package/dist/{chunk-FBYTX6K7.mjs → chunk-ORWRXJJT.mjs} +4 -4
  290. package/dist/{location-list-KVBA6J47.mjs → location-list-3WP65J3E.mjs} +1 -1
  291. package/dist/{user-list-YTZQNYSO.mjs → user-list-3EAKK4XC.mjs} +3 -3
@@ -59,7 +59,9 @@
59
59
  "unsavedChangesDescription": "You have unsaved changes that will be lost if you exit this form.",
60
60
  "includesTaxTooltip": "Prices in this column are tax inclusive.",
61
61
  "excludesTaxTooltip": "Prices in this column are tax exclusive.",
62
- "noMoreData": "No more data"
62
+ "noMoreData": "No more data",
63
+ "exclusive": "Product-specific",
64
+ "global": "Global"
63
65
  },
64
66
  "json": {
65
67
  "header": "JSON",
@@ -101,7 +103,9 @@
101
103
  },
102
104
  "actions": {
103
105
  "save": "Save",
106
+ "saveChanges": "Save changes",
104
107
  "saveAsDraft": "Save as draft",
108
+ "saveAndClose": "Save and close",
105
109
  "copy": "Copy",
106
110
  "copied": "Copied",
107
111
  "duplicate": "Duplicate",
@@ -143,7 +147,9 @@
143
147
  "hide": "Hide",
144
148
  "export": "Export",
145
149
  "import": "Import",
146
- "cannotUndo": "This action cannot be undone"
150
+ "cannotUndo": "This action cannot be undone",
151
+ "manage": "Manage",
152
+ "goToProductOption": "Go to product option"
147
153
  },
148
154
  "operators": {
149
155
  "in": "In"
@@ -450,7 +456,8 @@
450
456
  "productOptions": {
451
457
  "label": "Product options",
452
458
  "hint": "Define the options for the product, e.g. color, size, etc."
453
- }
459
+ },
460
+ "selectValuesHint": "Select which values to use for each option"
454
461
  },
455
462
  "successToast": "Product {{title}} was successfully created."
456
463
  },
@@ -707,6 +714,13 @@
707
714
  "header": "Create Option",
708
715
  "successToast": "Option {{title}} was successfully created."
709
716
  },
717
+ "manage": {
718
+ "header": "Manage Product Options",
719
+ "description": "Associate or disassociate product options from this product.",
720
+ "label": "Product Options",
721
+ "hint": "Select which options should be associated to this product.",
722
+ "placeholder": "Select options"
723
+ },
710
724
  "deleteWarning": "You are about to delete the product option: {{title}}. This action cannot be undone."
711
725
  },
712
726
  "organization": {
@@ -843,6 +857,49 @@
843
857
  }
844
858
  }
845
859
  },
860
+ "productOptions": {
861
+ "domain": "Options",
862
+ "subtitle": "Manage product options and their associated values.",
863
+ "values": {
864
+ "header": "Values"
865
+ },
866
+ "products": {
867
+ "list": {
868
+ "noRecords": "There are no products with this option."
869
+ }
870
+ },
871
+ "create": {
872
+ "header": "Create Product Option",
873
+ "hint": "Create a new product option and manage its values.",
874
+ "successToast": "Product option \"{{title}}\" was successfully created.",
875
+ "tabs": {
876
+ "details": "Details",
877
+ "organize": "Organize"
878
+ }
879
+ },
880
+ "manage": {
881
+ "exclusiveOption": "Product exclusive option"
882
+ },
883
+ "edit": {
884
+ "header": "Edit Product Option",
885
+ "description": "Edit the product option to update its details and associated values.",
886
+ "successToast": "Product option \"{{title}}\" was successfully updated."
887
+ },
888
+ "delete": {
889
+ "confirmation": "You are about to delete the product option \"{{title}}\". This action cannot be undone.",
890
+ "successToast": "Product option was successfully deleted."
891
+ },
892
+ "fields": {
893
+ "title": {
894
+ "label": "Title",
895
+ "placeholder": "Size"
896
+ },
897
+ "values": {
898
+ "label": "Values",
899
+ "placeholder": "S, M, L"
900
+ }
901
+ }
902
+ },
846
903
  "inventory": {
847
904
  "domain": "Inventory",
848
905
  "subtitle": "Manage your inventory items",
@@ -1567,6 +1624,14 @@
1567
1624
  "sendNotificationLabel": "Send notification",
1568
1625
  "sendNotificationHint": "Send a notification to the customer when the draft order is created."
1569
1626
  },
1627
+ "list": {
1628
+ "noRecordsMessage": "No draft orders found",
1629
+ "description": "Create a new draft order to get started.",
1630
+ "filtered": {
1631
+ "heading": "No results found",
1632
+ "description": "No draft orders match your filter criteria."
1633
+ }
1634
+ },
1570
1635
  "validation": {
1571
1636
  "requiredEmailOrCustomer": "Email or customer is required.",
1572
1637
  "requiredItems": "At least one item is required.",
@@ -2512,11 +2577,17 @@
2512
2577
  "manage": "Manage translations",
2513
2578
  "manageLocales": "Manage locales"
2514
2579
  },
2515
- "title": "Translation domains",
2516
2580
  "subtitle": "Manage translations of your data in Medusa",
2517
2581
  "list": {
2518
2582
  "metrics": "{{translated}} of {{total}} fields translated"
2519
2583
  },
2584
+ "edit": {
2585
+ "successToast": "Translations updated successfully",
2586
+ "unsavedChanges": {
2587
+ "title": "Unsaved translations",
2588
+ "description": "Don't lose your work. You have changes that haven't been saved yet"
2589
+ }
2590
+ },
2520
2591
  "bulk": {
2521
2592
  "header": "Translations Bulk Editor",
2522
2593
  "mainColumn": "Locale"
@@ -2527,7 +2598,10 @@
2527
2598
  "noLocalesTip": "Configure at least one locale to start translating your data"
2528
2599
  },
2529
2600
  "completion": {
2530
- "heading": "Translated strings"
2601
+ "heading": "Translated fields",
2602
+ "translated": "Translated",
2603
+ "toTranslate": "Missing",
2604
+ "footer": "Languages"
2531
2605
  }
2532
2606
  },
2533
2607
  "store": {
@@ -3270,5 +3344,11 @@
3270
3344
  "cancelText": "Cancel"
3271
3345
  }
3272
3346
  }
3347
+ },
3348
+ "auth": {
3349
+ "login": {
3350
+ "authenticationFailed": "Authentication failed",
3351
+ "cloud": "Log in with Medusa Cloud"
3352
+ }
3273
3353
  }
3274
3354
  }
@@ -122,7 +122,9 @@
122
122
  },
123
123
  "actions": {
124
124
  "save": "Guardar",
125
+ "saveChanges": "Guardar cambios",
125
126
  "saveAsDraft": "Guardar como borrador",
127
+ "saveAndClose": "Guardar y cerrar",
126
128
  "copy": "Copiar",
127
129
  "copied": "Copiado",
128
130
  "duplicate": "Duplicar",
@@ -1502,6 +1504,14 @@
1502
1504
  },
1503
1505
  "draftOrders": {
1504
1506
  "domain": "Pedidos Borradores",
1507
+ "list": {
1508
+ "description": "Crea un nuevo pedido borrador para empezar.",
1509
+ "noRecordsMessage": "No se encontraron pedidos borradores",
1510
+ "filtered": {
1511
+ "heading": "No se encontraron resultados",
1512
+ "description": "No hay pedidos borradores que coincidan con los criterios de filtro."
1513
+ }
1514
+ },
1505
1515
  "deleteWarning": "Estás a punto de eliminar el pedido borrador {{id}}. Esta acción no puede deshacerse.",
1506
1516
  "paymentLinkLabel": "Enlace de pago",
1507
1517
  "cartIdLabel": "ID del carrito",
@@ -2460,13 +2470,23 @@
2460
2470
  "header": "Editor de Traducciones en Masa",
2461
2471
  "locale": "Idioma"
2462
2472
  },
2473
+ "edit": {
2474
+ "successToast": "Traducciones actualizadas exitosamente",
2475
+ "unsavedChanges": {
2476
+ "title": "Traducciones sin guardar",
2477
+ "description": "No pierdas tu trabajo. Tienes cambios que no han sido guardados aún"
2478
+ }
2479
+ },
2463
2480
  "activeLocales": {
2464
2481
  "heading": "Idiomas",
2465
2482
  "subtitle": "Traducciones activas",
2466
2483
  "noLocalesTip": "Configura al menos un idioma para empezar a traducir tu información"
2467
2484
  },
2468
2485
  "completion": {
2469
- "heading": "Textos traducidos"
2486
+ "heading": "Textos traducidos",
2487
+ "translated": "Traducidos",
2488
+ "toTranslate": "Faltantes",
2489
+ "footer": "Idiomas"
2470
2490
  }
2471
2491
  },
2472
2492
  "store": {
@@ -19,7 +19,7 @@ type CustomerGeneralSectionProps = {
19
19
 
20
20
  const PREFIX = "cusord"
21
21
  const PAGE_SIZE = 10
22
- const DEFAULT_RELATIONS = "*customer,*items,*sales_channel"
22
+ const DEFAULT_RELATIONS = "*customer,*items,*sales_channel,payment_collections.refunded_amount,+shipping_address.country_code"
23
23
  const DEFAULT_FIELDS =
24
24
  "id,status,display_id,created_at,email,fulfillment_status,payment_status,total,currency_code"
25
25
 
@@ -0,0 +1,114 @@
1
+ import { Button, toast } from "@medusajs/ui"
2
+ import { useMutation } from "@tanstack/react-query"
3
+ import { useEffect, useRef } from "react"
4
+ import { useTranslation } from "react-i18next"
5
+ import { decodeToken } from "react-jwt"
6
+ import { useNavigate, useSearchParams } from "react-router-dom"
7
+ import { useCreateCloudAuthUser } from "../../../hooks/api/cloud"
8
+ import { sdk } from "../../../lib/client"
9
+
10
+ const CLOUD_AUTH_PROVIDER = "cloud"
11
+
12
+ export const CloudAuthLogin = () => {
13
+ const { t } = useTranslation()
14
+ const [searchParams] = useSearchParams()
15
+
16
+ const { handleCallback, isCallbackPending } = useAuthCallback(searchParams)
17
+
18
+ // Check if we're returning from the OAuth callback
19
+ const hasCallbackParams =
20
+ searchParams.get("auth_provider") === CLOUD_AUTH_PROVIDER &&
21
+ searchParams.has("code") &&
22
+ searchParams.has("state")
23
+
24
+ const callbackInitiated = useRef(false) // ref to prevent duplicate calls in React strict mode and other unmounting+mounting scenarios
25
+ useEffect(() => {
26
+ if (hasCallbackParams && !callbackInitiated.current) {
27
+ callbackInitiated.current = true
28
+ handleCallback()
29
+ }
30
+ }, [hasCallbackParams, handleCallback])
31
+
32
+ const handleCloudLogin = async () => {
33
+ try {
34
+ const result = await sdk.auth.login("user", CLOUD_AUTH_PROVIDER, {
35
+ // in case the admin is on a different domain, or the backend URL is set to just "/" which won't work for the callback
36
+ callback_url: `${window.location.origin}${window.location.pathname}?auth_provider=${CLOUD_AUTH_PROVIDER}`,
37
+ })
38
+
39
+ if (typeof result === "object" && result.location) {
40
+ // Redirect to Medusa Cloud for authentication
41
+ window.location.href = result.location
42
+ return
43
+ }
44
+
45
+ throw new Error("Unexpected login response")
46
+ } catch {
47
+ toast.error(t("auth.login.authenticationFailed"))
48
+ }
49
+ }
50
+
51
+ return (
52
+ <>
53
+ <hr className="bg-ui-border-base my-4" />
54
+ <Button
55
+ variant="secondary"
56
+ onClick={handleCloudLogin}
57
+ className="w-full"
58
+ disabled={isCallbackPending}
59
+ isLoading={isCallbackPending}
60
+ >
61
+ {t("auth.login.cloud")}
62
+ </Button>
63
+ </>
64
+ )
65
+ }
66
+
67
+ const useAuthCallback = (searchParams: URLSearchParams) => {
68
+ const { t } = useTranslation()
69
+ const navigate = useNavigate()
70
+ const { mutateAsync: createCloudAuthUser } = useCreateCloudAuthUser()
71
+
72
+ const { mutateAsync: handleCallback, isPending: isCallbackPending } =
73
+ useMutation({
74
+ mutationFn: async () => {
75
+ let token: string
76
+ try {
77
+ const query = Object.fromEntries(searchParams)
78
+ delete query.auth_provider // BE doesn't need this
79
+
80
+ token = await sdk.auth.callback("user", CLOUD_AUTH_PROVIDER, query)
81
+ } catch (error) {
82
+ throw new Error("Authentication callback failed")
83
+ }
84
+
85
+ const decodedToken = decodeToken(token) as {
86
+ actor_id: string
87
+ user_metadata: Record<string, unknown>
88
+ }
89
+
90
+ // If user doesn't exist, create it
91
+ if (!decodedToken?.actor_id) {
92
+ await createCloudAuthUser()
93
+
94
+ // Refresh token to get the updated token with actor_id
95
+ const refreshedToken = await sdk.auth.refresh({
96
+ Authorization: `Bearer ${token}`, // passing it manually in case the auth type is session
97
+ })
98
+ if (!refreshedToken) {
99
+ throw new Error("Failed to refresh token after user creation")
100
+ }
101
+ }
102
+
103
+ return true
104
+ },
105
+ onSuccess: () => {
106
+ navigate("/")
107
+ },
108
+ onError: () => {
109
+ toast.error(t("auth.login.authenticationFailed"))
110
+ },
111
+ })
112
+
113
+ return { handleCallback, isCallbackPending }
114
+ }
@@ -8,8 +8,10 @@ import * as z from "zod"
8
8
  import { Form } from "../../components/common/form"
9
9
  import AvatarBox from "../../components/common/logo-box/avatar-box"
10
10
  import { useSignInWithEmailPass } from "../../hooks/api"
11
+ import { useCloudAuthEnabled } from "../../hooks/api/cloud"
11
12
  import { isFetchError } from "../../lib/is-fetch-error"
12
13
  import { useExtension } from "../../providers/extension-provider"
14
+ import { CloudAuthLogin } from "./components/cloud-auth-login"
13
15
 
14
16
  const LoginSchema = z.object({
15
17
  email: z.string().email(),
@@ -21,6 +23,7 @@ export const Login = () => {
21
23
  const location = useLocation()
22
24
  const navigate = useNavigate()
23
25
  const { getWidgets } = useExtension()
26
+ const { data: cloudAuth } = useCloudAuthEnabled()
24
27
 
25
28
  const from = location.state?.from?.pathname || "/orders"
26
29
 
@@ -70,6 +73,11 @@ export const Login = () => {
70
73
  form.formState.errors.email?.message ||
71
74
  form.formState.errors.password?.message
72
75
 
76
+ const loginAfterWidgets = [...getWidgets("login.after")] // cloning to avoid mutating the original array below
77
+ if (cloudAuth?.enabled) {
78
+ loginAfterWidgets.push(CloudAuthLogin)
79
+ }
80
+
73
81
  return (
74
82
  <div className="bg-ui-bg-subtle flex min-h-dvh w-dvw items-center justify-center">
75
83
  <div className="m-4 flex w-full max-w-[280px] flex-col items-center">
@@ -150,7 +158,7 @@ export const Login = () => {
150
158
  </Button>
151
159
  </form>
152
160
  </Form>
153
- {getWidgets("login.after").map((Component, i) => {
161
+ {loginAfterWidgets.map((Component, i) => {
154
162
  return <Component key={i} />
155
163
  })}
156
164
  </div>
@@ -180,6 +180,7 @@ function OrderEditItem({ item, currencyCode, orderId }: OrderEditItemProps) {
180
180
  <Input
181
181
  className="bg-ui-bg-base txt-small w-[67px] rounded-lg [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
182
182
  type="number"
183
+ step="any"
183
184
  disabled={item.detail.fulfilled_quantity === item.quantity}
184
185
  min={item.detail.fulfilled_quantity}
185
186
  defaultValue={item.quantity}
@@ -16,6 +16,8 @@ type EditOrderBillingAddressFormProps = {
16
16
  }
17
17
 
18
18
  const EditOrderBillingAddressSchema = zod.object({
19
+ first_name: zod.string().optional(),
20
+ last_name: zod.string().optional(),
19
21
  address_1: zod.string().min(1),
20
22
  address_2: zod.string().optional(),
21
23
  country_code: zod.string().min(2).max(2),
@@ -34,6 +36,8 @@ export function EditOrderBillingAddressForm({
34
36
 
35
37
  const form = useForm<zod.infer<typeof EditOrderBillingAddressSchema>>({
36
38
  defaultValues: {
39
+ first_name: order.billing_address?.first_name || "",
40
+ last_name: order.billing_address?.last_name || "",
37
41
  address_1: order.billing_address?.address_1 || "",
38
42
  address_2: order.billing_address?.address_2 || "",
39
43
  city: order.billing_address?.city || "",
@@ -158,6 +162,36 @@ export function EditOrderBillingAddressForm({
158
162
  )
159
163
  }}
160
164
  />
165
+ <Form.Field
166
+ control={form.control}
167
+ name="first_name"
168
+ render={({ field }) => {
169
+ return (
170
+ <Form.Item>
171
+ <Form.Label>{t("fields.firstName")}</Form.Label>
172
+ <Form.Control>
173
+ <Input size="small" {...field} />
174
+ </Form.Control>
175
+ <Form.ErrorMessage />
176
+ </Form.Item>
177
+ )
178
+ }}
179
+ />
180
+ <Form.Field
181
+ control={form.control}
182
+ name="last_name"
183
+ render={({ field }) => {
184
+ return (
185
+ <Form.Item>
186
+ <Form.Label>{t("fields.lastName")}</Form.Label>
187
+ <Form.Control>
188
+ <Input size="small" {...field} />
189
+ </Form.Control>
190
+ <Form.ErrorMessage />
191
+ </Form.Item>
192
+ )
193
+ }}
194
+ />
161
195
  <Form.Field
162
196
  control={form.control}
163
197
  name="company"
@@ -16,6 +16,8 @@ type EditOrderShippingAddressFormProps = {
16
16
  }
17
17
 
18
18
  const EditOrderShippingAddressSchema = zod.object({
19
+ first_name: zod.string().optional(),
20
+ last_name: zod.string().optional(),
19
21
  address_1: zod.string().min(1),
20
22
  address_2: zod.string().optional(),
21
23
  country_code: zod.string().min(2).max(2),
@@ -34,6 +36,8 @@ export function EditOrderShippingAddressForm({
34
36
 
35
37
  const form = useForm<zod.infer<typeof EditOrderShippingAddressSchema>>({
36
38
  defaultValues: {
39
+ first_name: order.shipping_address?.first_name || "",
40
+ last_name: order.shipping_address?.last_name || "",
37
41
  address_1: order.shipping_address?.address_1 || "",
38
42
  address_2: order.shipping_address?.address_2 || "",
39
43
  city: order.shipping_address?.city || "",
@@ -158,6 +162,34 @@ export function EditOrderShippingAddressForm({
158
162
  )
159
163
  }}
160
164
  />
165
+ <Form.Field
166
+ control={form.control}
167
+ name="first_name"
168
+ render={({ field }) => {
169
+ return (
170
+ <Form.Item>
171
+ <Form.Label>{t("fields.firstName")}</Form.Label>
172
+ <Form.Control>
173
+ <Input size="small" {...field} />
174
+ </Form.Control>
175
+ </Form.Item>
176
+ )
177
+ }}
178
+ />
179
+ <Form.Field
180
+ control={form.control}
181
+ name="last_name"
182
+ render={({ field }) => {
183
+ return (
184
+ <Form.Item>
185
+ <Form.Label>{t("fields.lastName")}</Form.Label>
186
+ <Form.Control>
187
+ <Input size="small" {...field} />
188
+ </Form.Control>
189
+ </Form.Item>
190
+ )
191
+ }}
192
+ />
161
193
  <Form.Field
162
194
  control={form.control}
163
195
  name="company"
@@ -0,0 +1,41 @@
1
+ import { useNavigate } from "react-router-dom"
2
+ import { toast, usePrompt } from "@medusajs/ui"
3
+ import { useTranslation } from "react-i18next"
4
+ import { useDeleteProductOption } from "../../../../hooks/api"
5
+ import { HttpTypes } from "@medusajs/types"
6
+
7
+ export const useDeleteProductOptionAction = ({
8
+ id,
9
+ title,
10
+ }: HttpTypes.AdminProductOption) => {
11
+ const { t } = useTranslation()
12
+ const prompt = usePrompt()
13
+ const navigate = useNavigate()
14
+
15
+ const { mutateAsync } = useDeleteProductOption(id)
16
+
17
+ return async () => {
18
+ const result = await prompt({
19
+ title: t("general.areYouSure"),
20
+ description: t("productOptions.delete.confirmation", { title }),
21
+ confirmText: t("actions.delete"),
22
+ cancelText: t("actions.cancel"),
23
+ })
24
+
25
+ if (!result) {
26
+ return
27
+ }
28
+
29
+ await mutateAsync(undefined, {
30
+ onSuccess: () => {
31
+ navigate("/product-options", {
32
+ replace: true,
33
+ })
34
+ toast.success(t("productOptions.delete.successToast", { title }))
35
+ },
36
+ onError: (e) => {
37
+ toast.error(e.message)
38
+ },
39
+ })
40
+ }
41
+ }
@@ -0,0 +1,71 @@
1
+ import { Heading, Input, Text } from "@medusajs/ui"
2
+ import { UseFormReturn } from "react-hook-form"
3
+ import { useTranslation } from "react-i18next"
4
+
5
+ import { Form } from "../../../../../components/common/form"
6
+ import { ChipInput } from "../../../../../components/inputs/chip-input"
7
+ import { CreateProductOptionSchema } from "./schema"
8
+
9
+ type CreateProductOptionDetailsProps = {
10
+ form: UseFormReturn<CreateProductOptionSchema>
11
+ }
12
+
13
+ export const CreateProductOptionDetails = ({
14
+ form,
15
+ }: CreateProductOptionDetailsProps) => {
16
+ const { t } = useTranslation()
17
+
18
+ return (
19
+ <div className="flex flex-col items-center p-16">
20
+ <div className="flex w-full max-w-[720px] flex-col gap-y-8">
21
+ <div>
22
+ <Heading>{t("productOptions.create.header")}</Heading>
23
+ <Text size="small" className="text-ui-fg-subtle">
24
+ {t("productOptions.create.hint")}
25
+ </Text>
26
+ </div>
27
+ <Form.Field
28
+ control={form.control}
29
+ name="title"
30
+ render={({ field }) => {
31
+ return (
32
+ <Form.Item>
33
+ <Form.Label>
34
+ {t("productOptions.fields.title.label")}
35
+ </Form.Label>
36
+ <Form.Control>
37
+ <Input
38
+ autoComplete="off"
39
+ {...field}
40
+ placeholder={t("productOptions.fields.title.placeholder")}
41
+ />
42
+ </Form.Control>
43
+ <Form.ErrorMessage />
44
+ </Form.Item>
45
+ )
46
+ }}
47
+ />
48
+ <Form.Field
49
+ control={form.control}
50
+ name="values"
51
+ render={({ field }) => {
52
+ return (
53
+ <Form.Item>
54
+ <Form.Label>
55
+ {t("productOptions.fields.values.label")}
56
+ </Form.Label>
57
+ <Form.Control>
58
+ <ChipInput
59
+ {...field}
60
+ placeholder={t("productOptions.fields.values.placeholder")}
61
+ />
62
+ </Form.Control>
63
+ <Form.ErrorMessage />
64
+ </Form.Item>
65
+ )
66
+ }}
67
+ />
68
+ </div>
69
+ </div>
70
+ )
71
+ }