@medusajs/dashboard 2.10.4-snapshot-20250923121159 → 2.10.4-snapshot-20250925180256

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