@ai-ad-network/frontend-sdk 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,11 +1,11 @@
1
- var ir = Object.defineProperty;
2
- var lr = (e, r, n) => r in e ? ir(e, r, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[r] = n;
3
- var Ae = (e, r, n) => lr(e, typeof r != "symbol" ? r + "" : r, n);
4
- import de, { useState as E, useRef as H, useCallback as $, useEffect as je, createContext as cr, useContext as dr, useMemo as ur, Component as pr } from "react";
5
- import mr from "swr";
6
- var fr = /* @__PURE__ */ ((e) => (e.SHOPPING = "shopping", e.LEAD_GEN = "lead_gen", e.SOFTWARE = "software", e.CONTENT = "content", e.GENERIC = "generic", e))(fr || {});
1
+ import de, { useState as E, useRef as H, useCallback as z, useEffect as je, createContext as ir, useContext as lr, useMemo as cr, Component as dr } from "react";
2
+ import ur from "swr";
3
+ var ct;
4
+ (function(e) {
5
+ e.SHOPPING = "shopping", e.LEAD_GEN = "lead_gen", e.SOFTWARE = "software", e.CONTENT = "content", e.GENERIC = "generic";
6
+ })(ct || (ct = {}));
7
7
  const xt = "/api/v1";
8
- function gr() {
8
+ function pr() {
9
9
  if (typeof window < "u") {
10
10
  const e = window.__AD_CONFIG__;
11
11
  return e != null && e.apiKey ? e.apiKey : window.__AD_API_KEY__;
@@ -15,7 +15,7 @@ async function bt(e, r) {
15
15
  var c;
16
16
  const n = {
17
17
  "Content-Type": "application/json"
18
- }, s = gr();
18
+ }, s = pr();
19
19
  s && (n.Authorization = `Bearer ${s}`, n["X-API-Key"] = s);
20
20
  const l = await fetch(e, {
21
21
  method: "POST",
@@ -24,23 +24,13 @@ async function bt(e, r) {
24
24
  });
25
25
  if (!l.ok) {
26
26
  const i = await l.json().catch(() => ({}));
27
- throw new Error(
28
- ((c = i.error) == null ? void 0 : c.message) || `HTTP error! status: ${l.status}`
29
- );
27
+ throw new Error(((c = i.error) == null ? void 0 : c.message) || `HTTP error! status: ${l.status}`);
30
28
  }
31
29
  const a = await l.json();
32
30
  return a.success && a.data ? a.data : a;
33
31
  }
34
- function hr(e, r, n, s = {}) {
35
- const {
36
- enabled: l = !0,
37
- formats: a = ["action_card", "suffix"],
38
- placement: c = "post_response",
39
- apiBaseUrl: i = xt
40
- } = s, [d, m] = E([]), p = H(!1), f = H(), y = $(
41
- () => `${i}/ads/decision`,
42
- [i]
43
- ), N = $(() => {
32
+ function mr(e, r, n, s = {}) {
33
+ const { enabled: l = !0, formats: a = ["action_card", "suffix"], placement: c = "post_response", apiBaseUrl: i = xt } = s, [d, m] = E([]), p = H(!1), f = H(), y = z(() => `${i}/ads/decision`, [i]), N = z(() => {
44
34
  if (!(!e || !n))
45
35
  return {
46
36
  query: e,
@@ -56,13 +46,9 @@ function hr(e, r, n, s = {}) {
56
46
  errorRetryCount: 2,
57
47
  errorRetryInterval: 5e3,
58
48
  keepPreviousData: !0
59
- }, { data: x, error: j, isValidating: w, mutate: k } = mr(
60
- v ? y() : null,
61
- () => bt(y(), N()),
62
- b
63
- );
49
+ }, { data: x, error: j, isValidating: w, mutate: k } = ur(v ? y() : null, () => bt(y(), N()), b);
64
50
  x != null && x.ads && x.ads.length > 0 && (m(x.ads), p.current = !0, f.current = e), e !== f.current && w && (p.current = !1);
65
- const S = $(() => {
51
+ const S = z(() => {
66
52
  p.current = !1, k();
67
53
  }, [k]);
68
54
  return {
@@ -74,30 +60,23 @@ function hr(e, r, n, s = {}) {
74
60
  refetch: S
75
61
  };
76
62
  }
77
- function kn(e = {}) {
78
- const [r, n] = E([]), [s, l] = E(null), [a, c] = E(null), [i, d] = E(!1), [m, p] = E(null), {
79
- formats: f = ["action_card", "suffix"],
80
- placement: y = "post_response",
81
- apiBaseUrl: N = xt
82
- } = e, v = $(
83
- async (x, j, w) => {
84
- d(!0), p(null);
85
- try {
86
- const k = `${N}/ads/decision`, M = await bt(k, {
87
- query: x,
88
- response: j,
89
- adFormats: w || f,
90
- placement: y
91
- });
92
- n(M.ads || []), l(M.intent || null), c(M.routing || null);
93
- } catch (k) {
94
- p(k instanceof Error ? k : new Error("Failed to fetch ads")), n([]), l(null), c(null);
95
- } finally {
96
- d(!1);
97
- }
98
- },
99
- [N, f, y]
100
- ), b = $(() => {
63
+ function yn(e = {}) {
64
+ const [r, n] = E([]), [s, l] = E(null), [a, c] = E(null), [i, d] = E(!1), [m, p] = E(null), { formats: f = ["action_card", "suffix"], placement: y = "post_response", apiBaseUrl: N = xt } = e, v = z(async (x, j, w) => {
65
+ d(!0), p(null);
66
+ try {
67
+ const k = `${N}/ads/decision`, D = await bt(k, {
68
+ query: x,
69
+ response: j,
70
+ adFormats: w || f,
71
+ placement: y
72
+ });
73
+ n(D.ads || []), l(D.intent || null), c(D.routing || null);
74
+ } catch (k) {
75
+ p(k instanceof Error ? k : new Error("Failed to fetch ads")), n([]), l(null), c(null);
76
+ } finally {
77
+ d(!1);
78
+ }
79
+ }, [N, f, y]), b = z(() => {
101
80
  n([]), l(null), c(null), p(null);
102
81
  }, []);
103
82
  return {
@@ -110,18 +89,13 @@ function kn(e = {}) {
110
89
  reset: b
111
90
  };
112
91
  }
113
- function _n(e, r, n, s = {}) {
114
- const { pageSize: l = 5, ...a } = s, [c, i] = E([]), [d, m] = E(1), { ads: p, intent: f, routing: y, isLoading: N, error: v } = hr(
115
- e,
116
- r,
117
- n,
118
- { ...a, formats: [...a.formats, "source"] }
119
- );
92
+ function vn(e, r, n, s = {}) {
93
+ const { pageSize: l = 5, ...a } = s, [c, i] = E([]), [d, m] = E(1), { ads: p, intent: f, routing: y, isLoading: N, error: v } = mr(e, r, n, { ...a, formats: [...a.formats, "source"] });
120
94
  p.length > 0 && i((j) => {
121
95
  const w = p.filter((k) => !j.some((S) => S.id === k.id));
122
96
  return [...j, ...w];
123
97
  });
124
- const b = $(() => {
98
+ const b = z(() => {
125
99
  m((j) => j + 1);
126
100
  }, []), x = c.length < d * l;
127
101
  return {
@@ -134,7 +108,7 @@ function _n(e, r, n, s = {}) {
134
108
  hasMore: x
135
109
  };
136
110
  }
137
- function Nn(e) {
111
+ function wn(e) {
138
112
  var r, n;
139
113
  return {
140
114
  id: e.original.id,
@@ -161,50 +135,43 @@ function Nn(e) {
161
135
  }
162
136
  };
163
137
  }
164
- function xr(e) {
165
- const {
166
- apiBaseUrl: r = "/api/v1",
167
- slots: n,
168
- enabled: s = !0
169
- } = e, [l, a] = E({}), [c, i] = E(!1), [d, m] = E(null), p = H(!1), f = $(
170
- async (N) => {
171
- if (s) {
172
- if (p.current) {
173
- console.warn("[useAdSlots] Request already in progress, skipping duplicate request");
174
- return;
175
- }
176
- i(!0), m(null), p.current = !0;
177
- try {
178
- const v = await fetch(`${r}/ads/request`, {
179
- method: "POST",
180
- headers: {
181
- "Content-Type": "application/json"
182
- },
183
- body: JSON.stringify({
184
- conversationContext: N.conversationContext,
185
- userContext: N.userContext,
186
- slots: n
187
- })
188
- });
189
- if (!v.ok)
190
- throw new Error(`Ad request failed: ${v.status} ${v.statusText}`);
191
- const b = await v.json();
192
- if (!b.success)
193
- throw new Error(b.error || "Ad request failed");
194
- const x = b.data, j = {};
195
- x.slots.forEach((w) => {
196
- j[w.slotId] = w;
197
- }), a(j);
198
- } catch (v) {
199
- const b = v;
200
- m(b), console.error("[useAdSlots] Request failed:", b);
201
- } finally {
202
- i(!1), p.current = !1;
203
- }
138
+ function fr(e) {
139
+ const { apiBaseUrl: r = "/api/v1", slots: n, enabled: s = !0 } = e, [l, a] = E({}), [c, i] = E(!1), [d, m] = E(null), p = H(!1), f = z(async (N) => {
140
+ if (s) {
141
+ if (p.current) {
142
+ console.warn("[useAdSlots] Request already in progress, skipping duplicate request");
143
+ return;
204
144
  }
205
- },
206
- [s, r, n]
207
- ), y = $(() => {
145
+ i(!0), m(null), p.current = !0;
146
+ try {
147
+ const v = await fetch(`${r}/ads/request`, {
148
+ method: "POST",
149
+ headers: {
150
+ "Content-Type": "application/json"
151
+ },
152
+ body: JSON.stringify({
153
+ conversationContext: N.conversationContext,
154
+ userContext: N.userContext,
155
+ slots: n
156
+ })
157
+ });
158
+ if (!v.ok)
159
+ throw new Error(`Ad request failed: ${v.status} ${v.statusText}`);
160
+ const b = await v.json();
161
+ if (!b.success)
162
+ throw new Error(b.error || "Ad request failed");
163
+ const x = b.data, j = {};
164
+ x.slots.forEach((w) => {
165
+ j[w.slotId] = w;
166
+ }), a(j);
167
+ } catch (v) {
168
+ const b = v;
169
+ m(b), console.error("[useAdSlots] Request failed:", b);
170
+ } finally {
171
+ i(!1), p.current = !1;
172
+ }
173
+ }
174
+ }, [s, r, n]), y = z(() => {
208
175
  a({}), m(null);
209
176
  }, []);
210
177
  return {
@@ -215,8 +182,8 @@ function xr(e) {
215
182
  clearSlots: y
216
183
  };
217
184
  }
218
- function Cn(e) {
219
- const r = xr({
185
+ function jn(e) {
186
+ const r = fr({
220
187
  apiBaseUrl: e.apiBaseUrl,
221
188
  slots: [e.slot],
222
189
  enabled: e.enabled
@@ -228,41 +195,38 @@ function Cn(e) {
228
195
  hasAds: (n == null ? void 0 : n.status) === "filled" && n.ads.length > 0
229
196
  };
230
197
  }
231
- function Sn(e) {
232
- const [r, n] = E(!1), [s, l] = E(null), [a, c] = E(null), i = $(
233
- async (d) => {
234
- if (!e.enabled)
235
- return null;
236
- n(!0), l(null);
237
- try {
238
- const m = await fetch(`${e.apiBaseUrl || "/api/v1"}/chat/completions`, {
239
- method: "POST",
240
- headers: {
241
- "Content-Type": "application/json"
242
- },
243
- body: JSON.stringify({
244
- messages: d,
245
- adEnabled: !0,
246
- adFormats: ["action_card", "suffix", "followup", "source", "lead_gen"],
247
- stream: !1
248
- })
249
- });
250
- if (!m.ok)
251
- throw new Error(`Chat request failed: ${m.status}`);
252
- const p = await m.json();
253
- if (!p.success)
254
- throw new Error(p.error || "Chat request failed");
255
- const f = p.data;
256
- return c(f), f;
257
- } catch (m) {
258
- const p = m;
259
- return l(p), console.error("[useChatWithAds] Request failed:", p), null;
260
- } finally {
261
- n(!1);
262
- }
263
- },
264
- [e.enabled, e.apiBaseUrl]
265
- );
198
+ function kn(e) {
199
+ const [r, n] = E(!1), [s, l] = E(null), [a, c] = E(null), i = z(async (d) => {
200
+ if (!e.enabled)
201
+ return null;
202
+ n(!0), l(null);
203
+ try {
204
+ const m = await fetch(`${e.apiBaseUrl || "/api/v1"}/chat/completions`, {
205
+ method: "POST",
206
+ headers: {
207
+ "Content-Type": "application/json"
208
+ },
209
+ body: JSON.stringify({
210
+ messages: d,
211
+ adEnabled: !0,
212
+ adFormats: ["action_card", "suffix", "followup", "source", "lead_gen"],
213
+ stream: !1
214
+ })
215
+ });
216
+ if (!m.ok)
217
+ throw new Error(`Chat request failed: ${m.status}`);
218
+ const p = await m.json();
219
+ if (!p.success)
220
+ throw new Error(p.error || "Chat request failed");
221
+ const f = p.data;
222
+ return c(f), f;
223
+ } catch (m) {
224
+ const p = m;
225
+ return l(p), console.error("[useChatWithAds] Request failed:", p), null;
226
+ } finally {
227
+ n(!1);
228
+ }
229
+ }, [e.enabled, e.apiBaseUrl]);
266
230
  return {
267
231
  response: a,
268
232
  isLoading: r,
@@ -270,6 +234,21 @@ function Sn(e) {
270
234
  sendMessage: i
271
235
  };
272
236
  }
237
+ async function _n(e, r = {}) {
238
+ const n = r.apiBaseUrl || "/api/v1", s = await fetch(`${n}/ads/request`, {
239
+ method: "POST",
240
+ headers: {
241
+ "Content-Type": "application/json"
242
+ },
243
+ body: JSON.stringify(e)
244
+ });
245
+ if (!s.ok)
246
+ throw new Error(`Ad request failed: ${s.status} ${s.statusText}`);
247
+ const l = await s.json();
248
+ if (!l.success)
249
+ throw new Error(l.error || "Ad request failed");
250
+ return l.data;
251
+ }
273
252
  async function yt(e) {
274
253
  try {
275
254
  return await fetch(e, {
@@ -282,7 +261,7 @@ async function yt(e) {
282
261
  return console.error("[Ad Tracking] Failed to track impression:", r), !1;
283
262
  }
284
263
  }
285
- async function qe(e) {
264
+ async function Ge(e) {
286
265
  try {
287
266
  return await fetch(e, {
288
267
  method: "GET",
@@ -302,7 +281,7 @@ function vt(e) {
302
281
  }
303
282
  return Math.abs(r).toString(36);
304
283
  }
305
- function br(e, r, n = 3) {
284
+ function gr(e, r, n = 3) {
306
285
  const s = `ad_impressions_${e}_${r}`, l = Date.now(), a = 60 * 60 * 1e3;
307
286
  try {
308
287
  const c = localStorage.getItem(s);
@@ -319,24 +298,15 @@ function wt(e, r) {
319
298
  try {
320
299
  const a = localStorage.getItem(n);
321
300
  if (!a) {
322
- localStorage.setItem(
323
- n,
324
- JSON.stringify({ impressions: 1, lastSeen: s })
325
- );
301
+ localStorage.setItem(n, JSON.stringify({ impressions: 1, lastSeen: s }));
326
302
  return;
327
303
  }
328
304
  const c = JSON.parse(a);
329
305
  if (s - c.lastSeen > l) {
330
- localStorage.setItem(
331
- n,
332
- JSON.stringify({ impressions: 1, lastSeen: s })
333
- );
306
+ localStorage.setItem(n, JSON.stringify({ impressions: 1, lastSeen: s }));
334
307
  return;
335
308
  }
336
- localStorage.setItem(
337
- n,
338
- JSON.stringify({ impressions: c.impressions + 1, lastSeen: s })
339
- );
309
+ localStorage.setItem(n, JSON.stringify({ impressions: c.impressions + 1, lastSeen: s }));
340
310
  } catch (a) {
341
311
  console.error("[Ad Tracking] Failed to record impression:", a);
342
312
  }
@@ -346,48 +316,37 @@ function jt() {
346
316
  return e || (e = `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, sessionStorage.setItem("ad_session_id", e)), e;
347
317
  }
348
318
  function Q(e, r = {}) {
349
- const {
350
- intersectionThreshold: n = 0.5,
351
- minViewTimeMs: s = 1e3,
352
- onClick: l,
353
- onImpression: a
354
- } = r, c = H(null), i = H(!1), d = H(null), [m, p] = E(!1), [f, y] = E(!1), N = jt(), v = vt(N);
319
+ const { intersectionThreshold: n = 0.5, minViewTimeMs: s = 1e3, onClick: l, onImpression: a } = r, c = H(null), i = H(!1), d = H(null), [m, p] = E(!1), [f, y] = E(!1), N = jt(), v = vt(N);
355
320
  je(() => {
356
321
  if (!c.current || !e || i.current)
357
322
  return;
358
- if (!br(v, e.id)) {
323
+ if (!gr(v, e.id)) {
359
324
  console.log("[Ad Tracking] Frequency limit reached for ad:", e.id);
360
325
  return;
361
326
  }
362
- const x = new IntersectionObserver(
363
- (j) => {
364
- j.forEach((w) => {
365
- w.isIntersecting && w.intersectionRatio >= n ? (y(!0), d.current = setTimeout(() => {
366
- yt(e.tracking.impression_url).then((k) => {
367
- k && (i.current = !0, p(!0), wt(v, e.id), a == null || a(e), console.log("[Ad Tracking] Impression fired for", e.id));
368
- });
369
- }, s)) : (y(!1), d.current && (clearTimeout(d.current), d.current = null));
370
- });
371
- },
372
- {
373
- threshold: [n],
374
- rootMargin: "0px"
375
- }
376
- );
327
+ const x = new IntersectionObserver((j) => {
328
+ j.forEach((w) => {
329
+ w.isIntersecting && w.intersectionRatio >= n ? (y(!0), d.current = setTimeout(() => {
330
+ yt(e.tracking.impression_url).then((k) => {
331
+ k && (i.current = !0, p(!0), wt(v, e.id), a == null || a(e), console.log("[Ad Tracking] Impression fired for", e.id));
332
+ });
333
+ }, s)) : (y(!1), d.current && (clearTimeout(d.current), d.current = null));
334
+ });
335
+ }, {
336
+ threshold: [n],
337
+ rootMargin: "0px"
338
+ });
377
339
  return x.observe(c.current), () => {
378
340
  x.disconnect(), d.current && clearTimeout(d.current);
379
341
  };
380
342
  }, [e, n, s, v, a]);
381
- const b = $(
382
- (x) => {
383
- x.preventDefault(), e && qe(e.tracking.click_url).then((j) => {
384
- j && (console.log("[Ad Tracking] Click fired for", e.id), l == null || l(e), setTimeout(() => {
385
- window.open(e.tracking.click_url, "_blank", "noopener,noreferrer");
386
- }, 100));
387
- });
388
- },
389
- [e, l]
390
- );
343
+ const b = z((x) => {
344
+ x.preventDefault(), e && Ge(e.tracking.click_url).then((j) => {
345
+ j && (console.log("[Ad Tracking] Click fired for", e.id), l == null || l(e), setTimeout(() => {
346
+ window.open(e.tracking.click_url, "_blank", "noopener,noreferrer");
347
+ }, 100));
348
+ });
349
+ }, [e, l]);
391
350
  return {
392
351
  impressionRef: c,
393
352
  handleClick: b,
@@ -395,87 +354,70 @@ function Q(e, r = {}) {
395
354
  isIntersecting: f
396
355
  };
397
356
  }
398
- function An(e, r = {}) {
399
- const {
400
- intersectionThreshold: n = 0.5,
401
- minViewTimeMs: s = 1e3,
402
- onClick: l,
403
- onImpression: a
404
- } = r, c = H(/* @__PURE__ */ new Map()), i = H(/* @__PURE__ */ new Map()), [d, m] = E({}), p = H(/* @__PURE__ */ new Set()), f = jt(), y = vt(f), N = $(
405
- (b) => (x) => {
406
- x ? c.current.set(b, x) : c.current.delete(b);
407
- },
408
- []
409
- );
357
+ function Nn(e, r = {}) {
358
+ const { intersectionThreshold: n = 0.5, minViewTimeMs: s = 1e3, onClick: l, onImpression: a } = r, c = H(/* @__PURE__ */ new Map()), i = H(/* @__PURE__ */ new Map()), [d, m] = E({}), p = H(/* @__PURE__ */ new Set()), f = jt(), y = vt(f), N = z((b) => (x) => {
359
+ x ? c.current.set(b, x) : c.current.delete(b);
360
+ }, []);
410
361
  je(() => {
411
362
  const b = Array.from(c.current.values());
412
- if (b.length === 0) return;
413
- const x = new IntersectionObserver(
414
- (j) => {
415
- j.forEach((w) => {
416
- var M;
417
- const k = (M = Array.from(c.current.entries()).find(
418
- ([, O]) => O === w.target
419
- )) == null ? void 0 : M[0];
420
- if (!k) return;
421
- const S = e.find((O) => O.id === k);
422
- if (!(!S || p.current.has(k)))
423
- if (w.isIntersecting && w.intersectionRatio >= n) {
424
- const O = setTimeout(() => {
425
- yt(S.tracking.impression_url).then((re) => {
426
- re && (p.current.add(k), m((ne) => ({ ...ne, [k]: !0 })), wt(y, S.id), a == null || a(S));
427
- });
428
- }, s);
429
- i.current.set(k, O);
430
- } else {
431
- const O = i.current.get(k);
432
- O && (clearTimeout(O), i.current.delete(k));
433
- }
434
- });
435
- },
436
- {
437
- threshold: [n],
438
- rootMargin: "0px"
439
- }
440
- );
363
+ if (b.length === 0)
364
+ return;
365
+ const x = new IntersectionObserver((j) => {
366
+ j.forEach((w) => {
367
+ var D;
368
+ const k = (D = Array.from(c.current.entries()).find(([, L]) => L === w.target)) == null ? void 0 : D[0];
369
+ if (!k)
370
+ return;
371
+ const S = e.find((L) => L.id === k);
372
+ if (!(!S || p.current.has(k)))
373
+ if (w.isIntersecting && w.intersectionRatio >= n) {
374
+ const L = setTimeout(() => {
375
+ yt(S.tracking.impression_url).then((re) => {
376
+ re && (p.current.add(k), m((ne) => ({ ...ne, [k]: !0 })), wt(y, S.id), a == null || a(S));
377
+ });
378
+ }, s);
379
+ i.current.set(k, L);
380
+ } else {
381
+ const L = i.current.get(k);
382
+ L && (clearTimeout(L), i.current.delete(k));
383
+ }
384
+ });
385
+ }, {
386
+ threshold: [n],
387
+ rootMargin: "0px"
388
+ });
441
389
  return b.forEach((j) => x.observe(j)), () => {
442
390
  x.disconnect(), i.current.forEach((j) => clearTimeout(j));
443
391
  };
444
392
  }, [e, n, s, y, a]);
445
- const v = $(
446
- (b) => (x) => {
447
- x.preventDefault(), qe(b.tracking.click_url).then((j) => {
448
- j && (l == null || l(b), setTimeout(() => {
449
- window.open(b.tracking.click_url, "_blank", "noopener,noreferrer");
450
- }, 100));
451
- });
452
- },
453
- [l]
454
- );
393
+ const v = z((b) => (x) => {
394
+ x.preventDefault(), Ge(b.tracking.click_url).then((j) => {
395
+ j && (l == null || l(b), setTimeout(() => {
396
+ window.open(b.tracking.click_url, "_blank", "noopener,noreferrer");
397
+ }, 100));
398
+ });
399
+ }, [l]);
455
400
  return {
456
401
  getRef: N,
457
402
  handleClick: v,
458
403
  impressionStates: d
459
404
  };
460
405
  }
461
- function En(e, r = {}) {
406
+ function Cn(e, r = {}) {
462
407
  const [n, s] = E(!1);
463
408
  return {
464
- handleClick: $(
465
- (a) => {
466
- a.preventDefault(), !(!e || n) && (s(!0), qe(e.tracking.click_url).then((c) => {
467
- var i;
468
- s(!1), c && ((i = r.onClick) == null || i.call(r, e), setTimeout(() => {
469
- window.open(e.tracking.click_url, "_blank", "noopener,noreferrer");
470
- }, 100));
471
- }));
472
- },
473
- [e, n, r.onClick]
474
- ),
409
+ handleClick: z((a) => {
410
+ a.preventDefault(), !(!e || n) && (s(!0), Ge(e.tracking.click_url).then((c) => {
411
+ var i;
412
+ s(!1), c && ((i = r.onClick) == null || i.call(r, e), setTimeout(() => {
413
+ window.open(e.tracking.click_url, "_blank", "noopener,noreferrer");
414
+ }, 100));
415
+ }));
416
+ }, [e, n, r.onClick]),
475
417
  isClicking: n
476
418
  };
477
419
  }
478
- var Ue = { exports: {} }, xe = {};
420
+ var Be = { exports: {} }, xe = {};
479
421
  /**
480
422
  * @license React
481
423
  * react-jsx-runtime.production.min.js
@@ -486,7 +428,7 @@ var Ue = { exports: {} }, xe = {};
486
428
  * LICENSE file in the root directory of this source tree.
487
429
  */
488
430
  var dt;
489
- function yr() {
431
+ function hr() {
490
432
  if (dt) return xe;
491
433
  dt = 1;
492
434
  var e = de, r = Symbol.for("react.element"), n = Symbol.for("react.fragment"), s = Object.prototype.hasOwnProperty, l = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, a = { key: !0, ref: !0, __self: !0, __source: !0 };
@@ -510,7 +452,7 @@ var be = {};
510
452
  * LICENSE file in the root directory of this source tree.
511
453
  */
512
454
  var ut;
513
- function vr() {
455
+ function xr() {
514
456
  return ut || (ut = 1, process.env.NODE_ENV !== "production" && function() {
515
457
  var e = de, r = Symbol.for("react.element"), n = Symbol.for("react.portal"), s = Symbol.for("react.fragment"), l = Symbol.for("react.strict_mode"), a = Symbol.for("react.profiler"), c = Symbol.for("react.provider"), i = Symbol.for("react.context"), d = Symbol.for("react.forward_ref"), m = Symbol.for("react.suspense"), p = Symbol.for("react.suspense_list"), f = Symbol.for("react.memo"), y = Symbol.for("react.lazy"), N = Symbol.for("react.offscreen"), v = Symbol.iterator, b = "@@iterator";
516
458
  function x(o) {
@@ -537,10 +479,10 @@ function vr() {
537
479
  I.unshift("Warning: " + u), Function.prototype.apply.call(console[o], console, I);
538
480
  }
539
481
  }
540
- var S = !1, M = !1, O = !1, re = !1, ne = !1, oe;
482
+ var S = !1, D = !1, L = !1, re = !1, ne = !1, oe;
541
483
  oe = Symbol.for("react.module.reference");
542
484
  function pe(o) {
543
- return !!(typeof o == "string" || typeof o == "function" || o === s || o === a || ne || o === l || o === m || o === p || re || o === N || S || M || O || typeof o == "object" && o !== null && (o.$$typeof === y || o.$$typeof === f || o.$$typeof === c || o.$$typeof === i || o.$$typeof === d || // This needs to include all possible module reference object
485
+ return !!(typeof o == "string" || typeof o == "function" || o === s || o === a || ne || o === l || o === m || o === p || re || o === N || S || D || L || typeof o == "object" && o !== null && (o.$$typeof === y || o.$$typeof === f || o.$$typeof === c || o.$$typeof === i || o.$$typeof === d || // This needs to include all possible module reference object
544
486
  // types supported by any Flight configuration anywhere since
545
487
  // we don't know which Flight build this will end up being used
546
488
  // with.
@@ -601,18 +543,18 @@ function vr() {
601
543
  }
602
544
  return null;
603
545
  }
604
- var U = Object.assign, Y = 0, ee, fe, se, K, ge, W, He;
605
- function Je() {
546
+ var U = Object.assign, Y = 0, ee, fe, se, K, ge, W, Ve;
547
+ function He() {
606
548
  }
607
- Je.__reactDisabledLog = !0;
608
- function Mt() {
549
+ He.__reactDisabledLog = !0;
550
+ function Dt() {
609
551
  {
610
552
  if (Y === 0) {
611
- ee = console.log, fe = console.info, se = console.warn, K = console.error, ge = console.group, W = console.groupCollapsed, He = console.groupEnd;
553
+ ee = console.log, fe = console.info, se = console.warn, K = console.error, ge = console.group, W = console.groupCollapsed, Ve = console.groupEnd;
612
554
  var o = {
613
555
  configurable: !0,
614
556
  enumerable: !0,
615
- value: Je,
557
+ value: He,
616
558
  writable: !0
617
559
  };
618
560
  Object.defineProperties(console, {
@@ -628,7 +570,7 @@ function vr() {
628
570
  Y++;
629
571
  }
630
572
  }
631
- function Lt() {
573
+ function Mt() {
632
574
  {
633
575
  if (Y--, Y === 0) {
634
576
  var o = {
@@ -656,34 +598,34 @@ function vr() {
656
598
  value: W
657
599
  }),
658
600
  groupEnd: U({}, o, {
659
- value: He
601
+ value: Ve
660
602
  })
661
603
  });
662
604
  }
663
605
  Y < 0 && w("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
664
606
  }
665
607
  }
666
- var Ie = j.ReactCurrentDispatcher, Me;
608
+ var Pe = j.ReactCurrentDispatcher, Ie;
667
609
  function _e(o, u, g) {
668
610
  {
669
- if (Me === void 0)
611
+ if (Ie === void 0)
670
612
  try {
671
613
  throw Error();
672
614
  } catch (T) {
673
615
  var _ = T.stack.trim().match(/\n( *(at )?)/);
674
- Me = _ && _[1] || "";
616
+ Ie = _ && _[1] || "";
675
617
  }
676
618
  return `
677
- ` + Me + o;
619
+ ` + Ie + o;
678
620
  }
679
621
  }
680
- var Le = !1, Ne;
622
+ var De = !1, Ne;
681
623
  {
682
- var Ot = typeof WeakMap == "function" ? WeakMap : Map;
683
- Ne = new Ot();
624
+ var Lt = typeof WeakMap == "function" ? WeakMap : Map;
625
+ Ne = new Lt();
684
626
  }
685
- function Ye(o, u) {
686
- if (!o || Le)
627
+ function Je(o, u) {
628
+ if (!o || De)
687
629
  return "";
688
630
  {
689
631
  var g = Ne.get(o);
@@ -691,11 +633,11 @@ function vr() {
691
633
  return g;
692
634
  }
693
635
  var _;
694
- Le = !0;
636
+ De = !0;
695
637
  var T = Error.prepareStackTrace;
696
638
  Error.prepareStackTrace = void 0;
697
639
  var I;
698
- I = Ie.current, Ie.current = null, Mt();
640
+ I = Pe.current, Pe.current = null, Dt();
699
641
  try {
700
642
  if (u) {
701
643
  var R = function() {
@@ -731,30 +673,30 @@ function vr() {
731
673
  } catch (B) {
732
674
  if (B && _ && typeof B.stack == "string") {
733
675
  for (var A = B.stack.split(`
734
- `), z = _.stack.split(`
735
- `), D = A.length - 1, F = z.length - 1; D >= 1 && F >= 0 && A[D] !== z[F]; )
676
+ `), $ = _.stack.split(`
677
+ `), O = A.length - 1, F = $.length - 1; O >= 1 && F >= 0 && A[O] !== $[F]; )
736
678
  F--;
737
- for (; D >= 1 && F >= 0; D--, F--)
738
- if (A[D] !== z[F]) {
739
- if (D !== 1 || F !== 1)
679
+ for (; O >= 1 && F >= 0; O--, F--)
680
+ if (A[O] !== $[F]) {
681
+ if (O !== 1 || F !== 1)
740
682
  do
741
- if (D--, F--, F < 0 || A[D] !== z[F]) {
683
+ if (O--, F--, F < 0 || A[O] !== $[F]) {
742
684
  var G = `
743
- ` + A[D].replace(" at new ", " at ");
685
+ ` + A[O].replace(" at new ", " at ");
744
686
  return o.displayName && G.includes("<anonymous>") && (G = G.replace("<anonymous>", o.displayName)), typeof o == "function" && Ne.set(o, G), G;
745
687
  }
746
- while (D >= 1 && F >= 0);
688
+ while (O >= 1 && F >= 0);
747
689
  break;
748
690
  }
749
691
  }
750
692
  } finally {
751
- Le = !1, Ie.current = I, Lt(), Error.prepareStackTrace = T;
693
+ De = !1, Pe.current = I, Mt(), Error.prepareStackTrace = T;
752
694
  }
753
695
  var ie = o ? o.displayName || o.name : "", te = ie ? _e(ie) : "";
754
696
  return typeof o == "function" && Ne.set(o, te), te;
755
697
  }
756
- function Dt(o, u, g) {
757
- return Ye(o, !1);
698
+ function Ot(o, u, g) {
699
+ return Je(o, !1);
758
700
  }
759
701
  function Ft(o) {
760
702
  var u = o.prototype;
@@ -764,7 +706,7 @@ function vr() {
764
706
  if (o == null)
765
707
  return "";
766
708
  if (typeof o == "function")
767
- return Ye(o, Ft(o));
709
+ return Je(o, Ft(o));
768
710
  if (typeof o == "string")
769
711
  return _e(o);
770
712
  switch (o) {
@@ -776,7 +718,7 @@ function vr() {
776
718
  if (typeof o == "object")
777
719
  switch (o.$$typeof) {
778
720
  case d:
779
- return Dt(o.render);
721
+ return Ot(o.render);
780
722
  case f:
781
723
  return Ce(o.type, u, g);
782
724
  case y: {
@@ -789,15 +731,15 @@ function vr() {
789
731
  }
790
732
  return "";
791
733
  }
792
- var he = Object.prototype.hasOwnProperty, Ke = {}, Xe = j.ReactDebugCurrentFrame;
734
+ var he = Object.prototype.hasOwnProperty, Ye = {}, Ke = j.ReactDebugCurrentFrame;
793
735
  function Se(o) {
794
736
  if (o) {
795
737
  var u = o._owner, g = Ce(o.type, o._source, u ? u.type : null);
796
- Xe.setExtraStackFrame(g);
738
+ Ke.setExtraStackFrame(g);
797
739
  } else
798
- Xe.setExtraStackFrame(null);
740
+ Ke.setExtraStackFrame(null);
799
741
  }
800
- function zt(o, u, g, _, T) {
742
+ function $t(o, u, g, _, T) {
801
743
  {
802
744
  var I = Function.call.bind(he);
803
745
  for (var R in o)
@@ -805,20 +747,20 @@ function vr() {
805
747
  var A = void 0;
806
748
  try {
807
749
  if (typeof o[R] != "function") {
808
- var z = Error((_ || "React class") + ": " + g + " type `" + R + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof o[R] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
809
- throw z.name = "Invariant Violation", z;
750
+ var $ = Error((_ || "React class") + ": " + g + " type `" + R + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof o[R] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
751
+ throw $.name = "Invariant Violation", $;
810
752
  }
811
753
  A = o[R](u, R, _, g, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
812
- } catch (D) {
813
- A = D;
754
+ } catch (O) {
755
+ A = O;
814
756
  }
815
- A && !(A instanceof Error) && (Se(T), w("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", _ || "React class", g, R, typeof A), Se(null)), A instanceof Error && !(A.message in Ke) && (Ke[A.message] = !0, Se(T), w("Failed %s type: %s", g, A.message), Se(null));
757
+ A && !(A instanceof Error) && (Se(T), w("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", _ || "React class", g, R, typeof A), Se(null)), A instanceof Error && !(A.message in Ye) && (Ye[A.message] = !0, Se(T), w("Failed %s type: %s", g, A.message), Se(null));
816
758
  }
817
759
  }
818
760
  }
819
- var $t = Array.isArray;
820
- function Oe(o) {
821
- return $t(o);
761
+ var zt = Array.isArray;
762
+ function Me(o) {
763
+ return zt(o);
822
764
  }
823
765
  function Bt(o) {
824
766
  {
@@ -828,24 +770,24 @@ function vr() {
828
770
  }
829
771
  function Ut(o) {
830
772
  try {
831
- return Ze(o), !1;
773
+ return Xe(o), !1;
832
774
  } catch {
833
775
  return !0;
834
776
  }
835
777
  }
836
- function Ze(o) {
778
+ function Xe(o) {
837
779
  return "" + o;
838
780
  }
839
- function Qe(o) {
781
+ function Ze(o) {
840
782
  if (Ut(o))
841
- return w("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Bt(o)), Ze(o);
783
+ return w("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Bt(o)), Xe(o);
842
784
  }
843
- var et = j.ReactCurrentOwner, Wt = {
785
+ var Qe = j.ReactCurrentOwner, Wt = {
844
786
  key: !0,
845
787
  ref: !0,
846
788
  __self: !0,
847
789
  __source: !0
848
- }, tt, rt;
790
+ }, et, tt;
849
791
  function Gt(o) {
850
792
  if (he.call(o, "ref")) {
851
793
  var u = Object.getOwnPropertyDescriptor(o, "ref").get;
@@ -863,12 +805,12 @@ function vr() {
863
805
  return o.key !== void 0;
864
806
  }
865
807
  function Vt(o, u) {
866
- typeof o.ref == "string" && et.current;
808
+ typeof o.ref == "string" && Qe.current;
867
809
  }
868
810
  function Ht(o, u) {
869
811
  {
870
812
  var g = function() {
871
- tt || (tt = !0, w("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", u));
813
+ et || (et = !0, w("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", u));
872
814
  };
873
815
  g.isReactWarning = !0, Object.defineProperty(o, "key", {
874
816
  get: g,
@@ -879,7 +821,7 @@ function vr() {
879
821
  function Jt(o, u) {
880
822
  {
881
823
  var g = function() {
882
- rt || (rt = !0, w("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", u));
824
+ tt || (tt = !0, w("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", u));
883
825
  };
884
826
  g.isReactWarning = !0, Object.defineProperty(o, "ref", {
885
827
  get: g,
@@ -918,39 +860,39 @@ function vr() {
918
860
  };
919
861
  function Kt(o, u, g, _, T) {
920
862
  {
921
- var I, R = {}, A = null, z = null;
922
- g !== void 0 && (Qe(g), A = "" + g), qt(u) && (Qe(u.key), A = "" + u.key), Gt(u) && (z = u.ref, Vt(u, T));
863
+ var I, R = {}, A = null, $ = null;
864
+ g !== void 0 && (Ze(g), A = "" + g), qt(u) && (Ze(u.key), A = "" + u.key), Gt(u) && ($ = u.ref, Vt(u, T));
923
865
  for (I in u)
924
866
  he.call(u, I) && !Wt.hasOwnProperty(I) && (R[I] = u[I]);
925
867
  if (o && o.defaultProps) {
926
- var D = o.defaultProps;
927
- for (I in D)
928
- R[I] === void 0 && (R[I] = D[I]);
868
+ var O = o.defaultProps;
869
+ for (I in O)
870
+ R[I] === void 0 && (R[I] = O[I]);
929
871
  }
930
- if (A || z) {
872
+ if (A || $) {
931
873
  var F = typeof o == "function" ? o.displayName || o.name || "Unknown" : o;
932
- A && Ht(R, F), z && Jt(R, F);
874
+ A && Ht(R, F), $ && Jt(R, F);
933
875
  }
934
- return Yt(o, A, z, T, _, et.current, R);
876
+ return Yt(o, A, $, T, _, Qe.current, R);
935
877
  }
936
878
  }
937
- var De = j.ReactCurrentOwner, nt = j.ReactDebugCurrentFrame;
879
+ var Le = j.ReactCurrentOwner, rt = j.ReactDebugCurrentFrame;
938
880
  function ae(o) {
939
881
  if (o) {
940
882
  var u = o._owner, g = Ce(o.type, o._source, u ? u.type : null);
941
- nt.setExtraStackFrame(g);
883
+ rt.setExtraStackFrame(g);
942
884
  } else
943
- nt.setExtraStackFrame(null);
885
+ rt.setExtraStackFrame(null);
944
886
  }
945
- var Fe;
946
- Fe = !1;
947
- function ze(o) {
887
+ var Oe;
888
+ Oe = !1;
889
+ function Fe(o) {
948
890
  return typeof o == "object" && o !== null && o.$$typeof === r;
949
891
  }
950
- function ot() {
892
+ function nt() {
951
893
  {
952
- if (De.current) {
953
- var o = q(De.current.type);
894
+ if (Le.current) {
895
+ var o = q(Le.current.type);
954
896
  if (o)
955
897
  return `
956
898
 
@@ -962,10 +904,10 @@ Check the render method of \`` + o + "`.";
962
904
  function Xt(o) {
963
905
  return "";
964
906
  }
965
- var st = {};
907
+ var ot = {};
966
908
  function Zt(o) {
967
909
  {
968
- var u = ot();
910
+ var u = nt();
969
911
  if (!u) {
970
912
  var g = typeof o == "string" ? o : o.displayName || o.name;
971
913
  g && (u = `
@@ -975,35 +917,35 @@ Check the top-level render call using <` + g + ">.");
975
917
  return u;
976
918
  }
977
919
  }
978
- function at(o, u) {
920
+ function st(o, u) {
979
921
  {
980
922
  if (!o._store || o._store.validated || o.key != null)
981
923
  return;
982
924
  o._store.validated = !0;
983
925
  var g = Zt(u);
984
- if (st[g])
926
+ if (ot[g])
985
927
  return;
986
- st[g] = !0;
928
+ ot[g] = !0;
987
929
  var _ = "";
988
- o && o._owner && o._owner !== De.current && (_ = " It was passed a child from " + q(o._owner.type) + "."), ae(o), w('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', g, _), ae(null);
930
+ o && o._owner && o._owner !== Le.current && (_ = " It was passed a child from " + q(o._owner.type) + "."), ae(o), w('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', g, _), ae(null);
989
931
  }
990
932
  }
991
- function it(o, u) {
933
+ function at(o, u) {
992
934
  {
993
935
  if (typeof o != "object")
994
936
  return;
995
- if (Oe(o))
937
+ if (Me(o))
996
938
  for (var g = 0; g < o.length; g++) {
997
939
  var _ = o[g];
998
- ze(_) && at(_, u);
940
+ Fe(_) && st(_, u);
999
941
  }
1000
- else if (ze(o))
942
+ else if (Fe(o))
1001
943
  o._store && (o._store.validated = !0);
1002
944
  else if (o) {
1003
945
  var T = x(o);
1004
946
  if (typeof T == "function" && T !== o.entries)
1005
947
  for (var I = T.call(o), R; !(R = I.next()).done; )
1006
- ze(R.value) && at(R.value, u);
948
+ Fe(R.value) && st(R.value, u);
1007
949
  }
1008
950
  }
1009
951
  }
@@ -1023,9 +965,9 @@ Check the top-level render call using <` + g + ">.");
1023
965
  return;
1024
966
  if (g) {
1025
967
  var _ = q(u);
1026
- zt(g, o.props, "prop", _, o);
1027
- } else if (u.PropTypes !== void 0 && !Fe) {
1028
- Fe = !0;
968
+ $t(g, o.props, "prop", _, o);
969
+ } else if (u.PropTypes !== void 0 && !Oe) {
970
+ Oe = !0;
1029
971
  var T = q(u);
1030
972
  w("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", T || "Unknown");
1031
973
  }
@@ -1044,17 +986,17 @@ Check the top-level render call using <` + g + ">.");
1044
986
  o.ref !== null && (ae(o), w("Invalid attribute `ref` supplied to `React.Fragment`."), ae(null));
1045
987
  }
1046
988
  }
1047
- var lt = {};
1048
- function ct(o, u, g, _, T, I) {
989
+ var it = {};
990
+ function lt(o, u, g, _, T, I) {
1049
991
  {
1050
992
  var R = pe(o);
1051
993
  if (!R) {
1052
994
  var A = "";
1053
995
  (o === void 0 || typeof o == "object" && o !== null && Object.keys(o).length === 0) && (A += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
1054
- var z = Xt();
1055
- z ? A += z : A += ot();
1056
- var D;
1057
- o === null ? D = "null" : Oe(o) ? D = "array" : o !== void 0 && o.$$typeof === r ? (D = "<" + (q(o.type) || "Unknown") + " />", A = " Did you accidentally export a JSX literal instead of a component?") : D = typeof o, w("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", D, A);
996
+ var $ = Xt();
997
+ $ ? A += $ : A += nt();
998
+ var O;
999
+ o === null ? O = "null" : Me(o) ? O = "array" : o !== void 0 && o.$$typeof === r ? (O = "<" + (q(o.type) || "Unknown") + " />", A = " Did you accidentally export a JSX literal instead of a component?") : O = typeof o, w("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", O, A);
1058
1000
  }
1059
1001
  var F = Kt(o, u, g, T, I);
1060
1002
  if (F == null)
@@ -1063,44 +1005,44 @@ Check the top-level render call using <` + g + ">.");
1063
1005
  var G = u.children;
1064
1006
  if (G !== void 0)
1065
1007
  if (_)
1066
- if (Oe(G)) {
1008
+ if (Me(G)) {
1067
1009
  for (var ie = 0; ie < G.length; ie++)
1068
- it(G[ie], o);
1010
+ at(G[ie], o);
1069
1011
  Object.freeze && Object.freeze(G);
1070
1012
  } else
1071
1013
  w("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
1072
1014
  else
1073
- it(G, o);
1015
+ at(G, o);
1074
1016
  }
1075
1017
  if (he.call(u, "key")) {
1076
1018
  var te = q(o), B = Object.keys(u).filter(function(ar) {
1077
1019
  return ar !== "key";
1078
1020
  }), $e = B.length > 0 ? "{key: someKey, " + B.join(": ..., ") + ": ...}" : "{key: someKey}";
1079
- if (!lt[te + $e]) {
1021
+ if (!it[te + $e]) {
1080
1022
  var sr = B.length > 0 ? "{" + B.join(": ..., ") + ": ...}" : "{}";
1081
1023
  w(`A props object containing a "key" prop is being spread into JSX:
1082
1024
  let props = %s;
1083
1025
  <%s {...props} />
1084
1026
  React keys must be passed directly to JSX without using spread:
1085
1027
  let props = %s;
1086
- <%s key={someKey} {...props} />`, $e, te, sr, te), lt[te + $e] = !0;
1028
+ <%s key={someKey} {...props} />`, $e, te, sr, te), it[te + $e] = !0;
1087
1029
  }
1088
1030
  }
1089
1031
  return o === s ? er(F) : Qt(F), F;
1090
1032
  }
1091
1033
  }
1092
1034
  function tr(o, u, g) {
1093
- return ct(o, u, g, !0);
1035
+ return lt(o, u, g, !0);
1094
1036
  }
1095
1037
  function rr(o, u, g) {
1096
- return ct(o, u, g, !1);
1038
+ return lt(o, u, g, !1);
1097
1039
  }
1098
1040
  var nr = rr, or = tr;
1099
1041
  be.Fragment = s, be.jsx = nr, be.jsxs = or;
1100
1042
  }()), be;
1101
1043
  }
1102
- process.env.NODE_ENV === "production" ? Ue.exports = yr() : Ue.exports = vr();
1103
- var t = Ue.exports;
1044
+ process.env.NODE_ENV === "production" ? Be.exports = hr() : Be.exports = xr();
1045
+ var t = Be.exports;
1104
1046
  const pt = {
1105
1047
  apiBaseUrl: "/api/v1",
1106
1048
  defaultFormats: ["action_card", "suffix"],
@@ -1109,8 +1051,8 @@ const pt = {
1109
1051
  debug: !1,
1110
1052
  timeout: 5e3,
1111
1053
  maxRetries: 2
1112
- }, kt = cr(void 0);
1113
- function Rn({ config: e, initialConfig: r, children: n }) {
1054
+ }, kt = ir(void 0);
1055
+ function Sn({ config: e, initialConfig: r, children: n }) {
1114
1056
  const [s, l] = E(() => {
1115
1057
  const d = {
1116
1058
  ...pt,
@@ -1118,12 +1060,12 @@ function Rn({ config: e, initialConfig: r, children: n }) {
1118
1060
  ...e
1119
1061
  };
1120
1062
  return typeof window < "u" && (window.__AD_CONFIG__ = d), d;
1121
- }), a = $((d) => {
1063
+ }), a = z((d) => {
1122
1064
  l((m) => {
1123
1065
  const p = { ...m, ...d };
1124
1066
  return typeof window < "u" && (window.__AD_CONFIG__ = p), (s.debug || d.debug) && console.log("[AdProvider] Config updated:", d), p;
1125
1067
  });
1126
- }, [s.debug]), c = $(() => {
1068
+ }, [s.debug]), c = z(() => {
1127
1069
  const d = { ...pt };
1128
1070
  l(d), typeof window < "u" && (window.__AD_CONFIG__ = d), console.log("[AdProvider] Config reset to defaults");
1129
1071
  }, []), i = {
@@ -1131,19 +1073,27 @@ function Rn({ config: e, initialConfig: r, children: n }) {
1131
1073
  updateConfig: a,
1132
1074
  resetConfig: c
1133
1075
  };
1134
- return /* @__PURE__ */ t.jsx(kt.Provider, { value: i, children: n });
1076
+ return t.jsx(kt.Provider, { value: i, children: n });
1135
1077
  }
1136
- function Tn() {
1137
- const e = dr(kt);
1078
+ function An() {
1079
+ const e = lr(kt);
1138
1080
  if (e === void 0)
1139
1081
  throw new Error("useAdConfig must be used within an AdProvider");
1140
1082
  return e;
1141
1083
  }
1142
- class wr {
1084
+ class br {
1143
1085
  constructor(r = !1) {
1144
- Ae(this, "debug");
1145
- Ae(this, "prefix", "[AdSDK]");
1146
- this.debug = r;
1086
+ Object.defineProperty(this, "debug", {
1087
+ enumerable: !0,
1088
+ configurable: !0,
1089
+ writable: !0,
1090
+ value: void 0
1091
+ }), Object.defineProperty(this, "prefix", {
1092
+ enumerable: !0,
1093
+ configurable: !0,
1094
+ writable: !0,
1095
+ value: "[AdSDK]"
1096
+ }), this.debug = r;
1147
1097
  }
1148
1098
  enable() {
1149
1099
  this.debug = !0, this.log("Debug logging enabled");
@@ -1164,8 +1114,8 @@ class wr {
1164
1114
  this.debug && console.info(this.prefix, ...r);
1165
1115
  }
1166
1116
  }
1167
- function Pn(e) {
1168
- return new wr(e.debug);
1117
+ function En(e) {
1118
+ return new br(e.debug);
1169
1119
  }
1170
1120
  function _t(e) {
1171
1121
  var r, n, s = "";
@@ -1176,19 +1126,19 @@ function _t(e) {
1176
1126
  } else for (n in e) e[n] && (s && (s += " "), s += n);
1177
1127
  return s;
1178
1128
  }
1179
- function jr() {
1129
+ function yr() {
1180
1130
  for (var e, r, n = 0, s = "", l = arguments.length; n < l; n++) (e = arguments[n]) && (r = _t(e)) && (s && (s += " "), s += r);
1181
1131
  return s;
1182
1132
  }
1183
- const Ve = "-", kr = (e) => {
1184
- const r = Nr(e), {
1133
+ const qe = "-", vr = (e) => {
1134
+ const r = jr(e), {
1185
1135
  conflictingClassGroups: n,
1186
1136
  conflictingClassGroupModifiers: s
1187
1137
  } = e;
1188
1138
  return {
1189
1139
  getClassGroupId: (c) => {
1190
- const i = c.split(Ve);
1191
- return i[0] === "" && i.length !== 1 && i.shift(), Nt(i, r) || _r(c);
1140
+ const i = c.split(qe);
1141
+ return i[0] === "" && i.length !== 1 && i.shift(), Nt(i, r) || wr(c);
1192
1142
  },
1193
1143
  getConflictingClassGroupIds: (c, i) => {
1194
1144
  const d = n[c] || [];
@@ -1204,17 +1154,17 @@ const Ve = "-", kr = (e) => {
1204
1154
  return l;
1205
1155
  if (r.validators.length === 0)
1206
1156
  return;
1207
- const a = e.join(Ve);
1157
+ const a = e.join(qe);
1208
1158
  return (c = r.validators.find(({
1209
1159
  validator: i
1210
1160
  }) => i(a))) == null ? void 0 : c.classGroupId;
1211
- }, mt = /^\[(.+)\]$/, _r = (e) => {
1161
+ }, mt = /^\[(.+)\]$/, wr = (e) => {
1212
1162
  if (mt.test(e)) {
1213
1163
  const r = mt.exec(e)[1], n = r == null ? void 0 : r.substring(0, r.indexOf(":"));
1214
1164
  if (n)
1215
1165
  return "arbitrary.." + n;
1216
1166
  }
1217
- }, Nr = (e) => {
1167
+ }, jr = (e) => {
1218
1168
  const {
1219
1169
  theme: r,
1220
1170
  prefix: n
@@ -1222,10 +1172,10 @@ const Ve = "-", kr = (e) => {
1222
1172
  nextPart: /* @__PURE__ */ new Map(),
1223
1173
  validators: []
1224
1174
  };
1225
- return Sr(Object.entries(e.classGroups), n).forEach(([a, c]) => {
1226
- We(c, s, a, r);
1175
+ return _r(Object.entries(e.classGroups), n).forEach(([a, c]) => {
1176
+ Ue(c, s, a, r);
1227
1177
  }), s;
1228
- }, We = (e, r, n, s) => {
1178
+ }, Ue = (e, r, n, s) => {
1229
1179
  e.forEach((l) => {
1230
1180
  if (typeof l == "string") {
1231
1181
  const a = l === "" ? r : ft(r, l);
@@ -1233,8 +1183,8 @@ const Ve = "-", kr = (e) => {
1233
1183
  return;
1234
1184
  }
1235
1185
  if (typeof l == "function") {
1236
- if (Cr(l)) {
1237
- We(l(s), r, n, s);
1186
+ if (kr(l)) {
1187
+ Ue(l(s), r, n, s);
1238
1188
  return;
1239
1189
  }
1240
1190
  r.validators.push({
@@ -1244,21 +1194,21 @@ const Ve = "-", kr = (e) => {
1244
1194
  return;
1245
1195
  }
1246
1196
  Object.entries(l).forEach(([a, c]) => {
1247
- We(c, ft(r, a), n, s);
1197
+ Ue(c, ft(r, a), n, s);
1248
1198
  });
1249
1199
  });
1250
1200
  }, ft = (e, r) => {
1251
1201
  let n = e;
1252
- return r.split(Ve).forEach((s) => {
1202
+ return r.split(qe).forEach((s) => {
1253
1203
  n.nextPart.has(s) || n.nextPart.set(s, {
1254
1204
  nextPart: /* @__PURE__ */ new Map(),
1255
1205
  validators: []
1256
1206
  }), n = n.nextPart.get(s);
1257
1207
  }), n;
1258
- }, Cr = (e) => e.isThemeGetter, Sr = (e, r) => r ? e.map(([n, s]) => {
1208
+ }, kr = (e) => e.isThemeGetter, _r = (e, r) => r ? e.map(([n, s]) => {
1259
1209
  const l = s.map((a) => typeof a == "string" ? r + a : typeof a == "object" ? Object.fromEntries(Object.entries(a).map(([c, i]) => [r + c, i])) : a);
1260
1210
  return [n, l];
1261
- }) : e, Ar = (e) => {
1211
+ }) : e, Nr = (e) => {
1262
1212
  if (e < 1)
1263
1213
  return {
1264
1214
  get: () => {
@@ -1282,7 +1232,7 @@ const Ve = "-", kr = (e) => {
1282
1232
  n.has(a) ? n.set(a, c) : l(a, c);
1283
1233
  }
1284
1234
  };
1285
- }, Ct = "!", Er = (e) => {
1235
+ }, Ct = "!", Cr = (e) => {
1286
1236
  const {
1287
1237
  separator: r,
1288
1238
  experimentalParseClassName: n
@@ -1315,7 +1265,7 @@ const Ve = "-", kr = (e) => {
1315
1265
  className: i,
1316
1266
  parseClassName: c
1317
1267
  }) : c;
1318
- }, Rr = (e) => {
1268
+ }, Sr = (e) => {
1319
1269
  if (e.length <= 1)
1320
1270
  return e;
1321
1271
  const r = [];
@@ -1323,16 +1273,16 @@ const Ve = "-", kr = (e) => {
1323
1273
  return e.forEach((s) => {
1324
1274
  s[0] === "[" ? (r.push(...n.sort(), s), n = []) : n.push(s);
1325
1275
  }), r.push(...n.sort()), r;
1326
- }, Tr = (e) => ({
1327
- cache: Ar(e.cacheSize),
1328
- parseClassName: Er(e),
1329
- ...kr(e)
1330
- }), Pr = /\s+/, Ir = (e, r) => {
1276
+ }, Ar = (e) => ({
1277
+ cache: Nr(e.cacheSize),
1278
+ parseClassName: Cr(e),
1279
+ ...vr(e)
1280
+ }), Er = /\s+/, Rr = (e, r) => {
1331
1281
  const {
1332
1282
  parseClassName: n,
1333
1283
  getClassGroupId: s,
1334
1284
  getConflictingClassGroupIds: l
1335
- } = r, a = [], c = e.trim().split(Pr);
1285
+ } = r, a = [], c = e.trim().split(Er);
1336
1286
  let i = "";
1337
1287
  for (let d = c.length - 1; d >= 0; d -= 1) {
1338
1288
  const m = c[d], {
@@ -1353,20 +1303,20 @@ const Ve = "-", kr = (e) => {
1353
1303
  }
1354
1304
  v = !1;
1355
1305
  }
1356
- const x = Rr(p).join(":"), j = f ? x + Ct : x, w = j + b;
1306
+ const x = Sr(p).join(":"), j = f ? x + Ct : x, w = j + b;
1357
1307
  if (a.includes(w))
1358
1308
  continue;
1359
1309
  a.push(w);
1360
1310
  const k = l(b, v);
1361
1311
  for (let S = 0; S < k.length; ++S) {
1362
- const M = k[S];
1363
- a.push(j + M);
1312
+ const D = k[S];
1313
+ a.push(j + D);
1364
1314
  }
1365
1315
  i = m + (i.length > 0 ? " " + i : i);
1366
1316
  }
1367
1317
  return i;
1368
1318
  };
1369
- function Mr() {
1319
+ function Tr() {
1370
1320
  let e = 0, r, n, s = "";
1371
1321
  for (; e < arguments.length; )
1372
1322
  (r = arguments[e++]) && (n = St(r)) && (s && (s += " "), s += n);
@@ -1380,36 +1330,36 @@ const St = (e) => {
1380
1330
  e[s] && (r = St(e[s])) && (n && (n += " "), n += r);
1381
1331
  return n;
1382
1332
  };
1383
- function Lr(e, ...r) {
1333
+ function Pr(e, ...r) {
1384
1334
  let n, s, l, a = c;
1385
1335
  function c(d) {
1386
1336
  const m = r.reduce((p, f) => f(p), e());
1387
- return n = Tr(m), s = n.cache.get, l = n.cache.set, a = i, i(d);
1337
+ return n = Ar(m), s = n.cache.get, l = n.cache.set, a = i, i(d);
1388
1338
  }
1389
1339
  function i(d) {
1390
1340
  const m = s(d);
1391
1341
  if (m)
1392
1342
  return m;
1393
- const p = Ir(d, n);
1343
+ const p = Rr(d, n);
1394
1344
  return l(d, p), p;
1395
1345
  }
1396
1346
  return function() {
1397
- return a(Mr.apply(null, arguments));
1347
+ return a(Tr.apply(null, arguments));
1398
1348
  };
1399
1349
  }
1400
- const L = (e) => {
1350
+ const M = (e) => {
1401
1351
  const r = (n) => n[e] || [];
1402
1352
  return r.isThemeGetter = !0, r;
1403
- }, At = /^\[(?:([a-z-]+):)?(.+)\]$/i, Or = /^\d+\/\d+$/, Dr = /* @__PURE__ */ new Set(["px", "full", "screen"]), Fr = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, zr = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, $r = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/, Br = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, Ur = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, J = (e) => le(e) || Dr.has(e) || Or.test(e), X = (e) => ue(e, "length", Kr), le = (e) => !!e && !Number.isNaN(Number(e)), Be = (e) => ue(e, "number", le), ye = (e) => !!e && Number.isInteger(Number(e)), Wr = (e) => e.endsWith("%") && le(e.slice(0, -1)), C = (e) => At.test(e), Z = (e) => Fr.test(e), Gr = /* @__PURE__ */ new Set(["length", "size", "percentage"]), qr = (e) => ue(e, Gr, Et), Vr = (e) => ue(e, "position", Et), Hr = /* @__PURE__ */ new Set(["image", "url"]), Jr = (e) => ue(e, Hr, Zr), Yr = (e) => ue(e, "", Xr), ve = () => !0, ue = (e, r, n) => {
1353
+ }, At = /^\[(?:([a-z-]+):)?(.+)\]$/i, Ir = /^\d+\/\d+$/, Dr = /* @__PURE__ */ new Set(["px", "full", "screen"]), Mr = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Lr = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Or = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/, Fr = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, $r = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, J = (e) => le(e) || Dr.has(e) || Ir.test(e), X = (e) => ue(e, "length", Hr), le = (e) => !!e && !Number.isNaN(Number(e)), ze = (e) => ue(e, "number", le), ye = (e) => !!e && Number.isInteger(Number(e)), zr = (e) => e.endsWith("%") && le(e.slice(0, -1)), C = (e) => At.test(e), Z = (e) => Mr.test(e), Br = /* @__PURE__ */ new Set(["length", "size", "percentage"]), Ur = (e) => ue(e, Br, Et), Wr = (e) => ue(e, "position", Et), Gr = /* @__PURE__ */ new Set(["image", "url"]), qr = (e) => ue(e, Gr, Yr), Vr = (e) => ue(e, "", Jr), ve = () => !0, ue = (e, r, n) => {
1404
1354
  const s = At.exec(e);
1405
1355
  return s ? s[1] ? typeof r == "string" ? s[1] === r : r.has(s[1]) : n(s[2]) : !1;
1406
- }, Kr = (e) => (
1356
+ }, Hr = (e) => (
1407
1357
  // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
1408
1358
  // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
1409
1359
  // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
1410
- zr.test(e) && !$r.test(e)
1411
- ), Et = () => !1, Xr = (e) => Br.test(e), Zr = (e) => Ur.test(e), Qr = () => {
1412
- const e = L("colors"), r = L("spacing"), n = L("blur"), s = L("brightness"), l = L("borderColor"), a = L("borderRadius"), c = L("borderSpacing"), i = L("borderWidth"), d = L("contrast"), m = L("grayscale"), p = L("hueRotate"), f = L("invert"), y = L("gap"), N = L("gradientColorStops"), v = L("gradientColorStopPositions"), b = L("inset"), x = L("margin"), j = L("opacity"), w = L("padding"), k = L("saturate"), S = L("scale"), M = L("sepia"), O = L("skew"), re = L("space"), ne = L("translate"), oe = () => ["auto", "contain", "none"], pe = () => ["auto", "hidden", "clip", "visible", "scroll"], me = () => ["auto", C, r], P = () => [C, r], q = () => ["", J, X], U = () => ["auto", le, C], Y = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"], ee = () => ["solid", "dashed", "dotted", "double", "none"], fe = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], se = () => ["start", "end", "center", "between", "around", "evenly", "stretch"], K = () => ["", "0", C], ge = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], W = () => [le, C];
1360
+ Lr.test(e) && !Or.test(e)
1361
+ ), Et = () => !1, Jr = (e) => Fr.test(e), Yr = (e) => $r.test(e), Kr = () => {
1362
+ const e = M("colors"), r = M("spacing"), n = M("blur"), s = M("brightness"), l = M("borderColor"), a = M("borderRadius"), c = M("borderSpacing"), i = M("borderWidth"), d = M("contrast"), m = M("grayscale"), p = M("hueRotate"), f = M("invert"), y = M("gap"), N = M("gradientColorStops"), v = M("gradientColorStopPositions"), b = M("inset"), x = M("margin"), j = M("opacity"), w = M("padding"), k = M("saturate"), S = M("scale"), D = M("sepia"), L = M("skew"), re = M("space"), ne = M("translate"), oe = () => ["auto", "contain", "none"], pe = () => ["auto", "hidden", "clip", "visible", "scroll"], me = () => ["auto", C, r], P = () => [C, r], q = () => ["", J, X], U = () => ["auto", le, C], Y = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"], ee = () => ["solid", "dashed", "dotted", "double", "none"], fe = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], se = () => ["start", "end", "center", "between", "around", "evenly", "stretch"], K = () => ["", "0", C], ge = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], W = () => [le, C];
1413
1363
  return {
1414
1364
  cacheSize: 500,
1415
1365
  separator: ":",
@@ -1428,7 +1378,7 @@ const L = (e) => {
1428
1378
  invert: K(),
1429
1379
  gap: P(),
1430
1380
  gradientColorStops: [e],
1431
- gradientColorStopPositions: [Wr, X],
1381
+ gradientColorStopPositions: [zr, X],
1432
1382
  inset: me(),
1433
1383
  margin: me(),
1434
1384
  opacity: W(),
@@ -2097,7 +2047,7 @@ const L = (e) => {
2097
2047
  * @see https://tailwindcss.com/docs/font-weight
2098
2048
  */
2099
2049
  "font-weight": [{
2100
- font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", Be]
2050
+ font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", ze]
2101
2051
  }],
2102
2052
  /**
2103
2053
  * Font Family
@@ -2148,7 +2098,7 @@ const L = (e) => {
2148
2098
  * @see https://tailwindcss.com/docs/line-clamp
2149
2099
  */
2150
2100
  "line-clamp": [{
2151
- "line-clamp": ["none", le, Be]
2101
+ "line-clamp": ["none", le, ze]
2152
2102
  }],
2153
2103
  /**
2154
2104
  * Line Height
@@ -2341,7 +2291,7 @@ const L = (e) => {
2341
2291
  * @see https://tailwindcss.com/docs/background-position
2342
2292
  */
2343
2293
  "bg-position": [{
2344
- bg: [...Y(), Vr]
2294
+ bg: [...Y(), Wr]
2345
2295
  }],
2346
2296
  /**
2347
2297
  * Background Repeat
@@ -2357,7 +2307,7 @@ const L = (e) => {
2357
2307
  * @see https://tailwindcss.com/docs/background-size
2358
2308
  */
2359
2309
  "bg-size": [{
2360
- bg: ["auto", "cover", "contain", qr]
2310
+ bg: ["auto", "cover", "contain", Ur]
2361
2311
  }],
2362
2312
  /**
2363
2313
  * Background Image
@@ -2366,7 +2316,7 @@ const L = (e) => {
2366
2316
  "bg-image": [{
2367
2317
  bg: ["none", {
2368
2318
  "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
2369
- }, Jr]
2319
+ }, qr]
2370
2320
  }],
2371
2321
  /**
2372
2322
  * Background Color
@@ -2782,7 +2732,7 @@ const L = (e) => {
2782
2732
  * @see https://tailwindcss.com/docs/box-shadow
2783
2733
  */
2784
2734
  shadow: [{
2785
- shadow: ["", "inner", "none", Z, Yr]
2735
+ shadow: ["", "inner", "none", Z, Vr]
2786
2736
  }],
2787
2737
  /**
2788
2738
  * Box Shadow Color
@@ -2882,7 +2832,7 @@ const L = (e) => {
2882
2832
  * @see https://tailwindcss.com/docs/sepia
2883
2833
  */
2884
2834
  sepia: [{
2885
- sepia: [M]
2835
+ sepia: [D]
2886
2836
  }],
2887
2837
  /**
2888
2838
  * Backdrop Filter
@@ -2953,7 +2903,7 @@ const L = (e) => {
2953
2903
  * @see https://tailwindcss.com/docs/backdrop-sepia
2954
2904
  */
2955
2905
  "backdrop-sepia": [{
2956
- "backdrop-sepia": [M]
2906
+ "backdrop-sepia": [D]
2957
2907
  }],
2958
2908
  // Tables
2959
2909
  /**
@@ -3089,14 +3039,14 @@ const L = (e) => {
3089
3039
  * @see https://tailwindcss.com/docs/skew
3090
3040
  */
3091
3041
  "skew-x": [{
3092
- "skew-x": [O]
3042
+ "skew-x": [L]
3093
3043
  }],
3094
3044
  /**
3095
3045
  * Skew Y
3096
3046
  * @see https://tailwindcss.com/docs/skew
3097
3047
  */
3098
3048
  "skew-y": [{
3099
- "skew-y": [O]
3049
+ "skew-y": [L]
3100
3050
  }],
3101
3051
  /**
3102
3052
  * Transform Origin
@@ -3362,7 +3312,7 @@ const L = (e) => {
3362
3312
  * @see https://tailwindcss.com/docs/stroke-width
3363
3313
  */
3364
3314
  "stroke-w": [{
3365
- stroke: [J, X, Be]
3315
+ stroke: [J, X, ze]
3366
3316
  }],
3367
3317
  /**
3368
3318
  * Stroke
@@ -3437,174 +3387,78 @@ const L = (e) => {
3437
3387
  "font-size": ["leading"]
3438
3388
  }
3439
3389
  };
3440
- }, en = /* @__PURE__ */ Lr(Qr);
3390
+ }, Xr = /* @__PURE__ */ Pr(Kr);
3441
3391
  function h(...e) {
3442
- return en(jr(e));
3392
+ return Xr(yr(e));
3443
3393
  }
3444
3394
  function gt({ rating: e }) {
3445
- return e ? /* @__PURE__ */ t.jsx("span", { className: "text-xs font-medium text-ad-text-secondary", children: e }) : null;
3395
+ return e ? t.jsx("span", { className: "text-xs font-medium text-ad-text-secondary", children: e }) : null;
3446
3396
  }
3447
- function tn({ variant: e }) {
3397
+ function Zr({ variant: e }) {
3448
3398
  const r = "bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 bg-[length:200%_100%] animate-shimmer";
3449
- return e === "compact" ? /* @__PURE__ */ t.jsx("div", { className: "rounded-lg p-2 w-full h-12 bg-white/60 backdrop-blur-sm border border-ad-border/50", children: /* @__PURE__ */ t.jsx("div", { className: h("rounded-md h-full w-full", r) }) }) : e === "vertical" ? /* @__PURE__ */ t.jsxs("div", { className: "rounded-xl p-3 w-64 bg-white/60 backdrop-blur-sm border border-ad-border/50", children: [
3450
- /* @__PURE__ */ t.jsx("div", { className: h("aspect-[4/3] rounded-lg mb-2", r) }),
3451
- /* @__PURE__ */ t.jsx("div", { className: h("h-3 rounded-md w-full mb-1.5", r) }),
3452
- /* @__PURE__ */ t.jsx("div", { className: h("h-2.5 rounded-md w-2/3", r) })
3453
- ] }) : /* @__PURE__ */ t.jsxs("div", { className: "rounded-xl p-3 w-full flex gap-3 bg-white/60 backdrop-blur-sm border border-ad-border/50", children: [
3454
- /* @__PURE__ */ t.jsx("div", { className: h("w-16 h-16 rounded-lg flex-shrink-0", r) }),
3455
- /* @__PURE__ */ t.jsxs("div", { className: "flex-1 space-y-1.5", children: [
3456
- /* @__PURE__ */ t.jsx("div", { className: h("h-3 rounded-md w-full", r) }),
3457
- /* @__PURE__ */ t.jsx("div", { className: h("h-2.5 rounded-md w-2/3", r) })
3458
- ] })
3459
- ] });
3399
+ return e === "compact" ? t.jsx("div", { className: "rounded-lg p-2 w-full h-12 bg-white/60 backdrop-blur-sm border border-ad-border/50", children: t.jsx("div", { className: h("rounded-md h-full w-full", r) }) }) : e === "vertical" ? t.jsxs("div", { className: "rounded-xl p-3 w-64 bg-white/60 backdrop-blur-sm border border-ad-border/50", children: [t.jsx("div", { className: h("aspect-[4/3] rounded-lg mb-2", r) }), t.jsx("div", { className: h("h-3 rounded-md w-full mb-1.5", r) }), t.jsx("div", { className: h("h-2.5 rounded-md w-2/3", r) })] }) : t.jsxs("div", { className: "rounded-xl p-3 w-full flex gap-3 bg-white/60 backdrop-blur-sm border border-ad-border/50", children: [t.jsx("div", { className: h("w-16 h-16 rounded-lg flex-shrink-0", r) }), t.jsxs("div", { className: "flex-1 space-y-1.5", children: [t.jsx("div", { className: h("h-3 rounded-md w-full", r) }), t.jsx("div", { className: h("h-2.5 rounded-md w-2/3", r) })] })] });
3460
3400
  }
3461
- function In({
3462
- ad: e,
3463
- variant: r = "horizontal",
3464
- className: n,
3465
- isLoading: s = !1,
3466
- onClick: l,
3467
- onImpression: a
3468
- }) {
3401
+ function Rn({ ad: e, variant: r = "horizontal", className: n, isLoading: s = !1, onClick: l, onImpression: a }) {
3469
3402
  const { impressionRef: c, handleClick: i } = Q(e, {
3470
3403
  onClick: l,
3471
3404
  onImpression: a
3472
3405
  });
3473
3406
  if (s)
3474
- return /* @__PURE__ */ t.jsx(tn, { variant: r });
3475
- if (!e) return null;
3407
+ return t.jsx(Zr, { variant: r });
3408
+ if (!e)
3409
+ return null;
3476
3410
  const d = "ad-component relative overflow-hidden rounded-xl bg-white/80 backdrop-blur-sm border border-ad-border/60 shadow-sm hover:shadow-md transition-all duration-200 hover:border-ad-primary/30 animate-fade-in";
3477
- return r === "compact" ? /* @__PURE__ */ t.jsx(
3478
- "div",
3479
- {
3480
- ref: c,
3481
- onClick: i,
3482
- className: h(d, "p-2 cursor-pointer group", n),
3483
- children: /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
3484
- e.content.image && /* @__PURE__ */ t.jsx("div", { className: "relative w-10 h-10 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100", children: /* @__PURE__ */ t.jsx(
3485
- "img",
3486
- {
3487
- src: e.content.image,
3488
- alt: e.content.title,
3489
- className: "w-full h-full object-cover",
3490
- loading: "lazy"
3491
- }
3492
- ) }),
3493
- /* @__PURE__ */ t.jsxs("div", { className: "flex-1 min-w-0", children: [
3494
- /* @__PURE__ */ t.jsx("p", { className: "text-xs font-semibold text-ad-text-primary truncate group-hover:text-ad-primary transition-colors leading-tight", children: e.content.title }),
3495
- e.content.price && /* @__PURE__ */ t.jsx("p", { className: "text-xs font-bold text-ad-primary mt-0.5", children: e.content.price })
3496
- ] }),
3497
- e.content.cta_text && /* @__PURE__ */ t.jsx("button", { className: "text-[10px] font-semibold text-ad-primary bg-ad-primary/10 px-2 py-1 rounded whitespace-nowrap group-hover:bg-ad-primary group-hover:text-white transition-all", children: e.content.cta_text })
3498
- ] })
3499
- }
3500
- ) : r === "vertical" ? /* @__PURE__ */ t.jsxs(
3501
- "div",
3502
- {
3503
- ref: c,
3504
- onClick: i,
3505
- className: h(d, "p-3 cursor-pointer w-64 group", n),
3506
- children: [
3507
- e.content.image && /* @__PURE__ */ t.jsx("div", { className: "relative -mx-3 -mt-3 mb-2 rounded-t-lg overflow-hidden aspect-[4/3]", children: /* @__PURE__ */ t.jsx(
3508
- "img",
3509
- {
3510
- src: e.content.image,
3511
- alt: e.content.title,
3512
- className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
3513
- loading: "lazy"
3514
- }
3515
- ) }),
3516
- /* @__PURE__ */ t.jsxs("div", { className: "space-y-1.5", children: [
3517
- /* @__PURE__ */ t.jsx("h4", { className: "font-semibold text-ad-text-primary line-clamp-2 text-sm leading-tight group-hover:text-ad-primary transition-colors", children: e.content.title }),
3518
- e.content.brand && /* @__PURE__ */ t.jsx("p", { className: "text-[10px] font-medium text-ad-text-secondary uppercase tracking-wide", children: e.content.brand }),
3519
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
3520
- e.content.rating && /* @__PURE__ */ t.jsx(gt, { rating: e.content.rating }),
3521
- e.content.price && /* @__PURE__ */ t.jsx("span", { className: "text-sm font-bold text-ad-primary", children: e.content.price })
3522
- ] }),
3523
- e.content.cta_text && /* @__PURE__ */ t.jsx("button", { className: "w-full py-1.5 px-3 bg-ad-primary text-white rounded-lg text-xs font-semibold hover:bg-ad-primaryLight transition-all duration-200 active:scale-[0.98]", children: e.content.cta_text })
3524
- ] }),
3525
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge mt-2 block text-center text-[8px] font-medium text-ad-text-muted/60 bg-white/90 backdrop-blur-sm border border-ad-border/30 px-1.5 py-0.5 rounded shadow-sm inline-flex mx-auto", children: "Sponsored" })
3526
- ]
3527
- }
3528
- ) : /* @__PURE__ */ t.jsx(
3529
- "div",
3530
- {
3531
- ref: c,
3532
- onClick: i,
3533
- className: h(d, "p-3 cursor-pointer group", n),
3534
- children: /* @__PURE__ */ t.jsxs("div", { className: "flex gap-3", children: [
3535
- e.content.image && /* @__PURE__ */ t.jsx("div", { className: "relative w-16 h-16 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100", children: /* @__PURE__ */ t.jsx(
3536
- "img",
3537
- {
3538
- src: e.content.image,
3539
- alt: e.content.title,
3540
- className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
3541
- loading: "lazy"
3542
- }
3543
- ) }),
3544
- /* @__PURE__ */ t.jsxs("div", { className: "flex-1 min-w-0 flex flex-col justify-between", children: [
3545
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-start justify-between gap-2", children: [
3546
- /* @__PURE__ */ t.jsx("h4", { className: "font-semibold text-ad-text-primary line-clamp-2 text-sm leading-tight group-hover:text-ad-primary transition-colors flex-1", children: e.content.title }),
3547
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge flex-shrink-0 text-[8px] font-medium text-ad-text-muted/60 bg-white/90 backdrop-blur-sm border border-ad-border/30 px-1.5 py-0.5 rounded shadow-sm", children: "Ad" })
3548
- ] }),
3549
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
3550
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-1.5", children: [
3551
- e.content.rating && /* @__PURE__ */ t.jsx(gt, { rating: e.content.rating }),
3552
- e.content.brand && /* @__PURE__ */ t.jsx("span", { className: "text-[10px] font-medium text-ad-text-secondary uppercase tracking-wide", children: e.content.brand })
3553
- ] }),
3554
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
3555
- e.content.price && /* @__PURE__ */ t.jsx("span", { className: "text-sm font-bold text-ad-primary", children: e.content.price }),
3556
- e.content.cta_text && /* @__PURE__ */ t.jsx("button", { className: "py-1 px-2.5 bg-ad-primary text-white rounded-md text-[10px] font-semibold hover:bg-ad-primaryLight transition-all duration-200 active:scale-[0.98] whitespace-nowrap", children: e.content.cta_text })
3557
- ] })
3558
- ] })
3559
- ] })
3560
- ] })
3561
- }
3562
- );
3411
+ return r === "compact" ? t.jsx("div", { ref: c, onClick: i, className: h(d, "p-2 cursor-pointer group", n), children: t.jsxs("div", { className: "flex items-center gap-2", children: [e.content.image && t.jsx("div", { className: "relative w-10 h-10 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100", children: t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-full h-full object-cover", loading: "lazy" }) }), t.jsxs("div", { className: "flex-1 min-w-0", children: [t.jsx("p", { className: "text-xs font-semibold text-ad-text-primary truncate group-hover:text-ad-primary transition-colors leading-tight", children: e.content.title }), e.content.price && t.jsx("p", { className: "text-xs font-bold text-ad-primary mt-0.5", children: e.content.price })] }), e.content.cta_text && t.jsx("button", { className: "text-[10px] font-semibold text-ad-primary bg-ad-primary/10 px-2 py-1 rounded whitespace-nowrap group-hover:bg-ad-primary group-hover:text-white transition-all", children: e.content.cta_text })] }) }) : r === "vertical" ? t.jsxs("div", { ref: c, onClick: i, className: h(d, "p-3 cursor-pointer w-64 group", n), children: [e.content.image && t.jsx("div", { className: "relative -mx-3 -mt-3 mb-2 rounded-t-lg overflow-hidden aspect-[4/3]", children: t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300", loading: "lazy" }) }), t.jsxs("div", { className: "space-y-1.5", children: [t.jsx("h4", { className: "font-semibold text-ad-text-primary line-clamp-2 text-sm leading-tight group-hover:text-ad-primary transition-colors", children: e.content.title }), e.content.brand && t.jsx("p", { className: "text-[10px] font-medium text-ad-text-secondary uppercase tracking-wide", children: e.content.brand }), t.jsxs("div", { className: "flex items-center gap-2", children: [e.content.rating && t.jsx(gt, { rating: e.content.rating }), e.content.price && t.jsx("span", { className: "text-sm font-bold text-ad-primary", children: e.content.price })] }), e.content.cta_text && t.jsx("button", { className: "w-full py-1.5 px-3 bg-ad-primary text-white rounded-lg text-xs font-semibold hover:bg-ad-primaryLight transition-all duration-200 active:scale-[0.98]", children: e.content.cta_text })] }), t.jsx("span", { className: "ad-sponsored-badge mt-2 block text-center text-[8px] font-medium text-ad-text-muted/60 bg-white/90 backdrop-blur-sm border border-ad-border/30 px-1.5 py-0.5 rounded shadow-sm inline-flex mx-auto", children: "Sponsored" })] }) : t.jsx("div", { ref: c, onClick: i, className: h(d, "p-3 cursor-pointer group", n), children: t.jsxs("div", { className: "flex gap-3", children: [e.content.image && t.jsx("div", { className: "relative w-16 h-16 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100", children: t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300", loading: "lazy" }) }), t.jsxs("div", { className: "flex-1 min-w-0 flex flex-col justify-between", children: [t.jsxs("div", { className: "flex items-start justify-between gap-2", children: [t.jsx("h4", { className: "font-semibold text-ad-text-primary line-clamp-2 text-sm leading-tight group-hover:text-ad-primary transition-colors flex-1", children: e.content.title }), t.jsx("span", { className: "ad-sponsored-badge flex-shrink-0 text-[8px] font-medium text-ad-text-muted/60 bg-white/90 backdrop-blur-sm border border-ad-border/30 px-1.5 py-0.5 rounded shadow-sm", children: "Ad" })] }), t.jsxs("div", { className: "flex items-center justify-between gap-2", children: [t.jsxs("div", { className: "flex items-center gap-1.5", children: [e.content.rating && t.jsx(gt, { rating: e.content.rating }), e.content.brand && t.jsx("span", { className: "text-[10px] font-medium text-ad-text-secondary uppercase tracking-wide", children: e.content.brand })] }), t.jsxs("div", { className: "flex items-center gap-2", children: [e.content.price && t.jsx("span", { className: "text-sm font-bold text-ad-primary", children: e.content.price }), e.content.cta_text && t.jsx("button", { className: "py-1 px-2.5 bg-ad-primary text-white rounded-md text-[10px] font-semibold hover:bg-ad-primaryLight transition-all duration-200 active:scale-[0.98] whitespace-nowrap", children: e.content.cta_text })] })] })] })] }) });
3563
3412
  }
3564
- class rn {
3413
+ class Qr {
3565
3414
  constructor() {
3566
- Ae(this, "suffixTemplates", [
3567
- {
3568
- id: "casual_recommendation",
3569
- template: `
3415
+ Object.defineProperty(this, "suffixTemplates", {
3416
+ enumerable: !0,
3417
+ configurable: !0,
3418
+ writable: !0,
3419
+ value: [
3420
+ {
3421
+ id: "casual_recommendation",
3422
+ template: `
3570
3423
 
3571
3424
  P.S. If you're interested, check out {product_name}. {emoji}`,
3572
- emoji: "✨",
3573
- tone: "casual"
3574
- },
3575
- {
3576
- id: "value_add",
3577
- template: `
3425
+ emoji: "✨",
3426
+ tone: "casual"
3427
+ },
3428
+ {
3429
+ id: "value_add",
3430
+ template: `
3578
3431
 
3579
3432
  By the way, {product_name} can help with that. {emoji}`,
3580
- emoji: "💡",
3581
- tone: "professional"
3582
- },
3583
- {
3584
- id: "pro_tip",
3585
- template: `
3433
+ emoji: "💡",
3434
+ tone: "professional"
3435
+ },
3436
+ {
3437
+ id: "pro_tip",
3438
+ template: `
3586
3439
 
3587
3440
  Pro tip: {product_name} is great for this. {emoji}`,
3588
- emoji: "🎯",
3589
- tone: "enthusiastic"
3590
- },
3591
- {
3592
- id: "limited_offer",
3593
- template: `
3441
+ emoji: "🎯",
3442
+ tone: "enthusiastic"
3443
+ },
3444
+ {
3445
+ id: "limited_offer",
3446
+ template: `
3594
3447
 
3595
3448
  🎁 Special: {product_name} - learn more`,
3596
- emoji: "",
3597
- tone: "enthusiastic"
3598
- },
3599
- {
3600
- id: "minimal",
3601
- template: `
3449
+ emoji: "",
3450
+ tone: "enthusiastic"
3451
+ },
3452
+ {
3453
+ id: "minimal",
3454
+ template: `
3602
3455
 
3603
3456
  {product_name}`,
3604
- emoji: "",
3605
- tone: "casual"
3606
- }
3607
- ]);
3457
+ emoji: "",
3458
+ tone: "casual"
3459
+ }
3460
+ ]
3461
+ });
3608
3462
  }
3609
3463
  /**
3610
3464
  * Generate suffix text for an ad
@@ -3680,391 +3534,62 @@ Pro tip: {product_name} is great for this. {emoji}`,
3680
3534
  return !/[.!?。!?]\s*$/.test(r);
3681
3535
  }
3682
3536
  }
3683
- const Te = new rn();
3684
- function Rt({
3685
- ad: e,
3686
- aiContext: r = "",
3687
- variant: n = "block",
3688
- className: s,
3689
- onClick: l,
3690
- onImpression: a
3691
- }) {
3537
+ const Re = new Qr();
3538
+ function Rt({ ad: e, aiContext: r = "", variant: n = "block", className: s, onClick: l, onImpression: a }) {
3692
3539
  const { impressionRef: c, handleClick: i } = Q(e, {
3693
3540
  onClick: l,
3694
3541
  onImpression: a
3695
- }), d = ur(() => Te.generateSuffix(e, r), [e, r]);
3696
- return n === "inline" ? /* @__PURE__ */ t.jsxs(
3697
- "span",
3698
- {
3699
- ref: c,
3700
- onClick: i,
3701
- className: h(
3702
- "inline-flex items-center gap-1 text-ad-primary cursor-pointer",
3703
- "hover:underline transition-all",
3704
- "text-sm font-medium",
3705
- s
3706
- ),
3707
- children: [
3708
- d,
3709
- /* @__PURE__ */ t.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) })
3710
- ]
3711
- }
3712
- ) : n === "minimal" ? /* @__PURE__ */ t.jsx(
3713
- "span",
3714
- {
3715
- ref: c,
3716
- onClick: i,
3717
- className: h(
3718
- "inline-flex items-center gap-1 text-gray-400 hover:text-ad-primary",
3719
- "cursor-pointer transition-colors",
3720
- "text-xs",
3721
- s
3722
- ),
3723
- children: d
3724
- }
3725
- ) : /* @__PURE__ */ t.jsxs(
3726
- "div",
3727
- {
3728
- ref: c,
3729
- onClick: i,
3730
- className: h(
3731
- "ad-component mt-4 p-3 rounded-lg border border-transparent",
3732
- "hover:border-ad-primary/20 hover:bg-ad-primary/5",
3733
- "cursor-pointer transition-all duration-200",
3734
- "group",
3735
- s
3736
- ),
3737
- children: [
3738
- /* @__PURE__ */ t.jsx(
3739
- "div",
3740
- {
3741
- className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none",
3742
- style: Te.getAnimatedStyle()
3743
- }
3744
- ),
3745
- /* @__PURE__ */ t.jsxs("div", { className: "relative flex items-center justify-between gap-3", children: [
3746
- /* @__PURE__ */ t.jsx("p", { className: "text-sm text-gray-700", children: d }),
3747
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
3748
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge", children: "Sponsored" }),
3749
- /* @__PURE__ */ t.jsx(
3750
- "svg",
3751
- {
3752
- className: "w-4 h-4 text-ad-primary transform group-hover:translate-x-1 transition-transform",
3753
- fill: "none",
3754
- stroke: "currentColor",
3755
- viewBox: "0 0 24 24",
3756
- children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17 8l4 4m0 0l-4 4m4-4H3" })
3757
- }
3758
- )
3759
- ] })
3760
- ] }),
3761
- e.content.image && /* @__PURE__ */ t.jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
3762
- /* @__PURE__ */ t.jsx(
3763
- "img",
3764
- {
3765
- src: e.content.image,
3766
- alt: e.content.title,
3767
- className: "w-6 h-6 rounded object-cover",
3768
- loading: "lazy"
3769
- }
3770
- ),
3771
- /* @__PURE__ */ t.jsx("span", { className: "text-xs text-gray-500", children: e.content.body })
3772
- ] })
3773
- ]
3774
- }
3775
- );
3542
+ }), d = cr(() => Re.generateSuffix(e, r), [e, r]);
3543
+ return n === "inline" ? t.jsxs("span", { ref: c, onClick: i, className: h("inline-flex items-center gap-1 text-ad-primary cursor-pointer", "hover:underline transition-all", "text-sm font-medium", s), children: [d, t.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) })] }) : n === "minimal" ? t.jsx("span", { ref: c, onClick: i, className: h("inline-flex items-center gap-1 text-gray-400 hover:text-ad-primary", "cursor-pointer transition-colors", "text-xs", s), children: d }) : t.jsxs("div", { ref: c, onClick: i, className: h("ad-component mt-4 p-3 rounded-lg border border-transparent", "hover:border-ad-primary/20 hover:bg-ad-primary/5", "cursor-pointer transition-all duration-200", "group", s), children: [t.jsx("div", { className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none", style: Re.getAnimatedStyle() }), t.jsxs("div", { className: "relative flex items-center justify-between gap-3", children: [t.jsx("p", { className: "text-sm text-gray-700", children: d }), t.jsxs("div", { className: "flex items-center gap-2 flex-shrink-0", children: [t.jsx("span", { className: "ad-sponsored-badge", children: "Sponsored" }), t.jsx("svg", { className: "w-4 h-4 text-ad-primary transform group-hover:translate-x-1 transition-transform", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17 8l4 4m0 0l-4 4m4-4H3" }) })] })] }), e.content.image && t.jsxs("div", { className: "mt-2 flex items-center gap-2", children: [t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-6 h-6 rounded object-cover", loading: "lazy" }), t.jsx("span", { className: "text-xs text-gray-500", children: e.content.body })] })] });
3776
3544
  }
3777
- function Mn(e) {
3778
- return /* @__PURE__ */ t.jsx(Rt, { ...e, variant: "inline" });
3545
+ function Tn(e) {
3546
+ return t.jsx(Rt, { ...e, variant: "inline" });
3779
3547
  }
3780
- function Ln(e) {
3781
- return /* @__PURE__ */ t.jsx(Rt, { ...e, variant: "minimal" });
3548
+ function Pn(e) {
3549
+ return t.jsx(Rt, { ...e, variant: "minimal" });
3782
3550
  }
3783
- function nn({
3784
- ad: e,
3785
- variant: r = "bubble",
3786
- className: n,
3787
- onClick: s,
3788
- onImpression: l
3789
- }) {
3551
+ function en({ ad: e, variant: r = "bubble", className: n, onClick: s, onImpression: l }) {
3790
3552
  const { impressionRef: a, handleClick: c } = Q(e, {
3791
3553
  onClick: s,
3792
3554
  onImpression: l
3793
- }), i = de.useMemo(() => Te.generateFollowUp(e), [e]);
3794
- return r === "bubble" ? /* @__PURE__ */ t.jsxs(
3795
- "button",
3796
- {
3797
- ref: a,
3798
- onClick: c,
3799
- className: h(
3800
- "ad-component group relative",
3801
- "inline-flex items-center gap-2 px-4 py-2.5",
3802
- "bg-gradient-to-r from-blue-50 to-indigo-50",
3803
- "border border-blue-100 rounded-full",
3804
- "hover:border-ad-primary/50 hover:shadow-md",
3805
- "cursor-pointer transition-all duration-200",
3806
- "text-sm font-medium text-gray-700",
3807
- n
3808
- ),
3809
- children: [
3810
- /* @__PURE__ */ t.jsx("span", { children: i }),
3811
- /* @__PURE__ */ t.jsx("span", { className: "ml-2 text-[10px] text-gray-400 uppercase tracking-wide", children: "Ad" })
3812
- ]
3813
- }
3814
- ) : r === "pill" ? /* @__PURE__ */ t.jsx(
3815
- "button",
3816
- {
3817
- ref: a,
3818
- onClick: c,
3819
- className: h(
3820
- "ad-component group",
3821
- "inline-flex items-center gap-2 px-3 py-1.5",
3822
- "bg-ad-primary/5 border border-ad-primary/20 rounded-full",
3823
- "hover:bg-ad-primary/10 hover:border-ad-primary/40",
3824
- "cursor-pointer transition-all duration-200",
3825
- "text-xs font-medium text-gray-600 hover:text-ad-primary",
3826
- n
3827
- ),
3828
- children: /* @__PURE__ */ t.jsx("span", { children: i })
3829
- }
3830
- ) : /* @__PURE__ */ t.jsxs(
3831
- "button",
3832
- {
3833
- ref: a,
3834
- onClick: c,
3835
- className: h(
3836
- "ad-component group inline-flex items-center gap-2",
3837
- "text-sm text-gray-600",
3838
- "hover:text-ad-primary",
3839
- 'relative after:content-[""] after:absolute after:bottom-0 after:left-0',
3840
- "after:w-0 after:h-px after:bg-ad-primary",
3841
- "hover:after:w-full after:transition-all after:duration-200",
3842
- "cursor-pointer transition-colors",
3843
- n
3844
- ),
3845
- children: [
3846
- /* @__PURE__ */ t.jsx("span", { children: i }),
3847
- /* @__PURE__ */ t.jsx("span", { className: "ml-1 text-[10px] text-gray-400 uppercase tracking-wide", children: "Sponsored" })
3848
- ]
3849
- }
3850
- );
3555
+ }), i = de.useMemo(() => Re.generateFollowUp(e), [e]);
3556
+ return r === "bubble" ? t.jsxs("button", { ref: a, onClick: c, className: h("ad-component group relative", "inline-flex items-center gap-2 px-4 py-2.5", "bg-gradient-to-r from-blue-50 to-indigo-50", "border border-blue-100 rounded-full", "hover:border-ad-primary/50 hover:shadow-md", "cursor-pointer transition-all duration-200", "text-sm font-medium text-gray-700", n), children: [t.jsx("span", { children: i }), t.jsx("span", { className: "ml-2 text-[10px] text-gray-400 uppercase tracking-wide", children: "Ad" })] }) : r === "pill" ? t.jsx("button", { ref: a, onClick: c, className: h("ad-component group", "inline-flex items-center gap-2 px-3 py-1.5", "bg-ad-primary/5 border border-ad-primary/20 rounded-full", "hover:bg-ad-primary/10 hover:border-ad-primary/40", "cursor-pointer transition-all duration-200", "text-xs font-medium text-gray-600 hover:text-ad-primary", n), children: t.jsx("span", { children: i }) }) : t.jsxs("button", { ref: a, onClick: c, className: h("ad-component group inline-flex items-center gap-2", "text-sm text-gray-600", "hover:text-ad-primary", 'relative after:content-[""] after:absolute after:bottom-0 after:left-0', "after:w-0 after:h-px after:bg-ad-primary", "hover:after:w-full after:transition-all after:duration-200", "cursor-pointer transition-colors", n), children: [t.jsx("span", { children: i }), t.jsx("span", { className: "ml-1 text-[10px] text-gray-400 uppercase tracking-wide", children: "Sponsored" })] });
3851
3557
  }
3852
- function On({
3853
- questions: e,
3854
- ad: r,
3855
- adPosition: n = 1,
3856
- variant: s = "bubble",
3857
- className: l,
3858
- onQuestionClick: a,
3859
- onAdClick: c,
3860
- onAdImpression: i
3861
- }) {
3558
+ function In({ questions: e, ad: r, adPosition: n = 1, variant: s = "bubble", className: l, onQuestionClick: a, onAdClick: c, onAdImpression: i }) {
3862
3559
  const d = de.useMemo(() => {
3863
- if (!r) return e.map((f) => ({ type: "question", content: f }));
3560
+ if (!r)
3561
+ return e.map((f) => ({ type: "question", content: f }));
3864
3562
  const m = [];
3865
3563
  let p = !1;
3866
3564
  return e.forEach((f, y) => {
3867
3565
  y === n && !p && (m.push({ type: "ad", content: r }), p = !0), m.push({ type: "question", content: f });
3868
3566
  }), p || m.push({ type: "ad", content: r }), m;
3869
3567
  }, [e, r, n]);
3870
- return /* @__PURE__ */ t.jsx("div", { className: h("flex flex-wrap gap-2", l), children: d.map((m, p) => m.type === "ad" ? /* @__PURE__ */ t.jsx(
3871
- nn,
3872
- {
3873
- ad: m.content,
3874
- variant: s,
3875
- onClick: c,
3876
- onImpression: i
3877
- },
3878
- `ad-${p}`
3879
- ) : /* @__PURE__ */ t.jsx(
3880
- "button",
3881
- {
3882
- onClick: () => a == null ? void 0 : a(m.content),
3883
- className: h(
3884
- "inline-flex items-center gap-2 px-4 py-2.5",
3885
- "bg-gray-100 hover:bg-gray-200",
3886
- "border border-gray-200 rounded-full",
3887
- "cursor-pointer transition-all duration-200",
3888
- "text-sm font-medium text-gray-700"
3889
- ),
3890
- children: String(m.content)
3891
- },
3892
- `question-${p}`
3893
- )) });
3568
+ return t.jsx("div", { className: h("flex flex-wrap gap-2", l), children: d.map((m, p) => m.type === "ad" ? t.jsx(en, { ad: m.content, variant: s, onClick: c, onImpression: i }, `ad-${p}`) : t.jsx("button", { onClick: () => a == null ? void 0 : a(m.content), className: h("inline-flex items-center gap-2 px-4 py-2.5", "bg-gray-100 hover:bg-gray-200", "border border-gray-200 rounded-full", "cursor-pointer transition-all duration-200", "text-sm font-medium text-gray-700"), children: String(m.content) }, `question-${p}`)) });
3894
3569
  }
3895
- function on({
3896
- ad: e,
3897
- variant: r = "card",
3898
- className: n,
3899
- onClick: s,
3900
- onImpression: l
3901
- }) {
3570
+ function tn({ ad: e, variant: r = "card", className: n, onClick: s, onImpression: l }) {
3902
3571
  var d;
3903
3572
  const { impressionRef: a, handleClick: c } = Q(e, {
3904
3573
  onClick: s,
3905
3574
  onImpression: l
3906
- }), i = de.useMemo(() => Te.generateSponsoredSource(e), [e]);
3907
- return r === "card" ? /* @__PURE__ */ t.jsxs(
3908
- "div",
3909
- {
3910
- ref: a,
3911
- onClick: c,
3912
- className: h(
3913
- "ad-component group",
3914
- "flex items-start gap-3 p-3",
3915
- "bg-white border border-gray-200 rounded-lg",
3916
- "hover:border-ad-primary/30 hover:shadow-md",
3917
- "cursor-pointer transition-all duration-200",
3918
- n
3919
- ),
3920
- children: [
3921
- e.content.image && /* @__PURE__ */ t.jsx(
3922
- "img",
3923
- {
3924
- src: e.content.image,
3925
- alt: e.content.title,
3926
- className: "w-12 h-12 rounded object-cover flex-shrink-0",
3927
- loading: "lazy"
3928
- }
3929
- ),
3930
- /* @__PURE__ */ t.jsxs("div", { className: "flex-1 min-w-0", children: [
3931
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
3932
- /* @__PURE__ */ t.jsx("h4", { className: "font-medium text-gray-900 truncate", children: e.content.title }),
3933
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge text-[10px]", children: "Sponsored" })
3934
- ] }),
3935
- e.content.body && /* @__PURE__ */ t.jsx("p", { className: "text-sm text-gray-600 line-clamp-1", children: e.content.body }),
3936
- ((d = e.metadata) == null ? void 0 : d.category) && /* @__PURE__ */ t.jsx("span", { className: "inline-block mt-1 text-xs text-gray-400", children: e.metadata.category })
3937
- ] }),
3938
- /* @__PURE__ */ t.jsx(
3939
- "svg",
3940
- {
3941
- className: "w-4 h-4 text-gray-300 group-hover:text-ad-primary transition-colors flex-shrink-0",
3942
- fill: "none",
3943
- stroke: "currentColor",
3944
- viewBox: "0 0 24 24",
3945
- children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" })
3946
- }
3947
- )
3948
- ]
3949
- }
3950
- ) : r === "list-item" ? /* @__PURE__ */ t.jsxs(
3951
- "div",
3952
- {
3953
- ref: a,
3954
- onClick: c,
3955
- className: h(
3956
- "ad-component group",
3957
- "flex items-center gap-3 py-2 px-3",
3958
- "hover:bg-gray-50 rounded-md",
3959
- "cursor-pointer transition-all duration-200",
3960
- n
3961
- ),
3962
- children: [
3963
- e.content.image && /* @__PURE__ */ t.jsx(
3964
- "img",
3965
- {
3966
- src: e.content.image,
3967
- alt: e.content.title,
3968
- className: "w-8 h-8 rounded object-cover flex-shrink-0",
3969
- loading: "lazy"
3970
- }
3971
- ),
3972
- /* @__PURE__ */ t.jsx("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
3973
- /* @__PURE__ */ t.jsx("span", { className: "text-sm font-medium text-gray-700 truncate", children: i }),
3974
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge text-[9px]", children: "Ad" })
3975
- ] }) }),
3976
- /* @__PURE__ */ t.jsx(
3977
- "svg",
3978
- {
3979
- className: "w-3 h-3 text-gray-300 group-hover:text-ad-primary transition-colors flex-shrink-0",
3980
- fill: "none",
3981
- stroke: "currentColor",
3982
- viewBox: "0 0 24 24",
3983
- children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
3984
- }
3985
- )
3986
- ]
3987
- }
3988
- ) : /* @__PURE__ */ t.jsx("div", { ref: a, className: "inline-flex", children: /* @__PURE__ */ t.jsxs(
3989
- "a",
3990
- {
3991
- onClick: c,
3992
- className: h(
3993
- "ad-component group inline-flex items-center gap-1.5",
3994
- "text-sm text-gray-600 hover:text-ad-primary",
3995
- "hover:underline",
3996
- "transition-colors",
3997
- n
3998
- ),
3999
- children: [
4000
- e.content.image && /* @__PURE__ */ t.jsx(
4001
- "img",
4002
- {
4003
- src: e.content.image,
4004
- alt: e.content.title,
4005
- className: "w-4 h-4 rounded object-cover",
4006
- loading: "lazy"
4007
- }
4008
- ),
4009
- /* @__PURE__ */ t.jsx("span", { children: i }),
4010
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge text-[9px]", children: "Ad" })
4011
- ]
4012
- }
4013
- ) });
3575
+ }), i = de.useMemo(() => Re.generateSponsoredSource(e), [e]);
3576
+ return r === "card" ? t.jsxs("div", { ref: a, onClick: c, className: h("ad-component group", "flex items-start gap-3 p-3", "bg-white border border-gray-200 rounded-lg", "hover:border-ad-primary/30 hover:shadow-md", "cursor-pointer transition-all duration-200", n), children: [e.content.image && t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-12 h-12 rounded object-cover flex-shrink-0", loading: "lazy" }), t.jsxs("div", { className: "flex-1 min-w-0", children: [t.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [t.jsx("h4", { className: "font-medium text-gray-900 truncate", children: e.content.title }), t.jsx("span", { className: "ad-sponsored-badge text-[10px]", children: "Sponsored" })] }), e.content.body && t.jsx("p", { className: "text-sm text-gray-600 line-clamp-1", children: e.content.body }), ((d = e.metadata) == null ? void 0 : d.category) && t.jsx("span", { className: "inline-block mt-1 text-xs text-gray-400", children: e.metadata.category })] }), t.jsx("svg", { className: "w-4 h-4 text-gray-300 group-hover:text-ad-primary transition-colors flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) })] }) : r === "list-item" ? t.jsxs("div", { ref: a, onClick: c, className: h("ad-component group", "flex items-center gap-3 py-2 px-3", "hover:bg-gray-50 rounded-md", "cursor-pointer transition-all duration-200", n), children: [e.content.image && t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-8 h-8 rounded object-cover flex-shrink-0", loading: "lazy" }), t.jsx("div", { className: "flex-1 min-w-0", children: t.jsxs("div", { className: "flex items-center gap-2", children: [t.jsx("span", { className: "text-sm font-medium text-gray-700 truncate", children: i }), t.jsx("span", { className: "ad-sponsored-badge text-[9px]", children: "Ad" })] }) }), t.jsx("svg", { className: "w-3 h-3 text-gray-300 group-hover:text-ad-primary transition-colors flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })] }) : t.jsx("div", { ref: a, className: "inline-flex", children: t.jsxs("a", { onClick: c, className: h("ad-component group inline-flex items-center gap-1.5", "text-sm text-gray-600 hover:text-ad-primary", "hover:underline", "transition-colors", n), children: [e.content.image && t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-4 h-4 rounded object-cover", loading: "lazy" }), t.jsx("span", { children: i }), t.jsx("span", { className: "ad-sponsored-badge text-[9px]", children: "Ad" })] }) });
4014
3577
  }
4015
- function Dn({
4016
- sources: e,
4017
- ad: r,
4018
- adPosition: n = 1,
4019
- variant: s = "list-item",
4020
- className: l,
4021
- onSourceClick: a,
4022
- onAdClick: c,
4023
- onAdImpression: i
4024
- }) {
3578
+ function Dn({ sources: e, ad: r, adPosition: n = 1, variant: s = "list-item", className: l, onSourceClick: a, onAdClick: c, onAdImpression: i }) {
4025
3579
  const d = de.useMemo(() => {
4026
- if (!r) return e.map((f) => ({ type: "source", content: f }));
3580
+ if (!r)
3581
+ return e.map((f) => ({ type: "source", content: f }));
4027
3582
  const m = [];
4028
3583
  let p = !1;
4029
3584
  return e.forEach((f, y) => {
4030
3585
  y === n && !p && (m.push({ type: "ad", content: r }), p = !0), m.push({ type: "source", content: f });
4031
3586
  }), p || m.push({ type: "ad", content: r }), m;
4032
3587
  }, [e, r, n]);
4033
- return /* @__PURE__ */ t.jsx("div", { className: h("space-y-1", l), children: d.map((m, p) => {
3588
+ return t.jsx("div", { className: h("space-y-1", l), children: d.map((m, p) => {
4034
3589
  if (m.type === "ad")
4035
- return /* @__PURE__ */ t.jsx(
4036
- on,
4037
- {
4038
- ad: m.content,
4039
- variant: s,
4040
- onClick: c,
4041
- onImpression: i
4042
- },
4043
- `ad-${p}`
4044
- );
3590
+ return t.jsx(tn, { ad: m.content, variant: s, onClick: c, onImpression: i }, `ad-${p}`);
4045
3591
  const f = m.content;
4046
- return /* @__PURE__ */ t.jsxs(
4047
- "a",
4048
- {
4049
- onClick: () => a == null ? void 0 : a(f),
4050
- className: "flex items-center gap-3 py-2 px-3 hover:bg-gray-50 rounded-md cursor-pointer transition-colors",
4051
- children: [
4052
- /* @__PURE__ */ t.jsx("div", { className: "w-8 h-8 rounded bg-gray-100 flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ t.jsx("svg", { className: "w-4 h-4 text-gray-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" }) }) }),
4053
- /* @__PURE__ */ t.jsx("span", { className: "text-sm text-gray-700 truncate", children: f.title }),
4054
- /* @__PURE__ */ t.jsx(
4055
- "svg",
4056
- {
4057
- className: "w-3 h-3 text-gray-300 ml-auto flex-shrink-0",
4058
- fill: "none",
4059
- stroke: "currentColor",
4060
- viewBox: "0 0 24 24",
4061
- children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" })
4062
- }
4063
- )
4064
- ]
4065
- },
4066
- `source-${p}`
4067
- );
3592
+ return t.jsxs("a", { onClick: () => a == null ? void 0 : a(f), className: "flex items-center gap-3 py-2 px-3 hover:bg-gray-50 rounded-md cursor-pointer transition-colors", children: [t.jsx("div", { className: "w-8 h-8 rounded bg-gray-100 flex items-center justify-center flex-shrink-0", children: t.jsx("svg", { className: "w-4 h-4 text-gray-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" }) }) }), t.jsx("span", { className: "text-sm text-gray-700 truncate", children: f.title }), t.jsx("svg", { className: "w-3 h-3 text-gray-300 ml-auto flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) })] }, `source-${p}`);
4068
3593
  }) });
4069
3594
  }
4070
3595
  const ht = {
@@ -4102,84 +3627,37 @@ const ht = {
4102
3627
  function Tt(e) {
4103
3628
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e);
4104
3629
  }
4105
- function sn(e) {
3630
+ function rn(e) {
4106
3631
  return /^[\d\s+()-]{7,}$/.test(e);
4107
3632
  }
4108
- function an(e) {
3633
+ function nn(e) {
4109
3634
  try {
4110
3635
  return new URL(e), !0;
4111
3636
  } catch {
4112
3637
  return !1;
4113
3638
  }
4114
3639
  }
4115
- function ln({
4116
- config: e,
4117
- value: r,
4118
- error: n,
4119
- disabled: s,
4120
- onChange: l
4121
- }) {
4122
- return /* @__PURE__ */ t.jsxs("div", { className: "relative", children: [
4123
- /* @__PURE__ */ t.jsx(
4124
- "input",
4125
- {
4126
- type: e.type,
4127
- placeholder: e.placeholder,
4128
- required: e.required,
4129
- value: r,
4130
- onChange: (a) => l(a.target.value),
4131
- disabled: s,
4132
- className: h(
4133
- "w-full px-3 py-2 rounded-lg text-xs",
4134
- "bg-white/70 backdrop-blur-sm",
4135
- "border transition-all duration-200",
4136
- "placeholder:text-ad-text-muted/50",
4137
- "focus:outline-none focus:ring-1 focus:ring-ad-primary/30",
4138
- "disabled:opacity-50 disabled:cursor-not-allowed",
4139
- n ? "border-red-300 focus:border-red-400" : "border-ad-border/60 focus:border-ad-primary focus:bg-white",
4140
- "shadow-sm"
4141
- )
4142
- }
4143
- ),
4144
- n && /* @__PURE__ */ t.jsxs("p", { className: "mt-1 text-[10px] text-red-500 flex items-center gap-0.5", children: [
4145
- /* @__PURE__ */ t.jsx("svg", { className: "w-2.5 h-2.5", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ t.jsx(
4146
- "path",
4147
- {
4148
- fillRule: "evenodd",
4149
- d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",
4150
- clipRule: "evenodd"
4151
- }
4152
- ) }),
4153
- n
4154
- ] })
4155
- ] });
3640
+ function on({ config: e, value: r, error: n, disabled: s, onChange: l }) {
3641
+ return t.jsxs("div", { className: "relative", children: [t.jsx("input", { type: e.type, placeholder: e.placeholder, required: e.required, value: r, onChange: (a) => l(a.target.value), disabled: s, className: h("w-full px-3 py-2 rounded-lg text-xs", "bg-white/70 backdrop-blur-sm", "border transition-all duration-200", "placeholder:text-ad-text-muted/50", "focus:outline-none focus:ring-1 focus:ring-ad-primary/30", "disabled:opacity-50 disabled:cursor-not-allowed", n ? "border-red-300 focus:border-red-400" : "border-ad-border/60 focus:border-ad-primary focus:bg-white", "shadow-sm") }), n && t.jsxs("p", { className: "mt-1 text-[10px] text-red-500 flex items-center gap-0.5", children: [t.jsx("svg", { className: "w-2.5 h-2.5", fill: "currentColor", viewBox: "0 0 20 20", children: t.jsx("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z", clipRule: "evenodd" }) }), n] })] });
4156
3642
  }
4157
- function Fn({
4158
- ad: e,
4159
- fields: r = ["email"],
4160
- submitText: n = "Get Started",
4161
- successMessage: s = "Thanks! We'll be in touch soon.",
4162
- onSuccess: l,
4163
- onError: a,
4164
- className: c
4165
- }) {
3643
+ function Mn({ ad: e, fields: r = ["email"], submitText: n = "Get Started", successMessage: s = "Thanks! We'll be in touch soon.", onSuccess: l, onError: a, className: c }) {
4166
3644
  const { impressionRef: i } = Q(e), [d, m] = E({}), [p, f] = E({}), [y, N] = E(!1), [v, b] = E(!1), x = () => {
4167
3645
  const k = {};
4168
3646
  return r.forEach((S) => {
4169
- const M = ht[S], O = d[S];
4170
- if (M.required && !O) {
4171
- k[S] = `${M.label} is required`;
3647
+ const D = ht[S], L = d[S];
3648
+ if (D.required && !L) {
3649
+ k[S] = `${D.label} is required`;
4172
3650
  return;
4173
3651
  }
4174
- if (S === "email" && O && !Tt(O)) {
3652
+ if (S === "email" && L && !Tt(L)) {
4175
3653
  k[S] = "Please enter a valid email address";
4176
3654
  return;
4177
3655
  }
4178
- if (S === "phone" && O && !sn(O)) {
3656
+ if (S === "phone" && L && !rn(L)) {
4179
3657
  k[S] = "Please enter a valid phone number";
4180
3658
  return;
4181
3659
  }
4182
- if (S === "website" && O && !an(O)) {
3660
+ if (S === "website" && L && !nn(L)) {
4183
3661
  k[S] = "Please enter a valid URL";
4184
3662
  return;
4185
3663
  }
@@ -4208,115 +3686,24 @@ function Fn({
4208
3686
  mode: "no-cors"
4209
3687
  }), b(!0), l == null || l(d), console.log("[LeadGenAd] Form submitted successfully:", d);
4210
3688
  } catch (S) {
4211
- const M = S instanceof Error ? S : new Error("Submission failed");
4212
- a == null || a(M), console.error("[LeadGenAd] Submission failed:", M);
3689
+ const D = S instanceof Error ? S : new Error("Submission failed");
3690
+ a == null || a(D), console.error("[LeadGenAd] Submission failed:", D);
4213
3691
  } finally {
4214
3692
  N(!1);
4215
3693
  }
4216
3694
  }
4217
3695
  }, w = (k, S) => {
4218
- m((M) => ({ ...M, [k]: S })), p[k] && f((M) => {
4219
- const O = { ...M };
4220
- return delete O[k], O;
3696
+ m((D) => ({ ...D, [k]: S })), p[k] && f((D) => {
3697
+ const L = { ...D };
3698
+ return delete L[k], L;
4221
3699
  });
4222
3700
  };
4223
- return v ? /* @__PURE__ */ t.jsx(
4224
- "div",
4225
- {
4226
- ref: i,
4227
- className: h(
4228
- "ad-component relative overflow-hidden rounded-lg",
4229
- "bg-gradient-to-br from-green-50 to-emerald-50",
4230
- "border border-green-200/60",
4231
- "p-3 animate-scale-in",
4232
- c
4233
- ),
4234
- children: /* @__PURE__ */ t.jsx("div", { className: "relative z-10", children: /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
4235
- /* @__PURE__ */ t.jsx("div", { className: "w-7 h-7 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ t.jsx("svg", { className: "w-3 h-3 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M5 13l4 4L19 7" }) }) }),
4236
- /* @__PURE__ */ t.jsx("p", { className: "text-xs font-semibold text-green-800 flex-1", children: s })
4237
- ] }) })
4238
- }
4239
- ) : /* @__PURE__ */ t.jsxs(
4240
- "div",
4241
- {
4242
- ref: i,
4243
- className: h(
4244
- "ad-component relative overflow-hidden rounded-lg",
4245
- "bg-white/80 backdrop-blur-sm border border-ad-border/60",
4246
- "shadow-sm hover:shadow-md",
4247
- "transition-all duration-200",
4248
- "p-3 max-w-xs",
4249
- c
4250
- ),
4251
- children: [
4252
- e.content.image && /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2 mb-3", children: [
4253
- /* @__PURE__ */ t.jsx("div", { className: "w-8 h-8 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100", children: /* @__PURE__ */ t.jsx(
4254
- "img",
4255
- {
4256
- src: e.content.image,
4257
- alt: e.content.title,
4258
- className: "w-full h-full object-cover",
4259
- loading: "lazy"
4260
- }
4261
- ) }),
4262
- /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
4263
- /* @__PURE__ */ t.jsx("h4", { className: "font-semibold text-ad-text-primary text-xs truncate", children: e.content.title }),
4264
- e.content.body && /* @__PURE__ */ t.jsx("p", { className: "text-[10px] text-ad-text-secondary truncate", children: e.content.body })
4265
- ] })
4266
- ] }),
4267
- /* @__PURE__ */ t.jsxs("form", { onSubmit: j, className: "space-y-2", children: [
4268
- r.map((k) => {
4269
- const S = ht[k];
4270
- return /* @__PURE__ */ t.jsx(
4271
- ln,
4272
- {
4273
- config: S,
4274
- field: k,
4275
- value: d[k] || "",
4276
- error: p[k],
4277
- disabled: y,
4278
- onChange: (M) => w(k, M)
4279
- },
4280
- k
4281
- );
4282
- }),
4283
- /* @__PURE__ */ t.jsx(
4284
- "button",
4285
- {
4286
- type: "submit",
4287
- disabled: y,
4288
- className: h(
4289
- "w-full py-2 px-3 rounded-lg font-semibold text-white text-xs",
4290
- "bg-gradient-to-r from-ad-primary to-ad-primaryLight",
4291
- "hover:shadow-glow",
4292
- "disabled:opacity-50 disabled:cursor-not-allowed",
4293
- "transition-all duration-200",
4294
- "flex items-center justify-center gap-1.5",
4295
- "active:scale-[0.98]"
4296
- ),
4297
- children: y ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
4298
- /* @__PURE__ */ t.jsxs("svg", { className: "w-3 h-3 animate-spin", fill: "none", viewBox: "0 0 24 24", children: [
4299
- /* @__PURE__ */ t.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
4300
- /* @__PURE__ */ t.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })
4301
- ] }),
4302
- "Submitting..."
4303
- ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
4304
- n,
4305
- /* @__PURE__ */ t.jsx("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 7l5 5m0 0l-5 5m5-5H6" }) })
4306
- ] })
4307
- }
4308
- )
4309
- ] }),
4310
- /* @__PURE__ */ t.jsx("span", { className: "ad-sponsored-badge mt-2 text-center block text-[8px] font-medium text-ad-text-muted/60 bg-white/90 backdrop-blur-sm border border-ad-border/30 px-1.5 py-0.5 rounded shadow-sm inline-flex mx-auto", children: "Sponsored" })
4311
- ]
4312
- }
4313
- );
3701
+ return v ? t.jsx("div", { ref: i, className: h("ad-component relative overflow-hidden rounded-lg", "bg-gradient-to-br from-green-50 to-emerald-50", "border border-green-200/60", "p-3 animate-scale-in", c), children: t.jsx("div", { className: "relative z-10", children: t.jsxs("div", { className: "flex items-center gap-2", children: [t.jsx("div", { className: "w-7 h-7 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0", children: t.jsx("svg", { className: "w-3 h-3 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M5 13l4 4L19 7" }) }) }), t.jsx("p", { className: "text-xs font-semibold text-green-800 flex-1", children: s })] }) }) }) : t.jsxs("div", { ref: i, className: h("ad-component relative overflow-hidden rounded-lg", "bg-white/80 backdrop-blur-sm border border-ad-border/60", "shadow-sm hover:shadow-md", "transition-all duration-200", "p-3 max-w-xs", c), children: [e.content.image && t.jsxs("div", { className: "flex items-center gap-2 mb-3", children: [t.jsx("div", { className: "w-8 h-8 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100", children: t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-full h-full object-cover", loading: "lazy" }) }), t.jsxs("div", { className: "min-w-0", children: [t.jsx("h4", { className: "font-semibold text-ad-text-primary text-xs truncate", children: e.content.title }), e.content.body && t.jsx("p", { className: "text-[10px] text-ad-text-secondary truncate", children: e.content.body })] })] }), t.jsxs("form", { onSubmit: j, className: "space-y-2", children: [r.map((k) => {
3702
+ const S = ht[k];
3703
+ return t.jsx(on, { config: S, field: k, value: d[k] || "", error: p[k], disabled: y, onChange: (D) => w(k, D) }, k);
3704
+ }), t.jsx("button", { type: "submit", disabled: y, className: h("w-full py-2 px-3 rounded-lg font-semibold text-white text-xs", "bg-gradient-to-r from-ad-primary to-ad-primaryLight", "hover:shadow-glow", "disabled:opacity-50 disabled:cursor-not-allowed", "transition-all duration-200", "flex items-center justify-center gap-1.5", "active:scale-[0.98]"), children: y ? t.jsxs(t.Fragment, { children: [t.jsxs("svg", { className: "w-3 h-3 animate-spin", fill: "none", viewBox: "0 0 24 24", children: [t.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), t.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Submitting..."] }) : t.jsxs(t.Fragment, { children: [n, t.jsx("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 7l5 5m0 0l-5 5m5-5H6" }) })] }) })] }), t.jsx("span", { className: "ad-sponsored-badge mt-2 text-center block text-[8px] font-medium text-ad-text-muted/60 bg-white/90 backdrop-blur-sm border border-ad-border/30 px-1.5 py-0.5 rounded shadow-sm inline-flex mx-auto", children: "Sponsored" })] });
4314
3705
  }
4315
- function zn({
4316
- ad: e,
4317
- submitText: r = "Subscribe",
4318
- className: n
4319
- }) {
3706
+ function Ln({ ad: e, submitText: r = "Subscribe", className: n }) {
4320
3707
  const [s, l] = E(""), [a, c] = E(!1), [i, d] = E(!1), [m, p] = E(null), { impressionRef: f } = Q(e), y = async (N) => {
4321
3708
  if (N.preventDefault(), !s || !Tt(s)) {
4322
3709
  p("Please enter a valid email");
@@ -4336,92 +3723,9 @@ function zn({
4336
3723
  c(!1);
4337
3724
  }
4338
3725
  };
4339
- return i ? /* @__PURE__ */ t.jsxs(
4340
- "div",
4341
- {
4342
- ref: f,
4343
- className: h(
4344
- "ad-component relative overflow-hidden rounded-lg",
4345
- "bg-gradient-to-r from-green-50 to-emerald-50",
4346
- "border border-green-200/60",
4347
- "inline-flex items-center gap-1.5 px-3 py-1.5",
4348
- "animate-scale-in",
4349
- n
4350
- ),
4351
- children: [
4352
- /* @__PURE__ */ t.jsx("div", { className: "w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ t.jsx("svg", { className: "w-2.5 h-2.5 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 13l4 4L19 7" }) }) }),
4353
- /* @__PURE__ */ t.jsx("span", { className: "text-[10px] font-semibold text-green-700", children: "Subscribed!" })
4354
- ]
4355
- }
4356
- ) : /* @__PURE__ */ t.jsxs(
4357
- "div",
4358
- {
4359
- ref: f,
4360
- className: h(
4361
- "ad-component relative overflow-hidden rounded-lg",
4362
- "bg-white/80 backdrop-blur-sm border border-ad-border/60",
4363
- "shadow-sm hover:shadow-md",
4364
- "transition-all duration-200",
4365
- "inline-flex items-center gap-2 p-2",
4366
- "group",
4367
- n
4368
- ),
4369
- children: [
4370
- e.content.image && /* @__PURE__ */ t.jsx("div", { className: "w-7 h-7 rounded-md overflow-hidden flex-shrink-0 bg-gray-100", children: /* @__PURE__ */ t.jsx(
4371
- "img",
4372
- {
4373
- src: e.content.image,
4374
- alt: e.content.title,
4375
- className: "w-full h-full object-cover",
4376
- loading: "lazy"
4377
- }
4378
- ) }),
4379
- /* @__PURE__ */ t.jsx("span", { className: "text-[10px] font-semibold text-ad-text-primary truncate group-hover:text-ad-primary transition-colors max-w-[120px]", children: e.content.title }),
4380
- /* @__PURE__ */ t.jsxs("form", { onSubmit: y, className: "inline-flex items-center gap-1.5 flex-1", children: [
4381
- /* @__PURE__ */ t.jsx(
4382
- "input",
4383
- {
4384
- type: "email",
4385
- placeholder: "Email",
4386
- value: s,
4387
- onChange: (N) => l(N.target.value),
4388
- className: h(
4389
- "px-2 py-1 text-[10px] rounded-md bg-white/70 backdrop-blur-sm",
4390
- "border border-ad-border/60 transition-all duration-200",
4391
- "focus:outline-none focus:ring-1 focus:ring-ad-primary/30 focus:border-ad-primary",
4392
- "placeholder:text-ad-text-muted/50 w-24",
4393
- m ? "border-red-300" : ""
4394
- ),
4395
- disabled: a
4396
- }
4397
- ),
4398
- /* @__PURE__ */ t.jsx(
4399
- "button",
4400
- {
4401
- type: "submit",
4402
- disabled: a || !s,
4403
- className: h(
4404
- "px-2 py-1 text-[10px] font-semibold text-white rounded-md",
4405
- "bg-gradient-to-r from-ad-primary to-ad-primaryLight",
4406
- "hover:shadow-glow disabled:opacity-50 disabled:cursor-not-allowed",
4407
- "transition-all duration-200",
4408
- "active:scale-[0.98]",
4409
- "whitespace-nowrap"
4410
- ),
4411
- children: a ? "..." : r
4412
- }
4413
- )
4414
- ] }),
4415
- m && /* @__PURE__ */ t.jsx("p", { className: "absolute -bottom-4 left-0 text-[9px] text-red-500", children: m })
4416
- ]
4417
- }
4418
- );
3726
+ return i ? t.jsxs("div", { ref: f, className: h("ad-component relative overflow-hidden rounded-lg", "bg-gradient-to-r from-green-50 to-emerald-50", "border border-green-200/60", "inline-flex items-center gap-1.5 px-3 py-1.5", "animate-scale-in", n), children: [t.jsx("div", { className: "w-4 h-4 rounded-full bg-green-500 flex items-center justify-center flex-shrink-0", children: t.jsx("svg", { className: "w-2.5 h-2.5 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 13l4 4L19 7" }) }) }), t.jsx("span", { className: "text-[10px] font-semibold text-green-700", children: "Subscribed!" })] }) : t.jsxs("div", { ref: f, className: h("ad-component relative overflow-hidden rounded-lg", "bg-white/80 backdrop-blur-sm border border-ad-border/60", "shadow-sm hover:shadow-md", "transition-all duration-200", "inline-flex items-center gap-2 p-2", "group", n), children: [e.content.image && t.jsx("div", { className: "w-7 h-7 rounded-md overflow-hidden flex-shrink-0 bg-gray-100", children: t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-full h-full object-cover", loading: "lazy" }) }), t.jsx("span", { className: "text-[10px] font-semibold text-ad-text-primary truncate group-hover:text-ad-primary transition-colors max-w-[120px]", children: e.content.title }), t.jsxs("form", { onSubmit: y, className: "inline-flex items-center gap-1.5 flex-1", children: [t.jsx("input", { type: "email", placeholder: "Email", value: s, onChange: (N) => l(N.target.value), className: h("px-2 py-1 text-[10px] rounded-md bg-white/70 backdrop-blur-sm", "border border-ad-border/60 transition-all duration-200", "focus:outline-none focus:ring-1 focus:ring-ad-primary/30 focus:border-ad-primary", "placeholder:text-ad-text-muted/50 w-24", m ? "border-red-300" : ""), disabled: a }), t.jsx("button", { type: "submit", disabled: a || !s, className: h("px-2 py-1 text-[10px] font-semibold text-white rounded-md", "bg-gradient-to-r from-ad-primary to-ad-primaryLight", "hover:shadow-glow disabled:opacity-50 disabled:cursor-not-allowed", "transition-all duration-200", "active:scale-[0.98]", "whitespace-nowrap"), children: a ? "..." : r })] }), m && t.jsx("p", { className: "absolute -bottom-4 left-0 text-[9px] text-red-500", children: m })] });
4419
3727
  }
4420
- function $n({
4421
- ad: e,
4422
- submitText: r = "Join",
4423
- className: n
4424
- }) {
3728
+ function On({ ad: e, submitText: r = "Join", className: n }) {
4425
3729
  const [s, l] = E(""), [a, c] = E(!1), [i, d] = E(!1), { impressionRef: m } = Q(e), p = async (f) => {
4426
3730
  if (f.preventDefault(), !!s) {
4427
3731
  c(!0);
@@ -4437,70 +3741,7 @@ function $n({
4437
3741
  }
4438
3742
  }
4439
3743
  };
4440
- return i ? /* @__PURE__ */ t.jsxs(
4441
- "span",
4442
- {
4443
- ref: m,
4444
- className: h(
4445
- "ad-component inline-flex items-center gap-1 text-green-600 text-[10px] font-medium",
4446
- "animate-fade-in",
4447
- n
4448
- ),
4449
- children: [
4450
- /* @__PURE__ */ t.jsx("svg", { className: "w-3 h-3", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ t.jsx(
4451
- "path",
4452
- {
4453
- fillRule: "evenodd",
4454
- d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",
4455
- clipRule: "evenodd"
4456
- }
4457
- ) }),
4458
- "Subscribed"
4459
- ]
4460
- }
4461
- ) : /* @__PURE__ */ t.jsxs(
4462
- "form",
4463
- {
4464
- ref: m,
4465
- onSubmit: p,
4466
- className: h(
4467
- "ad-component inline-flex items-center gap-1.5 text-[10px]",
4468
- "bg-white/70 backdrop-blur-sm border border-ad-border/50 rounded-md px-2 py-1",
4469
- "hover:border-ad-primary/30 transition-all duration-200",
4470
- n
4471
- ),
4472
- children: [
4473
- /* @__PURE__ */ t.jsx("span", { className: "text-ad-text-primary font-medium truncate", children: e.content.title }),
4474
- /* @__PURE__ */ t.jsx(
4475
- "input",
4476
- {
4477
- type: "email",
4478
- placeholder: "Email",
4479
- value: s,
4480
- onChange: (f) => l(f.target.value),
4481
- className: "px-1.5 py-0.5 bg-transparent border-none text-[10px] focus:outline-none focus:ring-0 w-20",
4482
- disabled: a,
4483
- required: !0
4484
- }
4485
- ),
4486
- /* @__PURE__ */ t.jsx(
4487
- "button",
4488
- {
4489
- type: "submit",
4490
- disabled: a || !s,
4491
- className: h(
4492
- "px-2 py-0.5 text-[9px] font-semibold rounded-md text-white",
4493
- "bg-ad-primary hover:bg-ad-primaryLight",
4494
- "disabled:opacity-50 disabled:cursor-not-allowed",
4495
- "transition-all duration-200",
4496
- "active:scale-[0.98]"
4497
- ),
4498
- children: r
4499
- }
4500
- )
4501
- ]
4502
- }
4503
- );
3744
+ return i ? t.jsxs("span", { ref: m, className: h("ad-component inline-flex items-center gap-1 text-green-600 text-[10px] font-medium", "animate-fade-in", n), children: [t.jsx("svg", { className: "w-3 h-3", fill: "currentColor", viewBox: "0 0 20 20", children: t.jsx("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" }) }), "Subscribed"] }) : t.jsxs("form", { ref: m, onSubmit: p, className: h("ad-component inline-flex items-center gap-1.5 text-[10px]", "bg-white/70 backdrop-blur-sm border border-ad-border/50 rounded-md px-2 py-1", "hover:border-ad-primary/30 transition-all duration-200", n), children: [t.jsx("span", { className: "text-ad-text-primary font-medium truncate", children: e.content.title }), t.jsx("input", { type: "email", placeholder: "Email", value: s, onChange: (f) => l(f.target.value), className: "px-1.5 py-0.5 bg-transparent border-none text-[10px] focus:outline-none focus:ring-0 w-20", disabled: a, required: !0 }), t.jsx("button", { type: "submit", disabled: a || !s, className: h("px-2 py-0.5 text-[9px] font-semibold rounded-md text-white", "bg-ad-primary hover:bg-ad-primaryLight", "disabled:opacity-50 disabled:cursor-not-allowed", "transition-all duration-200", "active:scale-[0.98]"), children: r })] });
4504
3745
  }
4505
3746
  const Pt = {
4506
3747
  leaderboard: { width: "728px", height: "90px" },
@@ -4513,17 +3754,7 @@ const Pt = {
4513
3754
  "mobile-banner": { width: "320px", height: "50px" },
4514
3755
  custom: { width: "auto", height: "auto" }
4515
3756
  };
4516
- function cn({
4517
- ad: e,
4518
- size: r = "medium-rectangle",
4519
- width: n,
4520
- height: s,
4521
- refreshInterval: l = 0,
4522
- dismissible: a = !1,
4523
- onDismiss: c,
4524
- onClick: i,
4525
- className: d
4526
- }) {
3757
+ function sn({ ad: e, size: r = "medium-rectangle", width: n, height: s, refreshInterval: l = 0, dismissible: a = !1, onDismiss: c, onClick: i, className: d }) {
4527
3758
  const [m, p] = E(!1), [f, y] = E(!0), { impressionRef: N, handleClick: v } = Q(e, {
4528
3759
  onClick: i
4529
3760
  });
@@ -4544,137 +3775,33 @@ function cn({
4544
3775
  width: r === "custom" ? `${n}px` : x == null ? void 0 : x.width,
4545
3776
  height: r === "custom" ? `${s}px` : x == null ? void 0 : x.height
4546
3777
  }, w = r === "large-rectangle" || r === "skyscraper", k = r === "leaderboard" || r === "banner" || r === "mobile-banner";
4547
- return /* @__PURE__ */ t.jsxs(
4548
- "div",
4549
- {
4550
- ref: N,
4551
- onClick: v,
4552
- className: h(
4553
- "ad-component group relative overflow-hidden",
4554
- "bg-white/80 backdrop-blur-sm border border-ad-border/60",
4555
- "rounded-lg shadow-sm hover:shadow-md",
4556
- "transition-all duration-200 hover:border-ad-primary/30",
4557
- "animate-fade-in cursor-pointer",
4558
- a && "pr-6",
4559
- d
4560
- ),
4561
- style: j,
4562
- children: [
4563
- a && /* @__PURE__ */ t.jsx(
4564
- "button",
4565
- {
4566
- onClick: (S) => {
4567
- S.stopPropagation(), b();
4568
- },
4569
- className: "absolute top-1 right-1 p-1 rounded bg-white/80 hover:bg-red-50 hover:text-red-500 transition-all z-50 shadow-sm",
4570
- "aria-label": "Close ad",
4571
- children: /* @__PURE__ */ t.jsx("svg", { className: "w-2.5 h-2.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M6 18L18 6M6 6l12 12" }) })
4572
- }
4573
- ),
4574
- /* @__PURE__ */ t.jsxs("div", { className: h("flex w-full h-full", w ? "flex-col" : "flex-row", "p-2 gap-2"), children: [
4575
- e.content.image && /* @__PURE__ */ t.jsx(
4576
- "div",
4577
- {
4578
- className: h(
4579
- "flex-shrink-0 overflow-hidden rounded-md bg-gray-100",
4580
- w ? "w-full h-32" : k ? "w-12 h-12" : "w-20 h-20"
4581
- ),
4582
- children: /* @__PURE__ */ t.jsx(
4583
- "img",
4584
- {
4585
- src: e.content.image,
4586
- alt: e.content.title,
4587
- className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-200",
4588
- loading: "lazy"
4589
- }
4590
- )
4591
- }
4592
- ),
4593
- /* @__PURE__ */ t.jsxs("div", { className: h("flex-1 min-w-0 flex flex-col justify-center", w && "text-center"), children: [
4594
- /* @__PURE__ */ t.jsx("h4", { className: "font-semibold text-ad-text-primary text-[10px] leading-tight line-clamp-2 group-hover:text-ad-primary transition-colors", children: e.content.title }),
4595
- (r === "medium-rectangle" || r === "large-rectangle") && e.content.body && /* @__PURE__ */ t.jsx("p", { className: "text-[9px] text-ad-text-secondary line-clamp-2 leading-snug mt-0.5", children: e.content.body }),
4596
- /* @__PURE__ */ t.jsxs("div", { className: h("flex items-center gap-1.5 mt-0.5", w ? "justify-center" : ""), children: [
4597
- e.content.price && /* @__PURE__ */ t.jsx("span", { className: "text-xs font-bold text-ad-primary", children: e.content.price }),
4598
- e.content.rating && /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-0.5", children: [
4599
- /* @__PURE__ */ t.jsx("svg", { className: "w-2.5 h-2.5 text-amber-400", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ t.jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) }),
4600
- /* @__PURE__ */ t.jsx("span", { className: "text-[8px] font-medium text-ad-text-secondary", children: e.content.rating })
4601
- ] })
4602
- ] }),
4603
- e.content.cta_text && !k && /* @__PURE__ */ t.jsxs("button", { className: "text-[9px] font-semibold text-ad-primary hover:underline mt-auto", children: [
4604
- e.content.cta_text,
4605
- " →"
4606
- ] })
4607
- ] })
4608
- ] }),
4609
- /* @__PURE__ */ t.jsx("span", { className: "absolute bottom-1 right-1 z-[9999] text-[7px] font-semibold text-gray-600 bg-white border border-gray-300 px-1.5 py-0.5 rounded shadow-lg", children: "Ad" })
4610
- ]
4611
- }
4612
- );
3778
+ return t.jsxs("div", { ref: N, onClick: v, className: h("ad-component group relative overflow-hidden", "bg-white/80 backdrop-blur-sm border border-ad-border/60", "rounded-lg shadow-sm hover:shadow-md", "transition-all duration-200 hover:border-ad-primary/30", "animate-fade-in cursor-pointer", a && "pr-6", d), style: j, children: [a && t.jsx("button", { onClick: (S) => {
3779
+ S.stopPropagation(), b();
3780
+ }, className: "absolute top-1 right-1 p-1 rounded bg-white/80 hover:bg-red-50 hover:text-red-500 transition-all z-50 shadow-sm", "aria-label": "Close ad", children: t.jsx("svg", { className: "w-2.5 h-2.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M6 18L18 6M6 6l12 12" }) }) }), t.jsxs("div", { className: h("flex w-full h-full", w ? "flex-col" : "flex-row", "p-2 gap-2"), children: [e.content.image && t.jsx("div", { className: h("flex-shrink-0 overflow-hidden rounded-md bg-gray-100", w ? "w-full h-32" : k ? "w-12 h-12" : "w-20 h-20"), children: t.jsx("img", { src: e.content.image, alt: e.content.title, className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-200", loading: "lazy" }) }), t.jsxs("div", { className: h("flex-1 min-w-0 flex flex-col justify-center", w && "text-center"), children: [t.jsx("h4", { className: "font-semibold text-ad-text-primary text-[10px] leading-tight line-clamp-2 group-hover:text-ad-primary transition-colors", children: e.content.title }), (r === "medium-rectangle" || r === "large-rectangle") && e.content.body && t.jsx("p", { className: "text-[9px] text-ad-text-secondary line-clamp-2 leading-snug mt-0.5", children: e.content.body }), t.jsxs("div", { className: h("flex items-center gap-1.5 mt-0.5", w ? "justify-center" : ""), children: [e.content.price && t.jsx("span", { className: "text-xs font-bold text-ad-primary", children: e.content.price }), e.content.rating && t.jsxs("div", { className: "flex items-center gap-0.5", children: [t.jsx("svg", { className: "w-2.5 h-2.5 text-amber-400", fill: "currentColor", viewBox: "0 0 20 20", children: t.jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) }), t.jsx("span", { className: "text-[8px] font-medium text-ad-text-secondary", children: e.content.rating })] })] }), e.content.cta_text && !k && t.jsxs("button", { className: "text-[9px] font-semibold text-ad-primary hover:underline mt-auto", children: [e.content.cta_text, " →"] })] })] }), t.jsx("span", { className: "absolute bottom-1 right-1 z-[9999] text-[7px] font-semibold text-gray-600 bg-white border border-gray-300 px-1.5 py-0.5 rounded shadow-lg", children: "Ad" })] });
4613
3781
  }
4614
- function Bn({
4615
- ads: e,
4616
- size: r = "medium-rectangle",
4617
- maxAds: n = 3,
4618
- direction: s = "column",
4619
- gap: l = 8,
4620
- rotate: a = !1,
4621
- rotateInterval: c = 1e4,
4622
- className: i
4623
- }) {
3782
+ function Fn({ ads: e, size: r = "medium-rectangle", maxAds: n = 3, direction: s = "column", gap: l = 8, rotate: a = !1, rotateInterval: c = 1e4, className: i }) {
4624
3783
  const [d, m] = E(e.slice(0, n)), p = H(0);
4625
3784
  return je(() => {
4626
- if (!a || e.length <= n) return;
3785
+ if (!a || e.length <= n)
3786
+ return;
4627
3787
  const f = setInterval(() => {
4628
3788
  p.current = (p.current + 1) % e.length;
4629
3789
  const y = p.current, N = [...e.slice(y, y + n), ...e.slice(0, Math.max(0, y + n - e.length))];
4630
3790
  m(N.slice(0, n));
4631
3791
  }, c);
4632
3792
  return () => clearInterval(f);
4633
- }, [e, n, a, c]), /* @__PURE__ */ t.jsx(
4634
- "div",
4635
- {
4636
- className: h(
4637
- "flex",
4638
- s === "row" ? "flex-row flex-wrap" : "flex-col",
4639
- i
4640
- ),
4641
- style: { gap: `${l}px` },
4642
- children: d.map((f, y) => /* @__PURE__ */ t.jsx("div", { className: "animate-slide-up", style: { animationDelay: `${y * 30}ms` }, children: /* @__PURE__ */ t.jsx(cn, { ad: f, size: r }) }, f.id))
4643
- }
4644
- );
3793
+ }, [e, n, a, c]), t.jsx("div", { className: h("flex", s === "row" ? "flex-row flex-wrap" : "flex-col", i), style: { gap: `${l}px` }, children: d.map((f, y) => t.jsx("div", { className: "animate-slide-up", style: { animationDelay: `${y * 30}ms` }, children: t.jsx(sn, { ad: f, size: r }) }, f.id)) });
4645
3794
  }
4646
- function Un({
4647
- size: e = "medium-rectangle",
4648
- width: r,
4649
- height: n,
4650
- message: s = "Advertisement",
4651
- className: l
4652
- }) {
3795
+ function $n({ size: e = "medium-rectangle", width: r, height: n, message: s = "Advertisement", className: l }) {
4653
3796
  const a = e !== "custom" ? Pt[e] : void 0, c = {
4654
3797
  width: e === "custom" ? `${r}px` : a == null ? void 0 : a.width,
4655
3798
  height: e === "custom" ? `${n}px` : a == null ? void 0 : a.height
4656
3799
  };
4657
- return /* @__PURE__ */ t.jsxs(
4658
- "div",
4659
- {
4660
- className: h(
4661
- "relative inline-flex items-center justify-center overflow-hidden",
4662
- "bg-gradient-to-br from-ad-background to-white",
4663
- "border border-dashed border-ad-border/50 rounded-lg",
4664
- "text-ad-text-muted text-[10px] font-medium",
4665
- l
4666
- ),
4667
- style: c,
4668
- children: [
4669
- /* @__PURE__ */ t.jsx("div", { className: "absolute inset-0 opacity-[0.02]", style: {
4670
- backgroundImage: `url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='2' cy='2' r='1' fill='%2394a3b8'/%3E%3C/svg%3E")`
4671
- } }),
4672
- /* @__PURE__ */ t.jsx("span", { className: "relative z-10", children: s })
4673
- ]
4674
- }
4675
- );
3800
+ return t.jsxs("div", { className: h("relative inline-flex items-center justify-center overflow-hidden", "bg-gradient-to-br from-ad-background to-white", "border border-dashed border-ad-border/50 rounded-lg", "text-ad-text-muted text-[10px] font-medium", l), style: c, children: [t.jsx("div", { className: "absolute inset-0 opacity-[0.02]", style: {
3801
+ backgroundImage: `url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='2' cy='2' r='1' fill='%2394a3b8'/%3E%3C/svg%3E")`
3802
+ } }), t.jsx("span", { className: "relative z-10", children: s })] });
4676
3803
  }
4677
- const Wn = {
3804
+ const zn = {
4678
3805
  LEADERBOARD: "leaderboard",
4679
3806
  BANNER: "banner",
4680
3807
  MEDIUM_RECTANGLE: "medium-rectangle",
@@ -4684,7 +3811,7 @@ const Wn = {
4684
3811
  SMALL_SQUARE: "small-square",
4685
3812
  MOBILE_BANNER: "mobile-banner"
4686
3813
  };
4687
- function Ge() {
3814
+ function We() {
4688
3815
  return [
4689
3816
  {
4690
3817
  adId: "amazon_001",
@@ -4729,9 +3856,7 @@ function Ge() {
4729
3856
  ];
4730
3857
  }
4731
3858
  function It(e) {
4732
- const r = e.reduce((i, d) => i + d.impressions, 0), n = e.reduce((i, d) => i + d.clicks, 0), s = e.reduce((i, d) => i + d.revenue, 0), l = r > 0 ? n / r * 100 : 0, a = e.reduce(
4733
- (i, d) => d.ctr > i.ctr ? d : i
4734
- ), c = {};
3859
+ const r = e.reduce((i, d) => i + d.impressions, 0), n = e.reduce((i, d) => i + d.clicks, 0), s = e.reduce((i, d) => i + d.revenue, 0), l = r > 0 ? n / r * 100 : 0, a = e.reduce((i, d) => d.ctr > i.ctr ? d : i), c = {};
4735
3860
  return e.forEach((i) => {
4736
3861
  c[i.source] || (c[i.source] = { impressions: 0, clicks: 0, revenue: 0 }), c[i.source].impressions += i.impressions, c[i.source].clicks += i.clicks, c[i.source].revenue += i.revenue;
4737
3862
  }), {
@@ -4749,22 +3874,14 @@ function V(e) {
4749
3874
  function ke(e, r = 2) {
4750
3875
  return `${e.toFixed(r)}%`;
4751
3876
  }
4752
- function Pe(e) {
3877
+ function Te(e) {
4753
3878
  return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(e);
4754
3879
  }
4755
- function Gn({
4756
- data: e,
4757
- refreshInterval: r = 3e4,
4758
- onRefresh: n,
4759
- showRevenue: s = !0,
4760
- showBySource: l = !0,
4761
- className: a
4762
- }) {
4763
- const [c, i] = E(
4764
- e || Ge()
4765
- ), [d, m] = E(!1), [p, f] = E(/* @__PURE__ */ new Date()), y = It(c);
3880
+ function Bn({ data: e, refreshInterval: r = 3e4, onRefresh: n, showRevenue: s = !0, showBySource: l = !0, className: a }) {
3881
+ const [c, i] = E(e || We()), [d, m] = E(!1), [p, f] = E(/* @__PURE__ */ new Date()), y = It(c);
4766
3882
  je(() => {
4767
- if (!n) return;
3883
+ if (!n)
3884
+ return;
4768
3885
  const v = setInterval(async () => {
4769
3886
  m(!0);
4770
3887
  try {
@@ -4786,247 +3903,27 @@ function Gn({
4786
3903
  m(!1);
4787
3904
  }
4788
3905
  } else
4789
- i(Ge()), f(/* @__PURE__ */ new Date());
3906
+ i(We()), f(/* @__PURE__ */ new Date());
4790
3907
  };
4791
- return /* @__PURE__ */ t.jsxs("div", { className: h("w-full", a), children: [
4792
- /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6", children: [
4793
- /* @__PURE__ */ t.jsxs("div", { children: [
4794
- /* @__PURE__ */ t.jsx("h2", { className: "text-2xl font-bold text-ad-text-primary", children: "Ad Analytics" }),
4795
- /* @__PURE__ */ t.jsxs("p", { className: "text-sm text-ad-text-secondary flex items-center gap-2", children: [
4796
- /* @__PURE__ */ t.jsx("span", { className: "w-2 h-2 rounded-full bg-green-500 animate-pulse" }),
4797
- "Last updated: ",
4798
- p.toLocaleTimeString()
4799
- ] })
4800
- ] }),
4801
- /* @__PURE__ */ t.jsxs(
4802
- "button",
4803
- {
4804
- onClick: N,
4805
- disabled: d,
4806
- className: h(
4807
- "inline-flex items-center gap-2 px-4 py-2.5 rounded-xl font-medium text-sm",
4808
- "bg-white/70 backdrop-blur-md border border-ad-border/50",
4809
- "hover:bg-white hover:border-ad-primary/30",
4810
- "disabled:opacity-50 disabled:cursor-not-allowed",
4811
- "transition-all duration-200",
4812
- "shadow-sm hover:shadow-glass",
4813
- "active:scale-[0.98]"
4814
- ),
4815
- children: [
4816
- /* @__PURE__ */ t.jsx(
4817
- "svg",
4818
- {
4819
- className: h("w-4 h-4", d && "animate-spin"),
4820
- fill: "none",
4821
- stroke: "currentColor",
4822
- viewBox: "0 0 24 24",
4823
- children: /* @__PURE__ */ t.jsx(
4824
- "path",
4825
- {
4826
- strokeLinecap: "round",
4827
- strokeLinejoin: "round",
4828
- strokeWidth: 2,
4829
- d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"
4830
- }
4831
- )
4832
- }
4833
- ),
4834
- d ? "Refreshing..." : "Refresh"
4835
- ]
4836
- }
4837
- )
4838
- ] }),
4839
- /* @__PURE__ */ t.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6", children: [
4840
- /* @__PURE__ */ t.jsx(
4841
- Ee,
4842
- {
4843
- label: "Total Impressions",
4844
- value: V(y.totalImpressions),
4845
- icon: "👁️",
4846
- trend: "+12.5%",
4847
- trendUp: !0,
4848
- color: "blue"
4849
- }
4850
- ),
4851
- /* @__PURE__ */ t.jsx(
4852
- Ee,
4853
- {
4854
- label: "Total Clicks",
4855
- value: V(y.totalClicks),
4856
- icon: "👆",
4857
- trend: "+8.3%",
4858
- trendUp: !0,
4859
- color: "purple"
4860
- }
4861
- ),
4862
- /* @__PURE__ */ t.jsx(
4863
- Ee,
4864
- {
4865
- label: "Avg. CTR",
4866
- value: ke(y.averageCtr),
4867
- icon: "📊",
4868
- trend: "+2.1%",
4869
- trendUp: !0,
4870
- color: "green"
4871
- }
4872
- ),
4873
- s && /* @__PURE__ */ t.jsx(
4874
- Ee,
4875
- {
4876
- label: "Total Revenue",
4877
- value: Pe(y.totalRevenue),
4878
- icon: "💰",
4879
- trend: "+15.7%",
4880
- trendUp: !0,
4881
- color: "amber"
4882
- }
4883
- )
4884
- ] }),
4885
- /* @__PURE__ */ t.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6", children: [
4886
- /* @__PURE__ */ t.jsxs("div", { className: "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass p-6", children: [
4887
- /* @__PURE__ */ t.jsx("h3", { className: "text-lg font-bold text-ad-text-primary mb-4", children: "Top Performing Ads" }),
4888
- /* @__PURE__ */ t.jsx("div", { className: "space-y-4", children: c.sort((v, b) => b.ctr - v.ctr).slice(0, 5).map((v, b) => /* @__PURE__ */ t.jsx(dn, { ad: v, rank: b + 1 }, v.adId)) })
4889
- ] }),
4890
- l && /* @__PURE__ */ t.jsxs("div", { className: "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass p-6", children: [
4891
- /* @__PURE__ */ t.jsx("h3", { className: "text-lg font-bold text-ad-text-primary mb-4", children: "By Ad Source" }),
4892
- /* @__PURE__ */ t.jsx("div", { className: "space-y-4", children: Object.entries(y.bySource).map(([v, b]) => {
4893
- const x = b.impressions > 0 ? b.clicks / b.impressions * 100 : 0;
4894
- return /* @__PURE__ */ t.jsx(
4895
- un,
4896
- {
4897
- source: v,
4898
- impressions: b.impressions,
4899
- clicks: b.clicks,
4900
- ctr: x,
4901
- revenue: b.revenue
4902
- },
4903
- v
4904
- );
4905
- }) })
4906
- ] })
4907
- ] }),
4908
- /* @__PURE__ */ t.jsxs("div", { className: "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass overflow-hidden", children: [
4909
- /* @__PURE__ */ t.jsx("div", { className: "px-6 py-4 border-b border-ad-border/50 bg-white/40", children: /* @__PURE__ */ t.jsx("h3", { className: "text-lg font-bold text-ad-text-primary", children: "All Ads Performance" }) }),
4910
- /* @__PURE__ */ t.jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ t.jsxs("table", { className: "w-full", children: [
4911
- /* @__PURE__ */ t.jsx("thead", { className: "bg-ad-background/50", children: /* @__PURE__ */ t.jsxs("tr", { children: [
4912
- /* @__PURE__ */ t.jsx("th", { className: "px-6 py-3 text-left text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Ad" }),
4913
- /* @__PURE__ */ t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Impressions" }),
4914
- /* @__PURE__ */ t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Clicks" }),
4915
- /* @__PURE__ */ t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "CTR" }),
4916
- s && /* @__PURE__ */ t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Revenue" }),
4917
- /* @__PURE__ */ t.jsx("th", { className: "px-6 py-3 text-left text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Source" })
4918
- ] }) }),
4919
- /* @__PURE__ */ t.jsx("tbody", { className: "divide-y divide-ad-border/30", children: c.map((v) => /* @__PURE__ */ t.jsxs("tr", { className: "hover:bg-ad-primary/5 transition-colors", children: [
4920
- /* @__PURE__ */ t.jsxs("td", { className: "px-6 py-4 whitespace-nowrap", children: [
4921
- /* @__PURE__ */ t.jsx("div", { className: "text-sm font-semibold text-ad-text-primary", children: v.adTitle }),
4922
- /* @__PURE__ */ t.jsx("div", { className: "text-xs text-ad-text-muted", children: v.adId })
4923
- ] }),
4924
- /* @__PURE__ */ t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium text-ad-text-primary", children: V(v.impressions) }),
4925
- /* @__PURE__ */ t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium text-ad-text-primary", children: V(v.clicks) }),
4926
- /* @__PURE__ */ t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right", children: /* @__PURE__ */ t.jsx(pn, { ctr: v.ctr }) }),
4927
- s && /* @__PURE__ */ t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right text-sm font-semibold text-ad-text-primary", children: Pe(v.revenue) }),
4928
- /* @__PURE__ */ t.jsx("td", { className: "px-6 py-4 whitespace-nowrap", children: /* @__PURE__ */ t.jsx(mn, { source: v.source }) })
4929
- ] }, v.adId)) })
4930
- ] }) })
4931
- ] })
4932
- ] });
3908
+ return t.jsxs("div", { className: h("w-full", a), children: [t.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6", children: [t.jsxs("div", { children: [t.jsx("h2", { className: "text-2xl font-bold text-ad-text-primary", children: "Ad Analytics" }), t.jsxs("p", { className: "text-sm text-ad-text-secondary flex items-center gap-2", children: [t.jsx("span", { className: "w-2 h-2 rounded-full bg-green-500 animate-pulse" }), "Last updated: ", p.toLocaleTimeString()] })] }), t.jsxs("button", { onClick: N, disabled: d, className: h("inline-flex items-center gap-2 px-4 py-2.5 rounded-xl font-medium text-sm", "bg-white/70 backdrop-blur-md border border-ad-border/50", "hover:bg-white hover:border-ad-primary/30", "disabled:opacity-50 disabled:cursor-not-allowed", "transition-all duration-200", "shadow-sm hover:shadow-glass", "active:scale-[0.98]"), children: [t.jsx("svg", { className: h("w-4 h-4", d && "animate-spin"), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }) }), d ? "Refreshing..." : "Refresh"] })] }), t.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6", children: [t.jsx(Ae, { label: "Total Impressions", value: V(y.totalImpressions), icon: "👁️", trend: "+12.5%", trendUp: !0, color: "blue" }), t.jsx(Ae, { label: "Total Clicks", value: V(y.totalClicks), icon: "👆", trend: "+8.3%", trendUp: !0, color: "purple" }), t.jsx(Ae, { label: "Avg. CTR", value: ke(y.averageCtr), icon: "📊", trend: "+2.1%", trendUp: !0, color: "green" }), s && t.jsx(Ae, { label: "Total Revenue", value: Te(y.totalRevenue), icon: "💰", trend: "+15.7%", trendUp: !0, color: "amber" })] }), t.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6", children: [t.jsxs("div", { className: "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass p-6", children: [t.jsx("h3", { className: "text-lg font-bold text-ad-text-primary mb-4", children: "Top Performing Ads" }), t.jsx("div", { className: "space-y-4", children: c.sort((v, b) => b.ctr - v.ctr).slice(0, 5).map((v, b) => t.jsx(an, { ad: v, rank: b + 1 }, v.adId)) })] }), l && t.jsxs("div", { className: "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass p-6", children: [t.jsx("h3", { className: "text-lg font-bold text-ad-text-primary mb-4", children: "By Ad Source" }), t.jsx("div", { className: "space-y-4", children: Object.entries(y.bySource).map(([v, b]) => {
3909
+ const x = b.impressions > 0 ? b.clicks / b.impressions * 100 : 0;
3910
+ return t.jsx(ln, { source: v, impressions: b.impressions, clicks: b.clicks, ctr: x, revenue: b.revenue }, v);
3911
+ }) })] })] }), t.jsxs("div", { className: "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass overflow-hidden", children: [t.jsx("div", { className: "px-6 py-4 border-b border-ad-border/50 bg-white/40", children: t.jsx("h3", { className: "text-lg font-bold text-ad-text-primary", children: "All Ads Performance" }) }), t.jsx("div", { className: "overflow-x-auto", children: t.jsxs("table", { className: "w-full", children: [t.jsx("thead", { className: "bg-ad-background/50", children: t.jsxs("tr", { children: [t.jsx("th", { className: "px-6 py-3 text-left text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Ad" }), t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Impressions" }), t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Clicks" }), t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "CTR" }), s && t.jsx("th", { className: "px-6 py-3 text-right text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Revenue" }), t.jsx("th", { className: "px-6 py-3 text-left text-xs font-semibold text-ad-text-secondary uppercase tracking-wider", children: "Source" })] }) }), t.jsx("tbody", { className: "divide-y divide-ad-border/30", children: c.map((v) => t.jsxs("tr", { className: "hover:bg-ad-primary/5 transition-colors", children: [t.jsxs("td", { className: "px-6 py-4 whitespace-nowrap", children: [t.jsx("div", { className: "text-sm font-semibold text-ad-text-primary", children: v.adTitle }), t.jsx("div", { className: "text-xs text-ad-text-muted", children: v.adId })] }), t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium text-ad-text-primary", children: V(v.impressions) }), t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium text-ad-text-primary", children: V(v.clicks) }), t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right", children: t.jsx(cn, { ctr: v.ctr }) }), s && t.jsx("td", { className: "px-6 py-4 whitespace-nowrap text-right text-sm font-semibold text-ad-text-primary", children: Te(v.revenue) }), t.jsx("td", { className: "px-6 py-4 whitespace-nowrap", children: t.jsx(dn, { source: v.source }) })] }, v.adId)) })] }) })] })] });
4933
3912
  }
4934
- function Ee({
4935
- label: e,
4936
- value: r,
4937
- icon: n,
4938
- trend: s,
4939
- trendUp: l,
4940
- color: a
4941
- }) {
3913
+ function Ae({ label: e, value: r, icon: n, trend: s, trendUp: l, color: a }) {
4942
3914
  const c = {
4943
3915
  blue: "from-blue-500/10 to-blue-600/5 border-blue-200/50",
4944
3916
  purple: "from-purple-500/10 to-purple-600/5 border-purple-200/50",
4945
3917
  green: "from-green-500/10 to-green-600/5 border-green-200/50",
4946
3918
  amber: "from-amber-500/10 to-amber-600/5 border-amber-200/50"
4947
3919
  };
4948
- return /* @__PURE__ */ t.jsx(
4949
- "div",
4950
- {
4951
- className: h(
4952
- "relative overflow-hidden rounded-2xl p-6",
4953
- "bg-gradient-to-br border",
4954
- "shadow-glass hover:shadow-glass-hover",
4955
- "transition-all duration-200",
4956
- "animate-fade-in",
4957
- c[a]
4958
- ),
4959
- children: /* @__PURE__ */ t.jsxs("div", { className: "relative z-10", children: [
4960
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
4961
- /* @__PURE__ */ t.jsx("span", { className: "text-sm font-semibold text-ad-text-secondary", children: e }),
4962
- /* @__PURE__ */ t.jsx("span", { className: "w-8 h-8 rounded-lg bg-white/60 backdrop-blur-sm flex items-center justify-center text-lg shadow-sm", children: n })
4963
- ] }),
4964
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-baseline justify-between gap-2", children: [
4965
- /* @__PURE__ */ t.jsx("span", { className: "text-2xl font-bold text-ad-text-primary", children: r }),
4966
- /* @__PURE__ */ t.jsxs(
4967
- "span",
4968
- {
4969
- className: h(
4970
- "text-xs font-semibold px-2 py-1 rounded-full",
4971
- l ? "bg-green-100 text-green-700" : "bg-red-100 text-red-700"
4972
- ),
4973
- children: [
4974
- l ? "↑" : "↓",
4975
- " ",
4976
- s
4977
- ]
4978
- }
4979
- )
4980
- ] })
4981
- ] })
4982
- }
4983
- );
3920
+ return t.jsx("div", { className: h("relative overflow-hidden rounded-2xl p-6", "bg-gradient-to-br border", "shadow-glass hover:shadow-glass-hover", "transition-all duration-200", "animate-fade-in", c[a]), children: t.jsxs("div", { className: "relative z-10", children: [t.jsxs("div", { className: "flex items-center justify-between mb-3", children: [t.jsx("span", { className: "text-sm font-semibold text-ad-text-secondary", children: e }), t.jsx("span", { className: "w-8 h-8 rounded-lg bg-white/60 backdrop-blur-sm flex items-center justify-center text-lg shadow-sm", children: n })] }), t.jsxs("div", { className: "flex items-baseline justify-between gap-2", children: [t.jsx("span", { className: "text-2xl font-bold text-ad-text-primary", children: r }), t.jsxs("span", { className: h("text-xs font-semibold px-2 py-1 rounded-full", l ? "bg-green-100 text-green-700" : "bg-red-100 text-red-700"), children: [l ? "↑" : "↓", " ", s] })] })] }) });
4984
3921
  }
4985
- function dn({ ad: e, rank: r }) {
3922
+ function an({ ad: e, rank: r }) {
4986
3923
  const n = e.ctr / 10 * 100;
4987
- return /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-4 animate-slide-up", children: [
4988
- /* @__PURE__ */ t.jsx(
4989
- "span",
4990
- {
4991
- className: h(
4992
- "flex-shrink-0 w-8 h-8 rounded-xl flex items-center justify-center text-sm font-bold shadow-sm",
4993
- r === 1 ? "bg-gradient-to-br from-amber-400 to-amber-500 text-white" : r === 2 ? "bg-gradient-to-br from-gray-300 to-gray-400 text-white" : r === 3 ? "bg-gradient-to-br from-amber-600 to-amber-700 text-white" : "bg-gray-100 text-gray-600"
4994
- ),
4995
- children: r
4996
- }
4997
- ),
4998
- /* @__PURE__ */ t.jsxs("div", { className: "flex-1 min-w-0", children: [
4999
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
5000
- /* @__PURE__ */ t.jsx("span", { className: "text-sm font-semibold text-ad-text-primary truncate", children: e.adTitle }),
5001
- /* @__PURE__ */ t.jsx("span", { className: "text-sm font-bold text-ad-primary ml-2", children: ke(e.ctr) })
5002
- ] }),
5003
- /* @__PURE__ */ t.jsx("div", { className: "w-full bg-gray-100 rounded-full h-2 overflow-hidden", children: /* @__PURE__ */ t.jsx(
5004
- "div",
5005
- {
5006
- className: "h-full bg-gradient-to-r from-ad-primary to-ad-primaryLight rounded-full transition-all duration-500",
5007
- style: { width: `${Math.min(n, 100)}%` }
5008
- }
5009
- ) }),
5010
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-4 mt-2 text-xs text-ad-text-muted", children: [
5011
- /* @__PURE__ */ t.jsxs("span", { className: "font-medium", children: [
5012
- V(e.impressions),
5013
- " impressions"
5014
- ] }),
5015
- /* @__PURE__ */ t.jsxs("span", { className: "font-medium", children: [
5016
- V(e.clicks),
5017
- " clicks"
5018
- ] }),
5019
- e.revenue > 0 && /* @__PURE__ */ t.jsx("span", { className: "font-semibold text-ad-primary", children: Pe(e.revenue) })
5020
- ] })
5021
- ] })
5022
- ] });
3924
+ return t.jsxs("div", { className: "flex items-center gap-4 animate-slide-up", children: [t.jsx("span", { className: h("flex-shrink-0 w-8 h-8 rounded-xl flex items-center justify-center text-sm font-bold shadow-sm", r === 1 ? "bg-gradient-to-br from-amber-400 to-amber-500 text-white" : r === 2 ? "bg-gradient-to-br from-gray-300 to-gray-400 text-white" : r === 3 ? "bg-gradient-to-br from-amber-600 to-amber-700 text-white" : "bg-gray-100 text-gray-600"), children: r }), t.jsxs("div", { className: "flex-1 min-w-0", children: [t.jsxs("div", { className: "flex items-center justify-between mb-2", children: [t.jsx("span", { className: "text-sm font-semibold text-ad-text-primary truncate", children: e.adTitle }), t.jsx("span", { className: "text-sm font-bold text-ad-primary ml-2", children: ke(e.ctr) })] }), t.jsx("div", { className: "w-full bg-gray-100 rounded-full h-2 overflow-hidden", children: t.jsx("div", { className: "h-full bg-gradient-to-r from-ad-primary to-ad-primaryLight rounded-full transition-all duration-500", style: { width: `${Math.min(n, 100)}%` } }) }), t.jsxs("div", { className: "flex items-center gap-4 mt-2 text-xs text-ad-text-muted", children: [t.jsxs("span", { className: "font-medium", children: [V(e.impressions), " impressions"] }), t.jsxs("span", { className: "font-medium", children: [V(e.clicks), " clicks"] }), e.revenue > 0 && t.jsx("span", { className: "font-semibold text-ad-primary", children: Te(e.revenue) })] })] })] });
5023
3925
  }
5024
- function un({
5025
- source: e,
5026
- impressions: r,
5027
- clicks: n,
5028
- ctr: s
5029
- }) {
3926
+ function ln({ source: e, impressions: r, clicks: n, ctr: s }) {
5030
3927
  const a = {
5031
3928
  internal: {
5032
3929
  label: "自营",
@@ -5048,39 +3945,13 @@ function un({
5048
3945
  gradient: "from-gray-500 to-gray-600",
5049
3946
  textColor: "text-white"
5050
3947
  };
5051
- return /* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between p-3 rounded-xl bg-ad-background/30 hover:bg-ad-background/50 transition-colors", children: [
5052
- /* @__PURE__ */ t.jsx("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ t.jsx(
5053
- "span",
5054
- {
5055
- className: h(
5056
- "px-3 py-1.5 rounded-lg text-xs font-bold shadow-sm",
5057
- "bg-gradient-to-r",
5058
- a.gradient,
5059
- a.textColor
5060
- ),
5061
- children: a.label
5062
- }
5063
- ) }),
5064
- /* @__PURE__ */ t.jsxs("div", { className: "text-right", children: [
5065
- /* @__PURE__ */ t.jsxs("span", { className: "text-sm font-bold text-ad-text-primary", children: [
5066
- ke(s),
5067
- " CTR"
5068
- ] }),
5069
- /* @__PURE__ */ t.jsxs("span", { className: "text-xs text-ad-text-muted ml-2", children: [
5070
- "(",
5071
- V(n),
5072
- "/",
5073
- V(r),
5074
- ")"
5075
- ] })
5076
- ] })
5077
- ] });
3948
+ return t.jsxs("div", { className: "flex items-center justify-between p-3 rounded-xl bg-ad-background/30 hover:bg-ad-background/50 transition-colors", children: [t.jsx("div", { className: "flex items-center gap-3", children: t.jsx("span", { className: h("px-3 py-1.5 rounded-lg text-xs font-bold shadow-sm", "bg-gradient-to-r", a.gradient, a.textColor), children: a.label }) }), t.jsxs("div", { className: "text-right", children: [t.jsxs("span", { className: "text-sm font-bold text-ad-text-primary", children: [ke(s), " CTR"] }), t.jsxs("span", { className: "text-xs text-ad-text-muted ml-2", children: ["(", V(n), "/", V(r), ")"] })] })] });
5078
3949
  }
5079
- function pn({ ctr: e }) {
3950
+ function cn({ ctr: e }) {
5080
3951
  const r = () => e >= 5 ? "bg-green-100 text-green-700 border-green-200" : e >= 3 ? "bg-blue-100 text-blue-700 border-blue-200" : e >= 1 ? "bg-yellow-100 text-yellow-700 border-yellow-200" : "bg-red-100 text-red-700 border-red-200";
5081
- return /* @__PURE__ */ t.jsx("span", { className: h("inline-flex px-3 py-1 rounded-full text-xs font-bold border", r()), children: ke(e) });
3952
+ return t.jsx("span", { className: h("inline-flex px-3 py-1 rounded-full text-xs font-bold border", r()), children: ke(e) });
5082
3953
  }
5083
- function mn({ source: e }) {
3954
+ function dn({ source: e }) {
5084
3955
  const r = {
5085
3956
  internal: { label: "自营", gradient: "from-blue-500 to-blue-600" },
5086
3957
  affiliate: { label: "联盟", gradient: "from-purple-500 to-purple-600" },
@@ -5089,69 +3960,25 @@ function mn({ source: e }) {
5089
3960
  label: e,
5090
3961
  gradient: "from-gray-500 to-gray-600"
5091
3962
  };
5092
- return /* @__PURE__ */ t.jsx("span", { className: h("inline-flex px-3 py-1 rounded-lg text-xs font-bold text-white bg-gradient-to-r", s), children: n });
3963
+ return t.jsx("span", { className: h("inline-flex px-3 py-1 rounded-lg text-xs font-bold text-white bg-gradient-to-r", s), children: n });
5093
3964
  }
5094
- function qn({ data: e, className: r }) {
5095
- const n = e || Ge(), s = It(n);
5096
- return /* @__PURE__ */ t.jsx("div", { className: h(
5097
- "bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass p-5",
5098
- r
5099
- ), children: /* @__PURE__ */ t.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
5100
- /* @__PURE__ */ t.jsx(Re, { label: "Impressions", value: V(s.totalImpressions), color: "blue" }),
5101
- /* @__PURE__ */ t.jsx(Re, { label: "Clicks", value: V(s.totalClicks), color: "purple" }),
5102
- /* @__PURE__ */ t.jsx(Re, { label: "CTR", value: ke(s.averageCtr), color: "green" }),
5103
- /* @__PURE__ */ t.jsx(Re, { label: "Revenue", value: Pe(s.totalRevenue), color: "amber" })
5104
- ] }) });
3965
+ function Un({ data: e, className: r }) {
3966
+ const n = e || We(), s = It(n);
3967
+ return t.jsx("div", { className: h("bg-white/70 backdrop-blur-md rounded-2xl border border-ad-border/50 shadow-glass p-5", r), children: t.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [t.jsx(Ee, { label: "Impressions", value: V(s.totalImpressions), color: "blue" }), t.jsx(Ee, { label: "Clicks", value: V(s.totalClicks), color: "purple" }), t.jsx(Ee, { label: "CTR", value: ke(s.averageCtr), color: "green" }), t.jsx(Ee, { label: "Revenue", value: Te(s.totalRevenue), color: "amber" })] }) });
5105
3968
  }
5106
- function Re({ label: e, value: r, color: n }) {
3969
+ function Ee({ label: e, value: r, color: n }) {
5107
3970
  const s = {
5108
3971
  blue: "text-blue-600",
5109
3972
  purple: "text-purple-600",
5110
3973
  green: "text-green-600",
5111
3974
  amber: "text-amber-600"
5112
3975
  };
5113
- return /* @__PURE__ */ t.jsxs("div", { children: [
5114
- /* @__PURE__ */ t.jsx("p", { className: "text-xs font-medium text-ad-text-muted uppercase tracking-wide", children: e }),
5115
- /* @__PURE__ */ t.jsx("p", { className: h("text-lg font-bold", s[n]), children: r })
5116
- ] });
3976
+ return t.jsxs("div", { children: [t.jsx("p", { className: "text-xs font-medium text-ad-text-muted uppercase tracking-wide", children: e }), t.jsx("p", { className: h("text-lg font-bold", s[n]), children: r })] });
5117
3977
  }
5118
- function fn({
5119
- className: e
5120
- }) {
5121
- return /* @__PURE__ */ t.jsxs(
5122
- "div",
5123
- {
5124
- className: h(
5125
- "flex items-center justify-center p-4",
5126
- "bg-gray-50 border border-gray-200 rounded-lg",
5127
- "text-gray-500 text-sm",
5128
- e
5129
- ),
5130
- children: [
5131
- /* @__PURE__ */ t.jsx(
5132
- "svg",
5133
- {
5134
- className: "w-5 h-5 mr-2 text-gray-400",
5135
- fill: "none",
5136
- stroke: "currentColor",
5137
- viewBox: "0 0 24 24",
5138
- children: /* @__PURE__ */ t.jsx(
5139
- "path",
5140
- {
5141
- strokeLinecap: "round",
5142
- strokeLinejoin: "round",
5143
- strokeWidth: 2,
5144
- d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
5145
- }
5146
- )
5147
- }
5148
- ),
5149
- /* @__PURE__ */ t.jsx("span", { children: "Ad temporarily unavailable" })
5150
- ]
5151
- }
5152
- );
3978
+ function un({ className: e }) {
3979
+ return t.jsxs("div", { className: h("flex items-center justify-center p-4", "bg-gray-50 border border-gray-200 rounded-lg", "text-gray-500 text-sm", e), children: [t.jsx("svg", { className: "w-5 h-5 mr-2 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: t.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }), t.jsx("span", { children: "Ad temporarily unavailable" })] });
5153
3980
  }
5154
- class gn extends pr {
3981
+ class pn extends dr {
5155
3982
  constructor(r) {
5156
3983
  super(r), this.state = { hasError: !1 };
5157
3984
  }
@@ -5170,170 +3997,48 @@ class gn extends pr {
5170
3997
  return typeof r == "function" ? r(this.state.error, {
5171
3998
  componentStack: ""
5172
3999
  // ErrorInfo is not available here
5173
- }) : r || /* @__PURE__ */ t.jsx(fn, { error: this.state.error, className: this.props.className });
4000
+ }) : r || t.jsx(un, { error: this.state.error, className: this.props.className });
5174
4001
  }
5175
4002
  return this.props.children;
5176
4003
  }
5177
4004
  }
5178
- function Vn(e, r) {
5179
- const n = (s) => /* @__PURE__ */ t.jsx(gn, { ...r, children: /* @__PURE__ */ t.jsx(e, { ...s }) });
4005
+ function Wn(e, r) {
4006
+ const n = (s) => t.jsx(pn, { ...r, children: t.jsx(e, { ...s }) });
5180
4007
  return n.displayName = `withAdErrorBoundary(${e.displayName || e.name})`, n;
5181
4008
  }
5182
- function Hn({ error: e, onRetry: r, className: n, silent: s = !1 }) {
5183
- return !e || s ? null : /* @__PURE__ */ t.jsxs(
5184
- "div",
5185
- {
5186
- className: h(
5187
- "flex items-center justify-between p-3",
5188
- "bg-red-50 border border-red-100 rounded-lg",
5189
- "text-red-700 text-sm",
5190
- n
5191
- ),
5192
- children: [
5193
- /* @__PURE__ */ t.jsxs("div", { className: "flex items-center", children: [
5194
- /* @__PURE__ */ t.jsx(
5195
- "svg",
5196
- {
5197
- className: "w-4 h-4 mr-2 text-red-500",
5198
- fill: "currentColor",
5199
- viewBox: "0 0 20 20",
5200
- children: /* @__PURE__ */ t.jsx(
5201
- "path",
5202
- {
5203
- fillRule: "evenodd",
5204
- d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",
5205
- clipRule: "evenodd"
5206
- }
5207
- )
5208
- }
5209
- ),
5210
- /* @__PURE__ */ t.jsx("span", { children: "Failed to load ads" })
5211
- ] }),
5212
- r && /* @__PURE__ */ t.jsx(
5213
- "button",
5214
- {
5215
- onClick: r,
5216
- className: "ml-4 px-3 py-1 text-sm font-medium text-red-700 bg-red-100 hover:bg-red-200 rounded transition-colors",
5217
- children: "Retry"
5218
- }
5219
- )
5220
- ]
5221
- }
5222
- );
4009
+ function Gn({ error: e, onRetry: r, className: n, silent: s = !1 }) {
4010
+ return !e || s ? null : t.jsxs("div", { className: h("flex items-center justify-between p-3", "bg-red-50 border border-red-100 rounded-lg", "text-red-700 text-sm", n), children: [t.jsxs("div", { className: "flex items-center", children: [t.jsx("svg", { className: "w-4 h-4 mr-2 text-red-500", fill: "currentColor", viewBox: "0 0 20 20", children: t.jsx("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }) }), t.jsx("span", { children: "Failed to load ads" })] }), r && t.jsx("button", { onClick: r, className: "ml-4 px-3 py-1 text-sm font-medium text-red-700 bg-red-100 hover:bg-red-200 rounded transition-colors", children: "Retry" })] });
5223
4011
  }
5224
4012
  const ce = "ad-shimmer animate-shimmer";
5225
- function Jn({
5226
- variant: e = "action_card",
5227
- layout: r = "horizontal",
5228
- className: n,
5229
- count: s = 1
5230
- }) {
4013
+ function qn({ variant: e = "action_card", layout: r = "horizontal", className: n, count: s = 1 }) {
5231
4014
  const l = Array.from({ length: s }, (a, c) => c);
5232
- return e === "action_card" ? /* @__PURE__ */ t.jsx("div", { className: h("space-y-3", n), children: l.map((a) => /* @__PURE__ */ t.jsx(hn, { layout: r }, a)) }) : e === "suffix" ? /* @__PURE__ */ t.jsx("div", { className: h("space-y-2", n), children: l.map((a) => /* @__PURE__ */ t.jsx(xn, {}, a)) }) : e === "followup" ? /* @__PURE__ */ t.jsx("div", { className: h("flex flex-wrap gap-2", n), children: l.map((a) => /* @__PURE__ */ t.jsx(bn, {}, a)) }) : /* @__PURE__ */ t.jsx("div", { className: h("space-y-2", n), children: l.map((a) => /* @__PURE__ */ t.jsx(yn, {}, a)) });
4015
+ return e === "action_card" ? t.jsx("div", { className: h("space-y-3", n), children: l.map((a) => t.jsx(mn, { layout: r }, a)) }) : e === "suffix" ? t.jsx("div", { className: h("space-y-2", n), children: l.map((a) => t.jsx(fn, {}, a)) }) : e === "followup" ? t.jsx("div", { className: h("flex flex-wrap gap-2", n), children: l.map((a) => t.jsx(gn, {}, a)) }) : t.jsx("div", { className: h("space-y-2", n), children: l.map((a) => t.jsx(hn, {}, a)) });
5233
4016
  }
5234
- function hn({ layout: e }) {
5235
- return e === "compact" ? /* @__PURE__ */ t.jsx("div", { className: h(ce, "rounded-lg p-3 h-16 w-full") }) : e === "vertical" ? /* @__PURE__ */ t.jsxs("div", { className: h(ce, "rounded-lg p-4 w-full max-w-xs mx-auto"), children: [
5236
- /* @__PURE__ */ t.jsx("div", { className: "aspect-square rounded mb-3" }),
5237
- /* @__PURE__ */ t.jsx("div", { className: "h-4 rounded w-3/4 mb-2" }),
5238
- /* @__PURE__ */ t.jsx("div", { className: "h-3 rounded w-1/2" })
5239
- ] }) : /* @__PURE__ */ t.jsxs("div", { className: h(ce, "rounded-lg p-4 w-full flex gap-4"), children: [
5240
- /* @__PURE__ */ t.jsx("div", { className: "w-20 h-20 rounded flex-shrink-0" }),
5241
- /* @__PURE__ */ t.jsxs("div", { className: "flex-1 space-y-2", children: [
5242
- /* @__PURE__ */ t.jsx("div", { className: "h-4 rounded w-3/4" }),
5243
- /* @__PURE__ */ t.jsx("div", { className: "h-3 rounded w-1/2" }),
5244
- /* @__PURE__ */ t.jsx("div", { className: "h-6 rounded w-20" })
5245
- ] })
5246
- ] });
4017
+ function mn({ layout: e }) {
4018
+ return e === "compact" ? t.jsx("div", { className: h(ce, "rounded-lg p-3 h-16 w-full") }) : e === "vertical" ? t.jsxs("div", { className: h(ce, "rounded-lg p-4 w-full max-w-xs mx-auto"), children: [t.jsx("div", { className: "aspect-square rounded mb-3" }), t.jsx("div", { className: "h-4 rounded w-3/4 mb-2" }), t.jsx("div", { className: "h-3 rounded w-1/2" })] }) : t.jsxs("div", { className: h(ce, "rounded-lg p-4 w-full flex gap-4"), children: [t.jsx("div", { className: "w-20 h-20 rounded flex-shrink-0" }), t.jsxs("div", { className: "flex-1 space-y-2", children: [t.jsx("div", { className: "h-4 rounded w-3/4" }), t.jsx("div", { className: "h-3 rounded w-1/2" }), t.jsx("div", { className: "h-6 rounded w-20" })] })] });
5247
4019
  }
5248
- function xn() {
5249
- return /* @__PURE__ */ t.jsx("div", { className: h(ce, "mt-4 p-3 rounded-lg h-12 w-full") });
4020
+ function fn() {
4021
+ return t.jsx("div", { className: h(ce, "mt-4 p-3 rounded-lg h-12 w-full") });
5250
4022
  }
5251
- function bn() {
5252
- return /* @__PURE__ */ t.jsx("div", { className: h(ce, "h-10 px-4 rounded-full w-32") });
4023
+ function gn() {
4024
+ return t.jsx("div", { className: h(ce, "h-10 px-4 rounded-full w-32") });
5253
4025
  }
5254
- function yn() {
5255
- return /* @__PURE__ */ t.jsxs("div", { className: h(ce, "flex items-center gap-3 py-2 px-3 rounded-md w-full"), children: [
5256
- /* @__PURE__ */ t.jsx("div", { className: "w-8 h-8 rounded flex-shrink-0" }),
5257
- /* @__PURE__ */ t.jsx("div", { className: "flex-1 h-4 rounded w-40" }),
5258
- /* @__PURE__ */ t.jsx("div", { className: "w-3.5 h-3.5 rounded flex-shrink-0" })
5259
- ] });
4026
+ function hn() {
4027
+ return t.jsxs("div", { className: h(ce, "flex items-center gap-3 py-2 px-3 rounded-md w-full"), children: [t.jsx("div", { className: "w-8 h-8 rounded flex-shrink-0" }), t.jsx("div", { className: "flex-1 h-4 rounded w-40" }), t.jsx("div", { className: "w-3.5 h-3.5 rounded flex-shrink-0" })] });
5260
4028
  }
5261
- function Yn({ size: e = "md", className: r }) {
4029
+ function Vn({ size: e = "md", className: r }) {
5262
4030
  const n = {
5263
4031
  sm: "w-4 h-4",
5264
4032
  md: "w-6 h-6",
5265
4033
  lg: "w-8 h-8"
5266
4034
  };
5267
- return /* @__PURE__ */ t.jsx("div", { className: h("inline-flex items-center", r), children: /* @__PURE__ */ t.jsxs(
5268
- "svg",
5269
- {
5270
- className: h(n[e], "animate-spin text-ad-primary"),
5271
- fill: "none",
5272
- viewBox: "0 0 24 24",
5273
- children: [
5274
- /* @__PURE__ */ t.jsx(
5275
- "circle",
5276
- {
5277
- className: "opacity-25",
5278
- cx: "12",
5279
- cy: "12",
5280
- r: "10",
5281
- stroke: "currentColor",
5282
- strokeWidth: "4"
5283
- }
5284
- ),
5285
- /* @__PURE__ */ t.jsx(
5286
- "path",
5287
- {
5288
- className: "opacity-75",
5289
- fill: "currentColor",
5290
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
5291
- }
5292
- )
5293
- ]
5294
- }
5295
- ) });
4035
+ return t.jsx("div", { className: h("inline-flex items-center", r), children: t.jsxs("svg", { className: h(n[e], "animate-spin text-ad-primary"), fill: "none", viewBox: "0 0 24 24", children: [t.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), t.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }) });
5296
4036
  }
5297
- function Kn({ className: e }) {
5298
- return /* @__PURE__ */ t.jsxs("div", { className: h("inline-flex items-center gap-1", e), children: [
5299
- /* @__PURE__ */ t.jsx("span", { className: "w-1.5 h-1.5 bg-ad-primary rounded-full animate-bounce", style: { animationDelay: "0ms" } }),
5300
- /* @__PURE__ */ t.jsx("span", { className: "w-1.5 h-1.5 bg-ad-primary rounded-full animate-bounce", style: { animationDelay: "150ms" } }),
5301
- /* @__PURE__ */ t.jsx("span", { className: "w-1.5 h-1.5 bg-ad-primary rounded-full animate-bounce", style: { animationDelay: "300ms" } })
5302
- ] });
4037
+ function Hn({ className: e }) {
4038
+ return t.jsxs("div", { className: h("inline-flex items-center gap-1", e), children: [t.jsx("span", { className: "w-1.5 h-1.5 bg-ad-primary rounded-full animate-bounce", style: { animationDelay: "0ms" } }), t.jsx("span", { className: "w-1.5 h-1.5 bg-ad-primary rounded-full animate-bounce", style: { animationDelay: "150ms" } }), t.jsx("span", { className: "w-1.5 h-1.5 bg-ad-primary rounded-full animate-bounce", style: { animationDelay: "300ms" } })] });
5303
4039
  }
5304
- function Xn({ message: e = "Loading...", className: r }) {
5305
- return /* @__PURE__ */ t.jsxs("div", { className: h("flex flex-col items-center justify-center min-h-screen", r), children: [
5306
- /* @__PURE__ */ t.jsxs(
5307
- "svg",
5308
- {
5309
- className: "w-12 h-12 animate-spin text-ad-primary mb-4",
5310
- fill: "none",
5311
- viewBox: "0 0 24 24",
5312
- children: [
5313
- /* @__PURE__ */ t.jsx(
5314
- "circle",
5315
- {
5316
- className: "opacity-25",
5317
- cx: "12",
5318
- cy: "12",
5319
- r: "10",
5320
- stroke: "currentColor",
5321
- strokeWidth: "4"
5322
- }
5323
- ),
5324
- /* @__PURE__ */ t.jsx(
5325
- "path",
5326
- {
5327
- className: "opacity-75",
5328
- fill: "currentColor",
5329
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
5330
- }
5331
- )
5332
- ]
5333
- }
5334
- ),
5335
- /* @__PURE__ */ t.jsx("p", { className: "text-gray-600", children: e })
5336
- ] });
4040
+ function Jn({ message: e = "Loading...", className: r }) {
4041
+ return t.jsxs("div", { className: h("flex flex-col items-center justify-center min-h-screen", r), children: [t.jsxs("svg", { className: "w-12 h-12 animate-spin text-ad-primary mb-4", fill: "none", viewBox: "0 0 24 24", children: [t.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), t.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), t.jsx("p", { className: "text-gray-600", children: e })] });
5337
4042
  }
5338
4043
  const we = [
5339
4044
  // === Electronics ===
@@ -5727,7 +4432,7 @@ const we = [
5727
4432
  category: "Software"
5728
4433
  }
5729
4434
  }
5730
- ], Zn = [
4435
+ ], Yn = [
5731
4436
  {
5732
4437
  adId: "sony_wh1000xm5",
5733
4438
  adTitle: "Sony WH-1000XM5 Wireless Headphones",
@@ -5817,74 +4522,75 @@ const we = [
5817
4522
  // 25 minutes ago
5818
4523
  }
5819
4524
  ];
5820
- function Qn(e) {
4525
+ function Kn(e) {
5821
4526
  return we.filter((r) => {
5822
4527
  var n;
5823
4528
  return ((n = r.metadata) == null ? void 0 : n.category) === e;
5824
4529
  });
5825
4530
  }
5826
- function eo(e) {
4531
+ function Xn(e) {
5827
4532
  return we.filter((r) => r.source === e);
5828
4533
  }
5829
- function to(e = 3) {
4534
+ function Zn(e = 3) {
5830
4535
  return [...we].sort(() => Math.random() - 0.5).slice(0, Math.min(e, we.length));
5831
4536
  }
5832
- function ro(e) {
4537
+ function Qn(e) {
5833
4538
  return we.find((r) => r.id === e);
5834
4539
  }
5835
4540
  export {
5836
- In as ActionCardAd,
5837
- Gn as AdAnalyticsDashboard,
5838
- gn as AdErrorBoundary,
5839
- Hn as AdErrorHandler,
5840
- wr as AdLogger,
5841
- Un as AdPlaceholder,
5842
- Rn as AdProvider,
5843
- Jn as AdSkeleton,
5844
- Kn as DotsLoading,
5845
- nn as FollowUpAd,
5846
- On as FollowUpAdMixed,
5847
- Xn as FullPageLoading,
5848
- Wn as IABSizePresets,
5849
- Yn as InlineLoading,
5850
- fr as IntentType,
5851
- Fn as LeadGenAd,
5852
- zn as LeadGenAdCompact,
5853
- $n as LeadGenAdMinimal,
5854
- qn as MiniDashboard,
4541
+ Rn as ActionCardAd,
4542
+ Bn as AdAnalyticsDashboard,
4543
+ pn as AdErrorBoundary,
4544
+ Gn as AdErrorHandler,
4545
+ br as AdLogger,
4546
+ $n as AdPlaceholder,
4547
+ Sn as AdProvider,
4548
+ qn as AdSkeleton,
4549
+ Hn as DotsLoading,
4550
+ en as FollowUpAd,
4551
+ In as FollowUpAdMixed,
4552
+ Jn as FullPageLoading,
4553
+ zn as IABSizePresets,
4554
+ Vn as InlineLoading,
4555
+ ct as IntentType,
4556
+ Mn as LeadGenAd,
4557
+ Ln as LeadGenAdCompact,
4558
+ On as LeadGenAdMinimal,
4559
+ Un as MiniDashboard,
5855
4560
  Dn as SourceListWithAds,
5856
- on as SponsoredSource,
5857
- cn as StaticAd,
5858
- Bn as StaticAdContainer,
4561
+ tn as SponsoredSource,
4562
+ sn as StaticAd,
4563
+ Fn as StaticAdContainer,
5859
4564
  Rt as SuffixAd,
5860
- Mn as SuffixAdInline,
5861
- Ln as SuffixAdMinimal,
5862
- rn as TextWeaver,
5863
- Nn as adaptAdToKoahAd,
5864
- br as checkFrequencyControl,
4565
+ Tn as SuffixAdInline,
4566
+ Pn as SuffixAdMinimal,
4567
+ Qr as TextWeaver,
4568
+ wn as adaptAdToKoahAd,
4569
+ gr as checkFrequencyControl,
5865
4570
  h as cn,
5866
- Pn as createLogger,
5867
- ro as getAdById,
5868
- Qn as getAdsByCategory,
5869
- eo as getAdsBySource,
5870
- to as getRandomAds,
4571
+ En as createLogger,
4572
+ _n as fetchAds,
4573
+ Qn as getAdById,
4574
+ Kn as getAdsByCategory,
4575
+ Xn as getAdsBySource,
4576
+ Zn as getRandomAds,
5871
4577
  jt as getSessionId,
5872
4578
  vt as hashUserId,
5873
4579
  we as mockAds,
5874
- Zn as mockAnalyticsData,
4580
+ Yn as mockAnalyticsData,
5875
4581
  wt as recordImpression,
5876
- Te as textWeaver,
5877
- qe as trackClick,
4582
+ Re as textWeaver,
4583
+ Ge as trackClick,
5878
4584
  yt as trackImpression,
5879
- Tn as useAdConfig,
5880
- Cn as useAdSlot,
5881
- xr as useAdSlots,
4585
+ An as useAdConfig,
4586
+ jn as useAdSlot,
4587
+ fr as useAdSlots,
5882
4588
  Q as useAdTracking,
5883
- An as useAdTrackingMultiple,
5884
- hr as useAiAds,
5885
- _n as useAiAdsInfinite,
5886
- kn as useAiAdsLazy,
5887
- Sn as useChatWithAds,
5888
- En as useClickTracking,
5889
- Vn as withAdErrorBoundary
4589
+ Nn as useAdTrackingMultiple,
4590
+ mr as useAiAds,
4591
+ vn as useAiAdsInfinite,
4592
+ yn as useAiAdsLazy,
4593
+ kn as useChatWithAds,
4594
+ Cn as useClickTracking,
4595
+ Wn as withAdErrorBoundary
5890
4596
  };