@thorprovider/blocks 0.1.1 → 0.1.3
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/.turbo/turbo-build.log +15 -15
- package/.turbo/turbo-test.log +42 -5
- package/AGENTS.md +1 -1
- package/README.md +94 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts.d.mts +1266 -97
- package/dist/contracts.d.ts +1266 -97
- package/dist/contracts.js +225 -9
- package/dist/contracts.js.map +1 -1
- package/dist/contracts.mjs +207 -10
- package/dist/contracts.mjs.map +1 -1
- package/dist/index.d.mts +756 -96
- package/dist/index.d.ts +756 -96
- package/dist/index.js +5114 -3702
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4939 -3551
- package/dist/index.mjs.map +1 -1
- package/docs/standards/theming.md +32 -5
- package/package.json +2 -2
- package/src/blocks/e-commerce/category-filters/category-filter-2-filter-panel.tsx +136 -93
- package/src/blocks/e-commerce/category-filters/category-filter-2.test.tsx +513 -0
- package/src/blocks/e-commerce/category-filters/category-filter-2.tsx +728 -148
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +14 -8
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +136 -0
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +145 -99
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-order-summary.tsx +215 -102
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-payment-step.tsx +6 -2
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-shipping-step.tsx +51 -2
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1.test.tsx +216 -0
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1.tsx +114 -11
- package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +27 -0
- package/src/blocks/e-commerce/navigation/back-to-top.tsx +71 -0
- package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +174 -0
- package/src/blocks/e-commerce/navigation/breadcrumb.tsx +130 -0
- package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +74 -0
- package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +78 -0
- package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +42 -2
- package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +10 -8
- package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +35 -0
- package/src/blocks/e-commerce/navigation/skip-to-content.tsx +37 -0
- package/src/blocks/e-commerce/product-categories/product-category-2.test.tsx +51 -0
- package/src/blocks/e-commerce/product-categories/product-category-2.tsx +56 -36
- package/src/blocks/e-commerce/product-list/product-card-1.test.tsx +88 -0
- package/src/blocks/e-commerce/product-list/product-card-1.tsx +141 -80
- package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +78 -0
- package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +277 -0
- package/src/blocks/e-commerce/product-overview/product-overview-1.test.tsx +182 -0
- package/src/blocks/e-commerce/product-overview/product-overview-1.tsx +298 -129
- package/src/blocks/e-commerce/shopping-carts/shopping-cart-4.test.tsx +229 -0
- package/src/blocks/e-commerce/shopping-carts/shopping-cart-4.tsx +313 -110
- package/src/blocks/e-commerce/storefront-hero/storefront-hero-1.test.tsx +72 -0
- package/src/blocks/e-commerce/storefront-hero/storefront-hero-1.tsx +20 -1
- package/src/blocks/marketing/footers/footer-section-1.test.tsx +117 -0
- package/src/blocks/marketing/footers/footer-section-1.tsx +46 -9
- package/src/blocks/marketing/navbars/navbar-4-account-menu.test.tsx +38 -0
- package/src/blocks/marketing/navbars/navbar-4-account-menu.tsx +30 -14
- package/src/blocks/marketing/navbars/navbar-4-cart-sheet.test.tsx +204 -0
- package/src/blocks/marketing/navbars/navbar-4-cart-sheet.tsx +144 -21
- package/src/blocks/marketing/navbars/navbar-4.test.tsx +233 -0
- package/src/blocks/marketing/navbars/navbar-4.tsx +235 -60
- package/src/index.ts +56 -0
- package/src/lib/cart.test.ts +15 -0
- package/src/lib/cart.ts +11 -0
- package/src/lib/contracts-curated.test.ts +207 -0
- package/src/lib/contracts-server-boundary.test.ts +52 -0
- package/src/lib/contracts.ts +234 -6
- package/src/lib/money.test.ts +64 -0
- package/src/lib/money.ts +65 -0
- package/tsup.config.ts +0 -1
- package/vitest.config.ts +9 -1
package/dist/contracts.d.mts
CHANGED
|
@@ -1,6 +1,43 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Money, ProductPreview, PaymentMethod } from '@thorprovider/types';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* True only for a complete, finite decimal string (`"0"`, `"69.99"`, `"-3.5"`).
|
|
6
|
+
* Rejects `""`, `" "`, `"1."`, `".5"`, `"1e3"`, `"abc"`, and non-strings.
|
|
7
|
+
*/
|
|
8
|
+
declare function isCompleteFiniteDecimal(value: unknown): value is string;
|
|
9
|
+
/**
|
|
10
|
+
* True when a `Money` value is safe to display and price a purchase with: a
|
|
11
|
+
* complete finite decimal amount and a non-empty currency code. A valid zero
|
|
12
|
+
* (`{ amount: '0', currencyCode: 'USD' }`) is available — zero alone does not
|
|
13
|
+
* make a price unavailable.
|
|
14
|
+
*/
|
|
15
|
+
declare function isAvailableMoney(money: Money | null | undefined): money is Money;
|
|
16
|
+
/**
|
|
17
|
+
* Formats a `Money` for display, or `null` when the value is unavailable.
|
|
18
|
+
*
|
|
19
|
+
* This is the safety gate the whole curated surface relies on: an absent or
|
|
20
|
+
* malformed amount (`""`, `" "`, `"abc"`, a non-string, a missing currency)
|
|
21
|
+
* MUST NOT reach `Intl.NumberFormat`, because `Number("")` is `0` and would
|
|
22
|
+
* render a fake `$0.00` for missing data. A backend-resolved valid zero
|
|
23
|
+
* (`{ amount: "0", currencyCode: "USD" }`) is available and formats as zero.
|
|
24
|
+
*
|
|
25
|
+
* When no `formatter` is supplied the currency comes from
|
|
26
|
+
* `money.currencyCode`, so no currency is hardcoded. Callers render their own
|
|
27
|
+
* unavailable/pending/recovery state when this returns `null`.
|
|
28
|
+
*/
|
|
29
|
+
declare function formatMoney(money: Money | null | undefined, formatter?: (money: Money) => string): string | null;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Cart line quantity normalization shared by the curated cart surfaces.
|
|
33
|
+
*
|
|
34
|
+
* The Navbar mini-cart expresses a quantity DELTA while the cart page reports
|
|
35
|
+
* an ABSOLUTE quantity. The boundary normalizes the delta against the
|
|
36
|
+
* authoritative current line quantity (from the backend cart) before mutating;
|
|
37
|
+
* it must never reinterpret one as the other.
|
|
38
|
+
*/
|
|
39
|
+
declare function resolveAbsoluteQuantity(currentQuantity: number, delta: number): number;
|
|
40
|
+
|
|
4
41
|
/**
|
|
5
42
|
* Serialization contracts for spec-driven storefronts.
|
|
6
43
|
*
|
|
@@ -30,6 +67,689 @@ type CanonProduct = ProductPreview;
|
|
|
30
67
|
* one so direct consumers are safe by default.
|
|
31
68
|
*/
|
|
32
69
|
declare const PRODUCT_IMAGE_FALLBACK: string;
|
|
70
|
+
/**
|
|
71
|
+
* Canonical `Money` (`@thorprovider/types`): a decimal string in major units
|
|
72
|
+
* (`"69.99"`), never cents. A missing price is represented by omitting the
|
|
73
|
+
* field (or `null` on a nullable field), not by an empty string.
|
|
74
|
+
*
|
|
75
|
+
* The amount stays a permissive `z.string()` on purpose: an unresolved backend
|
|
76
|
+
* price may arrive as the canonical sentinel `""`, and tightening the schema
|
|
77
|
+
* would reject the whole view instead of letting the presentation layer render
|
|
78
|
+
* an unavailable state. Validity is enforced at render time by
|
|
79
|
+
* `isAvailableMoney`/`formatMoney` (a `""`/malformed amount never becomes `$0`).
|
|
80
|
+
*/
|
|
81
|
+
declare const moneySchema: z.ZodType<Money>;
|
|
82
|
+
declare const productDetailVariantSchema: z.ZodObject<{
|
|
83
|
+
id: z.ZodString;
|
|
84
|
+
title: z.ZodString;
|
|
85
|
+
sku: z.ZodOptional<z.ZodString>;
|
|
86
|
+
availableForSale: z.ZodBoolean;
|
|
87
|
+
selectedOptions: z.ZodArray<z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
value: z.ZodString;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
value: string;
|
|
92
|
+
name: string;
|
|
93
|
+
}, {
|
|
94
|
+
value: string;
|
|
95
|
+
name: string;
|
|
96
|
+
}>, "many">;
|
|
97
|
+
/** Omit or null when the backend has no resolved price (purchase disabled). */
|
|
98
|
+
price: z.ZodOptional<z.ZodNullable<z.ZodType<Money, z.ZodTypeDef, Money>>>;
|
|
99
|
+
compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
100
|
+
image: z.ZodOptional<z.ZodObject<{
|
|
101
|
+
id: z.ZodOptional<z.ZodString>;
|
|
102
|
+
url: z.ZodString;
|
|
103
|
+
altText: z.ZodString;
|
|
104
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
105
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
106
|
+
}, "strip", z.ZodTypeAny, {
|
|
107
|
+
url: string;
|
|
108
|
+
altText: string;
|
|
109
|
+
id?: string | undefined;
|
|
110
|
+
width?: number | undefined;
|
|
111
|
+
height?: number | undefined;
|
|
112
|
+
}, {
|
|
113
|
+
url: string;
|
|
114
|
+
altText: string;
|
|
115
|
+
id?: string | undefined;
|
|
116
|
+
width?: number | undefined;
|
|
117
|
+
height?: number | undefined;
|
|
118
|
+
}>>;
|
|
119
|
+
}, "strip", z.ZodTypeAny, {
|
|
120
|
+
id: string;
|
|
121
|
+
title: string;
|
|
122
|
+
availableForSale: boolean;
|
|
123
|
+
selectedOptions: {
|
|
124
|
+
value: string;
|
|
125
|
+
name: string;
|
|
126
|
+
}[];
|
|
127
|
+
sku?: string | undefined;
|
|
128
|
+
price?: Money | null | undefined;
|
|
129
|
+
compareAtPrice?: Money | undefined;
|
|
130
|
+
image?: {
|
|
131
|
+
url: string;
|
|
132
|
+
altText: string;
|
|
133
|
+
id?: string | undefined;
|
|
134
|
+
width?: number | undefined;
|
|
135
|
+
height?: number | undefined;
|
|
136
|
+
} | undefined;
|
|
137
|
+
}, {
|
|
138
|
+
id: string;
|
|
139
|
+
title: string;
|
|
140
|
+
availableForSale: boolean;
|
|
141
|
+
selectedOptions: {
|
|
142
|
+
value: string;
|
|
143
|
+
name: string;
|
|
144
|
+
}[];
|
|
145
|
+
sku?: string | undefined;
|
|
146
|
+
price?: Money | null | undefined;
|
|
147
|
+
compareAtPrice?: Money | undefined;
|
|
148
|
+
image?: {
|
|
149
|
+
url: string;
|
|
150
|
+
altText: string;
|
|
151
|
+
id?: string | undefined;
|
|
152
|
+
width?: number | undefined;
|
|
153
|
+
height?: number | undefined;
|
|
154
|
+
} | undefined;
|
|
155
|
+
}>;
|
|
156
|
+
type ProductDetailVariantSpec = z.infer<typeof productDetailVariantSchema>;
|
|
157
|
+
declare const productDetailProductSchema: z.ZodObject<{
|
|
158
|
+
id: z.ZodString;
|
|
159
|
+
handle: z.ZodOptional<z.ZodString>;
|
|
160
|
+
title: z.ZodString;
|
|
161
|
+
description: z.ZodOptional<z.ZodString>;
|
|
162
|
+
vendor: z.ZodOptional<z.ZodString>;
|
|
163
|
+
options: z.ZodArray<z.ZodObject<{
|
|
164
|
+
id: z.ZodString;
|
|
165
|
+
name: z.ZodString;
|
|
166
|
+
values: z.ZodArray<z.ZodString, "many">;
|
|
167
|
+
}, "strip", z.ZodTypeAny, {
|
|
168
|
+
values: string[];
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
}, {
|
|
172
|
+
values: string[];
|
|
173
|
+
id: string;
|
|
174
|
+
name: string;
|
|
175
|
+
}>, "many">;
|
|
176
|
+
variants: z.ZodArray<z.ZodObject<{
|
|
177
|
+
id: z.ZodString;
|
|
178
|
+
title: z.ZodString;
|
|
179
|
+
sku: z.ZodOptional<z.ZodString>;
|
|
180
|
+
availableForSale: z.ZodBoolean;
|
|
181
|
+
selectedOptions: z.ZodArray<z.ZodObject<{
|
|
182
|
+
name: z.ZodString;
|
|
183
|
+
value: z.ZodString;
|
|
184
|
+
}, "strip", z.ZodTypeAny, {
|
|
185
|
+
value: string;
|
|
186
|
+
name: string;
|
|
187
|
+
}, {
|
|
188
|
+
value: string;
|
|
189
|
+
name: string;
|
|
190
|
+
}>, "many">;
|
|
191
|
+
/** Omit or null when the backend has no resolved price (purchase disabled). */
|
|
192
|
+
price: z.ZodOptional<z.ZodNullable<z.ZodType<Money, z.ZodTypeDef, Money>>>;
|
|
193
|
+
compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
194
|
+
image: z.ZodOptional<z.ZodObject<{
|
|
195
|
+
id: z.ZodOptional<z.ZodString>;
|
|
196
|
+
url: z.ZodString;
|
|
197
|
+
altText: z.ZodString;
|
|
198
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
199
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
200
|
+
}, "strip", z.ZodTypeAny, {
|
|
201
|
+
url: string;
|
|
202
|
+
altText: string;
|
|
203
|
+
id?: string | undefined;
|
|
204
|
+
width?: number | undefined;
|
|
205
|
+
height?: number | undefined;
|
|
206
|
+
}, {
|
|
207
|
+
url: string;
|
|
208
|
+
altText: string;
|
|
209
|
+
id?: string | undefined;
|
|
210
|
+
width?: number | undefined;
|
|
211
|
+
height?: number | undefined;
|
|
212
|
+
}>>;
|
|
213
|
+
}, "strip", z.ZodTypeAny, {
|
|
214
|
+
id: string;
|
|
215
|
+
title: string;
|
|
216
|
+
availableForSale: boolean;
|
|
217
|
+
selectedOptions: {
|
|
218
|
+
value: string;
|
|
219
|
+
name: string;
|
|
220
|
+
}[];
|
|
221
|
+
sku?: string | undefined;
|
|
222
|
+
price?: Money | null | undefined;
|
|
223
|
+
compareAtPrice?: Money | undefined;
|
|
224
|
+
image?: {
|
|
225
|
+
url: string;
|
|
226
|
+
altText: string;
|
|
227
|
+
id?: string | undefined;
|
|
228
|
+
width?: number | undefined;
|
|
229
|
+
height?: number | undefined;
|
|
230
|
+
} | undefined;
|
|
231
|
+
}, {
|
|
232
|
+
id: string;
|
|
233
|
+
title: string;
|
|
234
|
+
availableForSale: boolean;
|
|
235
|
+
selectedOptions: {
|
|
236
|
+
value: string;
|
|
237
|
+
name: string;
|
|
238
|
+
}[];
|
|
239
|
+
sku?: string | undefined;
|
|
240
|
+
price?: Money | null | undefined;
|
|
241
|
+
compareAtPrice?: Money | undefined;
|
|
242
|
+
image?: {
|
|
243
|
+
url: string;
|
|
244
|
+
altText: string;
|
|
245
|
+
id?: string | undefined;
|
|
246
|
+
width?: number | undefined;
|
|
247
|
+
height?: number | undefined;
|
|
248
|
+
} | undefined;
|
|
249
|
+
}>, "many">;
|
|
250
|
+
images: z.ZodArray<z.ZodObject<{
|
|
251
|
+
id: z.ZodOptional<z.ZodString>;
|
|
252
|
+
url: z.ZodString;
|
|
253
|
+
altText: z.ZodString;
|
|
254
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
255
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
256
|
+
}, "strip", z.ZodTypeAny, {
|
|
257
|
+
url: string;
|
|
258
|
+
altText: string;
|
|
259
|
+
id?: string | undefined;
|
|
260
|
+
width?: number | undefined;
|
|
261
|
+
height?: number | undefined;
|
|
262
|
+
}, {
|
|
263
|
+
url: string;
|
|
264
|
+
altText: string;
|
|
265
|
+
id?: string | undefined;
|
|
266
|
+
width?: number | undefined;
|
|
267
|
+
height?: number | undefined;
|
|
268
|
+
}>, "many">;
|
|
269
|
+
featuredImage: z.ZodOptional<z.ZodObject<{
|
|
270
|
+
id: z.ZodOptional<z.ZodString>;
|
|
271
|
+
url: z.ZodString;
|
|
272
|
+
altText: z.ZodString;
|
|
273
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
274
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
275
|
+
}, "strip", z.ZodTypeAny, {
|
|
276
|
+
url: string;
|
|
277
|
+
altText: string;
|
|
278
|
+
id?: string | undefined;
|
|
279
|
+
width?: number | undefined;
|
|
280
|
+
height?: number | undefined;
|
|
281
|
+
}, {
|
|
282
|
+
url: string;
|
|
283
|
+
altText: string;
|
|
284
|
+
id?: string | undefined;
|
|
285
|
+
width?: number | undefined;
|
|
286
|
+
height?: number | undefined;
|
|
287
|
+
}>>;
|
|
288
|
+
}, "strip", z.ZodTypeAny, {
|
|
289
|
+
options: {
|
|
290
|
+
values: string[];
|
|
291
|
+
id: string;
|
|
292
|
+
name: string;
|
|
293
|
+
}[];
|
|
294
|
+
id: string;
|
|
295
|
+
title: string;
|
|
296
|
+
variants: {
|
|
297
|
+
id: string;
|
|
298
|
+
title: string;
|
|
299
|
+
availableForSale: boolean;
|
|
300
|
+
selectedOptions: {
|
|
301
|
+
value: string;
|
|
302
|
+
name: string;
|
|
303
|
+
}[];
|
|
304
|
+
sku?: string | undefined;
|
|
305
|
+
price?: Money | null | undefined;
|
|
306
|
+
compareAtPrice?: Money | undefined;
|
|
307
|
+
image?: {
|
|
308
|
+
url: string;
|
|
309
|
+
altText: string;
|
|
310
|
+
id?: string | undefined;
|
|
311
|
+
width?: number | undefined;
|
|
312
|
+
height?: number | undefined;
|
|
313
|
+
} | undefined;
|
|
314
|
+
}[];
|
|
315
|
+
images: {
|
|
316
|
+
url: string;
|
|
317
|
+
altText: string;
|
|
318
|
+
id?: string | undefined;
|
|
319
|
+
width?: number | undefined;
|
|
320
|
+
height?: number | undefined;
|
|
321
|
+
}[];
|
|
322
|
+
handle?: string | undefined;
|
|
323
|
+
description?: string | undefined;
|
|
324
|
+
vendor?: string | undefined;
|
|
325
|
+
featuredImage?: {
|
|
326
|
+
url: string;
|
|
327
|
+
altText: string;
|
|
328
|
+
id?: string | undefined;
|
|
329
|
+
width?: number | undefined;
|
|
330
|
+
height?: number | undefined;
|
|
331
|
+
} | undefined;
|
|
332
|
+
}, {
|
|
333
|
+
options: {
|
|
334
|
+
values: string[];
|
|
335
|
+
id: string;
|
|
336
|
+
name: string;
|
|
337
|
+
}[];
|
|
338
|
+
id: string;
|
|
339
|
+
title: string;
|
|
340
|
+
variants: {
|
|
341
|
+
id: string;
|
|
342
|
+
title: string;
|
|
343
|
+
availableForSale: boolean;
|
|
344
|
+
selectedOptions: {
|
|
345
|
+
value: string;
|
|
346
|
+
name: string;
|
|
347
|
+
}[];
|
|
348
|
+
sku?: string | undefined;
|
|
349
|
+
price?: Money | null | undefined;
|
|
350
|
+
compareAtPrice?: Money | undefined;
|
|
351
|
+
image?: {
|
|
352
|
+
url: string;
|
|
353
|
+
altText: string;
|
|
354
|
+
id?: string | undefined;
|
|
355
|
+
width?: number | undefined;
|
|
356
|
+
height?: number | undefined;
|
|
357
|
+
} | undefined;
|
|
358
|
+
}[];
|
|
359
|
+
images: {
|
|
360
|
+
url: string;
|
|
361
|
+
altText: string;
|
|
362
|
+
id?: string | undefined;
|
|
363
|
+
width?: number | undefined;
|
|
364
|
+
height?: number | undefined;
|
|
365
|
+
}[];
|
|
366
|
+
handle?: string | undefined;
|
|
367
|
+
description?: string | undefined;
|
|
368
|
+
vendor?: string | undefined;
|
|
369
|
+
featuredImage?: {
|
|
370
|
+
url: string;
|
|
371
|
+
altText: string;
|
|
372
|
+
id?: string | undefined;
|
|
373
|
+
width?: number | undefined;
|
|
374
|
+
height?: number | undefined;
|
|
375
|
+
} | undefined;
|
|
376
|
+
}>;
|
|
377
|
+
type ProductDetailProductSpec = z.infer<typeof productDetailProductSchema>;
|
|
378
|
+
declare const productOverview1PropsSchema: z.ZodObject<{
|
|
379
|
+
product: z.ZodObject<{
|
|
380
|
+
id: z.ZodString;
|
|
381
|
+
handle: z.ZodOptional<z.ZodString>;
|
|
382
|
+
title: z.ZodString;
|
|
383
|
+
description: z.ZodOptional<z.ZodString>;
|
|
384
|
+
vendor: z.ZodOptional<z.ZodString>;
|
|
385
|
+
options: z.ZodArray<z.ZodObject<{
|
|
386
|
+
id: z.ZodString;
|
|
387
|
+
name: z.ZodString;
|
|
388
|
+
values: z.ZodArray<z.ZodString, "many">;
|
|
389
|
+
}, "strip", z.ZodTypeAny, {
|
|
390
|
+
values: string[];
|
|
391
|
+
id: string;
|
|
392
|
+
name: string;
|
|
393
|
+
}, {
|
|
394
|
+
values: string[];
|
|
395
|
+
id: string;
|
|
396
|
+
name: string;
|
|
397
|
+
}>, "many">;
|
|
398
|
+
variants: z.ZodArray<z.ZodObject<{
|
|
399
|
+
id: z.ZodString;
|
|
400
|
+
title: z.ZodString;
|
|
401
|
+
sku: z.ZodOptional<z.ZodString>;
|
|
402
|
+
availableForSale: z.ZodBoolean;
|
|
403
|
+
selectedOptions: z.ZodArray<z.ZodObject<{
|
|
404
|
+
name: z.ZodString;
|
|
405
|
+
value: z.ZodString;
|
|
406
|
+
}, "strip", z.ZodTypeAny, {
|
|
407
|
+
value: string;
|
|
408
|
+
name: string;
|
|
409
|
+
}, {
|
|
410
|
+
value: string;
|
|
411
|
+
name: string;
|
|
412
|
+
}>, "many">;
|
|
413
|
+
/** Omit or null when the backend has no resolved price (purchase disabled). */
|
|
414
|
+
price: z.ZodOptional<z.ZodNullable<z.ZodType<Money, z.ZodTypeDef, Money>>>;
|
|
415
|
+
compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
416
|
+
image: z.ZodOptional<z.ZodObject<{
|
|
417
|
+
id: z.ZodOptional<z.ZodString>;
|
|
418
|
+
url: z.ZodString;
|
|
419
|
+
altText: z.ZodString;
|
|
420
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
421
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
422
|
+
}, "strip", z.ZodTypeAny, {
|
|
423
|
+
url: string;
|
|
424
|
+
altText: string;
|
|
425
|
+
id?: string | undefined;
|
|
426
|
+
width?: number | undefined;
|
|
427
|
+
height?: number | undefined;
|
|
428
|
+
}, {
|
|
429
|
+
url: string;
|
|
430
|
+
altText: string;
|
|
431
|
+
id?: string | undefined;
|
|
432
|
+
width?: number | undefined;
|
|
433
|
+
height?: number | undefined;
|
|
434
|
+
}>>;
|
|
435
|
+
}, "strip", z.ZodTypeAny, {
|
|
436
|
+
id: string;
|
|
437
|
+
title: string;
|
|
438
|
+
availableForSale: boolean;
|
|
439
|
+
selectedOptions: {
|
|
440
|
+
value: string;
|
|
441
|
+
name: string;
|
|
442
|
+
}[];
|
|
443
|
+
sku?: string | undefined;
|
|
444
|
+
price?: Money | null | undefined;
|
|
445
|
+
compareAtPrice?: Money | undefined;
|
|
446
|
+
image?: {
|
|
447
|
+
url: string;
|
|
448
|
+
altText: string;
|
|
449
|
+
id?: string | undefined;
|
|
450
|
+
width?: number | undefined;
|
|
451
|
+
height?: number | undefined;
|
|
452
|
+
} | undefined;
|
|
453
|
+
}, {
|
|
454
|
+
id: string;
|
|
455
|
+
title: string;
|
|
456
|
+
availableForSale: boolean;
|
|
457
|
+
selectedOptions: {
|
|
458
|
+
value: string;
|
|
459
|
+
name: string;
|
|
460
|
+
}[];
|
|
461
|
+
sku?: string | undefined;
|
|
462
|
+
price?: Money | null | undefined;
|
|
463
|
+
compareAtPrice?: Money | undefined;
|
|
464
|
+
image?: {
|
|
465
|
+
url: string;
|
|
466
|
+
altText: string;
|
|
467
|
+
id?: string | undefined;
|
|
468
|
+
width?: number | undefined;
|
|
469
|
+
height?: number | undefined;
|
|
470
|
+
} | undefined;
|
|
471
|
+
}>, "many">;
|
|
472
|
+
images: z.ZodArray<z.ZodObject<{
|
|
473
|
+
id: z.ZodOptional<z.ZodString>;
|
|
474
|
+
url: z.ZodString;
|
|
475
|
+
altText: z.ZodString;
|
|
476
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
477
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
478
|
+
}, "strip", z.ZodTypeAny, {
|
|
479
|
+
url: string;
|
|
480
|
+
altText: string;
|
|
481
|
+
id?: string | undefined;
|
|
482
|
+
width?: number | undefined;
|
|
483
|
+
height?: number | undefined;
|
|
484
|
+
}, {
|
|
485
|
+
url: string;
|
|
486
|
+
altText: string;
|
|
487
|
+
id?: string | undefined;
|
|
488
|
+
width?: number | undefined;
|
|
489
|
+
height?: number | undefined;
|
|
490
|
+
}>, "many">;
|
|
491
|
+
featuredImage: z.ZodOptional<z.ZodObject<{
|
|
492
|
+
id: z.ZodOptional<z.ZodString>;
|
|
493
|
+
url: z.ZodString;
|
|
494
|
+
altText: z.ZodString;
|
|
495
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
496
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
497
|
+
}, "strip", z.ZodTypeAny, {
|
|
498
|
+
url: string;
|
|
499
|
+
altText: string;
|
|
500
|
+
id?: string | undefined;
|
|
501
|
+
width?: number | undefined;
|
|
502
|
+
height?: number | undefined;
|
|
503
|
+
}, {
|
|
504
|
+
url: string;
|
|
505
|
+
altText: string;
|
|
506
|
+
id?: string | undefined;
|
|
507
|
+
width?: number | undefined;
|
|
508
|
+
height?: number | undefined;
|
|
509
|
+
}>>;
|
|
510
|
+
}, "strip", z.ZodTypeAny, {
|
|
511
|
+
options: {
|
|
512
|
+
values: string[];
|
|
513
|
+
id: string;
|
|
514
|
+
name: string;
|
|
515
|
+
}[];
|
|
516
|
+
id: string;
|
|
517
|
+
title: string;
|
|
518
|
+
variants: {
|
|
519
|
+
id: string;
|
|
520
|
+
title: string;
|
|
521
|
+
availableForSale: boolean;
|
|
522
|
+
selectedOptions: {
|
|
523
|
+
value: string;
|
|
524
|
+
name: string;
|
|
525
|
+
}[];
|
|
526
|
+
sku?: string | undefined;
|
|
527
|
+
price?: Money | null | undefined;
|
|
528
|
+
compareAtPrice?: Money | undefined;
|
|
529
|
+
image?: {
|
|
530
|
+
url: string;
|
|
531
|
+
altText: string;
|
|
532
|
+
id?: string | undefined;
|
|
533
|
+
width?: number | undefined;
|
|
534
|
+
height?: number | undefined;
|
|
535
|
+
} | undefined;
|
|
536
|
+
}[];
|
|
537
|
+
images: {
|
|
538
|
+
url: string;
|
|
539
|
+
altText: string;
|
|
540
|
+
id?: string | undefined;
|
|
541
|
+
width?: number | undefined;
|
|
542
|
+
height?: number | undefined;
|
|
543
|
+
}[];
|
|
544
|
+
handle?: string | undefined;
|
|
545
|
+
description?: string | undefined;
|
|
546
|
+
vendor?: string | undefined;
|
|
547
|
+
featuredImage?: {
|
|
548
|
+
url: string;
|
|
549
|
+
altText: string;
|
|
550
|
+
id?: string | undefined;
|
|
551
|
+
width?: number | undefined;
|
|
552
|
+
height?: number | undefined;
|
|
553
|
+
} | undefined;
|
|
554
|
+
}, {
|
|
555
|
+
options: {
|
|
556
|
+
values: string[];
|
|
557
|
+
id: string;
|
|
558
|
+
name: string;
|
|
559
|
+
}[];
|
|
560
|
+
id: string;
|
|
561
|
+
title: string;
|
|
562
|
+
variants: {
|
|
563
|
+
id: string;
|
|
564
|
+
title: string;
|
|
565
|
+
availableForSale: boolean;
|
|
566
|
+
selectedOptions: {
|
|
567
|
+
value: string;
|
|
568
|
+
name: string;
|
|
569
|
+
}[];
|
|
570
|
+
sku?: string | undefined;
|
|
571
|
+
price?: Money | null | undefined;
|
|
572
|
+
compareAtPrice?: Money | undefined;
|
|
573
|
+
image?: {
|
|
574
|
+
url: string;
|
|
575
|
+
altText: string;
|
|
576
|
+
id?: string | undefined;
|
|
577
|
+
width?: number | undefined;
|
|
578
|
+
height?: number | undefined;
|
|
579
|
+
} | undefined;
|
|
580
|
+
}[];
|
|
581
|
+
images: {
|
|
582
|
+
url: string;
|
|
583
|
+
altText: string;
|
|
584
|
+
id?: string | undefined;
|
|
585
|
+
width?: number | undefined;
|
|
586
|
+
height?: number | undefined;
|
|
587
|
+
}[];
|
|
588
|
+
handle?: string | undefined;
|
|
589
|
+
description?: string | undefined;
|
|
590
|
+
vendor?: string | undefined;
|
|
591
|
+
featuredImage?: {
|
|
592
|
+
url: string;
|
|
593
|
+
altText: string;
|
|
594
|
+
id?: string | undefined;
|
|
595
|
+
width?: number | undefined;
|
|
596
|
+
height?: number | undefined;
|
|
597
|
+
} | undefined;
|
|
598
|
+
}>;
|
|
599
|
+
selectedVariantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
600
|
+
quantity: z.ZodOptional<z.ZodNumber>;
|
|
601
|
+
rating: z.ZodOptional<z.ZodObject<{
|
|
602
|
+
value: z.ZodNumber;
|
|
603
|
+
count: z.ZodNumber;
|
|
604
|
+
}, "strip", z.ZodTypeAny, {
|
|
605
|
+
value: number;
|
|
606
|
+
count: number;
|
|
607
|
+
}, {
|
|
608
|
+
value: number;
|
|
609
|
+
count: number;
|
|
610
|
+
}>>;
|
|
611
|
+
deliveryEstimate: z.ZodOptional<z.ZodString>;
|
|
612
|
+
shipping: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
613
|
+
sizesLabel: z.ZodOptional<z.ZodString>;
|
|
614
|
+
variantLabel: z.ZodOptional<z.ZodString>;
|
|
615
|
+
reviewsLabel: z.ZodOptional<z.ZodString>;
|
|
616
|
+
addToCartLabel: z.ZodOptional<z.ZodString>;
|
|
617
|
+
outOfStockLabel: z.ZodOptional<z.ZodString>;
|
|
618
|
+
unavailablePriceLabel: z.ZodOptional<z.ZodString>;
|
|
619
|
+
selectVariantLabel: z.ZodOptional<z.ZodString>;
|
|
620
|
+
quantityLabel: z.ZodOptional<z.ZodString>;
|
|
621
|
+
deliveryEstimateLabel: z.ZodOptional<z.ZodString>;
|
|
622
|
+
shippingLabel: z.ZodOptional<z.ZodString>;
|
|
623
|
+
}, "strip", z.ZodTypeAny, {
|
|
624
|
+
product: {
|
|
625
|
+
options: {
|
|
626
|
+
values: string[];
|
|
627
|
+
id: string;
|
|
628
|
+
name: string;
|
|
629
|
+
}[];
|
|
630
|
+
id: string;
|
|
631
|
+
title: string;
|
|
632
|
+
variants: {
|
|
633
|
+
id: string;
|
|
634
|
+
title: string;
|
|
635
|
+
availableForSale: boolean;
|
|
636
|
+
selectedOptions: {
|
|
637
|
+
value: string;
|
|
638
|
+
name: string;
|
|
639
|
+
}[];
|
|
640
|
+
sku?: string | undefined;
|
|
641
|
+
price?: Money | null | undefined;
|
|
642
|
+
compareAtPrice?: Money | undefined;
|
|
643
|
+
image?: {
|
|
644
|
+
url: string;
|
|
645
|
+
altText: string;
|
|
646
|
+
id?: string | undefined;
|
|
647
|
+
width?: number | undefined;
|
|
648
|
+
height?: number | undefined;
|
|
649
|
+
} | undefined;
|
|
650
|
+
}[];
|
|
651
|
+
images: {
|
|
652
|
+
url: string;
|
|
653
|
+
altText: string;
|
|
654
|
+
id?: string | undefined;
|
|
655
|
+
width?: number | undefined;
|
|
656
|
+
height?: number | undefined;
|
|
657
|
+
}[];
|
|
658
|
+
handle?: string | undefined;
|
|
659
|
+
description?: string | undefined;
|
|
660
|
+
vendor?: string | undefined;
|
|
661
|
+
featuredImage?: {
|
|
662
|
+
url: string;
|
|
663
|
+
altText: string;
|
|
664
|
+
id?: string | undefined;
|
|
665
|
+
width?: number | undefined;
|
|
666
|
+
height?: number | undefined;
|
|
667
|
+
} | undefined;
|
|
668
|
+
};
|
|
669
|
+
selectedVariantId?: string | null | undefined;
|
|
670
|
+
quantity?: number | undefined;
|
|
671
|
+
rating?: {
|
|
672
|
+
value: number;
|
|
673
|
+
count: number;
|
|
674
|
+
} | undefined;
|
|
675
|
+
deliveryEstimate?: string | undefined;
|
|
676
|
+
shipping?: Money | undefined;
|
|
677
|
+
sizesLabel?: string | undefined;
|
|
678
|
+
variantLabel?: string | undefined;
|
|
679
|
+
reviewsLabel?: string | undefined;
|
|
680
|
+
addToCartLabel?: string | undefined;
|
|
681
|
+
outOfStockLabel?: string | undefined;
|
|
682
|
+
unavailablePriceLabel?: string | undefined;
|
|
683
|
+
selectVariantLabel?: string | undefined;
|
|
684
|
+
quantityLabel?: string | undefined;
|
|
685
|
+
deliveryEstimateLabel?: string | undefined;
|
|
686
|
+
shippingLabel?: string | undefined;
|
|
687
|
+
}, {
|
|
688
|
+
product: {
|
|
689
|
+
options: {
|
|
690
|
+
values: string[];
|
|
691
|
+
id: string;
|
|
692
|
+
name: string;
|
|
693
|
+
}[];
|
|
694
|
+
id: string;
|
|
695
|
+
title: string;
|
|
696
|
+
variants: {
|
|
697
|
+
id: string;
|
|
698
|
+
title: string;
|
|
699
|
+
availableForSale: boolean;
|
|
700
|
+
selectedOptions: {
|
|
701
|
+
value: string;
|
|
702
|
+
name: string;
|
|
703
|
+
}[];
|
|
704
|
+
sku?: string | undefined;
|
|
705
|
+
price?: Money | null | undefined;
|
|
706
|
+
compareAtPrice?: Money | undefined;
|
|
707
|
+
image?: {
|
|
708
|
+
url: string;
|
|
709
|
+
altText: string;
|
|
710
|
+
id?: string | undefined;
|
|
711
|
+
width?: number | undefined;
|
|
712
|
+
height?: number | undefined;
|
|
713
|
+
} | undefined;
|
|
714
|
+
}[];
|
|
715
|
+
images: {
|
|
716
|
+
url: string;
|
|
717
|
+
altText: string;
|
|
718
|
+
id?: string | undefined;
|
|
719
|
+
width?: number | undefined;
|
|
720
|
+
height?: number | undefined;
|
|
721
|
+
}[];
|
|
722
|
+
handle?: string | undefined;
|
|
723
|
+
description?: string | undefined;
|
|
724
|
+
vendor?: string | undefined;
|
|
725
|
+
featuredImage?: {
|
|
726
|
+
url: string;
|
|
727
|
+
altText: string;
|
|
728
|
+
id?: string | undefined;
|
|
729
|
+
width?: number | undefined;
|
|
730
|
+
height?: number | undefined;
|
|
731
|
+
} | undefined;
|
|
732
|
+
};
|
|
733
|
+
selectedVariantId?: string | null | undefined;
|
|
734
|
+
quantity?: number | undefined;
|
|
735
|
+
rating?: {
|
|
736
|
+
value: number;
|
|
737
|
+
count: number;
|
|
738
|
+
} | undefined;
|
|
739
|
+
deliveryEstimate?: string | undefined;
|
|
740
|
+
shipping?: Money | undefined;
|
|
741
|
+
sizesLabel?: string | undefined;
|
|
742
|
+
variantLabel?: string | undefined;
|
|
743
|
+
reviewsLabel?: string | undefined;
|
|
744
|
+
addToCartLabel?: string | undefined;
|
|
745
|
+
outOfStockLabel?: string | undefined;
|
|
746
|
+
unavailablePriceLabel?: string | undefined;
|
|
747
|
+
selectVariantLabel?: string | undefined;
|
|
748
|
+
quantityLabel?: string | undefined;
|
|
749
|
+
deliveryEstimateLabel?: string | undefined;
|
|
750
|
+
shippingLabel?: string | undefined;
|
|
751
|
+
}>;
|
|
752
|
+
type ProductOverview1SpecProps = z.infer<typeof productOverview1PropsSchema>;
|
|
33
753
|
declare const cardProductSchema: z.ZodObject<{
|
|
34
754
|
id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
35
755
|
title: z.ZodString;
|
|
@@ -38,19 +758,19 @@ declare const cardProductSchema: z.ZodObject<{
|
|
|
38
758
|
image: z.ZodString;
|
|
39
759
|
badge: z.ZodOptional<z.ZodString>;
|
|
40
760
|
}, "strip", z.ZodTypeAny, {
|
|
41
|
-
title: string;
|
|
42
|
-
image: string;
|
|
43
761
|
id: string | number;
|
|
762
|
+
title: string;
|
|
44
763
|
price: number;
|
|
45
|
-
|
|
764
|
+
image: string;
|
|
46
765
|
originalPrice?: number | undefined;
|
|
766
|
+
badge?: string | undefined;
|
|
47
767
|
}, {
|
|
48
|
-
title: string;
|
|
49
|
-
image: string;
|
|
50
768
|
id: string | number;
|
|
769
|
+
title: string;
|
|
51
770
|
price: number;
|
|
52
|
-
|
|
771
|
+
image: string;
|
|
53
772
|
originalPrice?: number | undefined;
|
|
773
|
+
badge?: string | undefined;
|
|
54
774
|
}>;
|
|
55
775
|
type CardProduct = z.infer<typeof cardProductSchema>;
|
|
56
776
|
declare const cartItemSchema: z.ZodObject<{
|
|
@@ -58,39 +778,68 @@ declare const cartItemSchema: z.ZodObject<{
|
|
|
58
778
|
name: z.ZodString;
|
|
59
779
|
price: z.ZodNumber;
|
|
60
780
|
quantity: z.ZodNumber;
|
|
61
|
-
|
|
781
|
+
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
782
|
+
image: z.ZodOptional<z.ZodString>;
|
|
62
783
|
variant: z.ZodOptional<z.ZodString>;
|
|
784
|
+
/** Canonical backend per-unit price, preferred for display when present. */
|
|
785
|
+
unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
786
|
+
/** Canonical backend line total, preferred over `price * quantity`. */
|
|
787
|
+
lineTotal: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
63
788
|
}, "strip", z.ZodTypeAny, {
|
|
64
|
-
image: string;
|
|
65
789
|
id: string;
|
|
66
790
|
name: string;
|
|
67
791
|
price: number;
|
|
68
792
|
quantity: number;
|
|
793
|
+
image?: string | undefined;
|
|
69
794
|
variant?: string | undefined;
|
|
795
|
+
unitPrice?: Money | undefined;
|
|
796
|
+
lineTotal?: Money | undefined;
|
|
70
797
|
}, {
|
|
71
|
-
image: string;
|
|
72
798
|
id: string;
|
|
73
799
|
name: string;
|
|
74
800
|
price: number;
|
|
75
801
|
quantity: number;
|
|
802
|
+
image?: string | undefined;
|
|
76
803
|
variant?: string | undefined;
|
|
804
|
+
unitPrice?: Money | undefined;
|
|
805
|
+
lineTotal?: Money | undefined;
|
|
77
806
|
}>;
|
|
78
807
|
type CartItem = z.infer<typeof cartItemSchema>;
|
|
808
|
+
declare const cartTotalsSchema: z.ZodObject<{
|
|
809
|
+
subtotal: z.ZodType<Money, z.ZodTypeDef, Money>;
|
|
810
|
+
discount: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
811
|
+
tax: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
812
|
+
shipping: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
813
|
+
total: z.ZodType<Money, z.ZodTypeDef, Money>;
|
|
814
|
+
}, "strip", z.ZodTypeAny, {
|
|
815
|
+
subtotal: Money;
|
|
816
|
+
total: Money;
|
|
817
|
+
shipping?: Money | undefined;
|
|
818
|
+
discount?: Money | undefined;
|
|
819
|
+
tax?: Money | undefined;
|
|
820
|
+
}, {
|
|
821
|
+
subtotal: Money;
|
|
822
|
+
total: Money;
|
|
823
|
+
shipping?: Money | undefined;
|
|
824
|
+
discount?: Money | undefined;
|
|
825
|
+
tax?: Money | undefined;
|
|
826
|
+
}>;
|
|
827
|
+
type CartTotals = z.infer<typeof cartTotalsSchema>;
|
|
79
828
|
declare const recentlyViewedItemSchema: z.ZodObject<{
|
|
80
829
|
id: z.ZodString;
|
|
81
830
|
name: z.ZodString;
|
|
82
831
|
price: z.ZodNumber;
|
|
83
832
|
image: z.ZodString;
|
|
84
833
|
}, "strip", z.ZodTypeAny, {
|
|
85
|
-
image: string;
|
|
86
834
|
id: string;
|
|
87
835
|
name: string;
|
|
88
836
|
price: number;
|
|
89
|
-
}, {
|
|
90
837
|
image: string;
|
|
838
|
+
}, {
|
|
91
839
|
id: string;
|
|
92
840
|
name: string;
|
|
93
841
|
price: number;
|
|
842
|
+
image: string;
|
|
94
843
|
}>;
|
|
95
844
|
type RecentlyViewedItem = z.infer<typeof recentlyViewedItemSchema>;
|
|
96
845
|
declare const promotionSchema: z.ZodObject<{
|
|
@@ -98,9 +847,9 @@ declare const promotionSchema: z.ZodObject<{
|
|
|
98
847
|
reward: z.ZodString;
|
|
99
848
|
icon: z.ZodDefault<z.ZodString>;
|
|
100
849
|
}, "strip", z.ZodTypeAny, {
|
|
101
|
-
icon: string;
|
|
102
850
|
threshold: number;
|
|
103
851
|
reward: string;
|
|
852
|
+
icon: string;
|
|
104
853
|
}, {
|
|
105
854
|
threshold: number;
|
|
106
855
|
reward: string;
|
|
@@ -128,41 +877,42 @@ type UtilityLink = z.infer<typeof utilityLinkSchema>;
|
|
|
128
877
|
declare const navCartItemSchema: z.ZodObject<{
|
|
129
878
|
id: z.ZodString;
|
|
130
879
|
name: z.ZodString;
|
|
131
|
-
variant: z.ZodString
|
|
880
|
+
variant: z.ZodOptional<z.ZodString>;
|
|
132
881
|
price: z.ZodNumber;
|
|
133
882
|
qty: z.ZodNumber;
|
|
134
|
-
|
|
883
|
+
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
884
|
+
image: z.ZodOptional<z.ZodString>;
|
|
135
885
|
}, "strip", z.ZodTypeAny, {
|
|
136
|
-
variant: string;
|
|
137
|
-
image: string;
|
|
138
886
|
id: string;
|
|
139
887
|
name: string;
|
|
140
888
|
price: number;
|
|
141
889
|
qty: number;
|
|
890
|
+
image?: string | undefined;
|
|
891
|
+
variant?: string | undefined;
|
|
142
892
|
}, {
|
|
143
|
-
variant: string;
|
|
144
|
-
image: string;
|
|
145
893
|
id: string;
|
|
146
894
|
name: string;
|
|
147
895
|
price: number;
|
|
148
896
|
qty: number;
|
|
897
|
+
image?: string | undefined;
|
|
898
|
+
variant?: string | undefined;
|
|
149
899
|
}>;
|
|
150
900
|
type NavCartItem = z.infer<typeof navCartItemSchema>;
|
|
151
901
|
declare const storeUserSchema: z.ZodObject<{
|
|
152
902
|
name: z.ZodString;
|
|
153
903
|
email: z.ZodString;
|
|
154
|
-
avatar: z.ZodString
|
|
904
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
155
905
|
initials: z.ZodString;
|
|
156
906
|
}, "strip", z.ZodTypeAny, {
|
|
157
|
-
email: string;
|
|
158
907
|
name: string;
|
|
159
|
-
|
|
908
|
+
email: string;
|
|
160
909
|
initials: string;
|
|
910
|
+
avatar?: string | undefined;
|
|
161
911
|
}, {
|
|
162
|
-
email: string;
|
|
163
912
|
name: string;
|
|
164
|
-
|
|
913
|
+
email: string;
|
|
165
914
|
initials: string;
|
|
915
|
+
avatar?: string | undefined;
|
|
166
916
|
}>;
|
|
167
917
|
type StoreUser = z.infer<typeof storeUserSchema>;
|
|
168
918
|
declare const accountMenuItemSchema: z.ZodObject<{
|
|
@@ -173,13 +923,13 @@ declare const accountMenuItemSchema: z.ZodObject<{
|
|
|
173
923
|
}, "strip", z.ZodTypeAny, {
|
|
174
924
|
label: string;
|
|
175
925
|
href: string;
|
|
176
|
-
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
177
926
|
description?: string | undefined;
|
|
927
|
+
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
178
928
|
}, {
|
|
179
929
|
label: string;
|
|
180
930
|
href: string;
|
|
181
|
-
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
182
931
|
description?: string | undefined;
|
|
932
|
+
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
183
933
|
}>;
|
|
184
934
|
type AccountMenuItem = z.infer<typeof accountMenuItemSchema>;
|
|
185
935
|
/**
|
|
@@ -196,26 +946,26 @@ declare const buttonPropsSchema: z.ZodObject<{
|
|
|
196
946
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
197
947
|
className: z.ZodOptional<z.ZodString>;
|
|
198
948
|
}, "strip", z.ZodTypeAny, {
|
|
199
|
-
variant?: "default" | "
|
|
200
|
-
|
|
201
|
-
size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
|
|
949
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | undefined;
|
|
950
|
+
size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
|
|
202
951
|
disabled?: boolean | undefined;
|
|
203
|
-
}, {
|
|
204
|
-
variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | undefined;
|
|
205
952
|
className?: string | undefined;
|
|
206
|
-
|
|
953
|
+
}, {
|
|
954
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | undefined;
|
|
955
|
+
size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
|
|
207
956
|
disabled?: boolean | undefined;
|
|
957
|
+
className?: string | undefined;
|
|
208
958
|
}>;
|
|
209
959
|
type ButtonSpecProps = z.infer<typeof buttonPropsSchema>;
|
|
210
960
|
declare const storeContainer1PropsSchema: z.ZodObject<{
|
|
211
961
|
size: z.ZodOptional<z.ZodEnum<["default", "narrow", "wide", "full"]>>;
|
|
212
962
|
className: z.ZodOptional<z.ZodString>;
|
|
213
963
|
}, "strip", z.ZodTypeAny, {
|
|
214
|
-
className?: string | undefined;
|
|
215
964
|
size?: "default" | "narrow" | "wide" | "full" | undefined;
|
|
216
|
-
}, {
|
|
217
965
|
className?: string | undefined;
|
|
966
|
+
}, {
|
|
218
967
|
size?: "default" | "narrow" | "wide" | "full" | undefined;
|
|
968
|
+
className?: string | undefined;
|
|
219
969
|
}>;
|
|
220
970
|
type StoreContainer1SpecProps = z.infer<typeof storeContainer1PropsSchema>;
|
|
221
971
|
declare const productCard1PropsSchema: z.ZodObject<{
|
|
@@ -227,77 +977,228 @@ declare const productCard1PropsSchema: z.ZodObject<{
|
|
|
227
977
|
image: z.ZodString;
|
|
228
978
|
badge: z.ZodOptional<z.ZodString>;
|
|
229
979
|
}, "strip", z.ZodTypeAny, {
|
|
230
|
-
title: string;
|
|
231
|
-
image: string;
|
|
232
980
|
id: string | number;
|
|
981
|
+
title: string;
|
|
233
982
|
price: number;
|
|
234
|
-
|
|
983
|
+
image: string;
|
|
235
984
|
originalPrice?: number | undefined;
|
|
985
|
+
badge?: string | undefined;
|
|
236
986
|
}, {
|
|
237
|
-
title: string;
|
|
238
|
-
image: string;
|
|
239
987
|
id: string | number;
|
|
988
|
+
title: string;
|
|
240
989
|
price: number;
|
|
241
|
-
|
|
990
|
+
image: string;
|
|
242
991
|
originalPrice?: number | undefined;
|
|
992
|
+
badge?: string | undefined;
|
|
243
993
|
}>, "many">;
|
|
244
994
|
heading: z.ZodOptional<z.ZodString>;
|
|
245
995
|
maxItems: z.ZodOptional<z.ZodNumber>;
|
|
246
996
|
}, "strip", z.ZodTypeAny, {
|
|
247
997
|
products: {
|
|
248
|
-
title: string;
|
|
249
|
-
image: string;
|
|
250
998
|
id: string | number;
|
|
999
|
+
title: string;
|
|
251
1000
|
price: number;
|
|
252
|
-
|
|
1001
|
+
image: string;
|
|
253
1002
|
originalPrice?: number | undefined;
|
|
1003
|
+
badge?: string | undefined;
|
|
254
1004
|
}[];
|
|
255
1005
|
heading?: string | undefined;
|
|
256
1006
|
maxItems?: number | undefined;
|
|
257
1007
|
}, {
|
|
258
1008
|
products: {
|
|
259
|
-
title: string;
|
|
260
|
-
image: string;
|
|
261
1009
|
id: string | number;
|
|
1010
|
+
title: string;
|
|
262
1011
|
price: number;
|
|
263
|
-
|
|
1012
|
+
image: string;
|
|
264
1013
|
originalPrice?: number | undefined;
|
|
1014
|
+
badge?: string | undefined;
|
|
265
1015
|
}[];
|
|
266
1016
|
heading?: string | undefined;
|
|
267
1017
|
maxItems?: number | undefined;
|
|
268
1018
|
}>;
|
|
269
1019
|
type ProductCard1SpecProps = z.infer<typeof productCard1PropsSchema>;
|
|
1020
|
+
/**
|
|
1021
|
+
* Canonical product presentation — the serializable projection a storefront host
|
|
1022
|
+
* produces from a canonical `Product` for the merchandising sections. Unlike
|
|
1023
|
+
* `cardProductSchema` (legacy, numeric `price`), `price`/`compareAtPrice` carry
|
|
1024
|
+
* canonical `Money` (decimal major-unit string + currency code), so the block
|
|
1025
|
+
* formats in the shopper's currency and locale and renders a truthful
|
|
1026
|
+
* unavailable state instead of `$0`. Optional fields are omitted, never `""`.
|
|
1027
|
+
*
|
|
1028
|
+
* This contract is additive: `cardProductSchema` and its consumers are
|
|
1029
|
+
* unchanged, and a legacy numeric `price` still renders the legacy output.
|
|
1030
|
+
*/
|
|
1031
|
+
declare const productPresentationSchema: z.ZodObject<{
|
|
1032
|
+
id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
1033
|
+
title: z.ZodString;
|
|
1034
|
+
/** Omitted (never `""`) when the backend has no image. */
|
|
1035
|
+
image: z.ZodOptional<z.ZodString>;
|
|
1036
|
+
imageAlt: z.ZodOptional<z.ZodString>;
|
|
1037
|
+
/** Product destination; omitted when unknown. */
|
|
1038
|
+
href: z.ZodOptional<z.ZodString>;
|
|
1039
|
+
price: z.ZodType<Money, z.ZodTypeDef, Money>;
|
|
1040
|
+
/** Comparison ("was") price; rendered only when valid and higher than `price`. */
|
|
1041
|
+
compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1042
|
+
/** Only from real evidence; omitted otherwise (never fabricated). */
|
|
1043
|
+
rating: z.ZodOptional<z.ZodNumber>;
|
|
1044
|
+
badge: z.ZodOptional<z.ZodString>;
|
|
1045
|
+
}, "strip", z.ZodTypeAny, {
|
|
1046
|
+
id: string | number;
|
|
1047
|
+
title: string;
|
|
1048
|
+
price: Money;
|
|
1049
|
+
compareAtPrice?: Money | undefined;
|
|
1050
|
+
image?: string | undefined;
|
|
1051
|
+
rating?: number | undefined;
|
|
1052
|
+
badge?: string | undefined;
|
|
1053
|
+
href?: string | undefined;
|
|
1054
|
+
imageAlt?: string | undefined;
|
|
1055
|
+
}, {
|
|
1056
|
+
id: string | number;
|
|
1057
|
+
title: string;
|
|
1058
|
+
price: Money;
|
|
1059
|
+
compareAtPrice?: Money | undefined;
|
|
1060
|
+
image?: string | undefined;
|
|
1061
|
+
rating?: number | undefined;
|
|
1062
|
+
badge?: string | undefined;
|
|
1063
|
+
href?: string | undefined;
|
|
1064
|
+
imageAlt?: string | undefined;
|
|
1065
|
+
}>;
|
|
1066
|
+
type ProductPresentation = z.infer<typeof productPresentationSchema>;
|
|
1067
|
+
/**
|
|
1068
|
+
* Serializable contract for the combined grid-and-carousel product
|
|
1069
|
+
* presentation (`ProductShowcase1`). The grid pages are fixed-size, navigated
|
|
1070
|
+
* manually (prev/next) with a visible current-page indication; there is no
|
|
1071
|
+
* autoplay and no infinite loop. React-only callbacks are excluded.
|
|
1072
|
+
*/
|
|
1073
|
+
declare const productShowcase1PropsSchema: z.ZodObject<{
|
|
1074
|
+
products: z.ZodArray<z.ZodObject<{
|
|
1075
|
+
id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
1076
|
+
title: z.ZodString;
|
|
1077
|
+
/** Omitted (never `""`) when the backend has no image. */
|
|
1078
|
+
image: z.ZodOptional<z.ZodString>;
|
|
1079
|
+
imageAlt: z.ZodOptional<z.ZodString>;
|
|
1080
|
+
/** Product destination; omitted when unknown. */
|
|
1081
|
+
href: z.ZodOptional<z.ZodString>;
|
|
1082
|
+
price: z.ZodType<Money, z.ZodTypeDef, Money>;
|
|
1083
|
+
/** Comparison ("was") price; rendered only when valid and higher than `price`. */
|
|
1084
|
+
compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1085
|
+
/** Only from real evidence; omitted otherwise (never fabricated). */
|
|
1086
|
+
rating: z.ZodOptional<z.ZodNumber>;
|
|
1087
|
+
badge: z.ZodOptional<z.ZodString>;
|
|
1088
|
+
}, "strip", z.ZodTypeAny, {
|
|
1089
|
+
id: string | number;
|
|
1090
|
+
title: string;
|
|
1091
|
+
price: Money;
|
|
1092
|
+
compareAtPrice?: Money | undefined;
|
|
1093
|
+
image?: string | undefined;
|
|
1094
|
+
rating?: number | undefined;
|
|
1095
|
+
badge?: string | undefined;
|
|
1096
|
+
href?: string | undefined;
|
|
1097
|
+
imageAlt?: string | undefined;
|
|
1098
|
+
}, {
|
|
1099
|
+
id: string | number;
|
|
1100
|
+
title: string;
|
|
1101
|
+
price: Money;
|
|
1102
|
+
compareAtPrice?: Money | undefined;
|
|
1103
|
+
image?: string | undefined;
|
|
1104
|
+
rating?: number | undefined;
|
|
1105
|
+
badge?: string | undefined;
|
|
1106
|
+
href?: string | undefined;
|
|
1107
|
+
imageAlt?: string | undefined;
|
|
1108
|
+
}>, "many">;
|
|
1109
|
+
heading: z.ZodOptional<z.ZodString>;
|
|
1110
|
+
description: z.ZodOptional<z.ZodString>;
|
|
1111
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
1112
|
+
prevLabel: z.ZodOptional<z.ZodString>;
|
|
1113
|
+
nextLabel: z.ZodOptional<z.ZodString>;
|
|
1114
|
+
pageLabel: z.ZodOptional<z.ZodString>;
|
|
1115
|
+
unavailablePriceLabel: z.ZodOptional<z.ZodString>;
|
|
1116
|
+
emptyLabel: z.ZodOptional<z.ZodString>;
|
|
1117
|
+
addToCartLabel: z.ZodOptional<z.ZodString>;
|
|
1118
|
+
}, "strip", z.ZodTypeAny, {
|
|
1119
|
+
products: {
|
|
1120
|
+
id: string | number;
|
|
1121
|
+
title: string;
|
|
1122
|
+
price: Money;
|
|
1123
|
+
compareAtPrice?: Money | undefined;
|
|
1124
|
+
image?: string | undefined;
|
|
1125
|
+
rating?: number | undefined;
|
|
1126
|
+
badge?: string | undefined;
|
|
1127
|
+
href?: string | undefined;
|
|
1128
|
+
imageAlt?: string | undefined;
|
|
1129
|
+
}[];
|
|
1130
|
+
description?: string | undefined;
|
|
1131
|
+
addToCartLabel?: string | undefined;
|
|
1132
|
+
unavailablePriceLabel?: string | undefined;
|
|
1133
|
+
heading?: string | undefined;
|
|
1134
|
+
pageSize?: number | undefined;
|
|
1135
|
+
prevLabel?: string | undefined;
|
|
1136
|
+
nextLabel?: string | undefined;
|
|
1137
|
+
pageLabel?: string | undefined;
|
|
1138
|
+
emptyLabel?: string | undefined;
|
|
1139
|
+
}, {
|
|
1140
|
+
products: {
|
|
1141
|
+
id: string | number;
|
|
1142
|
+
title: string;
|
|
1143
|
+
price: Money;
|
|
1144
|
+
compareAtPrice?: Money | undefined;
|
|
1145
|
+
image?: string | undefined;
|
|
1146
|
+
rating?: number | undefined;
|
|
1147
|
+
badge?: string | undefined;
|
|
1148
|
+
href?: string | undefined;
|
|
1149
|
+
imageAlt?: string | undefined;
|
|
1150
|
+
}[];
|
|
1151
|
+
description?: string | undefined;
|
|
1152
|
+
addToCartLabel?: string | undefined;
|
|
1153
|
+
unavailablePriceLabel?: string | undefined;
|
|
1154
|
+
heading?: string | undefined;
|
|
1155
|
+
pageSize?: number | undefined;
|
|
1156
|
+
prevLabel?: string | undefined;
|
|
1157
|
+
nextLabel?: string | undefined;
|
|
1158
|
+
pageLabel?: string | undefined;
|
|
1159
|
+
emptyLabel?: string | undefined;
|
|
1160
|
+
}>;
|
|
1161
|
+
type ProductShowcase1SpecProps = z.infer<typeof productShowcase1PropsSchema>;
|
|
270
1162
|
declare const shoppingCart4PropsSchema: z.ZodObject<{
|
|
271
1163
|
items: z.ZodArray<z.ZodObject<{
|
|
272
1164
|
id: z.ZodString;
|
|
273
1165
|
name: z.ZodString;
|
|
274
1166
|
price: z.ZodNumber;
|
|
275
1167
|
quantity: z.ZodNumber;
|
|
276
|
-
|
|
1168
|
+
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
1169
|
+
image: z.ZodOptional<z.ZodString>;
|
|
277
1170
|
variant: z.ZodOptional<z.ZodString>;
|
|
1171
|
+
/** Canonical backend per-unit price, preferred for display when present. */
|
|
1172
|
+
unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1173
|
+
/** Canonical backend line total, preferred over `price * quantity`. */
|
|
1174
|
+
lineTotal: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
278
1175
|
}, "strip", z.ZodTypeAny, {
|
|
279
|
-
image: string;
|
|
280
1176
|
id: string;
|
|
281
1177
|
name: string;
|
|
282
1178
|
price: number;
|
|
283
1179
|
quantity: number;
|
|
1180
|
+
image?: string | undefined;
|
|
284
1181
|
variant?: string | undefined;
|
|
1182
|
+
unitPrice?: Money | undefined;
|
|
1183
|
+
lineTotal?: Money | undefined;
|
|
285
1184
|
}, {
|
|
286
|
-
image: string;
|
|
287
1185
|
id: string;
|
|
288
1186
|
name: string;
|
|
289
1187
|
price: number;
|
|
290
1188
|
quantity: number;
|
|
1189
|
+
image?: string | undefined;
|
|
291
1190
|
variant?: string | undefined;
|
|
1191
|
+
unitPrice?: Money | undefined;
|
|
1192
|
+
lineTotal?: Money | undefined;
|
|
292
1193
|
}>, "many">;
|
|
293
1194
|
promotions: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
294
1195
|
threshold: z.ZodNumber;
|
|
295
1196
|
reward: z.ZodString;
|
|
296
1197
|
icon: z.ZodDefault<z.ZodString>;
|
|
297
1198
|
}, "strip", z.ZodTypeAny, {
|
|
298
|
-
icon: string;
|
|
299
1199
|
threshold: number;
|
|
300
1200
|
reward: string;
|
|
1201
|
+
icon: string;
|
|
301
1202
|
}, {
|
|
302
1203
|
threshold: number;
|
|
303
1204
|
reward: string;
|
|
@@ -309,23 +1210,50 @@ declare const shoppingCart4PropsSchema: z.ZodObject<{
|
|
|
309
1210
|
price: z.ZodNumber;
|
|
310
1211
|
image: z.ZodString;
|
|
311
1212
|
}, "strip", z.ZodTypeAny, {
|
|
312
|
-
image: string;
|
|
313
1213
|
id: string;
|
|
314
1214
|
name: string;
|
|
315
1215
|
price: number;
|
|
316
|
-
}, {
|
|
317
1216
|
image: string;
|
|
1217
|
+
}, {
|
|
318
1218
|
id: string;
|
|
319
1219
|
name: string;
|
|
320
1220
|
price: number;
|
|
1221
|
+
image: string;
|
|
321
1222
|
}>, "many">>;
|
|
1223
|
+
/** Backend-authoritative totals; rendered verbatim, never computed locally. */
|
|
1224
|
+
totals: z.ZodOptional<z.ZodObject<{
|
|
1225
|
+
subtotal: z.ZodType<Money, z.ZodTypeDef, Money>;
|
|
1226
|
+
discount: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1227
|
+
tax: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1228
|
+
shipping: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1229
|
+
total: z.ZodType<Money, z.ZodTypeDef, Money>;
|
|
1230
|
+
}, "strip", z.ZodTypeAny, {
|
|
1231
|
+
subtotal: Money;
|
|
1232
|
+
total: Money;
|
|
1233
|
+
shipping?: Money | undefined;
|
|
1234
|
+
discount?: Money | undefined;
|
|
1235
|
+
tax?: Money | undefined;
|
|
1236
|
+
}, {
|
|
1237
|
+
subtotal: Money;
|
|
1238
|
+
total: Money;
|
|
1239
|
+
shipping?: Money | undefined;
|
|
1240
|
+
discount?: Money | undefined;
|
|
1241
|
+
tax?: Money | undefined;
|
|
1242
|
+
}>>;
|
|
1243
|
+
totalsState: z.ZodOptional<z.ZodEnum<["idle", "pending", "error"]>>;
|
|
1244
|
+
totalsErrorLabel: z.ZodOptional<z.ZodString>;
|
|
1245
|
+
totalsUnavailableLabel: z.ZodOptional<z.ZodString>;
|
|
1246
|
+
amountUnavailableLabel: z.ZodOptional<z.ZodString>;
|
|
1247
|
+
retryLabel: z.ZodOptional<z.ZodString>;
|
|
322
1248
|
taxRate: z.ZodOptional<z.ZodNumber>;
|
|
323
1249
|
titleLabel: z.ZodOptional<z.ZodString>;
|
|
324
1250
|
subtotalLabel: z.ZodOptional<z.ZodString>;
|
|
1251
|
+
discountLabel: z.ZodOptional<z.ZodString>;
|
|
325
1252
|
taxLabel: z.ZodOptional<z.ZodString>;
|
|
326
1253
|
shippingLabel: z.ZodOptional<z.ZodString>;
|
|
327
1254
|
shippingFreeLabel: z.ZodOptional<z.ZodString>;
|
|
328
1255
|
totalLabel: z.ZodOptional<z.ZodString>;
|
|
1256
|
+
totalsPendingLabel: z.ZodOptional<z.ZodString>;
|
|
329
1257
|
awayFromLabel: z.ZodOptional<z.ZodString>;
|
|
330
1258
|
activatedLabel: z.ZodOptional<z.ZodString>;
|
|
331
1259
|
itemsLabel: z.ZodOptional<z.ZodString>;
|
|
@@ -340,33 +1268,54 @@ declare const shoppingCart4PropsSchema: z.ZodObject<{
|
|
|
340
1268
|
checkoutLabel: z.ZodOptional<z.ZodString>;
|
|
341
1269
|
quickCheckoutLabel: z.ZodOptional<z.ZodString>;
|
|
342
1270
|
checkoutNowLabel: z.ZodOptional<z.ZodString>;
|
|
1271
|
+
emptyLabel: z.ZodOptional<z.ZodString>;
|
|
1272
|
+
removeLabel: z.ZodOptional<z.ZodString>;
|
|
1273
|
+
decreaseLabel: z.ZodOptional<z.ZodString>;
|
|
1274
|
+
increaseLabel: z.ZodOptional<z.ZodString>;
|
|
343
1275
|
}, "strip", z.ZodTypeAny, {
|
|
344
1276
|
items: {
|
|
345
|
-
image: string;
|
|
346
1277
|
id: string;
|
|
347
1278
|
name: string;
|
|
348
1279
|
price: number;
|
|
349
1280
|
quantity: number;
|
|
1281
|
+
image?: string | undefined;
|
|
350
1282
|
variant?: string | undefined;
|
|
1283
|
+
unitPrice?: Money | undefined;
|
|
1284
|
+
lineTotal?: Money | undefined;
|
|
351
1285
|
}[];
|
|
352
1286
|
promotions: {
|
|
353
|
-
icon: string;
|
|
354
1287
|
threshold: number;
|
|
355
1288
|
reward: string;
|
|
1289
|
+
icon: string;
|
|
356
1290
|
}[];
|
|
1291
|
+
shippingLabel?: string | undefined;
|
|
1292
|
+
emptyLabel?: string | undefined;
|
|
357
1293
|
recentlyViewed?: {
|
|
358
|
-
image: string;
|
|
359
1294
|
id: string;
|
|
360
1295
|
name: string;
|
|
361
1296
|
price: number;
|
|
1297
|
+
image: string;
|
|
362
1298
|
}[] | undefined;
|
|
1299
|
+
totals?: {
|
|
1300
|
+
subtotal: Money;
|
|
1301
|
+
total: Money;
|
|
1302
|
+
shipping?: Money | undefined;
|
|
1303
|
+
discount?: Money | undefined;
|
|
1304
|
+
tax?: Money | undefined;
|
|
1305
|
+
} | undefined;
|
|
1306
|
+
totalsState?: "idle" | "pending" | "error" | undefined;
|
|
1307
|
+
totalsErrorLabel?: string | undefined;
|
|
1308
|
+
totalsUnavailableLabel?: string | undefined;
|
|
1309
|
+
amountUnavailableLabel?: string | undefined;
|
|
1310
|
+
retryLabel?: string | undefined;
|
|
363
1311
|
taxRate?: number | undefined;
|
|
364
1312
|
titleLabel?: string | undefined;
|
|
365
1313
|
subtotalLabel?: string | undefined;
|
|
1314
|
+
discountLabel?: string | undefined;
|
|
366
1315
|
taxLabel?: string | undefined;
|
|
367
|
-
shippingLabel?: string | undefined;
|
|
368
1316
|
shippingFreeLabel?: string | undefined;
|
|
369
1317
|
totalLabel?: string | undefined;
|
|
1318
|
+
totalsPendingLabel?: string | undefined;
|
|
370
1319
|
awayFromLabel?: string | undefined;
|
|
371
1320
|
activatedLabel?: string | undefined;
|
|
372
1321
|
itemsLabel?: string | undefined;
|
|
@@ -381,33 +1330,53 @@ declare const shoppingCart4PropsSchema: z.ZodObject<{
|
|
|
381
1330
|
checkoutLabel?: string | undefined;
|
|
382
1331
|
quickCheckoutLabel?: string | undefined;
|
|
383
1332
|
checkoutNowLabel?: string | undefined;
|
|
1333
|
+
removeLabel?: string | undefined;
|
|
1334
|
+
decreaseLabel?: string | undefined;
|
|
1335
|
+
increaseLabel?: string | undefined;
|
|
384
1336
|
}, {
|
|
385
1337
|
items: {
|
|
386
|
-
image: string;
|
|
387
1338
|
id: string;
|
|
388
1339
|
name: string;
|
|
389
1340
|
price: number;
|
|
390
1341
|
quantity: number;
|
|
1342
|
+
image?: string | undefined;
|
|
391
1343
|
variant?: string | undefined;
|
|
1344
|
+
unitPrice?: Money | undefined;
|
|
1345
|
+
lineTotal?: Money | undefined;
|
|
392
1346
|
}[];
|
|
1347
|
+
shippingLabel?: string | undefined;
|
|
1348
|
+
emptyLabel?: string | undefined;
|
|
393
1349
|
promotions?: {
|
|
394
1350
|
threshold: number;
|
|
395
1351
|
reward: string;
|
|
396
1352
|
icon?: string | undefined;
|
|
397
1353
|
}[] | undefined;
|
|
398
1354
|
recentlyViewed?: {
|
|
399
|
-
image: string;
|
|
400
1355
|
id: string;
|
|
401
1356
|
name: string;
|
|
402
1357
|
price: number;
|
|
1358
|
+
image: string;
|
|
403
1359
|
}[] | undefined;
|
|
1360
|
+
totals?: {
|
|
1361
|
+
subtotal: Money;
|
|
1362
|
+
total: Money;
|
|
1363
|
+
shipping?: Money | undefined;
|
|
1364
|
+
discount?: Money | undefined;
|
|
1365
|
+
tax?: Money | undefined;
|
|
1366
|
+
} | undefined;
|
|
1367
|
+
totalsState?: "idle" | "pending" | "error" | undefined;
|
|
1368
|
+
totalsErrorLabel?: string | undefined;
|
|
1369
|
+
totalsUnavailableLabel?: string | undefined;
|
|
1370
|
+
amountUnavailableLabel?: string | undefined;
|
|
1371
|
+
retryLabel?: string | undefined;
|
|
404
1372
|
taxRate?: number | undefined;
|
|
405
1373
|
titleLabel?: string | undefined;
|
|
406
1374
|
subtotalLabel?: string | undefined;
|
|
1375
|
+
discountLabel?: string | undefined;
|
|
407
1376
|
taxLabel?: string | undefined;
|
|
408
|
-
shippingLabel?: string | undefined;
|
|
409
1377
|
shippingFreeLabel?: string | undefined;
|
|
410
1378
|
totalLabel?: string | undefined;
|
|
1379
|
+
totalsPendingLabel?: string | undefined;
|
|
411
1380
|
awayFromLabel?: string | undefined;
|
|
412
1381
|
activatedLabel?: string | undefined;
|
|
413
1382
|
itemsLabel?: string | undefined;
|
|
@@ -422,11 +1391,53 @@ declare const shoppingCart4PropsSchema: z.ZodObject<{
|
|
|
422
1391
|
checkoutLabel?: string | undefined;
|
|
423
1392
|
quickCheckoutLabel?: string | undefined;
|
|
424
1393
|
checkoutNowLabel?: string | undefined;
|
|
1394
|
+
removeLabel?: string | undefined;
|
|
1395
|
+
decreaseLabel?: string | undefined;
|
|
1396
|
+
increaseLabel?: string | undefined;
|
|
425
1397
|
}>;
|
|
426
1398
|
type ShoppingCart4SpecProps = z.infer<typeof shoppingCart4PropsSchema>;
|
|
1399
|
+
/**
|
|
1400
|
+
* Optional brand seams shared by the existing blocks. These mirror the
|
|
1401
|
+
* components' optional props as a serializable subset (no React): an accent
|
|
1402
|
+
* marks a trailing segment of the wordmark/brand name, and an editorial image
|
|
1403
|
+
* is a native `<img>` source. Omitting each keeps the block's current output.
|
|
1404
|
+
*/
|
|
1405
|
+
declare const logoAccentSchema: z.ZodObject<{
|
|
1406
|
+
text: z.ZodString;
|
|
1407
|
+
className: z.ZodOptional<z.ZodString>;
|
|
1408
|
+
}, "strip", z.ZodTypeAny, {
|
|
1409
|
+
text: string;
|
|
1410
|
+
className?: string | undefined;
|
|
1411
|
+
}, {
|
|
1412
|
+
text: string;
|
|
1413
|
+
className?: string | undefined;
|
|
1414
|
+
}>;
|
|
1415
|
+
type LogoAccent = z.infer<typeof logoAccentSchema>;
|
|
1416
|
+
declare const brandAccentSchema: z.ZodObject<{
|
|
1417
|
+
text: z.ZodString;
|
|
1418
|
+
className: z.ZodOptional<z.ZodString>;
|
|
1419
|
+
}, "strip", z.ZodTypeAny, {
|
|
1420
|
+
text: string;
|
|
1421
|
+
className?: string | undefined;
|
|
1422
|
+
}, {
|
|
1423
|
+
text: string;
|
|
1424
|
+
className?: string | undefined;
|
|
1425
|
+
}>;
|
|
1426
|
+
type BrandAccent = z.infer<typeof brandAccentSchema>;
|
|
1427
|
+
declare const heroImageSchema: z.ZodObject<{
|
|
1428
|
+
src: z.ZodString;
|
|
1429
|
+
alt: z.ZodString;
|
|
1430
|
+
}, "strip", z.ZodTypeAny, {
|
|
1431
|
+
src: string;
|
|
1432
|
+
alt: string;
|
|
1433
|
+
}, {
|
|
1434
|
+
src: string;
|
|
1435
|
+
alt: string;
|
|
1436
|
+
}>;
|
|
1437
|
+
type HeroImage = z.infer<typeof heroImageSchema>;
|
|
427
1438
|
declare const navbar4PropsSchema: z.ZodObject<{
|
|
428
1439
|
storeCategories: z.ZodArray<z.ZodType<StoreCategory, z.ZodTypeDef, StoreCategory>, "many">;
|
|
429
|
-
shippingNote: z.ZodString
|
|
1440
|
+
shippingNote: z.ZodOptional<z.ZodString>;
|
|
430
1441
|
utilityLinks: z.ZodArray<z.ZodObject<{
|
|
431
1442
|
label: z.ZodString;
|
|
432
1443
|
href: z.ZodString;
|
|
@@ -439,45 +1450,65 @@ declare const navbar4PropsSchema: z.ZodObject<{
|
|
|
439
1450
|
}>, "many">;
|
|
440
1451
|
logoText: z.ZodString;
|
|
441
1452
|
logoHref: z.ZodOptional<z.ZodString>;
|
|
1453
|
+
/** Optional accent for a trailing segment of `logoText`; omitted → unchanged. */
|
|
1454
|
+
logoAccent: z.ZodOptional<z.ZodObject<{
|
|
1455
|
+
text: z.ZodString;
|
|
1456
|
+
className: z.ZodOptional<z.ZodString>;
|
|
1457
|
+
}, "strip", z.ZodTypeAny, {
|
|
1458
|
+
text: string;
|
|
1459
|
+
className?: string | undefined;
|
|
1460
|
+
}, {
|
|
1461
|
+
text: string;
|
|
1462
|
+
className?: string | undefined;
|
|
1463
|
+
}>>;
|
|
1464
|
+
/**
|
|
1465
|
+
* Consumer-supplied classes merged onto the block's outer surface as the
|
|
1466
|
+
* final argument (e.g. a semantic surface token). Omitted → unchanged.
|
|
1467
|
+
*/
|
|
1468
|
+
className: z.ZodOptional<z.ZodString>;
|
|
442
1469
|
accountHref: z.ZodOptional<z.ZodString>;
|
|
443
1470
|
searchQuery: z.ZodOptional<z.ZodString>;
|
|
444
1471
|
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
445
1472
|
id: z.ZodString;
|
|
446
1473
|
name: z.ZodString;
|
|
447
|
-
variant: z.ZodString
|
|
1474
|
+
variant: z.ZodOptional<z.ZodString>;
|
|
448
1475
|
price: z.ZodNumber;
|
|
449
1476
|
qty: z.ZodNumber;
|
|
450
|
-
|
|
1477
|
+
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
1478
|
+
image: z.ZodOptional<z.ZodString>;
|
|
451
1479
|
}, "strip", z.ZodTypeAny, {
|
|
452
|
-
variant: string;
|
|
453
|
-
image: string;
|
|
454
1480
|
id: string;
|
|
455
1481
|
name: string;
|
|
456
1482
|
price: number;
|
|
457
1483
|
qty: number;
|
|
1484
|
+
image?: string | undefined;
|
|
1485
|
+
variant?: string | undefined;
|
|
458
1486
|
}, {
|
|
459
|
-
variant: string;
|
|
460
|
-
image: string;
|
|
461
1487
|
id: string;
|
|
462
1488
|
name: string;
|
|
463
1489
|
price: number;
|
|
464
1490
|
qty: number;
|
|
1491
|
+
image?: string | undefined;
|
|
1492
|
+
variant?: string | undefined;
|
|
465
1493
|
}>, "many">>;
|
|
1494
|
+
/** Authoritative backend subtotal for the mini-cart. */
|
|
1495
|
+
subtotal: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
|
|
1496
|
+
subtotalUnavailableLabel: z.ZodOptional<z.ZodString>;
|
|
466
1497
|
user: z.ZodOptional<z.ZodObject<{
|
|
467
1498
|
name: z.ZodString;
|
|
468
1499
|
email: z.ZodString;
|
|
469
|
-
avatar: z.ZodString
|
|
1500
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
470
1501
|
initials: z.ZodString;
|
|
471
1502
|
}, "strip", z.ZodTypeAny, {
|
|
472
|
-
email: string;
|
|
473
1503
|
name: string;
|
|
474
|
-
|
|
1504
|
+
email: string;
|
|
475
1505
|
initials: string;
|
|
1506
|
+
avatar?: string | undefined;
|
|
476
1507
|
}, {
|
|
477
|
-
email: string;
|
|
478
1508
|
name: string;
|
|
479
|
-
|
|
1509
|
+
email: string;
|
|
480
1510
|
initials: string;
|
|
1511
|
+
avatar?: string | undefined;
|
|
481
1512
|
}>>;
|
|
482
1513
|
accountMenuItems: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
483
1514
|
label: z.ZodString;
|
|
@@ -487,77 +1518,215 @@ declare const navbar4PropsSchema: z.ZodObject<{
|
|
|
487
1518
|
}, "strip", z.ZodTypeAny, {
|
|
488
1519
|
label: string;
|
|
489
1520
|
href: string;
|
|
490
|
-
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
491
1521
|
description?: string | undefined;
|
|
1522
|
+
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
492
1523
|
}, {
|
|
493
1524
|
label: string;
|
|
494
1525
|
href: string;
|
|
495
|
-
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
496
1526
|
description?: string | undefined;
|
|
1527
|
+
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
497
1528
|
}>, "many">>;
|
|
1529
|
+
accountPending: z.ZodOptional<z.ZodBoolean>;
|
|
1530
|
+
accountUnavailable: z.ZodOptional<z.ZodBoolean>;
|
|
498
1531
|
}, "strip", z.ZodTypeAny, {
|
|
499
|
-
logoText: string;
|
|
500
1532
|
storeCategories: StoreCategory[];
|
|
501
1533
|
utilityLinks: {
|
|
502
1534
|
label: string;
|
|
503
1535
|
href: string;
|
|
504
1536
|
}[];
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
email: string;
|
|
509
|
-
name: string;
|
|
510
|
-
avatar: string;
|
|
511
|
-
initials: string;
|
|
512
|
-
} | undefined;
|
|
1537
|
+
logoText: string;
|
|
1538
|
+
subtotal?: Money | undefined;
|
|
1539
|
+
className?: string | undefined;
|
|
513
1540
|
items?: {
|
|
514
|
-
variant: string;
|
|
515
|
-
image: string;
|
|
516
1541
|
id: string;
|
|
517
1542
|
name: string;
|
|
518
1543
|
price: number;
|
|
519
1544
|
qty: number;
|
|
1545
|
+
image?: string | undefined;
|
|
1546
|
+
variant?: string | undefined;
|
|
520
1547
|
}[] | undefined;
|
|
1548
|
+
shippingNote?: string | undefined;
|
|
1549
|
+
logoHref?: string | undefined;
|
|
1550
|
+
logoAccent?: {
|
|
1551
|
+
text: string;
|
|
1552
|
+
className?: string | undefined;
|
|
1553
|
+
} | undefined;
|
|
521
1554
|
accountHref?: string | undefined;
|
|
522
1555
|
searchQuery?: string | undefined;
|
|
1556
|
+
subtotalUnavailableLabel?: string | undefined;
|
|
1557
|
+
user?: {
|
|
1558
|
+
name: string;
|
|
1559
|
+
email: string;
|
|
1560
|
+
initials: string;
|
|
1561
|
+
avatar?: string | undefined;
|
|
1562
|
+
} | undefined;
|
|
523
1563
|
accountMenuItems?: {
|
|
524
1564
|
label: string;
|
|
525
1565
|
href: string;
|
|
526
|
-
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
527
1566
|
description?: string | undefined;
|
|
1567
|
+
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
528
1568
|
}[] | undefined;
|
|
1569
|
+
accountPending?: boolean | undefined;
|
|
1570
|
+
accountUnavailable?: boolean | undefined;
|
|
529
1571
|
}, {
|
|
530
|
-
logoText: string;
|
|
531
1572
|
storeCategories: StoreCategory[];
|
|
532
1573
|
utilityLinks: {
|
|
533
1574
|
label: string;
|
|
534
1575
|
href: string;
|
|
535
1576
|
}[];
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
email: string;
|
|
540
|
-
name: string;
|
|
541
|
-
avatar: string;
|
|
542
|
-
initials: string;
|
|
543
|
-
} | undefined;
|
|
1577
|
+
logoText: string;
|
|
1578
|
+
subtotal?: Money | undefined;
|
|
1579
|
+
className?: string | undefined;
|
|
544
1580
|
items?: {
|
|
545
|
-
variant: string;
|
|
546
|
-
image: string;
|
|
547
1581
|
id: string;
|
|
548
1582
|
name: string;
|
|
549
1583
|
price: number;
|
|
550
1584
|
qty: number;
|
|
1585
|
+
image?: string | undefined;
|
|
1586
|
+
variant?: string | undefined;
|
|
551
1587
|
}[] | undefined;
|
|
1588
|
+
shippingNote?: string | undefined;
|
|
1589
|
+
logoHref?: string | undefined;
|
|
1590
|
+
logoAccent?: {
|
|
1591
|
+
text: string;
|
|
1592
|
+
className?: string | undefined;
|
|
1593
|
+
} | undefined;
|
|
552
1594
|
accountHref?: string | undefined;
|
|
553
1595
|
searchQuery?: string | undefined;
|
|
1596
|
+
subtotalUnavailableLabel?: string | undefined;
|
|
1597
|
+
user?: {
|
|
1598
|
+
name: string;
|
|
1599
|
+
email: string;
|
|
1600
|
+
initials: string;
|
|
1601
|
+
avatar?: string | undefined;
|
|
1602
|
+
} | undefined;
|
|
554
1603
|
accountMenuItems?: {
|
|
555
1604
|
label: string;
|
|
556
1605
|
href: string;
|
|
557
|
-
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
558
1606
|
description?: string | undefined;
|
|
1607
|
+
icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
|
|
559
1608
|
}[] | undefined;
|
|
1609
|
+
accountPending?: boolean | undefined;
|
|
1610
|
+
accountUnavailable?: boolean | undefined;
|
|
560
1611
|
}>;
|
|
561
1612
|
type Navbar4SpecProps = z.infer<typeof navbar4PropsSchema>;
|
|
1613
|
+
/**
|
|
1614
|
+
* Serializable contracts for the two bounded editorial sections (`faq`, `cta`).
|
|
1615
|
+
* These are the serializable subset of `FaqBlock1Props`/`CtaSection1Props`: the
|
|
1616
|
+
* React-only callbacks (`onPrimaryClick`/`onSecondaryClick`) are intentionally
|
|
1617
|
+
* excluded — the catalog adapter binds them (see design D3).
|
|
1618
|
+
*/
|
|
1619
|
+
declare const ctaSchema: z.ZodObject<{
|
|
1620
|
+
label: z.ZodString;
|
|
1621
|
+
href: z.ZodOptional<z.ZodString>;
|
|
1622
|
+
}, "strip", z.ZodTypeAny, {
|
|
1623
|
+
label: string;
|
|
1624
|
+
href?: string | undefined;
|
|
1625
|
+
}, {
|
|
1626
|
+
label: string;
|
|
1627
|
+
href?: string | undefined;
|
|
1628
|
+
}>;
|
|
1629
|
+
type CtaSpec = z.infer<typeof ctaSchema>;
|
|
1630
|
+
declare const faqItemSchema: z.ZodObject<{
|
|
1631
|
+
value: z.ZodString;
|
|
1632
|
+
question: z.ZodString;
|
|
1633
|
+
answer: z.ZodString;
|
|
1634
|
+
}, "strip", z.ZodTypeAny, {
|
|
1635
|
+
value: string;
|
|
1636
|
+
question: string;
|
|
1637
|
+
answer: string;
|
|
1638
|
+
}, {
|
|
1639
|
+
value: string;
|
|
1640
|
+
question: string;
|
|
1641
|
+
answer: string;
|
|
1642
|
+
}>;
|
|
1643
|
+
type FaqItemSpec = z.infer<typeof faqItemSchema>;
|
|
1644
|
+
declare const faqBlock1PropsSchema: z.ZodObject<{
|
|
1645
|
+
items: z.ZodArray<z.ZodObject<{
|
|
1646
|
+
value: z.ZodString;
|
|
1647
|
+
question: z.ZodString;
|
|
1648
|
+
answer: z.ZodString;
|
|
1649
|
+
}, "strip", z.ZodTypeAny, {
|
|
1650
|
+
value: string;
|
|
1651
|
+
question: string;
|
|
1652
|
+
answer: string;
|
|
1653
|
+
}, {
|
|
1654
|
+
value: string;
|
|
1655
|
+
question: string;
|
|
1656
|
+
answer: string;
|
|
1657
|
+
}>, "many">;
|
|
1658
|
+
title: z.ZodOptional<z.ZodString>;
|
|
1659
|
+
description: z.ZodOptional<z.ZodString>;
|
|
1660
|
+
accordionType: z.ZodOptional<z.ZodEnum<["single", "multiple"]>>;
|
|
1661
|
+
}, "strip", z.ZodTypeAny, {
|
|
1662
|
+
items: {
|
|
1663
|
+
value: string;
|
|
1664
|
+
question: string;
|
|
1665
|
+
answer: string;
|
|
1666
|
+
}[];
|
|
1667
|
+
title?: string | undefined;
|
|
1668
|
+
description?: string | undefined;
|
|
1669
|
+
accordionType?: "single" | "multiple" | undefined;
|
|
1670
|
+
}, {
|
|
1671
|
+
items: {
|
|
1672
|
+
value: string;
|
|
1673
|
+
question: string;
|
|
1674
|
+
answer: string;
|
|
1675
|
+
}[];
|
|
1676
|
+
title?: string | undefined;
|
|
1677
|
+
description?: string | undefined;
|
|
1678
|
+
accordionType?: "single" | "multiple" | undefined;
|
|
1679
|
+
}>;
|
|
1680
|
+
type FaqBlock1SpecProps = z.infer<typeof faqBlock1PropsSchema>;
|
|
1681
|
+
declare const ctaSection1PropsSchema: z.ZodObject<{
|
|
1682
|
+
badgeText: z.ZodOptional<z.ZodString>;
|
|
1683
|
+
title: z.ZodOptional<z.ZodString>;
|
|
1684
|
+
description: z.ZodOptional<z.ZodString>;
|
|
1685
|
+
primaryCta: z.ZodOptional<z.ZodObject<{
|
|
1686
|
+
label: z.ZodString;
|
|
1687
|
+
href: z.ZodOptional<z.ZodString>;
|
|
1688
|
+
}, "strip", z.ZodTypeAny, {
|
|
1689
|
+
label: string;
|
|
1690
|
+
href?: string | undefined;
|
|
1691
|
+
}, {
|
|
1692
|
+
label: string;
|
|
1693
|
+
href?: string | undefined;
|
|
1694
|
+
}>>;
|
|
1695
|
+
secondaryCta: z.ZodOptional<z.ZodObject<{
|
|
1696
|
+
label: z.ZodString;
|
|
1697
|
+
href: z.ZodOptional<z.ZodString>;
|
|
1698
|
+
}, "strip", z.ZodTypeAny, {
|
|
1699
|
+
label: string;
|
|
1700
|
+
href?: string | undefined;
|
|
1701
|
+
}, {
|
|
1702
|
+
label: string;
|
|
1703
|
+
href?: string | undefined;
|
|
1704
|
+
}>>;
|
|
1705
|
+
}, "strip", z.ZodTypeAny, {
|
|
1706
|
+
title?: string | undefined;
|
|
1707
|
+
description?: string | undefined;
|
|
1708
|
+
badgeText?: string | undefined;
|
|
1709
|
+
primaryCta?: {
|
|
1710
|
+
label: string;
|
|
1711
|
+
href?: string | undefined;
|
|
1712
|
+
} | undefined;
|
|
1713
|
+
secondaryCta?: {
|
|
1714
|
+
label: string;
|
|
1715
|
+
href?: string | undefined;
|
|
1716
|
+
} | undefined;
|
|
1717
|
+
}, {
|
|
1718
|
+
title?: string | undefined;
|
|
1719
|
+
description?: string | undefined;
|
|
1720
|
+
badgeText?: string | undefined;
|
|
1721
|
+
primaryCta?: {
|
|
1722
|
+
label: string;
|
|
1723
|
+
href?: string | undefined;
|
|
1724
|
+
} | undefined;
|
|
1725
|
+
secondaryCta?: {
|
|
1726
|
+
label: string;
|
|
1727
|
+
href?: string | undefined;
|
|
1728
|
+
} | undefined;
|
|
1729
|
+
}>;
|
|
1730
|
+
type CtaSection1SpecProps = z.infer<typeof ctaSection1PropsSchema>;
|
|
562
1731
|
|
|
563
|
-
export { type AccountMenuItem, type ButtonSpecProps, type CanonMoney, type CanonProduct, type CardProduct, type CartItem, type NavCartItem, type Navbar4SpecProps, PRODUCT_IMAGE_FALLBACK, type ProductCard1SpecProps, type Promotion, type RecentlyViewedItem, type ShoppingCart4SpecProps, type StoreCategory, type StoreContainer1SpecProps, type StoreUser, type UtilityLink, accountMenuItemSchema, buttonPropsSchema, cardProductSchema, cartItemSchema, navCartItemSchema, navbar4PropsSchema, paymentMethodSchema, productCard1PropsSchema, promotionSchema, recentlyViewedItemSchema, shoppingCart4PropsSchema, storeCategorySchema, storeContainer1PropsSchema, storeUserSchema, utilityLinkSchema };
|
|
1732
|
+
export { type AccountMenuItem, type BrandAccent, type ButtonSpecProps, type CanonMoney, type CanonProduct, type CardProduct, type CartItem, type CartTotals, type CtaSection1SpecProps, type CtaSpec, type FaqBlock1SpecProps, type FaqItemSpec, type HeroImage, type LogoAccent, type NavCartItem, type Navbar4SpecProps, PRODUCT_IMAGE_FALLBACK, type ProductCard1SpecProps, type ProductDetailProductSpec, type ProductDetailVariantSpec, type ProductOverview1SpecProps, type ProductPresentation, type ProductShowcase1SpecProps, type Promotion, type RecentlyViewedItem, type ShoppingCart4SpecProps, type StoreCategory, type StoreContainer1SpecProps, type StoreUser, type UtilityLink, accountMenuItemSchema, brandAccentSchema, buttonPropsSchema, cardProductSchema, cartItemSchema, cartTotalsSchema, ctaSchema, ctaSection1PropsSchema, faqBlock1PropsSchema, faqItemSchema, formatMoney, heroImageSchema, isAvailableMoney, isCompleteFiniteDecimal, logoAccentSchema, moneySchema, navCartItemSchema, navbar4PropsSchema, paymentMethodSchema, productCard1PropsSchema, productDetailProductSchema, productDetailVariantSchema, productOverview1PropsSchema, productPresentationSchema, productShowcase1PropsSchema, promotionSchema, recentlyViewedItemSchema, resolveAbsoluteQuantity, shoppingCart4PropsSchema, storeCategorySchema, storeContainer1PropsSchema, storeUserSchema, utilityLinkSchema };
|