@medusajs/dashboard 2.10.4-preview-20251013090155 → 2.10.4-preview-20251013180156
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.
- package/dist/{add-campaign-promotions-ZQ7H3KCD.mjs → add-campaign-promotions-QDZCKCU6.mjs} +3 -3
- package/dist/app.js +46 -16
- package/dist/app.mjs +2 -2
- package/dist/{campaign-create-RMYCUOFT.mjs → campaign-create-XXBD33GR.mjs} +2 -2
- package/dist/{campaign-detail-SWAD2NM7.mjs → campaign-detail-EAANXYWM.mjs} +18 -6
- package/dist/{chunk-GHA6UFUO.mjs → chunk-AG6KIQLK.mjs} +18 -18
- package/dist/{chunk-XQEAV77R.mjs → chunk-AHQI2S2Z.mjs} +5 -4
- package/dist/{chunk-FDMCSOKJ.mjs → chunk-CFFXVQ3O.mjs} +1 -1
- package/dist/{chunk-EQHIGOPG.mjs → chunk-E3JEIPVS.mjs} +1 -1
- package/dist/{chunk-B7LPFYWD.mjs → chunk-J3KQDDL3.mjs} +1 -1
- package/dist/{chunk-IWDYA2EJ.mjs → chunk-MK4E5XQX.mjs} +1 -1
- package/dist/{chunk-SKJUOXJH.mjs → chunk-QGSOFMKY.mjs} +1 -1
- package/dist/{chunk-GNQ6ZW3N.mjs → chunk-SLRZEIR7.mjs} +10 -2
- package/dist/{chunk-QA5BD4VL.mjs → chunk-WYOAWFIU.mjs} +16 -7
- package/dist/{product-attributes-7HBZTULS.mjs → product-attributes-55JJDKDH.mjs} +3 -3
- package/dist/{product-create-ZY23Z5ML.mjs → product-create-L4I2E3SR.mjs} +3 -3
- package/dist/{product-detail-45B2ZY5V.mjs → product-detail-DGVVORW6.mjs} +3 -3
- package/dist/{product-edit-YKMPVNAC.mjs → product-edit-XBYPWPBY.mjs} +3 -3
- package/dist/{product-media-JEQJQ5JP.mjs → product-media-OPVI2XZ2.mjs} +2 -2
- package/dist/{product-organization-BCQLIE2Y.mjs → product-organization-QMVG3ARX.mjs} +3 -3
- package/dist/{product-shipping-profile-PH7AUB2Z.mjs → product-shipping-profile-2ZYBA25Z.mjs} +3 -3
- package/dist/{promotion-add-campaign-JLDQC3G3.mjs → promotion-add-campaign-IB6R5PGV.mjs} +2 -2
- package/dist/{promotion-create-ATRV3OCR.mjs → promotion-create-AKBRDVAQ.mjs} +3 -3
- package/dist/{promotion-detail-THEQHD4Q.mjs → promotion-detail-6QLCN3HQ.mjs} +2 -2
- package/dist/{promotion-list-75AEJGK5.mjs → promotion-list-XOEU6YSH.mjs} +3 -3
- package/dist/{reset-password-WZAI3Q5G.mjs → reset-password-HJNFHUUK.mjs} +1 -1
- package/dist/{tax-region-create-IOQK5F6G.mjs → tax-region-create-YP3PDE4R.mjs} +1 -1
- package/package.json +9 -9
- package/src/i18n/translations/$schema.json +42 -3
- package/src/i18n/translations/en.json +10 -2
- package/src/routes/campaigns/campaign-detail/components/campaign-budget/campaign-budget.tsx +17 -5
- package/src/routes/campaigns/common/components/create-campaign-form-fields/create-campaign-form-fields.tsx +5 -4
- package/src/routes/promotions/promotion-add-campaign/components/add-campaign-promotion-form/campaign-details.tsx +18 -6
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
usePromotionTableColumns,
|
3
3
|
usePromotionTableQuery
|
4
|
-
} from "./chunk-
|
5
|
-
import "./chunk-
|
4
|
+
} from "./chunk-CFFXVQ3O.mjs";
|
5
|
+
import "./chunk-J3KQDDL3.mjs";
|
6
6
|
import "./chunk-MSDRGCRR.mjs";
|
7
7
|
import "./chunk-ADOCJB6L.mjs";
|
8
8
|
import "./chunk-LQTHYS2Z.mjs";
|
@@ -30,7 +30,7 @@ import {
|
|
30
30
|
useRouteModal
|
31
31
|
} from "./chunk-AERWK3TJ.mjs";
|
32
32
|
import "./chunk-4GQOUCX6.mjs";
|
33
|
-
import "./chunk-
|
33
|
+
import "./chunk-SLRZEIR7.mjs";
|
34
34
|
import "./chunk-LPEUYMRK.mjs";
|
35
35
|
import "./chunk-OC7BQLYI.mjs";
|
36
36
|
import "./chunk-S4DMV3ZT.mjs";
|
package/dist/app.js
CHANGED
@@ -11040,6 +11040,10 @@ var init_en = __esm({
|
|
11040
11040
|
}
|
11041
11041
|
},
|
11042
11042
|
budget: {
|
11043
|
+
attribute: {
|
11044
|
+
customer_id: "customer",
|
11045
|
+
customer_email: "email"
|
11046
|
+
},
|
11043
11047
|
create: {
|
11044
11048
|
hint: "Create a budget for the campaign.",
|
11045
11049
|
header: "Campaign Budget"
|
@@ -11051,8 +11055,10 @@ var init_en = __esm({
|
|
11051
11055
|
limit: "Limit",
|
11052
11056
|
used: "Used",
|
11053
11057
|
budgetAttribute: "Limit usage per",
|
11054
|
-
budgetAttributeTooltip: "Define how many times the promotion can be used by
|
11055
|
-
totalUsedByAttribute: "Budget limit per: {{attribute}}"
|
11058
|
+
budgetAttributeTooltip: "Define how many times the promotion can be used by each customer or email.",
|
11059
|
+
totalUsedByAttribute: "Budget limit per: {{attribute}}",
|
11060
|
+
totalUsedByAttributeCustomerId: "Budget limit per customer",
|
11061
|
+
totalUsedByAttributeEmail: "Budget limit per email"
|
11056
11062
|
},
|
11057
11063
|
type: {
|
11058
11064
|
spend: {
|
@@ -11065,6 +11071,8 @@ var init_en = __esm({
|
|
11065
11071
|
},
|
11066
11072
|
useByAttribute: {
|
11067
11073
|
title: "Usage by attribute (customer id, email, etc.)",
|
11074
|
+
titleCustomerId: "Usage per customer",
|
11075
|
+
titleEmail: "Usage per email",
|
11068
11076
|
description: "Set a limit on how many times the promotion can be used by a specific attribute value."
|
11069
11077
|
}
|
11070
11078
|
},
|
@@ -139996,11 +140004,12 @@ var init_create_campaign_form_fields = __esm({
|
|
139996
140004
|
{
|
139997
140005
|
label: t5("fields.email"),
|
139998
140006
|
value: "customer_email"
|
139999
|
-
},
|
140000
|
-
{
|
140001
|
-
label: t5("fields.promotionCode"),
|
140002
|
-
value: "promotion_code"
|
140003
140007
|
}
|
140008
|
+
// TEMP disable promotion code for now
|
140009
|
+
// {
|
140010
|
+
// label: t("fields.promotionCode"),
|
140011
|
+
// value: "promotion_code",
|
140012
|
+
// },
|
140004
140013
|
]
|
140005
140014
|
},
|
140006
140015
|
"attribute"
|
@@ -140025,7 +140034,7 @@ var init_create_campaign_form_fields2 = __esm({
|
|
140025
140034
|
});
|
140026
140035
|
|
140027
140036
|
// src/routes/promotions/promotion-add-campaign/components/add-campaign-promotion-form/campaign-details.tsx
|
140028
|
-
var import_ui215, import_react192, import_react_i18next220, import_jsx_runtime296, translationKeyMap, CampaignDetails;
|
140037
|
+
var import_ui215, import_react192, import_react_i18next220, import_jsx_runtime296, translationKeyMap, getTranslationKey, CampaignDetails;
|
140029
140038
|
var init_campaign_details = __esm({
|
140030
140039
|
"src/routes/promotions/promotion-add-campaign/components/add-campaign-promotion-form/campaign-details.tsx"() {
|
140031
140040
|
"use strict";
|
@@ -140038,6 +140047,18 @@ var init_campaign_details = __esm({
|
|
140038
140047
|
usage: "usage",
|
140039
140048
|
use_by_attribute: "useByAttribute"
|
140040
140049
|
};
|
140050
|
+
getTranslationKey = (budget) => {
|
140051
|
+
const translationKey = translationKeyMap[budget?.type] || "-";
|
140052
|
+
if (budget?.type === "use_by_attribute") {
|
140053
|
+
if (budget?.attribute === "customer_id") {
|
140054
|
+
return `campaigns.budget.type.useByAttribute.titleCustomerId`;
|
140055
|
+
} else if (budget?.attribute === "customer_email") {
|
140056
|
+
return `campaigns.budget.type.useByAttribute.titleEmail`;
|
140057
|
+
}
|
140058
|
+
return `campaigns.budget.type.useByAttribute.title`;
|
140059
|
+
}
|
140060
|
+
return `campaigns.budget.type.${translationKey}.title`;
|
140061
|
+
};
|
140041
140062
|
CampaignDetails = ({ campaign }) => {
|
140042
140063
|
const { t: t5 } = (0, import_react_i18next220.useTranslation)();
|
140043
140064
|
if (!campaign) {
|
@@ -140067,12 +140088,9 @@ var init_campaign_details = __esm({
|
|
140067
140088
|
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)(import_ui215.Heading, { level: "h2", className: "mb-4", children: t5("campaigns.budget.details") }),
|
140068
140089
|
/* @__PURE__ */ (0, import_jsx_runtime296.jsxs)("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-center py-1", children: [
|
140069
140090
|
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)(import_ui215.Text, { className: "txt-small-plus font-", children: t5("campaigns.budget.fields.type") }),
|
140070
|
-
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(import_ui215.Text, { className: "txt-small truncate", children: t5(
|
140071
|
-
|
140072
|
-
|
140073
|
-
defaultValue: "-"
|
140074
|
-
}
|
140075
|
-
) }) })
|
140091
|
+
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(import_ui215.Text, { className: "txt-small truncate", children: t5(getTranslationKey(campaign.budget), {
|
140092
|
+
defaultValue: "-"
|
140093
|
+
}) }) })
|
140076
140094
|
] }),
|
140077
140095
|
/* @__PURE__ */ (0, import_jsx_runtime296.jsxs)("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-center py-1", children: [
|
140078
140096
|
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)(import_ui215.Text, { className: "txt-small-plus", children: t5("campaigns.budget.fields.currency") }),
|
@@ -143271,6 +143289,20 @@ var init_campaign_budget = __esm({
|
|
143271
143289
|
import_jsx_runtime322 = require("react/jsx-runtime");
|
143272
143290
|
CampaignBudget = ({ campaign }) => {
|
143273
143291
|
const { t: t5 } = (0, import_react_i18next238.useTranslation)();
|
143292
|
+
const getTranslation = () => {
|
143293
|
+
const budget = campaign.budget;
|
143294
|
+
if (budget?.type === "use_by_attribute") {
|
143295
|
+
if (budget?.attribute === "customer_id") {
|
143296
|
+
return t5(`campaigns.budget.fields.totalUsedByAttributeCustomerId`);
|
143297
|
+
} else if (budget?.attribute === "customer_email") {
|
143298
|
+
return t5(`campaigns.budget.fields.totalUsedByAttributeEmail`);
|
143299
|
+
}
|
143300
|
+
return t5(`campaigns.budget.fields.totalUsedByAttribute`, {
|
143301
|
+
attribute: budget?.attribute
|
143302
|
+
});
|
143303
|
+
}
|
143304
|
+
return t5(`campaigns.fields.budget_limit`);
|
143305
|
+
};
|
143274
143306
|
return /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)(import_ui230.Container, { className: "flex flex-col gap-y-4 px-6 py-4", children: [
|
143275
143307
|
/* @__PURE__ */ (0, import_jsx_runtime322.jsxs)("div", { className: "flex justify-between", children: [
|
143276
143308
|
/* @__PURE__ */ (0, import_jsx_runtime322.jsxs)("div", { className: "flex-grow", children: [
|
@@ -143280,9 +143312,7 @@ var init_campaign_budget = __esm({
|
|
143280
143312
|
{
|
143281
143313
|
className: "text-ui-fg-subtle ms-10 mt-[1.5px] font-normal",
|
143282
143314
|
level: "h3",
|
143283
|
-
children:
|
143284
|
-
attribute: campaign.budget?.attribute
|
143285
|
-
}) : t5("campaigns.fields.budget_limit")
|
143315
|
+
children: getTranslation()
|
143286
143316
|
}
|
143287
143317
|
)
|
143288
143318
|
] }),
|
package/dist/app.mjs
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
import {
|
2
2
|
DashboardApp
|
3
|
-
} from "./chunk-
|
3
|
+
} from "./chunk-AG6KIQLK.mjs";
|
4
4
|
import "./chunk-NQIC7ZFS.mjs";
|
5
5
|
import "./chunk-ONB3JEHR.mjs";
|
6
6
|
import "./chunk-VLOA5XAC.mjs";
|
7
7
|
import "./chunk-4GQOUCX6.mjs";
|
8
8
|
import "./chunk-2VTICXJR.mjs";
|
9
9
|
import "./chunk-D3YQN7HV.mjs";
|
10
|
-
import "./chunk-
|
10
|
+
import "./chunk-SLRZEIR7.mjs";
|
11
11
|
import "./chunk-MNXC6Q4F.mjs";
|
12
12
|
import "./chunk-C5P5PL3E.mjs";
|
13
13
|
import "./chunk-DG7J63J2.mjs";
|
@@ -4,8 +4,8 @@ import {
|
|
4
4
|
import {
|
5
5
|
usePromotionTableColumns,
|
6
6
|
usePromotionTableQuery
|
7
|
-
} from "./chunk-
|
8
|
-
import "./chunk-
|
7
|
+
} from "./chunk-CFFXVQ3O.mjs";
|
8
|
+
import "./chunk-J3KQDDL3.mjs";
|
9
9
|
import "./chunk-MSDRGCRR.mjs";
|
10
10
|
import "./chunk-ADOCJB6L.mjs";
|
11
11
|
import "./chunk-LQTHYS2Z.mjs";
|
@@ -31,7 +31,7 @@ import {
|
|
31
31
|
import "./chunk-C76H5USB.mjs";
|
32
32
|
import "./chunk-PFKKVLZX.mjs";
|
33
33
|
import "./chunk-4GQOUCX6.mjs";
|
34
|
-
import "./chunk-
|
34
|
+
import "./chunk-SLRZEIR7.mjs";
|
35
35
|
import {
|
36
36
|
useExtension
|
37
37
|
} from "./chunk-C5P5PL3E.mjs";
|
@@ -119,6 +119,20 @@ import { Trans, useTranslation } from "react-i18next";
|
|
119
119
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
120
120
|
var CampaignBudget = ({ campaign }) => {
|
121
121
|
const { t } = useTranslation();
|
122
|
+
const getTranslation = () => {
|
123
|
+
const budget = campaign.budget;
|
124
|
+
if (budget?.type === "use_by_attribute") {
|
125
|
+
if (budget?.attribute === "customer_id") {
|
126
|
+
return t(`campaigns.budget.fields.totalUsedByAttributeCustomerId`);
|
127
|
+
} else if (budget?.attribute === "customer_email") {
|
128
|
+
return t(`campaigns.budget.fields.totalUsedByAttributeEmail`);
|
129
|
+
}
|
130
|
+
return t(`campaigns.budget.fields.totalUsedByAttribute`, {
|
131
|
+
attribute: budget?.attribute
|
132
|
+
});
|
133
|
+
}
|
134
|
+
return t(`campaigns.fields.budget_limit`);
|
135
|
+
};
|
122
136
|
return /* @__PURE__ */ jsxs(Container, { className: "flex flex-col gap-y-4 px-6 py-4", children: [
|
123
137
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
|
124
138
|
/* @__PURE__ */ jsxs("div", { className: "flex-grow", children: [
|
@@ -128,9 +142,7 @@ var CampaignBudget = ({ campaign }) => {
|
|
128
142
|
{
|
129
143
|
className: "text-ui-fg-subtle ms-10 mt-[1.5px] font-normal",
|
130
144
|
level: "h3",
|
131
|
-
children:
|
132
|
-
attribute: campaign.budget?.attribute
|
133
|
-
}) : t("campaigns.fields.budget_limit")
|
145
|
+
children: getTranslation()
|
134
146
|
}
|
135
147
|
)
|
136
148
|
] }),
|
@@ -16,7 +16,7 @@ import {
|
|
16
16
|
} from "./chunk-D3YQN7HV.mjs";
|
17
17
|
import {
|
18
18
|
I18n
|
19
|
-
} from "./chunk-
|
19
|
+
} from "./chunk-SLRZEIR7.mjs";
|
20
20
|
import {
|
21
21
|
Thumbnail
|
22
22
|
} from "./chunk-MNXC6Q4F.mjs";
|
@@ -3248,7 +3248,7 @@ function getRouteMap({
|
|
3248
3248
|
children: [
|
3249
3249
|
{
|
3250
3250
|
path: "create",
|
3251
|
-
lazy: () => import("./product-create-
|
3251
|
+
lazy: () => import("./product-create-L4I2E3SR.mjs")
|
3252
3252
|
},
|
3253
3253
|
{
|
3254
3254
|
path: "import",
|
@@ -3264,7 +3264,7 @@ function getRouteMap({
|
|
3264
3264
|
path: ":id",
|
3265
3265
|
errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
|
3266
3266
|
lazy: async () => {
|
3267
|
-
const { Breadcrumb, loader } = await import("./product-detail-
|
3267
|
+
const { Breadcrumb, loader } = await import("./product-detail-DGVVORW6.mjs");
|
3268
3268
|
return {
|
3269
3269
|
Component: Outlet4,
|
3270
3270
|
loader,
|
@@ -3276,11 +3276,11 @@ function getRouteMap({
|
|
3276
3276
|
children: [
|
3277
3277
|
{
|
3278
3278
|
path: "",
|
3279
|
-
lazy: () => import("./product-detail-
|
3279
|
+
lazy: () => import("./product-detail-DGVVORW6.mjs"),
|
3280
3280
|
children: [
|
3281
3281
|
{
|
3282
3282
|
path: "edit",
|
3283
|
-
lazy: () => import("./product-edit-
|
3283
|
+
lazy: () => import("./product-edit-XBYPWPBY.mjs")
|
3284
3284
|
},
|
3285
3285
|
{
|
3286
3286
|
path: "edit-variant",
|
@@ -3292,19 +3292,19 @@ function getRouteMap({
|
|
3292
3292
|
},
|
3293
3293
|
{
|
3294
3294
|
path: "attributes",
|
3295
|
-
lazy: () => import("./product-attributes-
|
3295
|
+
lazy: () => import("./product-attributes-55JJDKDH.mjs")
|
3296
3296
|
},
|
3297
3297
|
{
|
3298
3298
|
path: "organization",
|
3299
|
-
lazy: () => import("./product-organization-
|
3299
|
+
lazy: () => import("./product-organization-QMVG3ARX.mjs")
|
3300
3300
|
},
|
3301
3301
|
{
|
3302
3302
|
path: "shipping-profile",
|
3303
|
-
lazy: () => import("./product-shipping-profile-
|
3303
|
+
lazy: () => import("./product-shipping-profile-2ZYBA25Z.mjs")
|
3304
3304
|
},
|
3305
3305
|
{
|
3306
3306
|
path: "media",
|
3307
|
-
lazy: () => import("./product-media-
|
3307
|
+
lazy: () => import("./product-media-OPVI2XZ2.mjs")
|
3308
3308
|
},
|
3309
3309
|
{
|
3310
3310
|
path: "prices",
|
@@ -3514,16 +3514,16 @@ function getRouteMap({
|
|
3514
3514
|
children: [
|
3515
3515
|
{
|
3516
3516
|
path: "",
|
3517
|
-
lazy: () => import("./promotion-list-
|
3517
|
+
lazy: () => import("./promotion-list-XOEU6YSH.mjs")
|
3518
3518
|
},
|
3519
3519
|
{
|
3520
3520
|
path: "create",
|
3521
|
-
lazy: () => import("./promotion-create-
|
3521
|
+
lazy: () => import("./promotion-create-AKBRDVAQ.mjs")
|
3522
3522
|
},
|
3523
3523
|
{
|
3524
3524
|
path: ":id",
|
3525
3525
|
lazy: async () => {
|
3526
|
-
const { Component, Breadcrumb, loader } = await import("./promotion-detail-
|
3526
|
+
const { Component, Breadcrumb, loader } = await import("./promotion-detail-6QLCN3HQ.mjs");
|
3527
3527
|
return {
|
3528
3528
|
Component,
|
3529
3529
|
loader,
|
@@ -3539,7 +3539,7 @@ function getRouteMap({
|
|
3539
3539
|
},
|
3540
3540
|
{
|
3541
3541
|
path: "add-to-campaign",
|
3542
|
-
lazy: () => import("./promotion-add-campaign-
|
3542
|
+
lazy: () => import("./promotion-add-campaign-IB6R5PGV.mjs")
|
3543
3543
|
},
|
3544
3544
|
{
|
3545
3545
|
path: ":ruleType/edit",
|
@@ -3563,12 +3563,12 @@ function getRouteMap({
|
|
3563
3563
|
},
|
3564
3564
|
{
|
3565
3565
|
path: "create",
|
3566
|
-
lazy: () => import("./campaign-create-
|
3566
|
+
lazy: () => import("./campaign-create-XXBD33GR.mjs")
|
3567
3567
|
},
|
3568
3568
|
{
|
3569
3569
|
path: ":id",
|
3570
3570
|
lazy: async () => {
|
3571
|
-
const { Component, Breadcrumb, loader } = await import("./campaign-detail-
|
3571
|
+
const { Component, Breadcrumb, loader } = await import("./campaign-detail-EAANXYWM.mjs");
|
3572
3572
|
return {
|
3573
3573
|
Component,
|
3574
3574
|
loader,
|
@@ -3592,7 +3592,7 @@ function getRouteMap({
|
|
3592
3592
|
},
|
3593
3593
|
{
|
3594
3594
|
path: "add-promotions",
|
3595
|
-
lazy: () => import("./add-campaign-promotions-
|
3595
|
+
lazy: () => import("./add-campaign-promotions-QDZCKCU6.mjs")
|
3596
3596
|
}
|
3597
3597
|
]
|
3598
3598
|
}
|
@@ -4472,7 +4472,7 @@ function getRouteMap({
|
|
4472
4472
|
children: [
|
4473
4473
|
{
|
4474
4474
|
path: "create",
|
4475
|
-
lazy: () => import("./tax-region-create-
|
4475
|
+
lazy: () => import("./tax-region-create-YP3PDE4R.mjs")
|
4476
4476
|
}
|
4477
4477
|
]
|
4478
4478
|
},
|
@@ -4627,7 +4627,7 @@ function getRouteMap({
|
|
4627
4627
|
},
|
4628
4628
|
{
|
4629
4629
|
path: "/reset-password",
|
4630
|
-
lazy: () => import("./reset-password-
|
4630
|
+
lazy: () => import("./reset-password-HJNFHUUK.mjs")
|
4631
4631
|
},
|
4632
4632
|
{
|
4633
4633
|
path: "/invite",
|
@@ -336,11 +336,12 @@ var CreateCampaignFormFields = ({ form, fieldScope = "" }) => {
|
|
336
336
|
{
|
337
337
|
label: t("fields.email"),
|
338
338
|
value: "customer_email"
|
339
|
-
},
|
340
|
-
{
|
341
|
-
label: t("fields.promotionCode"),
|
342
|
-
value: "promotion_code"
|
343
339
|
}
|
340
|
+
// TEMP disable promotion code for now
|
341
|
+
// {
|
342
|
+
// label: t("fields.promotionCode"),
|
343
|
+
// value: "promotion_code",
|
344
|
+
// },
|
344
345
|
]
|
345
346
|
},
|
346
347
|
"attribute"
|
@@ -10990,6 +10990,10 @@ var en_default = {
|
|
10990
10990
|
}
|
10991
10991
|
},
|
10992
10992
|
budget: {
|
10993
|
+
attribute: {
|
10994
|
+
customer_id: "customer",
|
10995
|
+
customer_email: "email"
|
10996
|
+
},
|
10993
10997
|
create: {
|
10994
10998
|
hint: "Create a budget for the campaign.",
|
10995
10999
|
header: "Campaign Budget"
|
@@ -11001,8 +11005,10 @@ var en_default = {
|
|
11001
11005
|
limit: "Limit",
|
11002
11006
|
used: "Used",
|
11003
11007
|
budgetAttribute: "Limit usage per",
|
11004
|
-
budgetAttributeTooltip: "Define how many times the promotion can be used by
|
11005
|
-
totalUsedByAttribute: "Budget limit per: {{attribute}}"
|
11008
|
+
budgetAttributeTooltip: "Define how many times the promotion can be used by each customer or email.",
|
11009
|
+
totalUsedByAttribute: "Budget limit per: {{attribute}}",
|
11010
|
+
totalUsedByAttributeCustomerId: "Budget limit per customer",
|
11011
|
+
totalUsedByAttributeEmail: "Budget limit per email"
|
11006
11012
|
},
|
11007
11013
|
type: {
|
11008
11014
|
spend: {
|
@@ -11015,6 +11021,8 @@ var en_default = {
|
|
11015
11021
|
},
|
11016
11022
|
useByAttribute: {
|
11017
11023
|
title: "Usage by attribute (customer id, email, etc.)",
|
11024
|
+
titleCustomerId: "Usage per customer",
|
11025
|
+
titleEmail: "Usage per email",
|
11018
11026
|
description: "Set a limit on how many times the promotion can be used by a specific attribute value."
|
11019
11027
|
}
|
11020
11028
|
},
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {
|
2
2
|
CreateCampaignFormFields
|
3
|
-
} from "./chunk-
|
3
|
+
} from "./chunk-AHQI2S2Z.mjs";
|
4
4
|
import {
|
5
5
|
useComboboxData
|
6
6
|
} from "./chunk-HFB3OQXI.mjs";
|
@@ -46,6 +46,18 @@ var translationKeyMap = {
|
|
46
46
|
usage: "usage",
|
47
47
|
use_by_attribute: "useByAttribute"
|
48
48
|
};
|
49
|
+
var getTranslationKey = (budget) => {
|
50
|
+
const translationKey = translationKeyMap[budget?.type] || "-";
|
51
|
+
if (budget?.type === "use_by_attribute") {
|
52
|
+
if (budget?.attribute === "customer_id") {
|
53
|
+
return `campaigns.budget.type.useByAttribute.titleCustomerId`;
|
54
|
+
} else if (budget?.attribute === "customer_email") {
|
55
|
+
return `campaigns.budget.type.useByAttribute.titleEmail`;
|
56
|
+
}
|
57
|
+
return `campaigns.budget.type.useByAttribute.title`;
|
58
|
+
}
|
59
|
+
return `campaigns.budget.type.${translationKey}.title`;
|
60
|
+
};
|
49
61
|
var CampaignDetails = ({ campaign }) => {
|
50
62
|
const { t } = useTranslation();
|
51
63
|
if (!campaign) {
|
@@ -75,12 +87,9 @@ var CampaignDetails = ({ campaign }) => {
|
|
75
87
|
/* @__PURE__ */ jsx(Heading, { level: "h2", className: "mb-4", children: t("campaigns.budget.details") }),
|
76
88
|
/* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-center py-1", children: [
|
77
89
|
/* @__PURE__ */ jsx(Text, { className: "txt-small-plus font-", children: t("campaigns.budget.fields.type") }),
|
78
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsx(Text, { className: "txt-small truncate", children: t(
|
79
|
-
|
80
|
-
|
81
|
-
defaultValue: "-"
|
82
|
-
}
|
83
|
-
) }) })
|
90
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsx(Text, { className: "txt-small truncate", children: t(getTranslationKey(campaign.budget), {
|
91
|
+
defaultValue: "-"
|
92
|
+
}) }) })
|
84
93
|
] }),
|
85
94
|
/* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle grid grid-cols-2 items-center py-1", children: [
|
86
95
|
/* @__PURE__ */ jsx(Text, { className: "txt-small-plus", children: t("campaigns.budget.fields.currency") }),
|
@@ -12,18 +12,18 @@ import {
|
|
12
12
|
} from "./chunk-AERWK3TJ.mjs";
|
13
13
|
import {
|
14
14
|
PRODUCT_DETAIL_FIELDS
|
15
|
-
} from "./chunk-
|
15
|
+
} from "./chunk-QGSOFMKY.mjs";
|
16
16
|
import {
|
17
17
|
FormExtensionZone,
|
18
18
|
useExtendableForm
|
19
|
-
} from "./chunk-
|
19
|
+
} from "./chunk-AG6KIQLK.mjs";
|
20
20
|
import "./chunk-NQIC7ZFS.mjs";
|
21
21
|
import "./chunk-ONB3JEHR.mjs";
|
22
22
|
import "./chunk-VLOA5XAC.mjs";
|
23
23
|
import "./chunk-4GQOUCX6.mjs";
|
24
24
|
import "./chunk-2VTICXJR.mjs";
|
25
25
|
import "./chunk-D3YQN7HV.mjs";
|
26
|
-
import "./chunk-
|
26
|
+
import "./chunk-SLRZEIR7.mjs";
|
27
27
|
import "./chunk-MNXC6Q4F.mjs";
|
28
28
|
import {
|
29
29
|
useExtension
|
@@ -25,7 +25,7 @@ import {
|
|
25
25
|
UploadMediaFormItem,
|
26
26
|
decorateVariantsWithDefaultValues,
|
27
27
|
normalizeProductFormValues
|
28
|
-
} from "./chunk-
|
28
|
+
} from "./chunk-E3JEIPVS.mjs";
|
29
29
|
import "./chunk-ZQRKUG6J.mjs";
|
30
30
|
import {
|
31
31
|
DataGrid,
|
@@ -61,14 +61,14 @@ import {
|
|
61
61
|
import {
|
62
62
|
FormExtensionZone,
|
63
63
|
useExtendableForm
|
64
|
-
} from "./chunk-
|
64
|
+
} from "./chunk-AG6KIQLK.mjs";
|
65
65
|
import "./chunk-NQIC7ZFS.mjs";
|
66
66
|
import "./chunk-ONB3JEHR.mjs";
|
67
67
|
import "./chunk-VLOA5XAC.mjs";
|
68
68
|
import "./chunk-4GQOUCX6.mjs";
|
69
69
|
import "./chunk-2VTICXJR.mjs";
|
70
70
|
import "./chunk-D3YQN7HV.mjs";
|
71
|
-
import "./chunk-
|
71
|
+
import "./chunk-SLRZEIR7.mjs";
|
72
72
|
import "./chunk-MNXC6Q4F.mjs";
|
73
73
|
import {
|
74
74
|
useExtension
|
@@ -30,15 +30,15 @@ import {
|
|
30
30
|
import "./chunk-PFKKVLZX.mjs";
|
31
31
|
import {
|
32
32
|
PRODUCT_DETAIL_FIELDS
|
33
|
-
} from "./chunk-
|
34
|
-
import "./chunk-
|
33
|
+
} from "./chunk-QGSOFMKY.mjs";
|
34
|
+
import "./chunk-AG6KIQLK.mjs";
|
35
35
|
import "./chunk-NQIC7ZFS.mjs";
|
36
36
|
import "./chunk-ONB3JEHR.mjs";
|
37
37
|
import "./chunk-VLOA5XAC.mjs";
|
38
38
|
import "./chunk-4GQOUCX6.mjs";
|
39
39
|
import "./chunk-2VTICXJR.mjs";
|
40
40
|
import "./chunk-D3YQN7HV.mjs";
|
41
|
-
import "./chunk-
|
41
|
+
import "./chunk-SLRZEIR7.mjs";
|
42
42
|
import "./chunk-MNXC6Q4F.mjs";
|
43
43
|
import {
|
44
44
|
useExtension
|
@@ -15,18 +15,18 @@ import {
|
|
15
15
|
} from "./chunk-AERWK3TJ.mjs";
|
16
16
|
import {
|
17
17
|
PRODUCT_DETAIL_FIELDS
|
18
|
-
} from "./chunk-
|
18
|
+
} from "./chunk-QGSOFMKY.mjs";
|
19
19
|
import {
|
20
20
|
FormExtensionZone,
|
21
21
|
useExtendableForm
|
22
|
-
} from "./chunk-
|
22
|
+
} from "./chunk-AG6KIQLK.mjs";
|
23
23
|
import "./chunk-NQIC7ZFS.mjs";
|
24
24
|
import "./chunk-ONB3JEHR.mjs";
|
25
25
|
import "./chunk-VLOA5XAC.mjs";
|
26
26
|
import "./chunk-4GQOUCX6.mjs";
|
27
27
|
import "./chunk-2VTICXJR.mjs";
|
28
28
|
import "./chunk-D3YQN7HV.mjs";
|
29
|
-
import "./chunk-
|
29
|
+
import "./chunk-SLRZEIR7.mjs";
|
30
30
|
import "./chunk-MNXC6Q4F.mjs";
|
31
31
|
import {
|
32
32
|
useExtension
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import {
|
2
2
|
EditProductMediaSchema,
|
3
3
|
UploadMediaFormItem
|
4
|
-
} from "./chunk-
|
4
|
+
} from "./chunk-E3JEIPVS.mjs";
|
5
5
|
import "./chunk-ZQRKUG6J.mjs";
|
6
6
|
import "./chunk-TYTNUPXB.mjs";
|
7
7
|
import "./chunk-6GU6IDUA.mjs";
|
@@ -13,7 +13,7 @@ import {
|
|
13
13
|
RouteFocusModal,
|
14
14
|
useRouteModal
|
15
15
|
} from "./chunk-AERWK3TJ.mjs";
|
16
|
-
import "./chunk-
|
16
|
+
import "./chunk-SLRZEIR7.mjs";
|
17
17
|
import "./chunk-OBQI23QM.mjs";
|
18
18
|
import {
|
19
19
|
useProduct,
|
@@ -17,18 +17,18 @@ import {
|
|
17
17
|
} from "./chunk-AERWK3TJ.mjs";
|
18
18
|
import {
|
19
19
|
PRODUCT_DETAIL_FIELDS
|
20
|
-
} from "./chunk-
|
20
|
+
} from "./chunk-QGSOFMKY.mjs";
|
21
21
|
import {
|
22
22
|
FormExtensionZone,
|
23
23
|
useExtendableForm
|
24
|
-
} from "./chunk-
|
24
|
+
} from "./chunk-AG6KIQLK.mjs";
|
25
25
|
import "./chunk-NQIC7ZFS.mjs";
|
26
26
|
import "./chunk-ONB3JEHR.mjs";
|
27
27
|
import "./chunk-VLOA5XAC.mjs";
|
28
28
|
import "./chunk-4GQOUCX6.mjs";
|
29
29
|
import "./chunk-2VTICXJR.mjs";
|
30
30
|
import "./chunk-D3YQN7HV.mjs";
|
31
|
-
import "./chunk-
|
31
|
+
import "./chunk-SLRZEIR7.mjs";
|
32
32
|
import "./chunk-MNXC6Q4F.mjs";
|
33
33
|
import {
|
34
34
|
useExtension
|
package/dist/{product-shipping-profile-PH7AUB2Z.mjs → product-shipping-profile-2ZYBA25Z.mjs}
RENAMED
@@ -14,15 +14,15 @@ import {
|
|
14
14
|
} from "./chunk-AERWK3TJ.mjs";
|
15
15
|
import {
|
16
16
|
PRODUCT_DETAIL_FIELDS
|
17
|
-
} from "./chunk-
|
18
|
-
import "./chunk-
|
17
|
+
} from "./chunk-QGSOFMKY.mjs";
|
18
|
+
import "./chunk-AG6KIQLK.mjs";
|
19
19
|
import "./chunk-NQIC7ZFS.mjs";
|
20
20
|
import "./chunk-ONB3JEHR.mjs";
|
21
21
|
import "./chunk-VLOA5XAC.mjs";
|
22
22
|
import "./chunk-4GQOUCX6.mjs";
|
23
23
|
import "./chunk-2VTICXJR.mjs";
|
24
24
|
import "./chunk-D3YQN7HV.mjs";
|
25
|
-
import "./chunk-
|
25
|
+
import "./chunk-SLRZEIR7.mjs";
|
26
26
|
import "./chunk-MNXC6Q4F.mjs";
|
27
27
|
import "./chunk-C5P5PL3E.mjs";
|
28
28
|
import "./chunk-DG7J63J2.mjs";
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import {
|
2
2
|
AddCampaignPromotionForm
|
3
|
-
} from "./chunk-
|
4
|
-
import "./chunk-
|
3
|
+
} from "./chunk-WYOAWFIU.mjs";
|
4
|
+
import "./chunk-AHQI2S2Z.mjs";
|
5
5
|
import "./chunk-HFB3OQXI.mjs";
|
6
6
|
import "./chunk-OFN7DIZA.mjs";
|
7
7
|
import "./chunk-DK4WIVY6.mjs";
|
@@ -3,15 +3,15 @@ import {
|
|
3
3
|
} from "./chunk-KEQOAJC2.mjs";
|
4
4
|
import {
|
5
5
|
AddCampaignPromotionFields
|
6
|
-
} from "./chunk-
|
6
|
+
} from "./chunk-WYOAWFIU.mjs";
|
7
7
|
import {
|
8
8
|
RulesFormField
|
9
9
|
} from "./chunk-VI7MI3US.mjs";
|
10
10
|
import {
|
11
11
|
CreateCampaignSchema,
|
12
12
|
DEFAULT_CAMPAIGN_VALUES
|
13
|
-
} from "./chunk-
|
14
|
-
import "./chunk-
|
13
|
+
} from "./chunk-MK4E5XQX.mjs";
|
14
|
+
import "./chunk-AHQI2S2Z.mjs";
|
15
15
|
import "./chunk-F6ZOHZVB.mjs";
|
16
16
|
import "./chunk-HFB3OQXI.mjs";
|
17
17
|
import "./chunk-OFN7DIZA.mjs";
|
@@ -3,7 +3,7 @@ import {
|
|
3
3
|
} from "./chunk-VAIHVNV6.mjs";
|
4
4
|
import {
|
5
5
|
getPromotionStatus
|
6
|
-
} from "./chunk-
|
6
|
+
} from "./chunk-J3KQDDL3.mjs";
|
7
7
|
import {
|
8
8
|
formatPercentage
|
9
9
|
} from "./chunk-4FM6S5CX.mjs";
|
@@ -18,7 +18,7 @@ import {
|
|
18
18
|
} from "./chunk-GIZFNLKK.mjs";
|
19
19
|
import "./chunk-PFKKVLZX.mjs";
|
20
20
|
import "./chunk-4GQOUCX6.mjs";
|
21
|
-
import "./chunk-
|
21
|
+
import "./chunk-SLRZEIR7.mjs";
|
22
22
|
import {
|
23
23
|
useExtension
|
24
24
|
} from "./chunk-C5P5PL3E.mjs";
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
usePromotionTableColumns,
|
3
3
|
usePromotionTableQuery
|
4
|
-
} from "./chunk-
|
5
|
-
import "./chunk-
|
4
|
+
} from "./chunk-CFFXVQ3O.mjs";
|
5
|
+
import "./chunk-J3KQDDL3.mjs";
|
6
6
|
import "./chunk-MSDRGCRR.mjs";
|
7
7
|
import "./chunk-ADOCJB6L.mjs";
|
8
8
|
import "./chunk-LQTHYS2Z.mjs";
|
@@ -25,7 +25,7 @@ import {
|
|
25
25
|
import "./chunk-C76H5USB.mjs";
|
26
26
|
import "./chunk-PFKKVLZX.mjs";
|
27
27
|
import "./chunk-4GQOUCX6.mjs";
|
28
|
-
import "./chunk-
|
28
|
+
import "./chunk-SLRZEIR7.mjs";
|
29
29
|
import {
|
30
30
|
useExtension
|
31
31
|
} from "./chunk-C5P5PL3E.mjs";
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@medusajs/dashboard",
|
3
|
-
"version": "2.10.4-preview-
|
3
|
+
"version": "2.10.4-preview-20251013180156",
|
4
4
|
"scripts": {
|
5
5
|
"generate:static": "node ./scripts/generate-currencies.js && prettier --write ./src/lib/currencies.ts",
|
6
6
|
"dev": "vite",
|
@@ -45,10 +45,10 @@
|
|
45
45
|
"@dnd-kit/utilities": "^3.2.2",
|
46
46
|
"@hookform/error-message": "^2.0.1",
|
47
47
|
"@hookform/resolvers": "3.4.2",
|
48
|
-
"@medusajs/admin-shared": "2.10.4-preview-
|
49
|
-
"@medusajs/icons": "2.10.4-preview-
|
50
|
-
"@medusajs/js-sdk": "2.10.4-preview-
|
51
|
-
"@medusajs/ui": "4.0.24-preview-
|
48
|
+
"@medusajs/admin-shared": "2.10.4-preview-20251013180156",
|
49
|
+
"@medusajs/icons": "2.10.4-preview-20251013180156",
|
50
|
+
"@medusajs/js-sdk": "2.10.4-preview-20251013180156",
|
51
|
+
"@medusajs/ui": "4.0.24-preview-20251013180156",
|
52
52
|
"@radix-ui/react-dialog": "1.1.4",
|
53
53
|
"@radix-ui/react-dismissable-layer": "1.1.4",
|
54
54
|
"@tanstack/react-query": "5.64.2",
|
@@ -78,10 +78,10 @@
|
|
78
78
|
"zod": "3.25.76"
|
79
79
|
},
|
80
80
|
"devDependencies": {
|
81
|
-
"@medusajs/admin-shared": "2.10.4-preview-
|
82
|
-
"@medusajs/admin-vite-plugin": "2.10.4-preview-
|
83
|
-
"@medusajs/types": "2.10.4-preview-
|
84
|
-
"@medusajs/ui-preset": "2.10.4-preview-
|
81
|
+
"@medusajs/admin-shared": "2.10.4-preview-20251013180156",
|
82
|
+
"@medusajs/admin-vite-plugin": "2.10.4-preview-20251013180156",
|
83
|
+
"@medusajs/types": "2.10.4-preview-20251013180156",
|
84
|
+
"@medusajs/ui-preset": "2.10.4-preview-20251013180156",
|
85
85
|
"@types/node": "^20.11.15",
|
86
86
|
"@types/react": "^18.2.79",
|
87
87
|
"@types/react-dom": "^18.2.25",
|
@@ -8345,6 +8345,19 @@
|
|
8345
8345
|
"budget": {
|
8346
8346
|
"type": "object",
|
8347
8347
|
"properties": {
|
8348
|
+
"attribute": {
|
8349
|
+
"type": "object",
|
8350
|
+
"properties": {
|
8351
|
+
"customer_id": {
|
8352
|
+
"type": "string"
|
8353
|
+
},
|
8354
|
+
"customer_email": {
|
8355
|
+
"type": "string"
|
8356
|
+
}
|
8357
|
+
},
|
8358
|
+
"required": ["customer_id", "customer_email"],
|
8359
|
+
"additionalProperties": false
|
8360
|
+
},
|
8348
8361
|
"create": {
|
8349
8362
|
"type": "object",
|
8350
8363
|
"properties": {
|
@@ -8384,6 +8397,12 @@
|
|
8384
8397
|
},
|
8385
8398
|
"totalUsedByAttribute": {
|
8386
8399
|
"type": "string"
|
8400
|
+
},
|
8401
|
+
"totalUsedByAttributeCustomerId": {
|
8402
|
+
"type": "string"
|
8403
|
+
},
|
8404
|
+
"totalUsedByAttributeEmail": {
|
8405
|
+
"type": "string"
|
8387
8406
|
}
|
8388
8407
|
},
|
8389
8408
|
"required": [
|
@@ -8393,7 +8412,9 @@
|
|
8393
8412
|
"used",
|
8394
8413
|
"budgetAttribute",
|
8395
8414
|
"budgetAttributeTooltip",
|
8396
|
-
"totalUsedByAttribute"
|
8415
|
+
"totalUsedByAttribute",
|
8416
|
+
"totalUsedByAttributeCustomerId",
|
8417
|
+
"totalUsedByAttributeEmail"
|
8397
8418
|
],
|
8398
8419
|
"additionalProperties": false
|
8399
8420
|
},
|
@@ -8432,11 +8453,22 @@
|
|
8432
8453
|
"title": {
|
8433
8454
|
"type": "string"
|
8434
8455
|
},
|
8456
|
+
"titleCustomerId": {
|
8457
|
+
"type": "string"
|
8458
|
+
},
|
8459
|
+
"titleEmail": {
|
8460
|
+
"type": "string"
|
8461
|
+
},
|
8435
8462
|
"description": {
|
8436
8463
|
"type": "string"
|
8437
8464
|
}
|
8438
8465
|
},
|
8439
|
-
"required": [
|
8466
|
+
"required": [
|
8467
|
+
"title",
|
8468
|
+
"titleCustomerId",
|
8469
|
+
"titleEmail",
|
8470
|
+
"description"
|
8471
|
+
],
|
8440
8472
|
"additionalProperties": false
|
8441
8473
|
}
|
8442
8474
|
},
|
@@ -8454,7 +8486,14 @@
|
|
8454
8486
|
"additionalProperties": false
|
8455
8487
|
}
|
8456
8488
|
},
|
8457
|
-
"required": [
|
8489
|
+
"required": [
|
8490
|
+
"attribute",
|
8491
|
+
"create",
|
8492
|
+
"details",
|
8493
|
+
"fields",
|
8494
|
+
"type",
|
8495
|
+
"edit"
|
8496
|
+
],
|
8458
8497
|
"additionalProperties": false
|
8459
8498
|
},
|
8460
8499
|
"promotions": {
|
@@ -2240,6 +2240,10 @@
|
|
2240
2240
|
}
|
2241
2241
|
},
|
2242
2242
|
"budget": {
|
2243
|
+
"attribute": {
|
2244
|
+
"customer_id": "customer",
|
2245
|
+
"customer_email": "email"
|
2246
|
+
},
|
2243
2247
|
"create": {
|
2244
2248
|
"hint": "Create a budget for the campaign.",
|
2245
2249
|
"header": "Campaign Budget"
|
@@ -2251,8 +2255,10 @@
|
|
2251
2255
|
"limit": "Limit",
|
2252
2256
|
"used": "Used",
|
2253
2257
|
"budgetAttribute": "Limit usage per",
|
2254
|
-
"budgetAttributeTooltip": "Define how many times the promotion can be used by
|
2255
|
-
"totalUsedByAttribute": "Budget limit per: {{attribute}}"
|
2258
|
+
"budgetAttributeTooltip": "Define how many times the promotion can be used by each customer or email.",
|
2259
|
+
"totalUsedByAttribute": "Budget limit per: {{attribute}}",
|
2260
|
+
"totalUsedByAttributeCustomerId": "Budget limit per customer",
|
2261
|
+
"totalUsedByAttributeEmail": "Budget limit per email"
|
2256
2262
|
},
|
2257
2263
|
"type": {
|
2258
2264
|
"spend": {
|
@@ -2265,6 +2271,8 @@
|
|
2265
2271
|
},
|
2266
2272
|
"useByAttribute": {
|
2267
2273
|
"title": "Usage by attribute (customer id, email, etc.)",
|
2274
|
+
"titleCustomerId": "Usage per customer",
|
2275
|
+
"titleEmail": "Usage per email",
|
2268
2276
|
"description": "Set a limit on how many times the promotion can be used by a specific attribute value."
|
2269
2277
|
}
|
2270
2278
|
},
|
@@ -11,6 +11,22 @@ type CampaignBudgetProps = {
|
|
11
11
|
export const CampaignBudget = ({ campaign }: CampaignBudgetProps) => {
|
12
12
|
const { t } = useTranslation()
|
13
13
|
|
14
|
+
const getTranslation = () => {
|
15
|
+
const budget = campaign.budget
|
16
|
+
|
17
|
+
if (budget?.type === "use_by_attribute") {
|
18
|
+
if (budget?.attribute === "customer_id") {
|
19
|
+
return t(`campaigns.budget.fields.totalUsedByAttributeCustomerId`)
|
20
|
+
} else if (budget?.attribute === "customer_email") {
|
21
|
+
return t(`campaigns.budget.fields.totalUsedByAttributeEmail`)
|
22
|
+
}
|
23
|
+
return t(`campaigns.budget.fields.totalUsedByAttribute`, {
|
24
|
+
attribute: budget?.attribute,
|
25
|
+
})
|
26
|
+
}
|
27
|
+
return t(`campaigns.fields.budget_limit`)
|
28
|
+
}
|
29
|
+
|
14
30
|
return (
|
15
31
|
<Container className="flex flex-col gap-y-4 px-6 py-4">
|
16
32
|
<div className="flex justify-between">
|
@@ -25,11 +41,7 @@ export const CampaignBudget = ({ campaign }: CampaignBudgetProps) => {
|
|
25
41
|
className="text-ui-fg-subtle ms-10 mt-[1.5px] font-normal"
|
26
42
|
level="h3"
|
27
43
|
>
|
28
|
-
{
|
29
|
-
? t("campaigns.budget.fields.totalUsedByAttribute", {
|
30
|
-
attribute: campaign.budget?.attribute,
|
31
|
-
})
|
32
|
-
: t("campaigns.fields.budget_limit")}
|
44
|
+
{getTranslation()}
|
33
45
|
</Heading>
|
34
46
|
</div>
|
35
47
|
|
@@ -382,10 +382,11 @@ export const CreateCampaignFormFields = ({ form, fieldScope = "" }) => {
|
|
382
382
|
label: t("fields.email"),
|
383
383
|
value: "customer_email",
|
384
384
|
},
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
385
|
+
// TEMP disable promotion code for now
|
386
|
+
// {
|
387
|
+
// label: t("fields.promotionCode"),
|
388
|
+
// value: "promotion_code",
|
389
|
+
// },
|
389
390
|
]}
|
390
391
|
></Combobox>
|
391
392
|
</Form.Control>
|
@@ -9,6 +9,21 @@ const translationKeyMap = {
|
|
9
9
|
use_by_attribute: "useByAttribute",
|
10
10
|
}
|
11
11
|
|
12
|
+
const getTranslationKey = (budget: AdminCampaign["budget"]) => {
|
13
|
+
const translationKey = translationKeyMap[budget?.type] || "-"
|
14
|
+
|
15
|
+
if (budget?.type === "use_by_attribute") {
|
16
|
+
if (budget?.attribute === "customer_id") {
|
17
|
+
return `campaigns.budget.type.useByAttribute.titleCustomerId`
|
18
|
+
} else if (budget?.attribute === "customer_email") {
|
19
|
+
return `campaigns.budget.type.useByAttribute.titleEmail`
|
20
|
+
}
|
21
|
+
return `campaigns.budget.type.useByAttribute.title`
|
22
|
+
}
|
23
|
+
|
24
|
+
return `campaigns.budget.type.${translationKey}.title`
|
25
|
+
}
|
26
|
+
|
12
27
|
type CampaignDetailsProps = {
|
13
28
|
campaign?: AdminCampaign
|
14
29
|
}
|
@@ -84,12 +99,9 @@ export const CampaignDetails = ({ campaign }: CampaignDetailsProps) => {
|
|
84
99
|
|
85
100
|
<div className="flex items-center gap-1">
|
86
101
|
<Text className="txt-small truncate">
|
87
|
-
{t(
|
88
|
-
|
89
|
-
|
90
|
-
defaultValue: "-",
|
91
|
-
}
|
92
|
-
)}
|
102
|
+
{t(getTranslationKey(campaign.budget), {
|
103
|
+
defaultValue: "-",
|
104
|
+
})}
|
93
105
|
</Text>
|
94
106
|
</div>
|
95
107
|
</div>
|