@mercurjs/vendor 2.1.2 → 2.2.0-canary.1

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 (230) hide show
  1. package/dist/{[id]-PDGHF5J2.js → [id]-2DQX3YWJ.js} +35 -31
  2. package/dist/{[id]-TO6KT3ZE.js → [id]-4OBGG7OH.js} +23 -21
  3. package/dist/{[id]-X4DDKOMQ.js → [id]-4PKMKNJH.js} +26 -22
  4. package/dist/[id]-4STHLE4N.js +1442 -0
  5. package/dist/{[id]-4VCL3MMM.js → [id]-5UFO4RKF.js} +26 -22
  6. package/dist/{[id]-H3C3ZSC6.js → [id]-6MXCVV5J.js} +25 -21
  7. package/dist/{[id]-6PXEWRG7.js → [id]-7BAKUHUO.js} +13 -13
  8. package/dist/{[id]-7RUAH3TI.js → [id]-K2CT7BXQ.js} +4 -4
  9. package/dist/{[id]-3G5G7ZFV.js → [id]-KJIQTFGE.js} +22 -20
  10. package/dist/{[id]-INOFZHL7.js → [id]-LTNOHLGE.js} +16 -16
  11. package/dist/{[id]-B3LHVQM5.js → [id]-PGIT5WJC.js} +25 -21
  12. package/dist/{[id]-T2ROPEGY.js → [id]-Y2ISCLUD.js} +7 -7
  13. package/dist/{[id]-Y7GAMNC5.js → [id]-ZCMSBEVM.js} +4 -4
  14. package/dist/{[id]-UTKO3VG4.js → [id]-ZWWMJAKI.js} +9 -9
  15. package/dist/{[location_id]-D55RQOXT.js → [location_id]-NUBXDDJC.js} +9 -9
  16. package/dist/{[province_id]-OFH2ZOFQ.js → [province_id]-H2QAPKVH.js} +20 -18
  17. package/dist/{add-C6OX5C54.js → add-GZJ7OMV3.js} +34 -30
  18. package/dist/add-KQAABWCR.js +392 -0
  19. package/dist/{add-customer-groups-PJRJUWS2.js → add-customer-groups-RAHCP67U.js} +16 -14
  20. package/dist/{add-products-INOLNPO6.js → add-products-TSVQHC67.js} +23 -19
  21. package/dist/{add-promotions-AHDOP52Q.js → add-promotions-CSCAJZHV.js} +7 -7
  22. package/dist/{add-to-campaign-HL6NGRR4.js → add-to-campaign-DLP7PSQB.js} +4 -4
  23. package/dist/{address-KRENKSLP.js → address-7F5SN7PV.js} +17 -15
  24. package/dist/{adjust-inventory-H4EUP7J3.js → adjust-inventory-SZF4W7LR.js} +2 -2
  25. package/dist/{allocate-items-SUCUZU4D.js → allocate-items-SDFS5GYN.js} +6 -6
  26. package/dist/{areas-UUMZDXLX.js → areas-7Y6BVS5A.js} +8 -8
  27. package/dist/{attributes-CALEHJJG.js → attributes-MBZ76HVZ.js} +3 -3
  28. package/dist/{breadcrumb-BS7Y5OKF.js → breadcrumb-65SAGUUL.js} +2 -2
  29. package/dist/{breadcrumb-6W2VP3OZ.js → breadcrumb-7PURSRTT.js} +13 -11
  30. package/dist/{breadcrumb-M5Z5WA6I.js → breadcrumb-EDPMEN2P.js} +2 -2
  31. package/dist/breadcrumb-FLDHJRVY.js +26 -0
  32. package/dist/{breadcrumb-VNNZ3TTW.js → breadcrumb-HND5FFWC.js} +2 -2
  33. package/dist/{breadcrumb-OIGGCB3L.js → breadcrumb-QV2IAX7N.js} +8 -2
  34. package/dist/{breadcrumb-KQSFIXQ4.js → breadcrumb-VWELWDB2.js} +1 -1
  35. package/dist/{breadcrumb-IG7VZGW2.js → breadcrumb-WRG4SITG.js} +13 -11
  36. package/dist/{breadcrumb-TW5JEOYS.js → breadcrumb-ZCG2RHIU.js} +12 -10
  37. package/dist/{campaigns-HS6MIO7X.js → campaigns-L6ULR6KR.js} +5 -5
  38. package/dist/{categories-PKWR3FM3.js → categories-FUZQKBXV.js} +6 -6
  39. package/dist/{chunk-PDQSPKG5.js → chunk-2DXNJURE.js} +1 -1
  40. package/dist/{chunk-ZZO3INVE.js → chunk-2MDGYHWN.js} +128 -25
  41. package/dist/{chunk-5UD4P6YL.js → chunk-2USXZSTK.js} +4 -4
  42. package/dist/{chunk-6SBMVLJ2.js → chunk-36L54SQQ.js} +1 -1
  43. package/dist/chunk-37G4Y5I7.js +101 -0
  44. package/dist/{chunk-5M3SL4UZ.js → chunk-3CVJA5UE.js} +9 -104
  45. package/dist/chunk-432S4FGR.js +0 -0
  46. package/dist/{chunk-KQGVSLUI.js → chunk-44RQ5PTN.js} +1803 -914
  47. package/dist/{chunk-Y2QI7KWS.js → chunk-4LVP635F.js} +408 -664
  48. package/dist/{chunk-UL4O5M4S.js → chunk-4S6XGIC6.js} +1 -18
  49. package/dist/chunk-5ZVWOCAC.js +426 -0
  50. package/dist/{chunk-WITQNQXN.js → chunk-6BS2AVGJ.js} +3 -3
  51. package/dist/{chunk-ZYOXKUKZ.js → chunk-7LBY5JLV.js} +1 -1
  52. package/dist/chunk-7SLWXX6L.js +811 -0
  53. package/dist/{chunk-LQYMBSRQ.js → chunk-AIZM66CG.js} +1 -1
  54. package/dist/{chunk-IZ5RG5XI.js → chunk-AJLGY3LQ.js} +1 -21
  55. package/dist/{chunk-WFE6CT6M.js → chunk-AVOIZO63.js} +21 -77
  56. package/dist/chunk-C2FG3SX2.js +68 -0
  57. package/dist/chunk-CFRWIQIZ.js +43 -0
  58. package/dist/{chunk-WNVEMFIK.js → chunk-CNMY5HVP.js} +2 -2
  59. package/dist/{chunk-BLVJAKBA.js → chunk-DDH7ULIQ.js} +1 -1
  60. package/dist/chunk-DIW4GRTI.js +503 -0
  61. package/dist/{chunk-JQP7MOFH.js → chunk-DVEKYLPV.js} +1 -1
  62. package/dist/{chunk-QX45GVAL.js → chunk-EIUYXS7E.js} +8 -8
  63. package/dist/{chunk-N7OVXN72.js → chunk-EROX26D4.js} +1 -1
  64. package/dist/{chunk-2RHAI7WK.js → chunk-EZ3JOAUS.js} +1 -1
  65. package/dist/{chunk-HFRHHT36.js → chunk-FDR22JMM.js} +63 -8
  66. package/dist/{chunk-PEKANQ3T.js → chunk-FJUUGFXL.js} +2 -2
  67. package/dist/{chunk-3CK6OINO.js → chunk-GDWBOQI5.js} +3 -5
  68. package/dist/{chunk-47SXTGLN.js → chunk-GXIAIITP.js} +63 -200
  69. package/dist/{chunk-4MFMCZEJ.js → chunk-H6LZ77GX.js} +2 -2
  70. package/dist/chunk-IWLDKGYQ.js +95 -0
  71. package/dist/chunk-K4X324QP.js +18 -0
  72. package/dist/{chunk-VQ5EKDA3.js → chunk-KD7RYE6R.js} +1 -1
  73. package/dist/chunk-LEWA4BPH.js +18 -0
  74. package/dist/{chunk-7Q5SDEK7.js → chunk-LNM2D2I4.js} +4 -4
  75. package/dist/{chunk-LPOAVK6Y.js → chunk-LQD232FW.js} +47 -12
  76. package/dist/{chunk-OXXL4WQU.js → chunk-M7KSRYRI.js} +5 -5
  77. package/dist/chunk-MBFHMJHN.js +2063 -0
  78. package/dist/{chunk-I2IKYOZX.js → chunk-N4MVIBFM.js} +19 -19
  79. package/dist/{chunk-PCMNEUMV.js → chunk-NHFEY3EI.js} +1 -1
  80. package/dist/{chunk-RTAWYMQP.js → chunk-NJMNYS7G.js} +1 -1
  81. package/dist/{chunk-HGQTL7NX.js → chunk-NSZQERLE.js} +2 -2
  82. package/dist/{chunk-RL7SFZOF.js → chunk-NXNJQZCP.js} +1 -1
  83. package/dist/{chunk-CNLP35S7.js → chunk-OD3U3TX4.js} +16 -31
  84. package/dist/{chunk-D2MA5TAP.js → chunk-PBD36EZJ.js} +2 -2
  85. package/dist/{chunk-4ZGFODSC.js → chunk-PZ44R4AS.js} +1 -1
  86. package/dist/{chunk-ZEVYT6IX.js → chunk-QNNJN4H6.js} +116 -286
  87. package/dist/{chunk-WBI7FEGI.js → chunk-QS6RWIBL.js} +1 -1
  88. package/dist/chunk-QT7YFHCA.js +198 -0
  89. package/dist/{chunk-GYV6SKY7.js → chunk-QXLRABYH.js} +4 -6
  90. package/dist/chunk-RXZFEFNV.js +73 -0
  91. package/dist/{chunk-RUE5BPC2.js → chunk-RZLN2Q6G.js} +1 -1
  92. package/dist/{chunk-NYDJTWRL.js → chunk-SGR4DMCW.js} +4 -4
  93. package/dist/chunk-T6LHVNWO.js +27 -0
  94. package/dist/{chunk-DKQ4XMSN.js → chunk-TNVYTMBL.js} +6 -6
  95. package/dist/{chunk-32RYSB2V.js → chunk-TODJFRLH.js} +2 -2
  96. package/dist/{chunk-P3ZTO6T2.js → chunk-UAF2S447.js} +1 -1
  97. package/dist/{chunk-J6BRLL3F.js → chunk-UCQKXXLD.js} +2 -2
  98. package/dist/chunk-UORPTGV2.js +114 -0
  99. package/dist/{chunk-CYTNBXWF.js → chunk-UX7J5NZG.js} +9 -9
  100. package/dist/{chunk-X4FLOQ45.js → chunk-WBHFU3MG.js} +2 -2
  101. package/dist/chunk-WLT7K7K7.js +63 -0
  102. package/dist/{chunk-4URLUCTD.js → chunk-WUPJADSO.js} +2 -2
  103. package/dist/{chunk-ITI54CII.js → chunk-X4INVIWL.js} +5 -5
  104. package/dist/{chunk-PTW7JNAP.js → chunk-XFQJU6FA.js} +4 -4
  105. package/dist/{collections-DJZI2RM2.js → collections-3OPR3DSD.js} +22 -19
  106. package/dist/{configuration-RHPIO2QT.js → configuration-C4IGBNXH.js} +1 -1
  107. package/dist/{configuration-GN3TO77H.js → configuration-UOSNP45I.js} +3 -3
  108. package/dist/{create-3EK5CNNX.js → create-2MQFQHTE.js} +33 -29
  109. package/dist/{create-YO55Z3YD.js → create-2PCLG7TV.js} +32 -38
  110. package/dist/{create-G4T2PAJH.js → create-35MYQPVM.js} +23 -21
  111. package/dist/{create-HKJVSFB7.js → create-BJ4OO6LS.js} +23 -21
  112. package/dist/create-DDPIXCXT.js +210 -0
  113. package/dist/{create-7S7CZWEN.js → create-GB3ZA4LH.js} +4 -4
  114. package/dist/create-JDGM5KXE.js +193 -0
  115. package/dist/{create-IDVCZHIX.js → create-ORXYT74H.js} +14 -12
  116. package/dist/{create-GHM7OTCR.js → create-R7K3ECN6.js} +1 -1
  117. package/dist/{create-D6EW3EWC.js → create-SFU3W3ZH.js} +1 -1
  118. package/dist/{create-3ZVXEPX5.js → create-SQ3FYMGI.js} +25 -21
  119. package/dist/{create-33TRLASX.js → create-UPYB65PD.js} +1 -1
  120. package/dist/{create-OCFPLNNY.js → create-UQNYMVBM.js} +6 -6
  121. package/dist/{create-OGLPDVOI.js → create-XAD5NMSJ.js} +37 -35
  122. package/dist/{create-KGYL7FBM.js → create-XVHOCZHJ.js} +1 -1
  123. package/dist/{create-4AE3VTWN.js → create-YBF4YGWG.js} +2 -2
  124. package/dist/{customers-6ZLE65UX.js → customers-ETXVNM3G.js} +5 -5
  125. package/dist/{edit-QBISX7D3.js → edit-2Q7TRUTL.js} +14 -12
  126. package/dist/{edit-B5B3XKDM.js → edit-522DG3BY.js} +1 -1
  127. package/dist/{edit-ATXE6CM5.js → edit-C4OCKQVU.js} +1 -1
  128. package/dist/{edit-IR6V2IDN.js → edit-FKXIQ6ZI.js} +19 -17
  129. package/dist/{edit-4HZHLYI3.js → edit-GQNIINRR.js} +1 -1
  130. package/dist/{edit-LRRJTHV2.js → edit-KAKVPHZZ.js} +1 -1
  131. package/dist/{edit-ZSOI56BQ.js → edit-L5ZZLMAY.js} +22 -22
  132. package/dist/{edit-FNDDSSMT.js → edit-NYD45J2Q.js} +37 -8
  133. package/dist/{edit-GIJXLMC3.js → edit-O4JLGKQR.js} +2 -2
  134. package/dist/{edit-5CJZRHAA.js → edit-ORXS3A2Y.js} +1 -1
  135. package/dist/{edit-FC64DWB2.js → edit-Q3UQIOLS.js} +1 -1
  136. package/dist/{edit-7HTH2UJF.js → edit-REDDBLTA.js} +3 -3
  137. package/dist/{edit-2KRJIPRK.js → edit-SGUY2CCK.js} +19 -17
  138. package/dist/{edit-B75KK5ZX.js → edit-SWRWWFW6.js} +35 -31
  139. package/dist/{edit-7GVP6SRA.js → edit-ZAHCMF5U.js} +1 -1
  140. package/dist/{edit-RNT555GP.js → edit-ZCXUG42Q.js} +13 -11
  141. package/dist/{edit-MYSWY6W4.js → edit-ZMERG3L7.js} +1 -1
  142. package/dist/{edit-budget-J27CSEZH.js → edit-budget-L3CCEWNF.js} +1 -1
  143. package/dist/{edit-inventory-item-US77M2FF.js → edit-inventory-item-6B7ITDGD.js} +2 -2
  144. package/dist/{edit-inventory-item-attributes-UGAE2NAZ.js → edit-inventory-item-attributes-Y7MQZLXI.js} +3 -3
  145. package/dist/{fulfillment-DCS67LTK.js → fulfillment-75Z4H23W.js} +16 -14
  146. package/dist/{fulfillment-providers-GM5PO6N3.js → fulfillment-providers-KCQWL62T.js} +20 -17
  147. package/dist/index.css +27 -62
  148. package/dist/index.d.ts +3 -10
  149. package/dist/index.js +522 -458
  150. package/dist/{inventory-OPZ2FSEE.js → inventory-KAUVPMPZ.js} +6 -6
  151. package/dist/{invite-764K3TJS.js → invite-6CPYVHDX.js} +24 -21
  152. package/dist/{invite-KEJLNXEZ.js → invite-CI2P4GF6.js} +15 -12
  153. package/dist/loader-FBB5OQRT.js +31 -0
  154. package/dist/{locations-ZVPTQCQY.js → locations-INS6FTMJ.js} +4 -4
  155. package/dist/{login-OUHRNNXA.js → login-KY342RMK.js} +12 -10
  156. package/dist/{manage-locations-YUKEFCBJ.js → manage-locations-WNHEBS3A.js} +2 -2
  157. package/dist/{media-4KYFHB5V.js → media-KOYAOXG6.js} +41 -9
  158. package/dist/{metadata-NYYL26MQ.js → metadata-2CMH4I6U.js} +16 -14
  159. package/dist/{metadata-AWUKZ25V.js → metadata-5BPOBBU2.js} +3 -3
  160. package/dist/{metadata-OCE6A3JE.js → metadata-GWI6R4ES.js} +15 -13
  161. package/dist/{metadata-G7KZXVNE.js → metadata-NUXUC2JA.js} +15 -13
  162. package/dist/{metadata-XP3ZYW2M.js → metadata-TLDUF5KV.js} +17 -15
  163. package/dist/{metadata-PYY4IB7K.js → metadata-WR4RFXO5.js} +16 -14
  164. package/dist/offer-create-page-YKMHHTU5.js +743 -0
  165. package/dist/offer-detail-page-6MAHNNIO.js +488 -0
  166. package/dist/offer-edit-page-DYQFU6JU.js +151 -0
  167. package/dist/offer-inventory-batch-page-WKCWNDNK.js +290 -0
  168. package/dist/offer-pricing-edit-page-4TYGGSOE.js +195 -0
  169. package/dist/offers-UGQJNGTD.js +32 -0
  170. package/dist/{onboarding-WXZHW62K.js → onboarding-43LQQQGQ.js} +22 -20
  171. package/dist/{orders-LWJ472VM.js → orders-R2LOJ6N5.js} +24 -21
  172. package/dist/organization-XGFU4YDG.js +375 -0
  173. package/dist/{organize-RFOMQCBG.js → organize-HNJUHEEG.js} +4 -4
  174. package/dist/{organize-OVKJ3HZO.js → organize-K6QMAMEN.js} +4 -4
  175. package/dist/pages/index.d.ts +415 -758
  176. package/dist/pages/index.js +81 -77
  177. package/dist/{payment-details-UVXYCTUK.js → payment-details-64US5XWD.js} +17 -15
  178. package/dist/{payouts-TR7K5I37.js → payouts-UXJDTXDL.js} +6 -6
  179. package/dist/{price-lists-S2WNELFZ.js → price-lists-KBPUVSZI.js} +8 -8
  180. package/dist/{pricing-UF27DAXA.js → pricing-DF6C5XK4.js} +35 -32
  181. package/dist/{product-tags-2CKH2M6D.js → product-tags-CL7HSEDI.js} +32 -28
  182. package/dist/{product-types-FX43JEO2.js → product-types-UUHBV4IZ.js} +5 -5
  183. package/dist/product-variant-detail-RVWEYVPC.js +220 -0
  184. package/dist/{product-variant-edit-P3DSIFE3.js → product-variant-edit-MNCS7ZYW.js} +126 -66
  185. package/dist/{products-H5EMRJYS.js → products-4KV5Y2JY.js} +23 -19
  186. package/dist/{products-2LHGS7X3.js → products-SXYTQFJ3.js} +40 -43
  187. package/dist/{professional-details-HYKTH44B.js → professional-details-5T2VS6MM.js} +16 -14
  188. package/dist/{profile-PB27WIRW.js → profile-6XGHAT7H.js} +20 -18
  189. package/dist/{promotions-5EYPGHJP.js → promotions-O7U4BTK6.js} +8 -8
  190. package/dist/{register-4O4F6YZK.js → register-GDKN3SKM.js} +16 -14
  191. package/dist/{reset-password-GTWLBOFK.js → reset-password-EICPAY2N.js} +1 -1
  192. package/dist/{return-reasons-LOKYRGMI.js → return-reasons-M6IR77XW.js} +16 -14
  193. package/dist/{sales-channels-7R2IY3KG.js → sales-channels-B6FULRWI.js} +8 -7
  194. package/dist/{sales-channels-Y4LRP7JC.js → sales-channels-JW3QUYR7.js} +8 -7
  195. package/dist/{settings-2XDLFYMS.js → settings-SAAHTUZZ.js} +39 -35
  196. package/dist/{shipment-4GW2JFWB.js → shipment-Q33QBMXX.js} +13 -11
  197. package/dist/{shipping-profile-R3NABPQF.js → shipping-profile-Y4SNEPZX.js} +2 -2
  198. package/dist/{shipping-profiles-QVKNFLCW.js → shipping-profiles-2NWKCEJK.js} +18 -16
  199. package/dist/{stock-5RXNUPUT.js → stock-7CSVEJJU.js} +19 -17
  200. package/dist/{store-DE2RGX7T.js → store-GHFWU7EV.js} +28 -25
  201. package/dist/{store-closure-DNMCHUXD.js → store-closure-P5PD2RSV.js} +16 -14
  202. package/dist/{store-select-GZEJHRZ7.js → store-select-KDT6USQA.js} +17 -15
  203. package/dist/{tax-regions-UD6P5FVC.js → tax-regions-YXZW7UVX.js} +5 -5
  204. package/dist/{team-JXKAVRPU.js → team-EDJ62747.js} +25 -23
  205. package/dist/types-CtCEtTE6.d.ts +16 -0
  206. package/package.json +3 -3
  207. package/dist/[id]-BYP37PU4.js +0 -1314
  208. package/dist/add-KRAGFFBJ.js +0 -158
  209. package/dist/bulk-edit-3SMBLIOA.js +0 -244
  210. package/dist/chunk-4KX6CBJ4.js +0 -178
  211. package/dist/chunk-DLNNTQRY.js +0 -217
  212. package/dist/chunk-FX4V5JCF.js +0 -37
  213. package/dist/chunk-GC33DBKG.js +0 -143
  214. package/dist/chunk-NK4NR6MN.js +0 -173
  215. package/dist/chunk-PFU6FSXY.js +0 -430
  216. package/dist/chunk-QJEOPT2P.js +0 -330
  217. package/dist/chunk-QSGR43JM.js +0 -30
  218. package/dist/chunk-STR3NGWE.js +0 -3736
  219. package/dist/create-3DOO3RNH.js +0 -716
  220. package/dist/create-I7HV3RM6.js +0 -150
  221. package/dist/edit-K2AD335I.js +0 -237
  222. package/dist/edit-VO5XLIEL.js +0 -362
  223. package/dist/edit-stocks-and-prices-MHHQFWFA.js +0 -408
  224. package/dist/organization-LPYQRTQC.js +0 -303
  225. package/dist/prices-3OXV5RGY.js +0 -270
  226. package/dist/product-variant-detail-WV4KXVXR.js +0 -590
  227. package/dist/stock-GPC3BCL6.js +0 -500
  228. package/dist/{chunk-SDSEW72R.js → chunk-E2HQPY32.js} +3 -3
  229. package/dist/{chunk-6WY5X4PE.js → chunk-L7QKFC5N.js} +7 -7
  230. /package/dist/{chunk-CAS74NLJ.js → chunk-YV6MK4PZ.js} +0 -0
@@ -1,158 +0,0 @@
1
- import {
2
- UserCreatedOptionsList
3
- } from "./chunk-QJEOPT2P.js";
4
- import {
5
- ProductCreateOptionSchema
6
- } from "./chunk-NK4NR6MN.js";
7
- import "./chunk-IZ5RG5XI.js";
8
- import "./chunk-SMQT3ZNO.js";
9
- import "./chunk-DLNNTQRY.js";
10
- import "./chunk-YGRTRAWX.js";
11
- import "./chunk-YVCBMOJG.js";
12
- import "./chunk-VBRTC2VU.js";
13
- import "./chunk-KQGVSLUI.js";
14
- import "./chunk-TKGWSUEI.js";
15
- import {
16
- KeyboundForm
17
- } from "./chunk-U2ZFCAPX.js";
18
- import {
19
- RouteDrawer
20
- } from "./chunk-3CK6OINO.js";
21
- import "./chunk-3QSRE5LS.js";
22
- import {
23
- useAddProductAttribute,
24
- useProduct,
25
- useProductAttributes
26
- } from "./chunk-ZEVYT6IX.js";
27
- import "./chunk-A5DJIOHN.js";
28
- import "./chunk-RHKRREUU.js";
29
- import "./chunk-ZA2KFUFR.js";
30
- import "./chunk-RIN4CBRB.js";
31
- import "./chunk-NBMM2TZK.js";
32
-
33
- // src/pages/products/product-add-attribute/product-add-attribute.tsx
34
- import { zodResolver } from "@hookform/resolvers/zod";
35
- import { Button, Heading, toast } from "@medusajs/ui";
36
- import { useFieldArray, useForm } from "react-hook-form";
37
- import { useTranslation } from "react-i18next";
38
- import { useNavigate, useParams } from "react-router-dom";
39
- import { z } from "zod";
40
- import { jsx, jsxs } from "react/jsx-runtime";
41
- var ProductAddAttribute = () => {
42
- const { t } = useTranslation();
43
- const navigate = useNavigate();
44
- const { id } = useParams();
45
- const form = useForm({
46
- defaultValues: {
47
- options: [
48
- {
49
- title: "",
50
- values: [],
51
- metadata: { author: "vendor" },
52
- attributeId: "",
53
- useForVariants: true
54
- }
55
- ]
56
- },
57
- resolver: zodResolver(
58
- z.object({
59
- options: z.array(ProductCreateOptionSchema)
60
- })
61
- )
62
- });
63
- const { attributes: allAttributes, isLoading: allAttributesLoading } = useProductAttributes(id);
64
- const { product, isLoading: isProductLoading } = useProduct(id);
65
- const nonRequiredAttributes = allAttributes?.filter((attribute) => !attribute.is_required);
66
- const availableAttributes = nonRequiredAttributes?.filter(
67
- (attribute) => !product?.informational_attributes?.some(
68
- (infoAttribute) => infoAttribute.attribute_id === attribute.id
69
- )
70
- );
71
- const options = useFieldArray({
72
- control: form.control,
73
- name: "options"
74
- });
75
- const { mutateAsync, isPending } = useAddProductAttribute(id);
76
- const handleSubmit = form.handleSubmit(async (data) => {
77
- const option = data.options?.[0];
78
- const name = option?.title?.trim();
79
- const values = (option?.values ?? []).map((v) => v.trim()).filter(Boolean);
80
- const use_for_variations = option?.useForVariants === true;
81
- const selectedAttribute = availableAttributes?.find(
82
- (attr) => attr.id === option?.attributeId
83
- );
84
- const ui_component = selectedAttribute?.ui_component ?? "multivalue";
85
- await mutateAsync(
86
- {
87
- name,
88
- values,
89
- use_for_variations,
90
- ui_component,
91
- attribute_id: option?.attributeId || void 0
92
- },
93
- {
94
- onSuccess: () => {
95
- toast.success(t("actions.save"));
96
- navigate(`/products/${id}`, {
97
- replace: true,
98
- state: { isSubmitSuccessful: true }
99
- });
100
- },
101
- onError: (err) => {
102
- toast.error(err.message);
103
- }
104
- }
105
- );
106
- });
107
- if (allAttributesLoading || isProductLoading) {
108
- return null;
109
- }
110
- return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
111
- /* @__PURE__ */ jsx(RouteDrawer.Header, { children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: t("products.edit.attributes.addAttribute") }) }) }) }),
112
- /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(
113
- KeyboundForm,
114
- {
115
- onSubmit: handleSubmit,
116
- className: "flex h-full flex-col",
117
- children: [
118
- /* @__PURE__ */ jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-4", children: /* @__PURE__ */ jsx(
119
- UserCreatedOptionsList,
120
- {
121
- form,
122
- options,
123
- allowRemove: false,
124
- availableAttributes: availableAttributes ?? [],
125
- allNonRequiredAttributes: nonRequiredAttributes ?? [],
126
- isExistingProduct: true,
127
- allowCreate: true
128
- }
129
- ) }),
130
- /* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-x-2", children: [
131
- /* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(
132
- Button,
133
- {
134
- size: "small",
135
- variant: "secondary",
136
- type: "button",
137
- disabled: isPending,
138
- children: t("actions.cancel")
139
- }
140
- ) }),
141
- /* @__PURE__ */ jsx(
142
- Button,
143
- {
144
- size: "small",
145
- type: "submit",
146
- isLoading: isPending,
147
- children: t("actions.create")
148
- }
149
- )
150
- ] }) })
151
- ]
152
- }
153
- ) })
154
- ] });
155
- };
156
- export {
157
- ProductAddAttribute as Component
158
- };
@@ -1,244 +0,0 @@
1
- import {
2
- DataGrid,
3
- DataGridBooleanWithTextCell,
4
- DataGridStatusCell,
5
- DataGridTextCell,
6
- createDataGridHelper
7
- } from "./chunk-Y2QI7KWS.js";
8
- import "./chunk-IQPN4PZJ.js";
9
- import "./chunk-TKGWSUEI.js";
10
- import {
11
- KeyboundForm
12
- } from "./chunk-U2ZFCAPX.js";
13
- import {
14
- RouteFocusModal,
15
- useRouteModal
16
- } from "./chunk-3CK6OINO.js";
17
- import "./chunk-3QSRE5LS.js";
18
- import "./chunk-WIYFXWRI.js";
19
- import "./chunk-LAVHRER2.js";
20
- import "./chunk-Y7QKP6QU.js";
21
- import "./chunk-INNFZYX2.js";
22
- import {
23
- useBatchUpdateProducts
24
- } from "./chunk-ZEVYT6IX.js";
25
- import "./chunk-A5DJIOHN.js";
26
- import "./chunk-RHKRREUU.js";
27
- import "./chunk-ZA2KFUFR.js";
28
- import "./chunk-RIN4CBRB.js";
29
- import "./chunk-NBMM2TZK.js";
30
-
31
- // src/pages/products/product-bulk-edit/product-bulk-edit.tsx
32
- import { useTranslation as useTranslation3 } from "react-i18next";
33
- import { useLocation } from "react-router-dom";
34
-
35
- // src/pages/products/product-bulk-edit/components/product-bulk-edit-form/product-bulk-edit-form.tsx
36
- import { zodResolver } from "@hookform/resolvers/zod";
37
- import { Button, toast } from "@medusajs/ui";
38
- import { useRef } from "react";
39
- import { useForm } from "react-hook-form";
40
- import { useTranslation as useTranslation2 } from "react-i18next";
41
-
42
- // src/pages/products/product-bulk-edit/hooks/use-product-bulk-edit-columns.tsx
43
- import { useMemo } from "react";
44
- import { useTranslation } from "react-i18next";
45
- import { jsx } from "react/jsx-runtime";
46
- var helper = createDataGridHelper();
47
- var useProductBulkEditColumns = () => {
48
- const { t } = useTranslation();
49
- return useMemo(
50
- () => [
51
- helper.column({
52
- id: "title",
53
- name: t("fields.title"),
54
- header: t("fields.title"),
55
- field: (context) => {
56
- const product = context.row.original;
57
- return `products.${product.id}.title`;
58
- },
59
- type: "text",
60
- cell: (context) => {
61
- return /* @__PURE__ */ jsx(DataGridTextCell, { context });
62
- },
63
- disableHiding: true
64
- }),
65
- helper.column({
66
- id: "status",
67
- name: t("fields.status"),
68
- header: t("fields.status"),
69
- field: (context) => {
70
- const product = context.row.original;
71
- return `products.${product.id}.status`;
72
- },
73
- type: "select",
74
- cell: (context) => {
75
- return /* @__PURE__ */ jsx(DataGridStatusCell, { context });
76
- }
77
- }),
78
- helper.column({
79
- id: "discountable",
80
- name: t("fields.discountable"),
81
- header: t("fields.discountable"),
82
- field: (context) => {
83
- const product = context.row.original;
84
- return `products.${product.id}.discountable`;
85
- },
86
- type: "boolean",
87
- cell: (context) => {
88
- return /* @__PURE__ */ jsx(
89
- DataGridBooleanWithTextCell,
90
- {
91
- context,
92
- trueLabel: "True",
93
- falseLabel: "False"
94
- }
95
- );
96
- }
97
- })
98
- ],
99
- [t]
100
- );
101
- };
102
-
103
- // src/pages/products/product-bulk-edit/schema.ts
104
- import { z } from "zod";
105
- var ProductBulkEditItemSchema = z.object({
106
- title: z.string(),
107
- status: z.enum(["draft", "published"]),
108
- discountable: z.boolean()
109
- });
110
- var ProductBulkEditSchema = z.object({
111
- products: z.record(ProductBulkEditItemSchema)
112
- });
113
-
114
- // src/pages/products/product-bulk-edit/components/product-bulk-edit-form/product-bulk-edit-form.tsx
115
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
116
- var ProductBulkEditForm = ({
117
- products
118
- }) => {
119
- const { t } = useTranslation2();
120
- const { setCloseOnEscape, handleSuccess } = useRouteModal();
121
- const initialValues = useRef(getDefaultValues(products));
122
- const form = useForm({
123
- defaultValues: getDefaultValues(products),
124
- resolver: zodResolver(ProductBulkEditSchema)
125
- });
126
- const columns = useProductBulkEditColumns();
127
- const { mutateAsync, isPending } = useBatchUpdateProducts();
128
- const onSubmit = form.handleSubmit(async (data) => {
129
- const updates = [];
130
- for (const [productId, item] of Object.entries(
131
- data.products
132
- )) {
133
- const original = initialValues.current?.products?.[productId];
134
- if (!original) continue;
135
- const changes = { id: productId };
136
- let hasChanges = false;
137
- if (item.title !== original.title) {
138
- changes.title = item.title;
139
- hasChanges = true;
140
- }
141
- if (item.status !== original.status) {
142
- changes.status = item.status;
143
- hasChanges = true;
144
- }
145
- if (item.discountable !== original.discountable) {
146
- changes.discountable = item.discountable;
147
- hasChanges = true;
148
- }
149
- if (hasChanges) {
150
- updates.push(changes);
151
- }
152
- }
153
- if (updates.length === 0) {
154
- toast.info(t("products.bulkEdit.noChanges"));
155
- return;
156
- }
157
- await mutateAsync(
158
- { update: updates },
159
- {
160
- onSuccess: () => {
161
- toast.success(t("products.bulkEdit.success"));
162
- handleSuccess();
163
- },
164
- onError: (error) => {
165
- toast.error(error.message);
166
- }
167
- }
168
- );
169
- });
170
- return /* @__PURE__ */ jsx2(RouteFocusModal.Form, { form, children: /* @__PURE__ */ jsxs(
171
- KeyboundForm,
172
- {
173
- onSubmit,
174
- className: "flex size-full flex-col",
175
- children: [
176
- /* @__PURE__ */ jsx2(RouteFocusModal.Header, {}),
177
- /* @__PURE__ */ jsx2(RouteFocusModal.Body, { className: "size-full flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx2(
178
- DataGrid,
179
- {
180
- columns,
181
- data: products,
182
- state: form,
183
- onEditingChange: (editing) => {
184
- setCloseOnEscape(!editing);
185
- }
186
- }
187
- ) }),
188
- /* @__PURE__ */ jsx2(RouteFocusModal.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2", children: [
189
- /* @__PURE__ */ jsx2(RouteFocusModal.Close, { asChild: true, children: /* @__PURE__ */ jsx2(
190
- Button,
191
- {
192
- variant: "secondary",
193
- size: "small",
194
- type: "button",
195
- children: t("actions.cancel")
196
- }
197
- ) }),
198
- /* @__PURE__ */ jsx2(
199
- Button,
200
- {
201
- type: "submit",
202
- size: "small",
203
- isLoading: isPending,
204
- children: t("actions.save")
205
- }
206
- )
207
- ] }) })
208
- ]
209
- }
210
- ) });
211
- };
212
- function getDefaultValues(products) {
213
- return {
214
- products: products.reduce(
215
- (acc, product) => {
216
- acc[product.id] = {
217
- title: product.title || "",
218
- status: product.status,
219
- discountable: product.discountable ?? true
220
- };
221
- return acc;
222
- },
223
- {}
224
- )
225
- };
226
- }
227
-
228
- // src/pages/products/product-bulk-edit/product-bulk-edit.tsx
229
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
230
- var ProductBulkEdit = () => {
231
- const { t } = useTranslation3();
232
- const location = useLocation();
233
- const state = location.state;
234
- const products = state?.products || [];
235
- const ready = products.length > 0;
236
- return /* @__PURE__ */ jsxs2(RouteFocusModal, { children: [
237
- /* @__PURE__ */ jsx3(RouteFocusModal.Title, { asChild: true, children: /* @__PURE__ */ jsx3("span", { className: "sr-only", children: t("products.bulkEdit.title") }) }),
238
- /* @__PURE__ */ jsx3(RouteFocusModal.Description, { asChild: true, children: /* @__PURE__ */ jsx3("span", { className: "sr-only", children: t("products.bulkEdit.description") }) }),
239
- ready && /* @__PURE__ */ jsx3(ProductBulkEditForm, { products })
240
- ] });
241
- };
242
- export {
243
- ProductBulkEdit as Component
244
- };
@@ -1,178 +0,0 @@
1
- // src/components/common/file-upload/file-upload.tsx
2
- import { ArrowDownTray, XMark } from "@medusajs/icons";
3
- import { IconButton, Text, clx } from "@medusajs/ui";
4
- import { useRef, useState } from "react";
5
-
6
- // src/lib/format-file-size.ts
7
- var formatFileSize = (bytes) => {
8
- if (bytes === 0) return "0 B";
9
- const units = ["B", "KB", "MB", "GB"];
10
- const i = Math.floor(Math.log(bytes) / Math.log(1024));
11
- return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${units[i]}`;
12
- };
13
-
14
- // src/components/common/file-upload/file-upload.tsx
15
- import { jsx, jsxs } from "react/jsx-runtime";
16
- var FileUpload = ({
17
- label,
18
- hint,
19
- multiple = true,
20
- hasError,
21
- formats,
22
- onUploaded,
23
- onRemove,
24
- uploadedImage = "",
25
- fileName,
26
- fileSize
27
- }) => {
28
- const [isDragOver, setIsDragOver] = useState(false);
29
- const inputRef = useRef(null);
30
- const dropZoneRef = useRef(null);
31
- const handleOpenFileSelector = () => {
32
- inputRef.current?.click();
33
- };
34
- const handleDragEnter = (event) => {
35
- event.preventDefault();
36
- event.stopPropagation();
37
- const files = event.dataTransfer?.files;
38
- if (!files) {
39
- return;
40
- }
41
- setIsDragOver(true);
42
- };
43
- const handleDragLeave = (event) => {
44
- event.preventDefault();
45
- event.stopPropagation();
46
- if (!dropZoneRef.current || dropZoneRef.current.contains(event.relatedTarget)) {
47
- return;
48
- }
49
- setIsDragOver(false);
50
- };
51
- const handleUploaded = (files) => {
52
- if (!files) {
53
- return;
54
- }
55
- const fileList = Array.from(files);
56
- const fileObj = fileList.map((file) => {
57
- const id = Math.random().toString(36).substring(7);
58
- const previewUrl = URL.createObjectURL(file);
59
- return {
60
- id,
61
- url: previewUrl,
62
- file
63
- };
64
- });
65
- onUploaded(fileObj);
66
- };
67
- const handleDrop = (event) => {
68
- event.preventDefault();
69
- event.stopPropagation();
70
- setIsDragOver(false);
71
- handleUploaded(event.dataTransfer?.files);
72
- };
73
- const handleFileChange = async (event) => {
74
- handleUploaded(event.target.files);
75
- };
76
- const showFileRow = !multiple && uploadedImage;
77
- if (showFileRow) {
78
- return /* @__PURE__ */ jsxs("div", { children: [
79
- /* @__PURE__ */ jsxs("div", { className: "bg-ui-bg-component shadow-borders-base flex items-center gap-x-3 rounded-lg p-3", children: [
80
- /* @__PURE__ */ jsx("div", { className: "flex h-10 w-[30px] shrink-0 items-center justify-center overflow-hidden rounded-md", children: /* @__PURE__ */ jsx(
81
- "img",
82
- {
83
- src: uploadedImage,
84
- alt: fileName,
85
- className: "h-full w-full object-cover"
86
- }
87
- ) }),
88
- /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col", children: [
89
- /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: fileName || "image" }),
90
- fileSize != null && /* @__PURE__ */ jsx(
91
- Text,
92
- {
93
- size: "small",
94
- leading: "compact",
95
- className: "text-ui-fg-subtle",
96
- children: formatFileSize(fileSize)
97
- }
98
- )
99
- ] }),
100
- onRemove && /* @__PURE__ */ jsx(
101
- IconButton,
102
- {
103
- type: "button",
104
- variant: "transparent",
105
- size: "small",
106
- onClick: onRemove,
107
- children: /* @__PURE__ */ jsx(XMark, {})
108
- }
109
- )
110
- ] }),
111
- /* @__PURE__ */ jsx(
112
- "input",
113
- {
114
- hidden: true,
115
- ref: inputRef,
116
- onChange: handleFileChange,
117
- type: "file",
118
- accept: formats.join(","),
119
- multiple: false
120
- }
121
- )
122
- ] });
123
- }
124
- return /* @__PURE__ */ jsxs("div", { children: [
125
- /* @__PURE__ */ jsxs(
126
- "button",
127
- {
128
- ref: dropZoneRef,
129
- type: "button",
130
- onClick: handleOpenFileSelector,
131
- onDrop: handleDrop,
132
- onDragOver: (e) => e.preventDefault(),
133
- onDragEnter: handleDragEnter,
134
- onDragLeave: handleDragLeave,
135
- className: clx(
136
- "bg-ui-bg-component border-ui-border-strong transition-fg group flex w-full flex-col items-center gap-y-2 rounded-lg border border-dashed p-8",
137
- "hover:border-ui-border-interactive focus:border-ui-border-interactive",
138
- "focus:shadow-borders-focus outline-none focus:border-solid",
139
- {
140
- "!border-ui-border-error": hasError,
141
- "!border-ui-border-interactive": isDragOver
142
- }
143
- ),
144
- children: [
145
- /* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle group-disabled:text-ui-fg-disabled flex items-center gap-x-2", children: [
146
- /* @__PURE__ */ jsx(ArrowDownTray, {}),
147
- /* @__PURE__ */ jsx(Text, { children: label })
148
- ] }),
149
- !!hint && /* @__PURE__ */ jsx(
150
- Text,
151
- {
152
- size: "small",
153
- leading: "compact",
154
- className: "text-ui-fg-muted group-disabled:text-ui-fg-disabled",
155
- children: hint
156
- }
157
- )
158
- ]
159
- }
160
- ),
161
- /* @__PURE__ */ jsx(
162
- "input",
163
- {
164
- hidden: true,
165
- ref: inputRef,
166
- onChange: handleFileChange,
167
- type: "file",
168
- accept: formats.join(","),
169
- multiple
170
- }
171
- )
172
- ] });
173
- };
174
-
175
- export {
176
- formatFileSize,
177
- FileUpload
178
- };