@medusajs/dashboard 2.10.4-preview-20250927210155 → 2.10.4-snapshot-20250918173105

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 (346) hide show
  1. package/dist/{add-campaign-promotions-3BB3BLFD.mjs → add-campaign-promotions-FE4BXGVN.mjs} +6 -7
  2. package/dist/{adjust-inventory-OIJTAKHP.mjs → adjust-inventory-WBEBMJN7.mjs} +1 -1
  3. package/dist/{api-key-management-create-XDQHUNWK.mjs → api-key-management-create-VXPZX2Q5.mjs} +3 -3
  4. package/dist/{api-key-management-detail-ZQLQKGYF.mjs → api-key-management-detail-SAVBCKX7.mjs} +14 -15
  5. package/dist/{api-key-management-edit-2SUSKI7T.mjs → api-key-management-edit-7CGMSHAY.mjs} +3 -3
  6. package/dist/{api-key-management-list-C2WM4PHC.mjs → api-key-management-list-5DI3L4DV.mjs} +7 -8
  7. package/dist/{api-key-management-sales-channels-MVHVMPF6.mjs → api-key-management-sales-channels-WL5L5XWM.mjs} +5 -6
  8. package/dist/app.css +34 -89
  9. package/dist/app.js +5633 -6732
  10. package/dist/app.mjs +15 -17
  11. package/dist/{campaign-budget-edit-UWGCET5Z.mjs → campaign-budget-edit-OXNTSPGE.mjs} +1 -1
  12. package/dist/{campaign-configuration-WWCCFNYQ.mjs → campaign-configuration-Z5HA2DG3.mjs} +1 -1
  13. package/dist/{campaign-create-CQ3XBHSY.mjs → campaign-create-AVBNHFC2.mjs} +3 -4
  14. package/dist/{campaign-detail-LASOFZ2O.mjs → campaign-detail-KTOLZNTA.mjs} +21 -22
  15. package/dist/{campaign-edit-R43GXNET.mjs → campaign-edit-3TDW52BO.mjs} +1 -1
  16. package/dist/{campaign-list-CDO5PRTL.mjs → campaign-list-G4MD3RPU.mjs} +6 -7
  17. package/dist/{categories-metadata-HUIY6V4F.mjs → categories-metadata-GXWJ3HOG.mjs} +12 -13
  18. package/dist/{category-create-GMFWRFT7.mjs → category-create-FOVB5MJ4.mjs} +16 -38
  19. package/dist/{category-detail-ZJJBYVFX.mjs → category-detail-ENUI5EFL.mjs} +18 -19
  20. package/dist/{category-edit-HCHER73V.mjs → category-edit-O4ZSANE5.mjs} +16 -36
  21. package/dist/{category-list-IXW2NWWJ.mjs → category-list-UI6W5KF5.mjs} +7 -8
  22. package/dist/{category-organize-LRQKM4LA.mjs → category-organize-BW3YOPUS.mjs} +2 -2
  23. package/dist/{category-products-7N4TITQ4.mjs → category-products-ZG5QDWSW.mjs} +14 -15
  24. package/dist/{chunk-2PGNKUXS.mjs → chunk-2HKRIUW4.mjs} +1 -1
  25. package/dist/{chunk-KTL6E2WT.mjs → chunk-2LPGQWPV.mjs} +1 -1
  26. package/dist/{chunk-OFN7DIZA.mjs → chunk-2PMSBTXI.mjs} +13 -17
  27. package/dist/{chunk-GIZFNLKK.mjs → chunk-2RQLKDBF.mjs} +96 -103
  28. package/dist/{chunk-AN5IILM2.mjs → chunk-2YP2ZNKR.mjs} +1 -1
  29. package/dist/{chunk-OZPB6JBL.mjs → chunk-3NJTXRIY.mjs} +1 -5
  30. package/dist/{chunk-XP3BY6G6.mjs → chunk-4Q4LIFFO.mjs} +1 -1
  31. package/dist/{chunk-RGP3IXX4.mjs → chunk-4RG7UJCT.mjs} +1 -1
  32. package/dist/{chunk-MSOFJHH3.mjs → chunk-5M5ZVAWU.mjs} +2 -2
  33. package/dist/{chunk-SNDSWB6B.mjs → chunk-5NQ3X2JI.mjs} +1 -1
  34. package/dist/{chunk-CXTAH75K.mjs → chunk-5WKYR6PY.mjs} +1 -1
  35. package/dist/{chunk-XR7I5HGZ.mjs → chunk-6AGMMT5H.mjs} +4 -4
  36. package/dist/{chunk-YSFTQA6Y.mjs → chunk-6IZUCU7K.mjs} +2 -2
  37. package/dist/{chunk-FXG2Z3QT.mjs → chunk-74K7HGNI.mjs} +2 -3
  38. package/dist/{chunk-EYL2JACT.mjs → chunk-7VJK6HNE.mjs} +4 -4
  39. package/dist/{chunk-U4R5MBF2.mjs → chunk-7YZF3THS.mjs} +1 -1
  40. package/dist/{chunk-HQKGZADC.mjs → chunk-AOFGTNG6.mjs} +1 -6
  41. package/dist/{chunk-EYTETK3W.mjs → chunk-BFNH5UWD.mjs} +1 -1
  42. package/dist/chunk-BKJC5BGQ.mjs +53 -0
  43. package/dist/{chunk-UKX2FFFV.mjs → chunk-CK3VFTZM.mjs} +2 -2
  44. package/dist/{chunk-PRLQLEEQ.mjs → chunk-D7H6ZNK4.mjs} +0 -2
  45. package/dist/{chunk-SQFZWNYA.mjs → chunk-EE7SOCEQ.mjs} +4 -4
  46. package/dist/{chunk-PGTXMCSV.mjs → chunk-EFA7S5L3.mjs} +1 -1
  47. package/dist/{chunk-P2O6XTD4.mjs → chunk-FPJBF7VS.mjs} +1 -1
  48. package/dist/{chunk-V6JXTITD.mjs → chunk-GB7CZNXI.mjs} +2 -2
  49. package/dist/{chunk-RF75BZNF.mjs → chunk-HUX22ZHT.mjs} +3 -3
  50. package/dist/{chunk-7DFTLGA5.mjs → chunk-IRJKUFJU.mjs} +682 -623
  51. package/dist/{chunk-CY33DS7K.mjs → chunk-J5E7MQSS.mjs} +0 -6
  52. package/dist/{chunk-DKOCYXB5.mjs → chunk-JELVERJM.mjs} +3 -40
  53. package/dist/{chunk-7JJTWGHU.mjs → chunk-JHXKKOHO.mjs} +15 -49
  54. package/dist/{chunk-IP2QPPWC.mjs → chunk-KMUDF36P.mjs} +1 -1
  55. package/dist/{chunk-U25RCIX2.mjs → chunk-KSRI5LOF.mjs} +2 -2
  56. package/dist/{chunk-QPLPGRYF.mjs → chunk-LAWIWR7K.mjs} +1 -1
  57. package/dist/{chunk-HWKLNKOY.mjs → chunk-LBIOZZPA.mjs} +1 -1
  58. package/dist/{chunk-NY6I2FYO.mjs → chunk-NCR5UWRI.mjs} +1 -1
  59. package/dist/{chunk-VWQYN2RW.mjs → chunk-NRBOPOMS.mjs} +1 -1
  60. package/dist/{chunk-TKZK3YPU.mjs → chunk-O74UDEWT.mjs} +1 -1
  61. package/dist/{chunk-PAG2HG6I.mjs → chunk-OGHQ6VJI.mjs} +5 -44
  62. package/dist/{chunk-LKVQ5YC6.mjs → chunk-OHSRRFGN.mjs} +1 -1
  63. package/dist/{chunk-K3OMOMRB.mjs → chunk-OKMF4YI7.mjs} +0 -25
  64. package/dist/{chunk-MLNUGLGT.mjs → chunk-Q5DI5VYN.mjs} +1 -1
  65. package/dist/{chunk-LMRZMI7O.mjs → chunk-QGCKTVQX.mjs} +1 -1
  66. package/dist/{chunk-VI7MI3US.mjs → chunk-R2NWOCML.mjs} +2 -8
  67. package/dist/{chunk-ZSDEVTFT.mjs → chunk-RMEITCLS.mjs} +1 -1
  68. package/dist/{chunk-IL5IMREK.mjs → chunk-S2UEWRDA.mjs} +49 -59
  69. package/dist/{chunk-NFQXNOP7.mjs → chunk-S45XMWVD.mjs} +1 -1
  70. package/dist/{chunk-IRO6DO7J.mjs → chunk-SCBXRJPV.mjs} +1 -1
  71. package/dist/{chunk-RBDAWRFF.mjs → chunk-SMHXCFRS.mjs} +41 -54
  72. package/dist/{chunk-IVZ6BMDB.mjs → chunk-T7G2CURS.mjs} +0 -1
  73. package/dist/{chunk-7GBCLBMX.mjs → chunk-UNM3LPTG.mjs} +12 -25
  74. package/dist/{chunk-NKVMOKZA.mjs → chunk-UWJBDOQD.mjs} +29 -41
  75. package/dist/{chunk-4QUHWHBD.mjs → chunk-X4X5KUGQ.mjs} +0 -3
  76. package/dist/{chunk-K2HM7KXJ.mjs → chunk-XGJ5DXXG.mjs} +12 -12
  77. package/dist/{chunk-ZCARHA6C.mjs → chunk-XKXNQ2KV.mjs} +1 -1
  78. package/dist/{chunk-5WMJLYEP.mjs → chunk-Y4YXZY7R.mjs} +2 -2
  79. package/dist/{chunk-ITJEYJNB.mjs → chunk-YI4CZGTU.mjs} +1 -1
  80. package/dist/{chunk-AXXGAOQL.mjs → chunk-YWNHMIEQ.mjs} +2 -2
  81. package/dist/chunk-ZCZL3STK.mjs +64 -0
  82. package/dist/{chunk-R2G2B47Y.mjs → chunk-ZODJNBAV.mjs} +0 -1
  83. package/dist/{collection-add-products-WKMNYPLS.mjs → collection-add-products-2ISNNIHD.mjs} +14 -15
  84. package/dist/{collection-create-PTOF33H2.mjs → collection-create-75ZI5NDG.mjs} +2 -2
  85. package/dist/{collection-detail-NONKXELG.mjs → collection-detail-OSX6NHNQ.mjs} +16 -17
  86. package/dist/{collection-edit-WM57WXJ2.mjs → collection-edit-RD6BDDDI.mjs} +2 -2
  87. package/dist/{collection-list-3ZHLS2LP.mjs → collection-list-MPIYSHQJ.mjs} +18 -19
  88. package/dist/{collection-metadata-J6P3K7U6.mjs → collection-metadata-EOFYXEQI.mjs} +12 -13
  89. package/dist/{customer-create-address-JOYBIPPN.mjs → customer-create-address-TPSDYZBN.mjs} +1 -1
  90. package/dist/{customer-detail-5Y7ICDMA.mjs → customer-detail-FCNRRZSW.mjs} +16 -17
  91. package/dist/{customer-group-add-customers-YF2T323Z.mjs → customer-group-add-customers-ULPWTALS.mjs} +2 -3
  92. package/dist/{customer-group-detail-PXP73BFA.mjs → customer-group-detail-QI3QLJJL.mjs} +15 -16
  93. package/dist/{customer-group-list-3DB643XQ.mjs → customer-group-list-GPIKR66X.mjs} +14 -15
  94. package/dist/{customer-group-metadata-YQCOIVQG.mjs → customer-group-metadata-UPAPULMF.mjs} +1 -2
  95. package/dist/{customer-list-5IWEXYSW.mjs → customer-list-SINCBCOZ.mjs} +4 -5
  96. package/dist/{customer-metadata-JZEJBH4V.mjs → customer-metadata-5NPUMPZ2.mjs} +1 -2
  97. package/dist/{customers-add-customer-group-BVUVU46N.mjs → customers-add-customer-group-5TFTVDB6.mjs} +13 -14
  98. package/dist/{edit-inventory-item-UV2Z7SYL.mjs → edit-inventory-item-ZPE4MMC4.mjs} +1 -1
  99. package/dist/{edit-inventory-item-attributes-BRC3KBYT.mjs → edit-inventory-item-attributes-KT7BSPZ7.mjs} +2 -2
  100. package/dist/{edit-reservation-NYGQBFBO.mjs → edit-reservation-EKH4RIAX.mjs} +2 -7
  101. package/dist/{edit-rules-3MSTPCE5.mjs → edit-rules-63NG4QVR.mjs} +13 -14
  102. package/dist/{inventory-create-NEYX7PZJ.mjs → inventory-create-RIVJFJJQ.mjs} +14 -19
  103. package/dist/{inventory-detail-66HDQL3W.mjs → inventory-detail-5433AAQ2.mjs} +18 -25
  104. package/dist/{inventory-list-J5VZGQ2M.mjs → inventory-list-YMYF7QVP.mjs} +5 -6
  105. package/dist/{inventory-metadata-OSTUWM23.mjs → inventory-metadata-FH4CHJBA.mjs} +12 -13
  106. package/dist/{inventory-stock-XY2OCAY3.mjs → inventory-stock-D6E4LQRK.mjs} +13 -14
  107. package/dist/{location-create-22H74MFP.mjs → location-create-LUP363ZB.mjs} +1 -1
  108. package/dist/{location-detail-UZHD3IKW.mjs → location-detail-Z6ZDX6RY.mjs} +13 -14
  109. package/dist/{location-edit-X6JBEWIF.mjs → location-edit-26K26G23.mjs} +2 -2
  110. package/dist/{location-fulfillment-providers-D4RMKQXU.mjs → location-fulfillment-providers-45VXZMZI.mjs} +15 -16
  111. package/dist/location-list-BKK2PAKF.mjs +297 -0
  112. package/dist/{location-sales-channels-66ZE3ZMI.mjs → location-sales-channels-2BOIPBBG.mjs} +4 -5
  113. package/dist/{location-service-zone-create-D5QSFS3M.mjs → location-service-zone-create-RPFLBVV4.mjs} +3 -4
  114. package/dist/{location-service-zone-manage-areas-HKCALG4Q.mjs → location-service-zone-manage-areas-VEUUGPKF.mjs} +3 -4
  115. package/dist/{location-service-zone-shipping-option-create-OASLL2K7.mjs → location-service-zone-shipping-option-create-NO3665DC.mjs} +15 -23
  116. package/dist/{location-service-zone-shipping-option-edit-DOCLZOO7.mjs → location-service-zone-shipping-option-edit-TMXNX4VX.mjs} +28 -40
  117. package/dist/{location-service-zone-shipping-option-pricing-FLB63UKY.mjs → location-service-zone-shipping-option-pricing-U2SDK5DE.mjs} +2 -3
  118. package/dist/{login-LQRL2ZDY.mjs → login-DSPNELTI.mjs} +11 -11
  119. package/dist/manage-locations-3TBIUSHP.mjs +236 -0
  120. package/dist/{order-allocate-items-2RYXQRVK.mjs → order-allocate-items-J3ZHGC22.mjs} +14 -26
  121. package/dist/{order-create-claim-7UF734QH.mjs → order-create-claim-V63BWLB5.mjs} +18 -20
  122. package/dist/{order-create-edit-MZHUVTGE.mjs → order-create-edit-NPF4UZ4D.mjs} +16 -18
  123. package/dist/{order-create-exchange-2UGEF65S.mjs → order-create-exchange-RHIPPSKU.mjs} +18 -20
  124. package/dist/{order-create-fulfillment-HGJ2YPUB.mjs → order-create-fulfillment-4SSUHQ75.mjs} +12 -19
  125. package/dist/{order-create-refund-CJDKVBSE.mjs → order-create-refund-QVQC5ZP5.mjs} +17 -52
  126. package/dist/{order-create-return-5IPRHHLJ.mjs → order-create-return-GVA6M2RY.mjs} +9 -11
  127. package/dist/{order-create-shipment-3FDVQ6WT.mjs → order-create-shipment-TJAARKWA.mjs} +11 -13
  128. package/dist/{order-detail-SEPCRJW5.mjs → order-detail-2MIN6B2I.mjs} +42 -50
  129. package/dist/{order-edit-billing-address-J75NQFRY.mjs → order-edit-billing-address-QP2I5F3E.mjs} +12 -12
  130. package/dist/{order-edit-email-ABFQKE6A.mjs → order-edit-email-7WT7XTHB.mjs} +11 -11
  131. package/dist/{order-edit-shipping-address-OXW7TAJD.mjs → order-edit-shipping-address-3QFMQP4I.mjs} +12 -12
  132. package/dist/{order-list-VDUUHTSU.mjs → order-list-7S3N6H5A.mjs} +10 -11
  133. package/dist/{order-metadata-5NF3ICQL.mjs → order-metadata-YJS26DHK.mjs} +12 -13
  134. package/dist/{order-receive-return-IM65P7XQ.mjs → order-receive-return-PZMMMUB2.mjs} +13 -14
  135. package/dist/{order-request-transfer-LZ25KEDA.mjs → order-request-transfer-QBIZD36E.mjs} +12 -12
  136. package/dist/{price-list-configuration-VACKCKJF.mjs → price-list-configuration-435QDWB2.mjs} +5 -6
  137. package/dist/{price-list-create-EC5VGCMW.mjs → price-list-create-RXDH5CXF.mjs} +24 -39
  138. package/dist/{price-list-detail-CRTJA5O4.mjs → price-list-detail-PKIKOJ4H.mjs} +17 -18
  139. package/dist/{price-list-edit-G73ZIU2Y.mjs → price-list-edit-ZGBOZYSC.mjs} +31 -51
  140. package/dist/{price-list-list-QYZSJNF5.mjs → price-list-list-C6NEB2R4.mjs} +7 -8
  141. package/dist/{price-list-prices-add-HYCM4QDY.mjs → price-list-prices-add-2CDPUSYA.mjs} +20 -28
  142. package/dist/{price-list-prices-edit-R53ITSDD.mjs → price-list-prices-edit-ENB4GJZT.mjs} +4 -5
  143. package/dist/{product-attributes-WVQRK3GQ.mjs → product-attributes-LVV3K24U.mjs} +17 -19
  144. package/dist/{product-create-PWSPOVUS.mjs → product-create-HQORHMCM.mjs} +21 -27
  145. package/dist/{product-create-option-OW2LMVST.mjs → product-create-option-3JR35UZ5.mjs} +1 -1
  146. package/dist/{product-create-variant-V2QGXFEF.mjs → product-create-variant-KJKQ6ROY.mjs} +18 -31
  147. package/dist/{product-detail-EBPCCBI4.mjs → product-detail-UROTMCRL.mjs} +19 -21
  148. package/dist/{product-edit-5E6D43KE.mjs → product-edit-4EVIUVKV.mjs} +28 -41
  149. package/dist/{product-edit-option-OM56DLU6.mjs → product-edit-option-VNDGZ37A.mjs} +1 -1
  150. package/dist/{product-export-VFC3I5DK.mjs → product-export-XERWEI5H.mjs} +13 -13
  151. package/dist/{product-import-V7EZJ2TU.mjs → product-import-AGFJMSVK.mjs} +13 -14
  152. package/dist/{product-list-FFZO57JG.mjs → product-list-3B742YCJ.mjs} +18 -19
  153. package/dist/{product-media-TRKQTA4G.mjs → product-media-APQKPFTT.mjs} +5 -5
  154. package/dist/{product-metadata-VYQ65KYI.mjs → product-metadata-NZ3HKO67.mjs} +12 -13
  155. package/dist/{product-organization-OCVSTKEK.mjs → product-organization-YQUIMUYX.mjs} +18 -20
  156. package/dist/{product-prices-XLY5TUSJ.mjs → product-prices-PCBMYYGV.mjs} +2 -3
  157. package/dist/{product-sales-channels-KSIHPDJG.mjs → product-sales-channels-UGPAXFAV.mjs} +4 -5
  158. package/dist/{product-shipping-profile-SG6NDHF4.mjs → product-shipping-profile-FRIMAOZQ.mjs} +17 -19
  159. package/dist/{product-stock-LJRYRSKN.mjs → product-stock-SUVEQZML.mjs} +14 -16
  160. package/dist/{product-tag-create-EB5CVUOP.mjs → product-tag-create-T6HVAQKN.mjs} +11 -11
  161. package/dist/{product-tag-detail-V5CZY4R4.mjs → product-tag-detail-HOWUZC3P.mjs} +21 -22
  162. package/dist/{product-tag-edit-YATSW5OK.mjs → product-tag-edit-WWQDNDRC.mjs} +11 -11
  163. package/dist/{product-tag-list-2LFGEFGL.mjs → product-tag-list-FAKSLONF.mjs} +21 -22
  164. package/dist/{product-tag-metadata-R5P5FWAZ.mjs → product-tag-metadata-6B56VEZU.mjs} +12 -13
  165. package/dist/{product-type-detail-BZNI5GJ5.mjs → product-type-detail-KN64HYUV.mjs} +16 -17
  166. package/dist/{product-type-list-MJLAGQYC.mjs → product-type-list-6ZIWPIUH.mjs} +4 -5
  167. package/dist/{product-type-metadata-SUQHWLWA.mjs → product-type-metadata-F3FTI6OG.mjs} +12 -13
  168. package/dist/{product-variant-detail-W2JHQQQJ.mjs → product-variant-detail-OUHBUY4J.mjs} +15 -16
  169. package/dist/{product-variant-edit-DSY77FF4.mjs → product-variant-edit-NBYHDUJ5.mjs} +13 -17
  170. package/dist/{product-variant-manage-inventory-items-JH65NAD4.mjs → product-variant-manage-inventory-items-TM3VAHBJ.mjs} +2 -2
  171. package/dist/{product-variant-metadata-HE3MRTJB.mjs → product-variant-metadata-XDVLJYGQ.mjs} +12 -13
  172. package/dist/{profile-detail-XYAQ2G36.mjs → profile-detail-ROG22HHL.mjs} +2 -3
  173. package/dist/{profile-edit-7WD4FTRH.mjs → profile-edit-HSUQIQQH.mjs} +19 -31
  174. package/dist/{promotion-add-campaign-YOUUM6RB.mjs → promotion-add-campaign-7R26KU2U.mjs} +21 -9
  175. package/dist/{promotion-create-NBFV4XQV.mjs → promotion-create-UUOG52D5.mjs} +17 -29
  176. package/dist/{promotion-detail-247QD6DA.mjs → promotion-detail-6ZD7Z6BF.mjs} +76 -126
  177. package/dist/{promotion-edit-details-A2UUSAZA.mjs → promotion-edit-details-HQLYX4X4.mjs} +2 -10
  178. package/dist/{promotion-list-WDHOSD55.mjs → promotion-list-GI64LDWI.mjs} +8 -9
  179. package/dist/{region-add-countries-6GSF4CKJ.mjs → region-add-countries-Y4YAHDUZ.mjs} +2 -3
  180. package/dist/{region-create-AV2NJNNJ.mjs → region-create-5Y3GIQBV.mjs} +39 -49
  181. package/dist/{region-detail-PB7EUSTD.mjs → region-detail-CWRFM6P3.mjs} +4 -5
  182. package/dist/region-edit-JWQWCLM3.mjs +285 -0
  183. package/dist/{region-list-52LF5S4S.mjs → region-list-FQNI7F37.mjs} +4 -5
  184. package/dist/{region-metadata-3JIGHAUI.mjs → region-metadata-IQVB4ERU.mjs} +12 -13
  185. package/dist/{reservation-create-FKBCGQA7.mjs → reservation-create-7RFXWDXB.mjs} +3 -3
  186. package/dist/{reservation-detail-FENCNQDA.mjs → reservation-detail-RTGHD35L.mjs} +14 -15
  187. package/dist/{reservation-list-NOWJUMXV.mjs → reservation-list-UOC7RNRZ.mjs} +6 -7
  188. package/dist/{reservation-metadata-DQ3A7MHU.mjs → reservation-metadata-WKJXBRLQ.mjs} +12 -13
  189. package/dist/{reset-password-LCVV4NOA.mjs → reset-password-SXA6YKTJ.mjs} +1 -1
  190. package/dist/{return-reason-list-FW7OYUOW.mjs → return-reason-list-MOP7YWMZ.mjs} +7 -8
  191. package/dist/{sales-channel-add-products-G4EUOCWY.mjs → sales-channel-add-products-OKVZJ6FI.mjs} +14 -15
  192. package/dist/{sales-channel-create-NODWGJDD.mjs → sales-channel-create-3MPOMVPD.mjs} +2 -4
  193. package/dist/{sales-channel-detail-NT7PEVVH.mjs → sales-channel-detail-WESBK6Q7.mjs} +16 -17
  194. package/dist/{sales-channel-edit-ALIRERVH.mjs → sales-channel-edit-LSLAM7A4.mjs} +2 -4
  195. package/dist/{sales-channel-list-REV2RETE.mjs → sales-channel-list-ADIJMXNV.mjs} +14 -15
  196. package/dist/{sales-channel-metadata-O5O6ADG5.mjs → sales-channel-metadata-2OQAHYB4.mjs} +12 -13
  197. package/dist/{shipping-option-type-create-7FSJNHHA.mjs → shipping-option-type-create-3CGPGDYJ.mjs} +11 -11
  198. package/dist/{shipping-option-type-detail-6UQST7RY.mjs → shipping-option-type-detail-S23H2OGW.mjs} +14 -15
  199. package/dist/{shipping-option-type-edit-B475WRRR.mjs → shipping-option-type-edit-IHE7XM6M.mjs} +11 -11
  200. package/dist/{shipping-option-type-list-DTETSFSA.mjs → shipping-option-type-list-47GRJ6EC.mjs} +16 -17
  201. package/dist/{shipping-profile-detail-FS46IJZP.mjs → shipping-profile-detail-FDUPDSH4.mjs} +2 -3
  202. package/dist/{shipping-profile-metadata-PRINFNSY.mjs → shipping-profile-metadata-OXWOXAAR.mjs} +12 -13
  203. package/dist/{shipping-profiles-list-QFOG5IDH.mjs → shipping-profiles-list-ZHJEUIKJ.mjs} +4 -5
  204. package/dist/{store-add-currencies-W4MWOALR.mjs → store-add-currencies-R26SVHT5.mjs} +2 -5
  205. package/dist/{store-detail-QKF2TVNW.mjs → store-detail-4K7TW2TP.mjs} +15 -16
  206. package/dist/{store-edit-ZPGTNZGL.mjs → store-edit-EU55TNFU.mjs} +12 -24
  207. package/dist/{store-metadata-M6GIKI5P.mjs → store-metadata-JP2CI7EF.mjs} +12 -13
  208. package/dist/{tax-region-create-4DTM3RTZ.mjs → tax-region-create-W3K5IFD3.mjs} +14 -14
  209. package/dist/{tax-region-detail-SLCI3JYL.mjs → tax-region-detail-V2F2DONN.mjs} +17 -18
  210. package/dist/{tax-region-edit-CJ63JXFQ.mjs → tax-region-edit-CJPMYTBF.mjs} +12 -12
  211. package/dist/{tax-region-list-SQQE2GUU.mjs → tax-region-list-NMM3LBPN.mjs} +5 -6
  212. package/dist/{tax-region-province-create-SBRFGWN3.mjs → tax-region-province-create-GIIU2G7K.mjs} +2 -2
  213. package/dist/{tax-region-province-detail-BGL2USQF.mjs → tax-region-province-detail-4PUQ5ADW.mjs} +16 -17
  214. package/dist/{tax-region-tax-override-create-L4WOTSBO.mjs → tax-region-tax-override-create-3SCIOK4P.mjs} +20 -25
  215. package/dist/{tax-region-tax-override-edit-2JAVNE37.mjs → tax-region-tax-override-edit-P3QJKET3.mjs} +20 -25
  216. package/dist/{tax-region-tax-rate-create-JIV5FXUD.mjs → tax-region-tax-rate-create-Z43M3JTQ.mjs} +1 -1
  217. package/dist/{tax-region-tax-rate-edit-WU2ZQLZQ.mjs → tax-region-tax-rate-edit-RBF5D2MK.mjs} +1 -1
  218. package/dist/{user-detail-ZFW3YF3M.mjs → user-detail-VIVFFLOW.mjs} +3 -4
  219. package/dist/{user-invite-KUH4AI2L.mjs → user-invite-W26LOOW7.mjs} +3 -4
  220. package/dist/{user-list-G4H2RSDX.mjs → user-list-3YFYZFSK.mjs} +3 -4
  221. package/dist/{user-metadata-DFTGB46F.mjs → user-metadata-ZURLDLGC.mjs} +12 -13
  222. package/dist/{workflow-execution-detail-YNT2RKIP.mjs → workflow-execution-detail-4R6AFFHV.mjs} +13 -17
  223. package/dist/{workflow-execution-list-5WL4L464.mjs → workflow-execution-list-5J3DQQRD.mjs} +3 -4
  224. package/package.json +9 -9
  225. package/src/components/common/action-menu/action-menu.tsx +1 -3
  226. package/src/components/common/customer-info/customer-info.tsx +1 -1
  227. package/src/components/common/json-view-section/json-view-section.tsx +1 -4
  228. package/src/components/common/sidebar-link/sidebar-link.tsx +1 -1
  229. package/src/components/common/switch-box/switch-box.tsx +0 -2
  230. package/src/components/data-grid/components/data-grid-root.tsx +3 -9
  231. package/src/components/data-grid/components/data-grid-toggleable-number-cell.tsx +1 -2
  232. package/src/components/data-table/data-table.tsx +46 -64
  233. package/src/components/filtering/filter-group/filter-group.tsx +1 -5
  234. package/src/components/filtering/order-by/order-by.tsx +1 -4
  235. package/src/components/forms/address-form/address-form.tsx +2 -7
  236. package/src/components/forms/metadata-form/metadata-form.tsx +3 -6
  237. package/src/components/inputs/combobox/combobox.tsx +13 -20
  238. package/src/components/inputs/country-select/country-select.tsx +1 -1
  239. package/src/components/inputs/province-select/province-select.tsx +1 -1
  240. package/src/components/layout/main-layout/main-layout.tsx +5 -7
  241. package/src/components/layout/settings-layout/settings-layout.tsx +0 -4
  242. package/src/components/layout/shell/shell.tsx +6 -6
  243. package/src/components/layout/user-menu/user-menu.tsx +10 -12
  244. package/src/components/search/search.tsx +3 -5
  245. package/src/components/table/data-table/data-table-order-by/data-table-order-by.tsx +1 -4
  246. package/src/components/table/data-table/data-table-root/data-table-root.tsx +3 -3
  247. package/src/dashboard-app/forms/form-extension-zone/form-extension-zone.tsx +1 -1
  248. package/src/dashboard-app/routes/get-route.map.tsx +0 -36
  249. package/src/hooks/api/campaigns.tsx +0 -1
  250. package/src/hooks/api/inventory.tsx +0 -3
  251. package/src/hooks/api/payments.tsx +1 -6
  252. package/src/hooks/api/refund-reasons.tsx +10 -105
  253. package/src/hooks/table/columns/index.ts +0 -1
  254. package/src/hooks/table/query/index.ts +0 -1
  255. package/src/hooks/table/use-table-configuration.tsx +1 -1
  256. package/src/i18n/translations/$schema.json +67 -208
  257. package/src/i18n/translations/en.json +3 -40
  258. package/src/providers/i18n-provider/i18n-provider.tsx +4 -9
  259. package/src/routes/campaigns/campaign-detail/components/campaign-budget/campaign-budget.tsx +3 -3
  260. package/src/routes/campaigns/common/components/create-campaign-form-fields/create-campaign-form-fields.tsx +1 -4
  261. package/src/routes/categories/category-create/components/create-category-form/create-category-details.tsx +3 -12
  262. package/src/routes/categories/category-create/components/create-category-form/create-category-form.tsx +3 -4
  263. package/src/routes/categories/category-detail/components/category-organize-section/category-organize-section.tsx +1 -1
  264. package/src/routes/categories/category-edit/components/edit-category-form/edit-category-form.tsx +3 -12
  265. package/src/routes/inventory/inventory-create/components/inventory-create-form/inventory-create-form.tsx +1 -3
  266. package/src/routes/inventory/inventory-detail/components/inventory-item-variants/variants-section.tsx +1 -1
  267. package/src/routes/inventory/inventory-detail/components/location-levels-table/use-location-list-table-columns.tsx +0 -7
  268. package/src/routes/inventory/inventory-detail/components/manage-locations/components/location-item.tsx +2 -2
  269. package/src/routes/inventory/inventory-detail/components/manage-locations/components/manage-locations-form.tsx +140 -127
  270. package/src/routes/locations/location-edit/components/edit-location-form/edit-location-form.tsx +1 -1
  271. package/src/routes/locations/location-list/components/location-list-header/index.ts +1 -0
  272. package/src/routes/locations/location-list/components/location-list-header/location-list-header.tsx +21 -0
  273. package/src/routes/locations/location-list/index.ts +1 -0
  274. package/src/routes/locations/location-list/loader.ts +36 -0
  275. package/src/routes/locations/location-list/location-list.tsx +14 -52
  276. package/src/routes/locations/location-service-zone-shipping-option-create/components/create-shipping-options-form/create-shipping-option-details-form.tsx +1 -4
  277. package/src/routes/locations/location-service-zone-shipping-option-create/components/create-shipping-options-form/create-shipping-options-form.tsx +1 -3
  278. package/src/routes/locations/location-service-zone-shipping-option-edit/components/edit-region-form/edit-shipping-option-form.tsx +2 -7
  279. package/src/routes/orders/order-allocate-items/components/order-create-fulfillment-form/order-allocate-items-form.tsx +2 -7
  280. package/src/routes/orders/order-create-claim/components/claim-create-form/claim-create-form.tsx +1 -2
  281. package/src/routes/orders/order-create-edit/components/order-edit-create-form/order-edit-create-form.tsx +1 -2
  282. package/src/routes/orders/order-create-exchange/components/exchange-create-form/exchange-create-form.tsx +1 -2
  283. package/src/routes/orders/order-create-fulfillment/components/order-create-fulfillment-form/order-create-fulfillment-form.tsx +1 -5
  284. package/src/routes/orders/order-create-refund/components/create-refund-form/create-refund-form.tsx +1 -42
  285. package/src/routes/orders/order-create-return/components/return-create-form/return-create-form.tsx +1 -2
  286. package/src/routes/orders/order-create-shipment/components/order-create-shipment-form/order-create-shipment-form.tsx +0 -2
  287. package/src/routes/orders/order-detail/components/order-activity-section/order-timeline.tsx +5 -13
  288. package/src/routes/orders/order-receive-return/components/order-receive-return-form/order-receive-return-form.tsx +1 -2
  289. package/src/routes/price-lists/price-list-create/components/price-list-create-form/price-list-create-form.tsx +1 -3
  290. package/src/routes/price-lists/price-list-create/components/price-list-create-form/price-list-details-form.tsx +2 -8
  291. package/src/routes/price-lists/price-list-edit/components/price-list-edit-form/edit-price-list-form.tsx +3 -12
  292. package/src/routes/price-lists/price-list-prices-add/components/price-list-prices-add-form/price-list-prices-add-form.tsx +5 -10
  293. package/src/routes/product-variants/product-variant-edit/components/product-edit-variant-form/product-edit-variant-form.tsx +0 -4
  294. package/src/routes/products/common/components/category-combobox/category-combobox.tsx +11 -11
  295. package/src/routes/products/product-create/components/product-create-form/product-create-form.tsx +1 -3
  296. package/src/routes/products/product-create-variant/components/create-product-variant-form/create-product-variant-form.tsx +5 -10
  297. package/src/routes/products/product-create-variant/components/create-product-variant-form/details-tab.tsx +1 -6
  298. package/src/routes/products/product-edit/components/edit-product-form/edit-product-form.tsx +2 -7
  299. package/src/routes/products/product-media/components/product-media-gallery/product-media-gallery.tsx +2 -2
  300. package/src/routes/products/product-stock/hooks/use-product-stock-columns.tsx +1 -2
  301. package/src/routes/profile/profile-edit/components/edit-profile-form/edit-profile-form.tsx +3 -9
  302. package/src/routes/promotions/common/edit-rules/components/rules-form-field/rules-form-field.tsx +0 -4
  303. package/src/routes/promotions/promotion-add-campaign/components/add-campaign-promotion-form/add-campaign-promotion-form.tsx +49 -48
  304. package/src/routes/promotions/promotion-add-campaign/promotion-add-campaign.tsx +21 -4
  305. package/src/routes/promotions/promotion-create/components/create-promotion-form/create-promotion-form.tsx +3 -12
  306. package/src/routes/promotions/promotion-edit-details/components/edit-promotion-form/edit-promotion-details-form.tsx +1 -6
  307. package/src/routes/regions/region-create/components/create-region-form/create-region-form.tsx +12 -29
  308. package/src/routes/regions/region-create/region-create.tsx +10 -1
  309. package/src/routes/regions/region-edit/components/edit-region-form/edit-region-form.tsx +10 -32
  310. package/src/routes/regions/region-edit/region-edit.tsx +5 -0
  311. package/src/routes/reservations/reservation-detail/components/edit-reservation/components/edit-reservation-form.tsx +1 -3
  312. package/src/routes/sales-channels/sales-channel-create/components/create-sales-channel-form/create-sales-channel-form.tsx +0 -2
  313. package/src/routes/sales-channels/sales-channel-edit/components/edit-sales-channel-form/edit-sales-channel-form.tsx +0 -2
  314. package/src/routes/store/store-add-currencies/components/add-currencies-form/add-currencies-form.tsx +0 -2
  315. package/src/routes/store/store-edit/components/edit-store-form/edit-store-form.tsx +2 -7
  316. package/src/routes/tax-regions/tax-region-tax-override-create/components/tax-region-override-create-form/tax-region-tax-override-create.tsx +1 -3
  317. package/src/routes/tax-regions/tax-region-tax-override-edit/components/tax-region-tax-override-edit-form/tax-region-tax-override-edit-form.tsx +1 -3
  318. package/src/routes/workflow-executions/workflow-execution-detail/components/workflow-execution-timeline-section/workflow-execution-timeline-section.tsx +2 -3
  319. package/dist/chunk-5U3FFMC7.mjs +0 -84
  320. package/dist/chunk-S4DMV3ZT.mjs +0 -35
  321. package/dist/chunk-VLOA5XAC.mjs +0 -113
  322. package/dist/location-list-VNEYHAKV.mjs +0 -323
  323. package/dist/manage-locations-RPHTPGRE.mjs +0 -247
  324. package/dist/refund-reason-create-45ZZOX7F.mjs +0 -157
  325. package/dist/refund-reason-edit-E2HDAQZI.mjs +0 -144
  326. package/dist/refund-reason-list-WI7NHRDS.mjs +0 -245
  327. package/dist/region-edit-X7CSUICV.mjs +0 -308
  328. package/src/hooks/table/columns/use-refund-reason-table-columns.tsx +0 -32
  329. package/src/hooks/table/query/use-refund-reason-table-query.tsx +0 -32
  330. package/src/hooks/use-document-direction.tsx +0 -54
  331. package/src/routes/inventory/inventory-detail/components/manage-locations/components/location-search-input.tsx +0 -34
  332. package/src/routes/locations/location-list/use-location-list-table-columns.tsx +0 -185
  333. package/src/routes/locations/location-list/use-location-list-table-query.tsx +0 -22
  334. package/src/routes/refund-reasons/refund-reason-create/components/refund-reason-create-form/index.ts +0 -1
  335. package/src/routes/refund-reasons/refund-reason-create/components/refund-reason-create-form/refund-reason-create-form.tsx +0 -131
  336. package/src/routes/refund-reasons/refund-reason-create/index.ts +0 -1
  337. package/src/routes/refund-reasons/refund-reason-create/refund-reason-create.tsx +0 -10
  338. package/src/routes/refund-reasons/refund-reason-edit/components/refund-reason-edit-form/index.ts +0 -1
  339. package/src/routes/refund-reasons/refund-reason-edit/components/refund-reason-edit-form/refund-reason-edit-form.tsx +0 -119
  340. package/src/routes/refund-reasons/refund-reason-edit/index.ts +0 -1
  341. package/src/routes/refund-reasons/refund-reason-edit/refund-reason-edit.tsx +0 -33
  342. package/src/routes/refund-reasons/refund-reason-list/components/refund-reason-list-table/index.ts +0 -1
  343. package/src/routes/refund-reasons/refund-reason-list/components/refund-reason-list-table/refund-reason-list-table.tsx +0 -138
  344. package/src/routes/refund-reasons/refund-reason-list/index.ts +0 -2
  345. package/src/routes/refund-reasons/refund-reason-list/loader.ts +0 -16
  346. package/src/routes/refund-reasons/refund-reason-list/refund-reason-list.tsx +0 -21
@@ -36,7 +36,6 @@ import {
36
36
  import { queryClient } from "../../../../../lib/query-client"
37
37
  import { InventoryAvailabilityForm } from "./inventory-availability-form"
38
38
  import { CreateInventoryItemSchema } from "./schema"
39
- import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
40
39
 
41
40
  enum Tab {
42
41
  DETAILS = "details",
@@ -55,7 +54,7 @@ export function InventoryCreateForm({ locations }: InventoryCreateFormProps) {
55
54
  const { t } = useTranslation()
56
55
  const { handleSuccess } = useRouteModal()
57
56
  const [tab, setTab] = useState<Tab>(Tab.DETAILS)
58
- const direction = useDocumentDirection()
57
+
59
58
  const form = useForm<CreateInventoryItemSchema>({
60
59
  defaultValues: {
61
60
  title: "",
@@ -202,7 +201,6 @@ export function InventoryCreateForm({ locations }: InventoryCreateFormProps) {
202
201
  return (
203
202
  <RouteFocusModal.Form form={form}>
204
203
  <ProgressTabs
205
- dir={direction}
206
204
  value={tab}
207
205
  className="h-full"
208
206
  onValueChange={(tab) => onTabChange(tab as Tab)}
@@ -46,7 +46,7 @@ export const InventoryItemVariantsSection = ({
46
46
  </span>
47
47
  </div>
48
48
  <div className="size-7 flex items-center justify-center">
49
- <TriangleRightMini className="text-ui-fg-muted rtl:rotate-180" />
49
+ <TriangleRightMini className="text-ui-fg-muted" />
50
50
  </div>
51
51
  </div>
52
52
  </div>
@@ -49,16 +49,9 @@ export const useLocationListTableColumns = () => {
49
49
  level.location_id
50
50
  )
51
51
 
52
- toast.success(t("inventory.levelDeleted"))
53
-
54
52
  queryClient.invalidateQueries({
55
53
  queryKey: inventoryItemsQueryKeys.lists(),
56
54
  })
57
- queryClient.invalidateQueries({
58
- queryKey: inventoryItemLevelsQueryKeys.list({
59
- inventoryItemId: level.inventory_item_id,
60
- }),
61
- })
62
55
  queryClient.invalidateQueries({
63
56
  queryKey: inventoryItemsQueryKeys.detail(level.inventory_item_id),
64
57
  })
@@ -1,11 +1,11 @@
1
1
  import { Checkbox, Text, clx } from "@medusajs/ui"
2
2
 
3
- import { HttpTypes } from "@medusajs/types"
3
+ import { StockLocationDTO } from "@medusajs/types"
4
4
 
5
5
  type LocationItemProps = {
6
6
  selected: boolean
7
7
  onSelect: (selected: boolean) => void
8
- location: HttpTypes.AdminStockLocation
8
+ location: StockLocationDTO
9
9
  }
10
10
 
11
11
  export const LocationItem = ({
@@ -1,75 +1,111 @@
1
- import {
2
- AdminInventoryItem,
3
- AdminStockLocation,
4
- HttpTypes,
5
- } from "@medusajs/types"
1
+ import * as zod from "zod"
2
+
3
+ import { zodResolver } from "@hookform/resolvers/zod"
4
+ import { AdminInventoryItem, AdminStockLocation } from "@medusajs/types"
6
5
  import { Button, Text, toast } from "@medusajs/ui"
6
+ import { useFieldArray, useForm } from "react-hook-form"
7
7
  import { useTranslation } from "react-i18next"
8
+ import { z } from "zod"
8
9
  import { RouteDrawer, useRouteModal } from "../../../../../../components/modals"
9
10
  import { useBatchInventoryItemLocationLevels } from "../../../../../../hooks/api/inventory"
10
- import { sdk } from "../../../../../../lib/client"
11
11
 
12
- import { useMemo, useState } from "react"
12
+ import { useEffect, useMemo } from "react"
13
+ import { KeyboundForm } from "../../../../../../components/utilities/keybound-form"
13
14
  import { LocationItem } from "./location-item"
14
- import { LocationSearchInput } from "./location-search-input"
15
- import { InfiniteList } from "../../../../../../components/common/infinite-list/infinite-list"
16
- import { useStockLocations } from "../../../../../../hooks/api/stock-locations"
17
15
 
18
16
  type EditInventoryItemAttributeFormProps = {
19
17
  item: AdminInventoryItem
20
18
  locations: AdminStockLocation[]
21
19
  }
22
20
 
21
+ const EditInventoryItemAttributesSchema = z.object({
22
+ locations: z.array(
23
+ z.object({
24
+ id: z.string(),
25
+ location_id: z.string(),
26
+ selected: z.boolean(),
27
+ })
28
+ ),
29
+ })
30
+
31
+ const getDefaultValues = (
32
+ allLocations: AdminStockLocation[],
33
+ existingLevels: Set<string>
34
+ ) => {
35
+ return {
36
+ locations: allLocations.map((location) => ({
37
+ ...location,
38
+ location_id: location.id,
39
+ selected: existingLevels.has(location.id),
40
+ })),
41
+ }
42
+ }
43
+
23
44
  export const ManageLocationsForm = ({
24
45
  item,
46
+ locations,
25
47
  }: EditInventoryItemAttributeFormProps) => {
26
48
  const existingLocationLevels = useMemo(
27
49
  () => new Set(item.location_levels?.map((l) => l.location_id) ?? []),
28
- [item.location_levels]
50
+ item.location_levels
29
51
  )
30
52
 
31
53
  const { t } = useTranslation()
32
54
  const { handleSuccess } = useRouteModal()
33
- const [searchQuery, setSearchQuery] = useState("")
34
- const [selectedLocationIds, setSelectedLocationIds] = useState<Set<string>>(
35
- existingLocationLevels
36
- )
37
55
 
38
- const { count } = useStockLocations({ limit: 1, fields: "id" })
56
+ const form = useForm<zod.infer<typeof EditInventoryItemAttributesSchema>>({
57
+ defaultValues: getDefaultValues(locations, existingLocationLevels),
58
+ resolver: zodResolver(EditInventoryItemAttributesSchema),
59
+ })
39
60
 
40
- const handleLocationSelect = (locationId: string, selected: boolean) => {
41
- setSelectedLocationIds((prev) => {
42
- const newSet = new Set(prev)
43
- if (selected) {
44
- newSet.add(locationId)
45
- } else {
46
- newSet.delete(locationId)
47
- }
48
- return newSet
49
- })
50
- }
61
+ const { fields: locationFields, update: updateField } = useFieldArray({
62
+ control: form.control,
63
+ name: "locations",
64
+ })
65
+
66
+ useEffect(() => {
67
+ form.setValue(
68
+ "locations",
69
+ getDefaultValues(locations, existingLocationLevels).locations
70
+ )
71
+ }, [existingLocationLevels, locations])
51
72
 
52
73
  const { mutateAsync } = useBatchInventoryItemLocationLevels(item.id)
53
74
 
54
- const handleSubmit = async () => {
55
- const toCreate = Array.from(selectedLocationIds).filter(
56
- (id) => !existingLocationLevels.has(id)
57
- )
75
+ const handleSubmit = form.handleSubmit(async ({ locations }) => {
76
+ // Changes in selected locations
77
+ const [selectedLocations, unselectedLocations] = locations.reduce(
78
+ (acc, location) => {
79
+ // If the location is not changed do nothing
80
+ if (
81
+ (!location.selected &&
82
+ !existingLocationLevels.has(location.location_id)) ||
83
+ (location.selected &&
84
+ existingLocationLevels.has(location.location_id))
85
+ ) {
86
+ return acc
87
+ }
58
88
 
59
- const toDeleteLocations = Array.from(existingLocationLevels).filter(
60
- (id) => !selectedLocationIds.has(id)
89
+ if (location.selected) {
90
+ acc[0].push(location.location_id)
91
+ } else {
92
+ acc[1].push(location.location_id)
93
+ }
94
+ return acc
95
+ },
96
+ [[], []] as [string[], string[]]
61
97
  )
62
98
 
63
- const toDelete = toDeleteLocations
64
- .map((id) => item.location_levels?.find((l) => l.location_id === id)?.id)
65
- .filter(Boolean) as unknown as string[]
99
+ if (selectedLocations.length === 0 && unselectedLocations.length === 0) {
100
+ return handleSuccess()
101
+ }
66
102
 
67
103
  await mutateAsync(
68
104
  {
69
- create: toCreate.map((location_id) => ({
105
+ create: selectedLocations.map((location_id) => ({
70
106
  location_id,
71
107
  })),
72
- delete: toDelete,
108
+ delete: unselectedLocations,
73
109
  },
74
110
  {
75
111
  onSuccess: () => {
@@ -81,103 +117,80 @@ export const ManageLocationsForm = ({
81
117
  },
82
118
  }
83
119
  )
84
- }
120
+ })
85
121
 
86
122
  return (
87
- <div className="flex flex-1 flex-col overflow-hidden">
88
- <RouteDrawer.Body className="flex flex-1 flex-col gap-y-4 overflow-auto">
89
- <div className="text-ui-fg-subtle shadow-elevation-card-rest grid grid-rows-2 divide-y rounded-lg border">
90
- <div className="grid grid-cols-2 divide-x">
91
- <Text className="px-2 py-1.5" size="small" leading="compact">
92
- {t("fields.title")}
93
- </Text>
94
- <Text className="px-2 py-1.5" size="small" leading="compact">
95
- {item.title ?? "-"}
96
- </Text>
123
+ <RouteDrawer.Form form={form}>
124
+ <KeyboundForm
125
+ onSubmit={handleSubmit}
126
+ className="flex flex-1 flex-col overflow-hidden"
127
+ >
128
+ <RouteDrawer.Body className="flex flex-1 flex-col gap-y-4 overflow-auto">
129
+ <div className="text-ui-fg-subtle shadow-elevation-card-rest grid grid-rows-2 divide-y rounded-lg border">
130
+ <div className="grid grid-cols-2 divide-x">
131
+ <Text className="px-2 py-1.5" size="small" leading="compact">
132
+ {t("fields.title")}
133
+ </Text>
134
+ <Text className="px-2 py-1.5" size="small" leading="compact">
135
+ {item.title ?? "-"}
136
+ </Text>
137
+ </div>
138
+ <div className="grid grid-cols-2 divide-x">
139
+ <Text className="px-2 py-1.5" size="small" leading="compact">
140
+ {t("fields.sku")}
141
+ </Text>
142
+ <Text className="px-2 py-1.5" size="small" leading="compact">
143
+ {item.sku}
144
+ </Text>
145
+ </div>
97
146
  </div>
98
- <div className="grid grid-cols-2 divide-x">
99
- <Text className="px-2 py-1.5" size="small" leading="compact">
100
- {t("fields.sku")}
101
- </Text>
102
- <Text className="px-2 py-1.5" size="small" leading="compact">
103
- {item.sku}
147
+ <div className="flex flex-col">
148
+ <Text size="small" weight="plus" leading="compact">
149
+ {t("locations.domain")}
104
150
  </Text>
151
+ <div className="text-ui-fg-subtle flex w-full justify-between">
152
+ <Text size="small" leading="compact">
153
+ {t("locations.selectLocations")}
154
+ </Text>
155
+ <Text size="small" leading="compact">
156
+ {"("}
157
+ {t("general.countOfTotalSelected", {
158
+ count: locationFields.filter((l) => l.selected).length,
159
+ total: locations.length,
160
+ })}
161
+ {")"}
162
+ </Text>
163
+ </div>
105
164
  </div>
106
- </div>
107
- <div className="flex flex-col">
108
- <Text size="small" weight="plus" leading="compact">
109
- {t("locations.domain")}
110
- </Text>
111
- <div className="text-ui-fg-subtle flex w-full justify-between">
112
- <Text size="small" leading="compact">
113
- {t("locations.selectLocations")}
114
- </Text>
115
- <Text size="small" leading="compact">
116
- {"("}
117
- {t("general.countOfTotalSelected", {
118
- count: selectedLocationIds.size,
119
- total: count,
120
- })}
121
- {")"}
122
- </Text>
123
- </div>
124
- </div>
125
-
126
- <LocationSearchInput
127
- onSearchChange={setSearchQuery}
128
- placeholder={t("general.search")}
129
- />
130
-
131
- <div className="min-h-0 flex-1">
132
- <InfiniteList<
133
- HttpTypes.AdminStockLocationListResponse,
134
- HttpTypes.AdminStockLocation,
135
- HttpTypes.AdminStockLocationListParams
136
- >
137
- queryKey={["stock-locations", searchQuery]}
138
- queryFn={async (params) => {
139
- const response = await sdk.admin.stockLocation.list({
140
- limit: params.limit,
141
- offset: params.offset,
142
- ...(searchQuery && { q: searchQuery }),
143
- })
144
- return response
145
- }}
146
- responseKey="stock_locations"
147
- renderItem={(location) => (
165
+ {locationFields.map((location, idx) => {
166
+ return (
148
167
  <LocationItem
149
- selected={selectedLocationIds.has(location.id)}
150
- location={location}
151
- onSelect={(selected) =>
152
- handleLocationSelect(location.id, selected)
168
+ selected={location.selected}
169
+ location={location as any}
170
+ onSelect={() =>
171
+ updateField(idx, {
172
+ ...location,
173
+ selected: !location.selected,
174
+ })
153
175
  }
176
+ key={location.id}
154
177
  />
155
- )}
156
- renderEmpty={() => (
157
- <div className="flex items-center justify-center py-8">
158
- <Text size="small" className="text-ui-fg-subtle">
159
- {searchQuery
160
- ? t("locations.noLocationsFound")
161
- : t("locations.noLocationsFound")}
162
- </Text>
163
- </div>
164
- )}
165
- pageSize={20}
166
- />
167
- </div>
168
- </RouteDrawer.Body>
169
- <RouteDrawer.Footer>
170
- <div className="flex items-center justify-end gap-x-2">
171
- <RouteDrawer.Close asChild>
172
- <Button variant="secondary" size="small">
173
- {t("actions.cancel")}
178
+ )
179
+ })}
180
+ </RouteDrawer.Body>
181
+ <RouteDrawer.Footer>
182
+ <div className="flex items-center justify-end gap-x-2">
183
+ <RouteDrawer.Close asChild>
184
+ <Button variant="secondary" size="small">
185
+ {t("actions.cancel")}
186
+ </Button>
187
+ </RouteDrawer.Close>
188
+ <Button type="submit" size="small" isLoading={false}>
189
+ {t("actions.save")}
174
190
  </Button>
175
- </RouteDrawer.Close>
176
- <Button onClick={handleSubmit} size="small" isLoading={false}>
177
- {t("actions.save")}
178
- </Button>
179
- </div>
180
- </RouteDrawer.Footer>
181
- </div>
191
+ </div>
192
+ </RouteDrawer.Footer>
193
+ </KeyboundForm>
194
+ </RouteDrawer.Form>
182
195
  )
183
196
  }
@@ -62,7 +62,7 @@ export const EditLocationForm = ({ location }: EditLocationFormProps) => {
62
62
  },
63
63
  {
64
64
  onSuccess: () => {
65
- toast.success(t("stockLocations.edit.successToast", { name: name }))
65
+ toast.success(t("stockLocations.edit.successToast"))
66
66
  handleSuccess()
67
67
  },
68
68
  onError: (e) => {
@@ -0,0 +1 @@
1
+ export * from "./location-list-header"
@@ -0,0 +1,21 @@
1
+ import { Button, Container, Heading, Text } from "@medusajs/ui"
2
+ import { useTranslation } from "react-i18next"
3
+ import { Link } from "react-router-dom"
4
+
5
+ export const LocationListHeader = () => {
6
+ const { t } = useTranslation()
7
+
8
+ return (
9
+ <Container className="flex h-fit items-center justify-between gap-x-4 px-6 py-4">
10
+ <div>
11
+ <Heading>{t("stockLocations.domain")}</Heading>
12
+ <Text className="text-ui-fg-subtle txt-small">
13
+ {t("stockLocations.list.description")}
14
+ </Text>
15
+ </div>
16
+ <Button size="small" className="shrink-0" variant="secondary" asChild>
17
+ <Link to="create">{t("actions.create")}</Link>
18
+ </Button>
19
+ </Container>
20
+ )
21
+ }
@@ -1 +1,2 @@
1
+ export { shippingListLoader as loader } from "./loader"
1
2
  export { LocationList as Component } from "./location-list"
@@ -0,0 +1,36 @@
1
+ import { FetchError } from "@medusajs/js-sdk"
2
+ import { LoaderFunctionArgs, redirect } from "react-router-dom"
3
+
4
+ import { HttpTypes } from "@medusajs/types"
5
+ import { stockLocationsQueryKeys } from "../../../hooks/api/stock-locations"
6
+ import { sdk } from "../../../lib/client"
7
+ import { queryClient } from "../../../lib/query-client"
8
+ import { LOCATION_LIST_FIELDS } from "./constants"
9
+
10
+ const shippingListQuery = () => ({
11
+ queryKey: stockLocationsQueryKeys.lists(),
12
+ queryFn: async () => {
13
+ return await sdk.admin.stockLocation
14
+ .list({
15
+ // TODO: change this when RQ is fixed
16
+ fields: LOCATION_LIST_FIELDS,
17
+ })
18
+ .catch((error: FetchError) => {
19
+ if (error.status === 401) {
20
+ throw redirect("/login")
21
+ }
22
+
23
+ throw error
24
+ })
25
+ },
26
+ })
27
+
28
+ export const shippingListLoader = async (_: LoaderFunctionArgs) => {
29
+ const query = shippingListQuery()
30
+
31
+ return (
32
+ queryClient.getQueryData<HttpTypes.AdminStockLocationListResponse>(
33
+ query.queryKey
34
+ ) ?? (await queryClient.fetchQuery(query))
35
+ )
36
+ }
@@ -1,46 +1,34 @@
1
1
  import { ShoppingBag, TruckFast } from "@medusajs/icons"
2
2
  import { Container, Heading } from "@medusajs/ui"
3
3
  import { useTranslation } from "react-i18next"
4
+ import { useLoaderData } from "react-router-dom"
4
5
 
5
6
  import { useStockLocations } from "../../../hooks/api/stock-locations"
7
+ import LocationListItem from "./components/location-list-item/location-list-item"
6
8
  import { LOCATION_LIST_FIELDS } from "./constants"
7
- import { useLocationListTableColumns } from "./use-location-list-table-columns"
8
- import { useLocationListTableQuery } from "./use-location-list-table-query"
9
+ import { shippingListLoader } from "./loader"
9
10
 
10
- import { DataTable } from "../../../components/data-table"
11
11
  import { SidebarLink } from "../../../components/common/sidebar-link/sidebar-link"
12
12
  import { TwoColumnPage } from "../../../components/layout/pages"
13
13
  import { useExtension } from "../../../providers/extension-provider"
14
- import { keepPreviousData } from "@tanstack/react-query"
15
-
16
- const PAGE_SIZE = 20
17
- const PREFIX = "loc"
14
+ import { LocationListHeader } from "./components/location-list-header"
18
15
 
19
16
  export function LocationList() {
20
- const { t } = useTranslation()
21
-
22
- const searchParams = useLocationListTableQuery({
23
- pageSize: PAGE_SIZE,
24
- prefix: PREFIX,
25
- })
17
+ const initialData = useLoaderData() as Awaited<
18
+ ReturnType<typeof shippingListLoader>
19
+ >
26
20
 
27
21
  const {
28
22
  stock_locations: stockLocations = [],
29
- count,
30
23
  isError,
31
24
  error,
32
- isLoading,
33
25
  } = useStockLocations(
34
26
  {
35
27
  fields: LOCATION_LIST_FIELDS,
36
- ...searchParams,
37
28
  },
38
- {
39
- placeholderData: keepPreviousData,
40
- }
29
+ { initialData }
41
30
  )
42
31
 
43
- const columns = useLocationListTableColumns()
44
32
  const { getWidgets } = useExtension()
45
33
 
46
34
  if (isError) {
@@ -58,38 +46,12 @@ export function LocationList() {
58
46
  showJSON
59
47
  >
60
48
  <TwoColumnPage.Main>
61
- <Container className="flex flex-col divide-y p-0">
62
- <DataTable
63
- data={stockLocations}
64
- columns={columns}
65
- rowCount={count}
66
- pageSize={PAGE_SIZE}
67
- getRowId={(row) => row.id}
68
- heading={t("stockLocations.domain")}
69
- subHeading={t("stockLocations.list.description")}
70
- emptyState={{
71
- empty: {
72
- heading: t("stockLocations.list.noRecordsMessage"),
73
- description: t("stockLocations.list.noRecordsMessageEmpty"),
74
- },
75
- filtered: {
76
- heading: t("stockLocations.list.noRecordsMessage"),
77
- description: t("stockLocations.list.noRecordsMessageFiltered"),
78
- },
79
- }}
80
- actions={[
81
- {
82
- label: t("actions.create"),
83
- to: "create",
84
- },
85
- ]}
86
- isLoading={isLoading}
87
- rowHref={(row) => `/settings/locations/${row.id}`}
88
- enableSearch={true}
89
- prefix={PREFIX}
90
- layout="fill"
91
- />
92
- </Container>
49
+ <LocationListHeader />
50
+ <div className="flex flex-col gap-3 lg:col-span-2">
51
+ {stockLocations.map((location) => (
52
+ <LocationListItem key={location.id} location={location} />
53
+ ))}
54
+ </div>
93
55
  </TwoColumnPage.Main>
94
56
  <TwoColumnPage.Sidebar>
95
57
  <LinksSection />
@@ -12,7 +12,6 @@ import { sdk } from "../../../../../lib/client"
12
12
  import { formatProvider } from "../../../../../lib/format-provider"
13
13
  import { FulfillmentSetType, ShippingOptionPriceType, } from "../../../common/constants"
14
14
  import { CreateShippingOptionSchema } from "./schema"
15
- import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
16
15
 
17
16
  type CreateShippingOptionDetailsFormProps = {
18
17
  form: UseFormReturn<CreateShippingOptionSchema>
@@ -34,7 +33,7 @@ export const CreateShippingOptionDetailsForm = ({
34
33
  type,
35
34
  }: CreateShippingOptionDetailsFormProps) => {
36
35
  const { t } = useTranslation()
37
- const direction = useDocumentDirection()
36
+
38
37
  const isPickup = type === FulfillmentSetType.Pickup
39
38
 
40
39
  const shippingProfiles = useComboboxData({
@@ -106,7 +105,6 @@ export const CreateShippingOptionDetailsForm = ({
106
105
  </Form.Label>
107
106
  <Form.Control>
108
107
  <RadioGroup
109
- dir={direction}
110
108
  className="grid grid-cols-1 gap-4 md:grid-cols-2"
111
109
  {...field}
112
110
  onValueChange={field.onChange}
@@ -254,7 +252,6 @@ export const CreateShippingOptionDetailsForm = ({
254
252
  </Form.Label>
255
253
  <Form.Control>
256
254
  <Select
257
- dir={direction}
258
255
  {...field}
259
256
  onValueChange={field.onChange}
260
257
  disabled={!selectedProviderId}
@@ -24,7 +24,6 @@ import {
24
24
  CreateShippingOptionSchema,
25
25
  } from "./schema"
26
26
  import { useFulfillmentProviderOptions } from "../../../../../hooks/api"
27
- import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
28
27
 
29
28
  enum Tab {
30
29
  DETAILS = "details",
@@ -49,7 +48,7 @@ export function CreateShippingOptionsForm({
49
48
 
50
49
  const { t } = useTranslation()
51
50
  const { handleSuccess } = useRouteModal()
52
- const direction = useDocumentDirection()
51
+
53
52
  const form = useForm<CreateShippingOptionSchema>({
54
53
  defaultValues: {
55
54
  name: "",
@@ -272,7 +271,6 @@ export function CreateShippingOptionsForm({
272
271
  }}
273
272
  >
274
273
  <ProgressTabs
275
- dir={direction}
276
274
  value={activeTab}
277
275
  className="flex h-full flex-col overflow-hidden"
278
276
  onValueChange={(tab) => onTabChange(tab as Tab)}
@@ -20,7 +20,6 @@ import {
20
20
  ShippingOptionPriceType,
21
21
  } from "../../../common/constants"
22
22
  import { formatProvider } from "../../../../../lib/format-provider"
23
- import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
24
23
 
25
24
  type EditShippingOptionFormProps = {
26
25
  locationId: string
@@ -44,7 +43,7 @@ export const EditShippingOptionForm = ({
44
43
  }: EditShippingOptionFormProps) => {
45
44
  const { t } = useTranslation()
46
45
  const { handleSuccess } = useRouteModal()
47
- const direction = useDocumentDirection()
46
+
48
47
  const isPickup = type === FulfillmentSetType.Pickup
49
48
 
50
49
  const shippingProfiles = useComboboxData({
@@ -148,11 +147,7 @@ export const EditShippingOptionForm = ({
148
147
  )}
149
148
  </Form.Label>
150
149
  <Form.Control>
151
- <RadioGroup
152
- dir={direction}
153
- {...field}
154
- onValueChange={field.onChange}
155
- >
150
+ <RadioGroup {...field} onValueChange={field.onChange}>
156
151
  <RadioGroup.ChoiceBox
157
152
  className="flex-1"
158
153
  value={ShippingOptionPriceType.FlatRate}