@mercurjs/vendor 2.2.1 → 2.3.0-canary.0

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 (204) hide show
  1. package/dist/{[id]-47SUX5X3.js → [id]-3IFUEMOA.js} +12 -9
  2. package/dist/{[id]-PIB2DEVI.js → [id]-3NM7G2QP.js} +11 -8
  3. package/dist/[id]-3TCOLUQH.js +197 -0
  4. package/dist/{[id]-SKU5SFBG.js → [id]-4IWSF6TW.js} +137 -204
  5. package/dist/{[id]-BPQNQFVE.js → [id]-AMZFAAJ3.js} +75 -124
  6. package/dist/[id]-C3TB6V2O.js +286 -0
  7. package/dist/{[id]-NGRV5I2A.js → [id]-HEDNHQ5Z.js} +8 -6
  8. package/dist/[id]-KFACDZAI.js +949 -0
  9. package/dist/{[id]-BHU5BSQT.js → [id]-KFRGBNLH.js} +19 -16
  10. package/dist/{[id]-OE5TUWNF.js → [id]-OVWD6DNG.js} +8 -6
  11. package/dist/{[id]-RJRAZN3T.js → [id]-PJ2K4O3C.js} +7 -5
  12. package/dist/{[id]-ZD5HBP2R.js → [id]-ROMWNPJA.js} +13 -10
  13. package/dist/[id]-UPNI3OCU.js +697 -0
  14. package/dist/{[id]-YB3DBBXT.js → [id]-YFLQXZGC.js} +12 -9
  15. package/dist/{[province_id]-CUWKNPBW.js → [province_id]-IM22PLJP.js} +8 -6
  16. package/dist/{add-YEUSE5QA.js → add-AUSWWCA3.js} +9 -7
  17. package/dist/{add-MYV5IOGP.js → add-MBCWT6XT.js} +157 -227
  18. package/dist/{add-customer-groups-Q3F357F2.js → add-customer-groups-3FD754Z2.js} +7 -5
  19. package/dist/{add-products-WVNYODC6.js → add-products-IS22SHHN.js} +12 -9
  20. package/dist/{add-promotions-F62YE3BE.js → add-promotions-VDD5PKMN.js} +27 -9
  21. package/dist/{add-to-campaign-WBSCTSKW.js → add-to-campaign-B3PGGNFA.js} +3 -2
  22. package/dist/{address-ZMZ4ST5T.js → address-7HSQSXUS.js} +6 -4
  23. package/dist/{adjust-inventory-QUGKDXOC.js → adjust-inventory-2OKDFVLK.js} +2 -3
  24. package/dist/{allocate-items-7NSBGXSF.js → allocate-items-QAYROQMK.js} +4 -2
  25. package/dist/{areas-EJCZBY2E.js → areas-WQ44GWQO.js} +2 -2
  26. package/dist/{breadcrumb-M657ZCG6.js → breadcrumb-4I7MU2QY.js} +1 -1
  27. package/dist/{breadcrumb-KNBZ3JNR.js → breadcrumb-7ZFC43R4.js} +1 -1
  28. package/dist/{breadcrumb-C7M5PG2Q.js → breadcrumb-IDLCUHX3.js} +6 -4
  29. package/dist/{breadcrumb-MXYWEBK6.js → breadcrumb-OXRGEOVL.js} +6 -4
  30. package/dist/{breadcrumb-JWFTKHLE.js → breadcrumb-RQ52GELM.js} +2 -1
  31. package/dist/{breadcrumb-QPV566YX.js → breadcrumb-UDSK4EUS.js} +7 -5
  32. package/dist/breadcrumb-XCPUUZUO.js +26 -0
  33. package/dist/{campaigns-BPLAE6QQ.js → campaigns-LIPKZKI7.js} +5 -4
  34. package/dist/{categories-H2XAJCGC.js → categories-D2U6VLH5.js} +2 -2
  35. package/dist/{chunk-4RVWITM2.js → chunk-3JWHERV7.js} +76 -23
  36. package/dist/{chunk-BCXREBMV.js → chunk-4ATO577Q.js} +1 -1
  37. package/dist/{chunk-VHFKJLDH.js → chunk-4JVORTN4.js} +1 -1
  38. package/dist/{chunk-HHD2VUED.js → chunk-4UKAKFKL.js} +1 -1
  39. package/dist/{chunk-3L7WHWKB.js → chunk-5DRYAIOY.js} +3 -3
  40. package/dist/{chunk-7TIZP4YG.js → chunk-5RWK4U4V.js} +26 -0
  41. package/dist/{chunk-UEKRQS5Q.js → chunk-6ECHPZS3.js} +2 -2
  42. package/dist/{chunk-IWAL74YU.js → chunk-6GQLSWOO.js} +1 -1
  43. package/dist/{chunk-HCUIYIIY.js → chunk-6OZQTHCR.js} +1 -1
  44. package/dist/chunk-6XMUN2BZ.js +0 -0
  45. package/dist/{chunk-RLRWDHME.js → chunk-6YQR2AWM.js} +3 -20
  46. package/dist/{chunk-26OOAKQ6.js → chunk-7H6NMQ6U.js} +8 -1
  47. package/dist/{chunk-SVYBMLVN.js → chunk-7J2QRH4V.js} +1 -1
  48. package/dist/chunk-7LIENHWP.js +26 -0
  49. package/dist/{chunk-EPSRO7C5.js → chunk-7LIT4GXO.js} +2 -2
  50. package/dist/chunk-7POOMBIN.js +108 -0
  51. package/dist/{chunk-SDFZUBS3.js → chunk-CDZALZ5E.js} +1 -1
  52. package/dist/{chunk-72HQFLZI.js → chunk-CSEB2RNO.js} +1 -1
  53. package/dist/{chunk-X6ZQMFCT.js → chunk-DAOSTHVB.js} +44 -25
  54. package/dist/chunk-FKKI62AC.js +282 -0
  55. package/dist/{chunk-VBKW4GWP.js → chunk-FPBXQIFJ.js} +1 -1
  56. package/dist/{chunk-SI55QRZ4.js → chunk-G5NNOOHR.js} +59 -6
  57. package/dist/chunk-G6J5ZKM3.js +31 -0
  58. package/dist/{chunk-U5V6HNVW.js → chunk-GL3XVUAY.js} +1 -1
  59. package/dist/{chunk-RJE4MAYB.js → chunk-GYLRZXWS.js} +1 -1
  60. package/dist/{chunk-3XW55FZY.js → chunk-IYQHEISY.js} +6 -6
  61. package/dist/chunk-IZI2PKL7.js +27 -0
  62. package/dist/chunk-JN6MHI6V.js +334 -0
  63. package/dist/{chunk-YUQA6TUA.js → chunk-JOCO7JOB.js} +3 -3
  64. package/dist/{chunk-OGUTFP6B.js → chunk-JYUHDM23.js} +13 -51
  65. package/dist/{chunk-QB7BI4B7.js → chunk-K2DXXPNA.js} +153 -86
  66. package/dist/{chunk-XG76XXM2.js → chunk-KKMA6VPG.js} +1 -1
  67. package/dist/chunk-KVAD5JGS.js +11 -0
  68. package/dist/{chunk-YRZ53SAN.js → chunk-L26J5MO2.js} +2 -2
  69. package/dist/{chunk-FEVCBT24.js → chunk-LOSVZJXS.js} +2 -2
  70. package/dist/{chunk-63XYNXUL.js → chunk-LYP7XK5O.js} +1 -1
  71. package/dist/chunk-MVVFD2JT.js +51 -0
  72. package/dist/{chunk-RVFPWOR2.js → chunk-MY5H7C3A.js} +2 -2
  73. package/dist/{chunk-GTNCNKTC.js → chunk-NP5TISFX.js} +1 -1
  74. package/dist/{chunk-3GSR455R.js → chunk-NQMHP2LC.js} +1 -1
  75. package/dist/{chunk-2S2WK2OG.js → chunk-NV2RZAHW.js} +1 -10
  76. package/dist/{chunk-4IIATKG7.js → chunk-O7OWHKWA.js} +6 -6
  77. package/dist/{chunk-GIKVFOQL.js → chunk-OJCMHDZI.js} +2 -2
  78. package/dist/chunk-QLOJNFUE.js +53 -0
  79. package/dist/{chunk-OKJHUQBY.js → chunk-QSS7ATY3.js} +15 -27
  80. package/dist/{chunk-XVBONKRV.js → chunk-RCMKDW6O.js} +1 -1
  81. package/dist/{chunk-WJF24CGA.js → chunk-RDLVH6CM.js} +33 -5
  82. package/dist/chunk-SF5N2HX4.js +268 -0
  83. package/dist/{chunk-MQR26KYT.js → chunk-SYHA2RVL.js} +1 -1
  84. package/dist/{chunk-ZXDMPIXN.js → chunk-U3OEGBHH.js} +2 -2
  85. package/dist/{chunk-EJBOBB4B.js → chunk-V3N2Y4OL.js} +46 -46
  86. package/dist/{chunk-UUBGLS7U.js → chunk-V43BEBDT.js} +187 -35
  87. package/dist/{chunk-VBRTC2VU.js → chunk-VAFGNDAP.js} +4 -3
  88. package/dist/{chunk-4UQMRTSC.js → chunk-VH3TGSWE.js} +46 -2
  89. package/dist/{chunk-ZEKV7LGF.js → chunk-VV2K3EBF.js} +1 -1
  90. package/dist/{chunk-S2VYK3YC.js → chunk-WI2ZAFZF.js} +1 -1
  91. package/dist/chunk-WP3B4NEU.js +32 -0
  92. package/dist/{chunk-DY3XQPHC.js → chunk-WW2XYOHJ.js} +5 -3
  93. package/dist/{chunk-IVYIMGQC.js → chunk-X44P463Q.js} +45 -10
  94. package/dist/{chunk-R5KN6IFB.js → chunk-XHWBTV72.js} +2 -2
  95. package/dist/{chunk-OVHIUZ3K.js → chunk-XQ47NZJC.js} +1 -1
  96. package/dist/{chunk-LN7XHEPJ.js → chunk-YT4RAUWM.js} +2 -2
  97. package/dist/{chunk-6VKJM537.js → chunk-ZK4DIDXG.js} +1 -1
  98. package/dist/{collections-52DJLHWW.js → collections-3MEKABDT.js} +13 -12
  99. package/dist/{configuration-UMRBE5RQ.js → configuration-QK2FW2CV.js} +2 -2
  100. package/dist/{configuration-QEDVL2WF.js → configuration-RYH3VUBV.js} +15 -48
  101. package/dist/{create-ALUKAFJS.js → create-5M66YUYY.js} +2 -2
  102. package/dist/{create-ABRPUMHQ.js → create-75C65ZIS.js} +6 -5
  103. package/dist/{create-6IRD2CVC.js → create-A3CQXIRQ.js} +11 -9
  104. package/dist/{create-LYNWCP2N.js → create-GYNDVCY2.js} +5 -4
  105. package/dist/create-ICCAEOSA.js +343 -0
  106. package/dist/{create-5RQ32XPT.js → create-KBDT33O2.js} +287 -287
  107. package/dist/{create-GEYXN6SW.js → create-L5HMOVY5.js} +6 -4
  108. package/dist/{create-MFGMTZ5A.js → create-M2W5N6QV.js} +7 -5
  109. package/dist/{create-NTZH45DW.js → create-NSJGRO4L.js} +13 -11
  110. package/dist/{create-H77ZUZG5.js → create-O4K6TO4G.js} +9 -7
  111. package/dist/{create-S7VYYTUD.js → create-PW5L3MJI.js} +9 -7
  112. package/dist/{create-7SJ5DSQK.js → create-UQ26QTPQ.js} +19 -16
  113. package/dist/{create-2I3GAX4C.js → create-WIGBFSRH.js} +15 -6
  114. package/dist/{create-7FT7N2NH.js → create-WPN3OUJU.js} +3 -2
  115. package/dist/{create-G76MVCJU.js → create-ZVGYET6W.js} +5 -4
  116. package/dist/customer-availability-VAOKKCTK.js +164 -0
  117. package/dist/{customer-group-add-customers-T7OYWJCB.js → customer-group-add-customers-BSMUKWVO.js} +1 -1
  118. package/dist/{customer-group-detail-E7HRZ3LE.js → customer-group-detail-QCPC2YWK.js} +2 -2
  119. package/dist/{customer-groups-26HJ55MF.js → customer-groups-6WGUNFHG.js} +2 -2
  120. package/dist/{customers-EXFRZX5F.js → customers-7OGYQSGA.js} +2 -2
  121. package/dist/edit-2BKYNGYL.js +262 -0
  122. package/dist/{edit-M4AP65HO.js → edit-32ZGQUWZ.js} +7 -5
  123. package/dist/{edit-MPOTIGUY.js → edit-3OXHBHY4.js} +22 -38
  124. package/dist/{edit-2RN3OT27.js → edit-7T2JMZG3.js} +7 -56
  125. package/dist/{edit-6VJWRZHQ.js → edit-AFWQY3BZ.js} +6 -4
  126. package/dist/{edit-NB5VN2E4.js → edit-EDXF3T7F.js} +4 -3
  127. package/dist/edit-GJCXPD5A.js +81 -0
  128. package/dist/{edit-WHGYNDEB.js → edit-KOLDPZ4H.js} +19 -16
  129. package/dist/{edit-TIBQEQVV.js → edit-LZFD3RSY.js} +9 -7
  130. package/dist/{edit-QBUYHSE7.js → edit-QVK3BEPA.js} +7 -5
  131. package/dist/{edit-EGBVEWXS.js → edit-ZLZR7F33.js} +8 -6
  132. package/dist/{edit-H5FJ45ZT.js → edit-ZM7NJVRE.js} +1 -1
  133. package/dist/{edit-budget-PYPHUJPW.js → edit-budget-MOZETGZV.js} +1 -1
  134. package/dist/{edit-inventory-item-BCVECCLT.js → edit-inventory-item-HFGHS732.js} +17 -14
  135. package/dist/{edit-inventory-item-attributes-GWEMP67O.js → edit-inventory-item-attributes-5ORZJF4I.js} +18 -1
  136. package/dist/edit-reservation-LSYQUDYQ.js +294 -0
  137. package/dist/extension-targets.d.ts +6 -3
  138. package/dist/{fulfillment-HDU7GATG.js → fulfillment-TVRF5TID.js} +6 -4
  139. package/dist/{fulfillment-providers-6RZNNT7U.js → fulfillment-providers-TEV23LGB.js} +11 -10
  140. package/dist/index.css +14 -14
  141. package/dist/index.js +252 -146
  142. package/dist/{inventory-XJ2E6DPC.js → inventory-CMIRAJJY.js} +2 -2
  143. package/dist/{invite-755AJC3M.js → invite-K3R2GRYF.js} +6 -4
  144. package/dist/{invite-FD2TXZTW.js → invite-ZMIYLOWJ.js} +9 -7
  145. package/dist/{login-UGKYRKMD.js → login-LG3XH6B2.js} +8 -6
  146. package/dist/{manage-locations-PRQI5TI4.js → manage-locations-5B4HP6NQ.js} +24 -5
  147. package/dist/{media-TGFAHFBV.js → media-DY2XDZYT.js} +7 -5
  148. package/dist/{media-2KEHXPRU.js → media-OGO6M3CP.js} +10 -8
  149. package/dist/{metadata-BQQFHVKF.js → metadata-AW5Y72BI.js} +6 -4
  150. package/dist/metadata-HS6CLO4Z.js +69 -0
  151. package/dist/{metadata-5TVRCKWX.js → metadata-HXXVD3VP.js} +6 -4
  152. package/dist/{metadata-7JWZ4VFM.js → metadata-TXNUZBPX.js} +6 -4
  153. package/dist/{metadata-G73TILNE.js → metadata-UVOHT2VF.js} +6 -4
  154. package/dist/{metadata-4ZZ4ZIWJ.js → metadata-ZBSZL74N.js} +6 -4
  155. package/dist/{offer-create-page-PPXRYET4.js → offer-create-page-53P65U2V.js} +11 -8
  156. package/dist/{offer-detail-page-BFGKAS4L.js → offer-detail-page-BGFLDXO7.js} +1 -1
  157. package/dist/{offer-variant-detail-page-BLHRF4MK.js → offer-variant-detail-page-DCTRZUTM.js} +1 -1
  158. package/dist/{offers-7I67VSHI.js → offers-5776XUH5.js} +13 -9
  159. package/dist/{onboarding-7MURQYXX.js → onboarding-ROLIHG3L.js} +6 -4
  160. package/dist/{orders-D7NZNDUS.js → orders-VA3HNJAY.js} +12 -11
  161. package/dist/{organization-T6ZTYMMW.js → organization-UH4IUA62.js} +8 -6
  162. package/dist/pages/index.d.ts +9 -1
  163. package/dist/pages/index.js +53 -44
  164. package/dist/{payment-details-UQ65D5AY.js → payment-details-CD4GZEUL.js} +6 -4
  165. package/dist/{payouts-A336D2HG.js → payouts-26ZOYDRP.js} +2 -2
  166. package/dist/{price-lists-3WRT4TR2.js → price-lists-U5ASDHMI.js} +5 -8
  167. package/dist/{pricing-CPPIL627.js → pricing-SWUZSQL3.js} +8 -6
  168. package/dist/{product-tags-7DTA73YT.js → product-tags-4V65LOJJ.js} +19 -16
  169. package/dist/{product-types-OB26NF2D.js → product-types-CMI33S32.js} +3 -4
  170. package/dist/{product-variant-detail-4DDE6RJ5.js → product-variant-detail-NW3LQZE7.js} +6 -4
  171. package/dist/{product-variant-edit-SAZUI4E3.js → product-variant-edit-MNYFEZND.js} +9 -7
  172. package/dist/{products-RYXTZFGT.js → products-L2H6HOL2.js} +18 -15
  173. package/dist/{products-GJ2KTGBZ.js → products-YIF6FPBO.js} +12 -9
  174. package/dist/{professional-details-UN5B4YDJ.js → professional-details-QO5BWMRD.js} +6 -4
  175. package/dist/{profile-6MIDTK52.js → profile-2KKBVKAL.js} +6 -4
  176. package/dist/{promotions-SQ47TCZL.js → promotions-C5YWXVP5.js} +5 -5
  177. package/dist/{receive-ZG6FFN7H.js → receive-RRZK3FP2.js} +4 -3
  178. package/dist/{refund-KJX74N6T.js → refund-FLCZAMPR.js} +3 -2
  179. package/dist/{register-RDSK4E4D.js → register-SZ2T6QQA.js} +8 -6
  180. package/dist/reservations-C326XEVA.js +350 -0
  181. package/dist/{reset-password-C462PDN2.js → reset-password-H66R27K4.js} +1 -1
  182. package/dist/respond-IPRDCH57.js +132 -0
  183. package/dist/{return-reasons-MY63HNF6.js → return-reasons-2BUKIQBO.js} +9 -7
  184. package/dist/reviews-LBLCFBRQ.js +14 -0
  185. package/dist/{settings-TJ6HPHMK.js → settings-THSRJ5WS.js} +26 -23
  186. package/dist/{shipment-6CTA2GHU.js → shipment-X2WWJ3AE.js} +6 -4
  187. package/dist/{shipping-profile-CFISOMTE.js → shipping-profile-7P3RPEIJ.js} +1 -1
  188. package/dist/{shipping-profiles-5UAZNYKJ.js → shipping-profiles-JPBRRMPD.js} +8 -6
  189. package/dist/{stock-465GEUY3.js → stock-UMESDWV5.js} +21 -7
  190. package/dist/{store-2PQB2XWE.js → store-5YMOSKVT.js} +7 -5
  191. package/dist/{store-closure-DYW54VHB.js → store-closure-EPGDOV7U.js} +6 -4
  192. package/dist/{store-select-6A5YR7WH.js → store-select-JEEV4V57.js} +7 -5
  193. package/dist/{team-GXEBC57M.js → team-R6ARMF73.js} +9 -7
  194. package/package.json +12 -9
  195. package/dist/[id]-HEVGSOAV.js +0 -598
  196. package/dist/[id]-MU7A6SZO.js +0 -526
  197. package/dist/chunk-2ZFELO2L.js +0 -13
  198. package/dist/chunk-6IJMSVC6.js +0 -16
  199. package/dist/chunk-BNOKKKUU.js +0 -88
  200. package/dist/chunk-BX3JE7IE.js +0 -247
  201. package/dist/edit-4B364HGZ.js +0 -222
  202. package/dist/edit-SQU5UOGE.js +0 -105
  203. package/dist/{[location_id]-OXNC5E4F.js → [location_id]-IGPM7LDR.js} +1 -1
  204. package/dist/{chunk-CYE7HVAV.js → chunk-SCJBJQCL.js} +3 -3
@@ -4,11 +4,15 @@ import {
4
4
  import {
5
5
  DateRangeDisplay
6
6
  } from "./chunk-BWGPN6XV.js";
7
+ import {
8
+ campaignStatus,
9
+ statusColor
10
+ } from "./chunk-WP3B4NEU.js";
7
11
  import {
8
12
  usePromotionTableColumns,
9
13
  usePromotionTableQuery
10
- } from "./chunk-EJBOBB4B.js";
11
- import "./chunk-GTNCNKTC.js";
14
+ } from "./chunk-V3N2Y4OL.js";
15
+ import "./chunk-NP5TISFX.js";
12
16
  import "./chunk-JHIMVLB2.js";
13
17
  import {
14
18
  usePromotionTableFilters
@@ -16,10 +20,7 @@ import {
16
20
  import "./chunk-MDABSESI.js";
17
21
  import "./chunk-FMFVTERD.js";
18
22
  import "./chunk-PHOCVOZ5.js";
19
- import {
20
- currencies
21
- } from "./chunk-IQPN4PZJ.js";
22
- import "./chunk-UUBGLS7U.js";
23
+ import "./chunk-V43BEBDT.js";
23
24
  import {
24
25
  TwoColumnPage
25
26
  } from "./chunk-YV6MK4PZ.js";
@@ -27,7 +28,7 @@ import "./chunk-FQERBIVS.js";
27
28
  import {
28
29
  _DataTable,
29
30
  useDataTable
30
- } from "./chunk-IWAL74YU.js";
31
+ } from "./chunk-6GQLSWOO.js";
31
32
  import "./chunk-YN3FGNJM.js";
32
33
  import "./chunk-KCHYLLVG.js";
33
34
  import "./chunk-3EF54XFY.js";
@@ -47,6 +48,7 @@ import {
47
48
  promotionsQueryKeys,
48
49
  useCampaign,
49
50
  useDeleteCampaign,
51
+ usePromotions,
50
52
  useRemovePromotionFromCampaign
51
53
  } from "./chunk-MR6REQKT.js";
52
54
  import {
@@ -82,83 +84,93 @@ import { useLoaderData, useParams } from "react-router-dom";
82
84
  import { WidgetZone, useLinkQuery } from "@mercurjs/dashboard-shared";
83
85
 
84
86
  // src/pages/campaigns/[id]/_components/campaign-budget/campaign-budget.tsx
85
- import { ChartPie, PencilSquare } from "@medusajs/icons";
87
+ import { ChartPie, CurrencyDollar, PencilSquare } from "@medusajs/icons";
86
88
  import { Container, Heading, Text } from "@medusajs/ui";
87
- import { Trans, useTranslation } from "react-i18next";
89
+ import { useTranslation } from "react-i18next";
88
90
  import { DisplayExtensionZone } from "@mercurjs/dashboard-shared";
89
91
  import { jsx, jsxs } from "react/jsx-runtime";
92
+ var BudgetRow = ({
93
+ label,
94
+ value,
95
+ action,
96
+ divider
97
+ }) => /* @__PURE__ */ jsx(
98
+ "div",
99
+ {
100
+ className: divider ? "border-b border-ui-border-base" : "",
101
+ children: /* @__PURE__ */ jsxs("div", { className: "bg-ui-bg-component text-ui-fg-subtle grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)_28px] items-center gap-4 px-3 py-2", children: [
102
+ /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: label }),
103
+ /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: value }),
104
+ /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: action })
105
+ ] })
106
+ }
107
+ );
90
108
  var CampaignBudget = ({ campaign }) => {
91
109
  const { t } = useTranslation();
92
- return /* @__PURE__ */ jsxs(Container, { className: "flex flex-col gap-y-4 px-6 py-4", children: [
93
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
94
- /* @__PURE__ */ jsxs("div", { className: "flex-grow", children: [
95
- /* @__PURE__ */ jsx("div", { className: "bg-ui-bg-base shadow-borders-base float-left flex size-7 items-center justify-center rounded-md", children: /* @__PURE__ */ jsx("div", { className: "bg-ui-bg-component flex size-6 items-center justify-center rounded-[4px]", children: /* @__PURE__ */ jsx(ChartPie, { className: "text-ui-fg-subtle" }) }) }),
96
- /* @__PURE__ */ jsx(
97
- Heading,
98
- {
99
- className: "text-ui-fg-subtle ml-10 mt-[1.5px] font-normal",
100
- level: "h3",
101
- children: t("campaigns.fields.budget_limit")
102
- }
103
- )
104
- ] }),
110
+ const budget = campaign.budget;
111
+ const isSpend = budget?.type === "spend";
112
+ const currency = budget?.currency_code?.toUpperCase();
113
+ const formatAmount = (amount) => isSpend && currency ? `${amount} ${currency}` : `${amount}`;
114
+ const attributeLabel = budget?.attribute ? t(`campaigns.budget.attribute.${budget.attribute}`, {
115
+ defaultValue: budget.attribute
116
+ }) : "-";
117
+ return /* @__PURE__ */ jsxs(Container, { className: "p-0", children: [
118
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-6 py-4", children: /* @__PURE__ */ jsx(Heading, { level: "h2", children: t("campaigns.budget.details") }) }),
119
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-3 px-6 pb-4", children: [
120
+ /* @__PURE__ */ jsx("div", { className: "text-ui-fg-subtle bg-ui-bg-component shadow-elevation-card-rest flex size-7 shrink-0 items-center justify-center rounded-md", children: isSpend ? /* @__PURE__ */ jsx(CurrencyDollar, {}) : /* @__PURE__ */ jsx(ChartPie, {}) }),
121
+ /* @__PURE__ */ jsxs("div", { children: [
122
+ /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: isSpend ? t("campaigns.budget.type.spend.title") : t("campaigns.budget.type.usage.title") }),
123
+ /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: isSpend ? t("campaigns.budget.type.spend.description") : t("campaigns.budget.type.usage.description") })
124
+ ] })
125
+ ] }),
126
+ /* @__PURE__ */ jsx("div", { className: "px-3 pb-3", children: /* @__PURE__ */ jsxs("div", { className: "overflow-hidden rounded-xl border border-ui-border-base", children: [
105
127
  /* @__PURE__ */ jsx(
106
- ActionMenu,
128
+ BudgetRow,
107
129
  {
108
- groups: [
130
+ label: t("campaigns.fields.total_used"),
131
+ value: formatAmount(budget?.used ?? 0),
132
+ divider: true
133
+ }
134
+ ),
135
+ /* @__PURE__ */ jsx(
136
+ BudgetRow,
137
+ {
138
+ label: t("campaigns.fields.budget_limit"),
139
+ value: budget?.limit != null ? formatAmount(budget.limit) : "-",
140
+ divider: !isSpend,
141
+ action: /* @__PURE__ */ jsx(
142
+ ActionMenu,
109
143
  {
110
- actions: [
144
+ groups: [
111
145
  {
112
- icon: /* @__PURE__ */ jsx(PencilSquare, {}),
113
- label: t("actions.edit"),
114
- to: `edit-budget`
146
+ actions: [
147
+ {
148
+ icon: /* @__PURE__ */ jsx(PencilSquare, {}),
149
+ label: t("actions.edit"),
150
+ to: "edit-budget"
151
+ }
152
+ ]
115
153
  }
116
154
  ]
117
155
  }
118
- ]
156
+ )
157
+ }
158
+ ),
159
+ !isSpend && /* @__PURE__ */ jsx(
160
+ BudgetRow,
161
+ {
162
+ label: t("campaigns.budget.fields.budgetAttribute"),
163
+ value: attributeLabel
119
164
  }
120
165
  )
121
- ] }),
122
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
123
- Text,
124
- {
125
- className: "text-ui-fg-subtle border-ui-border-strong border-l-4 pl-3",
126
- size: "small",
127
- leading: "compact",
128
- children: /* @__PURE__ */ jsx(
129
- Trans,
130
- {
131
- i18nKey: "campaigns.totalSpend",
132
- values: {
133
- amount: campaign?.budget?.limit || "no limit",
134
- currency: campaign?.budget?.type === "spend" && campaign?.budget.limit ? campaign.budget?.currency_code : ""
135
- },
136
- components: [
137
- /* @__PURE__ */ jsx(
138
- "span",
139
- {
140
- className: "text-ui-fg-base txt-compact-medium-plus text-lg"
141
- },
142
- "amount"
143
- ),
144
- /* @__PURE__ */ jsx(
145
- "span",
146
- {
147
- className: "text-ui-fg-base txt-compact-medium-plus text-lg"
148
- },
149
- "currency"
150
- )
151
- ]
152
- }
153
- )
154
- }
155
- ) }),
166
+ ] }) }),
167
+ /* @__PURE__ */ jsx(DisplayExtensionZone, { model: "campaign", zone: "spend", data: campaign }),
156
168
  /* @__PURE__ */ jsx(DisplayExtensionZone, { model: "campaign", zone: "budget", data: campaign })
157
169
  ] });
158
170
  };
159
171
 
160
172
  // src/pages/campaigns/[id]/_components/campaign-configuration-section/campaign-configuration-section.tsx
161
- import { Container as Container2, Heading as Heading2 } from "@medusajs/ui";
173
+ import { Container as Container2, Heading as Heading2, InlineTip } from "@medusajs/ui";
162
174
  import { PencilSquare as PencilSquare2 } from "@medusajs/icons";
163
175
  import { useTranslation as useTranslation2 } from "react-i18next";
164
176
  import { DisplayExtensionZone as DisplayExtensionZone2 } from "@mercurjs/dashboard-shared";
@@ -167,8 +179,8 @@ var CampaignConfigurationSection = ({
167
179
  campaign
168
180
  }) => {
169
181
  const { t } = useTranslation2();
170
- return /* @__PURE__ */ jsxs2(Container2, { className: "flex flex-col gap-y-4", children: [
171
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-between", children: [
182
+ return /* @__PURE__ */ jsxs2(Container2, { className: "p-0", children: [
183
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-between px-6 pt-6", children: [
172
184
  /* @__PURE__ */ jsx2(Heading2, { level: "h2", children: t("campaigns.configuration.header") }),
173
185
  /* @__PURE__ */ jsx2(
174
186
  ActionMenu,
@@ -187,14 +199,17 @@ var CampaignConfigurationSection = ({
187
199
  }
188
200
  )
189
201
  ] }),
190
- /* @__PURE__ */ jsx2(
191
- DateRangeDisplay,
192
- {
193
- startsAt: campaign.starts_at,
194
- endsAt: campaign.ends_at,
195
- showTime: true
196
- }
197
- ),
202
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-y-4 px-3 pb-3 pt-4", children: [
203
+ /* @__PURE__ */ jsx2(
204
+ DateRangeDisplay,
205
+ {
206
+ startsAt: campaign.starts_at,
207
+ endsAt: campaign.ends_at,
208
+ showTime: true
209
+ }
210
+ ),
211
+ /* @__PURE__ */ jsx2(InlineTip, { variant: "warning", label: t("general.warning"), children: t("campaigns.configuration.expiryWarning") })
212
+ ] }),
198
213
  /* @__PURE__ */ jsx2(
199
214
  DisplayExtensionZone2,
200
215
  {
@@ -209,7 +224,6 @@ var CampaignConfigurationSection = ({
209
224
  // src/pages/campaigns/[id]/_components/campaign-general-section/campaign-general-section.tsx
210
225
  import { PencilSquare as PencilSquare3, Trash } from "@medusajs/icons";
211
226
  import {
212
- Badge,
213
227
  Container as Container3,
214
228
  Heading as Heading3,
215
229
  StatusBadge,
@@ -220,36 +234,6 @@ import {
220
234
  import { useTranslation as useTranslation3 } from "react-i18next";
221
235
  import { useNavigate } from "react-router-dom";
222
236
  import { DisplayExtensionZone as DisplayExtensionZone3, DisplayField } from "@mercurjs/dashboard-shared";
223
-
224
- // src/pages/campaigns/common/utils/campaign-status.ts
225
- import { isAfter, isBefore } from "date-fns";
226
- function campaignStatus(campaign) {
227
- if (campaign.ends_at) {
228
- if (isBefore(new Date(campaign.ends_at), /* @__PURE__ */ new Date())) {
229
- return "expired";
230
- }
231
- }
232
- if (campaign.starts_at) {
233
- if (isAfter(new Date(campaign.starts_at), /* @__PURE__ */ new Date())) {
234
- return "scheduled";
235
- }
236
- }
237
- return "active";
238
- }
239
- var statusColor = (status) => {
240
- switch (status) {
241
- case "expired":
242
- return "red";
243
- case "scheduled":
244
- return "orange";
245
- case "active":
246
- return "green";
247
- default:
248
- return "grey";
249
- }
250
- };
251
-
252
- // src/pages/campaigns/[id]/_components/campaign-general-section/campaign-general-section.tsx
253
237
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
254
238
  var CampaignGeneralSection = ({
255
239
  campaign
@@ -326,19 +310,6 @@ var CampaignGeneralSection = ({
326
310
  )
327
311
  ] })
328
312
  ] }),
329
- /* @__PURE__ */ jsx3(
330
- DisplayField,
331
- {
332
- model: "campaign",
333
- zone: "general",
334
- id: "campaign_identifier",
335
- data: campaign,
336
- children: /* @__PURE__ */ jsxs3("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-center px-6 py-4", children: [
337
- /* @__PURE__ */ jsx3(Text2, { size: "small", leading: "compact", weight: "plus", children: t("campaigns.fields.identifier") }),
338
- /* @__PURE__ */ jsx3(Text2, { size: "small", leading: "compact", children: campaign.campaign_identifier })
339
- ] })
340
- }
341
- ),
342
313
  /* @__PURE__ */ jsx3(
343
314
  DisplayField,
344
315
  {
@@ -352,19 +323,16 @@ var CampaignGeneralSection = ({
352
323
  ] })
353
324
  }
354
325
  ),
355
- campaign?.budget && campaign.budget.type === "spend" && /* @__PURE__ */ jsx3(
326
+ /* @__PURE__ */ jsx3(
356
327
  DisplayField,
357
328
  {
358
329
  model: "campaign",
359
330
  zone: "general",
360
- id: "currency_code",
331
+ id: "campaign_identifier",
361
332
  data: campaign,
362
333
  children: /* @__PURE__ */ jsxs3("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-center px-6 py-4", children: [
363
- /* @__PURE__ */ jsx3(Text2, { size: "small", leading: "compact", weight: "plus", children: t("fields.currency") }),
364
- /* @__PURE__ */ jsxs3("div", { children: [
365
- /* @__PURE__ */ jsx3(Badge, { size: "xsmall", children: campaign?.budget.currency_code }),
366
- /* @__PURE__ */ jsx3(Text2, { className: "inline pl-3", size: "small", leading: "compact", children: currencies[campaign?.budget.currency_code?.toUpperCase()]?.name })
367
- ] })
334
+ /* @__PURE__ */ jsx3(Text2, { size: "small", leading: "compact", weight: "plus", children: t("campaigns.fields.identifier") }),
335
+ /* @__PURE__ */ jsx3(Text2, { size: "small", leading: "compact", children: campaign.campaign_identifier })
368
336
  ] })
369
337
  }
370
338
  ),
@@ -378,8 +346,7 @@ var CampaignGeneralSection = ({
378
346
  "name",
379
347
  "status",
380
348
  "campaign_identifier",
381
- "description",
382
- "currency_code"
349
+ "description"
383
350
  ]
384
351
  }
385
352
  )
@@ -388,7 +355,14 @@ var CampaignGeneralSection = ({
388
355
 
389
356
  // src/pages/campaigns/[id]/_components/campaign-promotion-section/campaign-promotion-section.tsx
390
357
  import { PencilSquare as PencilSquare4, Trash as Trash2 } from "@medusajs/icons";
391
- import { Button, Checkbox, Container as Container4, Heading as Heading4, usePrompt as usePrompt2 } from "@medusajs/ui";
358
+ import {
359
+ Button,
360
+ Checkbox,
361
+ Container as Container4,
362
+ Heading as Heading4,
363
+ toast as toast2,
364
+ usePrompt as usePrompt2
365
+ } from "@medusajs/ui";
392
366
  import { createColumnHelper } from "@tanstack/react-table";
393
367
  import { useMemo, useState } from "react";
394
368
  import { useTranslation as useTranslation4 } from "react-i18next";
@@ -403,16 +377,20 @@ var CampaignPromotionSection = ({
403
377
  const { t } = useTranslation4();
404
378
  const prompt = usePrompt2();
405
379
  const columns = useColumns();
406
- const filters = usePromotionTableFilters();
407
- const { raw } = usePromotionTableQuery({
380
+ const filters = usePromotionTableFilters().filter(
381
+ (filter) => filter.key !== "campaign_id"
382
+ );
383
+ const { raw, searchParams } = usePromotionTableQuery({
408
384
  pageSize: PAGE_SIZE
409
385
  });
410
- const promotions = campaign.promotions;
411
- const count = promotions?.length ?? 0;
386
+ const { promotions, count, isLoading } = usePromotions({
387
+ ...searchParams,
388
+ campaign_id: campaign.id
389
+ });
412
390
  const { table } = useDataTable({
413
391
  data: promotions ?? [],
414
392
  columns,
415
- count,
393
+ count: count ?? 0,
416
394
  getRowId: (row) => row.id,
417
395
  enablePagination: true,
418
396
  enableRowSelection: true,
@@ -432,7 +410,7 @@ var CampaignPromotionSection = ({
432
410
  description: t("campaigns.promotions.remove.description", {
433
411
  count: keys.length
434
412
  }),
435
- confirmText: t("actions.continue"),
413
+ confirmText: t("actions.remove"),
436
414
  cancelText: t("actions.cancel")
437
415
  });
438
416
  if (!res) {
@@ -452,6 +430,9 @@ var CampaignPromotionSection = ({
452
430
  queryClient.invalidateQueries({
453
431
  queryKey: promotionsQueryKeys.all
454
432
  });
433
+ toast2.success(
434
+ t("campaigns.promotions.toast.removed", { count: keys.length })
435
+ );
455
436
  setRowSelection({});
456
437
  };
457
438
  return /* @__PURE__ */ jsxs4(Container4, { className: "divide-y p-0", children: [
@@ -465,8 +446,8 @@ var CampaignPromotionSection = ({
465
446
  table,
466
447
  columns,
467
448
  pageSize: PAGE_SIZE,
468
- isLoading: false,
469
- count,
449
+ isLoading,
450
+ count: count ?? 0,
470
451
  navigateTo: (row) => `/promotions/${row.id}`,
471
452
  filters,
472
453
  search: true,
@@ -492,6 +473,7 @@ var CampaignPromotionSection = ({
492
473
  }
493
474
  ],
494
475
  noRecords: {
476
+ title: t("campaigns.promotions.list.noRecordsTitle"),
495
477
  message: t("campaigns.promotions.list.noRecordsMessage")
496
478
  }
497
479
  }
@@ -518,13 +500,18 @@ var PromotionActions = ({ promotion }) => {
518
500
  description: t("campaigns.promotions.remove.description", {
519
501
  count: 1
520
502
  }),
521
- confirmText: t("actions.continue"),
503
+ confirmText: t("actions.remove"),
522
504
  cancelText: t("actions.cancel")
523
505
  });
524
506
  if (!res) {
525
507
  return;
526
508
  }
527
- await mutateAsync();
509
+ await mutateAsync(void 0, {
510
+ onSuccess: () => {
511
+ toast2.success(t("campaigns.promotions.toast.removed", { count: 1 }));
512
+ },
513
+ onError: (error) => toast2.error(error.message)
514
+ });
528
515
  };
529
516
  return /* @__PURE__ */ jsx4(
530
517
  ActionMenu,
@@ -581,7 +568,7 @@ var useColumns = () => {
581
568
  );
582
569
  }
583
570
  }),
584
- ...columns,
571
+ ...columns.filter((column) => column.id !== "campaign"),
585
572
  columnHelper.display({
586
573
  id: "actions",
587
574
  cell: ({ row }) => {
@@ -593,86 +580,33 @@ var useColumns = () => {
593
580
  );
594
581
  };
595
582
 
596
- // src/pages/campaigns/[id]/_components/campaign-spend/campaign-spend.tsx
597
- import { CurrencyDollar } from "@medusajs/icons";
598
- import { Container as Container5, Heading as Heading5, Text as Text3 } from "@medusajs/ui";
599
- import { Trans as Trans2, useTranslation as useTranslation5 } from "react-i18next";
600
- import { DisplayExtensionZone as DisplayExtensionZone5 } from "@mercurjs/dashboard-shared";
601
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
602
- var CampaignSpend = ({ campaign }) => {
603
- const { t } = useTranslation5();
604
- return /* @__PURE__ */ jsxs5(Container5, { className: "flex flex-col gap-y-4 px-6 py-4", children: [
605
- /* @__PURE__ */ jsxs5("div", { className: "mb-2 grid grid-cols-[28px_1fr] items-center gap-x-3", children: [
606
- /* @__PURE__ */ jsx5("div", { className: "bg-ui-bg-base shadow-borders-base flex size-7 items-center justify-center rounded-md", children: /* @__PURE__ */ jsx5("div", { className: "bg-ui-bg-component flex size-6 items-center justify-center rounded-[4px]", children: /* @__PURE__ */ jsx5(CurrencyDollar, { className: "text-ui-fg-subtle" }) }) }),
607
- /* @__PURE__ */ jsx5(Heading5, { level: "h3", className: "text-ui-fg-subtle font-normal", children: campaign.budget?.type === "spend" ? t("campaigns.fields.total_spend") : t("campaigns.fields.total_used") })
608
- ] }),
609
- /* @__PURE__ */ jsx5("div", { children: /* @__PURE__ */ jsx5(
610
- Text3,
611
- {
612
- className: "text-ui-fg-subtle border-ui-border-strong border-l-4 pl-3",
613
- size: "small",
614
- leading: "compact",
615
- children: /* @__PURE__ */ jsx5(
616
- Trans2,
617
- {
618
- i18nKey: "campaigns.totalSpend",
619
- values: {
620
- amount: campaign?.budget?.used || 0,
621
- currency: campaign?.budget?.type === "spend" ? campaign?.budget?.currency_code : ""
622
- },
623
- components: [
624
- /* @__PURE__ */ jsx5(
625
- "span",
626
- {
627
- className: "text-ui-fg-base txt-compact-medium-plus text-lg"
628
- },
629
- "amount"
630
- ),
631
- /* @__PURE__ */ jsx5(
632
- "span",
633
- {
634
- className: "text-ui-fg-base txt-compact-medium-plus text-lg"
635
- },
636
- "currency"
637
- )
638
- ]
639
- }
640
- )
641
- }
642
- ) }),
643
- /* @__PURE__ */ jsx5(DisplayExtensionZone5, { model: "campaign", zone: "spend", data: campaign })
644
- ] });
645
- };
646
-
647
583
  // src/pages/campaigns/[id]/campaign-detail-page.tsx
648
- import { Fragment, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
584
+ import { Fragment, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
649
585
  var Root = ({ children }) => {
650
586
  const initialData = useLoaderData();
651
587
  const { id } = useParams();
652
- const { searchParams } = usePromotionTableQuery({});
653
588
  const linkQuery = useLinkQuery("campaign", CAMPAIGN_DETAIL_FIELDS);
654
589
  const { campaign, isLoading, isError, error } = useCampaign(
655
590
  id,
656
- { ...searchParams, ...linkQuery },
591
+ { ...linkQuery },
657
592
  {
658
593
  placeholderData: initialData
659
594
  }
660
595
  );
661
596
  if (isLoading || !campaign) {
662
- return /* @__PURE__ */ jsx6(TwoColumnPageSkeleton, { mainSections: 2, sidebarSections: 3 });
597
+ return /* @__PURE__ */ jsx5(TwoColumnPageSkeleton, { mainSections: 2, sidebarSections: 2 });
663
598
  }
664
599
  if (isError) {
665
600
  throw error;
666
601
  }
667
- return /* @__PURE__ */ jsx6(Fragment, { children: Children.count(children) > 0 ? children : /* @__PURE__ */ jsxs6(TwoColumnPage, { hasOutlet: true, data: campaign, children: [
668
- /* @__PURE__ */ jsx6(TwoColumnPage.Main, { children: /* @__PURE__ */ jsxs6(WidgetZone, { id: "campaigns.detail.main", data: campaign, children: [
669
- /* @__PURE__ */ jsx6(CampaignGeneralSection, { campaign }),
670
- /* @__PURE__ */ jsx6(CampaignPromotionSection, { campaign })
602
+ return /* @__PURE__ */ jsx5(Fragment, { children: Children.count(children) > 0 ? children : /* @__PURE__ */ jsxs5(TwoColumnPage, { hasOutlet: true, data: campaign, children: [
603
+ /* @__PURE__ */ jsx5(TwoColumnPage.Main, { children: /* @__PURE__ */ jsxs5(WidgetZone, { id: "campaigns.detail.main", data: campaign, children: [
604
+ /* @__PURE__ */ jsx5(CampaignGeneralSection, { campaign }),
605
+ /* @__PURE__ */ jsx5(CampaignPromotionSection, { campaign })
671
606
  ] }) }),
672
- /* @__PURE__ */ jsx6(TwoColumnPage.Sidebar, { children: /* @__PURE__ */ jsxs6(WidgetZone, { id: "campaigns.detail.side", data: campaign, children: [
673
- /* @__PURE__ */ jsx6(CampaignConfigurationSection, { campaign }),
674
- /* @__PURE__ */ jsx6(CampaignSpend, { campaign }),
675
- /* @__PURE__ */ jsx6(CampaignBudget, { campaign })
607
+ /* @__PURE__ */ jsx5(TwoColumnPage.Sidebar, { children: /* @__PURE__ */ jsxs5(WidgetZone, { id: "campaigns.detail.side", data: campaign, children: [
608
+ /* @__PURE__ */ jsx5(CampaignConfigurationSection, { campaign }),
609
+ /* @__PURE__ */ jsx5(CampaignBudget, { campaign })
676
610
  ] }) })
677
611
  ] }) });
678
612
  };
@@ -682,7 +616,6 @@ var CampaignDetailPage = Object.assign(Root, {
682
616
  MainGeneralSection: CampaignGeneralSection,
683
617
  MainPromotionSection: CampaignPromotionSection,
684
618
  SidebarConfigurationSection: CampaignConfigurationSection,
685
- SidebarSpend: CampaignSpend,
686
619
  SidebarBudget: CampaignBudget
687
620
  });
688
621
  export {