@syntrologie/adapt-product 2.27.0 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/__fixtures__/variant-payloads.d.ts +33 -0
  2. package/dist/__fixtures__/variant-payloads.d.ts.map +1 -0
  3. package/dist/cdn.d.ts +1 -0
  4. package/dist/cdn.d.ts.map +1 -1
  5. package/dist/cdn.js +9 -3
  6. package/dist/cdn.js.map +2 -2
  7. package/dist/chunk-7Z4Y44WC.js +319 -0
  8. package/dist/chunk-7Z4Y44WC.js.map +7 -0
  9. package/dist/chunk-VY23O32Z.js +10963 -0
  10. package/dist/chunk-VY23O32Z.js.map +7 -0
  11. package/dist/decision/card-effects.d.ts +20 -0
  12. package/dist/decision/card-effects.d.ts.map +1 -0
  13. package/dist/decision/card.d.ts +150 -0
  14. package/dist/decision/card.d.ts.map +1 -0
  15. package/dist/decision/pdp-compose.d.ts +69 -0
  16. package/dist/decision/pdp-compose.d.ts.map +1 -0
  17. package/dist/decision/pdp-effects.d.ts +17 -0
  18. package/dist/decision/pdp-effects.d.ts.map +1 -0
  19. package/dist/decision/pdp.d.ts +214 -0
  20. package/dist/decision/pdp.d.ts.map +1 -0
  21. package/dist/native/nativeSlotSwap.d.ts +40 -0
  22. package/dist/native/nativeSlotSwap.d.ts.map +1 -0
  23. package/dist/native/nativeSlotWatcher.d.ts +135 -0
  24. package/dist/native/nativeSlotWatcher.d.ts.map +1 -0
  25. package/dist/platformAdapter.d.ts +82 -0
  26. package/dist/platformAdapter.d.ts.map +1 -0
  27. package/dist/runtime.d.ts +688 -60
  28. package/dist/runtime.d.ts.map +1 -1
  29. package/dist/runtime.js +10 -2
  30. package/dist/sanitizer.d.ts.map +1 -1
  31. package/dist/schema-primitives.d.ts +450 -29
  32. package/dist/schema-primitives.d.ts.map +1 -1
  33. package/dist/schema.d.ts +4922 -446
  34. package/dist/schema.d.ts.map +1 -1
  35. package/dist/schema.js +13 -1
  36. package/dist/scoring/pool-selection.d.ts +35 -0
  37. package/dist/scoring/pool-selection.d.ts.map +1 -0
  38. package/dist/scoring/scored-template.d.ts +106 -0
  39. package/dist/scoring/scored-template.d.ts.map +1 -0
  40. package/dist/variantCache.d.ts +5 -0
  41. package/dist/variantCache.d.ts.map +1 -0
  42. package/dist/widgets/OtherProductTileLit.d.ts +46 -0
  43. package/dist/widgets/OtherProductTileLit.d.ts.map +1 -0
  44. package/dist/widgets/PdpChartBarStackedLit.d.ts +33 -0
  45. package/dist/widgets/PdpChartBarStackedLit.d.ts.map +1 -0
  46. package/dist/widgets/PdpChartLit.d.ts +56 -0
  47. package/dist/widgets/PdpChartLit.d.ts.map +1 -0
  48. package/dist/widgets/PdpChartMetricPullLit.d.ts +33 -0
  49. package/dist/widgets/PdpChartMetricPullLit.d.ts.map +1 -0
  50. package/dist/widgets/PdpOtherProductsCarouselLit.d.ts +33 -0
  51. package/dist/widgets/PdpOtherProductsCarouselLit.d.ts.map +1 -0
  52. package/dist/widgets/PdpOtherProductsGridLit.d.ts +20 -0
  53. package/dist/widgets/PdpOtherProductsGridLit.d.ts.map +1 -0
  54. package/dist/widgets/PdpOtherProductsLit.d.ts +35 -0
  55. package/dist/widgets/PdpOtherProductsLit.d.ts.map +1 -0
  56. package/dist/widgets/PdpPeerFeedCarouselLit.d.ts +30 -0
  57. package/dist/widgets/PdpPeerFeedCarouselLit.d.ts.map +1 -0
  58. package/dist/widgets/PdpPeerFeedLit.d.ts +51 -0
  59. package/dist/widgets/PdpPeerFeedLit.d.ts.map +1 -0
  60. package/dist/widgets/PdpPeerFeedMasonryLit.d.ts +30 -0
  61. package/dist/widgets/PdpPeerFeedMasonryLit.d.ts.map +1 -0
  62. package/dist/widgets/PdpQaAccordionLit.d.ts +27 -0
  63. package/dist/widgets/PdpQaAccordionLit.d.ts.map +1 -0
  64. package/dist/widgets/PdpQaLit.d.ts +48 -0
  65. package/dist/widgets/PdpQaLit.d.ts.map +1 -0
  66. package/dist/widgets/PdpQaSideBySideLit.d.ts +27 -0
  67. package/dist/widgets/PdpQaSideBySideLit.d.ts.map +1 -0
  68. package/dist/widgets/PdpRegionalFullBleedLit.d.ts +27 -0
  69. package/dist/widgets/PdpRegionalFullBleedLit.d.ts.map +1 -0
  70. package/dist/widgets/PdpRegionalInlineNoteLit.d.ts +27 -0
  71. package/dist/widgets/PdpRegionalInlineNoteLit.d.ts.map +1 -0
  72. package/dist/widgets/PdpRegionalLit.d.ts +48 -0
  73. package/dist/widgets/PdpRegionalLit.d.ts.map +1 -0
  74. package/dist/widgets/PdpRibbonLit.d.ts +31 -0
  75. package/dist/widgets/PdpRibbonLit.d.ts.map +1 -0
  76. package/dist/widgets/PdpSectionHeaderLit.d.ts +30 -0
  77. package/dist/widgets/PdpSectionHeaderLit.d.ts.map +1 -0
  78. package/dist/widgets/PdpSlotLit.d.ts +30 -0
  79. package/dist/widgets/PdpSlotLit.d.ts.map +1 -0
  80. package/dist/widgets/PdpSlotPlaceholderLit.d.ts +22 -0
  81. package/dist/widgets/PdpSlotPlaceholderLit.d.ts.map +1 -0
  82. package/dist/widgets/PdpTrendingNewsHeroLit.d.ts +32 -0
  83. package/dist/widgets/PdpTrendingNewsHeroLit.d.ts.map +1 -0
  84. package/dist/widgets/PdpTrendingNewsLit.d.ts +42 -0
  85. package/dist/widgets/PdpTrendingNewsLit.d.ts.map +1 -0
  86. package/dist/widgets/PdpTrendingNewsMagazineLit.d.ts +32 -0
  87. package/dist/widgets/PdpTrendingNewsMagazineLit.d.ts.map +1 -0
  88. package/dist/widgets/ProductCardLit.d.ts +80 -2
  89. package/dist/widgets/ProductCardLit.d.ts.map +1 -1
  90. package/dist/widgets/ProductComparisonLit.d.ts +9 -4
  91. package/dist/widgets/ProductComparisonLit.d.ts.map +1 -1
  92. package/dist/widgets/ProductGridLit.d.ts +1 -0
  93. package/dist/widgets/ProductGridLit.d.ts.map +1 -1
  94. package/dist/widgets/ProductHeroLit.d.ts +1 -0
  95. package/dist/widgets/ProductHeroLit.d.ts.map +1 -1
  96. package/dist/widgets/ProductRecoCarouselLit.d.ts +24 -0
  97. package/dist/widgets/ProductRecoCarouselLit.d.ts.map +1 -0
  98. package/dist/widgets/SyntroPdpLit.d.ts +366 -0
  99. package/dist/widgets/SyntroPdpLit.d.ts.map +1 -0
  100. package/dist/widgets/VariantPanelLit.d.ts +98 -0
  101. package/dist/widgets/VariantPanelLit.d.ts.map +1 -0
  102. package/dist/widgets/ensureStylesInRoot.d.ts +22 -0
  103. package/dist/widgets/ensureStylesInRoot.d.ts.map +1 -0
  104. package/dist/widgets/entrance.d.ts +35 -0
  105. package/dist/widgets/entrance.d.ts.map +1 -0
  106. package/dist/widgets/renderHealth.d.ts +57 -0
  107. package/dist/widgets/renderHealth.d.ts.map +1 -0
  108. package/dist/widgets/renderHealthReporter.d.ts +66 -0
  109. package/dist/widgets/renderHealthReporter.d.ts.map +1 -0
  110. package/package.json +4 -1
  111. package/dist/chunk-HFT5OENK.js +0 -1101
  112. package/dist/chunk-HFT5OENK.js.map +0 -7
  113. package/dist/chunk-SM35E4R3.js +0 -126
  114. package/dist/chunk-SM35E4R3.js.map +0 -7
package/dist/runtime.d.ts CHANGED
@@ -7,10 +7,55 @@
7
7
  * SmartCanvasRuntime's WidgetRegistry.
8
8
  */
9
9
  import { type MountPlumbing } from '@syntrologie/sdk-contracts';
10
+ import type { SyntroPdpProps } from './schema';
11
+ import './widgets/SyntroPdpLit';
12
+ import './widgets/PdpTrendingNewsLit';
13
+ import './widgets/PdpTrendingNewsMagazineLit';
14
+ import './widgets/PdpTrendingNewsHeroLit';
15
+ import './widgets/PdpPeerFeedMasonryLit';
16
+ import './widgets/PdpPeerFeedCarouselLit';
17
+ import './widgets/PdpChartLit';
18
+ import './widgets/PdpChartBarStackedLit';
19
+ import './widgets/PdpChartMetricPullLit';
20
+ import './widgets/PdpQaAccordionLit';
21
+ import './widgets/PdpQaSideBySideLit';
22
+ import './widgets/PdpRegionalFullBleedLit';
23
+ import './widgets/PdpRegionalInlineNoteLit';
24
+ import './widgets/PdpSlotPlaceholderLit';
25
+ import './widgets/PdpRibbonLit';
26
+ import './widgets/PdpSectionHeaderLit';
27
+ import './widgets/PdpSlotLit';
28
+ import './widgets/PdpQaLit';
29
+ import './widgets/PdpRegionalLit';
30
+ import './widgets/PdpPeerFeedLit';
31
+ import './widgets/PdpOtherProductsCarouselLit';
32
+ import './widgets/PdpOtherProductsGridLit';
33
+ /**
34
+ * Test seam. Disconnects all wirer observers and clears the
35
+ * "already wired" set so subsequent tests can call `onActivate` again
36
+ * with fresh state. NOT a production API.
37
+ */
38
+ export declare const _testing: {
39
+ resetWirer(): void;
40
+ };
41
+ /**
42
+ * AppRegistry calls this once at activation via the manifest's
43
+ * `runtime.onActivate` hook (see cdn.ts). Wires runtimeRef onto every
44
+ * <syntro-pdp> element on the page AND sets up a MutationObserver for
45
+ * future additions. Idempotent per runtime instance — calling twice
46
+ * with the same runtime is a no-op on the second call.
47
+ *
48
+ * Returns a teardown that disconnects the observer and removes the
49
+ * runtime from the WeakSet. AppRegistry pushes the teardown onto its
50
+ * cleanup chain so observers don't leak across deactivate/activate
51
+ * cycles.
52
+ *
53
+ * Customer code never calls this directly.
54
+ */
55
+ export declare function onActivate(runtime: unknown): (() => void) | void;
10
56
  export declare const ProductCardMountable: {
11
57
  mount(container: HTMLElement, config?: ({
12
58
  product: {
13
- id: string;
14
59
  name: string;
15
60
  image: {
16
61
  src: string;
@@ -30,15 +75,11 @@ export declare const ProductCardMountable: {
30
75
  url?: string | undefined;
31
76
  } | undefined;
32
77
  };
33
- attributes: {
34
- value: string;
35
- label: string;
36
- emphasis: boolean;
37
- }[];
78
+ id: string;
38
79
  ctas: {
39
80
  label: string;
40
- target: "_self" | "_blank";
41
81
  variant: "primary" | "secondary" | "ghost";
82
+ target: "_self" | "_blank";
42
83
  href?: string | undefined;
43
84
  actionId?: string | undefined;
44
85
  }[];
@@ -67,14 +108,85 @@ export declare const ProductCardMountable: {
67
108
  tone: "neutral" | "primary" | "success" | "warning";
68
109
  } | undefined;
69
110
  framing?: string | undefined;
111
+ identifiers?: {
112
+ sku?: string | undefined;
113
+ gtin?: string | undefined;
114
+ mpn?: string | undefined;
115
+ shopifyHandle?: string | undefined;
116
+ wooSlug?: string | undefined;
117
+ } | undefined;
118
+ brand?: string | undefined;
119
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
120
+ salePrice?: {
121
+ amount: string;
122
+ bind?: {
123
+ type: "dom-selector";
124
+ selector: string;
125
+ } | {
126
+ type: "shopify-ajax";
127
+ handle: string;
128
+ base?: string | undefined;
129
+ } | {
130
+ type: "woocommerce-store-api";
131
+ slug: string;
132
+ base?: string | undefined;
133
+ } | {
134
+ type: "jsonld";
135
+ url?: string | undefined;
136
+ } | undefined;
137
+ cadence?: string | undefined;
138
+ validUntil?: string | undefined;
139
+ } | undefined;
140
+ rating?: {
141
+ value: number;
142
+ count: number;
143
+ max: number;
144
+ } | undefined;
145
+ specs?: {
146
+ name: string;
147
+ value: string;
148
+ section: string;
149
+ emphasis: boolean;
150
+ unit?: string | undefined;
151
+ priority?: number | undefined;
152
+ }[] | undefined;
153
+ labels?: Record<string, string | number | boolean> | undefined;
154
+ attributes?: {
155
+ value: string;
156
+ label: string;
157
+ emphasis: boolean;
158
+ }[] | undefined;
159
+ variants?: {
160
+ attributes: {
161
+ values: {
162
+ label: string;
163
+ id: string;
164
+ swatch: {
165
+ kind: "image" | "color";
166
+ value: string;
167
+ } | null;
168
+ }[];
169
+ kind: "pill" | "swatch";
170
+ label: string;
171
+ key: string;
172
+ }[];
173
+ variants: {
174
+ id: string;
175
+ price: number;
176
+ in_stock: boolean;
177
+ selection: Record<string, string>;
178
+ compare_at_price: number | null;
179
+ featured_image?: string | undefined;
180
+ }[];
181
+ } | undefined;
70
182
  };
71
183
  density: "compact" | "standard";
184
+ visibleFacts?: ("tagline" | "price" | "badge" | "framing" | "availability" | "rating" | "specs")[] | undefined;
72
185
  } & MountPlumbing) | null | undefined): () => void;
73
186
  };
74
187
  export declare const ProductComparisonMountable: {
75
188
  mount(container: HTMLElement, config?: ({
76
189
  products: {
77
- id: string;
78
190
  name: string;
79
191
  image: {
80
192
  src: string;
@@ -94,15 +206,11 @@ export declare const ProductComparisonMountable: {
94
206
  url?: string | undefined;
95
207
  } | undefined;
96
208
  };
97
- attributes: {
98
- value: string;
99
- label: string;
100
- emphasis: boolean;
101
- }[];
209
+ id: string;
102
210
  ctas: {
103
211
  label: string;
104
- target: "_self" | "_blank";
105
212
  variant: "primary" | "secondary" | "ghost";
213
+ target: "_self" | "_blank";
106
214
  href?: string | undefined;
107
215
  actionId?: string | undefined;
108
216
  }[];
@@ -131,16 +239,91 @@ export declare const ProductComparisonMountable: {
131
239
  tone: "neutral" | "primary" | "success" | "warning";
132
240
  } | undefined;
133
241
  framing?: string | undefined;
242
+ identifiers?: {
243
+ sku?: string | undefined;
244
+ gtin?: string | undefined;
245
+ mpn?: string | undefined;
246
+ shopifyHandle?: string | undefined;
247
+ wooSlug?: string | undefined;
248
+ } | undefined;
249
+ brand?: string | undefined;
250
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
251
+ salePrice?: {
252
+ amount: string;
253
+ bind?: {
254
+ type: "dom-selector";
255
+ selector: string;
256
+ } | {
257
+ type: "shopify-ajax";
258
+ handle: string;
259
+ base?: string | undefined;
260
+ } | {
261
+ type: "woocommerce-store-api";
262
+ slug: string;
263
+ base?: string | undefined;
264
+ } | {
265
+ type: "jsonld";
266
+ url?: string | undefined;
267
+ } | undefined;
268
+ cadence?: string | undefined;
269
+ validUntil?: string | undefined;
270
+ } | undefined;
271
+ rating?: {
272
+ value: number;
273
+ count: number;
274
+ max: number;
275
+ } | undefined;
276
+ specs?: {
277
+ name: string;
278
+ value: string;
279
+ section: string;
280
+ emphasis: boolean;
281
+ unit?: string | undefined;
282
+ priority?: number | undefined;
283
+ }[] | undefined;
284
+ labels?: Record<string, string | number | boolean> | undefined;
285
+ attributes?: {
286
+ value: string;
287
+ label: string;
288
+ emphasis: boolean;
289
+ }[] | undefined;
290
+ variants?: {
291
+ attributes: {
292
+ values: {
293
+ label: string;
294
+ id: string;
295
+ swatch: {
296
+ kind: "image" | "color";
297
+ value: string;
298
+ } | null;
299
+ }[];
300
+ kind: "pill" | "swatch";
301
+ label: string;
302
+ key: string;
303
+ }[];
304
+ variants: {
305
+ id: string;
306
+ price: number;
307
+ in_stock: boolean;
308
+ selection: Record<string, string>;
309
+ compare_at_price: number | null;
310
+ featured_image?: string | undefined;
311
+ }[];
312
+ } | undefined;
134
313
  }[];
135
- expandBehavior: "multi" | "accordion";
136
- defaultExpandedIndex?: number | undefined;
314
+ rows?: {
315
+ label: string;
316
+ valueA: string;
317
+ valueB: string;
318
+ valueC?: string | undefined;
319
+ valueD?: string | undefined;
320
+ }[] | undefined;
137
321
  heading?: string | undefined;
138
322
  } & MountPlumbing) | null | undefined): () => void;
139
323
  };
140
324
  export declare const ProductHeroMountable: {
141
325
  mount(container: HTMLElement, config?: ({
142
326
  product: {
143
- id: string;
144
327
  name: string;
145
328
  image: {
146
329
  src: string;
@@ -160,15 +343,11 @@ export declare const ProductHeroMountable: {
160
343
  url?: string | undefined;
161
344
  } | undefined;
162
345
  };
163
- attributes: {
164
- value: string;
165
- label: string;
166
- emphasis: boolean;
167
- }[];
346
+ id: string;
168
347
  ctas: {
169
348
  label: string;
170
- target: "_self" | "_blank";
171
349
  variant: "primary" | "secondary" | "ghost";
350
+ target: "_self" | "_blank";
172
351
  href?: string | undefined;
173
352
  actionId?: string | undefined;
174
353
  }[];
@@ -197,6 +376,77 @@ export declare const ProductHeroMountable: {
197
376
  tone: "neutral" | "primary" | "success" | "warning";
198
377
  } | undefined;
199
378
  framing?: string | undefined;
379
+ identifiers?: {
380
+ sku?: string | undefined;
381
+ gtin?: string | undefined;
382
+ mpn?: string | undefined;
383
+ shopifyHandle?: string | undefined;
384
+ wooSlug?: string | undefined;
385
+ } | undefined;
386
+ brand?: string | undefined;
387
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
388
+ salePrice?: {
389
+ amount: string;
390
+ bind?: {
391
+ type: "dom-selector";
392
+ selector: string;
393
+ } | {
394
+ type: "shopify-ajax";
395
+ handle: string;
396
+ base?: string | undefined;
397
+ } | {
398
+ type: "woocommerce-store-api";
399
+ slug: string;
400
+ base?: string | undefined;
401
+ } | {
402
+ type: "jsonld";
403
+ url?: string | undefined;
404
+ } | undefined;
405
+ cadence?: string | undefined;
406
+ validUntil?: string | undefined;
407
+ } | undefined;
408
+ rating?: {
409
+ value: number;
410
+ count: number;
411
+ max: number;
412
+ } | undefined;
413
+ specs?: {
414
+ name: string;
415
+ value: string;
416
+ section: string;
417
+ emphasis: boolean;
418
+ unit?: string | undefined;
419
+ priority?: number | undefined;
420
+ }[] | undefined;
421
+ labels?: Record<string, string | number | boolean> | undefined;
422
+ attributes?: {
423
+ value: string;
424
+ label: string;
425
+ emphasis: boolean;
426
+ }[] | undefined;
427
+ variants?: {
428
+ attributes: {
429
+ values: {
430
+ label: string;
431
+ id: string;
432
+ swatch: {
433
+ kind: "image" | "color";
434
+ value: string;
435
+ } | null;
436
+ }[];
437
+ kind: "pill" | "swatch";
438
+ label: string;
439
+ key: string;
440
+ }[];
441
+ variants: {
442
+ id: string;
443
+ price: number;
444
+ in_stock: boolean;
445
+ selection: Record<string, string>;
446
+ compare_at_price: number | null;
447
+ featured_image?: string | undefined;
448
+ }[];
449
+ } | undefined;
200
450
  };
201
451
  layout: "image-left" | "image-right" | "image-top";
202
452
  longCopy?: string | undefined;
@@ -205,7 +455,6 @@ export declare const ProductHeroMountable: {
205
455
  export declare const ProductGridMountable: {
206
456
  mount(container: HTMLElement, config?: ({
207
457
  products: {
208
- id: string;
209
458
  name: string;
210
459
  image: {
211
460
  src: string;
@@ -225,15 +474,11 @@ export declare const ProductGridMountable: {
225
474
  url?: string | undefined;
226
475
  } | undefined;
227
476
  };
228
- attributes: {
229
- value: string;
230
- label: string;
231
- emphasis: boolean;
232
- }[];
477
+ id: string;
233
478
  ctas: {
234
479
  label: string;
235
- target: "_self" | "_blank";
236
480
  variant: "primary" | "secondary" | "ghost";
481
+ target: "_self" | "_blank";
237
482
  href?: string | undefined;
238
483
  actionId?: string | undefined;
239
484
  }[];
@@ -262,11 +507,96 @@ export declare const ProductGridMountable: {
262
507
  tone: "neutral" | "primary" | "success" | "warning";
263
508
  } | undefined;
264
509
  framing?: string | undefined;
510
+ identifiers?: {
511
+ sku?: string | undefined;
512
+ gtin?: string | undefined;
513
+ mpn?: string | undefined;
514
+ shopifyHandle?: string | undefined;
515
+ wooSlug?: string | undefined;
516
+ } | undefined;
517
+ brand?: string | undefined;
518
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
519
+ salePrice?: {
520
+ amount: string;
521
+ bind?: {
522
+ type: "dom-selector";
523
+ selector: string;
524
+ } | {
525
+ type: "shopify-ajax";
526
+ handle: string;
527
+ base?: string | undefined;
528
+ } | {
529
+ type: "woocommerce-store-api";
530
+ slug: string;
531
+ base?: string | undefined;
532
+ } | {
533
+ type: "jsonld";
534
+ url?: string | undefined;
535
+ } | undefined;
536
+ cadence?: string | undefined;
537
+ validUntil?: string | undefined;
538
+ } | undefined;
539
+ rating?: {
540
+ value: number;
541
+ count: number;
542
+ max: number;
543
+ } | undefined;
544
+ specs?: {
545
+ name: string;
546
+ value: string;
547
+ section: string;
548
+ emphasis: boolean;
549
+ unit?: string | undefined;
550
+ priority?: number | undefined;
551
+ }[] | undefined;
552
+ labels?: Record<string, string | number | boolean> | undefined;
553
+ attributes?: {
554
+ value: string;
555
+ label: string;
556
+ emphasis: boolean;
557
+ }[] | undefined;
558
+ variants?: {
559
+ attributes: {
560
+ values: {
561
+ label: string;
562
+ id: string;
563
+ swatch: {
564
+ kind: "image" | "color";
565
+ value: string;
566
+ } | null;
567
+ }[];
568
+ kind: "pill" | "swatch";
569
+ label: string;
570
+ key: string;
571
+ }[];
572
+ variants: {
573
+ id: string;
574
+ price: number;
575
+ in_stock: boolean;
576
+ selection: Record<string, string>;
577
+ compare_at_price: number | null;
578
+ featured_image?: string | undefined;
579
+ }[];
580
+ } | undefined;
265
581
  }[];
266
582
  desktopColumns: 2 | 3;
267
583
  heading?: string | undefined;
268
584
  } & MountPlumbing) | null | undefined): () => void;
269
585
  };
586
+ export declare const SyntroPdpMountable: {
587
+ mount(container: HTMLElement, config?: (SyntroPdpProps & MountPlumbing) | null | undefined): () => void;
588
+ };
589
+ export declare const SyntroRecoMountable: {
590
+ mount(container: HTMLElement, config?: ({
591
+ items: {
592
+ pdp_href: string;
593
+ image_url?: string | null | undefined;
594
+ price?: string | null | undefined;
595
+ hook?: string | null | undefined;
596
+ }[];
597
+ heading?: string | null | undefined;
598
+ } & MountPlumbing) | null | undefined): () => void;
599
+ };
270
600
  export declare const runtime: {
271
601
  id: string;
272
602
  version: string;
@@ -278,7 +608,6 @@ export declare const runtime: {
278
608
  component: {
279
609
  mount(container: HTMLElement, config?: ({
280
610
  product: {
281
- id: string;
282
611
  name: string;
283
612
  image: {
284
613
  src: string;
@@ -298,15 +627,11 @@ export declare const runtime: {
298
627
  url?: string | undefined;
299
628
  } | undefined;
300
629
  };
301
- attributes: {
302
- value: string;
303
- label: string;
304
- emphasis: boolean;
305
- }[];
630
+ id: string;
306
631
  ctas: {
307
632
  label: string;
308
- target: "_self" | "_blank";
309
633
  variant: "primary" | "secondary" | "ghost";
634
+ target: "_self" | "_blank";
310
635
  href?: string | undefined;
311
636
  actionId?: string | undefined;
312
637
  }[];
@@ -335,8 +660,80 @@ export declare const runtime: {
335
660
  tone: "neutral" | "primary" | "success" | "warning";
336
661
  } | undefined;
337
662
  framing?: string | undefined;
663
+ identifiers?: {
664
+ sku?: string | undefined;
665
+ gtin?: string | undefined;
666
+ mpn?: string | undefined;
667
+ shopifyHandle?: string | undefined;
668
+ wooSlug?: string | undefined;
669
+ } | undefined;
670
+ brand?: string | undefined;
671
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
672
+ salePrice?: {
673
+ amount: string;
674
+ bind?: {
675
+ type: "dom-selector";
676
+ selector: string;
677
+ } | {
678
+ type: "shopify-ajax";
679
+ handle: string;
680
+ base?: string | undefined;
681
+ } | {
682
+ type: "woocommerce-store-api";
683
+ slug: string;
684
+ base?: string | undefined;
685
+ } | {
686
+ type: "jsonld";
687
+ url?: string | undefined;
688
+ } | undefined;
689
+ cadence?: string | undefined;
690
+ validUntil?: string | undefined;
691
+ } | undefined;
692
+ rating?: {
693
+ value: number;
694
+ count: number;
695
+ max: number;
696
+ } | undefined;
697
+ specs?: {
698
+ name: string;
699
+ value: string;
700
+ section: string;
701
+ emphasis: boolean;
702
+ unit?: string | undefined;
703
+ priority?: number | undefined;
704
+ }[] | undefined;
705
+ labels?: Record<string, string | number | boolean> | undefined;
706
+ attributes?: {
707
+ value: string;
708
+ label: string;
709
+ emphasis: boolean;
710
+ }[] | undefined;
711
+ variants?: {
712
+ attributes: {
713
+ values: {
714
+ label: string;
715
+ id: string;
716
+ swatch: {
717
+ kind: "image" | "color";
718
+ value: string;
719
+ } | null;
720
+ }[];
721
+ kind: "pill" | "swatch";
722
+ label: string;
723
+ key: string;
724
+ }[];
725
+ variants: {
726
+ id: string;
727
+ price: number;
728
+ in_stock: boolean;
729
+ selection: Record<string, string>;
730
+ compare_at_price: number | null;
731
+ featured_image?: string | undefined;
732
+ }[];
733
+ } | undefined;
338
734
  };
339
735
  density: "compact" | "standard";
736
+ visibleFacts?: ("tagline" | "price" | "badge" | "framing" | "availability" | "rating" | "specs")[] | undefined;
340
737
  } & MountPlumbing) | null | undefined): () => void;
341
738
  };
342
739
  metadata: {
@@ -349,7 +746,6 @@ export declare const runtime: {
349
746
  component: {
350
747
  mount(container: HTMLElement, config?: ({
351
748
  products: {
352
- id: string;
353
749
  name: string;
354
750
  image: {
355
751
  src: string;
@@ -369,15 +765,11 @@ export declare const runtime: {
369
765
  url?: string | undefined;
370
766
  } | undefined;
371
767
  };
372
- attributes: {
373
- value: string;
374
- label: string;
375
- emphasis: boolean;
376
- }[];
768
+ id: string;
377
769
  ctas: {
378
770
  label: string;
379
- target: "_self" | "_blank";
380
771
  variant: "primary" | "secondary" | "ghost";
772
+ target: "_self" | "_blank";
381
773
  href?: string | undefined;
382
774
  actionId?: string | undefined;
383
775
  }[];
@@ -406,9 +798,85 @@ export declare const runtime: {
406
798
  tone: "neutral" | "primary" | "success" | "warning";
407
799
  } | undefined;
408
800
  framing?: string | undefined;
801
+ identifiers?: {
802
+ sku?: string | undefined;
803
+ gtin?: string | undefined;
804
+ mpn?: string | undefined;
805
+ shopifyHandle?: string | undefined;
806
+ wooSlug?: string | undefined;
807
+ } | undefined;
808
+ brand?: string | undefined;
809
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
810
+ salePrice?: {
811
+ amount: string;
812
+ bind?: {
813
+ type: "dom-selector";
814
+ selector: string;
815
+ } | {
816
+ type: "shopify-ajax";
817
+ handle: string;
818
+ base?: string | undefined;
819
+ } | {
820
+ type: "woocommerce-store-api";
821
+ slug: string;
822
+ base?: string | undefined;
823
+ } | {
824
+ type: "jsonld";
825
+ url?: string | undefined;
826
+ } | undefined;
827
+ cadence?: string | undefined;
828
+ validUntil?: string | undefined;
829
+ } | undefined;
830
+ rating?: {
831
+ value: number;
832
+ count: number;
833
+ max: number;
834
+ } | undefined;
835
+ specs?: {
836
+ name: string;
837
+ value: string;
838
+ section: string;
839
+ emphasis: boolean;
840
+ unit?: string | undefined;
841
+ priority?: number | undefined;
842
+ }[] | undefined;
843
+ labels?: Record<string, string | number | boolean> | undefined;
844
+ attributes?: {
845
+ value: string;
846
+ label: string;
847
+ emphasis: boolean;
848
+ }[] | undefined;
849
+ variants?: {
850
+ attributes: {
851
+ values: {
852
+ label: string;
853
+ id: string;
854
+ swatch: {
855
+ kind: "image" | "color";
856
+ value: string;
857
+ } | null;
858
+ }[];
859
+ kind: "pill" | "swatch";
860
+ label: string;
861
+ key: string;
862
+ }[];
863
+ variants: {
864
+ id: string;
865
+ price: number;
866
+ in_stock: boolean;
867
+ selection: Record<string, string>;
868
+ compare_at_price: number | null;
869
+ featured_image?: string | undefined;
870
+ }[];
871
+ } | undefined;
409
872
  }[];
410
- expandBehavior: "multi" | "accordion";
411
- defaultExpandedIndex?: number | undefined;
873
+ rows?: {
874
+ label: string;
875
+ valueA: string;
876
+ valueB: string;
877
+ valueC?: string | undefined;
878
+ valueD?: string | undefined;
879
+ }[] | undefined;
412
880
  heading?: string | undefined;
413
881
  } & MountPlumbing) | null | undefined): () => void;
414
882
  };
@@ -422,7 +890,6 @@ export declare const runtime: {
422
890
  component: {
423
891
  mount(container: HTMLElement, config?: ({
424
892
  product: {
425
- id: string;
426
893
  name: string;
427
894
  image: {
428
895
  src: string;
@@ -442,15 +909,11 @@ export declare const runtime: {
442
909
  url?: string | undefined;
443
910
  } | undefined;
444
911
  };
445
- attributes: {
446
- value: string;
447
- label: string;
448
- emphasis: boolean;
449
- }[];
912
+ id: string;
450
913
  ctas: {
451
914
  label: string;
452
- target: "_self" | "_blank";
453
915
  variant: "primary" | "secondary" | "ghost";
916
+ target: "_self" | "_blank";
454
917
  href?: string | undefined;
455
918
  actionId?: string | undefined;
456
919
  }[];
@@ -479,6 +942,77 @@ export declare const runtime: {
479
942
  tone: "neutral" | "primary" | "success" | "warning";
480
943
  } | undefined;
481
944
  framing?: string | undefined;
945
+ identifiers?: {
946
+ sku?: string | undefined;
947
+ gtin?: string | undefined;
948
+ mpn?: string | undefined;
949
+ shopifyHandle?: string | undefined;
950
+ wooSlug?: string | undefined;
951
+ } | undefined;
952
+ brand?: string | undefined;
953
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
954
+ salePrice?: {
955
+ amount: string;
956
+ bind?: {
957
+ type: "dom-selector";
958
+ selector: string;
959
+ } | {
960
+ type: "shopify-ajax";
961
+ handle: string;
962
+ base?: string | undefined;
963
+ } | {
964
+ type: "woocommerce-store-api";
965
+ slug: string;
966
+ base?: string | undefined;
967
+ } | {
968
+ type: "jsonld";
969
+ url?: string | undefined;
970
+ } | undefined;
971
+ cadence?: string | undefined;
972
+ validUntil?: string | undefined;
973
+ } | undefined;
974
+ rating?: {
975
+ value: number;
976
+ count: number;
977
+ max: number;
978
+ } | undefined;
979
+ specs?: {
980
+ name: string;
981
+ value: string;
982
+ section: string;
983
+ emphasis: boolean;
984
+ unit?: string | undefined;
985
+ priority?: number | undefined;
986
+ }[] | undefined;
987
+ labels?: Record<string, string | number | boolean> | undefined;
988
+ attributes?: {
989
+ value: string;
990
+ label: string;
991
+ emphasis: boolean;
992
+ }[] | undefined;
993
+ variants?: {
994
+ attributes: {
995
+ values: {
996
+ label: string;
997
+ id: string;
998
+ swatch: {
999
+ kind: "image" | "color";
1000
+ value: string;
1001
+ } | null;
1002
+ }[];
1003
+ kind: "pill" | "swatch";
1004
+ label: string;
1005
+ key: string;
1006
+ }[];
1007
+ variants: {
1008
+ id: string;
1009
+ price: number;
1010
+ in_stock: boolean;
1011
+ selection: Record<string, string>;
1012
+ compare_at_price: number | null;
1013
+ featured_image?: string | undefined;
1014
+ }[];
1015
+ } | undefined;
482
1016
  };
483
1017
  layout: "image-left" | "image-right" | "image-top";
484
1018
  longCopy?: string | undefined;
@@ -494,7 +1028,6 @@ export declare const runtime: {
494
1028
  component: {
495
1029
  mount(container: HTMLElement, config?: ({
496
1030
  products: {
497
- id: string;
498
1031
  name: string;
499
1032
  image: {
500
1033
  src: string;
@@ -514,15 +1047,11 @@ export declare const runtime: {
514
1047
  url?: string | undefined;
515
1048
  } | undefined;
516
1049
  };
517
- attributes: {
518
- value: string;
519
- label: string;
520
- emphasis: boolean;
521
- }[];
1050
+ id: string;
522
1051
  ctas: {
523
1052
  label: string;
524
- target: "_self" | "_blank";
525
1053
  variant: "primary" | "secondary" | "ghost";
1054
+ target: "_self" | "_blank";
526
1055
  href?: string | undefined;
527
1056
  actionId?: string | undefined;
528
1057
  }[];
@@ -551,6 +1080,77 @@ export declare const runtime: {
551
1080
  tone: "neutral" | "primary" | "success" | "warning";
552
1081
  } | undefined;
553
1082
  framing?: string | undefined;
1083
+ identifiers?: {
1084
+ sku?: string | undefined;
1085
+ gtin?: string | undefined;
1086
+ mpn?: string | undefined;
1087
+ shopifyHandle?: string | undefined;
1088
+ wooSlug?: string | undefined;
1089
+ } | undefined;
1090
+ brand?: string | undefined;
1091
+ availability?: "in_stock" | "preorder" | "backorder" | "out_of_stock" | undefined;
1092
+ salePrice?: {
1093
+ amount: string;
1094
+ bind?: {
1095
+ type: "dom-selector";
1096
+ selector: string;
1097
+ } | {
1098
+ type: "shopify-ajax";
1099
+ handle: string;
1100
+ base?: string | undefined;
1101
+ } | {
1102
+ type: "woocommerce-store-api";
1103
+ slug: string;
1104
+ base?: string | undefined;
1105
+ } | {
1106
+ type: "jsonld";
1107
+ url?: string | undefined;
1108
+ } | undefined;
1109
+ cadence?: string | undefined;
1110
+ validUntil?: string | undefined;
1111
+ } | undefined;
1112
+ rating?: {
1113
+ value: number;
1114
+ count: number;
1115
+ max: number;
1116
+ } | undefined;
1117
+ specs?: {
1118
+ name: string;
1119
+ value: string;
1120
+ section: string;
1121
+ emphasis: boolean;
1122
+ unit?: string | undefined;
1123
+ priority?: number | undefined;
1124
+ }[] | undefined;
1125
+ labels?: Record<string, string | number | boolean> | undefined;
1126
+ attributes?: {
1127
+ value: string;
1128
+ label: string;
1129
+ emphasis: boolean;
1130
+ }[] | undefined;
1131
+ variants?: {
1132
+ attributes: {
1133
+ values: {
1134
+ label: string;
1135
+ id: string;
1136
+ swatch: {
1137
+ kind: "image" | "color";
1138
+ value: string;
1139
+ } | null;
1140
+ }[];
1141
+ kind: "pill" | "swatch";
1142
+ label: string;
1143
+ key: string;
1144
+ }[];
1145
+ variants: {
1146
+ id: string;
1147
+ price: number;
1148
+ in_stock: boolean;
1149
+ selection: Record<string, string>;
1150
+ compare_at_price: number | null;
1151
+ featured_image?: string | undefined;
1152
+ }[];
1153
+ } | undefined;
554
1154
  }[];
555
1155
  desktopColumns: 2 | 3;
556
1156
  heading?: string | undefined;
@@ -561,6 +1161,34 @@ export declare const runtime: {
561
1161
  description: string;
562
1162
  icon: string;
563
1163
  };
1164
+ } | {
1165
+ id: string;
1166
+ component: {
1167
+ mount(container: HTMLElement, config?: (SyntroPdpProps & MountPlumbing) | null | undefined): () => void;
1168
+ };
1169
+ metadata: {
1170
+ name: string;
1171
+ description: string;
1172
+ icon: string;
1173
+ };
1174
+ } | {
1175
+ id: string;
1176
+ component: {
1177
+ mount(container: HTMLElement, config?: ({
1178
+ items: {
1179
+ pdp_href: string;
1180
+ image_url?: string | null | undefined;
1181
+ price?: string | null | undefined;
1182
+ hook?: string | null | undefined;
1183
+ }[];
1184
+ heading?: string | null | undefined;
1185
+ } & MountPlumbing) | null | undefined): () => void;
1186
+ };
1187
+ metadata: {
1188
+ name: string;
1189
+ description: string;
1190
+ icon: string;
1191
+ };
564
1192
  })[];
565
1193
  };
566
1194
  export default runtime;