@mercurjs/admin 2.1.2-canary.5 → 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 (343) hide show
  1. package/dist/[id]-YI7UXOO2.js +499 -0
  2. package/dist/{add-campaign-promotions-WRGU7MF4.js → add-campaign-promotions-OLNTDP26.js} +14 -16
  3. package/dist/{adjust-inventory-NVBPZYOF.js → adjust-inventory-CVWSBMHU.js} +13 -12
  4. package/dist/{api-key-management-create-THDCXGWK.js → api-key-management-create-7RWOCVAO.js} +3 -3
  5. package/dist/{api-key-management-detail-Q5RBMX4J.js → api-key-management-detail-ZIIDMHFI.js} +24 -23
  6. package/dist/{api-key-management-edit-LTVNXP6T.js → api-key-management-edit-ACH6TJAX.js} +3 -3
  7. package/dist/{api-key-management-list-DQ33T6KV.js → api-key-management-list-JHBBXGHH.js} +12 -14
  8. package/dist/{api-key-management-sales-channels-UGAAKILD.js → api-key-management-sales-channels-XEBTUB5V.js} +15 -15
  9. package/dist/attribute-create-BYO7BDF5.js +562 -0
  10. package/dist/attribute-create-possible-value-EXVHC272.js +476 -0
  11. package/dist/{attribute-detail-FLQKKFCO.js → attribute-detail-36XP35P6.js} +74 -64
  12. package/dist/attribute-edit-WMJWHT7Z.js +183 -0
  13. package/dist/attribute-edit-possible-value-KTUZ7YLW.js +164 -0
  14. package/dist/{attribute-edit-ranking-CEBR5LJ7.js → attribute-edit-ranking-7AAAYEC7.js} +66 -61
  15. package/dist/{attribute-list-ODT2ZP4T.js → attribute-list-OHU2QMUG.js} +24 -26
  16. package/dist/{campaign-create-QFNB5XZ2.js → campaign-create-VFFIIRE4.js} +4 -4
  17. package/dist/{campaign-detail-UKVHFA6H.js → campaign-detail-AZKBPDLC.js} +27 -28
  18. package/dist/{campaign-list-A3TVXCV4.js → campaign-list-NQGNOFVZ.js} +11 -13
  19. package/dist/{categories-metadata-YVUNHMQT.js → categories-metadata-YZUP43OH.js} +17 -16
  20. package/dist/{category-create-XH6AM3NM.js → category-create-2MRYTSYM.js} +5 -5
  21. package/dist/{category-detail-DXQECKDO.js → category-detail-KTFD3VVR.js} +30 -29
  22. package/dist/{category-edit-IXU6E3YT.js → category-edit-QLOS2LBA.js} +5 -5
  23. package/dist/{category-list-AQIONIMS.js → category-list-U7ZQBSZN.js} +12 -14
  24. package/dist/{category-organize-NCH6A57L.js → category-organize-TIKTYJFZ.js} +3 -3
  25. package/dist/{category-products-VV3JLNW7.js → category-products-7P5DSQN4.js} +30 -29
  26. package/dist/{chunk-XZQV2OLD.js → chunk-26UTIAAZ.js} +17 -2
  27. package/dist/{chunk-BURG4MO3.js → chunk-2LQ5SCPB.js} +6 -6
  28. package/dist/{chunk-ZZO3INVE.js → chunk-2MDGYHWN.js} +128 -25
  29. package/dist/{chunk-CPZJNHAL.js → chunk-2S6VXFBZ.js} +9 -9
  30. package/dist/{chunk-5CK6XEFV.js → chunk-2YYXP6XI.js} +183 -111
  31. package/dist/{chunk-GAD5DQOY.js → chunk-3EDQIZV6.js} +2 -2
  32. package/dist/{chunk-MKIFFPHN.js → chunk-3IVTUFBM.js} +9 -9
  33. package/dist/{chunk-JDHG7FWL.js → chunk-3JSAS7QP.js} +91 -160
  34. package/dist/{chunk-YQ6JASMO.js → chunk-3P4VTL4S.js} +12 -12
  35. package/dist/{chunk-CUSRWXZY.js → chunk-3VTAK3S6.js} +108 -28
  36. package/dist/{chunk-S2Q7PO7I.js → chunk-4KX6CBJ4.js} +1 -0
  37. package/dist/{chunk-C3WE6EFO.js → chunk-4YWKKCTT.js} +1 -2
  38. package/dist/chunk-533GMKEG.js +125 -0
  39. package/dist/chunk-57BHSFNA.js +101 -0
  40. package/dist/{chunk-AEFDAU3Y.js → chunk-5KGMGL4N.js} +4 -24
  41. package/dist/{chunk-LWIWYLZL.js → chunk-637OFDFC.js} +810 -306
  42. package/dist/{chunk-WIDZXOML.js → chunk-6AZKWCVL.js} +15 -15
  43. package/dist/{chunk-JCSPXBS3.js → chunk-6FIU2V6Y.js} +1 -1
  44. package/dist/chunk-77T2UI6L.js +1671 -0
  45. package/dist/{chunk-JPJISU7W.js → chunk-A4UQKKGC.js} +14 -14
  46. package/dist/{chunk-B6FG7A6W.js → chunk-A772RAKB.js} +1 -1
  47. package/dist/{chunk-2MNDOYVE.js → chunk-A7JOHU6Q.js} +5 -5
  48. package/dist/{chunk-V2MYKK5U.js → chunk-AB2LHP3M.js} +1 -1
  49. package/dist/chunk-ABFL4ACD.js +207 -0
  50. package/dist/{chunk-VBJFCAKU.js → chunk-AKTAFKIU.js} +5 -5
  51. package/dist/{chunk-Y3I3LXKW.js → chunk-ALATTLBM.js} +8 -8
  52. package/dist/{chunk-PBQ5M44A.js → chunk-AXTQMIIK.js} +13 -30
  53. package/dist/{chunk-TAKEQAZZ.js → chunk-B3EEDC47.js} +2 -2
  54. package/dist/{chunk-QRAFS63H.js → chunk-BCVUMATY.js} +18 -18
  55. package/dist/{chunk-34I4QIBD.js → chunk-BE6JLTMI.js} +1 -1
  56. package/dist/{chunk-OCEPZGFS.js → chunk-BFT3CN5L.js} +10 -10
  57. package/dist/{chunk-NNCIV74Y.js → chunk-BGGUVHDG.js} +93 -83
  58. package/dist/{chunk-KERTIEWE.js → chunk-BGQ7H2KL.js} +10 -10
  59. package/dist/{chunk-3BBG3LC3.js → chunk-BHOZKBYY.js} +397 -13
  60. package/dist/{chunk-Z6DBHMEN.js → chunk-BLYJZMNE.js} +6 -6
  61. package/dist/chunk-CBG4E3M3.js +165 -0
  62. package/dist/{chunk-EHLONIAY.js → chunk-CBGXKU7Z.js} +18 -18
  63. package/dist/{chunk-XRCERDBF.js → chunk-CKACZXMP.js} +9 -9
  64. package/dist/{chunk-GS7L2B4S.js → chunk-CKD5563X.js} +6 -7
  65. package/dist/{chunk-E3DLJSYD.js → chunk-COP7NFSJ.js} +1 -1
  66. package/dist/{chunk-CQ7HSDCL.js → chunk-CPXK5RSJ.js} +7 -7
  67. package/dist/{chunk-4OHMUFVP.js → chunk-CVFVEDMV.js} +5 -5
  68. package/dist/chunk-CYGIJOA5.js +79 -0
  69. package/dist/{chunk-XILJNA3R.js → chunk-D5T7QOVY.js} +12 -12
  70. package/dist/{chunk-RTOCKSJ5.js → chunk-DOSKHIRH.js} +16 -16
  71. package/dist/{chunk-X3S5LZQO.js → chunk-DRJAKRTI.js} +49 -19
  72. package/dist/{chunk-V5J73NPW.js → chunk-E74OUNA3.js} +1 -1
  73. package/dist/{chunk-52ZAPY3Z.js → chunk-ED7XNGZD.js} +12 -12
  74. package/dist/{chunk-J3JN6OWV.js → chunk-EJTB2SLE.js} +9 -9
  75. package/dist/{chunk-Z4CSKRJ4.js → chunk-ELM74U2R.js} +6 -6
  76. package/dist/chunk-EREXPX6I.js +348 -0
  77. package/dist/{chunk-BJFFCELF.js → chunk-FB7DDNCA.js} +5 -5
  78. package/dist/{chunk-JJYOI5PR.js → chunk-FFNSWUDC.js} +10 -10
  79. package/dist/{chunk-YKDEE7ZL.js → chunk-FTAR3BDS.js} +1 -1
  80. package/dist/{chunk-VXPWIJZV.js → chunk-G4PROEJI.js} +5 -5
  81. package/dist/{chunk-OQMBWJPH.js → chunk-GKW445WA.js} +1 -1
  82. package/dist/{chunk-LNAXUDW2.js → chunk-GLPS6QFG.js} +64 -62
  83. package/dist/{chunk-3IN6MMKV.js → chunk-GNLPUGYK.js} +2 -2
  84. package/dist/{chunk-3UZVMGC6.js → chunk-GP4J42UD.js} +6 -6
  85. package/dist/{chunk-RHCDOBTU.js → chunk-H23AKDB2.js} +15 -15
  86. package/dist/{chunk-Z2QQZOG3.js → chunk-H5PYBIOZ.js} +1 -1
  87. package/dist/{chunk-XIZLPYEE.js → chunk-H6MYB7GB.js} +4 -1
  88. package/dist/{chunk-D3OIFOHY.js → chunk-HR7TFO2X.js} +4 -4
  89. package/dist/{chunk-QZBAACYC.js → chunk-HWBUIBJD.js} +78 -73
  90. package/dist/{chunk-BGSOUCCN.js → chunk-IAWZQKUH.js} +10 -10
  91. package/dist/{chunk-R2FE3PBQ.js → chunk-IEPNHH7Z.js} +1 -1
  92. package/dist/chunk-IIFQ7KYL.js +171 -0
  93. package/dist/{chunk-XZYRXNWO.js → chunk-IMR3MZDP.js} +4 -4
  94. package/dist/{chunk-Z4OJNCER.js → chunk-IRTI3AS3.js} +14 -14
  95. package/dist/chunk-J65IXAGI.js +292 -0
  96. package/dist/{chunk-VIGX66F7.js → chunk-JQBSPUH2.js} +1 -1
  97. package/dist/{chunk-OADU6FQZ.js → chunk-K4TGNN4P.js} +10 -10
  98. package/dist/{chunk-K7BVNZS6.js → chunk-KXIA66EJ.js} +13 -13
  99. package/dist/{chunk-TDQEXNX5.js → chunk-LCGLQNOI.js} +12 -12
  100. package/dist/{chunk-CQFXSD2L.js → chunk-LLOKYZMI.js} +5 -5
  101. package/dist/chunk-LT3REHJG.js +2355 -0
  102. package/dist/{chunk-VVWB3GIK.js → chunk-LYZDVZWA.js} +3 -12
  103. package/dist/{chunk-UQITHKTH.js → chunk-LYZT5REU.js} +9 -18
  104. package/dist/{chunk-MSXZLZ4X.js → chunk-MN3AEVR7.js} +16 -16
  105. package/dist/{chunk-LN3OHONN.js → chunk-MVNO35S5.js} +8 -8
  106. package/dist/{chunk-CMLDMKSO.js → chunk-N2LH7A4X.js} +18 -10
  107. package/dist/{chunk-IXWGJ4W7.js → chunk-NQBSSM5V.js} +31 -13
  108. package/dist/{chunk-KBYZLKI4.js → chunk-NQEXDLYH.js} +474 -13
  109. package/dist/{chunk-HO7Z6MC3.js → chunk-NZ2LHIKD.js} +33 -33
  110. package/dist/{chunk-DBNPVU3L.js → chunk-OSEIN4Y2.js} +1 -1
  111. package/dist/{chunk-FSCMVYXU.js → chunk-P25PIADJ.js} +1 -1
  112. package/dist/{chunk-VTK4AZCW.js → chunk-PCLSODMO.js} +32 -32
  113. package/dist/{chunk-WRRMBJBQ.js → chunk-PXTJJQKJ.js} +1 -1
  114. package/dist/chunk-PYDRHQTY.js +24 -0
  115. package/dist/{chunk-NHHZHVP6.js → chunk-Q6I2IKJB.js} +7 -7
  116. package/dist/{chunk-IBOTFRZP.js → chunk-QIU6DJY6.js} +6 -6
  117. package/dist/{chunk-GQUE4TAJ.js → chunk-RKH3A4O3.js} +13 -13
  118. package/dist/chunk-RQ4NMLSS.js +8 -0
  119. package/dist/{chunk-ANHC5MBQ.js → chunk-RQPDD3RI.js} +1 -1
  120. package/dist/{chunk-DL2ZIXBO.js → chunk-S5BJ5CMF.js} +1 -1
  121. package/dist/chunk-SG76L7C7.js +61 -0
  122. package/dist/{chunk-FZCXIX37.js → chunk-SRDK3XX7.js} +24 -23
  123. package/dist/{chunk-6AZBAS4D.js → chunk-TGFZ4UBK.js} +20 -20
  124. package/dist/{chunk-JRWXFXQ7.js → chunk-TITPJHIL.js} +13 -13
  125. package/dist/{chunk-N3XQFZPF.js → chunk-TP7L6M7V.js} +6 -6
  126. package/dist/{chunk-GIU72QEP.js → chunk-U7XILJH6.js} +35 -32
  127. package/dist/{chunk-ZOS6EBB2.js → chunk-UPNMDPFX.js} +7 -7
  128. package/dist/{chunk-TGK2C73H.js → chunk-UR6HGBFE.js} +67 -90
  129. package/dist/{chunk-SCKY77PC.js → chunk-UXQAHUGZ.js} +8 -8
  130. package/dist/chunk-V5XHY5LP.js +39 -0
  131. package/dist/{chunk-72Q2T2FK.js → chunk-V6OGMYAI.js} +11 -10
  132. package/dist/{chunk-7AMAENN3.js → chunk-W7NN2EFL.js} +21 -21
  133. package/dist/{chunk-YEUUI6JF.js → chunk-WDH5C2NS.js} +1 -1
  134. package/dist/{chunk-NZ4BXIO6.js → chunk-WKCYMDTV.js} +5 -5
  135. package/dist/{chunk-YA53AXGM.js → chunk-WNYDGJ3E.js} +19 -19
  136. package/dist/{chunk-GU4T2RAQ.js → chunk-WQFFCK3R.js} +12 -7
  137. package/dist/{chunk-6MJ5HPIP.js → chunk-WS63IRBI.js} +3 -3
  138. package/dist/chunk-WV4SQ57G.js +141 -0
  139. package/dist/{chunk-ENFPDBSU.js → chunk-WVKVPGJW.js} +16 -7
  140. package/dist/{chunk-WQO26Z76.js → chunk-X45JKZYW.js} +11 -11
  141. package/dist/{chunk-3QIIWLCT.js → chunk-XJ3WC4G7.js} +4 -4
  142. package/dist/{chunk-YXFG3M2D.js → chunk-XLA2CNCW.js} +2 -2
  143. package/dist/{chunk-IGBGQDKS.js → chunk-XODRTI2W.js} +8 -8
  144. package/dist/{chunk-U7WZYWGA.js → chunk-XZZTC7E5.js} +1 -1
  145. package/dist/{chunk-Q64H5G5C.js → chunk-Y3NVKGGI.js} +12 -12
  146. package/dist/{chunk-33XUAKRP.js → chunk-YGAX72XV.js} +3 -1
  147. package/dist/chunk-YGRTRAWX.js +163 -0
  148. package/dist/{chunk-IK6MPP7K.js → chunk-YLKG7W4P.js} +5 -5
  149. package/dist/{chunk-YWWUOGJA.js → chunk-YN3FGNJM.js} +63 -3
  150. package/dist/{chunk-36NDTZIV.js → chunk-YYMACYP6.js} +6 -6
  151. package/dist/{chunk-LNT72PI5.js → chunk-ZHOI4QMK.js} +4 -4
  152. package/dist/{chunk-FNJNVUXR.js → chunk-ZSFJVRRS.js} +4 -4
  153. package/dist/chunk-ZZ3XFIEM.js +84 -0
  154. package/dist/{collection-add-products-K4R67OLS.js → collection-add-products-XL2TAKQD.js} +30 -29
  155. package/dist/{collection-create-3BTRORHU.js → collection-create-HUNYHKUJ.js} +2 -2
  156. package/dist/{collection-detail-4ATHIFVS.js → collection-detail-2DSZVOI7.js} +29 -28
  157. package/dist/{collection-edit-L5GPFBBX.js → collection-edit-OQGYTQDO.js} +2 -2
  158. package/dist/{collection-list-OFZNSMTS.js → collection-list-NGCW7OTG.js} +35 -36
  159. package/dist/{collection-metadata-KHGPTV5C.js → collection-metadata-47N7TUOH.js} +17 -16
  160. package/dist/{commission-rate-create-US6HFJ5L.js → commission-rate-create-BQY3UGKV.js} +53 -53
  161. package/dist/{commission-rate-detail-D5WUXKER.js → commission-rate-detail-LAZZLZVX.js} +20 -19
  162. package/dist/{commission-rate-edit-VA6VE2H4.js → commission-rate-edit-DAFXNYYN.js} +53 -53
  163. package/dist/{commission-rate-list-TFMQC26F.js → commission-rate-list-Y5XLEO67.js} +9 -11
  164. package/dist/{constants-CAwtRicB.d.ts → constants-26tEckuq.d.ts} +3 -3
  165. package/dist/{customer-detail-5UW56MGD.js → customer-detail-D5SSLNFT.js} +27 -28
  166. package/dist/{customer-group-add-customers-YSFEUI5M.js → customer-group-add-customers-VJUBEN7M.js} +13 -15
  167. package/dist/{customer-group-detail-NL7FAEBO.js → customer-group-detail-KRT7E2JA.js} +25 -26
  168. package/dist/{customer-group-list-T53DLWPQ.js → customer-group-list-KKDIESQ6.js} +25 -26
  169. package/dist/{customer-group-metadata-YJXZFSFG.js → customer-group-metadata-J6JY7DZ3.js} +17 -16
  170. package/dist/{customer-list-LHGKF34F.js → customer-list-MB6WZFMA.js} +12 -14
  171. package/dist/{customer-metadata-SG6M7X3Q.js → customer-metadata-AH2LBK4T.js} +17 -16
  172. package/dist/{customers-add-customer-group-IWFFLQQQ.js → customers-add-customer-group-AHGAPEIS.js} +27 -28
  173. package/dist/{edit-inventory-item-TDG2ZTPM.js → edit-inventory-item-ADNLKLCN.js} +13 -12
  174. package/dist/{edit-inventory-item-attributes-T56PJTCT.js → edit-inventory-item-attributes-XVR2WLDU.js} +13 -12
  175. package/dist/{edit-reservation-T6SKOG2F.js → edit-reservation-HQQL42QX.js} +7 -7
  176. package/dist/{edit-rules-BRXIELG2.js → edit-rules-YMKM5JPI.js} +45 -37
  177. package/dist/index.d.ts +2 -2
  178. package/dist/index.js +827 -601
  179. package/dist/{inventory-create-3GAK5IYZ.js → inventory-create-IVESXFSV.js} +19 -18
  180. package/dist/{inventory-detail-RU37UA2Y.js → inventory-detail-TINIAFVB.js} +27 -28
  181. package/dist/{inventory-list-3H3J7IOB.js → inventory-list-YLIAKQXI.js} +11 -13
  182. package/dist/{inventory-metadata-LUGA3KNV.js → inventory-metadata-6INRH2JC.js} +17 -16
  183. package/dist/{inventory-stock-JZNONQAL.js → inventory-stock-6YGTATID.js} +21 -20
  184. package/dist/loader-6KDBTRVR.js +26 -0
  185. package/dist/{location-detail-QHF23BXP.js → location-detail-EK2S7WOK.js} +23 -22
  186. package/dist/{location-fulfillment-providers-OQTYP6C7.js → location-fulfillment-providers-KUUNC2KP.js} +39 -41
  187. package/dist/{location-list-XGFUQY7T.js → location-list-IV323QW2.js} +21 -21
  188. package/dist/{location-sales-channels-IRGVGAVC.js → location-sales-channels-EYUXMTW7.js} +12 -12
  189. package/dist/{location-service-zone-create-URK3O2H4.js → location-service-zone-create-ZS3UWJAA.js} +8 -11
  190. package/dist/{location-service-zone-manage-areas-DO3XK6TU.js → location-service-zone-manage-areas-S7QZTIFT.js} +8 -11
  191. package/dist/{location-service-zone-shipping-option-create-OOU6YVRS.js → location-service-zone-shipping-option-create-36JZFRGY.js} +23 -21
  192. package/dist/{location-service-zone-shipping-option-edit-PLEDWIY3.js → location-service-zone-shipping-option-edit-3PGSNKYT.js} +8 -7
  193. package/dist/{location-service-zone-shipping-option-pricing-MZHMML32.js → location-service-zone-shipping-option-pricing-JLGCOZGS.js} +8 -8
  194. package/dist/{login-EWHQY6G3.js → login-6L3RMREO.js} +13 -12
  195. package/dist/{manage-locations-BA7VMY3Q.js → manage-locations-CFTM6DNH.js} +35 -32
  196. package/dist/{marketplace-add-currencies-BIN4YT3V.js → marketplace-add-currencies-6ANNBGZM.js} +8 -10
  197. package/dist/{marketplace-detail-AXO5YXED.js → marketplace-detail-BAU2MEJT.js} +23 -24
  198. package/dist/{marketplace-edit-U5B6WA56.js → marketplace-edit-6Q3G2OY5.js} +5 -4
  199. package/dist/{marketplace-metadata-VYCPYFJD.js → marketplace-metadata-KRCGKOCA.js} +17 -16
  200. package/dist/offers-IFKM6EQT.js +440 -0
  201. package/dist/{order-allocate-items-A365NKBM.js → order-allocate-items-DJ2V4B7A.js} +17 -13
  202. package/dist/{order-create-claim-PLC342V5.js → order-create-claim-RMDDCUZ6.js} +106 -106
  203. package/dist/{order-create-edit-25CJG3KZ.js → order-create-edit-PQ54JFZZ.js} +32 -62
  204. package/dist/{order-create-exchange-TK65KBGW.js → order-create-exchange-T6DBVS75.js} +120 -93
  205. package/dist/{order-create-fulfillment-BB2FCLAH.js → order-create-fulfillment-SMSUJSBN.js} +40 -23
  206. package/dist/{order-create-refund-LDODI2AP.js → order-create-refund-OW3MIXBY.js} +24 -18
  207. package/dist/{order-create-return-5XDDN456.js → order-create-return-YCX6C3VP.js} +53 -37
  208. package/dist/{order-create-shipment-7XP6PDTD.js → order-create-shipment-5ZAWH5CZ.js} +14 -13
  209. package/dist/{order-detail-SFIBIQTI.js → order-detail-2OAEGBQG.js} +29 -30
  210. package/dist/{order-edit-billing-address-JNO7KJKW.js → order-edit-billing-address-VGZBQHF5.js} +15 -14
  211. package/dist/{order-edit-email-AZIA6X5Q.js → order-edit-email-OOCXVRET.js} +14 -13
  212. package/dist/{order-edit-shipping-address-GJMUSOPK.js → order-edit-shipping-address-B4F3E5RE.js} +14 -13
  213. package/dist/{order-list-IDKVSUYO.js → order-list-DQTMCEFD.js} +25 -27
  214. package/dist/{order-metadata-RXIJOP4V.js → order-metadata-AN6MPHHT.js} +18 -17
  215. package/dist/{order-receive-return-6IU2HGAD.js → order-receive-return-DZ4IUOHY.js} +29 -21
  216. package/dist/{order-request-transfer-6IZVCHGV.js → order-request-transfer-A2NJSQ4H.js} +16 -14
  217. package/dist/pages/index.d.ts +702 -566
  218. package/dist/pages/index.js +194 -186
  219. package/dist/{payout-detail-DZFTTDUR.js → payout-detail-TWO6HN4E.js} +4 -4
  220. package/dist/{payout-list-75YIMPCS.js → payout-list-7WJZFNW5.js} +9 -11
  221. package/dist/{price-list-configuration-FEO2XAX5.js → price-list-configuration-XAHXLCXR.js} +14 -16
  222. package/dist/{price-list-create-6XVOYBM4.js → price-list-create-37SCDSPN.js} +35 -34
  223. package/dist/{price-list-detail-FBY7PWN3.js → price-list-detail-4Q2HBLAM.js} +30 -29
  224. package/dist/{price-list-edit-BVVLQ5WV.js → price-list-edit-ZVLD4M5T.js} +5 -5
  225. package/dist/{price-list-list-TZIZJJH3.js → price-list-list-ER4TOZTY.js} +13 -15
  226. package/dist/{price-list-prices-add-HQHRB3XG.js → price-list-prices-add-UASPZXKT.js} +31 -30
  227. package/dist/{price-list-prices-edit-WSLGG7VC.js → price-list-prices-edit-WHCIGSB2.js} +22 -21
  228. package/dist/product-add-existing-attributes-7HEJUR6J.js +420 -0
  229. package/dist/{product-attributes-ASPKDH7H.js → product-attributes-MHRXZK5S.js} +4 -4
  230. package/dist/product-brand-create-B3ZJGHUQ.js +171 -0
  231. package/dist/product-brand-detail-6MPQ3UFN.js +100 -0
  232. package/dist/product-brand-edit-3TQDHZNN.js +179 -0
  233. package/dist/product-brand-list-ZBPBSRQN.js +30 -0
  234. package/dist/product-brand-metadata-EAMW6PQJ.js +87 -0
  235. package/dist/product-bulk-edit-J6ZP7GGM.js +287 -0
  236. package/dist/{product-create-NT5YV3BN.js → product-create-KHJWRSUB.js} +35 -35
  237. package/dist/product-create-attribute-ZT3VZDNZ.js +196 -0
  238. package/dist/{product-create-option-WDFFZYTE.js → product-create-option-NIAP75EE.js} +7 -25
  239. package/dist/{product-create-variant-TJB7NNKY.js → product-create-variant-LCE47YFO.js} +25 -21
  240. package/dist/{product-detail-XXA3V6V3.js → product-detail-GLISGO65.js} +27 -29
  241. package/dist/{product-edit-IASCMBET.js → product-edit-EKAZRIJ6.js} +15 -8
  242. package/dist/product-edit-option-OZUZGMIM.js +166 -0
  243. package/dist/{product-list-XXSHUGNI.js → product-list-2CTGPDDT.js} +32 -31
  244. package/dist/{product-media-HCM6UI2O.js → product-media-KREKRDOC.js} +16 -9
  245. package/dist/{product-metadata-GJ7C2UJG.js → product-metadata-O3BAEUYB.js} +20 -19
  246. package/dist/{product-organization-63ODFBLM.js → product-organization-SBQY44IF.js} +61 -18
  247. package/dist/{product-prices-RLZBWN6C.js → product-prices-R5JOHVGS.js} +8 -8
  248. package/dist/{product-sales-channels-53YVZ5G5.js → product-sales-channels-TFOGXCMI.js} +15 -15
  249. package/dist/{product-shipping-profile-X5CZJCET.js → product-shipping-profile-E4HJ4EYW.js} +7 -6
  250. package/dist/{product-stock-XB3HKT5G.js → product-stock-EIP2XJUR.js} +28 -27
  251. package/dist/{product-tag-create-PHJICTE4.js → product-tag-create-7JBM6I3V.js} +13 -12
  252. package/dist/{product-tag-detail-2H7EJV5J.js → product-tag-detail-MTFAPSG2.js} +51 -51
  253. package/dist/{product-tag-edit-G4UNGXPT.js → product-tag-edit-O2ADFDD6.js} +13 -12
  254. package/dist/{product-tag-list-6LTEJAI7.js → product-tag-list-EOULJIYQ.js} +52 -52
  255. package/dist/{product-tag-metadata-I4V6CR6Z.js → product-tag-metadata-SBOUTUXY.js} +17 -16
  256. package/dist/{product-type-detail-LOCLZUCY.js → product-type-detail-H4CZN27J.js} +29 -28
  257. package/dist/{product-type-list-7SXDLL6L.js → product-type-list-TM26QMHR.js} +13 -15
  258. package/dist/{product-type-metadata-KGVRMMTQ.js → product-type-metadata-KN5OXR6J.js} +17 -16
  259. package/dist/{product-variant-detail-T2OM45NJ.js → product-variant-detail-H2YRFDAU.js} +27 -37
  260. package/dist/product-variant-edit-6W7LKCEE.js +867 -0
  261. package/dist/{product-variant-manage-inventory-items-WENX2QCZ.js → product-variant-manage-inventory-items-Q5MJG3EJ.js} +6 -10
  262. package/dist/{product-variant-metadata-HV72UBCP.js → product-variant-metadata-QESZ7VS2.js} +17 -16
  263. package/dist/{profile-detail-IWSYAO67.js → profile-detail-ZRL5SERS.js} +6 -6
  264. package/dist/{promotion-add-campaign-GBB6M2OB.js → promotion-add-campaign-O3RTMS3W.js} +6 -5
  265. package/dist/{promotion-create-4ZEXEV4G.js → promotion-create-TGC6BVWF.js} +23 -21
  266. package/dist/{promotion-detail-TE54RSNT.js → promotion-detail-VYIXZMMD.js} +22 -21
  267. package/dist/{promotion-list-IANWEI3X.js → promotion-list-C3SKV5BJ.js} +14 -16
  268. package/dist/{refund-reason-create-M2CYTCEM.js → refund-reason-create-2KEQFOID.js} +13 -12
  269. package/dist/{refund-reason-edit-M4XBV633.js → refund-reason-edit-E7CB7SM3.js} +13 -12
  270. package/dist/{refund-reason-list-7G23NIRL.js → refund-reason-list-TAHJK4OX.js} +39 -37
  271. package/dist/{region-add-countries-TZEP4SML.js → region-add-countries-COXN4LP3.js} +7 -9
  272. package/dist/{region-create-7YJ25C3H.js → region-create-P66Q65XY.js} +14 -15
  273. package/dist/{region-detail-KFFPZLZL.js → region-detail-P2HHBYFV.js} +11 -13
  274. package/dist/{region-edit-QNJ2HT76.js → region-edit-XFE54SAO.js} +8 -7
  275. package/dist/{region-list-TPQG44BF.js → region-list-2XXKCDDX.js} +12 -14
  276. package/dist/{region-metadata-4JWOEGTZ.js → region-metadata-723RQGHS.js} +17 -16
  277. package/dist/{reservation-create-26QAWABA.js → reservation-create-Y3HG4AZA.js} +4 -4
  278. package/dist/{reservation-detail-X3W6APD5.js → reservation-detail-HQMADZ56.js} +21 -20
  279. package/dist/{reservation-list-DOW3PKTS.js → reservation-list-YKC3JJ6K.js} +12 -14
  280. package/dist/{reservation-metadata-JFLJ27A3.js → reservation-metadata-UG4YTEMY.js} +18 -17
  281. package/dist/{reset-password-BQFZL5XM.js → reset-password-2VNU52CE.js} +1 -1
  282. package/dist/{return-reason-list-J5S45BMZ.js → return-reason-list-IHFO2LJK.js} +27 -28
  283. package/dist/{sales-channel-add-products-P5AAQFVB.js → sales-channel-add-products-YZTQ2SDS.js} +31 -30
  284. package/dist/{sales-channel-create-NSZEHGZE.js → sales-channel-create-BSNCLZWR.js} +2 -2
  285. package/dist/{sales-channel-detail-BJCMSTSA.js → sales-channel-detail-67G7K3IE.js} +29 -28
  286. package/dist/{sales-channel-edit-W6Z2ERBJ.js → sales-channel-edit-FUDXMZYV.js} +2 -2
  287. package/dist/{sales-channel-list-QKFVTZ6A.js → sales-channel-list-GYLGH4U7.js} +21 -20
  288. package/dist/{sales-channel-metadata-NDSKXOGH.js → sales-channel-metadata-H6RSHKVP.js} +17 -16
  289. package/dist/{shipping-option-type-create-MEL24PGH.js → shipping-option-type-create-QAOW7753.js} +13 -12
  290. package/dist/{shipping-option-type-detail-OAKOWHU7.js → shipping-option-type-detail-QGWVDTDU.js} +21 -20
  291. package/dist/{shipping-option-type-edit-IVBHURXR.js → shipping-option-type-edit-WXYBDRNY.js} +13 -12
  292. package/dist/{shipping-option-type-list-HRW7XFEQ.js → shipping-option-type-list-YSWP6DSC.js} +25 -26
  293. package/dist/{shipping-profile-detail-XKLW22RQ.js → shipping-profile-detail-YAKZHWZI.js} +7 -7
  294. package/dist/{shipping-profile-metadata-UZPX2PHJ.js → shipping-profile-metadata-UE53IA3J.js} +19 -18
  295. package/dist/{shipping-profiles-list-IT433GKY.js → shipping-profiles-list-JF2SQIQ7.js} +10 -12
  296. package/dist/{store-bulk-edit-HCEEME3D.js → store-bulk-edit-UYNQ2CPG.js} +7 -7
  297. package/dist/{store-create-OQVFVIK4.js → store-create-WNFRHXWR.js} +13 -12
  298. package/dist/{store-details-6NDWU65D.js → store-details-R2GQU7HE.js} +44 -44
  299. package/dist/{store-edit-U5I6TFKD.js → store-edit-UW3QOFFX.js} +11 -11
  300. package/dist/{store-list-TJXHXAPH.js → store-list-5CV7VJLO.js} +36 -37
  301. package/dist/{store-member-invite-4GDKCSTT.js → store-member-invite-M4NVBUXM.js} +3 -3
  302. package/dist/{tax-region-create-PSQRQ3UC.js → tax-region-create-3KVECMFN.js} +16 -14
  303. package/dist/{tax-region-detail-KCJTJZZI.js → tax-region-detail-AOT4X4DZ.js} +27 -27
  304. package/dist/{tax-region-edit-OARZRBVK.js → tax-region-edit-5T7VHKIA.js} +15 -13
  305. package/dist/{tax-region-list-LP6SV4BF.js → tax-region-list-FIBHEFVD.js} +10 -10
  306. package/dist/{tax-region-metadata-XJRFOG7I.js → tax-region-metadata-RSZCJGJT.js} +17 -16
  307. package/dist/{tax-region-province-detail-IQ3IRVIE.js → tax-region-province-detail-XEMIX5SQ.js} +25 -25
  308. package/dist/{tax-region-tax-override-create-2MNB5QSB.js → tax-region-tax-override-create-KVVY4AF2.js} +54 -54
  309. package/dist/{tax-region-tax-override-edit-JCG5D2HY.js → tax-region-tax-override-edit-TVX7SMJD.js} +54 -54
  310. package/dist/{user-detail-3KQDH6LZ.js → user-detail-W7DGVXDZ.js} +8 -8
  311. package/dist/{user-invite-ZAGFYQDN.js → user-invite-HLZJ7FST.js} +14 -16
  312. package/dist/{user-list-7PIKWZQY.js → user-list-TR7RSGUO.js} +10 -12
  313. package/dist/{user-metadata-376YJMY3.js → user-metadata-3AFZX3DM.js} +17 -16
  314. package/package.json +4 -4
  315. package/dist/attribute-create-IVRJPVG5.js +0 -997
  316. package/dist/attribute-create-possible-value-BIU2L7AN.js +0 -437
  317. package/dist/attribute-edit-DRHFOHMK.js +0 -282
  318. package/dist/attribute-edit-possible-value-G2ON2AE3.js +0 -264
  319. package/dist/chunk-35NDMIYZ.js +0 -8
  320. package/dist/chunk-4GPAS5GW.js +0 -36
  321. package/dist/chunk-4ZTZTIIM.js +0 -69
  322. package/dist/chunk-7O5NDICV.js +0 -120
  323. package/dist/chunk-IGTRIAUC.js +0 -84
  324. package/dist/chunk-KLVTWJ4M.js +0 -467
  325. package/dist/chunk-L5SVR7FK.js +0 -248
  326. package/dist/chunk-LO7XX5M7.js +0 -6
  327. package/dist/chunk-NCYTM57J.js +0 -160
  328. package/dist/chunk-OPAARXKJ.js +0 -2146
  329. package/dist/chunk-QOQSXNEF.js +0 -37
  330. package/dist/chunk-RSBZREKG.js +0 -144
  331. package/dist/chunk-UEFWVPQ7.js +0 -1260
  332. package/dist/chunk-WCEMRNW4.js +0 -6
  333. package/dist/chunk-YBZWO4ZV.js +0 -57
  334. package/dist/chunk-Z5I2Z6L3.js +0 -160
  335. package/dist/product-edit-option-UMOGVYLM.js +0 -156
  336. package/dist/product-export-IJBCSQ5H.js +0 -137
  337. package/dist/product-import-JB7S4EL6.js +0 -267
  338. package/dist/product-variant-edit-L77HDGTA.js +0 -547
  339. package/dist/{chunk-ZBJ56XDB.js → chunk-Q2ULPJJ6.js} +3 -3
  340. package/dist/{chunk-ZW34ZAIP.js → chunk-WYA62MUL.js} +8 -8
  341. package/dist/{customer-edit-X4HQOUAE.js → customer-edit-JZ4PQTIN.js} +3 -3
  342. package/dist/{profile-edit-Y5UUUKVH.js → profile-edit-HQTWYWZ7.js} +6 -6
  343. package/dist/{promotion-edit-details-E2XKWY7L.js → promotion-edit-details-TKRC5HES.js} +6 -6
@@ -1,997 +0,0 @@
1
- import {
2
- AttributeUIComponent,
3
- CreateAttributeSchema,
4
- UpdateAttributeSchema
5
- } from "./chunk-4ZTZTIIM.js";
6
- import {
7
- RouteFocusModal,
8
- useRouteModal
9
- } from "./chunk-FWJLS7XD.js";
10
- import {
11
- Form
12
- } from "./chunk-3QSRE5LS.js";
13
- import "./chunk-PBQ5M44A.js";
14
- import "./chunk-OH4AABUT.js";
15
- import "./chunk-YKDEE7ZL.js";
16
- import "./chunk-AEMDNTW5.js";
17
- import "./chunk-LYD3C73Z.js";
18
- import {
19
- useCreateAttribute
20
- } from "./chunk-7O5NDICV.js";
21
- import "./chunk-46M463BR.js";
22
- import "./chunk-YFRC6GEN.js";
23
- import "./chunk-N6SI4IIT.js";
24
- import "./chunk-JPNPTILP.js";
25
- import "./chunk-DAXXLQKB.js";
26
- import "./chunk-OHOWEMHO.js";
27
- import "./chunk-GKGLVDDV.js";
28
- import "./chunk-WJJXUXSO.js";
29
- import "./chunk-LAPEZATU.js";
30
- import "./chunk-DBNPVU3L.js";
31
- import "./chunk-U7WZYWGA.js";
32
- import "./chunk-ZN7LWXVC.js";
33
- import "./chunk-VYMODH6P.js";
34
- import "./chunk-LEG67A2R.js";
35
- import "./chunk-PRBE5CM3.js";
36
- import "./chunk-5TRY5IMZ.js";
37
- import "./chunk-TAKEQAZZ.js";
38
- import "./chunk-B6FG7A6W.js";
39
- import "./chunk-EPHVGD5Z.js";
40
- import "./chunk-ESPLVOFC.js";
41
- import "./chunk-FXWKGNRV.js";
42
- import "./chunk-VDKOJ5WD.js";
43
- import "./chunk-DL2ZIXBO.js";
44
- import {
45
- useProductCategories
46
- } from "./chunk-Z2QQZOG3.js";
47
- import "./chunk-5CK6XEFV.js";
48
- import "./chunk-RHKRREUU.js";
49
- import "./chunk-ZA2KFUFR.js";
50
- import "./chunk-ZBWL72TB.js";
51
- import "./chunk-NBMM2TZK.js";
52
-
53
- // src/pages/attributes/attribute-create/attribute-create.tsx
54
- import { useRef as useRef2, useState as useState3 } from "react";
55
- import { Button as Button2, Heading, ProgressTabs, Text as Text3, toast } from "@medusajs/ui";
56
- import { useTranslation as useTranslation4 } from "react-i18next";
57
-
58
- // src/pages/attributes/attribute-edit/components/attribute-form.tsx
59
- import { forwardRef, useEffect as useEffect2, useMemo, useImperativeHandle, useState as useState2 } from "react";
60
- import { zodResolver } from "@hookform/resolvers/zod";
61
- import {
62
- InlineTip,
63
- Input as Input2,
64
- Select,
65
- Switch,
66
- Text as Text2,
67
- Textarea
68
- } from "@medusajs/ui";
69
- import { FormProvider, useForm, useWatch } from "react-hook-form";
70
- import { useTranslation as useTranslation3 } from "react-i18next";
71
-
72
- // src/pages/attributes/attribute-create/components/multi-select-category.tsx
73
- import { useEffect, useRef, useState } from "react";
74
- import {
75
- ArrowUturnLeft,
76
- TriangleRightMini,
77
- TrianglesMini,
78
- XMarkMini
79
- } from "@medusajs/icons";
80
- import { Badge, Text } from "@medusajs/ui";
81
- import { useTranslation } from "react-i18next";
82
- import { jsx, jsxs } from "react/jsx-runtime";
83
- var MultiSelectCategory = ({
84
- categories,
85
- value,
86
- onChange
87
- }) => {
88
- const { t } = useTranslation();
89
- const [isOpen, setIsOpen] = useState(false);
90
- const dropdownRef = useRef(null);
91
- const triggerRef = useRef(null);
92
- const [currentParentId, setCurrentParentId] = useState(null);
93
- const [pathHistory, setPathHistory] = useState([]);
94
- useEffect(() => {
95
- const handleClickOutside = (event) => {
96
- if (dropdownRef.current && !dropdownRef.current.contains(event.target) && triggerRef.current && !triggerRef.current.contains(event.target)) {
97
- setIsOpen(false);
98
- }
99
- };
100
- document.addEventListener("mousedown", handleClickOutside);
101
- return () => {
102
- document.removeEventListener("mousedown", handleClickOutside);
103
- };
104
- }, []);
105
- const handleToggle = () => {
106
- setIsOpen((prev) => !prev);
107
- };
108
- const hasChildren = (categoryId) => {
109
- return categories.some((cat) => cat.parent_category_id === categoryId);
110
- };
111
- const handleDrillDown = (category, event) => {
112
- event.stopPropagation();
113
- setPathHistory([...pathHistory, currentParentId]);
114
- setCurrentParentId(category.id);
115
- };
116
- const handleGoBack = () => {
117
- const newPathHistory = [...pathHistory];
118
- const previousParentId = newPathHistory.pop();
119
- setPathHistory(newPathHistory);
120
- setCurrentParentId(previousParentId || null);
121
- };
122
- const handleItemClick = (categoryId) => {
123
- const isSelected = value.includes(categoryId);
124
- if (isSelected) {
125
- onChange(value.filter((id) => id !== categoryId));
126
- } else {
127
- onChange([...value, categoryId]);
128
- }
129
- };
130
- const currentCategories = categories.filter(
131
- (cat) => cat.parent_category_id === currentParentId
132
- );
133
- const getBackButtonText = () => {
134
- const parentCategory = categories.find((cat) => cat.id === currentParentId);
135
- return parentCategory?.name || "";
136
- };
137
- return /* @__PURE__ */ jsxs(
138
- "div",
139
- {
140
- className: "relative",
141
- "data-testid": "attribute-form-category-multiselect",
142
- children: [
143
- /* @__PURE__ */ jsxs(
144
- "div",
145
- {
146
- ref: triggerRef,
147
- className: "focus-within:ring-ui-ring-interactive relative flex h-10 w-full cursor-pointer items-center justify-between overflow-hidden rounded-md border border-ui-border-base bg-ui-bg-field text-ui-fg-base shadow-sm transition-colors duration-150 ease-in-out focus-within:border-ui-border-interactive focus-within:ring-1 hover:bg-ui-bg-field-hover",
148
- onClick: handleToggle,
149
- "data-testid": "attribute-form-category-multiselect-trigger",
150
- children: [
151
- /* @__PURE__ */ jsx(
152
- "div",
153
- {
154
- className: "flex items-center gap-2 px-3 py-2",
155
- "data-testid": "attribute-form-category-multiselect-trigger-content",
156
- children: value.length > 0 ? /* @__PURE__ */ jsx(
157
- "button",
158
- {
159
- type: "button",
160
- onClick: (e) => {
161
- e.stopPropagation();
162
- onChange([]);
163
- },
164
- "data-testid": "attribute-form-category-multiselect-clear-button",
165
- children: /* @__PURE__ */ jsxs(
166
- Badge,
167
- {
168
- size: "small",
169
- className: "w-fit",
170
- "data-testid": "attribute-form-category-multiselect-badge",
171
- children: [
172
- value.length,
173
- /* @__PURE__ */ jsx(XMarkMini, {})
174
- ]
175
- }
176
- )
177
- }
178
- ) : /* @__PURE__ */ jsx(
179
- Text,
180
- {
181
- className: "text-ui-fg-subtle",
182
- "data-testid": "attribute-form-category-multiselect-placeholder",
183
- children: t("attributes.fields.categories", "Select categories")
184
- }
185
- )
186
- }
187
- ),
188
- /* @__PURE__ */ jsx(
189
- "span",
190
- {
191
- className: "flex h-full w-10 items-center justify-center border-l border-ui-border-base",
192
- "data-testid": "attribute-form-category-multiselect-icon",
193
- children: /* @__PURE__ */ jsx(TrianglesMini, {})
194
- }
195
- )
196
- ]
197
- }
198
- ),
199
- isOpen && /* @__PURE__ */ jsxs(
200
- "div",
201
- {
202
- ref: dropdownRef,
203
- className: "absolute z-10 mt-1 max-h-60 w-full overflow-y-auto rounded-md border border-ui-border-base bg-ui-bg-base shadow-lg",
204
- "data-testid": "attribute-form-category-multiselect-dropdown",
205
- children: [
206
- currentParentId !== null && /* @__PURE__ */ jsxs(
207
- "div",
208
- {
209
- className: "flex cursor-pointer items-center gap-3 border-b border-ui-border-base px-3 py-2 text-ui-fg-subtle hover:bg-ui-bg-base-hover",
210
- onClick: handleGoBack,
211
- "data-testid": "attribute-form-category-multiselect-back-button",
212
- children: [
213
- /* @__PURE__ */ jsx(ArrowUturnLeft, {}),
214
- /* @__PURE__ */ jsx(Text, { "data-testid": "attribute-form-category-multiselect-back-text", children: getBackButtonText() })
215
- ]
216
- }
217
- ),
218
- currentCategories.length === 0 ? /* @__PURE__ */ jsx(
219
- "div",
220
- {
221
- className: "p-3 text-ui-fg-subtle",
222
- "data-testid": "attribute-form-category-multiselect-empty",
223
- children: t("general.noResultsTitle", "No categories found.")
224
- }
225
- ) : currentCategories.map((category) => {
226
- const isSelected = value.includes(category.id);
227
- const hasChildrenNode = hasChildren(category.id);
228
- return /* @__PURE__ */ jsxs(
229
- "div",
230
- {
231
- className: "flex cursor-pointer items-center justify-between px-1 py-1",
232
- onClick: () => handleItemClick(category.id),
233
- "data-testid": `attribute-form-category-multiselect-item-${category.id}`,
234
- children: [
235
- /* @__PURE__ */ jsxs(
236
- "div",
237
- {
238
- className: "relative mr-2 flex flex-1 items-center rounded-md px-2 py-1.5 hover:bg-ui-bg-base-hover",
239
- "data-testid": `attribute-form-category-multiselect-item-${category.id}-content`,
240
- children: [
241
- isSelected && /* @__PURE__ */ jsx(
242
- "span",
243
- {
244
- className: "absolute left-3 top-1/2 h-1 w-1 -translate-y-1/2 rounded-full bg-ui-fg-base",
245
- "data-testid": `attribute-form-category-multiselect-item-${category.id}-selected-indicator`
246
- }
247
- ),
248
- /* @__PURE__ */ jsx(
249
- Text,
250
- {
251
- className: "ml-6",
252
- "data-testid": `attribute-form-category-multiselect-item-${category.id}-name`,
253
- children: category.name
254
- }
255
- )
256
- ]
257
- }
258
- ),
259
- hasChildrenNode && /* @__PURE__ */ jsx(
260
- "div",
261
- {
262
- onClick: (e) => handleDrillDown(category, e),
263
- className: "rounded-md p-2 hover:bg-ui-bg-base-hover",
264
- "data-testid": `attribute-form-category-multiselect-item-${category.id}-drill-down`,
265
- children: /* @__PURE__ */ jsx(TriangleRightMini, { className: "mr-1" })
266
- }
267
- )
268
- ]
269
- },
270
- category.id
271
- );
272
- })
273
- ]
274
- }
275
- )
276
- ]
277
- }
278
- );
279
- };
280
-
281
- // src/pages/attributes/attribute-create/components/possible-values-list.tsx
282
- import {
283
- DndContext,
284
- closestCenter,
285
- KeyboardSensor,
286
- PointerSensor,
287
- useSensor,
288
- useSensors
289
- } from "@dnd-kit/core";
290
- import {
291
- arrayMove,
292
- SortableContext,
293
- sortableKeyboardCoordinates,
294
- useSortable,
295
- verticalListSortingStrategy
296
- } from "@dnd-kit/sortable";
297
- import { CSS } from "@dnd-kit/utilities";
298
- import { DotsSix, XMark } from "@medusajs/icons";
299
- import { Button, Hint, IconButton, Input, Label } from "@medusajs/ui";
300
- import { useFieldArray, useFormContext } from "react-hook-form";
301
- import { useTranslation as useTranslation2 } from "react-i18next";
302
- import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
303
- var SortableItem = ({ id, index, onRemove }) => {
304
- const {
305
- register,
306
- formState: { errors }
307
- } = useFormContext();
308
- const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id });
309
- const style = {
310
- transform: CSS.Transform.toString(transform),
311
- transition
312
- };
313
- const possibleValuesErrors = errors?.possible_values;
314
- const fieldError = Array.isArray(possibleValuesErrors) ? possibleValuesErrors[index]?.value : void 0;
315
- return /* @__PURE__ */ jsxs2(Fragment, { children: [
316
- /* @__PURE__ */ jsxs2(
317
- "div",
318
- {
319
- ref: setNodeRef,
320
- style,
321
- className: "flex items-center gap-2 p-2 bg-ui-bg-component border border-ui-border-base rounded-xl mb-2",
322
- "data-testid": `attribute-form-possible-value-item-${index}`,
323
- children: [
324
- /* @__PURE__ */ jsx2(
325
- "button",
326
- {
327
- type: "button",
328
- className: "cursor-grab active:cursor-grabbing",
329
- ...attributes,
330
- ...listeners,
331
- "data-testid": `attribute-form-possible-value-drag-handle-${index}`,
332
- children: /* @__PURE__ */ jsx2(DotsSix, { className: "text-ui-fg-subtle" })
333
- }
334
- ),
335
- /* @__PURE__ */ jsx2("div", { className: "flex-1", children: /* @__PURE__ */ jsx2(
336
- Input,
337
- {
338
- className: "flex-1",
339
- "aria-invalid": !!fieldError,
340
- placeholder: "Enter value",
341
- ...register(`possible_values.${index}.value`),
342
- "data-testid": `attribute-form-possible-value-input-${index}`
343
- }
344
- ) }),
345
- /* @__PURE__ */ jsx2(
346
- IconButton,
347
- {
348
- variant: "transparent",
349
- size: "small",
350
- type: "button",
351
- onClick: onRemove,
352
- "data-testid": `attribute-form-possible-value-remove-button-${index}`,
353
- children: /* @__PURE__ */ jsx2(XMark, {})
354
- }
355
- )
356
- ]
357
- }
358
- ),
359
- fieldError && /* @__PURE__ */ jsx2(
360
- Hint,
361
- {
362
- variant: "error",
363
- className: "mb-2",
364
- "data-testid": `attribute-form-possible-value-error-${index}`,
365
- children: fieldError.message
366
- }
367
- )
368
- ] });
369
- };
370
- var PossibleValuesList = () => {
371
- const { t } = useTranslation2();
372
- const { control, getValues, formState } = useFormContext();
373
- const { fields, append, remove, update } = useFieldArray({
374
- control,
375
- name: "possible_values"
376
- });
377
- const sensors = useSensors(
378
- useSensor(PointerSensor),
379
- useSensor(KeyboardSensor, {
380
- coordinateGetter: sortableKeyboardCoordinates
381
- })
382
- );
383
- const handleDragEnd = (event) => {
384
- const { active, over } = event;
385
- if (over && active.id !== over.id) {
386
- const oldIndex = fields.findIndex((field) => field.id === active.id);
387
- const newIndex = fields.findIndex((field) => field.id === over.id);
388
- const currentValues = getValues("possible_values");
389
- const reorderedValues = arrayMove(currentValues, oldIndex, newIndex);
390
- reorderedValues.forEach((value, index) => {
391
- update(index, {
392
- value: value.value,
393
- rank: index,
394
- metadata: value.metadata || {}
395
- });
396
- });
397
- }
398
- };
399
- const handleAddValue = (e) => {
400
- e.preventDefault();
401
- append({
402
- value: "",
403
- rank: fields.length,
404
- metadata: {}
405
- });
406
- };
407
- const possibleValuesError = formState.errors.possible_values;
408
- const shouldShowListError = possibleValuesError && !Array.isArray(possibleValuesError);
409
- return /* @__PURE__ */ jsxs2("div", { className: "space-y-2", "data-testid": "attribute-form-possible-values-list", children: [
410
- /* @__PURE__ */ jsxs2(
411
- "div",
412
- {
413
- className: "flex items-center justify-between pb-1",
414
- "data-testid": "attribute-form-possible-values-header",
415
- children: [
416
- /* @__PURE__ */ jsx2(Label, { "data-testid": "attribute-form-possible-values-label", children: t("attributes.fields.possibleValues", "Possible Values") }),
417
- /* @__PURE__ */ jsx2(
418
- Button,
419
- {
420
- type: "button",
421
- variant: "secondary",
422
- size: "small",
423
- onClick: handleAddValue,
424
- "data-testid": "attribute-form-possible-values-add-button",
425
- children: t("actions.add", "Add")
426
- }
427
- )
428
- ]
429
- }
430
- ),
431
- /* @__PURE__ */ jsx2(
432
- DndContext,
433
- {
434
- sensors,
435
- collisionDetection: closestCenter,
436
- onDragEnd: handleDragEnd,
437
- children: /* @__PURE__ */ jsx2(
438
- SortableContext,
439
- {
440
- items: fields.map((field) => field.id),
441
- strategy: verticalListSortingStrategy,
442
- children: fields.map((field, index) => /* @__PURE__ */ jsx2(
443
- SortableItem,
444
- {
445
- id: field.id,
446
- index,
447
- onRemove: () => remove(index)
448
- },
449
- field.id
450
- ))
451
- }
452
- )
453
- }
454
- ),
455
- shouldShowListError && /* @__PURE__ */ jsx2(
456
- Hint,
457
- {
458
- variant: "error",
459
- "data-testid": "attribute-form-possible-values-list-error",
460
- children: possibleValuesError.message
461
- }
462
- )
463
- ] });
464
- };
465
-
466
- // src/pages/attributes/attribute-edit/components/attribute-form.tsx
467
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
468
- var UI_COMPONENT_LABELS = {
469
- select: "Single Select",
470
- multivalue: "Multi Select",
471
- unit: "Unit",
472
- toggle: "Toggle",
473
- text_area: "Text"
474
- };
475
- var AttributeForm = forwardRef(
476
- ({
477
- initialData,
478
- onSubmit,
479
- categories,
480
- mode = "create",
481
- activeTab = "details",
482
- onFormStateChange
483
- }, ref) => {
484
- const { t } = useTranslation3();
485
- const [showCategorySection, setShowCategorySection] = useState2(
486
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
487
- (initialData?.product_categories?.length || 0) > 0
488
- );
489
- const form = useForm({
490
- resolver: zodResolver(
491
- mode === "create" ? CreateAttributeSchema : UpdateAttributeSchema
492
- ),
493
- defaultValues: {
494
- name: initialData?.name ?? "",
495
- description: initialData?.description ?? "",
496
- handle: initialData?.handle ?? "",
497
- ui_component: initialData?.ui_component ?? AttributeUIComponent.SELECT,
498
- is_filterable: initialData?.is_filterable ?? false,
499
- is_required: initialData?.is_required ?? false,
500
- possible_values: initialData?.possible_values?.map((v) => ({
501
- id: v.id,
502
- value: v.value,
503
- rank: v.rank
504
- })) ?? [],
505
- product_category_ids: [],
506
- metadata: {}
507
- }
508
- });
509
- const handleSubmit = form.handleSubmit(async (data) => {
510
- try {
511
- await onSubmit(data);
512
- } catch (error) {
513
- console.error(error);
514
- }
515
- });
516
- useImperativeHandle(ref, () => ({
517
- validateFields: async (fields) => {
518
- const result = await form.trigger(
519
- fields
520
- );
521
- return result;
522
- }
523
- }));
524
- const [name, description, handle, uiComponent, possibleValues] = useWatch({
525
- control: form.control,
526
- name: [
527
- "name",
528
- "description",
529
- "handle",
530
- "ui_component",
531
- "possible_values"
532
- ]
533
- });
534
- const formStateKey = useMemo(() => {
535
- return JSON.stringify({
536
- name,
537
- description,
538
- handle,
539
- uiComponent,
540
- valuesCount: possibleValues?.length ?? 0
541
- });
542
- }, [name, description, handle, uiComponent, possibleValues]);
543
- useEffect2(() => {
544
- if (!onFormStateChange) return;
545
- const hasName = name?.trim();
546
- const hasDetailsData = description?.trim() || handle?.trim();
547
- const detailsStatus = hasName ? "completed" : hasDetailsData ? "in-progress" : "not-started";
548
- const hasTypeData = uiComponent && (possibleValues?.length ?? 0) > 0;
549
- const typeStatus = hasTypeData ? "completed" : "not-started";
550
- onFormStateChange({
551
- detailsStatus,
552
- typeStatus
553
- });
554
- }, [formStateKey, onFormStateChange]);
555
- const renderDetailsTab = () => /* @__PURE__ */ jsxs3("div", { className: "grid gap-6", "data-testid": "attribute-form-details-tab", children: [
556
- /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
557
- /* @__PURE__ */ jsx3(
558
- Form.Field,
559
- {
560
- control: form.control,
561
- name: "name",
562
- render: ({ field }) => /* @__PURE__ */ jsxs3(Form.Item, { "data-testid": "attribute-form-name-field", children: [
563
- /* @__PURE__ */ jsx3(Form.Label, { "data-testid": "attribute-form-name-label", children: t("attributes.fields.name", "Name") }),
564
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-name-control", children: /* @__PURE__ */ jsx3(
565
- Input2,
566
- {
567
- ...field,
568
- size: "small",
569
- "data-testid": "attribute-form-name-input"
570
- }
571
- ) }),
572
- /* @__PURE__ */ jsx3(Form.ErrorMessage, { "data-testid": "attribute-form-name-error" })
573
- ] })
574
- }
575
- ),
576
- /* @__PURE__ */ jsx3(
577
- Form.Field,
578
- {
579
- control: form.control,
580
- name: "handle",
581
- render: ({ field }) => /* @__PURE__ */ jsxs3(Form.Item, { "data-testid": "attribute-form-handle-field", children: [
582
- /* @__PURE__ */ jsx3(Form.Label, { optional: true, "data-testid": "attribute-form-handle-label", children: t("attributes.fields.handle", "Handle") }),
583
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-handle-control", children: /* @__PURE__ */ jsxs3("div", { className: "relative", children: [
584
- /* @__PURE__ */ jsx3(
585
- Input2,
586
- {
587
- ...field,
588
- size: "small",
589
- className: "pl-9",
590
- "data-testid": "attribute-form-handle-input"
591
- }
592
- ),
593
- /* @__PURE__ */ jsx3("div", { className: "z-100 absolute bottom-0 left-0 top-0 flex w-7 items-center justify-center border-r border-ui-border-base px-2 text-ui-fg-muted", children: "/" })
594
- ] }) }),
595
- /* @__PURE__ */ jsx3(Form.ErrorMessage, { "data-testid": "attribute-form-handle-error" })
596
- ] })
597
- }
598
- )
599
- ] }),
600
- /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-1 gap-4", children: [
601
- /* @__PURE__ */ jsx3(
602
- Form.Field,
603
- {
604
- control: form.control,
605
- name: "description",
606
- render: ({ field }) => /* @__PURE__ */ jsxs3(Form.Item, { "data-testid": "attribute-form-description-field", children: [
607
- /* @__PURE__ */ jsx3(
608
- Form.Label,
609
- {
610
- optional: true,
611
- "data-testid": "attribute-form-description-label",
612
- children: t("attributes.fields.description", "Description")
613
- }
614
- ),
615
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-description-control", children: /* @__PURE__ */ jsx3(
616
- Textarea,
617
- {
618
- ...field,
619
- "data-testid": "attribute-form-description-input"
620
- }
621
- ) }),
622
- /* @__PURE__ */ jsx3(Form.ErrorMessage, { "data-testid": "attribute-form-description-error" })
623
- ] })
624
- }
625
- ),
626
- /* @__PURE__ */ jsx3(
627
- Form.Field,
628
- {
629
- control: form.control,
630
- name: "is_filterable",
631
- render: ({ field }) => /* @__PURE__ */ jsx3(Form.Item, { "data-testid": "attribute-form-filterable-field", children: /* @__PURE__ */ jsx3("div", { className: "rounded-lg bg-ui-bg-component p-4 shadow-elevation-card-rest", children: /* @__PURE__ */ jsxs3("div", { className: "flex gap-3", children: [
632
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-filterable-control", children: /* @__PURE__ */ jsx3(
633
- Switch,
634
- {
635
- checked: field.value,
636
- onCheckedChange: field.onChange,
637
- className: "mt-1",
638
- "data-testid": "attribute-form-filterable-switch"
639
- }
640
- ) }),
641
- /* @__PURE__ */ jsxs3("div", { children: [
642
- /* @__PURE__ */ jsx3(Form.Label, { "data-testid": "attribute-form-filterable-label", children: t(
643
- "attributes.fields.isFilterable",
644
- "Yes, this is a filterable attribute"
645
- ) }),
646
- /* @__PURE__ */ jsx3(Text2, { className: "mt-1 text-xs text-ui-fg-subtle", children: t(
647
- "attributes.fields.isFilterableHint",
648
- "If checked, buyers will be able to filter products using this attribute."
649
- ) })
650
- ] })
651
- ] }) }) })
652
- }
653
- ),
654
- /* @__PURE__ */ jsx3(
655
- Form.Field,
656
- {
657
- control: form.control,
658
- name: "is_required",
659
- render: ({ field }) => /* @__PURE__ */ jsx3(Form.Item, { "data-testid": "attribute-form-required-field", children: /* @__PURE__ */ jsx3("div", { className: "rounded-lg bg-ui-bg-component p-4 shadow-elevation-card-rest", children: /* @__PURE__ */ jsxs3("div", { className: "flex gap-3", children: [
660
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-required-control", children: /* @__PURE__ */ jsx3(
661
- Switch,
662
- {
663
- checked: field.value,
664
- onCheckedChange: field.onChange,
665
- className: "mt-1",
666
- "data-testid": "attribute-form-required-switch"
667
- }
668
- ) }),
669
- /* @__PURE__ */ jsxs3("div", { children: [
670
- /* @__PURE__ */ jsx3(Form.Label, { "data-testid": "attribute-form-required-label", children: t(
671
- "attributes.fields.isRequired",
672
- "Yes, this is a required attribute"
673
- ) }),
674
- /* @__PURE__ */ jsx3(Text2, { className: "mt-1 text-xs text-ui-fg-subtle", children: t(
675
- "attributes.fields.isRequiredHint",
676
- "If checked, vendors must set a value to this attribute."
677
- ) })
678
- ] })
679
- ] }) }) })
680
- }
681
- ),
682
- /* @__PURE__ */ jsx3(
683
- Form.Field,
684
- {
685
- control: form.control,
686
- name: "product_category_ids",
687
- render: ({ field }) => {
688
- const categoryIds = field.value ?? [];
689
- const isGlobal = categoryIds.length === 0 && !showCategorySection;
690
- return /* @__PURE__ */ jsxs3(Form.Item, { "data-testid": "attribute-form-global-field", children: [
691
- /* @__PURE__ */ jsx3("div", { className: "rounded-lg bg-ui-bg-component p-4 shadow-elevation-card-rest", children: /* @__PURE__ */ jsxs3("div", { className: "flex gap-3", children: [
692
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-global-control", children: /* @__PURE__ */ jsx3(
693
- Switch,
694
- {
695
- checked: isGlobal,
696
- onCheckedChange: (checked) => {
697
- if (checked) {
698
- field.onChange([]);
699
- setShowCategorySection(false);
700
- } else {
701
- setShowCategorySection(true);
702
- }
703
- },
704
- className: "mt-1",
705
- "data-testid": "attribute-form-global-switch"
706
- }
707
- ) }),
708
- /* @__PURE__ */ jsxs3("div", { children: [
709
- /* @__PURE__ */ jsx3(Form.Label, { "data-testid": "attribute-form-global-label", children: t(
710
- "attributes.fields.global",
711
- "Yes, this is a global attribute"
712
- ) }),
713
- /* @__PURE__ */ jsx3(Text2, { className: "mt-1 text-xs text-ui-fg-subtle", children: t(
714
- "attributes.hints.global",
715
- "When enabled, this attribute applies to all products regardless of category."
716
- ) })
717
- ] })
718
- ] }) }),
719
- (showCategorySection || categoryIds.length > 0) && /* @__PURE__ */ jsxs3("div", { className: "mt-4", "data-testid": "attribute-form-category-field", children: [
720
- /* @__PURE__ */ jsx3(
721
- Form.Label,
722
- {
723
- optional: true,
724
- "data-testid": "attribute-form-category-label",
725
- children: t("attributes.fields.categories", "Product Categories")
726
- }
727
- ),
728
- /* @__PURE__ */ jsx3("div", { className: "mt-1", children: /* @__PURE__ */ jsx3(
729
- MultiSelectCategory,
730
- {
731
- categories: categories ?? [],
732
- value: categoryIds,
733
- onChange: (value) => field.onChange(value)
734
- }
735
- ) }),
736
- /* @__PURE__ */ jsx3(Form.ErrorMessage, { "data-testid": "attribute-form-category-error" }),
737
- /* @__PURE__ */ jsx3("div", { className: "mt-3", children: /* @__PURE__ */ jsx3(InlineTip, { label: "Warning", variant: "warning", children: t(
738
- "attributes.hints.categoryInheritance",
739
- "Child categories will inherit this attribute."
740
- ) }) })
741
- ] })
742
- ] });
743
- }
744
- }
745
- )
746
- ] })
747
- ] });
748
- const renderTypeTab = () => /* @__PURE__ */ jsxs3(
749
- "div",
750
- {
751
- className: "grid w-full gap-6",
752
- "data-testid": "attribute-form-type-tab",
753
- children: [
754
- /* @__PURE__ */ jsx3(
755
- Form.Field,
756
- {
757
- control: form.control,
758
- name: "ui_component",
759
- render: ({ field }) => /* @__PURE__ */ jsxs3(Form.Item, { "data-testid": "attribute-form-ui-component-field", children: [
760
- /* @__PURE__ */ jsx3(Form.Label, { "data-testid": "attribute-form-ui-component-label", children: t("attributes.fields.type", "Type") }),
761
- /* @__PURE__ */ jsx3(Form.Control, { "data-testid": "attribute-form-ui-component-control", children: /* @__PURE__ */ jsxs3(
762
- Select,
763
- {
764
- value: field.value,
765
- onValueChange: field.onChange,
766
- "data-testid": "attribute-form-ui-component-select",
767
- children: [
768
- /* @__PURE__ */ jsx3(
769
- Select.Trigger,
770
- {
771
- className: "mt-1",
772
- "data-testid": "attribute-form-ui-component-trigger",
773
- children: /* @__PURE__ */ jsx3(
774
- Select.Value,
775
- {
776
- placeholder: t(
777
- "attributes.fields.typePlaceholder",
778
- "Select Type"
779
- )
780
- }
781
- )
782
- }
783
- ),
784
- /* @__PURE__ */ jsx3(Select.Content, { "data-testid": "attribute-form-ui-component-content", children: Object.values(AttributeUIComponent).map((component) => /* @__PURE__ */ jsx3(
785
- Select.Item,
786
- {
787
- value: component,
788
- "data-testid": `attribute-form-ui-component-option-${component}`,
789
- children: UI_COMPONENT_LABELS[component] ?? component
790
- },
791
- component
792
- )) })
793
- ]
794
- }
795
- ) }),
796
- /* @__PURE__ */ jsx3(Form.ErrorMessage, { "data-testid": "attribute-form-ui-component-error" })
797
- ] })
798
- }
799
- ),
800
- (uiComponent === AttributeUIComponent.SELECT || uiComponent === AttributeUIComponent.MULTIVALUE) && /* @__PURE__ */ jsx3(InlineTip, { label: "Tip", variant: "info", children: uiComponent === AttributeUIComponent.SELECT ? t(
801
- "attributes.tips.singleSelect",
802
- "When creating Single Select vendor will be able to choose only one value. This type of attribute will be good for product specifications."
803
- ) : t(
804
- "attributes.tips.multiSelect",
805
- "When creating Multi Select vendor will be able to choose multiple values."
806
- ) }),
807
- (uiComponent === AttributeUIComponent.SELECT || uiComponent === AttributeUIComponent.MULTIVALUE) && /* @__PURE__ */ jsx3("div", { "data-testid": "attribute-form-possible-values-section", children: /* @__PURE__ */ jsx3(PossibleValuesList, {}) })
808
- ]
809
- }
810
- );
811
- return /* @__PURE__ */ jsx3(FormProvider, { ...form, children: /* @__PURE__ */ jsxs3(
812
- "form",
813
- {
814
- id: "attribute-form",
815
- onSubmit: handleSubmit,
816
- "data-testid": "attribute-form",
817
- children: [
818
- activeTab === "details" && renderDetailsTab(),
819
- activeTab === "type" && renderTypeTab()
820
- ]
821
- }
822
- ) });
823
- }
824
- );
825
- AttributeForm.displayName = "AttributeForm";
826
-
827
- // src/pages/attributes/attribute-create/attribute-create.tsx
828
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
829
- var AttributeCreateInner = () => {
830
- const { t } = useTranslation4();
831
- const { handleSuccess } = useRouteModal();
832
- const formRef = useRef2(null);
833
- const [activeTab, setActiveTab] = useState3("details");
834
- const [tabStatuses, setTabStatuses] = useState3({
835
- detailsStatus: "not-started",
836
- typeStatus: "not-started"
837
- });
838
- const { mutateAsync, isPending } = useCreateAttribute();
839
- const { product_categories: categories = [] } = useProductCategories({
840
- limit: 999
841
- });
842
- const handleSave = async (data) => {
843
- await mutateAsync(data, {
844
- onSuccess: () => {
845
- toast.success(
846
- t("attributes.create.successToast", {
847
- name: data.name
848
- })
849
- );
850
- handleSuccess("/settings/attributes");
851
- },
852
- onError: (error) => {
853
- toast.error(error.message);
854
- }
855
- });
856
- };
857
- const handleTabChange = (value) => {
858
- const newTab = value;
859
- if (newTab === "type" && tabStatuses.detailsStatus === "not-started") {
860
- toast.warning(
861
- t(
862
- "attributes.create.fillNameWarning",
863
- "Please fill in the name first."
864
- )
865
- );
866
- return;
867
- }
868
- setActiveTab(newTab);
869
- };
870
- const handleNext = async () => {
871
- if (formRef.current) {
872
- const isValid = await formRef.current.validateFields(["name"]);
873
- if (isValid) {
874
- setActiveTab("type");
875
- }
876
- } else {
877
- setActiveTab("type");
878
- }
879
- };
880
- return /* @__PURE__ */ jsxs4(
881
- ProgressTabs,
882
- {
883
- value: activeTab,
884
- onValueChange: handleTabChange,
885
- className: "flex size-full flex-col overflow-hidden",
886
- "data-testid": "attribute-create-progress-tabs",
887
- children: [
888
- /* @__PURE__ */ jsx4(
889
- RouteFocusModal.Header,
890
- {
891
- "data-testid": "attribute-create-modal-header",
892
- children: /* @__PURE__ */ jsxs4(
893
- ProgressTabs.List,
894
- {
895
- className: "justify-start flex w-full items-center",
896
- "data-testid": "attribute-create-progress-tabs-list",
897
- children: [
898
- /* @__PURE__ */ jsx4(
899
- ProgressTabs.Trigger,
900
- {
901
- value: "details",
902
- status: tabStatuses.detailsStatus,
903
- "data-testid": "attribute-create-details-tab",
904
- children: t("attributes.create.tabs.details", "Details")
905
- }
906
- ),
907
- /* @__PURE__ */ jsx4(
908
- ProgressTabs.Trigger,
909
- {
910
- value: "type",
911
- status: tabStatuses.typeStatus,
912
- "data-testid": "attribute-create-type-tab",
913
- children: t("attributes.create.tabs.type", "Type")
914
- }
915
- )
916
- ]
917
- }
918
- )
919
- }
920
- ),
921
- /* @__PURE__ */ jsx4(
922
- RouteFocusModal.Body,
923
- {
924
- className: "flex flex-1 justify-center overflow-auto px-6 py-16",
925
- "data-testid": "attribute-create-modal-body",
926
- children: /* @__PURE__ */ jsxs4("div", { className: "flex w-full max-w-[720px] flex-col gap-y-8", children: [
927
- /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-y-1", children: [
928
- /* @__PURE__ */ jsx4(RouteFocusModal.Title, { asChild: true, children: /* @__PURE__ */ jsx4(Heading, { "data-testid": "attribute-create-modal-heading", children: t("attributes.create.header", "Create Attribute") }) }),
929
- /* @__PURE__ */ jsx4(RouteFocusModal.Description, { asChild: true, children: /* @__PURE__ */ jsx4(
930
- Text3,
931
- {
932
- size: "small",
933
- className: "text-ui-fg-subtle",
934
- "data-testid": "attribute-create-modal-subtitle",
935
- children: t(
936
- "attributes.create.subtitle",
937
- "Define a new product attribute."
938
- )
939
- }
940
- ) })
941
- ] }),
942
- /* @__PURE__ */ jsx4(
943
- AttributeForm,
944
- {
945
- ref: formRef,
946
- onSubmit: handleSave,
947
- categories,
948
- mode: "create",
949
- activeTab,
950
- onFormStateChange: setTabStatuses
951
- }
952
- )
953
- ] })
954
- }
955
- ),
956
- /* @__PURE__ */ jsx4(RouteFocusModal.Footer, { "data-testid": "attribute-create-modal-footer", children: /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-end gap-2", children: [
957
- /* @__PURE__ */ jsx4(RouteFocusModal.Close, { asChild: true, children: /* @__PURE__ */ jsx4(
958
- Button2,
959
- {
960
- size: "small",
961
- variant: "secondary",
962
- type: "button",
963
- "data-testid": "attribute-create-modal-cancel-button",
964
- children: t("actions.cancel", "Cancel")
965
- }
966
- ) }),
967
- activeTab === "details" ? /* @__PURE__ */ jsx4(
968
- Button2,
969
- {
970
- size: "small",
971
- type: "button",
972
- onClick: handleNext,
973
- "data-testid": "attribute-create-modal-next-button",
974
- children: t("actions.continue", "Next")
975
- }
976
- ) : /* @__PURE__ */ jsx4(
977
- Button2,
978
- {
979
- size: "small",
980
- type: "submit",
981
- form: "attribute-form",
982
- isLoading: isPending,
983
- "data-testid": "attribute-create-modal-save-button",
984
- children: t("actions.save", "Save")
985
- }
986
- )
987
- ] }) })
988
- ]
989
- }
990
- );
991
- };
992
- var AttributeCreate = () => {
993
- return /* @__PURE__ */ jsx4(RouteFocusModal, { "data-testid": "attribute-create-modal", children: /* @__PURE__ */ jsx4(AttributeCreateInner, {}) });
994
- };
995
- export {
996
- AttributeCreate as Component
997
- };