@gengage/assistant-fe 0.1.0 → 0.1.2

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 (150) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +2 -2
  3. package/dist/assistant-fe.css +1 -1
  4. package/dist/chat/api.d.ts +12 -2
  5. package/dist/chat/api.d.ts.map +1 -1
  6. package/dist/chat/catalog.d.ts +246 -896
  7. package/dist/chat/catalog.d.ts.map +1 -1
  8. package/dist/chat/components/AIGroupingCards.d.ts.map +1 -1
  9. package/dist/chat/components/AISuggestedSearchCards.d.ts.map +1 -1
  10. package/dist/chat/components/AITopPicks.d.ts.map +1 -1
  11. package/dist/chat/components/CategoriesContainer.d.ts.map +1 -1
  12. package/dist/chat/components/ChatDrawer.d.ts +16 -3
  13. package/dist/chat/components/ChatDrawer.d.ts.map +1 -1
  14. package/dist/chat/components/ComparisonTable.d.ts +9 -0
  15. package/dist/chat/components/ComparisonTable.d.ts.map +1 -1
  16. package/dist/chat/components/GroundingReviewCard.d.ts.map +1 -1
  17. package/dist/chat/components/HandoffNotice.d.ts +5 -0
  18. package/dist/chat/components/HandoffNotice.d.ts.map +1 -0
  19. package/dist/chat/components/KvkkBanner.d.ts +1 -0
  20. package/dist/chat/components/KvkkBanner.d.ts.map +1 -1
  21. package/dist/chat/components/ProactivePopup.d.ts +9 -0
  22. package/dist/chat/components/ProactivePopup.d.ts.map +1 -1
  23. package/dist/chat/components/ProductSummaryCard.d.ts +4 -0
  24. package/dist/chat/components/ProductSummaryCard.d.ts.map +1 -0
  25. package/dist/chat/components/ReviewHighlights.d.ts +3 -1
  26. package/dist/chat/components/ReviewHighlights.d.ts.map +1 -1
  27. package/dist/chat/components/ThumbnailsColumn.d.ts.map +1 -1
  28. package/dist/chat/components/renderUISpec.d.ts +4 -3
  29. package/dist/chat/components/renderUISpec.d.ts.map +1 -1
  30. package/dist/chat/heartbeat.d.ts +71 -0
  31. package/dist/chat/heartbeat.d.ts.map +1 -0
  32. package/dist/chat/index.d.ts +39 -78
  33. package/dist/chat/index.d.ts.map +1 -1
  34. package/dist/chat/kvkk.d.ts +21 -0
  35. package/dist/chat/kvkk.d.ts.map +1 -0
  36. package/dist/chat/locales/en.d.ts.map +1 -1
  37. package/dist/chat/locales/tr.d.ts.map +1 -1
  38. package/dist/chat/panel-manager.d.ts +81 -0
  39. package/dist/chat/panel-manager.d.ts.map +1 -0
  40. package/dist/chat/session-persistence.d.ts +56 -0
  41. package/dist/chat/session-persistence.d.ts.map +1 -0
  42. package/dist/chat/types.d.ts +39 -1
  43. package/dist/chat/types.d.ts.map +1 -1
  44. package/dist/chat.cjs +1 -1
  45. package/dist/chat.iife.js +48 -10
  46. package/dist/chat.iife.js.map +1 -1
  47. package/dist/chat.js +9 -8
  48. package/dist/chat.js.map +1 -1
  49. package/dist/common/analytics-events.d.ts +2 -0
  50. package/dist/common/analytics-events.d.ts.map +1 -1
  51. package/dist/common/analytics.d.ts.map +1 -1
  52. package/dist/common/api-paths.d.ts +5 -0
  53. package/dist/common/api-paths.d.ts.map +1 -1
  54. package/dist/common/client.d.ts +4 -1
  55. package/dist/common/client.d.ts.map +1 -1
  56. package/dist/common/communication-bridge.d.ts.map +1 -1
  57. package/dist/common/config-schema.d.ts +33 -195
  58. package/dist/common/config-schema.d.ts.map +1 -1
  59. package/dist/common/ga-datalayer.d.ts +62 -0
  60. package/dist/common/ga-datalayer.d.ts.map +1 -0
  61. package/dist/common/index.d.ts +7 -0
  62. package/dist/common/index.d.ts.map +1 -1
  63. package/dist/common/indexed-db.d.ts +1 -1
  64. package/dist/common/indexed-db.d.ts.map +1 -1
  65. package/dist/common/merchant-configs.d.ts +22 -0
  66. package/dist/common/merchant-configs.d.ts.map +1 -0
  67. package/dist/common/overlay.d.ts +5 -0
  68. package/dist/common/overlay.d.ts.map +1 -1
  69. package/dist/common/page-detect.d.ts +31 -0
  70. package/dist/common/page-detect.d.ts.map +1 -0
  71. package/dist/common/preflight.d.ts +3 -1
  72. package/dist/common/preflight.d.ts.map +1 -1
  73. package/dist/common/price-formatter.d.ts +33 -0
  74. package/dist/common/price-formatter.d.ts.map +1 -0
  75. package/dist/common/product-utils.d.ts +26 -0
  76. package/dist/common/product-utils.d.ts.map +1 -0
  77. package/dist/common/quantity-stepper.d.ts +22 -0
  78. package/dist/common/quantity-stepper.d.ts.map +1 -0
  79. package/dist/common/safe-html.d.ts +10 -6
  80. package/dist/common/safe-html.d.ts.map +1 -1
  81. package/dist/common/streaming.d.ts +6 -0
  82. package/dist/common/streaming.d.ts.map +1 -1
  83. package/dist/common/tts-player.d.ts +12 -0
  84. package/dist/common/tts-player.d.ts.map +1 -0
  85. package/dist/common/types.d.ts +51 -0
  86. package/dist/common/types.d.ts.map +1 -1
  87. package/dist/common/v1-protocol-adapter.d.ts +9 -0
  88. package/dist/common/v1-protocol-adapter.d.ts.map +1 -1
  89. package/dist/common/voice-input.d.ts +74 -0
  90. package/dist/common/voice-input.d.ts.map +1 -0
  91. package/dist/common/widget-base.d.ts +18 -1
  92. package/dist/common/widget-base.d.ts.map +1 -1
  93. package/dist/common.cjs +1 -1
  94. package/dist/common.cjs.map +1 -1
  95. package/dist/common.js +564 -244
  96. package/dist/common.js.map +1 -1
  97. package/dist/index-CXbH-cw8.js +4337 -0
  98. package/dist/index-CXbH-cw8.js.map +1 -0
  99. package/dist/index-DHfTHscz.cjs +13 -0
  100. package/dist/index-DHfTHscz.cjs.map +1 -0
  101. package/dist/index.cjs +1 -1
  102. package/dist/index.d.ts +2 -2
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +61 -53
  105. package/dist/qna/catalog.d.ts +30 -96
  106. package/dist/qna/catalog.d.ts.map +1 -1
  107. package/dist/qna/components/TextInput.d.ts.map +1 -1
  108. package/dist/qna/components/renderUISpec.d.ts.map +1 -1
  109. package/dist/qna/index.d.ts +2 -0
  110. package/dist/qna/index.d.ts.map +1 -1
  111. package/dist/qna.cjs +1 -1
  112. package/dist/qna.cjs.map +1 -1
  113. package/dist/qna.iife.js +46 -8
  114. package/dist/qna.iife.js.map +1 -1
  115. package/dist/qna.js +94 -86
  116. package/dist/qna.js.map +1 -1
  117. package/dist/quantity-stepper-B8kX8GbN.js +209 -0
  118. package/dist/quantity-stepper-B8kX8GbN.js.map +1 -0
  119. package/dist/quantity-stepper-UbAp53Ow.cjs +2 -0
  120. package/dist/quantity-stepper-UbAp53Ow.cjs.map +1 -0
  121. package/dist/schemas-CPkzbgia.js +4572 -0
  122. package/dist/schemas-CPkzbgia.js.map +1 -0
  123. package/dist/schemas-tCxs1sED.cjs +86 -0
  124. package/dist/schemas-tCxs1sED.cjs.map +1 -0
  125. package/dist/simrel/api.d.ts.map +1 -1
  126. package/dist/simrel/catalog.d.ts +32 -240
  127. package/dist/simrel/catalog.d.ts.map +1 -1
  128. package/dist/simrel/components/GroupTabs.d.ts.map +1 -1
  129. package/dist/simrel/components/ProductCard.d.ts +2 -0
  130. package/dist/simrel/components/ProductCard.d.ts.map +1 -1
  131. package/dist/simrel/components/renderUISpec.d.ts.map +1 -1
  132. package/dist/simrel/index.d.ts.map +1 -1
  133. package/dist/simrel/types.d.ts +5 -0
  134. package/dist/simrel/types.d.ts.map +1 -1
  135. package/dist/simrel.cjs +1 -1
  136. package/dist/simrel.cjs.map +1 -1
  137. package/dist/simrel.css +1 -1
  138. package/dist/simrel.iife.js +46 -8
  139. package/dist/simrel.iife.js.map +1 -1
  140. package/dist/simrel.js +319 -279
  141. package/dist/simrel.js.map +1 -1
  142. package/package.json +28 -8
  143. package/dist/index-CFA70IGF.js +0 -3626
  144. package/dist/index-CFA70IGF.js.map +0 -1
  145. package/dist/index-Dfl89zpe.cjs +0 -13
  146. package/dist/index-Dfl89zpe.cjs.map +0 -1
  147. package/dist/types-CeON7iBO.cjs +0 -48
  148. package/dist/types-CeON7iBO.cjs.map +0 -1
  149. package/dist/types-yxW8WA7u.js +0 -4132
  150. package/dist/types-yxW8WA7u.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/simrel/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA6BD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsB9B;AAuCD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAsBzB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/simrel/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA6BD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B;AAuCD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CA0BzB"}
@@ -1,14 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  export declare const ProductGridSchema: z.ZodObject<{
3
- layout: z.ZodOptional<z.ZodEnum<["grid", "carousel"]>>;
3
+ layout: z.ZodOptional<z.ZodEnum<{
4
+ grid: "grid";
5
+ carousel: "carousel";
6
+ }>>;
4
7
  columns: z.ZodOptional<z.ZodNumber>;
5
- }, "strip", z.ZodTypeAny, {
6
- layout?: "grid" | "carousel" | undefined;
7
- columns?: number | undefined;
8
- }, {
9
- layout?: "grid" | "carousel" | undefined;
10
- columns?: number | undefined;
11
- }>;
8
+ }, z.core.$strip>;
12
9
  export declare const ProductCardSchema: z.ZodObject<{
13
10
  product: z.ZodObject<{
14
11
  sku: z.ZodString;
@@ -21,75 +18,18 @@ export declare const ProductCardSchema: z.ZodObject<{
21
18
  brand: z.ZodOptional<z.ZodString>;
22
19
  rating: z.ZodOptional<z.ZodNumber>;
23
20
  reviewCount: z.ZodOptional<z.ZodNumber>;
24
- }, "strip", z.ZodTypeAny, {
25
- sku: string;
26
- url: string;
27
- name: string;
28
- price?: string | undefined;
29
- reviewCount?: number | undefined;
30
- brand?: string | undefined;
31
- imageUrl?: string | undefined;
32
- rating?: number | undefined;
33
- originalPrice?: string | undefined;
34
- discountPercent?: number | undefined;
35
- }, {
36
- sku: string;
37
- url: string;
38
- name: string;
39
- price?: string | undefined;
40
- reviewCount?: number | undefined;
41
- brand?: string | undefined;
42
- imageUrl?: string | undefined;
43
- rating?: number | undefined;
44
- originalPrice?: string | undefined;
45
- discountPercent?: number | undefined;
46
- }>;
21
+ }, z.core.$strip>;
47
22
  index: z.ZodNumber;
48
- discountType: z.ZodOptional<z.ZodEnum<["strike-through", "badge"]>>;
49
- }, "strip", z.ZodTypeAny, {
50
- product: {
51
- sku: string;
52
- url: string;
53
- name: string;
54
- price?: string | undefined;
55
- reviewCount?: number | undefined;
56
- brand?: string | undefined;
57
- imageUrl?: string | undefined;
58
- rating?: number | undefined;
59
- originalPrice?: string | undefined;
60
- discountPercent?: number | undefined;
61
- };
62
- index: number;
63
- discountType?: "strike-through" | "badge" | undefined;
64
- }, {
65
- product: {
66
- sku: string;
67
- url: string;
68
- name: string;
69
- price?: string | undefined;
70
- reviewCount?: number | undefined;
71
- brand?: string | undefined;
72
- imageUrl?: string | undefined;
73
- rating?: number | undefined;
74
- originalPrice?: string | undefined;
75
- discountPercent?: number | undefined;
76
- };
77
- index: number;
78
- discountType?: "strike-through" | "badge" | undefined;
79
- }>;
23
+ discountType: z.ZodOptional<z.ZodEnum<{
24
+ "strike-through": "strike-through";
25
+ badge: "badge";
26
+ }>>;
27
+ }, z.core.$strip>;
80
28
  export declare const AddToCartButtonSchema: z.ZodObject<{
81
29
  sku: z.ZodString;
82
30
  label: z.ZodOptional<z.ZodString>;
83
31
  cartCode: z.ZodString;
84
- }, "strip", z.ZodTypeAny, {
85
- sku: string;
86
- cartCode: string;
87
- label?: string | undefined;
88
- }, {
89
- sku: string;
90
- cartCode: string;
91
- label?: string | undefined;
92
- }>;
32
+ }, z.core.$strip>;
93
33
  export declare const QuickActionsSchema: z.ZodObject<{
94
34
  actions: z.ZodArray<z.ZodObject<{
95
35
  label: z.ZodString;
@@ -97,69 +37,22 @@ export declare const QuickActionsSchema: z.ZodObject<{
97
37
  title: z.ZodString;
98
38
  type: z.ZodString;
99
39
  payload: z.ZodOptional<z.ZodUnknown>;
100
- }, "strip", z.ZodTypeAny, {
101
- type: string;
102
- title: string;
103
- payload?: unknown;
104
- }, {
105
- type: string;
106
- title: string;
107
- payload?: unknown;
108
- }>;
109
- }, "strip", z.ZodTypeAny, {
110
- label: string;
111
- action: {
112
- type: string;
113
- title: string;
114
- payload?: unknown;
115
- };
116
- }, {
117
- label: string;
118
- action: {
119
- type: string;
120
- title: string;
121
- payload?: unknown;
122
- };
123
- }>, "many">;
124
- }, "strip", z.ZodTypeAny, {
125
- actions: {
126
- label: string;
127
- action: {
128
- type: string;
129
- title: string;
130
- payload?: unknown;
131
- };
132
- }[];
133
- }, {
134
- actions: {
135
- label: string;
136
- action: {
137
- type: string;
138
- title: string;
139
- payload?: unknown;
140
- };
141
- }[];
142
- }>;
40
+ }, z.core.$strip>;
41
+ }, z.core.$strip>>;
42
+ }, z.core.$strip>;
143
43
  export declare const EmptyStateSchema: z.ZodObject<{
144
44
  message: z.ZodOptional<z.ZodString>;
145
- }, "strip", z.ZodTypeAny, {
146
- message?: string | undefined;
147
- }, {
148
- message?: string | undefined;
149
- }>;
45
+ }, z.core.$strip>;
150
46
  export declare const simRelCatalog: {
151
47
  readonly components: {
152
48
  readonly ProductGrid: {
153
49
  readonly schema: z.ZodObject<{
154
- layout: z.ZodOptional<z.ZodEnum<["grid", "carousel"]>>;
50
+ layout: z.ZodOptional<z.ZodEnum<{
51
+ grid: "grid";
52
+ carousel: "carousel";
53
+ }>>;
155
54
  columns: z.ZodOptional<z.ZodNumber>;
156
- }, "strip", z.ZodTypeAny, {
157
- layout?: "grid" | "carousel" | undefined;
158
- columns?: number | undefined;
159
- }, {
160
- layout?: "grid" | "carousel" | undefined;
161
- columns?: number | undefined;
162
- }>;
55
+ }, z.core.$strip>;
163
56
  readonly description: "Outer grid or carousel container for similar products.";
164
57
  };
165
58
  readonly ProductCard: {
@@ -175,62 +68,13 @@ export declare const simRelCatalog: {
175
68
  brand: z.ZodOptional<z.ZodString>;
176
69
  rating: z.ZodOptional<z.ZodNumber>;
177
70
  reviewCount: z.ZodOptional<z.ZodNumber>;
178
- }, "strip", z.ZodTypeAny, {
179
- sku: string;
180
- url: string;
181
- name: string;
182
- price?: string | undefined;
183
- reviewCount?: number | undefined;
184
- brand?: string | undefined;
185
- imageUrl?: string | undefined;
186
- rating?: number | undefined;
187
- originalPrice?: string | undefined;
188
- discountPercent?: number | undefined;
189
- }, {
190
- sku: string;
191
- url: string;
192
- name: string;
193
- price?: string | undefined;
194
- reviewCount?: number | undefined;
195
- brand?: string | undefined;
196
- imageUrl?: string | undefined;
197
- rating?: number | undefined;
198
- originalPrice?: string | undefined;
199
- discountPercent?: number | undefined;
200
- }>;
71
+ }, z.core.$strip>;
201
72
  index: z.ZodNumber;
202
- discountType: z.ZodOptional<z.ZodEnum<["strike-through", "badge"]>>;
203
- }, "strip", z.ZodTypeAny, {
204
- product: {
205
- sku: string;
206
- url: string;
207
- name: string;
208
- price?: string | undefined;
209
- reviewCount?: number | undefined;
210
- brand?: string | undefined;
211
- imageUrl?: string | undefined;
212
- rating?: number | undefined;
213
- originalPrice?: string | undefined;
214
- discountPercent?: number | undefined;
215
- };
216
- index: number;
217
- discountType?: "strike-through" | "badge" | undefined;
218
- }, {
219
- product: {
220
- sku: string;
221
- url: string;
222
- name: string;
223
- price?: string | undefined;
224
- reviewCount?: number | undefined;
225
- brand?: string | undefined;
226
- imageUrl?: string | undefined;
227
- rating?: number | undefined;
228
- originalPrice?: string | undefined;
229
- discountPercent?: number | undefined;
230
- };
231
- index: number;
232
- discountType?: "strike-through" | "badge" | undefined;
233
- }>;
73
+ discountType: z.ZodOptional<z.ZodEnum<{
74
+ "strike-through": "strike-through";
75
+ badge: "badge";
76
+ }>>;
77
+ }, z.core.$strip>;
234
78
  readonly description: "A single product card with image, title, price, and actions.";
235
79
  };
236
80
  readonly AddToCartButton: {
@@ -238,15 +82,7 @@ export declare const simRelCatalog: {
238
82
  sku: z.ZodString;
239
83
  label: z.ZodOptional<z.ZodString>;
240
84
  cartCode: z.ZodString;
241
- }, "strip", z.ZodTypeAny, {
242
- sku: string;
243
- cartCode: string;
244
- label?: string | undefined;
245
- }, {
246
- sku: string;
247
- cartCode: string;
248
- label?: string | undefined;
249
- }>;
85
+ }, z.core.$strip>;
250
86
  readonly description: "Add-to-cart CTA rendered inside or below a product card.";
251
87
  };
252
88
  readonly QuickActions: {
@@ -257,59 +93,15 @@ export declare const simRelCatalog: {
257
93
  title: z.ZodString;
258
94
  type: z.ZodString;
259
95
  payload: z.ZodOptional<z.ZodUnknown>;
260
- }, "strip", z.ZodTypeAny, {
261
- type: string;
262
- title: string;
263
- payload?: unknown;
264
- }, {
265
- type: string;
266
- title: string;
267
- payload?: unknown;
268
- }>;
269
- }, "strip", z.ZodTypeAny, {
270
- label: string;
271
- action: {
272
- type: string;
273
- title: string;
274
- payload?: unknown;
275
- };
276
- }, {
277
- label: string;
278
- action: {
279
- type: string;
280
- title: string;
281
- payload?: unknown;
282
- };
283
- }>, "many">;
284
- }, "strip", z.ZodTypeAny, {
285
- actions: {
286
- label: string;
287
- action: {
288
- type: string;
289
- title: string;
290
- payload?: unknown;
291
- };
292
- }[];
293
- }, {
294
- actions: {
295
- label: string;
296
- action: {
297
- type: string;
298
- title: string;
299
- payload?: unknown;
300
- };
301
- }[];
302
- }>;
96
+ }, z.core.$strip>;
97
+ }, z.core.$strip>>;
98
+ }, z.core.$strip>;
303
99
  readonly description: "A row of quick-action buttons below product info.";
304
100
  };
305
101
  readonly EmptyState: {
306
102
  readonly schema: z.ZodObject<{
307
103
  message: z.ZodOptional<z.ZodString>;
308
- }, "strip", z.ZodTypeAny, {
309
- message?: string | undefined;
310
- }, {
311
- message?: string | undefined;
312
- }>;
104
+ }, z.core.$strip>;
313
105
  readonly description: "Empty state shown when no similar products are available.";
314
106
  };
315
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/simrel/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/simrel/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,iBAAiB;;;;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;iBAI5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAW7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupTabs.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/GroupTabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,WAAW,CA2EtE"}
1
+ {"version":3,"file":"GroupTabs.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/GroupTabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,WAAW,CAqHtE"}
@@ -1,5 +1,6 @@
1
1
  import { NormalizedProduct } from '../../common/v1-protocol-adapter.js';
2
2
  import { SimRelI18n } from '../types.js';
3
+ import { PriceFormatConfig } from '../../common/price-formatter.js';
3
4
  export interface ProductCardOptions {
4
5
  product: NormalizedProduct;
5
6
  index: number;
@@ -12,6 +13,7 @@ export interface ProductCardOptions {
12
13
  }) => void;
13
14
  renderCard?: (product: NormalizedProduct, index: number) => string;
14
15
  i18n?: SimRelI18n;
16
+ pricing?: PriceFormatConfig;
15
17
  }
16
18
  export declare function renderProductCard(options: ProductCardOptions): HTMLElement;
17
19
  //# sourceMappingURL=ProductCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/ProductCard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAwH1E"}
1
+ {"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/ProductCard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMzE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAyH1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderUISpec.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/renderUISpec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAkB,MAAM,aAAa,CAAC;AAK7E,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;AA4LhF,eAAO,MAAM,kCAAkC,EAAE,wBAAwB,CAAC,yBAAyB,CAgBlG,CAAC;AAEF,wBAAgB,iCAAiC,IAAI,oBAAoB,CAExE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,yBAAyB,EAClC,QAAQ,uBAAkC,EAC1C,eAAe,GAAE,wBAAwB,CAAC,yBAAyB,CAAsC,GACxG,WAAW,CAQb"}
1
+ {"version":3,"file":"renderUISpec.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/renderUISpec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAkB,MAAM,aAAa,CAAC;AAK7E,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;AA6LhF,eAAO,MAAM,kCAAkC,EAAE,wBAAwB,CAAC,yBAAyB,CAgBlG,CAAC;AAEF,wBAAgB,iCAAiC,IAAI,oBAAoB,CAExE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,yBAAyB,EAClC,QAAQ,uBAAkC,EAC1C,eAAe,GAAE,wBAAwB,CAAC,yBAAyB,CAAsC,GACxG,WAAW,CAQb"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simrel/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAI1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAgBtD,OAAO,KAAK,EAAE,kBAAkB,EAAyD,MAAM,YAAY,CAAC;AAG5G,OAAO,yBAAyB,CAAC;AAEjC,qBAAa,aAAc,SAAQ,UAAU,CAAC,kBAAkB,CAAC;IAC/D,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,KAAK,CAA8B;cAE3B,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAOvD,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB,SAAS,CAAC,MAAM,IAAI,IAAI;IAIxB,SAAS,CAAC,SAAS,IAAI,IAAI;IAY3B,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IA4BrD,gBAAgB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAoBnF,OAAO,CAAC,MAAM;YAKA,eAAe;IA2H7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,gBAAgB;CAiBzB;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAED,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simrel/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAI1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAgBtD,OAAO,KAAK,EAAE,kBAAkB,EAAyD,MAAM,YAAY,CAAC;AAI5G,OAAO,yBAAyB,CAAC;AAEjC,qBAAa,aAAc,SAAQ,UAAU,CAAC,kBAAkB,CAAC;IAC/D,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,KAAK,CAA8B;cAE3B,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAOvD,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB,SAAS,CAAC,MAAM,IAAI,IAAI;IAIxB,SAAS,CAAC,SAAS,IAAI,IAAI;IAY3B,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IA6BrD,gBAAgB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAqBnF,OAAO,CAAC,MAAM;YAKA,eAAe;IAuJ7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,gBAAgB;CAiBzB;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAED,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -62,6 +62,10 @@ export interface SimRelI18n {
62
62
  similarProductsAriaLabel: string;
63
63
  emptyStateMessage: string;
64
64
  addToCartButton: string;
65
+ /**
66
+ * @deprecated Prefer `pricing` config on the widget for locale-aware formatting.
67
+ * Kept for backwards compatibility with existing custom integrations.
68
+ */
65
69
  priceSuffix: string;
66
70
  }
67
71
  export interface SimRelUISpecRenderContext {
@@ -75,6 +79,7 @@ export interface SimRelUISpecRenderContext {
75
79
  discountType?: 'strike-through' | 'badge';
76
80
  renderCard?: (product: SimilarProduct, index: number) => string;
77
81
  i18n: SimRelI18n;
82
+ pricing?: import('../common/price-formatter.js').PriceFormatConfig;
78
83
  }
79
84
  export type SimRelRendererConfig = UISpecRendererOverrides<SimRelUISpecRenderContext>;
80
85
  export interface SimRelUIComponents {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/simrel/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/simrel/types.ts"],"names":[],"mappings":"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"}
package/dist/simrel.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./types-CeON7iBO.cjs");function v(n){const e=n.headers.get("Content-Type")??"";return e.includes("application/x-ndjson")||e.includes("text/event-stream")}async function w(n,e){const t=[],r={onEvent:i=>{const o=a.adaptV1Event(i);if(!(!o||o.type!=="ui_spec")){for(const s of Object.values(o.spec.elements))if(s.type==="ProductCard"&&s.props){const c=s.props.product??s.props;typeof c.sku=="string"&&typeof c.name=="string"&&t.push(c)}}}};return e!==void 0&&(r.signal=e),await a.consumeStream(n,r),t}async function R(n,e,t){const r=a.buildChatEndpointUrl("similar_products",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const o=await fetch(r,i);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);if(v(o))return w(o,t);const s=await o.text();return s?a.normalizeSimilarProductsResponse(JSON.parse(s)):[]}async function N(n,e){const t=[];let r=null;const i={onEvent:o=>{const s=a.adaptV1Event(o);if(s){if(s.type==="metadata"&&s.meta){const c=s.meta.group_name;if(typeof c=="string"){r={name:c,products:[]};const l=s.meta.highlight;typeof l=="string"&&(r.highlight=l),t.push(r)}}if(s.type==="ui_spec"&&r){for(const c of Object.values(s.spec.elements))if(c.type==="ProductCard"&&c.props){const l=c.props.product??c.props;typeof l.sku=="string"&&typeof l.name=="string"&&r.products.push(l)}}}}};return e!==void 0&&(i.signal=e),await a.consumeStream(n,i),t}async function I(n,e,t){const r=a.buildChatEndpointUrl("product_groupings",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const o=await fetch(r,i);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);if(v(o))return N(o,t);const s=await o.text();return s?a.normalizeProductGroupingsResponse(JSON.parse(s)):[]}function E(n){const{product:e,index:t,discountType:r,onClick:i,onAddToCart:o,renderCard:s}=n,c=n.i18n,l=c?.priceSuffix??" TL";if(s){const d=document.createElement("div");return d.className="gengage-simrel-card gengage-simrel-card--custom",d.innerHTML=s(e,t),d.addEventListener("click",f=>{f.target.closest(".gengage-simrel-atc")||i(e)}),d}const u=document.createElement("article");u.className="gengage-simrel-card",u.setAttribute("role","listitem"),u.dataset.sku=e.sku;const p=document.createElement("div");if(p.className="gengage-simrel-card-image",e.imageUrl){const d=document.createElement("img");d.src=e.imageUrl,d.alt=e.name,d.loading="lazy",p.appendChild(d)}if(r==="badge"&&e.discountPercent&&e.discountPercent>0){const d=document.createElement("span");d.className="gengage-simrel-badge",d.textContent=`%${e.discountPercent}`,p.appendChild(d)}u.appendChild(p);const g=document.createElement("div");if(g.className="gengage-simrel-card-info",e.brand){const d=document.createElement("div");d.className="gengage-simrel-card-brand",d.textContent=e.brand,g.appendChild(d)}const m=document.createElement("div");if(m.className="gengage-simrel-card-name",m.textContent=e.name,g.appendChild(m),e.rating!=null&&e.rating>0){const d=document.createElement("div");d.className="gengage-simrel-card-rating";const f="★".repeat(Math.round(e.rating))+"☆".repeat(5-Math.round(e.rating));if(d.textContent=f,e.reviewCount!=null){const y=document.createElement("span");y.className="gengage-simrel-card-review-count",y.textContent=` (${e.reviewCount})`,d.appendChild(y)}g.appendChild(d)}const h=document.createElement("div");if(h.className="gengage-simrel-card-price",e.originalPrice&&e.originalPrice!==e.price&&(r==="strike-through"||!r)){const d=document.createElement("span");d.className="gengage-simrel-card-price-original",d.textContent=e.originalPrice+l,h.appendChild(d)}if(e.price){const d=document.createElement("span");d.className="gengage-simrel-card-price-current",d.textContent=e.price+l,h.appendChild(d)}if(g.appendChild(h),u.appendChild(g),e.cartCode){const d=document.createElement("button");d.className="gengage-simrel-atc",d.type="button",d.textContent=c?.addToCartButton??"Sepete Ekle",d.addEventListener("click",f=>{f.stopPropagation(),o({sku:e.sku,quantity:1,cartCode:e.cartCode})}),u.appendChild(d)}return u.addEventListener("click",d=>{d.target.closest(".gengage-simrel-atc")||i(e)}),u}function b(n){const e=document.createElement("div");e.className="gengage-simrel-grid",e.setAttribute("role","list"),e.setAttribute("aria-label",n.i18n?.similarProductsAriaLabel??"Similar products"),n.columns&&e.style.setProperty("--gengage-simrel-columns",String(n.columns));for(let t=0;t<n.products.length;t++){const i={product:n.products[t],index:t,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(i.i18n=n.i18n),n.discountType!==void 0&&(i.discountType=n.discountType),n.renderCard!==void 0&&(i.renderCard=n.renderCard);const o=E(i);e.appendChild(o)}if(n.products.length===0){const t=document.createElement("div");t.className="gengage-simrel-empty",t.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",e.appendChild(t)}return e}function U(n){const e=document.createElement("div");if(e.className="gengage-simrel-groups",n.groups.length===0){const c=document.createElement("div");return c.className="gengage-simrel-empty",c.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",e.appendChild(c),e}const t=document.createElement("div");t.className="gengage-simrel-tabs",t.setAttribute("role","tablist");const r=document.createElement("div");r.className="gengage-simrel-tab-content";for(let c=0;c<n.groups.length;c++){const l=n.groups[c],u=document.createElement("button");u.className="gengage-simrel-tab",u.type="button",u.textContent=l.name,u.setAttribute("role","tab"),u.setAttribute("aria-selected",c===0?"true":"false"),c===0&&u.classList.add("gengage-simrel-tab--active"),u.addEventListener("click",()=>{const p=t.querySelector(".gengage-simrel-tab--active");p?.classList.remove("gengage-simrel-tab--active"),p?.setAttribute("aria-selected","false"),u.classList.add("gengage-simrel-tab--active"),u.setAttribute("aria-selected","true"),r.innerHTML="";const g={products:l.products,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(g.i18n=n.i18n),n.discountType!==void 0&&(g.discountType=n.discountType),n.renderCard!==void 0&&(g.renderCard=n.renderCard);const m=b(g);r.appendChild(m)}),t.appendChild(u)}e.appendChild(t);const o={products:n.groups[0].products,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(o.i18n=n.i18n),n.discountType!==void 0&&(o.discountType=n.discountType),n.renderCard!==void 0&&(o.renderCard=n.renderCard);const s=b(o);return r.appendChild(s),e.appendChild(r),e}function T(n){if(!n||typeof n!="object")return null;const e=n;if(typeof e.sku!="string"||typeof e.name!="string"||typeof e.url!="string")return null;const t={sku:e.sku,name:e.name,url:e.url},r=e.imageUrl;typeof r=="string"&&(t.imageUrl=r);const i=e.price;typeof i=="string"&&(t.price=i);const o=e.originalPrice;typeof o=="string"&&(t.originalPrice=o);const s=e.discountPercent;typeof s=="number"&&(t.discountPercent=s);const c=e.brand;typeof c=="string"&&(t.brand=c);const l=e.rating;typeof l=="number"&&(t.rating=l);const u=e.reviewCount;typeof u=="number"&&(t.reviewCount=u);const p=e.cartCode;typeof p=="string"&&(t.cartCode=p);const g=e.inStock;return typeof g=="boolean"&&(t.inStock=g),t}function x(n){if(!n||typeof n!="object")return null;const e=n,t=e.title,r=e.type;if(typeof t!="string"||typeof r!="string")return null;const i={title:t,type:r};return e.payload!==void 0&&(i.payload=e.payload),i}const _={ProductGrid:({element:n,renderElement:e})=>{const t=document.createElement("div");t.className="gengage-simrel-grid",t.setAttribute("role","list");const r=n.props?.columns;typeof r=="number"&&Number.isFinite(r)&&r>0&&t.style.setProperty("--gengage-simrel-columns",String(r));for(const i of n.children??[]){const o=e(i);o&&t.appendChild(o)}if(t.children.length===0){const i=document.createElement("div");i.className="gengage-simrel-empty",i.textContent="Benzer ürün bulunamadı.",t.appendChild(i)}return t},ProductCard:({element:n,context:e})=>{const t=n.props?.product??n.props,r=T(t);if(!r)return null;const i=n.props?.index,o=typeof i=="number"&&Number.isFinite(i)?i:0,s=n.props?.discountType,c=s==="strike-through"||s==="badge"?s:e.discountType,l={product:r,index:o,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return c!==void 0&&(l.discountType=c),e.renderCard!==void 0&&(l.renderCard=e.renderCard),E(l)},GroupTabs:({element:n,context:e})=>{const t=n.props?.groups;if(!Array.isArray(t))return null;const r=[];for(const o of t){if(!o||typeof o!="object")continue;const s=o;if(typeof s.name!="string")continue;const c=[];if(Array.isArray(s.products))for(const u of s.products){const p=T(u);p&&c.push(p)}const l={name:s.name,products:c};typeof s.highlight=="string"&&(l.highlight=s.highlight),r.push(l)}const i={groups:r,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),U(i)},EmptyState:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-empty";const r=n.props?.message;return t.textContent=typeof r=="string"?r:e.i18n.emptyStateMessage,t},AddToCartButton:({element:n,context:e})=>{const t=n.props?.sku,r=n.props?.cartCode;if(typeof t!="string"||typeof r!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc",i.type="button";const o=n.props?.label;return i.textContent=typeof o=="string"?o:e.i18n.addToCartButton,i.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),e.onAddToCart({sku:t,quantity:1,cartCode:r})}),i},QuickActions:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-quick-actions";const r=n.props?.actions;if(!Array.isArray(r)||!e.onAction)return t;for(const i of r){if(!i||typeof i!="object")continue;const o=i,s=o.label,c=x(o.action);if(typeof s!="string"||!c)continue;const l=document.createElement("button");l.className="gengage-simrel-quick-action",l.type="button",l.textContent=s,l.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),e.onAction?.(c)}),t.appendChild(l)}return t}},C=({element:n,renderElement:e})=>{if(!n.children||n.children.length===0)return null;const t=document.createElement("div");for(const r of n.children){const i=e(r);i&&t.appendChild(i)}return t};function S(){return{..._}}function k(n,e,t=_,r=C){return a.renderUISpecWithRegistry({spec:n,context:e,registry:t,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}const P={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",priceSuffix:" TL"},L={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",priceSuffix:""};function G(n){return n?n.toLowerCase().split("-")[0]??"tr":"tr"}function j(n){return G(n)==="en"?L:P}const M=a.objectType({sku:a.stringType(),name:a.stringType(),imageUrl:a.stringType().url().optional(),price:a.stringType().optional(),originalPrice:a.stringType().optional(),discountPercent:a.numberType().optional(),url:a.stringType().url(),brand:a.stringType().optional(),rating:a.numberType().min(0).max(5).optional(),reviewCount:a.numberType().int().nonnegative().optional()}),O=a.objectType({layout:a.enumType(["grid","carousel"]).optional(),columns:a.numberType().int().positive().optional()}),B=a.objectType({product:M,index:a.numberType().int().nonnegative(),discountType:a.enumType(["strike-through","badge"]).optional()}),q=a.objectType({sku:a.stringType(),label:a.stringType().optional(),cartCode:a.stringType()}),D=a.objectType({actions:a.arrayType(a.objectType({label:a.stringType(),action:a.objectType({title:a.stringType(),type:a.stringType(),payload:a.unknownType().optional()})}))}),z=a.objectType({message:a.stringType().optional()}),H={components:{ProductGrid:{schema:O,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:B,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:q,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:D,description:"A row of quick-action buttons below product info."},EmptyState:{schema:z,description:"Empty state shown when no similar products are available."}}};class A extends a.BaseWidget{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=P}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),this.isVisible=!0}onUpdate(e){const t=e.sku;!t||t===this._lastSku||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;const r=this.config.session?.sessionId??null;a.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r}),this.config.onProductNavigate?.(e.url,e.sku,r)}_handleAddToCart(e){this.config.onAddToCart?.(e),a.dispatch("gengage:similar:add-to-cart",e),this.track(a.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(e){if(this._abort(),this._abortController=new AbortController,!this._contentEl)return;this._contentEl.innerHTML="";const t=document.createElement("div");t.className="gengage-simrel-loading";const r=document.createElement("div");r.className="gengage-simrel-spinner",t.appendChild(r),this._contentEl.appendChild(t);const i={middlewareUrl:this.config.middlewareUrl},o=crypto.randomUUID(),s=Date.now();this.track(a.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:o,widget:"simrel"}));try{const c={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(c.domain=this.config.domain);const l=await R(c,i,this._abortController.signal);if(!this._contentEl)return;if(this._contentEl.innerHTML="",l.length>0)try{const u=l.map(g=>g.sku),p=await I({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:u},i,this._abortController.signal);if(p.length>0&&this._contentEl){const g=this._buildGroupsSpec(p),m=this._renderUISpec(g);this._contentEl.appendChild(m);return}}catch{}if(this._contentEl){const u=this._buildProductsSpec(l),p=this._renderUISpec(u);this._contentEl.appendChild(p)}this.track(a.streamDoneEvent(this.analyticsContext(),{request_id:o,latency_ms:Date.now()-s,chunk_count:l.length,widget:"simrel"})),this.track(a.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:l.length,history_ref:o,redaction_level:"none",widget:"simrel"}))}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;a.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:a.getGlobalErrorMessage(this.config.locale)}),this.track(a.streamErrorEvent(this.analyticsContext(),{request_id:o,error_code:"FETCH_ERROR",error_message:c instanceof Error?c.message:String(c),widget:"simrel"})),this._contentEl&&(this._contentEl.innerHTML="",this._contentEl.style.display="none")}}_resolveI18n(e){return{...j(e.locale),...e.i18n}}_resolveUISpecRegistry(){const e=S();return a.mergeUISpecRegistry(e,this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};return this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??C,o=(l,u)=>k(l,u,t,i),s=this.config.renderer?.renderUISpec;return s?s(e,r,{registry:t,unknownRenderer:i,defaultRender:o}):o(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const o=e[i],s=`product-${i}`;r.push(s),t[s]={type:"ProductCard",props:{product:o,index:i,discountType:this.config.discountType}}}return t.root={type:"ProductGrid",props:{layout:"grid"},children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}}function F(){return new A}exports.GengageSimRel=A;exports.createDefaultSimRelUISpecRegistry=S;exports.createSimRelWidget=F;exports.defaultSimRelUnknownUISpecRenderer=C;exports.renderSimRelUISpec=k;exports.simRelCatalog=H;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./schemas-tCxs1sED.cjs"),C=require("./quantity-stepper-UbAp53Ow.cjs");function S(n){const e=n.headers.get("Content-Type")??"";return e.includes("application/x-ndjson")||e.includes("text/event-stream")}async function I(n,e){const t=[],r={onEvent:i=>{const s=c.adaptV1Event(i);if(!(!s||s.type!=="ui_spec")){for(const a of Object.values(s.spec.elements))if(a.type==="ProductCard"&&a.props){const u=a.props.product??a.props;typeof u.sku=="string"&&typeof u.name=="string"&&t.push(u)}}}};return e!==void 0&&(r.signal=e),await c.consumeStream(n,r),t}async function N(n,e,t){const r=c.buildChatEndpointUrl("similar_products",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const s=await fetch(r,i);if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);if(S(s))return I(s,t);const a=await s.text();if(!a)return[];try{return c.normalizeSimilarProductsResponse(JSON.parse(a))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function U(n,e){const t=[];let r=null;const i={onEvent:s=>{const a=c.adaptV1Event(s);if(a){if(a.type==="metadata"&&a.meta){const u=a.meta.group_name;if(typeof u=="string"){r={name:u,products:[]};const l=a.meta.highlight;typeof l=="string"&&(r.highlight=l),t.push(r)}}if(a.type==="ui_spec"&&r){for(const u of Object.values(a.spec.elements))if(u.type==="ProductCard"&&u.props){const l=u.props.product??u.props;typeof l.sku=="string"&&typeof l.name=="string"&&r.products.push(l)}}}}};return e!==void 0&&(i.signal=e),await c.consumeStream(n,i),t}async function x(n,e,t){const r=c.buildChatEndpointUrl("product_groupings",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const s=await fetch(r,i);if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);if(S(s))return U(s,t);const a=await s.text();if(!a)return[];try{return c.normalizeProductGroupingsResponse(JSON.parse(a))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function k(n){const{product:e,index:t,discountType:r,onClick:i,onAddToCart:s,renderCard:a}=n,u=n.i18n,l=n.pricing;if(a){const o=document.createElement("div");return o.className="gengage-simrel-card gengage-simrel-card--custom",o.innerHTML=C.sanitizeHtml(a(e,t)),o.addEventListener("click",p=>{p.target.closest(".gengage-simrel-atc")||i(e)}),o}const g=document.createElement("article");g.className="gengage-simrel-card",g.setAttribute("role","listitem"),g.dataset.sku=e.sku;const d=document.createElement("div");if(d.className="gengage-simrel-card-image",e.imageUrl&&C.isSafeImageUrl(e.imageUrl)){const o=document.createElement("img");o.src=e.imageUrl,o.alt=e.name,o.loading="lazy",C.addImageErrorHandler(o),d.appendChild(o)}if(r==="badge"&&e.discountPercent&&e.discountPercent>0){const o=document.createElement("span");o.className="gengage-simrel-badge",o.textContent=`%${C.clampDiscount(e.discountPercent)}`,d.appendChild(o)}g.appendChild(d);const m=document.createElement("div");if(m.className="gengage-simrel-card-info",e.brand){const o=document.createElement("div");o.className="gengage-simrel-card-brand",o.textContent=e.brand,m.appendChild(o)}const f=document.createElement("div");if(f.className="gengage-simrel-card-name",f.textContent=e.name,m.appendChild(f),e.rating!=null&&e.rating>0){const o=document.createElement("div");if(o.className="gengage-simrel-card-rating",o.textContent=C.renderStarRating(e.rating),e.reviewCount!=null){const p=document.createElement("span");p.className="gengage-simrel-card-review-count",p.textContent=` (${e.reviewCount})`,o.appendChild(p)}m.appendChild(o)}const h=document.createElement("div");if(h.className="gengage-simrel-card-price",e.originalPrice&&e.originalPrice!==e.price&&(r==="strike-through"||!r)){const o=document.createElement("span");o.className="gengage-simrel-card-price-original",o.textContent=C.formatPrice(e.originalPrice,l),h.appendChild(o)}if(e.price){const o=document.createElement("span");o.className="gengage-simrel-card-price-current",o.textContent=C.formatPrice(e.price,l),h.appendChild(o)}if(m.appendChild(h),g.appendChild(m),e.cartCode){const o=e.cartCode,p=C.createQuantityStepper({compact:!1,label:u?.addToCartButton??"Sepete Ekle",onSubmit:y=>{s({sku:e.sku,quantity:y,cartCode:o})}});p.classList.add("gengage-simrel-atc"),g.appendChild(p)}return g.addEventListener("click",o=>{o.target.closest(".gengage-simrel-atc")||i(e)}),g}function _(n){const e=document.createElement("div");e.className="gengage-simrel-grid",e.setAttribute("role","list"),e.setAttribute("aria-label",n.i18n?.similarProductsAriaLabel??"Similar products"),n.columns&&e.style.setProperty("--gengage-simrel-columns",String(n.columns));for(let t=0;t<n.products.length;t++){const i={product:n.products[t],index:t,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(i.i18n=n.i18n),n.discountType!==void 0&&(i.discountType=n.discountType),n.renderCard!==void 0&&(i.renderCard=n.renderCard);const s=k(i);e.appendChild(s)}if(n.products.length===0){const t=document.createElement("div");t.className="gengage-simrel-empty",t.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",e.appendChild(t)}return e}let L=0;function j(n){const e=L++,t=document.createElement("div");if(t.className="gengage-simrel-groups",n.groups.length===0){const d=document.createElement("div");return d.className="gengage-simrel-empty",d.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",t.appendChild(d),t}const r=document.createElement("div");r.className="gengage-simrel-tabs",r.setAttribute("role","tablist");const i=[],s=[],a=d=>{const m={products:d.products,onClick:n.onClick,onAddToCart:n.onAddToCart};return n.i18n!==void 0&&(m.i18n=n.i18n),n.discountType!==void 0&&(m.discountType=n.discountType),n.renderCard!==void 0&&(m.renderCard=n.renderCard),m},u=d=>{for(let o=0;o<i.length;o++){const p=o===d;i[o].classList.toggle("gengage-simrel-tab--active",p),i[o].setAttribute("aria-selected",String(p)),i[o].tabIndex=p?0:-1}const m=n.groups[d],f=s[d];f.innerHTML="";const h=_(a(m));f.appendChild(h);for(let o=0;o<s.length;o++){const p=o===d;s[o].style.display=p?"":"none",s[o].tabIndex=p?0:-1}};for(let d=0;d<n.groups.length;d++){const m=n.groups[d],f=`gengage-simrel-tab-${e}-${d}`,h=`gengage-simrel-panel-${e}-${d}`,o=document.createElement("button");o.className="gengage-simrel-tab",o.type="button",o.id=f,o.textContent=m.name,o.setAttribute("role","tab"),o.setAttribute("aria-controls",h),o.setAttribute("aria-selected",String(d===0)),o.tabIndex=d===0?0:-1,d===0&&o.classList.add("gengage-simrel-tab--active"),o.addEventListener("click",()=>u(d)),o.addEventListener("keydown",y=>{let b=-1;y.key==="ArrowRight"||y.key==="ArrowDown"?b=(d+1)%n.groups.length:y.key==="ArrowLeft"||y.key==="ArrowUp"?b=(d-1+n.groups.length)%n.groups.length:y.key==="Home"?b=0:y.key==="End"&&(b=n.groups.length-1),b>=0&&(y.preventDefault(),u(b),i[b].focus())}),i.push(o),r.appendChild(o);const p=document.createElement("div");p.className="gengage-simrel-tab-panel",p.id=h,p.setAttribute("role","tabpanel"),p.setAttribute("aria-labelledby",f),p.tabIndex=d===0?0:-1,d!==0&&(p.style.display="none"),s.push(p)}t.appendChild(r);const l=s[0],g=_(a(n.groups[0]));l.appendChild(g);for(const d of s)t.appendChild(d);return t}function E(n){if(!n||typeof n!="object")return null;const e=n;if(typeof e.sku!="string"||typeof e.name!="string"||typeof e.url!="string")return null;const t={sku:e.sku,name:e.name,url:e.url},r=e.imageUrl;typeof r=="string"&&(t.imageUrl=r);const i=e.price;typeof i=="string"&&(t.price=i);const s=e.originalPrice;typeof s=="string"&&(t.originalPrice=s);const a=e.discountPercent;typeof a=="number"&&(t.discountPercent=a);const u=e.brand;typeof u=="string"&&(t.brand=u);const l=e.rating;typeof l=="number"&&(t.rating=l);const g=e.reviewCount;typeof g=="number"&&(t.reviewCount=g);const d=e.cartCode;typeof d=="string"&&(t.cartCode=d);const m=e.inStock;return typeof m=="boolean"&&(t.inStock=m),t}function G(n){if(!n||typeof n!="object")return null;const e=n,t=e.title,r=e.type;if(typeof t!="string"||typeof r!="string")return null;const i={title:t,type:r};return e.payload!==void 0&&(i.payload=e.payload),i}const T={ProductGrid:({element:n,renderElement:e,context:t})=>{const r=document.createElement("div");r.className="gengage-simrel-grid",r.setAttribute("role","list");const i=n.props?.columns;typeof i=="number"&&Number.isFinite(i)&&i>0&&r.style.setProperty("--gengage-simrel-columns",String(i));for(const s of n.children??[]){const a=e(s);a&&r.appendChild(a)}if(r.children.length===0){const s=document.createElement("div");s.className="gengage-simrel-empty",s.textContent=t.i18n.emptyStateMessage,r.appendChild(s)}return r},ProductCard:({element:n,context:e})=>{const t=n.props?.product??n.props,r=E(t);if(!r)return null;const i=n.props?.index,s=typeof i=="number"&&Number.isFinite(i)?i:0,a=n.props?.discountType,u=a==="strike-through"||a==="badge"?a:e.discountType,l={product:r,index:s,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return u!==void 0&&(l.discountType=u),e.renderCard!==void 0&&(l.renderCard=e.renderCard),e.pricing!==void 0&&(l.pricing=e.pricing),k(l)},GroupTabs:({element:n,context:e})=>{const t=n.props?.groups;if(!Array.isArray(t))return null;const r=[];for(const s of t){if(!s||typeof s!="object")continue;const a=s;if(typeof a.name!="string")continue;const u=[];if(Array.isArray(a.products))for(const g of a.products){const d=E(g);d&&u.push(d)}const l={name:a.name,products:u};typeof a.highlight=="string"&&(l.highlight=a.highlight),r.push(l)}const i={groups:r,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),j(i)},EmptyState:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-empty";const r=n.props?.message;return t.textContent=typeof r=="string"?r:e.i18n.emptyStateMessage,t},AddToCartButton:({element:n,context:e})=>{const t=n.props?.sku,r=n.props?.cartCode;if(typeof t!="string"||typeof r!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc",i.type="button";const s=n.props?.label;return i.textContent=typeof s=="string"?s:e.i18n.addToCartButton,i.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),e.onAddToCart({sku:t,quantity:1,cartCode:r})}),i},QuickActions:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-quick-actions";const r=n.props?.actions;if(!Array.isArray(r)||!e.onAction)return t;for(const i of r){if(!i||typeof i!="object")continue;const s=i,a=s.label,u=G(s.action);if(typeof a!="string"||!u)continue;const l=document.createElement("button");l.className="gengage-simrel-quick-action",l.type="button",l.textContent=a,l.addEventListener("click",g=>{g.preventDefault(),g.stopPropagation(),e.onAction?.(u)}),t.appendChild(l)}return t}},v=({element:n,renderElement:e})=>{if(!n.children||n.children.length===0)return null;const t=document.createElement("div");for(const r of n.children){const i=e(r);i&&t.appendChild(i)}return t};function w(){return{...T}}function P(n,e,t=T,r=v){return c.renderUISpecWithRegistry({spec:n,context:e,registry:t,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}const A={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",priceSuffix:" TL"},O={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",priceSuffix:""};function D(n){return n?n.toLowerCase().split("-")[0]??"tr":"tr"}function M(n){return D(n)==="en"?O:A}const q=c.object({sku:c.string(),name:c.string(),imageUrl:c.string().url().optional(),price:c.string().optional(),originalPrice:c.string().optional(),discountPercent:c.number().optional(),url:c.string().url(),brand:c.string().optional(),rating:c.number().min(0).max(5).optional(),reviewCount:c.number().int().nonnegative().optional()}),H=c.object({layout:c._enum(["grid","carousel"]).optional(),columns:c.number().int().positive().optional()}),B=c.object({product:q,index:c.number().int().nonnegative(),discountType:c._enum(["strike-through","badge"]).optional()}),z=c.object({sku:c.string(),label:c.string().optional(),cartCode:c.string()}),$=c.object({actions:c.array(c.object({label:c.string(),action:c.object({title:c.string(),type:c.string(),payload:c.unknown().optional()})}))}),F=c.object({message:c.string().optional()}),J={components:{ProductGrid:{schema:H,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:B,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:z,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:$,description:"A row of quick-action buttons below product info."},EmptyState:{schema:F,description:"Empty state shown when no similar products are available."}}};class R extends c.BaseWidget{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=A}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),this.isVisible=!0,c.trackInit("simrel")}onUpdate(e){const t=e.sku;!t||t===this._lastSku||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;c.trackProductDetail(e.sku,e.name);const r=this.config.session?.sessionId??null;c.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r}),this.config.onProductNavigate?.(e.url,e.sku,r)}_handleAddToCart(e){c.trackCartAdd(e.sku,e.quantity),this.config.onAddToCart?.(e),c.dispatch("gengage:similar:add-to-cart",e),this.track(c.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(e){this._abort(),this._abortController=new AbortController;const t=this._abortController.signal;if(!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const r=document.createElement("div");r.className="gengage-simrel-loading";const i=document.createElement("div");i.className="gengage-simrel-spinner",r.appendChild(i),this._contentEl.appendChild(r);const s={middlewareUrl:this.config.middlewareUrl},a=crypto.randomUUID(),u=Date.now();this.track(c.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:a,widget:"simrel"}));try{const l={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(l.domain=this.config.domain);const g=await N(l,s,t);if(!this._contentEl)return;if(this._contentEl.innerHTML="",g.length>0)try{const d=g.map(f=>f.sku),m=await x({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:d},s,t);if(m.length>0&&this._contentEl){const f=this._buildGroupsSpec(m),h=this._renderUISpec(f);this._contentEl.appendChild(h),c.trackShow("simrel"),this.track(c.streamDoneEvent(this.analyticsContext(),{request_id:a,latency_ms:Date.now()-u,chunk_count:m.reduce((o,p)=>o+p.products.length,0),widget:"simrel"})),this.track(c.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:m.reduce((o,p)=>o+p.products.length,0),history_ref:a,redaction_level:"none",widget:"simrel"}));return}}catch{}if(this._contentEl){const d=this._buildProductsSpec(g),m=this._renderUISpec(d);this._contentEl.appendChild(m)}g.length>0&&c.trackShow("simrel"),this.track(c.streamDoneEvent(this.analyticsContext(),{request_id:a,latency_ms:Date.now()-u,chunk_count:g.length,widget:"simrel"})),this.track(c.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:g.length,history_ref:a,redaction_level:"none",widget:"simrel"}))}catch(l){if(l instanceof DOMException&&l.name==="AbortError")return;c.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:c.getGlobalErrorMessage(this.config.locale)}),this.track(c.streamErrorEvent(this.analyticsContext(),{request_id:a,error_code:"FETCH_ERROR",error_message:l instanceof Error?l.message:String(l),widget:"simrel"})),this._contentEl&&(this._contentEl.innerHTML="",this._contentEl.style.display="none")}}_resolveI18n(e){return{...M(e.locale),...e.i18n}}_resolveUISpecRegistry(){const e=w();return c.mergeUISpecRegistry(e,this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};return this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),this.config.pricing!==void 0&&(t.pricing=this.config.pricing),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??v,s=(l,g)=>P(l,g,t,i),a=this.config.renderer?.renderUISpec;return a?a(e,r,{registry:t,unknownRenderer:i,defaultRender:s}):s(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const s=e[i],a=`product-${i}`;r.push(a),t[a]={type:"ProductCard",props:{product:s,index:i,discountType:this.config.discountType}}}return t.root={type:"ProductGrid",props:{layout:"grid"},children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}}function W(){return new R}exports.GengageSimRel=R;exports.createDefaultSimRelUISpecRegistry=w;exports.createSimRelWidget=W;exports.defaultSimRelUnknownUISpecRenderer=v;exports.renderSimRelUISpec=P;exports.simRelCatalog=J;
2
2
  //# sourceMappingURL=simrel.cjs.map