@mercurjs/admin 2.2.0-canary.36 → 2.2.0-canary.37

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 (70) hide show
  1. package/dist/{add-campaign-promotions-OTLO4M5C.js → add-campaign-promotions-26SSHLLG.js} +3 -3
  2. package/dist/{campaign-detail-GZV2HK2G.js → campaign-detail-VMJQISAE.js} +4 -4
  3. package/dist/{category-create-7UTOSFO5.js → category-create-AIS2MG7E.js} +2 -2
  4. package/dist/{category-detail-AYVW7LRB.js → category-detail-I3EEPAQR.js} +2 -2
  5. package/dist/{category-icon-edit-FMVPTC27.js → category-icon-edit-W2TPCSDC.js} +1 -1
  6. package/dist/{category-list-B6B3ZANX.js → category-list-QLHQST3D.js} +2 -2
  7. package/dist/{category-media-4SLUTBZS.js → category-media-PC4V7YU4.js} +1 -1
  8. package/dist/{category-products-IF33PO5Y.js → category-products-XGLUDL73.js} +1 -0
  9. package/dist/{chunk-GQUGCSJV.js → chunk-2MRYNLVT.js} +1 -1
  10. package/dist/{chunk-ZMSQW2M3.js → chunk-3UJQT6UR.js} +93 -45
  11. package/dist/{chunk-HHW4PPNH.js → chunk-4OCWOY2F.js} +8 -1
  12. package/dist/{chunk-P4GIBTTG.js → chunk-5BSSIDW6.js} +1 -1
  13. package/dist/{chunk-IHERG3JP.js → chunk-6YEVK7JJ.js} +12 -4
  14. package/dist/{chunk-TRXFVQXD.js → chunk-BLR3NTU6.js} +1 -1
  15. package/dist/{chunk-OB5RWOGA.js → chunk-C6AU3U22.js} +1 -1
  16. package/dist/{chunk-BW5MMF6W.js → chunk-CMZ4KATG.js} +2 -2
  17. package/dist/{chunk-R3YD5UOZ.js → chunk-CU4UVEHX.js} +36 -1
  18. package/dist/{chunk-GJB4UQZI.js → chunk-E32O3DUM.js} +1 -1
  19. package/dist/{chunk-DP3OBKUP.js → chunk-GX7YQ6GM.js} +1 -1
  20. package/dist/{chunk-WMVLWFFU.js → chunk-HBT7GVJD.js} +3 -4
  21. package/dist/{chunk-YAOYZQDK.js → chunk-KUKBV4XN.js} +1 -1
  22. package/dist/{chunk-CA4K6JDJ.js → chunk-MKNQ6BT6.js} +1 -1
  23. package/dist/{chunk-PQAQM6SB.js → chunk-NXMD36QG.js} +1 -1
  24. package/dist/{chunk-3OZRK7TN.js → chunk-OTXOV6YU.js} +1 -1
  25. package/dist/{chunk-MTOPGOKU.js → chunk-PAUULPNC.js} +1 -1
  26. package/dist/{chunk-WEWBHUEB.js → chunk-POMQZ6PN.js} +1 -1
  27. package/dist/{chunk-LECZPR6R.js → chunk-QJCUPZZQ.js} +4 -2
  28. package/dist/{chunk-HLUWC7C3.js → chunk-RLGMY7JJ.js} +1 -1
  29. package/dist/{chunk-OLAOEVZE.js → chunk-SWQC5UPD.js} +2 -2
  30. package/dist/{chunk-T2WVIET2.js → chunk-VM56ZITS.js} +4 -2
  31. package/dist/{chunk-R6DVBI5F.js → chunk-X3TWPSUM.js} +1 -1
  32. package/dist/{chunk-NX3YQW2B.js → chunk-XEB5I2KE.js} +2 -2
  33. package/dist/{chunk-TYXSRH47.js → chunk-ZDEIYWCK.js} +14 -4
  34. package/dist/{collection-create-T6HBO4LU.js → collection-create-5IGFVQKE.js} +1 -1
  35. package/dist/{collection-detail-PMSYCWE3.js → collection-detail-AB6HGJDM.js} +2 -2
  36. package/dist/{collection-icon-edit-VZP3W6AZ.js → collection-icon-edit-WCSKUDXE.js} +1 -1
  37. package/dist/{collection-list-EK2TBM3J.js → collection-list-UHFUKA5U.js} +3 -3
  38. package/dist/{collection-media-3Z2RJDVG.js → collection-media-YIV5BV3Y.js} +1 -1
  39. package/dist/{commission-rule-commission-edit-6675TZCZ.js → commission-rule-commission-edit-EXLLNUKM.js} +19 -4
  40. package/dist/{commission-rule-create-PEYCFGCW.js → commission-rule-create-3MCNOSWN.js} +9 -28
  41. package/dist/{commission-rule-edit-GCI67KZU.js → commission-rule-edit-X45EQ6BK.js} +24 -1
  42. package/dist/{global-commission-edit-AOZ6XLH7.js → global-commission-edit-7ZMMIV7B.js} +19 -12
  43. package/dist/index.js +51 -51
  44. package/dist/{inventory-create-HOQVSL2G.js → inventory-create-WJ3CCFTD.js} +2 -2
  45. package/dist/{inventory-stock-E4U2SS3Z.js → inventory-stock-F2BKMXY3.js} +1 -1
  46. package/dist/{location-service-zone-shipping-option-create-K6USZASG.js → location-service-zone-shipping-option-create-OLABLTSL.js} +3 -3
  47. package/dist/{location-service-zone-shipping-option-pricing-ZENGURN3.js → location-service-zone-shipping-option-pricing-TARZ34TW.js} +2 -2
  48. package/dist/{order-edit-billing-address-WQYQSLDB.js → order-edit-billing-address-IU6W76P3.js} +1 -1
  49. package/dist/pages/index.js +24 -24
  50. package/dist/{price-list-create-QEDMB4A6.js → price-list-create-UMA2NB3L.js} +3 -3
  51. package/dist/{price-list-prices-add-GVOZDWKE.js → price-list-prices-add-XLFLGFVG.js} +3 -3
  52. package/dist/{price-list-prices-edit-LNSUSN4V.js → price-list-prices-edit-MT6BFF3M.js} +2 -2
  53. package/dist/{product-bulk-edit-34KKEPJQ.js → product-bulk-edit-3AJGOE6E.js} +1 -1
  54. package/dist/{product-create-STXNKMAV.js → product-create-2SELD5CI.js} +4 -4
  55. package/dist/{product-detail-T4FOYZK7.js → product-detail-O7MVTHSN.js} +1 -1
  56. package/dist/{product-media-JFLRNBPR.js → product-media-S6L3IHUO.js} +2 -2
  57. package/dist/{product-organization-SGLOMAKK.js → product-organization-BYPV5QSZ.js} +1 -1
  58. package/dist/{product-tag-detail-ZV7V7UW3.js → product-tag-detail-SVDEVPMA.js} +2 -2
  59. package/dist/{product-tag-list-SZHBD5FA.js → product-tag-list-4ECQFBOA.js} +2 -2
  60. package/dist/{promotion-detail-AWVF7JHY.js → promotion-detail-25JCCLU2.js} +3 -3
  61. package/dist/{promotion-list-INBZ3OG3.js → promotion-list-RXLVU4G2.js} +4 -4
  62. package/dist/{refund-reason-list-UCZC5ASP.js → refund-reason-list-XMDZO34F.js} +2 -2
  63. package/dist/{reset-password-ZJW3AHYT.js → reset-password-GBVMOKXP.js} +1 -1
  64. package/dist/{return-reason-list-AJ4E3A56.js → return-reason-list-AW6MMUKD.js} +2 -2
  65. package/dist/{store-bulk-edit-5DZ7RZS3.js → store-bulk-edit-I6QHGMEC.js} +1 -1
  66. package/dist/{store-edit-6KKEQZRH.js → store-edit-BBOEDZNV.js} +2 -2
  67. package/dist/{tax-region-create-GAXLHDV5.js → tax-region-create-7432IFN5.js} +1 -1
  68. package/dist/{tax-region-tax-override-create-XOBU6DOL.js → tax-region-tax-override-create-WRUNCP67.js} +2 -2
  69. package/dist/{tax-region-tax-override-edit-PEQJFCOU.js → tax-region-tax-override-edit-EOIDY4LX.js} +2 -2
  70. package/package.json +6 -6
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-Y456KVIN.js";
13
13
  import {
14
14
  getCategoryGallery
15
- } from "./chunk-LECZPR6R.js";
15
+ } from "./chunk-QJCUPZZQ.js";
16
16
  import {
17
17
  StatusCell
18
18
  } from "./chunk-DB6ANJBO.js";
@@ -158,6 +158,8 @@ import {
158
158
  EllipsisHorizontal,
159
159
  InformationCircleSolid,
160
160
  Photo,
161
+ QueueList,
162
+ StackPerspective,
161
163
  ThumbnailBadge,
162
164
  Trash,
163
165
  XMark as XMark2
@@ -288,7 +290,7 @@ var CategoryMediaItemMenu = ({
288
290
  /* @__PURE__ */ jsx3(
289
291
  MenuItemWithTooltip,
290
292
  {
291
- icon: /* @__PURE__ */ jsx3(ThumbnailBadge, {}),
293
+ icon: /* @__PURE__ */ jsx3(StackPerspective, {}),
292
294
  label: item.is_thumbnail ? t("categories.media.actions.removeThumbnail") : t("categories.media.actions.setThumbnail"),
293
295
  tooltip: t("categories.media.tooltips.thumbnail"),
294
296
  onClick: onToggleThumbnail
@@ -297,7 +299,7 @@ var CategoryMediaItemMenu = ({
297
299
  /* @__PURE__ */ jsx3(
298
300
  MenuItemWithTooltip,
299
301
  {
300
- icon: /* @__PURE__ */ jsx3(ListBadge, {}),
302
+ icon: /* @__PURE__ */ jsx3(QueueList, {}),
301
303
  label: item.is_banner ? t("categories.media.actions.removeBanner") : t("categories.media.actions.setBanner"),
302
304
  tooltip: t("categories.media.tooltips.banner"),
303
305
  onClick: onToggleBanner
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  DataGrid,
22
22
  createDataGridHelper
23
- } from "./chunk-HHW4PPNH.js";
23
+ } from "./chunk-4OCWOY2F.js";
24
24
  import {
25
25
  RouteFocusModal,
26
26
  useRouteModal
@@ -6,7 +6,7 @@ import {
6
6
  PriceListRulesSchema,
7
7
  usePriceListCurrencyData,
8
8
  usePriceListGridColumns
9
- } from "./chunk-3OZRK7TN.js";
9
+ } from "./chunk-OTXOV6YU.js";
10
10
  import {
11
11
  exctractPricesFromProducts,
12
12
  isProductRow
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-FREUYHMS.js";
28
28
  import {
29
29
  DataGrid
30
- } from "./chunk-HHW4PPNH.js";
30
+ } from "./chunk-4OCWOY2F.js";
31
31
  import {
32
32
  RouteFocusModal,
33
33
  StackedFocusModal,
@@ -158,6 +158,8 @@ import {
158
158
  EllipsisHorizontal,
159
159
  InformationCircleSolid,
160
160
  Photo,
161
+ QueueList,
162
+ StackPerspective,
161
163
  ThumbnailBadge,
162
164
  Trash,
163
165
  XMark as XMark2
@@ -288,7 +290,7 @@ var CollectionMediaItemMenu = ({
288
290
  /* @__PURE__ */ jsx3(
289
291
  MenuItemWithTooltip,
290
292
  {
291
- icon: /* @__PURE__ */ jsx3(ThumbnailBadge, {}),
293
+ icon: /* @__PURE__ */ jsx3(StackPerspective, {}),
292
294
  label: item.is_thumbnail ? t("collections.media.actions.removeThumbnail") : t("collections.media.actions.setThumbnail"),
293
295
  tooltip: t("collections.media.tooltips.thumbnail"),
294
296
  onClick: onToggleThumbnail
@@ -297,7 +299,7 @@ var CollectionMediaItemMenu = ({
297
299
  /* @__PURE__ */ jsx3(
298
300
  MenuItemWithTooltip,
299
301
  {
300
- icon: /* @__PURE__ */ jsx3(ListBadge, {}),
302
+ icon: /* @__PURE__ */ jsx3(QueueList, {}),
301
303
  label: item.is_banner ? t("collections.media.actions.removeBanner") : t("collections.media.actions.setBanner"),
302
304
  tooltip: t("collections.media.tooltips.banner"),
303
305
  onClick: onToggleBanner
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCollectionGallery,
3
3
  getCollectionIcon
4
- } from "./chunk-T2WVIET2.js";
4
+ } from "./chunk-VM56ZITS.js";
5
5
  import {
6
6
  useProductTableColumns
7
7
  } from "./chunk-O53E5U52.js";
@@ -4,7 +4,7 @@ import {
4
4
  ShippingOptionPriceProvider,
5
5
  buildShippingOptionPriceRules,
6
6
  useShippingOptionPriceColumns
7
- } from "./chunk-GQUGCSJV.js";
7
+ } from "./chunk-2MRYNLVT.js";
8
8
  import {
9
9
  CONDITIONAL_PRICES_STACKED_MODAL_ID,
10
10
  ShippingOptionPriceType
@@ -31,7 +31,7 @@ import {
31
31
  } from "./chunk-2EME4AWX.js";
32
32
  import {
33
33
  DataGrid
34
- } from "./chunk-HHW4PPNH.js";
34
+ } from "./chunk-4OCWOY2F.js";
35
35
  import {
36
36
  RouteFocusModal,
37
37
  StackedFocusModal,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-AJLGY3LQ.js";
4
4
  import {
5
5
  i18n
6
- } from "./chunk-IHERG3JP.js";
6
+ } from "./chunk-6YEVK7JJ.js";
7
7
  import {
8
8
  require_dist
9
9
  } from "./chunk-YZBEJ3CY.js";
@@ -220,7 +220,9 @@ var ProductCreateVariantSchema = z.object({
220
220
  variant_rank: z.number()
221
221
  });
222
222
  var ProductCreateSchema = z.object({
223
- title: z.string().min(1),
223
+ title: z.string().min(1, {
224
+ message: i18n.t("products.create.errors.requiredTitle")
225
+ }),
224
226
  subtitle: z.string().optional(),
225
227
  handle: z.string().optional(),
226
228
  description: z.string().optional(),
@@ -228,7 +230,7 @@ var ProductCreateSchema = z.object({
228
230
  globally_available: z.boolean(),
229
231
  type_id: z.string().optional(),
230
232
  collection_id: z.string().optional(),
231
- category_id: z.string().min(1),
233
+ category_id: z.string().min(1, i18n.t("products.create.errors.requiredCategory")),
232
234
  seller_ids: z.array(z.string()).optional(),
233
235
  tags: z.array(z.string()).optional(),
234
236
  origin_country: z.string().optional(),
@@ -266,10 +268,18 @@ var ProductCreateSchema = z.object({
266
268
  if (!attr.is_required) return;
267
269
  const isEmpty = attr.values === void 0 || attr.values === "" || Array.isArray(attr.values) && attr.values.length === 0;
268
270
  if (isEmpty) {
271
+ let messageKey = "products.create.errors.requiredAttribute";
272
+ if (attr.type === "single_select" || attr.type === "toggle") {
273
+ messageKey = "products.create.errors.requiredAttributeSelect";
274
+ } else if (attr.type === "multi_select") {
275
+ messageKey = "products.create.errors.requiredAttributeMultiSelect";
276
+ } else if (attr.type === "text" || attr.type === "unit") {
277
+ messageKey = "products.create.errors.requiredAttributeEnter";
278
+ }
269
279
  ctx.addIssue({
270
280
  code: z.ZodIssueCode.custom,
271
281
  path: [`attributes.${index}.values`],
272
- message: i18n.t("products.create.errors.requiredAttribute")
282
+ message: i18n.t(messageKey)
273
283
  });
274
284
  }
275
285
  });
@@ -3,7 +3,7 @@ import {
3
3
  CollectionIconTip,
4
4
  CollectionMediaInput,
5
5
  uploadCollectionImages
6
- } from "./chunk-T2WVIET2.js";
6
+ } from "./chunk-VM56ZITS.js";
7
7
  import {
8
8
  HandleInput
9
9
  } from "./chunk-HJ56YXBU.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CollectionDetailPage
3
- } from "./chunk-R6DVBI5F.js";
4
- import "./chunk-T2WVIET2.js";
3
+ } from "./chunk-X3TWPSUM.js";
4
+ import "./chunk-VM56ZITS.js";
5
5
  import "./chunk-O53E5U52.js";
6
6
  import "./chunk-WBSUHLO7.js";
7
7
  import "./chunk-P4LTLPTK.js";
@@ -3,7 +3,7 @@ import {
3
3
  CollectionIconTip,
4
4
  getCollectionIcon,
5
5
  uploadCollectionImages
6
- } from "./chunk-T2WVIET2.js";
6
+ } from "./chunk-VM56ZITS.js";
7
7
  import "./chunk-VSLHL2AZ.js";
8
8
  import "./chunk-TKGWSUEI.js";
9
9
  import {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CollectionListPage
3
- } from "./chunk-YAOYZQDK.js";
4
- import "./chunk-P4GIBTTG.js";
3
+ } from "./chunk-KUKBV4XN.js";
4
+ import "./chunk-5BSSIDW6.js";
5
5
  import "./chunk-KOURHC2N.js";
6
6
  import "./chunk-2ZFELO2L.js";
7
7
  import "./chunk-26OOAKQ6.js";
@@ -9,7 +9,7 @@ import "./chunk-ZQZHFMD7.js";
9
9
  import "./chunk-C4N5EJAD.js";
10
10
  import "./chunk-OI4DJXUL.js";
11
11
  import "./chunk-HGTPUAHD.js";
12
- import "./chunk-T2WVIET2.js";
12
+ import "./chunk-VM56ZITS.js";
13
13
  import "./chunk-S2WEYEQR.js";
14
14
  import "./chunk-WKTRJNOK.js";
15
15
  import "./chunk-MG4GKUJW.js";
@@ -2,7 +2,7 @@ import {
2
2
  COLLECTION_IMAGE_FORMATS,
3
3
  getCollectionGallery,
4
4
  uploadCollectionImages
5
- } from "./chunk-T2WVIET2.js";
5
+ } from "./chunk-VM56ZITS.js";
6
6
  import {
7
7
  FileUpload
8
8
  } from "./chunk-VSLHL2AZ.js";
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  CommissionValueFields,
3
+ addCommissionValueIssues,
4
+ optionalAmount,
3
5
  useStoreCurrencies
4
- } from "./chunk-R3YD5UOZ.js";
6
+ } from "./chunk-CU4UVEHX.js";
5
7
  import {
6
8
  buildValuesPayload,
7
9
  fixedValuesFromRate
@@ -39,6 +41,7 @@ import "./chunk-NBMM2TZK.js";
39
41
  // src/pages/commissions/commission-rule-commission-edit/commission-rule-commission-edit.tsx
40
42
  import { zodResolver } from "@hookform/resolvers/zod";
41
43
  import { Button, Heading, toast } from "@medusajs/ui";
44
+ import { useMemo } from "react";
42
45
  import { useForm } from "react-hook-form";
43
46
  import { useTranslation } from "react-i18next";
44
47
  import { useParams } from "react-router-dom";
@@ -46,11 +49,19 @@ import * as zod from "zod";
46
49
  import { jsx, jsxs } from "react/jsx-runtime";
47
50
  var EditCommissionSchema = zod.object({
48
51
  type: zod.enum(["percentage", "fixed"]),
49
- value: zod.coerce.number().min(0),
50
- fixed_values: zod.record(zod.string(), zod.coerce.number()).optional(),
52
+ value: optionalAmount,
53
+ fixed_values: zod.record(zod.string(), optionalAmount).optional(),
51
54
  include_tax: zod.boolean(),
52
55
  include_shipping: zod.boolean()
53
56
  });
57
+ var createEditCommissionSchema = (currencies) => EditCommissionSchema.superRefine((data, ctx) => {
58
+ addCommissionValueIssues(ctx, {
59
+ type: data.type,
60
+ value: data.value,
61
+ fixedValues: data.fixed_values,
62
+ currencies
63
+ });
64
+ });
54
65
  var EditCommissionForm = ({ rule }) => {
55
66
  const { t } = useTranslation();
56
67
  const { handleSuccess } = useRouteModal();
@@ -59,6 +70,10 @@ var EditCommissionForm = ({ rule }) => {
59
70
  { value: "percentage", label: t("commissions.fields.type.percentage") },
60
71
  { value: "fixed", label: t("commissions.fields.type.fixed") }
61
72
  ];
73
+ const resolver = useMemo(
74
+ () => zodResolver(createEditCommissionSchema(currencies)),
75
+ [currencies]
76
+ );
62
77
  const form = useForm({
63
78
  defaultValues: {
64
79
  type: rule.type,
@@ -67,7 +82,7 @@ var EditCommissionForm = ({ rule }) => {
67
82
  include_tax: rule.include_tax,
68
83
  include_shipping: rule.include_shipping
69
84
  },
70
- resolver: zodResolver(EditCommissionSchema)
85
+ resolver
71
86
  });
72
87
  const { mutateAsync, isPending } = useUpdateCommissionRule(rule.id);
73
88
  const handleSubmit = form.handleSubmit(async (values) => {
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  CommissionValueFields,
3
+ addCommissionValueIssues,
4
+ optionalAmount,
3
5
  useStoreCurrencies
4
- } from "./chunk-R3YD5UOZ.js";
6
+ } from "./chunk-CU4UVEHX.js";
5
7
  import "./chunk-QR3GYYX6.js";
6
8
  import {
7
9
  SCOPE_TYPE_DIMENSIONS,
@@ -323,13 +325,6 @@ CreateCommissionRuleDetails._tabMeta = defineTabMeta(
323
325
  // src/pages/commissions/commission-rule-create/components/create-commission-rule-form/schema.ts
324
326
  import i18n from "i18next";
325
327
  import * as zod from "zod";
326
- var optionalAmount = zod.preprocess((val) => {
327
- if (val === "" || val === null || val === void 0) {
328
- return void 0;
329
- }
330
- const parsed = typeof val === "number" ? val : Number(val);
331
- return Number.isNaN(parsed) ? void 0 : parsed;
332
- }, zod.number().optional());
333
328
  var baseCommissionRuleSchema = zod.object({
334
329
  title: zod.string().min(1, { message: i18n.t("commissions.validation.titleRequired") }),
335
330
  code: zod.string().min(1, { message: i18n.t("commissions.validation.codeRequired") }),
@@ -372,26 +367,12 @@ var createCommissionRuleSchema = (currencies = []) => baseCommissionRuleSchema.s
372
367
  message: i18n.t("commissions.validation.categoriesRequired")
373
368
  });
374
369
  }
375
- if (data.commissionType === "percentage") {
376
- if (data.value === void 0 || Number.isNaN(data.value)) {
377
- ctx.addIssue({
378
- code: zod.ZodIssueCode.custom,
379
- path: ["value"],
380
- message: i18n.t("commissions.validation.value")
381
- });
382
- }
383
- } else {
384
- currencies.forEach((code) => {
385
- const amount = data.fixed_values?.[code];
386
- if (amount === void 0 || Number.isNaN(amount)) {
387
- ctx.addIssue({
388
- code: zod.ZodIssueCode.custom,
389
- path: ["fixed_values", code],
390
- message: i18n.t("commissions.validation.value")
391
- });
392
- }
393
- });
394
- }
370
+ addCommissionValueIssues(ctx, {
371
+ type: data.commissionType,
372
+ value: data.value,
373
+ fixedValues: data.fixed_values,
374
+ currencies
375
+ });
395
376
  });
396
377
 
397
378
  // src/pages/commissions/commission-rule-create/components/create-commission-rule-form/create-commission-rule-form.tsx
@@ -49,7 +49,7 @@ import * as zod from "zod";
49
49
  import { jsx, jsxs } from "react/jsx-runtime";
50
50
  var EditCommissionRuleSchema = zod.object({
51
51
  status: zod.enum(["active", "inactive"]),
52
- name: zod.string().min(1),
52
+ name: zod.string().min(1, { message: i18n.t("commissions.validation.titleRequired") }),
53
53
  code: zod.string().min(1, { message: i18n.t("commissions.validation.codeRequired") }),
54
54
  scopeType: zod.enum([
55
55
  "store",
@@ -61,6 +61,29 @@ var EditCommissionRuleSchema = zod.object({
61
61
  stores: zod.array(zod.string()),
62
62
  productTypes: zod.array(zod.string()),
63
63
  categories: zod.array(zod.string())
64
+ }).superRefine((data, ctx) => {
65
+ const dimensions = SCOPE_TYPE_DIMENSIONS[data.scopeType];
66
+ if (dimensions.includes("seller") && data.stores.length === 0) {
67
+ ctx.addIssue({
68
+ code: zod.ZodIssueCode.custom,
69
+ path: ["stores"],
70
+ message: i18n.t("commissions.validation.storesRequired")
71
+ });
72
+ }
73
+ if (dimensions.includes("product_type") && data.productTypes.length === 0) {
74
+ ctx.addIssue({
75
+ code: zod.ZodIssueCode.custom,
76
+ path: ["productTypes"],
77
+ message: i18n.t("commissions.validation.productTypesRequired")
78
+ });
79
+ }
80
+ if (dimensions.includes("product_category") && data.categories.length === 0) {
81
+ ctx.addIssue({
82
+ code: zod.ZodIssueCode.custom,
83
+ path: ["categories"],
84
+ message: i18n.t("commissions.validation.categoriesRequired")
85
+ });
86
+ }
64
87
  });
65
88
  var EditCommissionRuleForm = ({ rule }) => {
66
89
  const { t } = useTranslation();
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  CommissionValueFields,
3
+ addCommissionValueIssues,
4
+ optionalAmount,
3
5
  useStoreCurrencies
4
- } from "./chunk-R3YD5UOZ.js";
6
+ } from "./chunk-CU4UVEHX.js";
5
7
  import {
6
8
  buildValuesPayload,
7
9
  fixedValuesFromRate
@@ -40,6 +42,7 @@ import "./chunk-NBMM2TZK.js";
40
42
  import { zodResolver } from "@hookform/resolvers/zod";
41
43
  import { Button, Heading, Input, toast } from "@medusajs/ui";
42
44
  import i18n from "i18next";
45
+ import { useMemo } from "react";
43
46
  import { useForm } from "react-hook-form";
44
47
  import { useTranslation } from "react-i18next";
45
48
  import * as zod from "zod";
@@ -47,18 +50,18 @@ import { jsx, jsxs } from "react/jsx-runtime";
47
50
  var EditGlobalCommissionSchema = zod.object({
48
51
  code: zod.string().min(1, { message: i18n.t("commissions.validation.codeRequired") }),
49
52
  type: zod.enum(["percentage", "fixed"]),
50
- value: zod.coerce.number().optional(),
51
- fixed_values: zod.record(zod.string(), zod.coerce.number()).optional(),
53
+ value: optionalAmount,
54
+ fixed_values: zod.record(zod.string(), optionalAmount).optional(),
52
55
  include_tax: zod.boolean(),
53
56
  include_shipping: zod.boolean()
54
- }).superRefine((data, ctx) => {
55
- if (data.type === "percentage" && (data.value === void 0 || Number.isNaN(data.value))) {
56
- ctx.addIssue({
57
- code: zod.ZodIssueCode.custom,
58
- path: ["value"],
59
- message: i18n.t("commissions.validation.valueRequired")
60
- });
61
- }
57
+ });
58
+ var createEditGlobalCommissionSchema = (currencies) => EditGlobalCommissionSchema.superRefine((data, ctx) => {
59
+ addCommissionValueIssues(ctx, {
60
+ type: data.type,
61
+ value: data.value,
62
+ fixedValues: data.fixed_values,
63
+ currencies
64
+ });
62
65
  });
63
66
  var EditGlobalCommissionForm = ({ rate }) => {
64
67
  const { t } = useTranslation();
@@ -68,6 +71,10 @@ var EditGlobalCommissionForm = ({ rate }) => {
68
71
  { value: "percentage", label: t("commissions.fields.type.percentage") },
69
72
  { value: "fixed", label: t("commissions.fields.type.fixed") }
70
73
  ];
74
+ const resolver = useMemo(
75
+ () => zodResolver(createEditGlobalCommissionSchema(currencies)),
76
+ [currencies]
77
+ );
71
78
  const form = useForm({
72
79
  defaultValues: {
73
80
  code: rate.code,
@@ -77,7 +84,7 @@ var EditGlobalCommissionForm = ({ rate }) => {
77
84
  include_tax: rate.include_tax,
78
85
  include_shipping: rate.include_shipping
79
86
  },
80
- resolver: zodResolver(EditGlobalCommissionSchema)
87
+ resolver
81
88
  });
82
89
  const { mutateAsync, isPending } = useUpdateCommissionRule(rate.id);
83
90
  const handleSubmit = form.handleSubmit(async (values) => {