@medusajs/dashboard 3.0.0-snapshot-20251114155958 → 3.0.0-snapshot-20251126221441

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 (253) hide show
  1. package/dist/{adjust-inventory-ZB3AVET7.mjs → adjust-inventory-WZOCLB5V.mjs} +1 -1
  2. package/dist/{api-key-management-create-U6VGZK7R.mjs → api-key-management-create-W7NL2IYN.mjs} +3 -3
  3. package/dist/{api-key-management-detail-B5XNEGKF.mjs → api-key-management-detail-3F77JKQT.mjs} +13 -13
  4. package/dist/{api-key-management-edit-TJM737A7.mjs → api-key-management-edit-TLVLXAVK.mjs} +3 -3
  5. package/dist/{api-key-management-list-ZRYMMTF5.mjs → api-key-management-list-FTLC3ELT.mjs} +3 -3
  6. package/dist/{api-key-management-sales-channels-D2RAHI7W.mjs → api-key-management-sales-channels-NYY3NZOE.mjs} +4 -4
  7. package/dist/app.css +3 -3
  8. package/dist/app.js +16021 -17376
  9. package/dist/app.mjs +11 -11
  10. package/dist/{campaign-create-IXOWJQ4L.mjs → campaign-create-LHL7FKQK.mjs} +3 -3
  11. package/dist/{campaign-detail-RCA3TBE4.mjs → campaign-detail-G2FIHVM2.mjs} +10 -10
  12. package/dist/{categories-metadata-5NBC7HX4.mjs → categories-metadata-YEF2WFML.mjs} +10 -10
  13. package/dist/{category-create-BTMZYQ5R.mjs → category-create-ELMCLH4J.mjs} +5 -5
  14. package/dist/{category-detail-RBUJVFPN.mjs → category-detail-ORXA4DBA.mjs} +14 -14
  15. package/dist/{category-edit-Q3KEELHO.mjs → category-edit-TYKLEYGE.mjs} +2 -2
  16. package/dist/{category-list-Z6HS6N75.mjs → category-list-IJ3DLPYQ.mjs} +5 -5
  17. package/dist/{category-organize-45NPSRNG.mjs → category-organize-PDLC54E2.mjs} +2 -2
  18. package/dist/{category-products-KREOO2KQ.mjs → category-products-GXTUJNT6.mjs} +13 -13
  19. package/dist/{chunk-SAZHCRHS.mjs → chunk-2PZVZSZW.mjs} +1 -1
  20. package/dist/{chunk-NFEW5CVI.mjs → chunk-3C6WQ7NH.mjs} +3 -37
  21. package/dist/{chunk-KF22R23X.mjs → chunk-3UOOSL7Y.mjs} +1 -1
  22. package/dist/{chunk-BYZSMXJ7.mjs → chunk-4DDI2KIE.mjs} +1 -1
  23. package/dist/{chunk-5N33TBBX.mjs → chunk-56TDUOXV.mjs} +1 -1
  24. package/dist/{chunk-67RC6SEX.mjs → chunk-5LGRZSEH.mjs} +1 -1
  25. package/dist/{chunk-W4TIFG3A.mjs → chunk-6KMZSZIA.mjs} +5 -5
  26. package/dist/{chunk-P23S5LDK.mjs → chunk-7V2JZU2B.mjs} +2 -2
  27. package/dist/{chunk-GHBURGZC.mjs → chunk-A6PWH2CK.mjs} +1 -1
  28. package/dist/{chunk-KJU3T6BK.mjs → chunk-AEMKNDRM.mjs} +2 -2
  29. package/dist/{chunk-QW4SQVMT.mjs → chunk-AENRV3N7.mjs} +50 -109
  30. package/dist/{chunk-O5DGX2NZ.mjs → chunk-AF7A24XI.mjs} +1 -1
  31. package/dist/{chunk-F7LJJHQT.mjs → chunk-C7F7MMXS.mjs} +1 -0
  32. package/dist/{chunk-CWIMWR6L.mjs → chunk-D6DIMX3W.mjs} +15 -15
  33. package/dist/{chunk-3RRA56WC.mjs → chunk-DODQ3KJT.mjs} +3 -8
  34. package/dist/{chunk-FJHAGJ5G.mjs → chunk-ETOJCN3Q.mjs} +1 -1
  35. package/dist/{chunk-YVQIO3JS.mjs → chunk-GYHQTVXN.mjs} +236 -318
  36. package/dist/{chunk-FNQ227BC.mjs → chunk-K5QWNI6V.mjs} +1 -1
  37. package/dist/{chunk-ZOJRDXH3.mjs → chunk-KC64IT2X.mjs} +1 -1
  38. package/dist/{chunk-K75OQ7QA.mjs → chunk-KHNOLBMA.mjs} +2 -2
  39. package/dist/{chunk-MOGV3UZD.mjs → chunk-KLNRCI3K.mjs} +1 -1
  40. package/dist/{chunk-YGEJFHC3.mjs → chunk-M3CKVBZC.mjs} +1 -1
  41. package/dist/{chunk-VW34SZWE.mjs → chunk-MDVO5GXZ.mjs} +2 -2
  42. package/dist/{chunk-7H6DB666.mjs → chunk-O4RZ3Y65.mjs} +1 -1
  43. package/dist/{chunk-5AM254NB.mjs → chunk-OFN7DIZA.mjs} +3 -83
  44. package/dist/{chunk-42TMWI76.mjs → chunk-OXPE5TAY.mjs} +1 -1
  45. package/dist/{chunk-NZNJSGGE.mjs → chunk-SIR4PJ4E.mjs} +3 -3
  46. package/dist/{chunk-QPJUVTKW.mjs → chunk-SWS2BE3M.mjs} +1 -1
  47. package/dist/{chunk-OMRGW7JS.mjs → chunk-T2ANPJ36.mjs} +3 -3
  48. package/dist/{chunk-ZE34KAKV.mjs → chunk-U63NCO35.mjs} +2 -2
  49. package/dist/{chunk-2WLOIS3L.mjs → chunk-WGRVE7KY.mjs} +21 -2
  50. package/dist/{chunk-BKJMQ6RP.mjs → chunk-WYITLR2E.mjs} +1 -1
  51. package/dist/{chunk-Y5TTJDGO.mjs → chunk-ZT7CR32D.mjs} +1 -1
  52. package/dist/{collection-add-products-KM4VO5G5.mjs → collection-add-products-D2KOVZPZ.mjs} +14 -14
  53. package/dist/{collection-create-RIGJHEX5.mjs → collection-create-I2A2X4VK.mjs} +2 -2
  54. package/dist/{collection-detail-MLVNULUS.mjs → collection-detail-ZT535E5T.mjs} +14 -14
  55. package/dist/{collection-edit-WX5G3FHR.mjs → collection-edit-RGH7NCUE.mjs} +2 -2
  56. package/dist/{collection-list-KWAHQGFE.mjs → collection-list-53JPFHPN.mjs} +23 -24
  57. package/dist/{collection-metadata-OMFOP3LA.mjs → collection-metadata-SQCA35II.mjs} +11 -11
  58. package/dist/{customer-detail-SVDGB2QD.mjs → customer-detail-W55EJ6LX.mjs} +14 -14
  59. package/dist/{customer-group-detail-OCQTI4GG.mjs → customer-group-detail-2WFTU5KU.mjs} +13 -13
  60. package/dist/{customer-group-list-K5MTMFLG.mjs → customer-group-list-GLF37WEN.mjs} +13 -13
  61. package/dist/{customers-add-customer-group-2LLBHTX3.mjs → customers-add-customer-group-KXT7RDV3.mjs} +13 -13
  62. package/dist/{edit-inventory-item-O6JLGZE4.mjs → edit-inventory-item-LMDNUI6M.mjs} +1 -1
  63. package/dist/{edit-inventory-item-attributes-AUVR3GYY.mjs → edit-inventory-item-attributes-DPJIHBP3.mjs} +1 -1
  64. package/dist/{edit-reservation-GQ6R6GVA.mjs → edit-reservation-IOOZBJ2T.mjs} +2 -2
  65. package/dist/{edit-rules-G7YMD5RC.mjs → edit-rules-7TG76PR3.mjs} +12 -12
  66. package/dist/en.json +3 -49
  67. package/dist/{inventory-create-GMFEGLE4.mjs → inventory-create-NQUETR3V.mjs} +10 -10
  68. package/dist/{inventory-detail-3BTAVXLJ.mjs → inventory-detail-ADLVUQJM.mjs} +10 -10
  69. package/dist/{inventory-list-ADJQDNX5.mjs → inventory-list-RQBI7UJX.mjs} +1 -1
  70. package/dist/{inventory-metadata-JJBXLQJG.mjs → inventory-metadata-45YATS7H.mjs} +10 -10
  71. package/dist/{inventory-stock-RHLN6ARK.mjs → inventory-stock-UG3CW3TM.mjs} +10 -10
  72. package/dist/{location-detail-F5QYFPUH.mjs → location-detail-BBPTVSP5.mjs} +15 -15
  73. package/dist/{location-fulfillment-providers-7JXNE6YT.mjs → location-fulfillment-providers-6AHWONY4.mjs} +14 -15
  74. package/dist/{location-sales-channels-JPH5BTUY.mjs → location-sales-channels-UVYT52SH.mjs} +3 -3
  75. package/dist/{location-service-zone-shipping-option-create-7VTPJAPA.mjs → location-service-zone-shipping-option-create-WEIDYZZT.mjs} +11 -11
  76. package/dist/{location-service-zone-shipping-option-edit-OYTEZGGC.mjs → location-service-zone-shipping-option-edit-TQNTCYII.mjs} +4 -4
  77. package/dist/{login-BGH5LSM4.mjs → login-VQ7YFW6V.mjs} +10 -10
  78. package/dist/{manage-locations-ATCDVTSR.mjs → manage-locations-2VDQ3ILT.mjs} +1 -1
  79. package/dist/{order-allocate-items-PHIW64XK.mjs → order-allocate-items-SSDLHV7A.mjs} +3 -3
  80. package/dist/{order-create-claim-NPQ6E5DR.mjs → order-create-claim-RAGNQ2RR.mjs} +18 -18
  81. package/dist/{order-create-edit-R4ZITC5I.mjs → order-create-edit-PRJWTWWE.mjs} +31 -16
  82. package/dist/{order-create-exchange-6XPYKVYN.mjs → order-create-exchange-DRSFEEL3.mjs} +60 -34
  83. package/dist/{order-create-fulfillment-7DVPBUES.mjs → order-create-fulfillment-URKHLFR7.mjs} +14 -14
  84. package/dist/{order-create-refund-7KEOYZTF.mjs → order-create-refund-VZG3UXLV.mjs} +15 -15
  85. package/dist/{order-create-return-J23AFCKP.mjs → order-create-return-P3OCXJSI.mjs} +6 -6
  86. package/dist/{order-create-shipment-KNXCANID.mjs → order-create-shipment-QZBUE342.mjs} +10 -10
  87. package/dist/{order-detail-7ATBL7GN.mjs → order-detail-32Y6JK42.mjs} +31 -31
  88. package/dist/{order-edit-billing-address-VS75YMUY.mjs → order-edit-billing-address-MUICLYNN.mjs} +11 -11
  89. package/dist/{order-edit-email-GEE7SF2E.mjs → order-edit-email-ADNCGCS3.mjs} +11 -11
  90. package/dist/{order-edit-shipping-address-HSRXSRLU.mjs → order-edit-shipping-address-NZF3KMVV.mjs} +11 -11
  91. package/dist/{order-list-GJTJHLZF.mjs → order-list-33SMDKZD.mjs} +5 -4
  92. package/dist/{order-metadata-LUBKP5Y4.mjs → order-metadata-UEKHMTAD.mjs} +10 -10
  93. package/dist/{order-receive-return-FLI44JN2.mjs → order-receive-return-5SB26KCQ.mjs} +11 -11
  94. package/dist/{order-request-transfer-NH2XCHMV.mjs → order-request-transfer-QS3LMEBW.mjs} +12 -12
  95. package/dist/{price-list-configuration-SS2VMD4N.mjs → price-list-configuration-CZPMKLNL.mjs} +4 -4
  96. package/dist/{price-list-create-DZR7JCDG.mjs → price-list-create-2YZRNBRI.mjs} +17 -17
  97. package/dist/{price-list-detail-4INABJQQ.mjs → price-list-detail-EGGLDH5B.mjs} +24 -20
  98. package/dist/{price-list-edit-VRI5T4W3.mjs → price-list-edit-3VNSZH4F.mjs} +2 -2
  99. package/dist/{price-list-list-S2HWTXKV.mjs → price-list-list-AU4IVCQN.mjs} +34 -18
  100. package/dist/{price-list-prices-add-DO43IEAD.mjs → price-list-prices-add-YRXYOXUG.mjs} +16 -14
  101. package/dist/{price-list-prices-edit-TRCLLGU4.mjs → price-list-prices-edit-UHOZKA75.mjs} +5 -3
  102. package/dist/{product-attributes-D6MNCAJB.mjs → product-attributes-W2PIZ6AU.mjs} +12 -12
  103. package/dist/{product-create-JQQTUEQL.mjs → product-create-UY3QXGNY.mjs} +554 -377
  104. package/dist/product-create-option-GAEPSU6J.mjs +145 -0
  105. package/dist/{product-create-variant-6UQRMACE.mjs → product-create-variant-RQEPRPG5.mjs} +11 -11
  106. package/dist/{product-detail-JMOULY3O.mjs → product-detail-FOLQUXCM.mjs} +54 -38
  107. package/dist/{product-edit-CC4OUBEC.mjs → product-edit-WRONAZ5F.mjs} +12 -12
  108. package/dist/product-edit-option-VIU3ZICO.mjs +150 -0
  109. package/dist/{product-export-BVREOXJT.mjs → product-export-ITQPBLG7.mjs} +22 -23
  110. package/dist/{product-image-variants-edit-7BBTFZO7.mjs → product-image-variants-edit-P2ZWO6DN.mjs} +10 -10
  111. package/dist/{product-import-UEXWOHOZ.mjs → product-import-WEHFNQXM.mjs} +10 -10
  112. package/dist/{product-list-RHHY3NAS.mjs → product-list-7QL2GZEA.mjs} +17 -17
  113. package/dist/{product-media-EKXMOSO4.mjs → product-media-WCLPCVR3.mjs} +2 -2
  114. package/dist/{product-metadata-DU2CNDKQ.mjs → product-metadata-LP3B3LXR.mjs} +10 -10
  115. package/dist/{product-organization-HU6YVPPV.mjs → product-organization-GKKUOJQV.mjs} +14 -14
  116. package/dist/{product-prices-UMEIS5AZ.mjs → product-prices-MKMKBH6P.mjs} +1 -1
  117. package/dist/{product-sales-channels-2SALTLTF.mjs → product-sales-channels-5YIO22UW.mjs} +3 -3
  118. package/dist/{product-shipping-profile-T4ZKHINJ.mjs → product-shipping-profile-GOESXQYV.mjs} +13 -13
  119. package/dist/{product-stock-CKBS4YDA.mjs → product-stock-KZ5NJINL.mjs} +10 -10
  120. package/dist/{product-tag-create-GFGPI7ML.mjs → product-tag-create-KOTNIDPO.mjs} +10 -10
  121. package/dist/{product-tag-detail-TTEWVF3I.mjs → product-tag-detail-4NEU4CQ4.mjs} +27 -28
  122. package/dist/{product-tag-edit-3XNTLATZ.mjs → product-tag-edit-UBVJB75M.mjs} +10 -10
  123. package/dist/{product-tag-list-24IJRVFR.mjs → product-tag-list-2JDK7DBC.mjs} +25 -26
  124. package/dist/{product-tag-metadata-JANWHZ3K.mjs → product-tag-metadata-H4QYJB5I.mjs} +10 -10
  125. package/dist/{product-type-detail-MAUHCM3C.mjs → product-type-detail-QSKBQZOO.mjs} +13 -13
  126. package/dist/{product-type-metadata-FAKUWQQF.mjs → product-type-metadata-OSGO33SD.mjs} +10 -10
  127. package/dist/{product-variant-detail-WHPECDUY.mjs → product-variant-detail-ATHRI3BX.mjs} +10 -10
  128. package/dist/{product-variant-edit-GR4RNE5G.mjs → product-variant-edit-457GNHH5.mjs} +11 -11
  129. package/dist/{product-variant-manage-inventory-items-IGDCLZQE.mjs → product-variant-manage-inventory-items-B7TUBSD5.mjs} +2 -2
  130. package/dist/{product-variant-media-EKI4BTEV.mjs → product-variant-media-6WWLRINP.mjs} +1 -1
  131. package/dist/{product-variant-metadata-DA2HKXXB.mjs → product-variant-metadata-GOUTYBDT.mjs} +10 -10
  132. package/dist/{promotion-add-campaign-DOALJUKJ.mjs → promotion-add-campaign-MKDYE7MW.mjs} +3 -3
  133. package/dist/{promotion-create-GGZULF2B.mjs → promotion-create-WCECPK2G.mjs} +18 -18
  134. package/dist/{promotion-detail-XK7U73XH.mjs → promotion-detail-JBM2LBZ4.mjs} +10 -10
  135. package/dist/{refund-reason-create-H7MHJ5C5.mjs → refund-reason-create-IAOKE37M.mjs} +10 -10
  136. package/dist/{refund-reason-edit-QY36CQVS.mjs → refund-reason-edit-D2VDINGV.mjs} +10 -10
  137. package/dist/{refund-reason-list-KSQW33QC.mjs → refund-reason-list-Q4TU7OVA.mjs} +13 -13
  138. package/dist/{region-create-UVJICJRX.mjs → region-create-QLPSK6TX.mjs} +1 -1
  139. package/dist/{region-edit-3NVXQECN.mjs → region-edit-JCJHA6TY.mjs} +1 -1
  140. package/dist/{region-metadata-4KQG6UL6.mjs → region-metadata-YLNPW7CL.mjs} +10 -10
  141. package/dist/{reservation-create-Z7TWUE2L.mjs → reservation-create-BW4CDTWR.mjs} +3 -3
  142. package/dist/{reservation-detail-W3FULMXT.mjs → reservation-detail-SMO3C2R5.mjs} +10 -10
  143. package/dist/{reservation-list-MN22JYAW.mjs → reservation-list-RGL67CIU.mjs} +2 -2
  144. package/dist/{reservation-metadata-AKAN5XNE.mjs → reservation-metadata-KU5AJF7S.mjs} +10 -10
  145. package/dist/{sales-channel-add-products-POHTQHMV.mjs → sales-channel-add-products-WGRIVVJA.mjs} +13 -13
  146. package/dist/{sales-channel-create-UFFXX5HK.mjs → sales-channel-create-TOBEDYFD.mjs} +2 -2
  147. package/dist/{sales-channel-detail-AACIFU2E.mjs → sales-channel-detail-VSTGXEZD.mjs} +13 -13
  148. package/dist/{sales-channel-edit-SP2HF4E3.mjs → sales-channel-edit-XUTE5GB5.mjs} +2 -2
  149. package/dist/{sales-channel-list-BY3KTVV6.mjs → sales-channel-list-2LXIRNZP.mjs} +11 -11
  150. package/dist/{sales-channel-metadata-KGOLI4BZ.mjs → sales-channel-metadata-RZMQYG4F.mjs} +10 -10
  151. package/dist/{shipping-option-type-create-PSQZW3RN.mjs → shipping-option-type-create-EQPBH6EA.mjs} +10 -10
  152. package/dist/{shipping-option-type-detail-WAW6TKJU.mjs → shipping-option-type-detail-BCCCVIIJ.mjs} +11 -11
  153. package/dist/{shipping-option-type-edit-2I44YHND.mjs → shipping-option-type-edit-CGTJ3HAR.mjs} +10 -10
  154. package/dist/{shipping-option-type-list-F4FRLW3P.mjs → shipping-option-type-list-3TLR4QZF.mjs} +11 -11
  155. package/dist/{shipping-profile-metadata-AZXPMPHG.mjs → shipping-profile-metadata-JSRQPOAD.mjs} +10 -10
  156. package/dist/{store-detail-AKRR64I6.mjs → store-detail-H53F5ESM.mjs} +10 -10
  157. package/dist/{store-edit-Q25HCMCQ.mjs → store-edit-3XS6IC2Z.mjs} +1 -1
  158. package/dist/{store-metadata-VLEDLAIJ.mjs → store-metadata-GHSJRHAV.mjs} +10 -10
  159. package/dist/{tax-region-create-JTM53LCS.mjs → tax-region-create-HYT3EOQO.mjs} +11 -11
  160. package/dist/{tax-region-detail-XBFYCVSH.mjs → tax-region-detail-TQS5425G.mjs} +28 -29
  161. package/dist/{tax-region-edit-2RRF7C7P.mjs → tax-region-edit-ZB36A456.mjs} +11 -11
  162. package/dist/{tax-region-province-detail-LGCYSFKE.mjs → tax-region-province-detail-CABVSQRU.mjs} +28 -29
  163. package/dist/{tax-region-tax-override-create-2W25EZNZ.mjs → tax-region-tax-override-create-ROK47GNE.mjs} +27 -28
  164. package/dist/{tax-region-tax-override-edit-ZSYNTYUG.mjs → tax-region-tax-override-edit-WRODO4LC.mjs} +26 -27
  165. package/dist/{user-detail-K5UMPO2L.mjs → user-detail-N6PT3KRP.mjs} +1 -1
  166. package/dist/{user-metadata-KOGHOQTW.mjs → user-metadata-DKZHLCPN.mjs} +10 -10
  167. package/dist/{workflow-execution-detail-4QAQ44YB.mjs → workflow-execution-detail-BQEMJSH6.mjs} +10 -10
  168. package/package.json +11 -11
  169. package/src/components/inputs/combobox/combobox.tsx +92 -173
  170. package/src/components/layout/main-layout/main-layout.tsx +4 -7
  171. package/src/dashboard-app/routes/get-route.map.tsx +12 -64
  172. package/src/hooks/api/index.ts +0 -1
  173. package/src/hooks/api/price-lists.tsx +32 -1
  174. package/src/hooks/api/products.tsx +66 -26
  175. package/src/hooks/table/filters/index.ts +0 -1
  176. package/src/i18n/translations/$schema.json +4 -172
  177. package/src/i18n/translations/en.json +3 -49
  178. package/src/routes/orders/order-create-edit/components/order-edit-create-form/order-edit-item.tsx +28 -3
  179. package/src/routes/orders/order-create-exchange/components/exchange-create-form/exchange-inbound-item.tsx +29 -4
  180. package/src/routes/orders/order-create-exchange/components/exchange-create-form/exchange-outbound-item.tsx +23 -4
  181. package/src/routes/orders/order-detail/constants.ts +1 -0
  182. package/src/routes/orders/order-list/const.ts +1 -0
  183. package/src/routes/price-lists/price-list-detail/components/price-list-general-section/price-list-general-section.tsx +10 -4
  184. package/src/routes/price-lists/price-list-list/components/price-list-list-table/price-count-cell.tsx +19 -0
  185. package/src/routes/price-lists/price-list-list/components/price-list-list-table/use-pricing-table-columns.tsx +5 -6
  186. package/src/routes/price-lists/price-list-prices-add/price-list-prices-add.tsx +4 -1
  187. package/src/routes/price-lists/price-list-prices-edit/price-list-prices-edit.tsx +3 -1
  188. package/src/routes/products/product-create/components/product-create-details-form/components/product-create-details-general-section/product-create-general-section.tsx +4 -16
  189. package/src/routes/products/product-create/components/product-create-details-form/components/product-create-details-variant-section/product-create-details-variant-section.tsx +198 -220
  190. package/src/routes/products/product-create/components/product-create-form/product-create-form.tsx +7 -4
  191. package/src/routes/products/product-create/constants.ts +0 -2
  192. package/src/routes/products/product-create/utils.ts +1 -6
  193. package/src/routes/products/product-create-option/components/create-product-option-form/create-product-option-form.tsx +122 -0
  194. package/src/routes/products/product-create-option/components/create-product-option-form/index.ts +1 -0
  195. package/src/routes/products/product-create-option/index.ts +1 -0
  196. package/src/routes/products/product-create-option/product-create-option.tsx +26 -0
  197. package/src/routes/products/product-detail/components/product-option-section/product-option-section.tsx +49 -31
  198. package/src/routes/products/product-edit-option/components/edit-product-option-form/edit-product-option-form.tsx +123 -0
  199. package/src/routes/products/product-edit-option/components/edit-product-option-form/index.ts +1 -0
  200. package/src/routes/products/product-edit-option/index.ts +1 -0
  201. package/src/routes/products/product-edit-option/product-edit-option.tsx +32 -0
  202. package/dist/chunk-ZHH3W7CN.mjs +0 -171
  203. package/dist/product-option-create-ML66ZKF3.mjs +0 -336
  204. package/dist/product-option-detail-DT7HJF5Q.mjs +0 -322
  205. package/dist/product-option-edit-GUKWRQQH.mjs +0 -324
  206. package/dist/product-option-list-KF3JSQ6Y.mjs +0 -262
  207. package/dist/product-option-metadata-BWWRRSAW.mjs +0 -71
  208. package/dist/product-options-manage-QYWBIHJA.mjs +0 -304
  209. package/src/hooks/api/product-options.tsx +0 -151
  210. package/src/hooks/table/columns/use-product-option-table-columns.tsx +0 -44
  211. package/src/hooks/table/filters/use-product-option-table-filters.tsx +0 -33
  212. package/src/hooks/table/query/use-product-option-table-query.tsx +0 -34
  213. package/src/routes/product-options/common/hooks/use-delete-product-option-action.tsx +0 -41
  214. package/src/routes/product-options/product-option-create/components/create-product-option-form/create-product-option-details.tsx +0 -71
  215. package/src/routes/product-options/product-option-create/components/create-product-option-form/create-product-option-form.tsx +0 -192
  216. package/src/routes/product-options/product-option-create/components/create-product-option-form/create-product-option-organize.tsx +0 -77
  217. package/src/routes/product-options/product-option-create/components/create-product-option-form/index.ts +0 -1
  218. package/src/routes/product-options/product-option-create/components/create-product-option-form/schema.ts +0 -15
  219. package/src/routes/product-options/product-option-create/index.ts +0 -1
  220. package/src/routes/product-options/product-option-create/product-option-create.tsx +0 -10
  221. package/src/routes/product-options/product-option-detail/breadcrumb.tsx +0 -14
  222. package/src/routes/product-options/product-option-detail/components/product-option-general-section/index.ts +0 -1
  223. package/src/routes/product-options/product-option-detail/components/product-option-general-section/product-option-general-section.tsx +0 -81
  224. package/src/routes/product-options/product-option-detail/components/product-option-product-section/index.ts +0 -1
  225. package/src/routes/product-options/product-option-detail/components/product-option-product-section/product-option-product-section.tsx +0 -74
  226. package/src/routes/product-options/product-option-detail/index.ts +0 -3
  227. package/src/routes/product-options/product-option-detail/loader.ts +0 -17
  228. package/src/routes/product-options/product-option-detail/product-option-detail.tsx +0 -50
  229. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/edit-product-option-details.tsx +0 -94
  230. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/edit-product-option-form.tsx +0 -116
  231. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/edit-product-option-organize.tsx +0 -77
  232. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/index.ts +0 -1
  233. package/src/routes/product-options/product-option-edit/components/edit-product-option-form/schema.ts +0 -13
  234. package/src/routes/product-options/product-option-edit/index.ts +0 -1
  235. package/src/routes/product-options/product-option-edit/product-option-edit.tsx +0 -34
  236. package/src/routes/product-options/product-option-list/components/product-option-list-table/index.ts +0 -1
  237. package/src/routes/product-options/product-option-list/components/product-option-list-table/product-option-list-table.tsx +0 -131
  238. package/src/routes/product-options/product-option-list/index.ts +0 -1
  239. package/src/routes/product-options/product-option-list/product-option-list.tsx +0 -19
  240. package/src/routes/product-options/product-option-metadata/index.ts +0 -1
  241. package/src/routes/product-options/product-option-metadata/product-option-metadata.tsx +0 -27
  242. package/src/routes/products/product-options-manage/components/product-options-manage-form/index.ts +0 -1
  243. package/src/routes/products/product-options-manage/components/product-options-manage-form/product-options-manage-form.tsx +0 -284
  244. package/src/routes/products/product-options-manage/index.ts +0 -1
  245. package/src/routes/products/product-options-manage/product-options-manage.tsx +0 -35
  246. package/dist/{chunk-2QH2TBJ2.mjs → chunk-ACJ3PPQJ.mjs} +3 -3
  247. package/dist/{customer-group-add-customers-2Y2GVCDV.mjs → customer-group-add-customers-QU4Q56SS.mjs} +3 -3
  248. package/dist/{customer-list-TG4D4QOT.mjs → customer-list-ZXCGIXJC.mjs} +3 -3
  249. package/dist/{location-list-ZJMZZ6T3.mjs → location-list-OYBI7EGV.mjs} +1 -1
  250. package/dist/{product-type-list-7WQ5D2KV.mjs → product-type-list-QX7QC6RI.mjs} +3 -3
  251. package/dist/{region-list-JAQXIBYD.mjs → region-list-XQRIBDMF.mjs} +3 -3
  252. package/dist/{return-reason-list-ATE2XU4H.mjs → return-reason-list-VYLLXDG4.mjs} +3 -3
  253. package/dist/{user-list-KPI3BTOA.mjs → user-list-6KATHOTJ.mjs} +3 -3
@@ -15,7 +15,7 @@ import {
15
15
  TrianglesMini,
16
16
  XMarkMini,
17
17
  } from "@medusajs/icons"
18
- import { Badge, clx, Text } from "@medusajs/ui"
18
+ import { clx, Text } from "@medusajs/ui"
19
19
  import { matchSorter } from "match-sorter"
20
20
  import {
21
21
  ComponentPropsWithoutRef,
@@ -59,7 +59,6 @@ interface ComboboxProps<T extends Value = Value>
59
59
  noResultsPlaceholder?: ReactNode
60
60
  allowClear?: boolean
61
61
  forceHideInput?: boolean // always hide input -> used for singe value select that don't have query/filter
62
- displayMode?: "count" | "chips" // how to display multiple selected values
63
62
  }
64
63
 
65
64
  const ComboboxImpl = <T extends Value = string>(
@@ -77,7 +76,6 @@ const ComboboxImpl = <T extends Value = string>(
77
76
  noResultsPlaceholder,
78
77
  allowClear,
79
78
  forceHideInput,
80
- displayMode = "count",
81
79
  ...inputProps
82
80
  }: ComboboxProps<T>,
83
81
  ref: ForwardedRef<HTMLInputElement>
@@ -145,15 +143,6 @@ const ComboboxImpl = <T extends Value = string>(
145
143
  }
146
144
  }
147
145
 
148
- const handleRemoveValue = (valueToRemove: string) => {
149
- if (!isArrayValue || !Array.isArray(selectedValues)) {
150
- return
151
- }
152
-
153
- const newValues = selectedValues.filter((v) => v !== valueToRemove) as T
154
- handleValueChange(newValues)
155
- }
156
-
157
146
  /**
158
147
  * Filter and sort the options based on the search value,
159
148
  * and whether the value is already selected.
@@ -246,179 +235,109 @@ const ComboboxImpl = <T extends Value = string>(
246
235
  startTransition(() => handleSearchChange(query))
247
236
  }}
248
237
  >
249
- {displayMode === "chips" && isArrayValue ? (
250
- <div
251
- className={clx(
252
- "relative flex cursor-pointer flex-wrap items-center gap-1.5",
253
- "min-h-8 w-full rounded-md",
254
- "bg-ui-bg-field transition-fg shadow-borders-base",
255
- "has-[input:focus]:shadow-borders-interactive-with-active",
256
- "has-[:invalid]:shadow-borders-error has-[[aria-invalid=true]]:shadow-borders-error",
257
- "has-[:disabled]:bg-ui-bg-disabled has-[:disabled]:text-ui-fg-disabled has-[:disabled]:cursor-not-allowed",
258
- "p-1",
259
- className
260
- )}
261
- >
262
- {Array.isArray(selectedValues) &&
263
- selectedValues.map((value) => {
264
- const option = options.find((o) => o.value === value)
265
- if (!option) return null
266
-
267
- return (
268
- <Badge
269
- key={value}
270
- size="2xsmall"
271
- className="gap-x-0.5 pl-1.5 pr-1 transition-fg"
272
- >
273
- {option.label}
274
- <button
275
- tabIndex={-1}
276
- type="button"
277
- onClick={(e) => {
278
- e.preventDefault()
279
- handleRemoveValue(value)
280
- }}
281
- className="text-ui-fg-subtle transition-fg outline-none"
282
- >
283
- <XMarkMini />
284
- </button>
285
- </Badge>
286
- )
287
- })}
288
- <div className="relative flex flex-1 items-center min-w-[120px]">
289
- <PrimitiveCombobox
290
- autoSelect
291
- ref={comboboxRef}
292
- onFocus={() => setOpen(true)}
238
+ <div
239
+ className={clx(
240
+ "relative flex cursor-pointer items-center gap-x-2 overflow-hidden",
241
+ "h-8 w-full rounded-md",
242
+ "bg-ui-bg-field transition-fg shadow-borders-base",
243
+ "has-[input:focus]:shadow-borders-interactive-with-active",
244
+ "has-[:invalid]:shadow-borders-error has-[[aria-invalid=true]]:shadow-borders-error",
245
+ "has-[:disabled]:bg-ui-bg-disabled has-[:disabled]:text-ui-fg-disabled has-[:disabled]:cursor-not-allowed",
246
+ className
247
+ )}
248
+ style={
249
+ {
250
+ "--tag-width": `${tagWidth}px`,
251
+ } as CSSProperties
252
+ }
253
+ >
254
+ {showTag && (
255
+ <button
256
+ type="button"
257
+ onClick={(e) => {
258
+ e.preventDefault()
259
+ handleValueChange(isArrayValue ? ([] as unknown as T) : undefined)
260
+ }}
261
+ className="bg-ui-bg-base hover:bg-ui-bg-base-hover txt-compact-small-plus text-ui-fg-subtle focus-within:border-ui-fg-interactive transition-fg absolute start-0.5 top-0.5 z-[1] flex h-[28px] items-center rounded-[4px] border py-[3px] pe-1 ps-1.5 outline-none"
262
+ >
263
+ <span className="tabular-nums">{selectedValues.length}</span>
264
+ <XMarkMini className="text-ui-fg-muted" />
265
+ </button>
266
+ )}
267
+ <div className="relative flex size-full items-center">
268
+ {showSelected && (
269
+ <div
293
270
  className={clx(
294
- "txt-compact-small text-ui-fg-base !placeholder:text-ui-fg-muted transition-fg size-full cursor-pointer bg-transparent pe-8 ps-1 outline-none focus:cursor-text"
271
+ "pointer-events-none absolute inset-y-0 flex size-full items-center",
272
+ {
273
+ "start-[calc(var(--tag-width)+8px)]": showTag,
274
+ "start-2": !showTag,
275
+ }
295
276
  )}
296
- placeholder={
297
- Array.isArray(selectedValues) && selectedValues.length > 0
298
- ? undefined
299
- : placeholder
300
- }
301
- {...inputProps}
302
- />
303
- </div>
304
- <PrimitiveComboboxDisclosure
305
- render={(props) => {
306
- return (
307
- <button
308
- {...props}
309
- type="button"
310
- className="text-ui-fg-muted transition-fg hover:bg-ui-bg-field-hover absolute end-0 top-0 flex h-8 w-8 items-center justify-center rounded-r outline-none"
311
- >
312
- <TrianglesMini />
313
- </button>
314
- )
315
- }}
316
- />
317
- </div>
318
- ) : (
319
- <div
320
- className={clx(
321
- "relative flex cursor-pointer items-center gap-x-2 overflow-hidden",
322
- "h-8 w-full rounded-md",
323
- "bg-ui-bg-field transition-fg shadow-borders-base",
324
- "has-[input:focus]:shadow-borders-interactive-with-active",
325
- "has-[:invalid]:shadow-borders-error has-[[aria-invalid=true]]:shadow-borders-error",
326
- "has-[:disabled]:bg-ui-bg-disabled has-[:disabled]:text-ui-fg-disabled has-[:disabled]:cursor-not-allowed",
327
- className
328
- )}
329
- style={
330
- {
331
- "--tag-width": `${tagWidth}px`,
332
- } as CSSProperties
333
- }
334
- >
335
- {showTag && (
336
- <button
337
- type="button"
338
- onClick={(e) => {
339
- e.preventDefault()
340
- handleValueChange(isArrayValue ? ([] as unknown as T) : undefined)
341
- }}
342
- className="bg-ui-bg-base hover:bg-ui-bg-base-hover txt-compact-small-plus text-ui-fg-subtle focus-within:border-ui-fg-interactive transition-fg absolute start-0.5 top-0.5 z-[1] flex h-[28px] items-center rounded-[4px] border py-[3px] pe-1 ps-1.5 outline-none"
343
277
  >
344
- <span className="tabular-nums">{selectedValues.length}</span>
345
- <XMarkMini className="text-ui-fg-muted" />
346
- </button>
278
+ <Text size="small" leading="compact">
279
+ {t("general.selected")}
280
+ </Text>
281
+ </div>
347
282
  )}
348
- <div className="relative flex size-full items-center">
349
- {showSelected && (
350
- <div
351
- className={clx(
352
- "pointer-events-none absolute inset-y-0 flex size-full items-center",
353
- {
354
- "start-[calc(var(--tag-width)+8px)]": showTag,
355
- "start-2": !showTag,
356
- }
357
- )}
358
- >
359
- <Text size="small" leading="compact">
360
- {t("general.selected")}
361
- </Text>
362
- </div>
363
- )}
364
- {hideInput && (
365
- <div
366
- className={clx(
367
- "pointer-events-none absolute inset-y-0 flex size-full items-center overflow-hidden",
368
- {
369
- "start-[calc(var(--tag-width)+8px)]": showTag,
370
- "start-2": !showTag,
371
- }
372
- )}
373
- >
374
- <Text size="small" leading="compact" className="truncate">
375
- {selectedLabel}
376
- </Text>
377
- </div>
378
- )}
379
- <PrimitiveCombobox
380
- autoSelect
381
- ref={comboboxRef}
382
- onFocus={() => setOpen(true)}
283
+ {hideInput && (
284
+ <div
383
285
  className={clx(
384
- "txt-compact-small text-ui-fg-base !placeholder:text-ui-fg-muted transition-fg size-full cursor-pointer bg-transparent pe-8 ps-2 outline-none focus:cursor-text",
286
+ "pointer-events-none absolute inset-y-0 flex size-full items-center overflow-hidden",
385
287
  {
386
- "opacity-0": hideInput,
387
- "ps-2": !showTag,
388
- "ps-[calc(var(--tag-width)+8px)]": showTag,
288
+ "start-[calc(var(--tag-width)+8px)]": showTag,
289
+ "start-2": !showTag,
389
290
  }
390
291
  )}
391
- placeholder={hidePlaceholder ? undefined : placeholder}
392
- {...inputProps}
393
- />
394
- </div>
395
- {allowClear && controlledValue && (
396
- <button
397
- type="button"
398
- onClick={(e) => {
399
- e.preventDefault()
400
- handleValueChange(undefined)
401
- }}
402
- className="bg-ui-bg-base hover:bg-ui-bg-base-hover txt-compact-small-plus text-ui-fg-subtle focus-within:border-ui-fg-interactive transition-fg absolute end-[28px] top-0.5 z-[1] flex h-[28px] items-center rounded-[4px] border px-1.5 py-[2px] outline-none"
403
292
  >
404
- <XMarkMini className="text-ui-fg-muted" />
405
- </button>
293
+ <Text size="small" leading="compact" className="truncate">
294
+ {selectedLabel}
295
+ </Text>
296
+ </div>
406
297
  )}
407
- <PrimitiveComboboxDisclosure
408
- render={(props) => {
409
- return (
410
- <button
411
- {...props}
412
- type="button"
413
- className="text-ui-fg-muted transition-fg hover:bg-ui-bg-field-hover absolute end-0 flex size-8 items-center justify-center rounded-r outline-none"
414
- >
415
- <TrianglesMini />
416
- </button>
417
- )
418
- }}
298
+ <PrimitiveCombobox
299
+ autoSelect
300
+ ref={comboboxRef}
301
+ onFocus={() => setOpen(true)}
302
+ className={clx(
303
+ "txt-compact-small text-ui-fg-base !placeholder:text-ui-fg-muted transition-fg size-full cursor-pointer bg-transparent pe-8 ps-2 outline-none focus:cursor-text",
304
+ "hover:bg-ui-bg-field-hover",
305
+ {
306
+ "opacity-0": hideInput,
307
+ "ps-2": !showTag,
308
+ "ps-[calc(var(--tag-width)+8px)]": showTag,
309
+ }
310
+ )}
311
+ placeholder={hidePlaceholder ? undefined : placeholder}
312
+ {...inputProps}
419
313
  />
420
314
  </div>
421
- )}
315
+ {allowClear && controlledValue && (
316
+ <button
317
+ type="button"
318
+ onClick={(e) => {
319
+ e.preventDefault()
320
+ handleValueChange(undefined)
321
+ }}
322
+ className="bg-ui-bg-base hover:bg-ui-bg-base-hover txt-compact-small-plus text-ui-fg-subtle focus-within:border-ui-fg-interactive transition-fg absolute end-[28px] top-0.5 z-[1] flex h-[28px] items-center rounded-[4px] border px-1.5 py-[2px] outline-none"
323
+ >
324
+ <XMarkMini className="text-ui-fg-muted" />
325
+ </button>
326
+ )}
327
+ <PrimitiveComboboxDisclosure
328
+ render={(props) => {
329
+ return (
330
+ <button
331
+ {...props}
332
+ type="button"
333
+ className="text-ui-fg-muted transition-fg hover:bg-ui-bg-field-hover absolute end-0 flex size-8 items-center justify-center rounded-r outline-none"
334
+ >
335
+ <TrianglesMini />
336
+ </button>
337
+ )
338
+ }}
339
+ />
340
+ </div>
422
341
  <PrimitiveComboboxPopover
423
342
  gutter={4}
424
343
  sameWidth
@@ -1,6 +1,6 @@
1
1
  import {
2
- Buildings,
3
2
  BuildingStorefront,
3
+ Buildings,
4
4
  ChevronDownMini,
5
5
  CogSixTooth,
6
6
  CurrencyDollar,
@@ -14,7 +14,7 @@ import {
14
14
  Tag,
15
15
  Users,
16
16
  } from "@medusajs/icons"
17
- import { Avatar, clx, Divider, DropdownMenu, Text } from "@medusajs/ui"
17
+ import { Avatar, Divider, DropdownMenu, Text, clx } from "@medusajs/ui"
18
18
  import { Collapsible as RadixCollapsible } from "radix-ui"
19
19
  import { useTranslation } from "react-i18next"
20
20
 
@@ -107,7 +107,8 @@ const Header = () => {
107
107
 
108
108
  return (
109
109
  <div className="w-full p-3">
110
- <DropdownMenu dir={direction}>
110
+ <DropdownMenu
111
+ dir={direction}>
111
112
  <DropdownMenu.Trigger
112
113
  disabled={!isLoaded}
113
114
  className={clx(
@@ -205,10 +206,6 @@ const useCoreRoutes = (): Omit<INavItem, "pathname">[] => {
205
206
  label: t("categories.domain"),
206
207
  to: "/categories",
207
208
  },
208
- {
209
- label: t("productOptions.domain"),
210
- to: "/product-options",
211
- },
212
209
  // TODO: Enable when domin is introduced
213
210
  // {
214
211
  // label: t("giftCards.domain"),
@@ -136,6 +136,18 @@ export function getRouteMap({
136
136
  lazy: () =>
137
137
  import("../../routes/products/product-prices"),
138
138
  },
139
+ {
140
+ path: "options/create",
141
+ lazy: () =>
142
+ import(
143
+ "../../routes/products/product-create-option"
144
+ ),
145
+ },
146
+ {
147
+ path: "options/:option_id/edit",
148
+ lazy: () =>
149
+ import("../../routes/products/product-edit-option"),
150
+ },
139
151
  {
140
152
  path: "variants/create",
141
153
  lazy: () =>
@@ -153,13 +165,6 @@ export function getRouteMap({
153
165
  lazy: () =>
154
166
  import("../../routes/products/product-metadata"),
155
167
  },
156
- {
157
- path: "options/manage",
158
- lazy: () =>
159
- import(
160
- "../../routes/products/product-options-manage"
161
- ),
162
- },
163
168
  ],
164
169
  },
165
170
  {
@@ -220,63 +225,6 @@ export function getRouteMap({
220
225
  },
221
226
  ],
222
227
  },
223
- {
224
- path: "/product-options",
225
- errorElement: <ErrorBoundary />,
226
- handle: {
227
- breadcrumb: () => t("productOptions.domain"),
228
- },
229
- children: [
230
- {
231
- path: "",
232
- lazy: () =>
233
- import("../../routes/product-options/product-option-list"),
234
- children: [
235
- {
236
- path: "create",
237
- lazy: () =>
238
- import(
239
- "../../routes/product-options/product-option-create"
240
- ),
241
- },
242
- ],
243
- },
244
- {
245
- path: ":id",
246
- lazy: async () => {
247
- const { Component, Breadcrumb, loader } = await import(
248
- "../../routes/product-options/product-option-detail"
249
- )
250
-
251
- return {
252
- Component,
253
- loader,
254
- handle: {
255
- breadcrumb: (match: UIMatch<any>) => (
256
- <Breadcrumb {...match} />
257
- ),
258
- },
259
- }
260
- },
261
- children: [
262
- {
263
- path: "edit",
264
- lazy: () =>
265
- import(
266
- "../../routes/product-options/product-option-edit"
267
- ),
268
- },
269
- {
270
- path: "metadata/edit",
271
- lazy: () =>
272
- import(
273
- "../../routes/product-options/product-option-metadata"
274
- ),
275
- },
276
- ],
277
- },
278
- ],
279
- },
280
228
  {
281
229
  path: "/categories",
282
230
  errorElement: <ErrorBoundary />,
@@ -17,7 +17,6 @@ export * from "./payment-collections"
17
17
  export * from "./payments"
18
18
  export * from "./plugins"
19
19
  export * from "./price-lists"
20
- export * from "./product-options"
21
20
  export * from "./product-types"
22
21
  export * from "./product-variants"
23
22
  export * from "./products"
@@ -14,7 +14,12 @@ import { customerGroupsQueryKeys } from "./customer-groups"
14
14
  import { productsQueryKeys } from "./products"
15
15
 
16
16
  const PRICE_LISTS_QUERY_KEY = "price-lists" as const
17
+ const PRICE_LIST_PRICES_QUERY_KEY = "price-list-prices" as const
18
+
17
19
  export const priceListsQueryKeys = queryKeysFactory(PRICE_LISTS_QUERY_KEY)
20
+ export const priceListPricesQueryKeys = queryKeysFactory(
21
+ PRICE_LIST_PRICES_QUERY_KEY
22
+ )
18
23
 
19
24
  export const usePriceList = (
20
25
  id: string,
@@ -31,7 +36,7 @@ export const usePriceList = (
31
36
  ) => {
32
37
  const { data, ...rest } = useQuery({
33
38
  queryFn: () => sdk.admin.priceList.retrieve(id, query),
34
- queryKey: priceListsQueryKeys.detail(id),
39
+ queryKey: priceListsQueryKeys.detail(id, query),
35
40
  ...options,
36
41
  })
37
42
 
@@ -124,6 +129,29 @@ export const useDeletePriceList = (
124
129
  })
125
130
  }
126
131
 
132
+ export const usePriceListPrices = (
133
+ id: string,
134
+ query?: HttpTypes.AdminPriceListPriceListParams,
135
+ options?: UseQueryOptions<
136
+ HttpTypes.AdminPriceListPriceListResponse,
137
+ FetchError,
138
+ HttpTypes.AdminPriceListPriceListResponse,
139
+ QueryKey
140
+ >
141
+ ) => {
142
+ const { data, ...rest } = useQuery({
143
+ queryFn: () =>
144
+ sdk.client.fetch<HttpTypes.AdminPriceListPriceListResponse>(
145
+ `/admin/price-lists/${id}/prices`,
146
+ { query, method: "GET" }
147
+ ),
148
+ queryKey: priceListPricesQueryKeys.detail(id, query),
149
+ ...options,
150
+ })
151
+
152
+ return { ...data, ...rest }
153
+ }
154
+
127
155
  export const useBatchPriceListPrices = (
128
156
  id: string,
129
157
  query?: HttpTypes.AdminPriceListParams,
@@ -141,6 +169,9 @@ export const useBatchPriceListPrices = (
141
169
  queryKey: priceListsQueryKeys.detail(id),
142
170
  })
143
171
  queryClient.invalidateQueries({ queryKey: productsQueryKeys.lists() })
172
+ queryClient.invalidateQueries({
173
+ queryKey: priceListPricesQueryKeys.detail(id),
174
+ })
144
175
 
145
176
  options?.onSuccess?.(data, variables, context)
146
177
  },
@@ -11,7 +11,6 @@ import { sdk } from "../../lib/client"
11
11
  import { queryClient } from "../../lib/query-client"
12
12
  import { queryKeysFactory } from "../../lib/query-key-factory"
13
13
  import { inventoryItemsQueryKeys } from "./inventory.tsx"
14
- import { productOptionsQueryKeys } from "./product-options.tsx"
15
14
 
16
15
  const PRODUCTS_QUERY_KEY = "products" as const
17
16
  export const productsQueryKeys = queryKeysFactory(PRODUCTS_QUERY_KEY)
@@ -19,6 +18,72 @@ export const productsQueryKeys = queryKeysFactory(PRODUCTS_QUERY_KEY)
19
18
  const VARIANTS_QUERY_KEY = "product_variants" as const
20
19
  export const variantsQueryKeys = queryKeysFactory(VARIANTS_QUERY_KEY)
21
20
 
21
+ const OPTIONS_QUERY_KEY = "product_options" as const
22
+ export const optionsQueryKeys = queryKeysFactory(OPTIONS_QUERY_KEY)
23
+
24
+ export const useCreateProductOption = (
25
+ productId: string,
26
+ options?: UseMutationOptions<any, FetchError, any>
27
+ ) => {
28
+ return useMutation({
29
+ mutationFn: (payload: HttpTypes.AdminCreateProductOption) =>
30
+ sdk.admin.product.createOption(productId, payload),
31
+ onSuccess: (data: any, variables: any, context: any) => {
32
+ queryClient.invalidateQueries({ queryKey: optionsQueryKeys.lists() })
33
+ queryClient.invalidateQueries({
34
+ queryKey: productsQueryKeys.detail(productId),
35
+ })
36
+ options?.onSuccess?.(data, variables, context)
37
+ },
38
+ ...options,
39
+ })
40
+ }
41
+
42
+ export const useUpdateProductOption = (
43
+ productId: string,
44
+ optionId: string,
45
+ options?: UseMutationOptions<any, FetchError, any>
46
+ ) => {
47
+ return useMutation({
48
+ mutationFn: (payload: HttpTypes.AdminUpdateProductOption) =>
49
+ sdk.admin.product.updateOption(productId, optionId, payload),
50
+ onSuccess: (data: any, variables: any, context: any) => {
51
+ queryClient.invalidateQueries({ queryKey: optionsQueryKeys.lists() })
52
+ queryClient.invalidateQueries({
53
+ queryKey: optionsQueryKeys.detail(optionId),
54
+ })
55
+ queryClient.invalidateQueries({
56
+ queryKey: productsQueryKeys.detail(productId),
57
+ })
58
+
59
+ options?.onSuccess?.(data, variables, context)
60
+ },
61
+ ...options,
62
+ })
63
+ }
64
+
65
+ export const useDeleteProductOption = (
66
+ productId: string,
67
+ optionId: string,
68
+ options?: UseMutationOptions<any, FetchError, void>
69
+ ) => {
70
+ return useMutation({
71
+ mutationFn: () => sdk.admin.product.deleteOption(productId, optionId),
72
+ onSuccess: (data: any, variables: any, context: any) => {
73
+ queryClient.invalidateQueries({ queryKey: optionsQueryKeys.lists() })
74
+ queryClient.invalidateQueries({
75
+ queryKey: optionsQueryKeys.detail(optionId),
76
+ })
77
+ queryClient.invalidateQueries({
78
+ queryKey: productsQueryKeys.detail(productId),
79
+ })
80
+
81
+ options?.onSuccess?.(data, variables, context)
82
+ },
83
+ ...options,
84
+ })
85
+ }
86
+
22
87
  export const useProductVariant = (
23
88
  productId: string,
24
89
  variantId: string,
@@ -310,31 +375,6 @@ export const useDeleteProduct = (
310
375
  })
311
376
  }
312
377
 
313
- export const useLinkProductOptions = (
314
- productId: string,
315
- options?: UseMutationOptions<
316
- HttpTypes.AdminProductResponse,
317
- FetchError,
318
- HttpTypes.AdminLinkProductOptions
319
- >
320
- ) => {
321
- return useMutation({
322
- mutationFn: (payload) => sdk.admin.product.linkOptions(productId, payload),
323
- onSuccess: (data, variables, context) => {
324
- queryClient.invalidateQueries({ queryKey: productsQueryKeys.lists() })
325
- queryClient.invalidateQueries({
326
- queryKey: productsQueryKeys.detail(productId),
327
- })
328
- queryClient.invalidateQueries({
329
- queryKey: productOptionsQueryKeys.lists(),
330
- })
331
-
332
- options?.onSuccess?.(data, variables, context)
333
- },
334
- ...options,
335
- })
336
- }
337
-
338
378
  export const useExportProducts = (
339
379
  query?: HttpTypes.AdminProductListParams,
340
380
  options?: UseMutationOptions<
@@ -4,7 +4,6 @@ export * from "./use-customer-table-filters"
4
4
  export * from "./use-date-table-filters"
5
5
  export * from "./use-order-table-filters"
6
6
  export * from "./use-product-table-filters"
7
- export * from "./use-product-option-table-filters"
8
7
  export * from "./use-product-tag-table-filters"
9
8
  export * from "./use-product-type-table-filters"
10
9
  export * from "./use-promotion-table-filters"