@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.
- package/dist/index.cjs +740 -647
- package/dist/index.mjs +740 -647
- package/dist/schema/checkout-and-beyond/constants.cjs +16 -0
- package/dist/schema/checkout-and-beyond/constants.mjs +16 -0
- package/dist/schema/checkout-and-beyond/index.cjs +454 -362
- package/dist/schema/checkout-and-beyond/index.mjs +454 -362
- package/dist/schema/widget-data.cjs +508 -435
- package/dist/schema/widget-data.mjs +508 -435
- package/dist/schema/widgetData.d.ts +438 -147
- package/dist/schema/widgets/checkout-and-beyond/banner.d.ts +145 -48
- package/dist/schema/widgets/checkout-and-beyond/button.d.ts +154 -49
- package/dist/schema/widgets/checkout-and-beyond/carousel.d.ts +145 -48
- package/dist/schema/widgets/checkout-and-beyond/cartLine.d.ts +145 -48
- package/dist/schema/widgets/checkout-and-beyond/common.d.ts +29 -0
- package/dist/schema/widgets/checkout-and-beyond/discount.d.ts +146 -0
- package/dist/schema/widgets/checkout-and-beyond/icons.d.ts +1 -1
- package/dist/schema/widgets/checkout-and-beyond/image.d.ts +294 -100
- package/dist/schema/widgets/checkout-and-beyond/index.d.ts +1 -0
- package/dist/schema/widgets/checkout-and-beyond/layout.d.ts +148 -52
- package/dist/schema/widgets/checkout-and-beyond/monetize.d.ts +146 -49
- package/dist/schema/widgets/checkout-and-beyond/offers.d.ts +145 -48
- package/dist/schema/widgets/checkout-and-beyond/product.d.ts +146 -0
- package/dist/schema/widgets/checkout-and-beyond/products.d.ts +292 -0
- package/dist/schema/widgets/checkout-and-beyond/progressBar.d.ts +145 -48
- package/dist/schema/widgets/checkout-and-beyond/quantity.d.ts +146 -49
- package/dist/schema/widgets/checkout-and-beyond/reviews.d.ts +146 -49
- package/dist/schema/widgets/checkout-and-beyond/root.d.ts +146 -49
- package/dist/schema/widgets/checkout-and-beyond/rule.d.ts +140 -68
- package/dist/schema/widgets/checkout-and-beyond/text.d.ts +146 -49
- package/dist/schema/widgets/checkout-and-beyond/variables.d.ts +470 -0
- package/dist/schema/widgets/checkout-and-beyond/variants.d.ts +146 -49
- package/dist/schema/widgets/contentBlock.d.ts +146 -49
- package/dist/schema/widgets/lineItemEditor.d.ts +146 -49
- package/dist/schema/widgets/rebuyButton.d.ts +146 -49
- package/dist/server/index.cjs +492 -416
- package/dist/server/index.mjs +492 -416
- package/dist/transforms/index.cjs +393 -317
- package/dist/transforms/index.mjs +393 -317
- package/dist/transforms/monetizeV1/convertMonetizeToV2.d.ts +2 -2
- 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
|
|
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
|
|
1538
|
+
import { z as z31 } from "zod";
|
|
1531
1539
|
|
|
1532
1540
|
// src/schema/widgets/checkout-and-beyond/root.ts
|
|
1533
|
-
import { z as
|
|
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
|
|
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
|
|
1548
|
+
import { z as z28 } from "zod";
|
|
1608
1549
|
|
|
1609
1550
|
// src/schema/widgets/checkout-and-beyond/banner.ts
|
|
1610
|
-
import { z as
|
|
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 =
|
|
1628
|
+
var CABBannerSection = z10.lazy(
|
|
1688
1629
|
() => CABLayoutSection.omit({ sectionType: true }).extend({
|
|
1689
|
-
buttonField:
|
|
1690
|
-
color:
|
|
1691
|
-
dismissible:
|
|
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:
|
|
1708
|
-
sectionType:
|
|
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
|
|
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
|
|
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 =
|
|
1806
|
-
|
|
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:
|
|
1813
|
-
border:
|
|
1814
|
-
buttonField:
|
|
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:
|
|
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:
|
|
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:
|
|
1838
|
-
name:
|
|
1839
|
-
naturalHeight:
|
|
1840
|
-
naturalWidth:
|
|
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:
|
|
1846
|
-
|
|
1847
|
-
|
|
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:
|
|
1856
|
-
width:
|
|
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
|
|
1879
|
-
var enumOrOmit = (...vals) =>
|
|
1880
|
-
var TiptapText =
|
|
1881
|
-
marks:
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
attrs:
|
|
1888
|
-
class:
|
|
1889
|
-
href:
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
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:
|
|
1896
|
-
target:
|
|
1960
|
+
rel: z14.string().default("noopener noreferrer nofollow"),
|
|
1961
|
+
target: z14.string().default("_blank")
|
|
1897
1962
|
}),
|
|
1898
|
-
type:
|
|
1963
|
+
type: z14.literal("link")
|
|
1899
1964
|
}),
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
attrs:
|
|
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:
|
|
1971
|
+
type: z14.literal("textStyle")
|
|
1907
1972
|
})
|
|
1908
1973
|
])
|
|
1909
1974
|
),
|
|
1910
|
-
|
|
1975
|
+
z14.strictObject({}).transform(() => [])
|
|
1911
1976
|
]).optional(),
|
|
1912
|
-
text:
|
|
1913
|
-
type:
|
|
1977
|
+
text: z14.string().default(""),
|
|
1978
|
+
type: z14.literal("text").default("text")
|
|
1914
1979
|
});
|
|
1915
|
-
var TiptapParagraph =
|
|
1916
|
-
attrs:
|
|
1980
|
+
var TiptapParagraph = z14.object({
|
|
1981
|
+
attrs: z14.object({
|
|
1917
1982
|
textAlign: enumOrOmit(...textAlignments)
|
|
1918
1983
|
}).default({ textAlign: TextAlignment.start }),
|
|
1919
|
-
content:
|
|
1920
|
-
type:
|
|
1984
|
+
content: z14.union([z14.array(TiptapText), z14.strictObject({}).transform(() => [])]).default(() => []),
|
|
1985
|
+
type: z14.literal("paragraph").default("paragraph")
|
|
1921
1986
|
});
|
|
1922
|
-
var TiptapDocument =
|
|
1923
|
-
attrs:
|
|
1987
|
+
var TiptapDocument = z14.object({
|
|
1988
|
+
attrs: z14.object({
|
|
1924
1989
|
blockSpacing: enumOrOmit(...spacings)
|
|
1925
1990
|
}).default({ blockSpacing: Spacing.base }),
|
|
1926
|
-
content:
|
|
1927
|
-
type:
|
|
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 =
|
|
1930
|
-
threshold:
|
|
1931
|
-
thresholds:
|
|
1932
|
-
tierId:
|
|
1933
|
-
tierType:
|
|
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 =
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
sectionId:
|
|
1942
|
-
sectionType:
|
|
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 =
|
|
1965
|
-
() =>
|
|
2029
|
+
var CABButtonContent = z15.lazy(
|
|
2030
|
+
() => z15.discriminatedUnion("sectionType", [CABImageSection, CABLayoutSection, CABTextSection])
|
|
1966
2031
|
);
|
|
1967
|
-
var CABButtonSection =
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
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:
|
|
1980
|
-
name:
|
|
1981
|
-
optionId:
|
|
1982
|
-
popover:
|
|
1983
|
-
alignment:
|
|
1984
|
-
position:
|
|
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
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
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:
|
|
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:
|
|
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
|
|
2083
|
+
import { z as z20 } from "zod";
|
|
2014
2084
|
|
|
2015
2085
|
// src/schema/widgets/checkout-and-beyond/offers.ts
|
|
2016
|
-
import { z as
|
|
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
|
|
2021
|
-
var CABDiscount =
|
|
2022
|
-
amount:
|
|
2023
|
-
discountedBy:
|
|
2024
|
-
discountedFrom:
|
|
2025
|
-
type:
|
|
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 =
|
|
2028
|
-
judgeme:
|
|
2029
|
-
junip:
|
|
2030
|
-
klaviyo:
|
|
2031
|
-
loox:
|
|
2032
|
-
okendo:
|
|
2033
|
-
opinew:
|
|
2034
|
-
reviewsio:
|
|
2035
|
-
stamped:
|
|
2036
|
-
yotpo:
|
|
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 =
|
|
2039
|
-
dataSourceId:
|
|
2040
|
-
dataSourcePath:
|
|
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:
|
|
2044
|
-
matchVariant:
|
|
2045
|
-
matchVariantOutOfStock:
|
|
2046
|
-
name:
|
|
2047
|
-
productType:
|
|
2048
|
-
sectionId:
|
|
2049
|
-
sectionType:
|
|
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:
|
|
2052
|
-
treatAsGwp:
|
|
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
|
|
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
|
|
2062
|
-
var CABVariantContent =
|
|
2063
|
-
() =>
|
|
2131
|
+
import { z as z17 } from "zod";
|
|
2132
|
+
var CABVariantContent = z17.lazy(
|
|
2133
|
+
() => z17.discriminatedUnion("sectionType", [CABButtonSection, CABTextSection])
|
|
2064
2134
|
);
|
|
2065
|
-
var CABProductSection =
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
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 =
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
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 =
|
|
2156
|
+
var CABOffersSection = z19.lazy(
|
|
2085
2157
|
() => CABLayoutSection.omit({ sections: true, sectionType: true }).extend({
|
|
2086
|
-
sections:
|
|
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:
|
|
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 =
|
|
2177
|
+
var CABCarouselSection = z20.lazy(
|
|
2106
2178
|
() => CABLayoutSection.omit({ sections: true, sectionType: true }).extend({
|
|
2107
|
-
autoAdvanceInterval:
|
|
2108
|
-
itemsAtOnce:
|
|
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:
|
|
2111
|
-
sections:
|
|
2112
|
-
sectionType:
|
|
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
|
|
2118
|
-
var CABCartLineSection =
|
|
2189
|
+
import { z as z21 } from "zod";
|
|
2190
|
+
var CABCartLineSection = z21.lazy(
|
|
2119
2191
|
() => CABLayoutSection.omit({ sections: true, sectionType: true }).extend({
|
|
2120
|
-
sections:
|
|
2121
|
-
sectionType:
|
|
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
|
|
2128
|
-
var CABDiscountSection =
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
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
|
|
2143
|
-
var CABMonetizeSection =
|
|
2144
|
-
|
|
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:
|
|
2147
|
-
|
|
2148
|
-
|
|
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:
|
|
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:
|
|
2226
|
+
vertical: z23.string().optional()
|
|
2154
2227
|
});
|
|
2155
2228
|
|
|
2156
2229
|
// src/schema/widgets/checkout-and-beyond/progressBar.ts
|
|
2157
|
-
import { z as
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
2299
|
-
productId:
|
|
2300
|
-
title:
|
|
2301
|
-
variantIds:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
2340
|
-
tierType:
|
|
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:
|
|
2424
|
+
unit: z24.enum(progressTierUnits).default(ProgressTierUnit.currency)
|
|
2352
2425
|
});
|
|
2353
|
-
var CABProgressBarSection =
|
|
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:
|
|
2435
|
+
barId: z24.string().optional(),
|
|
2363
2436
|
/** Empty = shown everywhere; otherwise uppercase ISO country codes. */
|
|
2364
|
-
countryCodes:
|
|
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:
|
|
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:
|
|
2448
|
+
excludeDiscountInSubtotal: z24.boolean().default(false),
|
|
2376
2449
|
/** Variant ids the client subtracts from the adjusted subtotal (React `bar.excluded_products`). */
|
|
2377
|
-
excludedVariantIds:
|
|
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:
|
|
2455
|
+
freeShippingOnSubscription: z24.boolean().default(false),
|
|
2383
2456
|
/** Localized heading over the gift controls (onsite `gift_area_title`, default 'FREE GIFTS'). */
|
|
2384
|
-
giftAreaTitle:
|
|
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:
|
|
2387
|
-
addGift:
|
|
2388
|
-
remove:
|
|
2389
|
-
selectOptions:
|
|
2390
|
-
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:
|
|
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:
|
|
2406
|
-
sectionType:
|
|
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:
|
|
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
|
|
2420
|
-
var CABQuantitySection =
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
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:
|
|
2426
|
-
max:
|
|
2427
|
-
min:
|
|
2428
|
-
neg:
|
|
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:
|
|
2439
|
-
max:
|
|
2440
|
-
min:
|
|
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:
|
|
2443
|
-
|
|
2444
|
-
|
|
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
|
|
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 =
|
|
2514
|
-
|
|
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:
|
|
2521
|
-
one:
|
|
2522
|
-
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:
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
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
|
|
2535
|
-
var CABVariantsSection =
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
sectionId:
|
|
2540
|
-
sectionType:
|
|
2541
|
-
selector:
|
|
2542
|
-
variantMode:
|
|
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 =
|
|
2547
|
-
radius:
|
|
2548
|
-
style:
|
|
2549
|
-
width:
|
|
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 =
|
|
2556
|
-
() =>
|
|
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 =
|
|
2579
|
-
var CABLayoutSection =
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
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:
|
|
2588
|
-
buttonField:
|
|
2589
|
-
direction:
|
|
2590
|
-
grid:
|
|
2591
|
-
columns:
|
|
2592
|
-
rows:
|
|
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:
|
|
2595
|
-
padding:
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
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:
|
|
2603
|
-
width:
|
|
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) =>
|
|
2621
|
-
var CABUILabels =
|
|
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 =
|
|
2643
|
-
fill:
|
|
2644
|
-
flip:
|
|
2645
|
-
icon:
|
|
2646
|
-
label:
|
|
2647
|
-
width:
|
|
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 =
|
|
2650
|
-
enableAttribution:
|
|
2651
|
-
enableSource:
|
|
2652
|
-
enableWidget:
|
|
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 =
|
|
2655
|
-
elementId:
|
|
2656
|
-
experimentId:
|
|
2657
|
-
experimentType:
|
|
2658
|
-
selectedId:
|
|
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:
|
|
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:
|
|
2666
|
-
storeId:
|
|
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:
|
|
2742
|
+
type: z30.enum(widgetTypes).default(WidgetType.ui_extension_content_block),
|
|
2670
2743
|
uiLabels: CABUILabels,
|
|
2671
|
-
version:
|
|
2672
|
-
widgetId:
|
|
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 =
|
|
2677
|
-
blockSpacing:
|
|
2678
|
-
imageBlocks:
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
altText:
|
|
2682
|
-
description:
|
|
2683
|
-
id:
|
|
2684
|
-
imagePlacement:
|
|
2685
|
-
imageSize:
|
|
2686
|
-
imageUrl:
|
|
2687
|
-
textAlignment:
|
|
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:
|
|
2762
|
+
textSize: z31.enum(inlineTextSizeNames)
|
|
2690
2763
|
})
|
|
2691
2764
|
),
|
|
2692
|
-
|
|
2765
|
+
z31.strictObject({}).transform(() => [])
|
|
2693
2766
|
]).optional(),
|
|
2694
|
-
imageLayout:
|
|
2695
|
-
language:
|
|
2696
|
-
description:
|
|
2697
|
-
superTitle:
|
|
2698
|
-
title:
|
|
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:
|
|
2701
|
-
type:
|
|
2702
|
-
version:
|
|
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 =
|
|
2777
|
+
var ContentBlock = z31.discriminatedUnion("version", [
|
|
2705
2778
|
ContentBlockV1,
|
|
2706
2779
|
CABRootSection.extend({
|
|
2707
|
-
type:
|
|
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
|
|
2713
|
-
var GiftWithPurchase =
|
|
2714
|
-
type:
|
|
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
|
|
2719
|
-
var LineItemEditorSwitchLanguageV1 =
|
|
2720
|
-
downgradeToOneTimeLabel:
|
|
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:
|
|
2723
|
-
upgradeToSubscriptionLabel:
|
|
2724
|
-
upgradeToSubscriptionWithoutDiscountLabel:
|
|
2795
|
+
subscriptionOptionLabel: z33.string().optional(),
|
|
2796
|
+
upgradeToSubscriptionLabel: z33.string().optional(),
|
|
2797
|
+
upgradeToSubscriptionWithoutDiscountLabel: z33.string().optional()
|
|
2725
2798
|
});
|
|
2726
|
-
var LineItemEditorV1 =
|
|
2799
|
+
var LineItemEditorV1 = z33.object({
|
|
2727
2800
|
/** Legacy `getStyles` button style; the converter carries a valid kind, defaulting to `plain`. */
|
|
2728
|
-
button:
|
|
2729
|
-
previewMode:
|
|
2730
|
-
switchToSubscription:
|
|
2731
|
-
disableDowngrade:
|
|
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:
|
|
2735
|
-
tracking:
|
|
2736
|
-
enableAttribution:
|
|
2737
|
-
enableSource:
|
|
2738
|
-
enableWidget:
|
|
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:
|
|
2741
|
-
version:
|
|
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 =
|
|
2816
|
+
var LineItemEditor = z33.discriminatedUnion("version", [
|
|
2744
2817
|
LineItemEditorV1,
|
|
2745
2818
|
CABRootSection.extend({
|
|
2746
|
-
type:
|
|
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
|
|
2752
|
-
var ProgressBar =
|
|
2753
|
-
type:
|
|
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
|
|
2758
|
-
var RebuyButtonV1 =
|
|
2759
|
-
type:
|
|
2760
|
-
version:
|
|
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 =
|
|
2835
|
+
var RebuyButton = z35.discriminatedUnion("version", [
|
|
2763
2836
|
RebuyButtonV1,
|
|
2764
2837
|
CABRootSection.extend({
|
|
2765
|
-
type:
|
|
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
|
|
2771
|
-
var RebuyMonetize =
|
|
2772
|
-
type:
|
|
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 =
|
|
2775
|
-
name:
|
|
2776
|
-
previewMode:
|
|
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:
|
|
2851
|
+
privacyPolicyUrl: z36.string().nullable().optional(),
|
|
2779
2852
|
/** Ads-taxonomy sub-vertical id — one of the admin Monetize editor's two configurables. */
|
|
2780
|
-
subVertical:
|
|
2781
|
-
tracking:
|
|
2782
|
-
enableAttribution:
|
|
2783
|
-
enableSource:
|
|
2784
|
-
enableWidget:
|
|
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:
|
|
2787
|
-
version:
|
|
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:
|
|
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 =
|
|
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
|
|
3133
|
-
var strictNumber =
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
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
|
|
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 =
|
|
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
|
|
3158
|
-
var TextAlignment2 =
|
|
3159
|
-
var TextSize =
|
|
3160
|
-
|
|
3161
|
-
|
|
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 =
|
|
3164
|
-
id:
|
|
3165
|
-
name:
|
|
3166
|
-
settings:
|
|
3167
|
-
superTitle:
|
|
3168
|
-
title:
|
|
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:
|
|
3171
|
-
superTitleEmphasized:
|
|
3243
|
+
styles: z40.object({
|
|
3244
|
+
superTitleEmphasized: z40.boolean().default(false),
|
|
3172
3245
|
superTitleSize: TextSize.default("large"),
|
|
3173
3246
|
textAlignment: TextAlignment2.default("center"),
|
|
3174
|
-
titleEmphasized:
|
|
3247
|
+
titleEmphasized: z40.boolean().default(true),
|
|
3175
3248
|
titleSize: TextSize.default("large")
|
|
3176
3249
|
}),
|
|
3177
|
-
type:
|
|
3250
|
+
type: z40.literal(BlockType.callout_banner).default(BlockType.callout_banner)
|
|
3178
3251
|
});
|
|
3179
|
-
var ImageBlock =
|
|
3180
|
-
id:
|
|
3181
|
-
name:
|
|
3182
|
-
settings:
|
|
3183
|
-
|
|
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:
|
|
3186
|
-
image:
|
|
3187
|
-
imageSize:
|
|
3188
|
-
imageType:
|
|
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
|
-
|
|
3263
|
+
z40.array(z40.never()).transform(() => ({}))
|
|
3191
3264
|
]),
|
|
3192
|
-
type:
|
|
3265
|
+
type: z40.literal(BlockType.image).default(BlockType.image)
|
|
3193
3266
|
});
|
|
3194
|
-
var ImageContentBlock =
|
|
3195
|
-
id:
|
|
3196
|
-
name:
|
|
3197
|
-
settings:
|
|
3198
|
-
alt:
|
|
3199
|
-
description:
|
|
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:
|
|
3205
|
-
imagePlacement:
|
|
3206
|
-
imageSize:
|
|
3207
|
-
superTitle:
|
|
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:
|
|
3211
|
-
title:
|
|
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:
|
|
3287
|
+
type: z40.literal(BlockType.image_content).default(BlockType.image_content)
|
|
3215
3288
|
});
|
|
3216
|
-
var PayButtonBlock =
|
|
3217
|
-
id:
|
|
3218
|
-
name:
|
|
3219
|
-
settings:
|
|
3220
|
-
|
|
3221
|
-
label:
|
|
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
|
-
|
|
3296
|
+
z40.array(z40.never()).transform(() => ({
|
|
3224
3297
|
label: "Pay Now"
|
|
3225
3298
|
}))
|
|
3226
3299
|
]),
|
|
3227
|
-
styles:
|
|
3228
|
-
|
|
3229
|
-
buttonWidth:
|
|
3300
|
+
styles: z40.union([
|
|
3301
|
+
z40.object({
|
|
3302
|
+
buttonWidth: z40.number().min(10).max(100).default(50)
|
|
3230
3303
|
}),
|
|
3231
|
-
|
|
3304
|
+
z40.array(z40.never()).transform(() => ({
|
|
3232
3305
|
buttonWidth: 50
|
|
3233
3306
|
}))
|
|
3234
3307
|
]),
|
|
3235
|
-
type:
|
|
3308
|
+
type: z40.literal(BlockType.pay_button).default(BlockType.pay_button)
|
|
3236
3309
|
});
|
|
3237
|
-
var ProductInformationBlock =
|
|
3310
|
+
var ProductInformationBlock = z40.object({
|
|
3238
3311
|
/** This isn't configurable in the admin-nextjs editor */
|
|
3239
|
-
hideProductImage:
|
|
3240
|
-
id:
|
|
3241
|
-
name:
|
|
3242
|
-
type:
|
|
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 =
|
|
3245
|
-
id:
|
|
3246
|
-
name:
|
|
3247
|
-
type:
|
|
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 =
|
|
3250
|
-
id:
|
|
3251
|
-
name:
|
|
3252
|
-
settings:
|
|
3253
|
-
description:
|
|
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:
|
|
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:
|
|
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:
|
|
3339
|
+
type: z40.literal(BlockType.text).default(BlockType.text)
|
|
3267
3340
|
});
|
|
3268
|
-
var TimerBlock =
|
|
3269
|
-
id:
|
|
3270
|
-
name:
|
|
3271
|
-
settings:
|
|
3272
|
-
durationMinutes:
|
|
3273
|
-
durationSeconds:
|
|
3274
|
-
endOffer:
|
|
3275
|
-
title:
|
|
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:
|
|
3350
|
+
styles: z40.object({
|
|
3278
3351
|
textAlignment: TextAlignment2.default("center"),
|
|
3279
|
-
timerBackgroundColor:
|
|
3280
|
-
timerEmphasized:
|
|
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:
|
|
3283
|
-
titleEmphasized:
|
|
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:
|
|
3359
|
+
type: z40.literal(BlockType.timer).default(BlockType.timer)
|
|
3287
3360
|
});
|
|
3288
|
-
var PostPurchaseBlock =
|
|
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
|
|
3381
|
+
import { z as z43 } from "zod";
|
|
3309
3382
|
|
|
3310
3383
|
// src/schema/widgets/post-purchase-offer/postPurchaseWidget.ts
|
|
3311
|
-
import { z as
|
|
3384
|
+
import { z as z42 } from "zod";
|
|
3312
3385
|
|
|
3313
3386
|
// src/schema/widgets/post-purchase-offer/postPurchaseSettings.ts
|
|
3314
|
-
import { z as
|
|
3315
|
-
var PostPurchaseSettings =
|
|
3316
|
-
advance:
|
|
3317
|
-
blocks:
|
|
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:
|
|
3323
|
-
discount:
|
|
3395
|
+
columnLayout: z41.boolean().optional(),
|
|
3396
|
+
discount: z41.object({
|
|
3324
3397
|
amount: strictNumber.default(30),
|
|
3325
|
-
shouldShowSavingText:
|
|
3326
|
-
type:
|
|
3398
|
+
shouldShowSavingText: z41.boolean().optional().default(true),
|
|
3399
|
+
type: z41.enum(["none", "fixed_amount", "percentage"]).default("none")
|
|
3327
3400
|
}),
|
|
3328
|
-
discountedFrom:
|
|
3329
|
-
endpoint:
|
|
3330
|
-
integrations:
|
|
3331
|
-
judgeme:
|
|
3332
|
-
junip:
|
|
3333
|
-
klaviyo:
|
|
3334
|
-
loox:
|
|
3335
|
-
okendo:
|
|
3336
|
-
opinew:
|
|
3337
|
-
reviewsio:
|
|
3338
|
-
stamped:
|
|
3339
|
-
yotpo:
|
|
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:
|
|
3342
|
-
language:
|
|
3343
|
-
description:
|
|
3344
|
-
descriptionEnabled:
|
|
3345
|
-
descriptionRte:
|
|
3346
|
-
content:
|
|
3347
|
-
type:
|
|
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:
|
|
3350
|
-
displayCtaPrice:
|
|
3351
|
-
global:
|
|
3352
|
-
declineAll:
|
|
3353
|
-
declineThisOffer:
|
|
3354
|
-
free:
|
|
3355
|
-
notAvailable:
|
|
3356
|
-
payNow:
|
|
3357
|
-
payNowUpgradeToSubscription:
|
|
3358
|
-
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:
|
|
3361
|
-
recurringSubtotal:
|
|
3362
|
-
reviewsPlural:
|
|
3363
|
-
reviewsSingular:
|
|
3364
|
-
save:
|
|
3365
|
-
shipping:
|
|
3366
|
-
subscriptionOption:
|
|
3367
|
-
subtotal:
|
|
3368
|
-
taxes:
|
|
3369
|
-
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:
|
|
3463
|
+
globalTranslation: z41.string().optional().default("english")
|
|
3391
3464
|
}),
|
|
3392
|
-
metafields:
|
|
3465
|
+
metafields: z41.boolean().default(false),
|
|
3393
3466
|
/** This isn't configurable in the admin-nextjs editor */
|
|
3394
|
-
offer:
|
|
3395
|
-
count:
|
|
3467
|
+
offer: z41.object({
|
|
3468
|
+
count: z41.number().default(1)
|
|
3396
3469
|
}),
|
|
3397
|
-
offersLayout:
|
|
3398
|
-
itemsPerPage:
|
|
3399
|
-
type:
|
|
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:
|
|
3405
|
-
productLimit:
|
|
3406
|
-
productOptions:
|
|
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:
|
|
3409
|
-
matchVariant:
|
|
3410
|
-
showDeclineAll:
|
|
3411
|
-
showShipping:
|
|
3412
|
-
showSubtotal:
|
|
3413
|
-
showTaxes:
|
|
3414
|
-
showTotal:
|
|
3415
|
-
showVariantSelectors:
|
|
3416
|
-
variantSelectorDisplayMode:
|
|
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:
|
|
3419
|
-
productTypeSelector:
|
|
3420
|
-
quantityInputs:
|
|
3421
|
-
defaultQuantity:
|
|
3422
|
-
enabled:
|
|
3423
|
-
maxValue:
|
|
3424
|
-
minValue:
|
|
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:
|
|
3499
|
+
shipping: z41.object({
|
|
3427
3500
|
amount: strictNumber.default(10),
|
|
3428
3501
|
/** This isn't configurable in the admin-nextjs editor */
|
|
3429
|
-
enabled:
|
|
3430
|
-
title:
|
|
3431
|
-
type:
|
|
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:
|
|
3434
|
-
starColor:
|
|
3435
|
-
starSize:
|
|
3436
|
-
starStrokeColor:
|
|
3437
|
-
strokeWidth:
|
|
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:
|
|
3440
|
-
subscription:
|
|
3441
|
-
discount:
|
|
3512
|
+
subImages: z41.number().nullish().default(8),
|
|
3513
|
+
subscription: z41.object({
|
|
3514
|
+
discount: z41.object({
|
|
3442
3515
|
amount: strictNumber.default(30),
|
|
3443
|
-
shouldShowSavingText:
|
|
3444
|
-
type:
|
|
3516
|
+
shouldShowSavingText: z41.boolean().optional().default(true),
|
|
3517
|
+
type: z41.enum(["none", "fixed_amount", "percentage"]).default("none")
|
|
3445
3518
|
}),
|
|
3446
|
-
shipping:
|
|
3519
|
+
shipping: z41.object({
|
|
3447
3520
|
amount: strictNumber.default(1),
|
|
3448
3521
|
/** This isn't configurable in the admin-nextjs editor */
|
|
3449
|
-
enabled:
|
|
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:
|
|
3453
|
-
type:
|
|
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:
|
|
3544
|
+
subscriptionIsDefault: z41.boolean().optional(),
|
|
3472
3545
|
/** This isn't configurable in the admin-nextjs editor */
|
|
3473
|
-
template:
|
|
3474
|
-
type:
|
|
3475
|
-
upgradeToSubscription:
|
|
3476
|
-
acceptButtonText:
|
|
3477
|
-
allow:
|
|
3478
|
-
emailRefundNotice:
|
|
3479
|
-
errorBannerText:
|
|
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 =
|
|
3490
|
-
id:
|
|
3491
|
-
name:
|
|
3562
|
+
var PostPurchaseWidgetLinkedFlow = z42.object({
|
|
3563
|
+
id: z42.number(),
|
|
3564
|
+
name: z42.string()
|
|
3492
3565
|
});
|
|
3493
|
-
var PostPurchaseWidget =
|
|
3494
|
-
classification:
|
|
3495
|
-
createdAtTime:
|
|
3496
|
-
customEndpointName:
|
|
3497
|
-
id:
|
|
3498
|
-
lastViewed:
|
|
3499
|
-
linkedCustomEndpointId:
|
|
3500
|
-
linkedFlows:
|
|
3501
|
-
name:
|
|
3502
|
-
owner:
|
|
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 =
|
|
3508
|
-
|
|
3509
|
-
errors:
|
|
3510
|
-
message:
|
|
3511
|
-
successful:
|
|
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
|
-
|
|
3514
|
-
successful:
|
|
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
|
-
|
|
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,
|