@rebuy/rebuy 3.5.0 → 3.6.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 (40) hide show
  1. package/dist/index.cjs +740 -647
  2. package/dist/index.mjs +740 -647
  3. package/dist/schema/checkout-and-beyond/constants.cjs +16 -0
  4. package/dist/schema/checkout-and-beyond/constants.mjs +16 -0
  5. package/dist/schema/checkout-and-beyond/index.cjs +454 -362
  6. package/dist/schema/checkout-and-beyond/index.mjs +454 -362
  7. package/dist/schema/widget-data.cjs +508 -435
  8. package/dist/schema/widget-data.mjs +508 -435
  9. package/dist/schema/widgetData.d.ts +438 -147
  10. package/dist/schema/widgets/checkout-and-beyond/banner.d.ts +145 -48
  11. package/dist/schema/widgets/checkout-and-beyond/button.d.ts +154 -49
  12. package/dist/schema/widgets/checkout-and-beyond/carousel.d.ts +145 -48
  13. package/dist/schema/widgets/checkout-and-beyond/cartLine.d.ts +145 -48
  14. package/dist/schema/widgets/checkout-and-beyond/common.d.ts +29 -0
  15. package/dist/schema/widgets/checkout-and-beyond/discount.d.ts +146 -0
  16. package/dist/schema/widgets/checkout-and-beyond/icons.d.ts +1 -1
  17. package/dist/schema/widgets/checkout-and-beyond/image.d.ts +294 -100
  18. package/dist/schema/widgets/checkout-and-beyond/index.d.ts +1 -0
  19. package/dist/schema/widgets/checkout-and-beyond/layout.d.ts +148 -52
  20. package/dist/schema/widgets/checkout-and-beyond/monetize.d.ts +146 -49
  21. package/dist/schema/widgets/checkout-and-beyond/offers.d.ts +145 -48
  22. package/dist/schema/widgets/checkout-and-beyond/product.d.ts +146 -0
  23. package/dist/schema/widgets/checkout-and-beyond/products.d.ts +292 -0
  24. package/dist/schema/widgets/checkout-and-beyond/progressBar.d.ts +145 -48
  25. package/dist/schema/widgets/checkout-and-beyond/quantity.d.ts +146 -49
  26. package/dist/schema/widgets/checkout-and-beyond/reviews.d.ts +146 -49
  27. package/dist/schema/widgets/checkout-and-beyond/root.d.ts +146 -49
  28. package/dist/schema/widgets/checkout-and-beyond/rule.d.ts +140 -68
  29. package/dist/schema/widgets/checkout-and-beyond/text.d.ts +146 -49
  30. package/dist/schema/widgets/checkout-and-beyond/variables.d.ts +470 -0
  31. package/dist/schema/widgets/checkout-and-beyond/variants.d.ts +146 -49
  32. package/dist/schema/widgets/contentBlock.d.ts +146 -49
  33. package/dist/schema/widgets/lineItemEditor.d.ts +146 -49
  34. package/dist/schema/widgets/rebuyButton.d.ts +146 -49
  35. package/dist/server/index.cjs +492 -416
  36. package/dist/server/index.mjs +492 -416
  37. package/dist/transforms/index.cjs +393 -317
  38. package/dist/transforms/index.mjs +393 -317
  39. package/dist/transforms/monetizeV1/convertMonetizeToV2.d.ts +2 -2
  40. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1272,7 +1272,7 @@ var UserConfig = z7.object({
1272
1272
  });
1273
1273
 
1274
1274
  // src/schema/widgetData.ts
1275
- import { z as z36 } from "zod";
1275
+ import { z as z37 } from "zod";
1276
1276
 
1277
1277
  // src/schema/widgets/abTestingPlaceholder.ts
1278
1278
  import { z as z8 } from "zod";
@@ -1388,6 +1388,8 @@ var languageKeys = [
1388
1388
  "zh"
1389
1389
  ];
1390
1390
  var LanguageKey = freezeEnum(languageKeys);
1391
+ var mutatorEvents = ["item_added", "quantity_changed", "variant_selected"];
1392
+ var MutatorEvent = freezeEnum(mutatorEvents);
1391
1393
  var objectFits = ["cover", "contain"];
1392
1394
  var ObjectFit = freezeEnum(objectFits);
1393
1395
  var popoverPositions = ["inlineStart", "inlineEnd", "blockStart", "blockEnd"];
@@ -1406,6 +1408,10 @@ var progressTierUnits = ["currency", "item"];
1406
1408
  var ProgressTierUnit = freezeEnum(progressTierUnits);
1407
1409
  var quantityInputs = ["select", "number"];
1408
1410
  var QuantityInput = freezeEnum(quantityInputs);
1411
+ var resultCountOperators = ["equals", "greater_than", "less_than"];
1412
+ var ResultCountOperator = freezeEnum(resultCountOperators);
1413
+ var resultTagOperators = ["contains", "does_not_contain"];
1414
+ var ResultTagOperator = freezeEnum(resultTagOperators);
1409
1415
  var reviewsSizes = ["small", "default", "large"];
1410
1416
  var ReviewsSize = freezeEnum(reviewsSizes);
1411
1417
  var sectionTypes = [
@@ -1438,6 +1444,8 @@ var inlineTextSizeNames = ["extraSmall", "small", "base", "medium", "large", "ex
1438
1444
  var InlineTextSizeName = freezeEnum(inlineTextSizeNames);
1439
1445
  var textSizeNames = [...inlineTextSizeNames, "heading"];
1440
1446
  var TextSizeName = freezeEnum(textSizeNames);
1447
+ var variableEffects = ["set_false", "set_true", "toggle"];
1448
+ var VariableEffect = freezeEnum(variableEffects);
1441
1449
  var variantModes = ["multiple", "single"];
1442
1450
  var VariantMode = freezeEnum(variantModes);
1443
1451
  var variantSelectors = ["menu", "radio", "button"];
@@ -1527,87 +1535,20 @@ var CheckoutExtension = z9.looseObject({
1527
1535
  });
1528
1536
 
1529
1537
  // src/schema/widgets/contentBlock.ts
1530
- import { z as z30 } from "zod";
1538
+ import { z as z31 } from "zod";
1531
1539
 
1532
1540
  // src/schema/widgets/checkout-and-beyond/root.ts
1533
- import { z as z29 } from "zod";
1541
+ import { z as z30 } from "zod";
1534
1542
 
1535
1543
  // src/schema/widgets/checkout-and-beyond/layout.ts
1536
1544
  import { v7 as uuidv712 } from "uuid";
1537
- import { z as z28 } from "zod";
1538
-
1539
- // src/schema/widgets/checkout-and-beyond/rule.ts
1540
- import { z as z10 } from "zod";
1541
- var ruleTypes = [
1542
- "cart",
1543
- "cart_count",
1544
- "cart_item_count",
1545
- "cart_line_count",
1546
- "cart_subtotal",
1547
- "collection",
1548
- "customer",
1549
- "customer_order_count",
1550
- "customer_tag",
1551
- "customer_total_spent",
1552
- "date",
1553
- "product",
1554
- "product_tag",
1555
- "product_title",
1556
- "product_type",
1557
- "product_vendor"
1558
- ];
1559
- var ruleType = z10.enum(ruleTypes);
1560
- var RuleType = ruleType.enum;
1561
- var ruleOperators = [
1562
- "after",
1563
- "anything",
1564
- "before",
1565
- "contains",
1566
- "contains_any",
1567
- "does_not_contain",
1568
- "does_not_contain_any",
1569
- "equals",
1570
- "does_not_equal",
1571
- "greater_than",
1572
- "less_than"
1573
- ];
1574
- var ruleOperator = z10.enum(ruleOperators);
1575
- var RuleOperator = ruleOperator.enum;
1576
- var RuleCondition = z10.object({
1577
- operator: z10.enum(ruleOperators).default(RuleOperator.anything),
1578
- products: z10.union([z10.array(z10.unknown()), z10.strictObject({}).transform(() => [])]).default(() => []),
1579
- type: z10.enum(ruleTypes).default(RuleType.cart_subtotal),
1580
- value: z10.coerce.string().default("")
1581
- });
1582
- var RuleLogicBlock = z10.object({
1583
- rules: z10.array(RuleCondition).default(() => [])
1584
- });
1585
- var CABRule = z10.object({
1586
- dataSourceId: z10.number().nullable().default(null),
1587
- enabled: z10.boolean().default(false),
1588
- ruleset: z10.union([
1589
- z10.array(
1590
- z10.object({
1591
- exitIfMatched: z10.boolean().default(true),
1592
- logic: z10.array(RuleLogicBlock).default(() => []),
1593
- output: z10.array(
1594
- z10.object({
1595
- key: z10.string().default("should_show"),
1596
- type: z10.literal("data_json").default("data_json"),
1597
- value: z10.string().default("true")
1598
- })
1599
- ).default(() => [{ key: "should_show", type: "data_json", value: "true" }])
1600
- })
1601
- ),
1602
- z10.strictObject({}).transform(() => [])
1603
- ]).default(() => [])
1604
- });
1545
+ import { z as z29 } from "zod";
1605
1546
 
1606
1547
  // src/schema/widgets/checkout-and-beyond/shared.ts
1607
- import { z as z27 } from "zod";
1548
+ import { z as z28 } from "zod";
1608
1549
 
1609
1550
  // src/schema/widgets/checkout-and-beyond/banner.ts
1610
- import { z as z11 } from "zod";
1551
+ import { z as z10 } from "zod";
1611
1552
 
1612
1553
  // src/schema/widgets/checkout-and-beyond/utils.ts
1613
1554
  import { isPlainObject as isPlainObject2 } from "es-toolkit";
@@ -1684,11 +1625,11 @@ var isTextType = isSectionType(SectionType.text);
1684
1625
  var isVariantsType = isSectionType(SectionType.variants);
1685
1626
 
1686
1627
  // src/schema/widgets/checkout-and-beyond/banner.ts
1687
- var CABBannerSection = z11.lazy(
1628
+ var CABBannerSection = z10.lazy(
1688
1629
  () => CABLayoutSection.omit({ sectionType: true }).extend({
1689
- buttonField: z11.enum(buttonFields).optional(),
1690
- color: z11.enum(bannerColors).default("info"),
1691
- dismissible: z11.boolean().default(true),
1630
+ buttonField: z10.enum(buttonFields).optional(),
1631
+ color: z10.enum(bannerColors).default("info"),
1632
+ dismissible: z10.boolean().default(true),
1692
1633
  /**
1693
1634
  * The `s-banner` heading — localized content (a buyer can see a merchant-composed banner). Absent OR
1694
1635
  * blank ⇒ no heading; the renderer emits no heading slot for `''` rather than an empty one.
@@ -1704,18 +1645,18 @@ var CABBannerSection = z11.lazy(
1704
1645
  * not a 500. Nothing emits `heading` yet; the first converter that maps merchant banner copy into it
1705
1646
  * either strips first or teaches `normalizeTextContent` to strip this field.
1706
1647
  */
1707
- heading: z11.record(z11.string(), z11.string().refine(checkForHTML, NO_HTML)).optional(),
1708
- sectionType: z11.literal(SectionType.banner).default(SectionType.banner)
1648
+ heading: z10.record(z10.string(), z10.string().refine(checkForHTML, NO_HTML)).optional(),
1649
+ sectionType: z10.literal(SectionType.banner).default(SectionType.banner)
1709
1650
  })
1710
1651
  );
1711
1652
 
1712
1653
  // src/schema/widgets/checkout-and-beyond/button.ts
1713
1654
  import { v7 as uuidv73 } from "uuid";
1714
- import { z as z14 } from "zod";
1655
+ import { z as z15 } from "zod";
1715
1656
 
1716
1657
  // src/schema/widgets/checkout-and-beyond/image.ts
1717
1658
  import { v7 as uuidv7 } from "uuid";
1718
- import { z as z12 } from "zod";
1659
+ import { z as z13 } from "zod";
1719
1660
 
1720
1661
  // src/schema/widgets/checkout-and-beyond/icons.ts
1721
1662
  var iconNames = [
@@ -1801,17 +1742,142 @@ var IconSize = freezeEnum(iconSizes);
1801
1742
  var iconTones = ["auto", "critical", "custom", "info", "neutral", "success", "warning"];
1802
1743
  var IconTone = freezeEnum(iconTones);
1803
1744
 
1745
+ // src/schema/widgets/checkout-and-beyond/variables.ts
1746
+ import { z as z12 } from "zod";
1747
+
1748
+ // src/schema/widgets/checkout-and-beyond/rule.ts
1749
+ import { z as z11 } from "zod";
1750
+ var ruleTypes = [
1751
+ "cart",
1752
+ "cart_count",
1753
+ "cart_item_count",
1754
+ "cart_line_count",
1755
+ "cart_subtotal",
1756
+ "collection",
1757
+ "customer",
1758
+ "customer_order_count",
1759
+ "customer_tag",
1760
+ "customer_total_spent",
1761
+ "date",
1762
+ "product",
1763
+ "product_tag",
1764
+ "product_title",
1765
+ "product_type",
1766
+ "product_vendor"
1767
+ ];
1768
+ var ruleType = z11.enum(ruleTypes);
1769
+ var RuleType = ruleType.enum;
1770
+ var ruleOperators = [
1771
+ "after",
1772
+ "anything",
1773
+ "before",
1774
+ "contains",
1775
+ "contains_any",
1776
+ "does_not_contain",
1777
+ "does_not_contain_any",
1778
+ "equals",
1779
+ "does_not_equal",
1780
+ "greater_than",
1781
+ "less_than"
1782
+ ];
1783
+ var ruleOperator = z11.enum(ruleOperators);
1784
+ var RuleOperator = ruleOperator.enum;
1785
+ var RuleCondition = z11.object({
1786
+ operator: z11.enum(ruleOperators).default(RuleOperator.anything),
1787
+ products: z11.union([z11.array(z11.unknown()), z11.strictObject({}).transform(() => [])]).default(() => []),
1788
+ type: z11.enum(ruleTypes).default(RuleType.cart_subtotal),
1789
+ value: z11.coerce.string().default("")
1790
+ });
1791
+ var RuleLogicBlock = z11.object({
1792
+ rules: z11.array(RuleCondition).default(() => [])
1793
+ });
1794
+ var CABRulesetEntry = z11.object({
1795
+ exitIfMatched: z11.boolean().default(true),
1796
+ logic: z11.array(RuleLogicBlock).default(() => []),
1797
+ output: z11.array(
1798
+ z11.object({
1799
+ key: z11.string().default("should_show"),
1800
+ type: z11.literal("data_json").default("data_json"),
1801
+ value: z11.string().default("true")
1802
+ })
1803
+ ).default(() => [{ key: "should_show", type: "data_json", value: "true" }])
1804
+ });
1805
+ var CABRuleset = z11.union([z11.array(CABRulesetEntry), z11.strictObject({}).transform(() => [])]).default(() => []);
1806
+
1807
+ // src/schema/widgets/checkout-and-beyond/variables.ts
1808
+ var variableEffect = z12.enum(variableEffects);
1809
+ var CABVariableSeed = z12.object({
1810
+ dataSourceId: z12.number().nullable().default(null),
1811
+ ruleset: CABRuleset
1812
+ });
1813
+ var CABVariable = z12.object({
1814
+ /**
1815
+ * Holds until the first seed verdict lands (and forever, for unseeded variables). Omitted, it derives
1816
+ * from seededness — `false` with a `seed` (visibility is EARNED), `true` without — via the transform
1817
+ * below; a cross-field default has no `.default()` spelling. An explicit value always wins.
1818
+ */
1819
+ defaultValue: z12.boolean().optional(),
1820
+ name: z12.string().min(1),
1821
+ seed: CABVariableSeed.optional()
1822
+ }).transform(({ defaultValue, ...variable }) => ({
1823
+ defaultValue: defaultValue ?? variable.seed === void 0,
1824
+ ...variable
1825
+ }));
1826
+ var CABVariableEffect = z12.object({
1827
+ effect: variableEffect.default(VariableEffect.toggle),
1828
+ variable: z12.string().min(1)
1829
+ });
1830
+ var CABVisibility = z12.object({
1831
+ variable: z12.string().min(1),
1832
+ visibleWhen: z12.boolean().default(true)
1833
+ });
1834
+ var resultCountOperator = z12.enum(resultCountOperators);
1835
+ var resultTagOperator = z12.enum(resultTagOperators);
1836
+ var mutatorEvent = z12.enum(mutatorEvents);
1837
+ var CABResultCountTrigger = z12.object({
1838
+ operator: resultCountOperator.default(ResultCountOperator.equals),
1839
+ type: z12.literal("result_count"),
1840
+ value: z12.number().default(0)
1841
+ });
1842
+ var CABResultTagTrigger = z12.object({
1843
+ operator: resultTagOperator.default(ResultTagOperator.contains),
1844
+ type: z12.literal("result_tag"),
1845
+ value: z12.string().min(1)
1846
+ });
1847
+ var CABEventTrigger = z12.object({
1848
+ event: mutatorEvent,
1849
+ type: z12.literal("event")
1850
+ });
1851
+ var CABVariableTrigger = z12.discriminatedUnion("type", [
1852
+ CABEventTrigger,
1853
+ CABResultCountTrigger,
1854
+ CABResultTagTrigger
1855
+ ]);
1856
+ var CABVariableMutator = z12.object({
1857
+ effect: variableEffect.default(VariableEffect.set_false),
1858
+ variable: z12.string().min(1),
1859
+ when: CABVariableTrigger
1860
+ });
1861
+ var CABVariableFields = {
1862
+ mutators: z12.array(CABVariableMutator).optional(),
1863
+ variables: z12.array(CABVariable).refine((variables) => new Set(variables.map(({ name }) => name)).size === variables.length, {
1864
+ message: "variable names must be unique within a section"
1865
+ }).optional(),
1866
+ visibility: CABVisibility.optional()
1867
+ };
1868
+
1804
1869
  // src/schema/widgets/checkout-and-beyond/image.ts
1805
- var CABImageSectionFields = z12.object({
1806
- altText: z12.string().refine(checkForHTML, NO_HTML).default(""),
1870
+ var CABImageSectionFields = z13.object({
1871
+ ...CABVariableFields,
1872
+ altText: z13.string().refine(checkForHTML, NO_HTML).default(""),
1807
1873
  /**
1808
1874
  * Image width÷height (e.g. `46` for the progress-bar fill); `null` renders at natural size. Any POSITIVE
1809
1875
  * ratio — never limited to 1, but never `0`/negative either: a renderer dividing by it would get `Infinity`,
1810
1876
  * and CSS `aspect-ratio` drops a negative value and silently reverts to natural size.
1811
1877
  */
1812
- aspectRatio: z12.number().positive().nullable().default(null),
1813
- border: z12.lazy(() => CABBorder),
1814
- buttonField: z12.enum(buttonFields).optional(),
1878
+ aspectRatio: z13.number().positive().nullable().default(null),
1879
+ border: z13.lazy(() => CABBorder),
1880
+ buttonField: z13.enum(buttonFields).optional(),
1815
1881
  /**
1816
1882
  * `icon` renders `source` as a single `s-icon` by name (the uber-image path covers icons too), reading
1817
1883
  * `iconSize`/`iconTone`. The other values are a harmless informational holdover from the previous
@@ -1830,30 +1896,29 @@ var CABImageSectionFields = z12.object({
1830
1896
  * behavior degraded gracefully and told us about it. The client-assembled half of the invariant was never
1831
1897
  * the risky half.
1832
1898
  */
1833
- category: z12.enum(["gallery", "icon", "icons", "payment-methods", "secure-checkout"]).nullable().default(null),
1899
+ category: z13.enum(["gallery", "icon", "icons", "payment-methods", "secure-checkout"]).nullable().default(null),
1834
1900
  /** `icon`-mode only: the `s-icon` `size`; `null` ⇒ the component default (`base`). Ignored by image treatments. */
1835
- iconSize: z12.enum(iconSizes).nullable().default(null),
1901
+ iconSize: z13.enum(iconSizes).nullable().default(null),
1836
1902
  /** `icon`-mode only: the `s-icon` `tone`; `null` ⇒ the component default (`auto`). Ignored by image treatments. */
1837
- iconTone: z12.enum(iconTones).nullable().default(null),
1838
- name: z12.string().optional(),
1839
- naturalHeight: z12.number().default(0),
1840
- naturalWidth: z12.number().default(0),
1903
+ iconTone: z13.enum(iconTones).nullable().default(null),
1904
+ name: z13.string().optional(),
1905
+ naturalHeight: z13.number().default(0),
1906
+ naturalWidth: z13.number().default(0),
1841
1907
  /**
1842
1908
  * `contain` (the component default): dimensionless images render in s-image's 1/1 default frame, and
1843
1909
  * `cover` would crop non-square art (payment badges lost their edges — 15993); `contain` letterboxes.
1844
1910
  */
1845
- objectFit: z12.enum(objectFits).default(ObjectFit.contain),
1846
- rule: CABRule.optional(),
1847
- sectionId: z12.uuid().default(() => uuidv7()),
1848
- sectionType: z12.literal(SectionType.image).default(SectionType.image),
1911
+ objectFit: z13.enum(objectFits).default(ObjectFit.contain),
1912
+ sectionId: z13.uuid().default(() => uuidv7()),
1913
+ sectionType: z13.literal(SectionType.image).default(SectionType.image),
1849
1914
  /**
1850
1915
  * An image URL or dynamic token, an empty default, or — when `category: 'icon'` — an icon NAME. Icon mode
1851
1916
  * takes a name or `''` only, NOT a token: no renderer resolves a token to an icon today, so accepting one
1852
1917
  * would promise a capability that doesn't exist. Widen the refine's carve-out to `DYNAMIC_TOKEN_REGEX` when a
1853
1918
  * server-chosen tier icon actually needs it.
1854
1919
  */
1855
- source: z12.union([z12.url(), z12.literal(""), z12.string().regex(DYNAMIC_TOKEN_REGEX), z12.enum(iconNames)]).default(""),
1856
- width: z12.number().default(100)
1920
+ source: z13.union([z13.url(), z13.literal(""), z13.string().regex(DYNAMIC_TOKEN_REGEX), z13.enum(iconNames)]).default(""),
1921
+ width: z13.number().default(100)
1857
1922
  });
1858
1923
  var iconNameSet = new Set(iconNames);
1859
1924
  var isIconName = (source) => iconNameSet.has(source);
@@ -1875,71 +1940,71 @@ var CABImageSection = CABImageSectionFields.superRefine(({ category, source }, c
1875
1940
  // src/schema/widgets/checkout-and-beyond/text.ts
1876
1941
  import { forEach, isString as isString2 } from "es-toolkit/compat";
1877
1942
  import { v7 as uuidv72 } from "uuid";
1878
- import { z as z13 } from "zod";
1879
- var enumOrOmit = (...vals) => z13.string().transform((val) => vals.includes(val) ? val : void 0).optional();
1880
- var TiptapText = z13.object({
1881
- marks: z13.union([
1882
- z13.array(
1883
- z13.discriminatedUnion("type", [
1884
- z13.object({ type: z13.literal("bold") }),
1885
- z13.object({ type: z13.literal("italic") }),
1886
- z13.object({
1887
- attrs: z13.object({
1888
- class: z13.string().nullable(),
1889
- href: z13.union([
1890
- z13.url(),
1891
- z13.literal("#"),
1892
- z13.string().regex(DYNAMIC_TOKEN_REGEX),
1893
- z13.string().regex(ROOT_RELATIVE_PATH_REGEX)
1943
+ import { z as z14 } from "zod";
1944
+ var enumOrOmit = (...vals) => z14.string().transform((val) => vals.includes(val) ? val : void 0).optional();
1945
+ var TiptapText = z14.object({
1946
+ marks: z14.union([
1947
+ z14.array(
1948
+ z14.discriminatedUnion("type", [
1949
+ z14.object({ type: z14.literal("bold") }),
1950
+ z14.object({ type: z14.literal("italic") }),
1951
+ z14.object({
1952
+ attrs: z14.object({
1953
+ class: z14.string().nullable(),
1954
+ href: z14.union([
1955
+ z14.url(),
1956
+ z14.literal("#"),
1957
+ z14.string().regex(DYNAMIC_TOKEN_REGEX),
1958
+ z14.string().regex(ROOT_RELATIVE_PATH_REGEX)
1894
1959
  ]),
1895
- rel: z13.string().default("noopener noreferrer nofollow"),
1896
- target: z13.string().default("_blank")
1960
+ rel: z14.string().default("noopener noreferrer nofollow"),
1961
+ target: z14.string().default("_blank")
1897
1962
  }),
1898
- type: z13.literal("link")
1963
+ type: z14.literal("link")
1899
1964
  }),
1900
- z13.object({ type: z13.literal("strike") }),
1901
- z13.object({
1902
- attrs: z13.object({
1965
+ z14.object({ type: z14.literal("strike") }),
1966
+ z14.object({
1967
+ attrs: z14.object({
1903
1968
  color: enumOrOmit(...textColorNames).default(TextColorName.base),
1904
1969
  fontSize: enumOrOmit(...textSizeNames).default(TextSizeName.base)
1905
1970
  }),
1906
- type: z13.literal("textStyle")
1971
+ type: z14.literal("textStyle")
1907
1972
  })
1908
1973
  ])
1909
1974
  ),
1910
- z13.strictObject({}).transform(() => [])
1975
+ z14.strictObject({}).transform(() => [])
1911
1976
  ]).optional(),
1912
- text: z13.string().default(""),
1913
- type: z13.literal("text").default("text")
1977
+ text: z14.string().default(""),
1978
+ type: z14.literal("text").default("text")
1914
1979
  });
1915
- var TiptapParagraph = z13.object({
1916
- attrs: z13.object({
1980
+ var TiptapParagraph = z14.object({
1981
+ attrs: z14.object({
1917
1982
  textAlign: enumOrOmit(...textAlignments)
1918
1983
  }).default({ textAlign: TextAlignment.start }),
1919
- content: z13.union([z13.array(TiptapText), z13.strictObject({}).transform(() => [])]).default(() => []),
1920
- type: z13.literal("paragraph").default("paragraph")
1984
+ content: z14.union([z14.array(TiptapText), z14.strictObject({}).transform(() => [])]).default(() => []),
1985
+ type: z14.literal("paragraph").default("paragraph")
1921
1986
  });
1922
- var TiptapDocument = z13.object({
1923
- attrs: z13.object({
1987
+ var TiptapDocument = z14.object({
1988
+ attrs: z14.object({
1924
1989
  blockSpacing: enumOrOmit(...spacings)
1925
1990
  }).default({ blockSpacing: Spacing.base }),
1926
- content: z13.union([z13.array(TiptapParagraph), z13.strictObject({}).transform(() => [])]).default(() => [TiptapParagraph.parse({})]),
1927
- type: z13.literal("doc").default("doc")
1991
+ content: z14.union([z14.array(TiptapParagraph), z14.strictObject({}).transform(() => [])]).default(() => [TiptapParagraph.parse({})]),
1992
+ type: z14.literal("doc").default("doc")
1928
1993
  });
1929
- var CABTextTier = z13.object({
1930
- threshold: z13.number().int().nonnegative(),
1931
- thresholds: z13.record(z13.string(), z13.number().int().nonnegative()).default(() => ({})),
1932
- tierId: z13.string().optional(),
1933
- tierType: z13.enum(progressTierTypes).default(ProgressTierType.shipping)
1994
+ var CABTextTier = z14.object({
1995
+ threshold: z14.number().int().nonnegative(),
1996
+ thresholds: z14.record(z14.string(), z14.number().int().nonnegative()).default(() => ({})),
1997
+ tierId: z14.string().optional(),
1998
+ tierType: z14.enum(progressTierTypes).default(ProgressTierType.shipping)
1934
1999
  });
1935
- var CABTextSection = z13.object({
1936
- buttonField: z13.enum(buttonFields).optional(),
1937
- content: z13.record(z13.string(), z13.union([z13.string(), TiptapDocument]).refine(checkForHTML, NO_HTML).optional()).default({ en: TiptapDocument.parse({}) }).optional(),
1938
- name: z13.string().optional(),
1939
- optionId: z13.number().optional(),
1940
- rule: CABRule.optional(),
1941
- sectionId: z13.uuid().default(() => uuidv72()),
1942
- sectionType: z13.literal(SectionType.text).default(SectionType.text),
2000
+ var CABTextSection = z14.object({
2001
+ ...CABVariableFields,
2002
+ buttonField: z14.enum(buttonFields).optional(),
2003
+ content: z14.record(z14.string(), z14.union([z14.string(), TiptapDocument]).refine(checkForHTML, NO_HTML).optional()).default({ en: TiptapDocument.parse({}) }).optional(),
2004
+ name: z14.string().optional(),
2005
+ optionId: z14.number().optional(),
2006
+ sectionId: z14.uuid().default(() => uuidv72()),
2007
+ sectionType: z14.literal(SectionType.text).default(SectionType.text),
1943
2008
  tier: CABTextTier.optional()
1944
2009
  }).superRefine(({ buttonField, content }, ctx) => {
1945
2010
  if (buttonField === ButtonField.destinationUrl && content) {
@@ -1961,35 +2026,35 @@ var CABTextSection = z13.object({
1961
2026
  });
1962
2027
 
1963
2028
  // src/schema/widgets/checkout-and-beyond/button.ts
1964
- var CABButtonContent = z14.lazy(
1965
- () => z14.discriminatedUnion("sectionType", [CABImageSection, CABLayoutSection, CABTextSection])
2029
+ var CABButtonContent = z15.lazy(
2030
+ () => z15.discriminatedUnion("sectionType", [CABImageSection, CABLayoutSection, CABTextSection])
1966
2031
  );
1967
- var CABButtonSection = z14.object({
1968
- action: z14.union([z14.literal(""), z14.enum(buttonActions)]).default(""),
1969
- buttonStyle: z14.enum(buttonStyles).default(ButtonStyle.primary),
1970
- custom: z14.object({
1971
- color: z14.string().regex(HEX_COLOR_REGEX).default("#005bd3"),
1972
- height: z14.number().default(52),
1973
- width: z14.number().default(300)
2032
+ var CABButtonSection = z15.object({
2033
+ ...CABVariableFields,
2034
+ action: z15.union([z15.literal(""), z15.enum(buttonActions)]).default(""),
2035
+ buttonStyle: z15.enum(buttonStyles).default(ButtonStyle.primary),
2036
+ custom: z15.object({
2037
+ color: z15.string().regex(HEX_COLOR_REGEX).default("#005bd3"),
2038
+ height: z15.number().default(52),
2039
+ width: z15.number().default(300)
1974
2040
  }).default({
1975
2041
  color: "#005bd3",
1976
2042
  height: 52,
1977
2043
  width: 300
1978
2044
  }),
1979
- disableDowngrade: z14.boolean().default(false),
1980
- name: z14.string().optional(),
1981
- optionId: z14.number().optional(),
1982
- popover: z14.object({
1983
- alignment: z14.enum(textAlignments).default(TextAlignment.center),
1984
- position: z14.enum(popoverPositions).default(PopoverPosition.blockStart)
2045
+ disableDowngrade: z15.boolean().default(false),
2046
+ name: z15.string().optional(),
2047
+ optionId: z15.number().optional(),
2048
+ popover: z15.object({
2049
+ alignment: z15.enum(textAlignments).default(TextAlignment.center),
2050
+ position: z15.enum(popoverPositions).default(PopoverPosition.blockStart)
1985
2051
  }).optional().default(() => ({
1986
2052
  alignment: TextAlignment.center,
1987
2053
  position: PopoverPosition.blockStart
1988
2054
  })),
1989
- rule: CABRule.optional(),
1990
- sectionId: z14.uuid().default(() => uuidv73()),
1991
- sections: z14.union([z14.array(CABButtonContent), z14.strictObject({}).transform(() => [])]).default(() => []),
1992
- sectionType: z14.literal(SectionType.button).default(SectionType.button),
2055
+ sectionId: z15.uuid().default(() => uuidv73()),
2056
+ sections: z15.union([z15.array(CABButtonContent), z15.strictObject({}).transform(() => [])]).default(() => []),
2057
+ sectionType: z15.literal(SectionType.button).default(SectionType.button),
1993
2058
  /**
1994
2059
  * The smart-cart tier this button acts on (`addGift`/`removeGift`): scopes the click to one tier's gift. The
1995
2060
  * client resolves the tier's gift (productId) from the progress-bar context by this `tierId` — the button node
@@ -2004,86 +2069,93 @@ var CABButtonSection = z14.object({
2004
2069
  * lookup finds no tier and the click resolves to nothing. Safe to bound — the field is new, so there are no
2005
2070
  * stored payloads to grandfather, and the producer is client code, not a merchant form.
2006
2071
  */
2007
- tier: z14.object({ tierId: z14.string().min(1) }).optional(),
2072
+ tier: z15.object({ tierId: z15.string().min(1) }).optional(),
2008
2073
  /** Fire-and-forget pixel POSTed when the button is clicked (e.g. a Monetize decline). */
2009
- trackingUrl: z14.string().optional()
2074
+ trackingUrl: z15.string().optional(),
2075
+ /**
2076
+ * Secondary effects applied to in-scope variables on click, alongside (never instead of) the primary
2077
+ * `action` — an `addToOrder` button can also flip a variable. Applied in array order.
2078
+ */
2079
+ variableEffects: z15.array(CABVariableEffect).optional()
2010
2080
  });
2011
2081
 
2012
2082
  // src/schema/widgets/checkout-and-beyond/carousel.ts
2013
- import { z as z19 } from "zod";
2083
+ import { z as z20 } from "zod";
2014
2084
 
2015
2085
  // src/schema/widgets/checkout-and-beyond/offers.ts
2016
- import { z as z18 } from "zod";
2086
+ import { z as z19 } from "zod";
2017
2087
 
2018
2088
  // src/schema/widgets/checkout-and-beyond/dataSource.ts
2019
2089
  import { v7 as uuidv74 } from "uuid";
2020
- import { z as z15 } from "zod";
2021
- var CABDiscount = z15.object({
2022
- amount: z15.union([z15.number(), z15.string()]).catch(0),
2023
- discountedBy: z15.string().optional(),
2024
- discountedFrom: z15.enum(discountSources).optional().catch(void 0),
2025
- type: z15.enum(discountTypes).catch("none")
2090
+ import { z as z16 } from "zod";
2091
+ var CABDiscount = z16.object({
2092
+ amount: z16.union([z16.number(), z16.string()]).catch(0),
2093
+ discountedBy: z16.string().optional(),
2094
+ discountedFrom: z16.enum(discountSources).optional().catch(void 0),
2095
+ type: z16.enum(discountTypes).catch("none")
2026
2096
  });
2027
- var CABIntegrations = z15.object({
2028
- judgeme: z15.boolean().default(false),
2029
- junip: z15.boolean().default(false),
2030
- klaviyo: z15.boolean().default(false),
2031
- loox: z15.boolean().default(false),
2032
- okendo: z15.boolean().default(false),
2033
- opinew: z15.boolean().default(false),
2034
- reviewsio: z15.boolean().default(false),
2035
- stamped: z15.boolean().default(false),
2036
- yotpo: z15.boolean().default(false)
2097
+ var CABIntegrations = z16.object({
2098
+ judgeme: z16.boolean().default(false),
2099
+ junip: z16.boolean().default(false),
2100
+ klaviyo: z16.boolean().default(false),
2101
+ loox: z16.boolean().default(false),
2102
+ okendo: z16.boolean().default(false),
2103
+ opinew: z16.boolean().default(false),
2104
+ reviewsio: z16.boolean().default(false),
2105
+ stamped: z16.boolean().default(false),
2106
+ yotpo: z16.boolean().default(false)
2037
2107
  });
2038
- var CABDataSourceSection = z15.object({
2039
- dataSourceId: z15.number().nullable().default(null),
2040
- dataSourcePath: z15.string().default(DEFAULT_ENDPOINTS[0].value),
2108
+ var CABDataSourceSection = z16.object({
2109
+ dataSourceId: z16.number().nullable().default(null),
2110
+ dataSourcePath: z16.string().default(DEFAULT_ENDPOINTS[0].value),
2041
2111
  discount: CABDiscount.optional(),
2042
2112
  integrations: CABIntegrations.optional(),
2043
- limit: z15.number().default(1),
2044
- matchVariant: z15.boolean().default(false),
2045
- matchVariantOutOfStock: z15.boolean().default(false),
2046
- name: z15.string().default(DEFAULT_ENDPOINTS[0].label),
2047
- productType: z15.enum(productTypes).optional(),
2048
- sectionId: z15.uuid().default(() => uuidv74()),
2049
- sectionType: z15.literal(SectionType.dataSource).default(SectionType.dataSource),
2113
+ limit: z16.number().default(1),
2114
+ matchVariant: z16.boolean().default(false),
2115
+ matchVariantOutOfStock: z16.boolean().default(false),
2116
+ name: z16.string().default(DEFAULT_ENDPOINTS[0].label),
2117
+ productType: z16.enum(productTypes).optional(),
2118
+ sectionId: z16.uuid().default(() => uuidv74()),
2119
+ sectionType: z16.literal(SectionType.dataSource).default(SectionType.dataSource),
2050
2120
  /** Default subscribe-vs-one-time for `productType: both` (legacy `subscription_is_default`). */
2051
- subscriptionIsDefault: z15.boolean().default(false),
2052
- treatAsGwp: z15.boolean().default(false)
2121
+ subscriptionIsDefault: z16.boolean().default(false),
2122
+ treatAsGwp: z16.boolean().default(false)
2053
2123
  });
2054
2124
 
2055
2125
  // src/schema/widgets/checkout-and-beyond/products.ts
2056
2126
  import { v7 as uuidv76 } from "uuid";
2057
- import { z as z17 } from "zod";
2127
+ import { z as z18 } from "zod";
2058
2128
 
2059
2129
  // src/schema/widgets/checkout-and-beyond/product.ts
2060
2130
  import { v7 as uuidv75 } from "uuid";
2061
- import { z as z16 } from "zod";
2062
- var CABVariantContent = z16.lazy(
2063
- () => z16.discriminatedUnion("sectionType", [CABButtonSection, CABTextSection])
2131
+ import { z as z17 } from "zod";
2132
+ var CABVariantContent = z17.lazy(
2133
+ () => z17.discriminatedUnion("sectionType", [CABButtonSection, CABTextSection])
2064
2134
  );
2065
- var CABProductSection = z16.object({
2066
- name: z16.string().optional(),
2067
- productId: z16.number().nullable().default(null),
2068
- sectionId: z16.uuid().default(() => uuidv75()),
2069
- sections: z16.union([z16.array(CABVariantContent), z16.strictObject({}).transform(() => [])]).default(() => []),
2070
- sectionType: z16.literal(SectionType.product).default(SectionType.product),
2071
- selectors: z16.record(z16.string(), z16.enum(variantSelectors).default(VariantSelector.menu)).default(() => ({})),
2072
- variantMode: z16.enum(variantModes).default(VariantMode.multiple)
2135
+ var CABProductSection = z17.object({
2136
+ ...CABVariableFields,
2137
+ name: z17.string().optional(),
2138
+ productId: z17.number().nullable().default(null),
2139
+ sectionId: z17.uuid().default(() => uuidv75()),
2140
+ sections: z17.union([z17.array(CABVariantContent), z17.strictObject({}).transform(() => [])]).default(() => []),
2141
+ sectionType: z17.literal(SectionType.product).default(SectionType.product),
2142
+ selectors: z17.record(z17.string(), z17.enum(variantSelectors).default(VariantSelector.menu)).default(() => ({})),
2143
+ variantMode: z17.enum(variantModes).default(VariantMode.multiple)
2073
2144
  });
2074
2145
 
2075
2146
  // src/schema/widgets/checkout-and-beyond/products.ts
2076
- var CABProductsSection = z17.object({
2077
- name: z17.string().optional(),
2078
- sectionId: z17.uuid().default(() => uuidv76()),
2079
- sections: z17.union([z17.array(z17.lazy(() => CABProductSection)), z17.strictObject({}).transform(() => [])]).default(() => []),
2080
- sectionType: z17.literal(SectionType.products).default(SectionType.products)
2147
+ var CABProductsSection = z18.object({
2148
+ ...CABVariableFields,
2149
+ name: z18.string().optional(),
2150
+ sectionId: z18.uuid().default(() => uuidv76()),
2151
+ sections: z18.union([z18.array(z18.lazy(() => CABProductSection)), z18.strictObject({}).transform(() => [])]).default(() => []),
2152
+ sectionType: z18.literal(SectionType.products).default(SectionType.products)
2081
2153
  });
2082
2154
 
2083
2155
  // src/schema/widgets/checkout-and-beyond/offers.ts
2084
- var CABOffersSection = z18.lazy(
2156
+ var CABOffersSection = z19.lazy(
2085
2157
  () => CABLayoutSection.omit({ sections: true, sectionType: true }).extend({
2086
- sections: z18.union([z18.array(z18.lazy(() => CABSection)), z18.strictObject({}).transform(() => [])]).default(() => [
2158
+ sections: z19.union([z19.array(z19.lazy(() => CABSection)), z19.strictObject({}).transform(() => [])]).default(() => [
2087
2159
  CABBannerSection.parse({
2088
2160
  buttonField: "undoAddToOrder",
2089
2161
  color: "success",
@@ -2097,64 +2169,65 @@ var CABOffersSection = z18.lazy(
2097
2169
  CABDataSourceSection.parse({}),
2098
2170
  CABProductsSection.parse({})
2099
2171
  ]),
2100
- sectionType: z18.literal(SectionType.offers).default(SectionType.offers)
2172
+ sectionType: z19.literal(SectionType.offers).default(SectionType.offers)
2101
2173
  })
2102
2174
  );
2103
2175
 
2104
2176
  // src/schema/widgets/checkout-and-beyond/carousel.ts
2105
- var CABCarouselSection = z19.lazy(
2177
+ var CABCarouselSection = z20.lazy(
2106
2178
  () => CABLayoutSection.omit({ sections: true, sectionType: true }).extend({
2107
- autoAdvanceInterval: z19.number().default(0),
2108
- itemsAtOnce: z19.number().min(1).default(1),
2179
+ autoAdvanceInterval: z20.number().default(0),
2180
+ itemsAtOnce: z20.number().min(1).default(1),
2109
2181
  /** Card arrangement for the offers child (`horizontal` = side-by-side) — NOT the carousel's own `direction`. */
2110
- offersDirection: z19.enum(offersDirections).default("vertical"),
2111
- sections: z19.union([z19.array(z19.lazy(() => CABSection)), z19.strictObject({}).transform(() => [])]).default(() => [CABOffersSection.parse({})]),
2112
- sectionType: z19.literal(SectionType.carousel).default(SectionType.carousel)
2182
+ offersDirection: z20.enum(offersDirections).default("vertical"),
2183
+ sections: z20.union([z20.array(z20.lazy(() => CABSection)), z20.strictObject({}).transform(() => [])]).default(() => [CABOffersSection.parse({})]),
2184
+ sectionType: z20.literal(SectionType.carousel).default(SectionType.carousel)
2113
2185
  })
2114
2186
  );
2115
2187
 
2116
2188
  // src/schema/widgets/checkout-and-beyond/cartLine.ts
2117
- import { z as z20 } from "zod";
2118
- var CABCartLineSection = z20.lazy(
2189
+ import { z as z21 } from "zod";
2190
+ var CABCartLineSection = z21.lazy(
2119
2191
  () => CABLayoutSection.omit({ sections: true, sectionType: true }).extend({
2120
- sections: z20.union([z20.array(z20.lazy(() => CABSection)), z20.strictObject({}).transform(() => [])]).default(() => [CABButtonSection.parse({ action: ButtonAction.switchToSubscription })]),
2121
- sectionType: z20.literal(SectionType.cartLine).default(SectionType.cartLine)
2192
+ sections: z21.union([z21.array(z21.lazy(() => CABSection)), z21.strictObject({}).transform(() => [])]).default(() => [CABButtonSection.parse({ action: ButtonAction.switchToSubscription })]),
2193
+ sectionType: z21.literal(SectionType.cartLine).default(SectionType.cartLine)
2122
2194
  })
2123
2195
  );
2124
2196
 
2125
2197
  // src/schema/widgets/checkout-and-beyond/discount.ts
2126
2198
  import { v7 as uuidv77 } from "uuid";
2127
- import { z as z21 } from "zod";
2128
- var CABDiscountSection = z21.object({
2129
- amount: z21.union([z21.number(), z21.string()]).catch(0),
2130
- discountedBy: z21.string().optional(),
2131
- discountedFrom: z21.enum(discountSources).optional().catch(void 0),
2132
- message: z21.string().optional(),
2133
- name: z21.string().optional(),
2134
- quantity: z21.number().default(1),
2135
- sectionId: z21.uuid().default(() => uuidv77()),
2136
- sectionType: z21.literal(SectionType.discount).default(SectionType.discount),
2137
- type: z21.enum(discountTypes).catch("none")
2199
+ import { z as z22 } from "zod";
2200
+ var CABDiscountSection = z22.object({
2201
+ ...CABVariableFields,
2202
+ amount: z22.union([z22.number(), z22.string()]).catch(0),
2203
+ discountedBy: z22.string().optional(),
2204
+ discountedFrom: z22.enum(discountSources).optional().catch(void 0),
2205
+ message: z22.string().optional(),
2206
+ name: z22.string().optional(),
2207
+ quantity: z22.number().default(1),
2208
+ sectionId: z22.uuid().default(() => uuidv77()),
2209
+ sectionType: z22.literal(SectionType.discount).default(SectionType.discount),
2210
+ type: z22.enum(discountTypes).catch("none")
2138
2211
  });
2139
2212
 
2140
2213
  // src/schema/widgets/checkout-and-beyond/monetize.ts
2141
2214
  import { v7 as uuidv78 } from "uuid";
2142
- import { z as z22 } from "zod";
2143
- var CABMonetizeSection = z22.object({
2144
- name: z22.string().optional(),
2215
+ import { z as z23 } from "zod";
2216
+ var CABMonetizeSection = z23.object({
2217
+ ...CABVariableFields,
2218
+ name: z23.string().optional(),
2145
2219
  /** Privacy Policy footer href (the widget's `privacy_policy_url` setting); the client relays it to `/cab/monetize`. */
2146
- privacyPolicyUrl: z22.string().optional(),
2147
- rule: CABRule.optional(),
2148
- sectionId: z22.uuid().default(() => uuidv78()),
2149
- sectionType: z22.literal(SectionType.monetize).default(SectionType.monetize),
2220
+ privacyPolicyUrl: z23.string().optional(),
2221
+ sectionId: z23.uuid().default(() => uuidv78()),
2222
+ sectionType: z23.literal(SectionType.monetize).default(SectionType.monetize),
2150
2223
  /** Ads-taxonomy sub-vertical id (the widget's `sub_vertical` setting); paired with `vertical`. */
2151
- subVertical: z22.string().optional(),
2224
+ subVertical: z23.string().optional(),
2152
2225
  /** Ads-taxonomy vertical id (the widget's `vertical` setting) — with `subVertical`, the admin Monetize editor's two configurables. */
2153
- vertical: z22.string().optional()
2226
+ vertical: z23.string().optional()
2154
2227
  });
2155
2228
 
2156
2229
  // src/schema/widgets/checkout-and-beyond/progressBar.ts
2157
- import { z as z23 } from "zod";
2230
+ import { z as z24 } from "zod";
2158
2231
 
2159
2232
  // src/schema/widgets/checkout-and-beyond/giftLabels.ts
2160
2233
  var GIFT_LABELS = {
@@ -2273,21 +2346,21 @@ var GIFT_LABELS = {
2273
2346
  };
2274
2347
 
2275
2348
  // src/schema/widgets/checkout-and-beyond/progressBar.ts
2276
- var CABProgressTier = z23.object({
2349
+ var CABProgressTier = z24.object({
2277
2350
  /**
2278
2351
  * Order-discount tiers only (onsite `discount`): the reward the order-discount Function applies at
2279
2352
  * cart time, carried so the client can resolve the `{{discountAmount}}` token in this tier's copy.
2280
2353
  * `fixedAmount`: shop-currency CENTS (FX-scaled by the client, like {@link CABProgressTier.threshold});
2281
2354
  * `percentage`: the whole-percent number rendered raw (`{n}%`). Absent on non-discount tiers.
2282
2355
  */
2283
- discount: z23.object({ amount: z23.number().nonnegative(), type: z23.enum(["fixedAmount", "percentage"]) }).optional(),
2356
+ discount: z24.object({ amount: z24.number().nonnegative(), type: z24.enum(["fixedAmount", "percentage"]) }).optional(),
2284
2357
  /**
2285
2358
  * Smart-cart product (gift) tiers only (onsite `filter_oos_variants`): when set, the client drops this
2286
2359
  * tier entirely once its gift has NO in-stock eligible variant — the milestone, fill slot and gift
2287
2360
  * controls all disappear, mirroring onsite removing the tier from `bar.tiers` before it renders. Absent
2288
2361
  * on shipping/discount/decorative tiers and left off by default (the tier renders regardless of stock).
2289
2362
  */
2290
- filterOosVariants: z23.boolean().default(false),
2363
+ filterOosVariants: z24.boolean().default(false),
2291
2364
  /**
2292
2365
  * Smart-cart product (gift) tiers only: the reward unlocked at this tier. The client enriches
2293
2366
  * `productId`/`variantIds` to live variants (availability, price) and adds the chosen one to the cart
@@ -2295,10 +2368,10 @@ var CABProgressTier = z23.object({
2295
2368
  * tiers and on tiers with no configured product. Cart add/remove is a later stage; carried here so the
2296
2369
  * tree is complete.
2297
2370
  */
2298
- gift: z23.object({
2299
- productId: z23.number().int().positive(),
2300
- title: z23.string().optional(),
2301
- variantIds: z23.array(z23.number().int().positive()).default(() => [])
2371
+ gift: z24.object({
2372
+ productId: z24.number().int().positive(),
2373
+ title: z24.string().optional(),
2374
+ variantIds: z24.array(z24.number().int().positive()).default(() => [])
2302
2375
  }).optional(),
2303
2376
  /**
2304
2377
  * The step-row label at this tier's slot (onsite `getTierLabel`): the merchant custom label, else the
@@ -2309,35 +2382,35 @@ var CABProgressTier = z23.object({
2309
2382
  * turns a blank label into an absent key, and a client-authored blank means the same thing — the renderer
2310
2383
  * emits no caption slot rather than an empty one). Plain text — a compact icon+label.
2311
2384
  */
2312
- label: z23.record(z23.string(), z23.string()).optional(),
2385
+ label: z24.record(z24.string(), z24.string()).optional(),
2313
2386
  /**
2314
2387
  * Smart-cart product (gift) tiers only (onsite `product_tier_image`): show the gift's product image in
2315
2388
  * the step-row slot instead of the generic bag icon. The converter can't supply the image URL (config
2316
2389
  * carries only product IDs), so the client resolves it (authoritative Shopify featured image, React
2317
2390
  * parity) and falls back to the bag icon when the flag is off or no image resolves. Default false.
2318
2391
  */
2319
- productTierImage: z23.boolean().default(false),
2392
+ productTierImage: z24.boolean().default(false),
2320
2393
  /**
2321
2394
  * The tier's goal, measured per `unit`. `currency` (default): SHOP-currency cents — the canonical
2322
2395
  * fallback: when the buyer's presentment currency has no entry in `thresholds`, the client
2323
2396
  * multiplies this by the live FX rate (converter maps the v1 `unlock_price`, e.g. `75` → `7500`).
2324
2397
  * `item`: a raw item count — no cents, no FX, no `thresholds` overrides.
2325
2398
  */
2326
- threshold: z23.number().int().nonnegative(),
2399
+ threshold: z24.number().int().nonnegative(),
2327
2400
  /**
2328
2401
  * Per-presentment-currency goal overrides — lowercased ISO currency code → cents (e.g. `{ cad: 9900 }`).
2329
2402
  * When the buyer's currency has an entry, the client uses it verbatim INSTEAD of FX-converting
2330
2403
  * `threshold`, so merchants show intentional, clean per-market amounts (Shopify Markets) rather than a
2331
2404
  * converted base. Defaults to `{}` — no overrides means always fall back to `threshold`.
2332
2405
  */
2333
- thresholds: z23.record(z23.string(), z23.number().int().nonnegative()).default(() => ({})),
2406
+ thresholds: z24.record(z24.string(), z24.number().int().nonnegative()).default(() => ({})),
2334
2407
  /**
2335
2408
  * Smart-cart tier identifier, mirrored onto the gift cart line's `_tier` attribute so the client can
2336
2409
  * match an in-cart gift back to its tier (add on reach, remove on downgrade/decline). Absent on the
2337
2410
  * shipping bar (single unlabeled tier, no gift).
2338
2411
  */
2339
- tierId: z23.string().optional(),
2340
- tierType: z23.enum(progressTierTypes).default(ProgressTierType.shipping),
2412
+ tierId: z24.string().optional(),
2413
+ tierType: z24.enum(progressTierTypes).default(ProgressTierType.shipping),
2341
2414
  /**
2342
2415
  * What this tier's progress is measured in — PER TIER (onsite's `unlock_condition_type` model, NOT
2343
2416
  * the React port's bar-level `tiers[0]` shortcut). `currency` compares money cents against the
@@ -2348,9 +2421,9 @@ var CABProgressTier = z23.object({
2348
2421
  * count carries no injected noun (no English `item`/`items` inflection on localized copy); merchant
2349
2422
  * template text supplies grammatically-neutral wording around the token.
2350
2423
  */
2351
- unit: z23.enum(progressTierUnits).default(ProgressTierUnit.currency)
2424
+ unit: z24.enum(progressTierUnits).default(ProgressTierUnit.currency)
2352
2425
  });
2353
- var CABProgressBarSection = z23.lazy(
2426
+ var CABProgressBarSection = z24.lazy(
2354
2427
  () => CABLayoutSection.omit({ sectionType: true }).extend({
2355
2428
  /**
2356
2429
  * The onsite bar id (smart-cart TPB bars only). The client mirrors it to the cart's `_barId` attribute
@@ -2359,35 +2432,35 @@ var CABProgressBarSection = z23.lazy(
2359
2432
  * checkout reaches the extension without it, so the client writes it or the tier gift's 100% discount
2360
2433
  * (and any tier order discount) never applies. Absent on the v1 shipping bar (no gift tiers, no id).
2361
2434
  */
2362
- barId: z23.string().optional(),
2435
+ barId: z24.string().optional(),
2363
2436
  /** Empty = shown everywhere; otherwise uppercase ISO country codes. */
2364
- countryCodes: z23.array(z23.string().transform((code) => code.trim().toUpperCase())).default(() => []),
2437
+ countryCodes: z24.array(z24.string().transform((code) => code.trim().toUpperCase())).default(() => []),
2365
2438
  /**
2366
2439
  * Uppercase ISO codes where a higher-precedence geo bar applies, so this (default, non-geo) bar is
2367
2440
  * hidden there — replicates React `getbar`'s geo-match-over-default precedence. Empty = never excluded.
2368
2441
  */
2369
- excludeCountryCodes: z23.array(z23.string().transform((code) => code.trim().toUpperCase())).default(() => []),
2442
+ excludeCountryCodes: z24.array(z24.string().transform((code) => code.trim().toUpperCase())).default(() => []),
2370
2443
  /**
2371
2444
  * Measure progress against the PRE-discount subtotal (onsite `exclude_discount_in_subtotal`, and
2372
2445
  * forced on for bars with a discount tier so its own reward can't un-reach the tier). The client
2373
2446
  * adds the cart's discount allocations back to the live subtotal.
2374
2447
  */
2375
- excludeDiscountInSubtotal: z23.boolean().default(false),
2448
+ excludeDiscountInSubtotal: z24.boolean().default(false),
2376
2449
  /** Variant ids the client subtracts from the adjusted subtotal (React `bar.excluded_products`). */
2377
- excludedVariantIds: z23.array(z23.number().int().positive()).default(() => []),
2450
+ excludedVariantIds: z24.array(z24.number().int().positive()).default(() => []),
2378
2451
  /**
2379
2452
  * When the cart holds a subscription item, treat the bar as reached regardless of subtotal (React
2380
2453
  * `free_shipping_on_subscription(s)`). `freeShippingOnAll` is already a zero-threshold tier instead.
2381
2454
  */
2382
- freeShippingOnSubscription: z23.boolean().default(false),
2455
+ freeShippingOnSubscription: z24.boolean().default(false),
2383
2456
  /** Localized heading over the gift controls (onsite `gift_area_title`, default 'FREE GIFTS'). */
2384
- giftAreaTitle: z23.record(z23.string(), z23.string()).default(() => ({ en: "FREE GIFTS" })),
2457
+ giftAreaTitle: z24.record(z24.string(), z24.string()).default(() => ({ en: "FREE GIFTS" })),
2385
2458
  /** Localized gift-control labels (add/remove/heading); a tier's gift `title` beats `yourGift`. */
2386
- giftLabels: z23.object({
2387
- addGift: z23.record(z23.string(), z23.string()).default(() => ({ ...GIFT_LABELS.addGift })),
2388
- remove: z23.record(z23.string(), z23.string()).default(() => ({ ...GIFT_LABELS.remove })),
2389
- selectOptions: z23.record(z23.string(), z23.string()).default(() => ({ ...GIFT_LABELS.selectOptions })),
2390
- yourGift: z23.record(z23.string(), z23.string()).default(() => ({ ...GIFT_LABELS.yourGift }))
2459
+ giftLabels: z24.object({
2460
+ addGift: z24.record(z24.string(), z24.string()).default(() => ({ ...GIFT_LABELS.addGift })),
2461
+ remove: z24.record(z24.string(), z24.string()).default(() => ({ ...GIFT_LABELS.remove })),
2462
+ selectOptions: z24.record(z24.string(), z24.string()).default(() => ({ ...GIFT_LABELS.selectOptions })),
2463
+ yourGift: z24.record(z24.string(), z24.string()).default(() => ({ ...GIFT_LABELS.yourGift }))
2391
2464
  }).default(() => ({
2392
2465
  addGift: { ...GIFT_LABELS.addGift },
2393
2466
  remove: { ...GIFT_LABELS.remove },
@@ -2395,37 +2468,38 @@ var CABProgressBarSection = z23.lazy(
2395
2468
  yourGift: { ...GIFT_LABELS.yourGift }
2396
2469
  })),
2397
2470
  /** The bar's a11y label; the merchant names it in the editor, else this default (React parity). */
2398
- name: z23.string().default("Order progress"),
2471
+ name: z24.string().default("Order progress"),
2399
2472
  /**
2400
2473
  * Bar fill color. An explicit (widget-authored) value is used verbatim; when absent the server
2401
2474
  * fills it with the live shop theme's `buttonBackground` (React `useRebuyTheme` parity). Still
2402
2475
  * absent after that ⇒ the theme fetch failed and the client renders its platform-default bar —
2403
2476
  * optional, not defaulted, so "merchant chose no color" stays distinguishable from any real value.
2404
2477
  */
2405
- progressColor: z23.string().optional(),
2406
- sectionType: z23.literal(SectionType.progressBar).default(SectionType.progressBar),
2478
+ progressColor: z24.string().optional(),
2479
+ sectionType: z24.literal(SectionType.progressBar).default(SectionType.progressBar),
2407
2480
  /**
2408
2481
  * The bar's milestones in the merchant's CONFIGURED order — the renderer does NOT sort them (022
2409
2482
  * O-B2: sorting by resolved threshold reversed configured milestones on out-of-order or mixed-unit
2410
2483
  * count-vs-cents bars). Drives the fill (even slot per tier) and, for smart-cart product tiers, the
2411
2484
  * gift add/remove. The visual tier display lives in `sections` (composable), NOT here.
2412
2485
  */
2413
- tiers: z23.union([z23.array(CABProgressTier), z23.strictObject({}).transform(() => [])]).default(() => [])
2486
+ tiers: z24.union([z24.array(CABProgressTier), z24.strictObject({}).transform(() => [])]).default(() => [])
2414
2487
  })
2415
2488
  );
2416
2489
 
2417
2490
  // src/schema/widgets/checkout-and-beyond/quantity.ts
2418
2491
  import { v7 as uuidv79 } from "uuid";
2419
- import { z as z24 } from "zod";
2420
- var CABQuantitySection = z24.object({
2421
- errorMessages: z24.record(
2422
- z24.string(),
2423
- z24.object({
2492
+ import { z as z25 } from "zod";
2493
+ var CABQuantitySection = z25.object({
2494
+ ...CABVariableFields,
2495
+ errorMessages: z25.record(
2496
+ z25.string(),
2497
+ z25.object({
2424
2498
  /** `{{step}}` is interpolated at render — the off-increment message React never gave a merchant key. */
2425
- increment: z24.string().optional(),
2426
- max: z24.string().optional(),
2427
- min: z24.string().optional(),
2428
- neg: z24.string().optional()
2499
+ increment: z25.string().optional(),
2500
+ max: z25.string().optional(),
2501
+ min: z25.string().optional(),
2502
+ neg: z25.string().optional()
2429
2503
  })
2430
2504
  ).default({
2431
2505
  en: {
@@ -2435,19 +2509,18 @@ var CABQuantitySection = z24.object({
2435
2509
  neg: "Quantity cannot be negative"
2436
2510
  }
2437
2511
  }),
2438
- inputType: z24.enum(quantityInputs).default(QuantityInput.select),
2439
- max: z24.number().min(1).max(100).default(10),
2440
- min: z24.number().min(1).default(1),
2512
+ inputType: z25.enum(quantityInputs).default(QuantityInput.select),
2513
+ max: z25.number().min(1).max(100).default(10),
2514
+ min: z25.number().min(1).default(1),
2441
2515
  /** The a11y label for the quantity control; the merchant names it in the editor, else this default. */
2442
- name: z24.string().default("Quantity"),
2443
- rule: CABRule.optional(),
2444
- sectionId: z24.uuid().default(() => uuidv79()),
2445
- sectionType: z24.literal(SectionType.quantity).default(SectionType.quantity)
2516
+ name: z25.string().default("Quantity"),
2517
+ sectionId: z25.uuid().default(() => uuidv79()),
2518
+ sectionType: z25.literal(SectionType.quantity).default(SectionType.quantity)
2446
2519
  });
2447
2520
 
2448
2521
  // src/schema/widgets/checkout-and-beyond/reviews.ts
2449
2522
  import { v7 as uuidv710 } from "uuid";
2450
- import { z as z25 } from "zod";
2523
+ import { z as z26 } from "zod";
2451
2524
 
2452
2525
  // src/schema/widgets/checkout-and-beyond/reviewLabels.ts
2453
2526
  var REVIEW_LABELS = {
@@ -2510,50 +2583,50 @@ var REVIEW_LABELS = {
2510
2583
  };
2511
2584
 
2512
2585
  // src/schema/widgets/checkout-and-beyond/reviews.ts
2513
- var CABReviewsSection = z25.object({
2514
- color: z25.string().default("#fadb14"),
2586
+ var CABReviewsSection = z26.object({
2587
+ ...CABVariableFields,
2588
+ color: z26.string().default("#fadb14"),
2515
2589
  /**
2516
2590
  * Localized review-count templates (`{{reviewCount}}`), one/other plural forms; the client picks the
2517
2591
  * form via `Intl.PluralRules`. Defaults here (schema-first) so every tree localizes without converter
2518
2592
  * or merchant work.
2519
2593
  */
2520
- countLabels: z25.object({
2521
- one: z25.record(z25.string(), z25.string()).default(() => ({ ...REVIEW_LABELS.one })),
2522
- other: z25.record(z25.string(), z25.string()).default(() => ({ ...REVIEW_LABELS.other }))
2594
+ countLabels: z26.object({
2595
+ one: z26.record(z26.string(), z26.string()).default(() => ({ ...REVIEW_LABELS.one })),
2596
+ other: z26.record(z26.string(), z26.string()).default(() => ({ ...REVIEW_LABELS.other }))
2523
2597
  }).default(() => ({ one: { ...REVIEW_LABELS.one }, other: { ...REVIEW_LABELS.other } })),
2524
- name: z25.string().optional(),
2525
- rule: CABRule.optional(),
2526
- sectionId: z25.uuid().default(() => uuidv710()),
2527
- sectionType: z25.literal(SectionType.reviews).default(SectionType.reviews),
2528
- size: z25.enum(reviewsSizes).default(ReviewsSize.default)
2598
+ name: z26.string().optional(),
2599
+ sectionId: z26.uuid().default(() => uuidv710()),
2600
+ sectionType: z26.literal(SectionType.reviews).default(SectionType.reviews),
2601
+ size: z26.enum(reviewsSizes).default(ReviewsSize.default)
2529
2602
  });
2530
2603
 
2531
2604
  // src/schema/widgets/checkout-and-beyond/variants.ts
2532
2605
  import { slice } from "es-toolkit/compat";
2533
2606
  import { v7 as uuidv711 } from "uuid";
2534
- import { z as z26 } from "zod";
2535
- var CABVariantsSection = z26.object({
2536
- hideOutOfStockVariants: z26.boolean().default(false),
2537
- name: z26.string().optional(),
2538
- rule: CABRule.optional(),
2539
- sectionId: z26.uuid().default(() => uuidv711()),
2540
- sectionType: z26.literal(SectionType.variants).default(SectionType.variants),
2541
- selector: z26.enum(slice(variantSelectors, 0, 3)).default(VariantSelector.menu),
2542
- variantMode: z26.enum(variantModes).default(VariantMode.multiple)
2607
+ import { z as z27 } from "zod";
2608
+ var CABVariantsSection = z27.object({
2609
+ ...CABVariableFields,
2610
+ hideOutOfStockVariants: z27.boolean().default(false),
2611
+ name: z27.string().optional(),
2612
+ sectionId: z27.uuid().default(() => uuidv711()),
2613
+ sectionType: z27.literal(SectionType.variants).default(SectionType.variants),
2614
+ selector: z27.enum(slice(variantSelectors, 0, 3)).default(VariantSelector.menu),
2615
+ variantMode: z27.enum(variantModes).default(VariantMode.multiple)
2543
2616
  });
2544
2617
 
2545
2618
  // src/schema/widgets/checkout-and-beyond/shared.ts
2546
- var CABBorder = z27.object({
2547
- radius: z27.enum(borderRadii).default(BorderRadius.base),
2548
- style: z27.enum(borderStyles).default(BorderStyle.none),
2549
- width: z27.enum(borderWidths).default(BorderWidth.base)
2619
+ var CABBorder = z28.object({
2620
+ radius: z28.enum(borderRadii).default(BorderRadius.base),
2621
+ style: z28.enum(borderStyles).default(BorderStyle.none),
2622
+ width: z28.enum(borderWidths).default(BorderWidth.base)
2550
2623
  }).default({
2551
2624
  radius: BorderRadius.base,
2552
2625
  style: BorderStyle.none,
2553
2626
  width: BorderWidth.base
2554
2627
  });
2555
- var CABSection = z27.lazy(
2556
- () => z27.discriminatedUnion("sectionType", [
2628
+ var CABSection = z28.lazy(
2629
+ () => z28.discriminatedUnion("sectionType", [
2557
2630
  CABBannerSection,
2558
2631
  CABButtonSection,
2559
2632
  CABCarouselSection,
@@ -2575,32 +2648,32 @@ var CABSection = z27.lazy(
2575
2648
  );
2576
2649
 
2577
2650
  // src/schema/widgets/checkout-and-beyond/layout.ts
2578
- var GridItem = z28.union([z28.literal("auto"), z28.literal("fill"), z28.string().regex(/^\d+%$/), z28.number()]);
2579
- var CABLayoutSection = z28.object({
2580
- alignment: z28.object({
2581
- horizontal: z28.enum(horizontalAlignments).default(HorizontalAlignment.start),
2582
- vertical: z28.enum(verticalAlignments).default(VerticalAlignment.top)
2651
+ var GridItem = z29.union([z29.literal("auto"), z29.literal("fill"), z29.string().regex(/^\d+%$/), z29.number()]);
2652
+ var CABLayoutSection = z29.object({
2653
+ ...CABVariableFields,
2654
+ alignment: z29.object({
2655
+ horizontal: z29.enum(horizontalAlignments).default(HorizontalAlignment.start),
2656
+ vertical: z29.enum(verticalAlignments).default(VerticalAlignment.top)
2583
2657
  }).default({
2584
2658
  horizontal: HorizontalAlignment.start,
2585
2659
  vertical: VerticalAlignment.top
2586
2660
  }),
2587
- border: z28.lazy(() => CABBorder),
2588
- buttonField: z28.enum(buttonFields).optional(),
2589
- direction: z28.enum(directions).default(Direction.rows),
2590
- grid: z28.object({
2591
- columns: z28.union([z28.array(GridItem), z28.undefined()]).default(() => ["auto"]),
2592
- rows: z28.union([z28.array(GridItem), z28.undefined()]).default(() => ["auto"])
2661
+ border: z29.lazy(() => CABBorder),
2662
+ buttonField: z29.enum(buttonFields).optional(),
2663
+ direction: z29.enum(directions).default(Direction.rows),
2664
+ grid: z29.object({
2665
+ columns: z29.union([z29.array(GridItem), z29.undefined()]).default(() => ["auto"]),
2666
+ rows: z29.union([z29.array(GridItem), z29.undefined()]).default(() => ["auto"])
2593
2667
  }).default({ columns: ["auto"], rows: ["auto"] }).optional(),
2594
- name: z28.string().optional(),
2595
- padding: z28.enum(spacings).default(Spacing.none),
2596
- rule: CABRule.optional(),
2597
- sectionId: z28.uuid().default(() => uuidv712()),
2598
- sections: z28.union([z28.array(z28.lazy(() => CABSection)), z28.strictObject({}).transform(() => [])]).default(() => []),
2599
- sectionType: z28.literal(SectionType.layout).default(SectionType.layout),
2600
- spacing: z28.enum(spacings).default(Spacing.base),
2668
+ name: z29.string().optional(),
2669
+ padding: z29.enum(spacings).default(Spacing.none),
2670
+ sectionId: z29.uuid().default(() => uuidv712()),
2671
+ sections: z29.union([z29.array(z29.lazy(() => CABSection)), z29.strictObject({}).transform(() => [])]).default(() => []),
2672
+ sectionType: z29.literal(SectionType.layout).default(SectionType.layout),
2673
+ spacing: z29.enum(spacings).default(Spacing.base),
2601
2674
  /** Fire-and-forget impression pixel POSTed once when the section is shown (e.g. a Monetize offer view). */
2602
- viewUrl: z28.string().optional(),
2603
- width: z28.number().default(100)
2675
+ viewUrl: z29.string().optional(),
2676
+ width: z29.number().default(100)
2604
2677
  });
2605
2678
 
2606
2679
  // src/schema/widgets/checkout-and-beyond/uiLabels.ts
@@ -2617,8 +2690,8 @@ var UI_LABELS = {
2617
2690
  };
2618
2691
 
2619
2692
  // src/schema/widgets/checkout-and-beyond/root.ts
2620
- var localized = (fallback) => z29.record(z29.string(), z29.string()).default(() => ({ ...fallback })).transform((labels) => Object.keys(labels).length > 0 ? labels : { ...fallback });
2621
- var CABUILabels = z29.object({
2693
+ var localized = (fallback) => z30.record(z30.string(), z30.string()).default(() => ({ ...fallback })).transform((labels) => Object.keys(labels).length > 0 ? labels : { ...fallback });
2694
+ var CABUILabels = z30.object({
2622
2695
  currentPage: localized(UI_LABELS.currentPage),
2623
2696
  loadingOptions: localized(UI_LABELS.loadingOptions),
2624
2697
  nextPage: localized(UI_LABELS.nextPage),
@@ -2639,154 +2712,154 @@ var CABUILabels = z29.object({
2639
2712
  subscriptionOptions: { ...UI_LABELS.subscriptionOptions },
2640
2713
  updating: { ...UI_LABELS.updating }
2641
2714
  }));
2642
- var TargetArea = z29.object({
2643
- fill: z29.boolean().optional(),
2644
- flip: z29.enum(["both", "horizontal", "vertical"]).optional(),
2645
- icon: z29.string(),
2646
- label: z29.string(),
2647
- width: z29.string()
2715
+ var TargetArea = z30.object({
2716
+ fill: z30.boolean().optional(),
2717
+ flip: z30.enum(["both", "horizontal", "vertical"]).optional(),
2718
+ icon: z30.string(),
2719
+ label: z30.string(),
2720
+ width: z30.string()
2648
2721
  }).default(targetAreas[EditorMode.checkoutExtension][1]);
2649
- var CABTracking = z29.object({
2650
- enableAttribution: z29.boolean().nullish().transform((value) => value ?? true),
2651
- enableSource: z29.boolean().nullish().transform((value) => value ?? true),
2652
- enableWidget: z29.boolean().nullish().transform((value) => value ?? true)
2722
+ var CABTracking = z30.object({
2723
+ enableAttribution: z30.boolean().nullish().transform((value) => value ?? true),
2724
+ enableSource: z30.boolean().nullish().transform((value) => value ?? true),
2725
+ enableWidget: z30.boolean().nullish().transform((value) => value ?? true)
2653
2726
  }).nullish().transform((value) => value ?? { enableAttribution: true, enableSource: true, enableWidget: true });
2654
- var CABExperiment = z29.object({
2655
- elementId: z29.number(),
2656
- experimentId: z29.number(),
2657
- experimentType: z29.string(),
2658
- selectedId: z29.number()
2727
+ var CABExperiment = z30.object({
2728
+ elementId: z30.number(),
2729
+ experimentId: z30.number(),
2730
+ experimentType: z30.string(),
2731
+ selectedId: z30.number()
2659
2732
  });
2660
2733
  var CABRootSection = CABLayoutSection.extend({
2661
- editorMode: z29.enum(editorModes).default(EditorMode.checkoutExtension),
2734
+ editorMode: z30.enum(editorModes).default(EditorMode.checkoutExtension),
2662
2735
  experiment: CABExperiment.optional(),
2663
2736
  // Same rule as CABTracking above: the v1 converters pass raw legacy `previewMode` through, so a
2664
2737
  // `null` must fall back rather than throw the widget; malformed values still throw.
2665
- previewMode: z29.boolean().nullish().transform((value) => value ?? false),
2666
- storeId: z29.number().nullable().default(null),
2738
+ previewMode: z30.boolean().nullish().transform((value) => value ?? false),
2739
+ storeId: z30.number().nullable().default(null),
2667
2740
  targetArea: TargetArea.nullable(),
2668
2741
  tracking: CABTracking,
2669
- type: z29.enum(widgetTypes).default(WidgetType.ui_extension_content_block),
2742
+ type: z30.enum(widgetTypes).default(WidgetType.ui_extension_content_block),
2670
2743
  uiLabels: CABUILabels,
2671
- version: z29.literal(2).default(2),
2672
- widgetId: z29.number().nullable().default(null)
2744
+ version: z30.literal(2).default(2),
2745
+ widgetId: z30.number().nullable().default(null)
2673
2746
  });
2674
2747
 
2675
2748
  // src/schema/widgets/contentBlock.ts
2676
- var ContentBlockV1 = z30.object({
2677
- blockSpacing: z30.enum(spacings).optional(),
2678
- imageBlocks: z30.union([
2679
- z30.array(
2680
- z30.object({
2681
- altText: z30.string().nullable(),
2682
- description: z30.string().nullable(),
2683
- id: z30.uuid(),
2684
- imagePlacement: z30.enum(["top", "right", "bottom", "left"]),
2685
- imageSize: z30.number(),
2686
- imageUrl: z30.url(),
2687
- textAlignment: z30.enum(["left", "center", "right"]),
2749
+ var ContentBlockV1 = z31.object({
2750
+ blockSpacing: z31.enum(spacings).optional(),
2751
+ imageBlocks: z31.union([
2752
+ z31.array(
2753
+ z31.object({
2754
+ altText: z31.string().nullable(),
2755
+ description: z31.string().nullable(),
2756
+ id: z31.uuid(),
2757
+ imagePlacement: z31.enum(["top", "right", "bottom", "left"]),
2758
+ imageSize: z31.number(),
2759
+ imageUrl: z31.url(),
2760
+ textAlignment: z31.enum(["left", "center", "right"]),
2688
2761
  /** Inline scale only: an image caption can never be a block-level heading. */
2689
- textSize: z30.enum(inlineTextSizeNames)
2762
+ textSize: z31.enum(inlineTextSizeNames)
2690
2763
  })
2691
2764
  ),
2692
- z30.strictObject({}).transform(() => [])
2765
+ z31.strictObject({}).transform(() => [])
2693
2766
  ]).optional(),
2694
- imageLayout: z30.enum(["row", "column"]).optional(),
2695
- language: z30.object({
2696
- description: z30.string(),
2697
- superTitle: z30.string(),
2698
- title: z30.string()
2767
+ imageLayout: z31.enum(["row", "column"]).optional(),
2768
+ language: z31.object({
2769
+ description: z31.string(),
2770
+ superTitle: z31.string(),
2771
+ title: z31.string()
2699
2772
  }),
2700
- previewMode: z30.boolean(),
2701
- type: z30.literal(WidgetType.ui_extension_content_block).default(WidgetType.ui_extension_content_block),
2702
- version: z30.literal(1)
2773
+ previewMode: z31.boolean(),
2774
+ type: z31.literal(WidgetType.ui_extension_content_block).default(WidgetType.ui_extension_content_block),
2775
+ version: z31.literal(1)
2703
2776
  });
2704
- var ContentBlock = z30.discriminatedUnion("version", [
2777
+ var ContentBlock = z31.discriminatedUnion("version", [
2705
2778
  ContentBlockV1,
2706
2779
  CABRootSection.extend({
2707
- type: z30.literal(WidgetType.ui_extension_content_block).default(WidgetType.ui_extension_content_block)
2780
+ type: z31.literal(WidgetType.ui_extension_content_block).default(WidgetType.ui_extension_content_block)
2708
2781
  })
2709
2782
  ]);
2710
2783
 
2711
2784
  // src/schema/widgets/giftWithPurchase.ts
2712
- import { z as z31 } from "zod";
2713
- var GiftWithPurchase = z31.looseObject({
2714
- type: z31.literal(WidgetType.gift_with_purchase).default(WidgetType.gift_with_purchase)
2785
+ import { z as z32 } from "zod";
2786
+ var GiftWithPurchase = z32.looseObject({
2787
+ type: z32.literal(WidgetType.gift_with_purchase).default(WidgetType.gift_with_purchase)
2715
2788
  });
2716
2789
 
2717
2790
  // src/schema/widgets/lineItemEditor.ts
2718
- import { z as z32 } from "zod";
2719
- var LineItemEditorSwitchLanguageV1 = z32.object({
2720
- downgradeToOneTimeLabel: z32.string().optional(),
2791
+ import { z as z33 } from "zod";
2792
+ var LineItemEditorSwitchLanguageV1 = z33.object({
2793
+ downgradeToOneTimeLabel: z33.string().optional(),
2721
2794
  /** Frequency-option template (`{{frequency}}`/`{{interval}}`) for the plan select. */
2722
- subscriptionOptionLabel: z32.string().optional(),
2723
- upgradeToSubscriptionLabel: z32.string().optional(),
2724
- upgradeToSubscriptionWithoutDiscountLabel: z32.string().optional()
2795
+ subscriptionOptionLabel: z33.string().optional(),
2796
+ upgradeToSubscriptionLabel: z33.string().optional(),
2797
+ upgradeToSubscriptionWithoutDiscountLabel: z33.string().optional()
2725
2798
  });
2726
- var LineItemEditorV1 = z32.object({
2799
+ var LineItemEditorV1 = z33.object({
2727
2800
  /** Legacy `getStyles` button style; the converter carries a valid kind, defaulting to `plain`. */
2728
- button: z32.object({ kind: z32.enum(["plain", "primary", "secondary"]).optional() }).optional(),
2729
- previewMode: z32.boolean().optional(),
2730
- switchToSubscription: z32.object({
2731
- disableDowngrade: z32.boolean().optional(),
2801
+ button: z33.object({ kind: z33.enum(["plain", "primary", "secondary"]).optional() }).optional(),
2802
+ previewMode: z33.boolean().optional(),
2803
+ switchToSubscription: z33.object({
2804
+ disableDowngrade: z33.boolean().optional(),
2732
2805
  language: LineItemEditorSwitchLanguageV1.optional()
2733
2806
  }).optional(),
2734
- switchToSubscriptionEnabled: z32.boolean().optional(),
2735
- tracking: z32.object({
2736
- enableAttribution: z32.boolean().optional(),
2737
- enableSource: z32.boolean().optional(),
2738
- enableWidget: z32.boolean().optional()
2807
+ switchToSubscriptionEnabled: z33.boolean().optional(),
2808
+ tracking: z33.object({
2809
+ enableAttribution: z33.boolean().optional(),
2810
+ enableSource: z33.boolean().optional(),
2811
+ enableWidget: z33.boolean().optional()
2739
2812
  }).optional(),
2740
- type: z32.literal(WidgetType.ui_extension_line_item_editor).default(WidgetType.ui_extension_line_item_editor),
2741
- version: z32.literal(1)
2813
+ type: z33.literal(WidgetType.ui_extension_line_item_editor).default(WidgetType.ui_extension_line_item_editor),
2814
+ version: z33.literal(1)
2742
2815
  });
2743
- var LineItemEditor = z32.discriminatedUnion("version", [
2816
+ var LineItemEditor = z33.discriminatedUnion("version", [
2744
2817
  LineItemEditorV1,
2745
2818
  CABRootSection.extend({
2746
- type: z32.literal(WidgetType.ui_extension_line_item_editor).default(WidgetType.ui_extension_line_item_editor)
2819
+ type: z33.literal(WidgetType.ui_extension_line_item_editor).default(WidgetType.ui_extension_line_item_editor)
2747
2820
  })
2748
2821
  ]);
2749
2822
 
2750
2823
  // src/schema/widgets/progressBar.ts
2751
- import { z as z33 } from "zod";
2752
- var ProgressBar = z33.looseObject({
2753
- type: z33.literal(WidgetType.ui_extension_progress_bar).default(WidgetType.ui_extension_progress_bar)
2824
+ import { z as z34 } from "zod";
2825
+ var ProgressBar = z34.looseObject({
2826
+ type: z34.literal(WidgetType.ui_extension_progress_bar).default(WidgetType.ui_extension_progress_bar)
2754
2827
  });
2755
2828
 
2756
2829
  // src/schema/widgets/rebuyButton.ts
2757
- import { z as z34 } from "zod";
2758
- var RebuyButtonV1 = z34.looseObject({
2759
- type: z34.literal(WidgetType.ui_extension_button).default(WidgetType.ui_extension_button),
2760
- version: z34.literal(1)
2830
+ import { z as z35 } from "zod";
2831
+ var RebuyButtonV1 = z35.looseObject({
2832
+ type: z35.literal(WidgetType.ui_extension_button).default(WidgetType.ui_extension_button),
2833
+ version: z35.literal(1)
2761
2834
  });
2762
- var RebuyButton = z34.discriminatedUnion("version", [
2835
+ var RebuyButton = z35.discriminatedUnion("version", [
2763
2836
  RebuyButtonV1,
2764
2837
  CABRootSection.extend({
2765
- type: z34.literal(WidgetType.ui_extension_button).default(WidgetType.ui_extension_button)
2838
+ type: z35.literal(WidgetType.ui_extension_button).default(WidgetType.ui_extension_button)
2766
2839
  })
2767
2840
  ]);
2768
2841
 
2769
2842
  // src/schema/widgets/rebuyMonetize.ts
2770
- import { z as z35 } from "zod";
2771
- var RebuyMonetize = z35.looseObject({
2772
- type: z35.literal(WidgetType.ui_extension_ad).default(WidgetType.ui_extension_ad)
2843
+ import { z as z36 } from "zod";
2844
+ var RebuyMonetize = z36.looseObject({
2845
+ type: z36.literal(WidgetType.ui_extension_ad).default(WidgetType.ui_extension_ad)
2773
2846
  });
2774
- var RebuyMonetizeV1 = z35.object({
2775
- name: z35.string().nullable().optional(),
2776
- previewMode: z35.boolean().optional(),
2847
+ var RebuyMonetizeV1 = z36.object({
2848
+ name: z36.string().nullable().optional(),
2849
+ previewMode: z36.boolean().optional(),
2777
2850
  /** Privacy Policy footer href → the marker section's `privacyPolicyUrl`. */
2778
- privacyPolicyUrl: z35.string().nullable().optional(),
2851
+ privacyPolicyUrl: z36.string().nullable().optional(),
2779
2852
  /** Ads-taxonomy sub-vertical id — one of the admin Monetize editor's two configurables. */
2780
- subVertical: z35.string().nullable().optional(),
2781
- tracking: z35.object({
2782
- enableAttribution: z35.boolean().optional(),
2783
- enableSource: z35.boolean().optional(),
2784
- enableWidget: z35.boolean().optional()
2853
+ subVertical: z36.string().nullable().optional(),
2854
+ tracking: z36.object({
2855
+ enableAttribution: z36.boolean().optional(),
2856
+ enableSource: z36.boolean().optional(),
2857
+ enableWidget: z36.boolean().optional()
2785
2858
  }).optional(),
2786
- type: z35.literal(WidgetType.ui_extension_ad).default(WidgetType.ui_extension_ad),
2787
- version: z35.literal(1),
2859
+ type: z36.literal(WidgetType.ui_extension_ad).default(WidgetType.ui_extension_ad),
2860
+ version: z36.literal(1),
2788
2861
  /** Ads-taxonomy vertical id — one of the admin Monetize editor's two configurables. */
2789
- vertical: z35.string().nullable().optional()
2862
+ vertical: z36.string().nullable().optional()
2790
2863
  });
2791
2864
 
2792
2865
  // src/schema/widgetData.ts
@@ -2800,7 +2873,7 @@ var extensionWidgetTypes = [
2800
2873
  WidgetType.ui_extension_line_item_editor,
2801
2874
  WidgetType.ui_extension_progress_bar
2802
2875
  ];
2803
- var WidgetData = z36.discriminatedUnion("type", [
2876
+ var WidgetData = z37.discriminatedUnion("type", [
2804
2877
  ABTestingPlaceholder,
2805
2878
  CheckoutExtension,
2806
2879
  ContentBlock,
@@ -3129,15 +3202,15 @@ var SWITCH_LABELS = {
3129
3202
 
3130
3203
  // src/schema/widgets/post-purchase-offer/common.ts
3131
3204
  import { replace, toNumber, toString } from "es-toolkit/compat";
3132
- import { z as z37 } from "zod";
3133
- var strictNumber = z37.union([
3134
- z37.number(),
3135
- z37.string().transform((value) => toNumber(replace(toString(value), /[^0-9.]/g, "")) || 0),
3136
- z37.unknown().transform(() => 0)
3205
+ import { z as z38 } from "zod";
3206
+ var strictNumber = z38.union([
3207
+ z38.number(),
3208
+ z38.string().transform((value) => toNumber(replace(toString(value), /[^0-9.]/g, "")) || 0),
3209
+ z38.unknown().transform(() => 0)
3137
3210
  ]);
3138
3211
 
3139
3212
  // src/schema/widgets/post-purchase-offer/constants.ts
3140
- import { z as z38 } from "zod";
3213
+ import { z as z39 } from "zod";
3141
3214
  var blockTypes = [
3142
3215
  "callout_banner",
3143
3216
  "image",
@@ -3148,144 +3221,144 @@ var blockTypes = [
3148
3221
  "text",
3149
3222
  "timer"
3150
3223
  ];
3151
- var blockType = z38.enum(blockTypes);
3224
+ var blockType = z39.enum(blockTypes);
3152
3225
  var BlockType = blockType.enum;
3153
3226
 
3154
3227
  // src/schema/widgets/post-purchase-offer/postPurchaseBlocks.ts
3155
3228
  import { get as get3, isEqual } from "es-toolkit/compat";
3156
3229
  import { v4 as uuidv42 } from "uuid";
3157
- import { z as z39 } from "zod";
3158
- var TextAlignment2 = z39.union([z39.enum(["leading", "center", "trailing"]), z39.unknown().transform(() => "leading")]);
3159
- var TextSize = z39.union([
3160
- z39.enum(["xsmall", "small", "base", "default", "medium", "large", "xlarge"]),
3161
- z39.unknown().transform(() => "medium")
3230
+ import { z as z40 } from "zod";
3231
+ var TextAlignment2 = z40.union([z40.enum(["leading", "center", "trailing"]), z40.unknown().transform(() => "leading")]);
3232
+ var TextSize = z40.union([
3233
+ z40.enum(["xsmall", "small", "base", "default", "medium", "large", "xlarge"]),
3234
+ z40.unknown().transform(() => "medium")
3162
3235
  ]);
3163
- var CalloutBannerBlock = z39.object({
3164
- id: z39.string().optional().default(() => uuidv42()),
3165
- name: z39.string().optional(),
3166
- settings: z39.object({
3167
- superTitle: z39.union([z39.string(), TiptapDocument]).default(() => "Limited-time Offer"),
3168
- title: z39.union([z39.string(), TiptapDocument]).default(() => "Add this customer favorite to your order")
3236
+ var CalloutBannerBlock = z40.object({
3237
+ id: z40.string().optional().default(() => uuidv42()),
3238
+ name: z40.string().optional(),
3239
+ settings: z40.object({
3240
+ superTitle: z40.union([z40.string(), TiptapDocument]).default(() => "Limited-time Offer"),
3241
+ title: z40.union([z40.string(), TiptapDocument]).default(() => "Add this customer favorite to your order")
3169
3242
  }),
3170
- styles: z39.object({
3171
- superTitleEmphasized: z39.boolean().default(false),
3243
+ styles: z40.object({
3244
+ superTitleEmphasized: z40.boolean().default(false),
3172
3245
  superTitleSize: TextSize.default("large"),
3173
3246
  textAlignment: TextAlignment2.default("center"),
3174
- titleEmphasized: z39.boolean().default(true),
3247
+ titleEmphasized: z40.boolean().default(true),
3175
3248
  titleSize: TextSize.default("large")
3176
3249
  }),
3177
- type: z39.literal(BlockType.callout_banner).default(BlockType.callout_banner)
3250
+ type: z40.literal(BlockType.callout_banner).default(BlockType.callout_banner)
3178
3251
  });
3179
- var ImageBlock = z39.object({
3180
- id: z39.string().optional().default(() => uuidv42()),
3181
- name: z39.string().optional(),
3182
- settings: z39.union([
3183
- z39.object({
3252
+ var ImageBlock = z40.object({
3253
+ id: z40.string().optional().default(() => uuidv42()),
3254
+ name: z40.string().optional(),
3255
+ settings: z40.union([
3256
+ z40.object({
3184
3257
  /** This isn't used in the post-purchase offer widget */
3185
- alt: z39.string().optional().default(""),
3186
- image: z39.union([z39.literal(""), z39.url()]).default(""),
3187
- imageSize: z39.number().default(20),
3188
- imageType: z39.enum(["URL", "UPLOAD"]).default("URL")
3258
+ alt: z40.string().optional().default(""),
3259
+ image: z40.union([z40.literal(""), z40.url()]).default(""),
3260
+ imageSize: z40.number().default(20),
3261
+ imageType: z40.enum(["URL", "UPLOAD"]).default("URL")
3189
3262
  }),
3190
- z39.array(z39.never()).transform(() => ({}))
3263
+ z40.array(z40.never()).transform(() => ({}))
3191
3264
  ]),
3192
- type: z39.literal(BlockType.image).default(BlockType.image)
3265
+ type: z40.literal(BlockType.image).default(BlockType.image)
3193
3266
  });
3194
- var ImageContentBlock = z39.object({
3195
- id: z39.string().optional().default(() => uuidv42()),
3196
- name: z39.string().optional(),
3197
- settings: z39.object({
3198
- alt: z39.string().optional().default(""),
3199
- description: z39.union([z39.string(), TiptapDocument, z39.null()]).default(
3267
+ var ImageContentBlock = z40.object({
3268
+ id: z40.string().optional().default(() => uuidv42()),
3269
+ name: z40.string().optional(),
3270
+ settings: z40.object({
3271
+ alt: z40.string().optional().default(""),
3272
+ description: z40.union([z40.string(), TiptapDocument, z40.null()]).default(
3200
3273
  "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
3201
3274
  ),
3202
3275
  descriptionSize: TextSize.default("medium"),
3203
3276
  horizontalAlignment: TextAlignment2.default("leading"),
3204
- image: z39.union([z39.literal(""), z39.url()]).default(""),
3205
- imagePlacement: z39.enum(["bottom", "left", "right", "top"]).optional().default("left"),
3206
- imageSize: z39.number().default(20),
3207
- superTitle: z39.union([z39.string(), TiptapDocument]).default("Lorem Ipsum!"),
3277
+ image: z40.union([z40.literal(""), z40.url()]).default(""),
3278
+ imagePlacement: z40.enum(["bottom", "left", "right", "top"]).optional().default("left"),
3279
+ imageSize: z40.number().default(20),
3280
+ superTitle: z40.union([z40.string(), TiptapDocument]).default("Lorem Ipsum!"),
3208
3281
  superTitleSize: TextSize.default("medium"),
3209
3282
  /** This isn't configurable in the admin-nextjs editor */
3210
- swapContent: z39.boolean().optional().default(false),
3211
- title: z39.union([z39.string(), TiptapDocument]).nullable().default("Lorem ipsum dolor sit amet"),
3283
+ swapContent: z40.boolean().optional().default(false),
3284
+ title: z40.union([z40.string(), TiptapDocument]).nullable().default("Lorem ipsum dolor sit amet"),
3212
3285
  titleSize: TextSize.default("medium")
3213
3286
  }),
3214
- type: z39.literal(BlockType.image_content).default(BlockType.image_content)
3287
+ type: z40.literal(BlockType.image_content).default(BlockType.image_content)
3215
3288
  });
3216
- var PayButtonBlock = z39.object({
3217
- id: z39.string().optional().default(() => uuidv42()),
3218
- name: z39.string().optional(),
3219
- settings: z39.union([
3220
- z39.object({
3221
- label: z39.string().default("Pay Now")
3289
+ var PayButtonBlock = z40.object({
3290
+ id: z40.string().optional().default(() => uuidv42()),
3291
+ name: z40.string().optional(),
3292
+ settings: z40.union([
3293
+ z40.object({
3294
+ label: z40.string().default("Pay Now")
3222
3295
  }),
3223
- z39.array(z39.never()).transform(() => ({
3296
+ z40.array(z40.never()).transform(() => ({
3224
3297
  label: "Pay Now"
3225
3298
  }))
3226
3299
  ]),
3227
- styles: z39.union([
3228
- z39.object({
3229
- buttonWidth: z39.number().min(10).max(100).default(50)
3300
+ styles: z40.union([
3301
+ z40.object({
3302
+ buttonWidth: z40.number().min(10).max(100).default(50)
3230
3303
  }),
3231
- z39.array(z39.never()).transform(() => ({
3304
+ z40.array(z40.never()).transform(() => ({
3232
3305
  buttonWidth: 50
3233
3306
  }))
3234
3307
  ]),
3235
- type: z39.literal(BlockType.pay_button).default(BlockType.pay_button)
3308
+ type: z40.literal(BlockType.pay_button).default(BlockType.pay_button)
3236
3309
  });
3237
- var ProductInformationBlock = z39.object({
3310
+ var ProductInformationBlock = z40.object({
3238
3311
  /** This isn't configurable in the admin-nextjs editor */
3239
- hideProductImage: z39.boolean().optional().default(false),
3240
- id: z39.string().optional().default(() => uuidv42()),
3241
- name: z39.string().optional(),
3242
- type: z39.literal(BlockType.product_information).default(BlockType.product_information)
3312
+ hideProductImage: z40.boolean().optional().default(false),
3313
+ id: z40.string().optional().default(() => uuidv42()),
3314
+ name: z40.string().optional(),
3315
+ type: z40.literal(BlockType.product_information).default(BlockType.product_information)
3243
3316
  });
3244
- var SeparatorBlock = z39.object({
3245
- id: z39.string().optional().default(() => uuidv42()),
3246
- name: z39.string().optional(),
3247
- type: z39.literal(BlockType.separator).default(BlockType.separator)
3317
+ var SeparatorBlock = z40.object({
3318
+ id: z40.string().optional().default(() => uuidv42()),
3319
+ name: z40.string().optional(),
3320
+ type: z40.literal(BlockType.separator).default(BlockType.separator)
3248
3321
  });
3249
- var TextBlock = z39.object({
3250
- id: z39.string().optional().default(() => uuidv42()),
3251
- name: z39.string().optional(),
3252
- settings: z39.object({
3253
- description: z39.union([z39.string(), TiptapDocument]).optional().default(
3322
+ var TextBlock = z40.object({
3323
+ id: z40.string().optional().default(() => uuidv42()),
3324
+ name: z40.string().optional(),
3325
+ settings: z40.object({
3326
+ description: z40.union([z40.string(), TiptapDocument]).optional().default(
3254
3327
  "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
3255
3328
  ),
3256
3329
  /** This isn't used in the post-purchase offer widget */
3257
3330
  descriptionSize: TextSize.default("medium"),
3258
3331
  horizontalAlignment: TextAlignment2.default("leading"),
3259
- superTitle: z39.union([z39.string(), TiptapDocument]).default("Super Title"),
3332
+ superTitle: z40.union([z40.string(), TiptapDocument]).default("Super Title"),
3260
3333
  /** This isn't used in the post-purchase offer widget */
3261
3334
  superTitleSize: TextSize.default("medium"),
3262
- title: z39.union([z39.string(), TiptapDocument]).nullable().default("Lorem ipsum dolor sit amet."),
3335
+ title: z40.union([z40.string(), TiptapDocument]).nullable().default("Lorem ipsum dolor sit amet."),
3263
3336
  /** This isn't used in the post-purchase offer widget */
3264
3337
  titleSize: TextSize.default("medium")
3265
3338
  }),
3266
- type: z39.literal(BlockType.text).default(BlockType.text)
3339
+ type: z40.literal(BlockType.text).default(BlockType.text)
3267
3340
  });
3268
- var TimerBlock = z39.object({
3269
- id: z39.string().optional().default(() => uuidv42()),
3270
- name: z39.string().optional(),
3271
- settings: z39.object({
3272
- durationMinutes: z39.number().min(0).default(10),
3273
- durationSeconds: z39.union([z39.number().min(0), z39.unknown().transform(() => 0)]).default(0),
3274
- endOffer: z39.boolean().default(true),
3275
- title: z39.union([z39.string(), TiptapDocument]).default("Hurry \u2014 your special offer ends in:")
3341
+ var TimerBlock = z40.object({
3342
+ id: z40.string().optional().default(() => uuidv42()),
3343
+ name: z40.string().optional(),
3344
+ settings: z40.object({
3345
+ durationMinutes: z40.number().min(0).default(10),
3346
+ durationSeconds: z40.union([z40.number().min(0), z40.unknown().transform(() => 0)]).default(0),
3347
+ endOffer: z40.boolean().default(true),
3348
+ title: z40.union([z40.string(), TiptapDocument]).default("Hurry \u2014 your special offer ends in:")
3276
3349
  }),
3277
- styles: z39.object({
3350
+ styles: z40.object({
3278
3351
  textAlignment: TextAlignment2.default("center"),
3279
- timerBackgroundColor: z39.enum(["info", "warning", "success", "critical"]).default("warning"),
3280
- timerEmphasized: z39.union([z39.boolean(), z39.unknown().transform(() => true)]).default(true),
3352
+ timerBackgroundColor: z40.enum(["info", "warning", "success", "critical"]).default("warning"),
3353
+ timerEmphasized: z40.union([z40.boolean(), z40.unknown().transform(() => true)]).default(true),
3281
3354
  timerSize: TextSize.default("medium"),
3282
- timerWidth: z39.number().min(10).max(100).optional().default(100),
3283
- titleEmphasized: z39.union([z39.boolean(), z39.unknown().transform(() => true)]).default(false),
3355
+ timerWidth: z40.number().min(10).max(100).optional().default(100),
3356
+ titleEmphasized: z40.union([z40.boolean(), z40.unknown().transform(() => true)]).default(false),
3284
3357
  titleSize: TextSize.default("medium")
3285
3358
  }),
3286
- type: z39.literal(BlockType.timer).default(BlockType.timer)
3359
+ type: z40.literal(BlockType.timer).default(BlockType.timer)
3287
3360
  });
3288
- var PostPurchaseBlock = z39.discriminatedUnion("type", [
3361
+ var PostPurchaseBlock = z40.discriminatedUnion("type", [
3289
3362
  CalloutBannerBlock,
3290
3363
  ImageBlock,
3291
3364
  ImageContentBlock,
@@ -3305,68 +3378,68 @@ var isTextBlock = (block) => isEqual(get3(block, "type"), BlockType.text);
3305
3378
  var isTimerBlock = (block) => isEqual(get3(block, "type"), BlockType.timer);
3306
3379
 
3307
3380
  // src/schema/widgets/post-purchase-offer/postPurchaseOffer.ts
3308
- import { z as z42 } from "zod";
3381
+ import { z as z43 } from "zod";
3309
3382
 
3310
3383
  // src/schema/widgets/post-purchase-offer/postPurchaseWidget.ts
3311
- import { z as z41 } from "zod";
3384
+ import { z as z42 } from "zod";
3312
3385
 
3313
3386
  // src/schema/widgets/post-purchase-offer/postPurchaseSettings.ts
3314
- import { z as z40 } from "zod";
3315
- var PostPurchaseSettings = z40.object({
3316
- advance: z40.object({ removePartialOrder: z40.boolean().default(true) }).optional().default(() => ({ removePartialOrder: true })),
3317
- blocks: z40.union([z40.array(PostPurchaseBlock), z40.unknown().transform(() => [])]).default(() => [
3387
+ import { z as z41 } from "zod";
3388
+ var PostPurchaseSettings = z41.object({
3389
+ advance: z41.object({ removePartialOrder: z41.boolean().default(true) }).optional().default(() => ({ removePartialOrder: true })),
3390
+ blocks: z41.union([z41.array(PostPurchaseBlock), z41.unknown().transform(() => [])]).default(() => [
3318
3391
  PostPurchaseBlock.parse({ settings: {}, styles: {}, type: BlockType.timer }),
3319
3392
  PostPurchaseBlock.parse({ settings: {}, styles: {}, type: BlockType.callout_banner }),
3320
3393
  PostPurchaseBlock.parse({ type: BlockType.product_information })
3321
3394
  ]),
3322
- columnLayout: z40.boolean().optional(),
3323
- discount: z40.object({
3395
+ columnLayout: z41.boolean().optional(),
3396
+ discount: z41.object({
3324
3397
  amount: strictNumber.default(30),
3325
- shouldShowSavingText: z40.boolean().optional().default(true),
3326
- type: z40.enum(["none", "fixed_amount", "percentage"]).default("none")
3398
+ shouldShowSavingText: z41.boolean().optional().default(true),
3399
+ type: z41.enum(["none", "fixed_amount", "percentage"]).default("none")
3327
3400
  }),
3328
- discountedFrom: z40.enum(["price", "compare_at_price"]).optional().default("price"),
3329
- endpoint: z40.string().optional(),
3330
- integrations: z40.object({
3331
- judgeme: z40.boolean().default(false),
3332
- junip: z40.boolean().optional().default(false),
3333
- klaviyo: z40.boolean().default(false),
3334
- loox: z40.boolean().default(false),
3335
- okendo: z40.boolean().default(false),
3336
- opinew: z40.boolean().optional().default(false),
3337
- reviewsio: z40.boolean().optional().default(false),
3338
- stamped: z40.boolean().default(false),
3339
- yotpo: z40.boolean().default(false)
3401
+ discountedFrom: z41.enum(["price", "compare_at_price"]).optional().default("price"),
3402
+ endpoint: z41.string().optional(),
3403
+ integrations: z41.object({
3404
+ judgeme: z41.boolean().default(false),
3405
+ junip: z41.boolean().optional().default(false),
3406
+ klaviyo: z41.boolean().default(false),
3407
+ loox: z41.boolean().default(false),
3408
+ okendo: z41.boolean().default(false),
3409
+ opinew: z41.boolean().optional().default(false),
3410
+ reviewsio: z41.boolean().optional().default(false),
3411
+ stamped: z41.boolean().default(false),
3412
+ yotpo: z41.boolean().default(false)
3340
3413
  }),
3341
- key: z40.string().optional(),
3342
- language: z40.object({
3343
- description: z40.union([z40.string(), z40.unknown().transform(() => "")]).default(""),
3344
- descriptionEnabled: z40.boolean().optional().default(false),
3345
- descriptionRte: z40.object({
3346
- content: z40.array(z40.unknown()),
3347
- type: z40.string()
3414
+ key: z41.string().optional(),
3415
+ language: z41.object({
3416
+ description: z41.union([z41.string(), z41.unknown().transform(() => "")]).default(""),
3417
+ descriptionEnabled: z41.boolean().optional().default(false),
3418
+ descriptionRte: z41.object({
3419
+ content: z41.array(z41.unknown()),
3420
+ type: z41.string()
3348
3421
  }).optional(),
3349
- descriptionSpacing: z40.enum(["none", "xtight", "tight", "default", "loose", "xloose"]).optional(),
3350
- displayCtaPrice: z40.boolean().default(true),
3351
- global: z40.object({
3352
- declineAll: z40.string().optional().default("Decline All"),
3353
- declineThisOffer: z40.string().default("Decline this offer"),
3354
- free: z40.string().optional().default("Free"),
3355
- notAvailable: z40.string().optional().default("Not available"),
3356
- payNow: z40.string().default("Pay Now"),
3357
- payNowUpgradeToSubscription: z40.string().optional().default("Upgrade to Subscription"),
3358
- quantity: z40.string().default("Quantity"),
3422
+ descriptionSpacing: z41.enum(["none", "xtight", "tight", "default", "loose", "xloose"]).optional(),
3423
+ displayCtaPrice: z41.boolean().default(true),
3424
+ global: z41.object({
3425
+ declineAll: z41.string().optional().default("Decline All"),
3426
+ declineThisOffer: z41.string().default("Decline this offer"),
3427
+ free: z41.string().optional().default("Free"),
3428
+ notAvailable: z41.string().optional().default("Not available"),
3429
+ payNow: z41.string().default("Pay Now"),
3430
+ payNowUpgradeToSubscription: z41.string().optional().default("Upgrade to Subscription"),
3431
+ quantity: z41.string().default("Quantity"),
3359
3432
  /** This isn't configurable in the admin-nextjs editor */
3360
- recurringShipping: z40.string().optional().default("Recurring shipping"),
3361
- recurringSubtotal: z40.string().default("Recurring subtotal"),
3362
- reviewsPlural: z40.string().optional().default("Reviews"),
3363
- reviewsSingular: z40.string().optional().default("Review"),
3364
- save: z40.union([z40.string(), z40.unknown().transform(() => "Save")]).optional().default("Save"),
3365
- shipping: z40.string().default("Shipping"),
3366
- subscriptionOption: z40.string().optional().default("Subscribe and Save"),
3367
- subtotal: z40.string().default("Subtotal"),
3368
- taxes: z40.string().default("Taxes"),
3369
- total: z40.string().default("Total")
3433
+ recurringShipping: z41.string().optional().default("Recurring shipping"),
3434
+ recurringSubtotal: z41.string().default("Recurring subtotal"),
3435
+ reviewsPlural: z41.string().optional().default("Reviews"),
3436
+ reviewsSingular: z41.string().optional().default("Review"),
3437
+ save: z41.union([z41.string(), z41.unknown().transform(() => "Save")]).optional().default("Save"),
3438
+ shipping: z41.string().default("Shipping"),
3439
+ subscriptionOption: z41.string().optional().default("Subscribe and Save"),
3440
+ subtotal: z41.string().default("Subtotal"),
3441
+ taxes: z41.string().default("Taxes"),
3442
+ total: z41.string().default("Total")
3370
3443
  }).optional().default(() => ({
3371
3444
  declineAll: "Decline All",
3372
3445
  declineThisOffer: "Decline this offer",
@@ -3387,70 +3460,70 @@ var PostPurchaseSettings = z40.object({
3387
3460
  taxes: "Taxes",
3388
3461
  total: "Total"
3389
3462
  })),
3390
- globalTranslation: z40.string().optional().default("english")
3463
+ globalTranslation: z41.string().optional().default("english")
3391
3464
  }),
3392
- metafields: z40.boolean().default(false),
3465
+ metafields: z41.boolean().default(false),
3393
3466
  /** This isn't configurable in the admin-nextjs editor */
3394
- offer: z40.object({
3395
- count: z40.number().default(1)
3467
+ offer: z41.object({
3468
+ count: z41.number().default(1)
3396
3469
  }),
3397
- offersLayout: z40.object({
3398
- itemsPerPage: z40.number().optional(),
3399
- type: z40.enum(["list", "grid", "carousel"]).default("list")
3470
+ offersLayout: z41.object({
3471
+ itemsPerPage: z41.number().optional(),
3472
+ type: z41.enum(["list", "grid", "carousel"]).default("list")
3400
3473
  }).optional().default({
3401
3474
  type: "list"
3402
3475
  }),
3403
3476
  /** This isn't configurable in the admin-nextjs editor */
3404
- previewMode: z40.boolean().default(false),
3405
- productLimit: z40.number().optional().default(1),
3406
- productOptions: z40.object({
3477
+ previewMode: z41.boolean().default(false),
3478
+ productLimit: z41.number().optional().default(1),
3479
+ productOptions: z41.object({
3407
3480
  /** This isn't configurable in the admin-nextjs editor */
3408
- hideOutOfStockVariants: z40.boolean().optional().default(false),
3409
- matchVariant: z40.boolean().optional().default(true),
3410
- showDeclineAll: z40.enum(["above", "below", "both", "none"]).optional(),
3411
- showShipping: z40.boolean().optional().default(true),
3412
- showSubtotal: z40.boolean().optional().default(true),
3413
- showTaxes: z40.boolean().optional().default(true),
3414
- showTotal: z40.boolean().optional().default(true),
3415
- showVariantSelectors: z40.boolean().optional().default(true),
3416
- variantSelectorDisplayMode: z40.enum(["separate", "single"]).optional().default("separate")
3481
+ hideOutOfStockVariants: z41.boolean().optional().default(false),
3482
+ matchVariant: z41.boolean().optional().default(true),
3483
+ showDeclineAll: z41.enum(["above", "below", "both", "none"]).optional(),
3484
+ showShipping: z41.boolean().optional().default(true),
3485
+ showSubtotal: z41.boolean().optional().default(true),
3486
+ showTaxes: z41.boolean().optional().default(true),
3487
+ showTotal: z41.boolean().optional().default(true),
3488
+ showVariantSelectors: z41.boolean().optional().default(true),
3489
+ variantSelectorDisplayMode: z41.enum(["separate", "single"]).optional().default("separate")
3417
3490
  }),
3418
- productType: z40.union([z40.enum(["one-time", "subscription", "both"]), z40.literal("").transform(() => "one-time")]).default("one-time"),
3419
- productTypeSelector: z40.enum(["dropdown", "radio"]).optional().default("radio"),
3420
- quantityInputs: z40.object({
3421
- defaultQuantity: z40.union([z40.number(), z40.null().transform(() => 1)]).default(1),
3422
- enabled: z40.boolean().default(true),
3423
- maxValue: z40.union([z40.number(), z40.null().transform(() => 15)]).default(15),
3424
- minValue: z40.union([z40.number().min(0), z40.unknown().transform(() => 0)]).default(1)
3491
+ productType: z41.union([z41.enum(["one-time", "subscription", "both"]), z41.literal("").transform(() => "one-time")]).default("one-time"),
3492
+ productTypeSelector: z41.enum(["dropdown", "radio"]).optional().default("radio"),
3493
+ quantityInputs: z41.object({
3494
+ defaultQuantity: z41.union([z41.number(), z41.null().transform(() => 1)]).default(1),
3495
+ enabled: z41.boolean().default(true),
3496
+ maxValue: z41.union([z41.number(), z41.null().transform(() => 15)]).default(15),
3497
+ minValue: z41.union([z41.number().min(0), z41.unknown().transform(() => 0)]).default(1)
3425
3498
  }),
3426
- shipping: z40.object({
3499
+ shipping: z41.object({
3427
3500
  amount: strictNumber.default(10),
3428
3501
  /** This isn't configurable in the admin-nextjs editor */
3429
- enabled: z40.boolean().default(true),
3430
- title: z40.string().optional().default("Shipping Fees"),
3431
- type: z40.enum(["free", "fixed_amount"]).default("free")
3502
+ enabled: z41.boolean().default(true),
3503
+ title: z41.string().optional().default("Shipping Fees"),
3504
+ type: z41.enum(["free", "fixed_amount"]).default("free")
3432
3505
  }),
3433
- styles: z40.object({
3434
- starColor: z40.string().optional().default("#fadb14"),
3435
- starSize: z40.union([z40.enum(["small", "medium", "large"]), z40.unknown().transform(() => "large")]).optional().default("large"),
3436
- starStrokeColor: z40.string().optional().default("#fadb14"),
3437
- strokeWidth: z40.string().optional().default("1")
3506
+ styles: z41.object({
3507
+ starColor: z41.string().optional().default("#fadb14"),
3508
+ starSize: z41.union([z41.enum(["small", "medium", "large"]), z41.unknown().transform(() => "large")]).optional().default("large"),
3509
+ starStrokeColor: z41.string().optional().default("#fadb14"),
3510
+ strokeWidth: z41.string().optional().default("1")
3438
3511
  }).optional(),
3439
- subImages: z40.number().nullish().default(8),
3440
- subscription: z40.object({
3441
- discount: z40.object({
3512
+ subImages: z41.number().nullish().default(8),
3513
+ subscription: z41.object({
3514
+ discount: z41.object({
3442
3515
  amount: strictNumber.default(30),
3443
- shouldShowSavingText: z40.boolean().optional().default(true),
3444
- type: z40.enum(["none", "fixed_amount", "percentage"]).default("none")
3516
+ shouldShowSavingText: z41.boolean().optional().default(true),
3517
+ type: z41.enum(["none", "fixed_amount", "percentage"]).default("none")
3445
3518
  }),
3446
- shipping: z40.object({
3519
+ shipping: z41.object({
3447
3520
  amount: strictNumber.default(1),
3448
3521
  /** This isn't configurable in the admin-nextjs editor */
3449
- enabled: z40.boolean().default(true),
3522
+ enabled: z41.boolean().default(true),
3450
3523
  /** This isn't configurable in the admin-nextjs editor */
3451
3524
  recurringAmount: strictNumber.default(2),
3452
- shippingTitle: z40.string().default("Shipping Fees"),
3453
- type: z40.enum(["free", "fixed_amount"]).default("free")
3525
+ shippingTitle: z41.string().default("Shipping Fees"),
3526
+ type: z41.enum(["free", "fixed_amount"]).default("free")
3454
3527
  })
3455
3528
  }).optional().default({
3456
3529
  discount: {
@@ -3468,15 +3541,15 @@ var PostPurchaseSettings = z40.object({
3468
3541
  type: "free"
3469
3542
  }
3470
3543
  }),
3471
- subscriptionIsDefault: z40.boolean().optional(),
3544
+ subscriptionIsDefault: z41.boolean().optional(),
3472
3545
  /** This isn't configurable in the admin-nextjs editor */
3473
- template: z40.string().optional().default(""),
3474
- type: z40.literal("shopify_post_purchase_extension").default("shopify_post_purchase_extension"),
3475
- upgradeToSubscription: z40.object({
3476
- acceptButtonText: z40.string().optional().default("Upgrade"),
3477
- allow: z40.boolean().optional().default(false),
3478
- emailRefundNotice: z40.boolean().optional().default(false),
3479
- errorBannerText: z40.string().optional().default("This subscription cannot be added - limit one per order")
3546
+ template: z41.string().optional().default(""),
3547
+ type: z41.literal("shopify_post_purchase_extension").default("shopify_post_purchase_extension"),
3548
+ upgradeToSubscription: z41.object({
3549
+ acceptButtonText: z41.string().optional().default("Upgrade"),
3550
+ allow: z41.boolean().optional().default(false),
3551
+ emailRefundNotice: z41.boolean().optional().default(false),
3552
+ errorBannerText: z41.string().optional().default("This subscription cannot be added - limit one per order")
3480
3553
  }).optional().default(() => ({
3481
3554
  acceptButtonText: "Upgrade",
3482
3555
  allow: false,
@@ -3486,32 +3559,32 @@ var PostPurchaseSettings = z40.object({
3486
3559
  });
3487
3560
 
3488
3561
  // src/schema/widgets/post-purchase-offer/postPurchaseWidget.ts
3489
- var PostPurchaseWidgetLinkedFlow = z41.object({
3490
- id: z41.number(),
3491
- name: z41.string()
3562
+ var PostPurchaseWidgetLinkedFlow = z42.object({
3563
+ id: z42.number(),
3564
+ name: z42.string()
3492
3565
  });
3493
- var PostPurchaseWidget = z41.object({
3494
- classification: z41.literal("post_purchase_offer_page").default("post_purchase_offer_page"),
3495
- createdAtTime: z41.iso.datetime({ offset: true }).optional(),
3496
- customEndpointName: z41.string().nullish(),
3497
- id: z41.number().default(0),
3498
- lastViewed: z41.iso.datetime({ offset: true }).nullish(),
3499
- linkedCustomEndpointId: z41.number().nullish(),
3500
- linkedFlows: z41.array(PostPurchaseWidgetLinkedFlow).optional(),
3501
- name: z41.string().default(""),
3502
- owner: z41.number().nullish(),
3566
+ var PostPurchaseWidget = z42.object({
3567
+ classification: z42.literal("post_purchase_offer_page").default("post_purchase_offer_page"),
3568
+ createdAtTime: z42.iso.datetime({ offset: true }).optional(),
3569
+ customEndpointName: z42.string().nullish(),
3570
+ id: z42.number().default(0),
3571
+ lastViewed: z42.iso.datetime({ offset: true }).nullish(),
3572
+ linkedCustomEndpointId: z42.number().nullish(),
3573
+ linkedFlows: z42.array(PostPurchaseWidgetLinkedFlow).optional(),
3574
+ name: z42.string().default(""),
3575
+ owner: z42.number().nullish(),
3503
3576
  settings: PostPurchaseSettings
3504
3577
  });
3505
3578
 
3506
3579
  // src/schema/widgets/post-purchase-offer/postPurchaseOffer.ts
3507
- var PostPurchaseOffer = z42.discriminatedUnion("successful", [
3508
- z42.strictObject({
3509
- errors: z42.array(z42.object({ message: z42.string() })),
3510
- message: z42.string(),
3511
- successful: z42.literal(false)
3580
+ var PostPurchaseOffer = z43.discriminatedUnion("successful", [
3581
+ z43.strictObject({
3582
+ errors: z43.array(z43.object({ message: z43.string() })),
3583
+ message: z43.string(),
3584
+ successful: z43.literal(false)
3512
3585
  }),
3513
- z42.strictObject({
3514
- successful: z42.literal(true),
3586
+ z43.strictObject({
3587
+ successful: z43.literal(true),
3515
3588
  widget: PostPurchaseWidget
3516
3589
  })
3517
3590
  ]);
@@ -4424,6 +4497,7 @@ var convertOfferToV2 = ({ id, name, settings }) => {
4424
4497
  sectionType: "carousel"
4425
4498
  };
4426
4499
  return CABRootSection.parse({
4500
+ alignment: { horizontal: "center", vertical: "top" },
4427
4501
  direction: "rows",
4428
4502
  editorMode: LOCATION_TO_EDITOR_MODE[settings.location ?? "checkout"],
4429
4503
  // The widget name is required by the admin save schema; carry the legacy widget's name through.
@@ -4461,6 +4535,7 @@ export {
4461
4535
  CABDataSourceSection,
4462
4536
  CABDiscount,
4463
4537
  CABDiscountSection,
4538
+ CABEventTrigger,
4464
4539
  CABExperiment,
4465
4540
  CABImageSection,
4466
4541
  CABImageSectionFields,
@@ -4473,16 +4548,26 @@ export {
4473
4548
  CABProgressBarSection,
4474
4549
  CABProgressTier,
4475
4550
  CABQuantitySection,
4551
+ CABResultCountTrigger,
4552
+ CABResultTagTrigger,
4476
4553
  CABReviewsSection,
4477
4554
  CABRootSection,
4478
- CABRule,
4555
+ CABRuleset,
4556
+ CABRulesetEntry,
4479
4557
  CABSection,
4480
4558
  CABTextSection,
4481
4559
  CABTextTier,
4482
4560
  CABTracking,
4483
4561
  CABUILabels,
4562
+ CABVariable,
4563
+ CABVariableEffect,
4564
+ CABVariableFields,
4565
+ CABVariableMutator,
4566
+ CABVariableSeed,
4567
+ CABVariableTrigger,
4484
4568
  CABVariantContent,
4485
4569
  CABVariantsSection,
4570
+ CABVisibility,
4486
4571
  COMBINED_ENDPOINTS,
4487
4572
  CabActiveExperiment,
4488
4573
  CabShopConfig,
@@ -4517,6 +4602,7 @@ export {
4517
4602
  LineItemEditorSwitchLanguageV1,
4518
4603
  LineItemEditorV1,
4519
4604
  Metadata,
4605
+ MutatorEvent,
4520
4606
  NO_HTML,
4521
4607
  OFFER_LABELS,
4522
4608
  ObjectFit,
@@ -4543,6 +4629,8 @@ export {
4543
4629
  RebuyClient,
4544
4630
  RebuyMonetize,
4545
4631
  RebuyMonetizeV1,
4632
+ ResultCountOperator,
4633
+ ResultTagOperator,
4546
4634
  ReviewsSize,
4547
4635
  RuleCondition,
4548
4636
  RuleLogicBlock,
@@ -4572,6 +4660,7 @@ export {
4572
4660
  TiptapText,
4573
4661
  UI_LABELS,
4574
4662
  UserConfig,
4663
+ VariableEffect,
4575
4664
  VariantMode,
4576
4665
  VariantSelector,
4577
4666
  VerticalAlignment,
@@ -4643,6 +4732,7 @@ export {
4643
4732
  isTimerBlock,
4644
4733
  isVariantsType,
4645
4734
  languageKeys,
4735
+ mutatorEvents,
4646
4736
  objectFits,
4647
4737
  offersDirections,
4648
4738
  popoverPositionMap,
@@ -4653,6 +4743,8 @@ export {
4653
4743
  progressTierUnits,
4654
4744
  quantityInputs,
4655
4745
  queryStringToObject,
4746
+ resultCountOperators,
4747
+ resultTagOperators,
4656
4748
  reviewsSizes,
4657
4749
  ruleOperators,
4658
4750
  ruleTypes,
@@ -4671,6 +4763,7 @@ export {
4671
4763
  textSizeNames,
4672
4764
  utmObjectFromString,
4673
4765
  uuid,
4766
+ variableEffects,
4674
4767
  variantAvailable,
4675
4768
  variantMinMaxPriceObject,
4676
4769
  variantModes,