@gengage/assistant-fe 0.1.4 → 0.1.5
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/chat/index.d.ts +12 -0
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat.cjs +1 -1
- package/dist/chat.iife.js +24 -24
- package/dist/chat.iife.js.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/common.cjs +1 -1
- package/dist/common.js +4 -4
- package/dist/index-eefqsSOT.cjs +13 -0
- package/dist/index-eefqsSOT.cjs.map +1 -0
- package/dist/{index-DC0Bo9EA.js → index-kp84NL1R.js} +781 -719
- package/dist/index-kp84NL1R.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/qna.js +1 -1
- package/dist/{schemas-CPkzbgia.js → schemas-B9GN-J3e.js} +6 -6
- package/dist/{schemas-CPkzbgia.js.map → schemas-B9GN-J3e.js.map} +1 -1
- package/dist/simrel.js +1 -1
- package/package.json +1 -1
- package/dist/index-DC0Bo9EA.js.map +0 -1
- package/dist/index-DHfTHscz.cjs +0 -13
- package/dist/index-DHfTHscz.cjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { b as
|
|
2
|
-
import { s as Z, i as K, c as se, d as D, a as Q, f as F, e as
|
|
1
|
+
import { b as be, c as Pe, a as Be, A as Me, r as ze, o as N, s as b, f as B, C as ae, d as oe, u as re, v as Y, e as G, _ as xe, B as De, D as Re, j as O, t as Ue, i as He, E as Fe, F as Oe, g as qe, G as je, H as Ve, I as ge, m as $e, J as Ge, y as Ke, x as We, n as Ye, K as Qe, L as de, h as Xe, M as Je, N as Ze, l as et, O as tt, P as at, Q as nt, R as it, S as ot, T as rt } from "./schemas-B9GN-J3e.js";
|
|
2
|
+
import { s as Z, i as K, c as se, d as D, a as Q, f as F, e as $, r as ve, g as we, b as ye } from "./quantity-stepper-B8kX8GbN.js";
|
|
3
3
|
function st() {
|
|
4
4
|
const o = Date.now(), e = new Uint8Array(16);
|
|
5
5
|
crypto.getRandomValues(e), e[0] = o / 2 ** 40 & 255, e[1] = o / 2 ** 32 & 255, e[2] = o / 2 ** 24 & 255, e[3] = o / 2 ** 16 & 255, e[4] = o / 2 ** 8 & 255, e[5] = o & 255, e[6] = e[6] & 15 | 112, e[8] = e[8] & 63 | 128;
|
|
@@ -205,16 +205,16 @@ function wt(o) {
|
|
|
205
205
|
return e !== "inputText" && e !== "user_message" && (n.action_type = e, t !== void 0 && (n.action_payload = typeof t == "string" ? { text: t } : t)), JSON.stringify(n);
|
|
206
206
|
}
|
|
207
207
|
function yt(o, e, t) {
|
|
208
|
-
const a =
|
|
208
|
+
const a = be("process_action", t), n = new AbortController();
|
|
209
209
|
return (async () => {
|
|
210
210
|
try {
|
|
211
211
|
const r = t.backendType === "acap" ? wt(o) : vt(o), s = t.attachment !== void 0;
|
|
212
212
|
let l;
|
|
213
213
|
if (s) {
|
|
214
|
-
const
|
|
215
|
-
|
|
214
|
+
const h = new FormData();
|
|
215
|
+
h.append("request", r), t.attachment !== void 0 && h.append("attachment", t.attachment), l = {
|
|
216
216
|
method: "POST",
|
|
217
|
-
body:
|
|
217
|
+
body: h,
|
|
218
218
|
signal: n.signal
|
|
219
219
|
};
|
|
220
220
|
} else
|
|
@@ -226,22 +226,22 @@ function yt(o, e, t) {
|
|
|
226
226
|
};
|
|
227
227
|
const g = await fetch(a, l);
|
|
228
228
|
if (!g.ok) {
|
|
229
|
-
let
|
|
229
|
+
let h = g.statusText;
|
|
230
230
|
try {
|
|
231
231
|
const d = await g.json(), v = d.detail ?? d.message ?? d.error;
|
|
232
|
-
typeof v == "string" && (
|
|
232
|
+
typeof v == "string" && (h = v);
|
|
233
233
|
} catch {
|
|
234
234
|
}
|
|
235
|
-
e.onError(new Error(`HTTP ${g.status}: ${
|
|
235
|
+
e.onError(new Error(`HTTP ${g.status}: ${h}`));
|
|
236
236
|
return;
|
|
237
237
|
}
|
|
238
238
|
let c = !1;
|
|
239
|
-
const
|
|
239
|
+
const p = () => {
|
|
240
240
|
c || (c = !0, e.onDone());
|
|
241
241
|
};
|
|
242
|
-
await
|
|
243
|
-
onEvent: (
|
|
244
|
-
const d =
|
|
242
|
+
await Pe(g, {
|
|
243
|
+
onEvent: (h) => {
|
|
244
|
+
const d = Be(h);
|
|
245
245
|
if (d)
|
|
246
246
|
switch (d.type) {
|
|
247
247
|
case "text_chunk":
|
|
@@ -264,13 +264,13 @@ function yt(o, e, t) {
|
|
|
264
264
|
e.onError(new Error(d.message));
|
|
265
265
|
break;
|
|
266
266
|
case "done":
|
|
267
|
-
|
|
267
|
+
p();
|
|
268
268
|
break;
|
|
269
269
|
}
|
|
270
270
|
},
|
|
271
271
|
onError: e.onError,
|
|
272
272
|
signal: n.signal
|
|
273
|
-
}),
|
|
273
|
+
}), p();
|
|
274
274
|
} catch (r) {
|
|
275
275
|
if (r instanceof DOMException && r.name === "AbortError") return;
|
|
276
276
|
e.onError(r instanceof Error ? r : new Error(String(r)));
|
|
@@ -278,7 +278,7 @@ function yt(o, e, t) {
|
|
|
278
278
|
})(), n;
|
|
279
279
|
}
|
|
280
280
|
async function _t(o, e) {
|
|
281
|
-
const t =
|
|
281
|
+
const t = be("proactive_action", e);
|
|
282
282
|
try {
|
|
283
283
|
const a = await fetch(t, {
|
|
284
284
|
method: "POST",
|
|
@@ -412,9 +412,9 @@ function Et(o) {
|
|
|
412
412
|
return Ct(o) === "en" ? kt : ce;
|
|
413
413
|
}
|
|
414
414
|
function St() {
|
|
415
|
-
return
|
|
415
|
+
return _e() !== null;
|
|
416
416
|
}
|
|
417
|
-
function
|
|
417
|
+
function _e() {
|
|
418
418
|
const o = globalThis;
|
|
419
419
|
return o.SpeechRecognition ?? o.webkitSpeechRecognition ?? null;
|
|
420
420
|
}
|
|
@@ -430,7 +430,7 @@ class Tt {
|
|
|
430
430
|
*/
|
|
431
431
|
start() {
|
|
432
432
|
if (this._state === "listening") return;
|
|
433
|
-
const e =
|
|
433
|
+
const e = _e();
|
|
434
434
|
if (!e) {
|
|
435
435
|
this.setState("error"), this.callbacks.onError?.("not-supported", "Web Speech API is not supported in this browser.");
|
|
436
436
|
return;
|
|
@@ -581,7 +581,7 @@ class At {
|
|
|
581
581
|
this._el.style.display = "none";
|
|
582
582
|
}
|
|
583
583
|
}
|
|
584
|
-
const
|
|
584
|
+
const pe = {
|
|
585
585
|
search: '<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="6.5" cy="6.5" r="5" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="10" y1="10" x2="15" y2="15" stroke="currentColor" stroke-width="1.5"/></svg>',
|
|
586
586
|
review: '<svg viewBox="0 0 16 16" class="gengage-chat-icon"><polygon points="8,1 10,6 15,6 11,9 12.5,14 8,11 3.5,14 5,9 1,6 6,6" fill="none" stroke="currentColor" stroke-width="1.5"/></svg>',
|
|
587
587
|
info: '<svg viewBox="0 0 16 16" class="gengage-chat-icon"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.5"/><line x1="8" y1="7" x2="8" y2="12" stroke="currentColor" stroke-width="1.5"/><circle cx="8" cy="4.5" r="0.8" fill="currentColor"/></svg>',
|
|
@@ -620,15 +620,15 @@ class Bt {
|
|
|
620
620
|
}
|
|
621
621
|
const c = document.createElement("button");
|
|
622
622
|
c.className = "gengage-chat-close", c.type = "button", c.setAttribute("aria-label", this.i18n.closeButton), c.innerHTML = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>', c.addEventListener("click", t.onClose), g.appendChild(c), a.appendChild(g);
|
|
623
|
-
const
|
|
624
|
-
|
|
623
|
+
const p = document.createElement("div");
|
|
624
|
+
p.className = "gengage-chat-body", this._panelEl = document.createElement("div"), this._panelEl.className = "gengage-chat-panel", this._panelTopBar = new Nt({
|
|
625
625
|
onBack: () => t.onPanelBack?.(),
|
|
626
626
|
onForward: () => t.onPanelForward?.()
|
|
627
|
-
}), this._panelEl.appendChild(this._panelTopBar.getElement()),
|
|
628
|
-
const
|
|
629
|
-
|
|
627
|
+
}), this._panelEl.appendChild(this._panelTopBar.getElement()), p.appendChild(this._panelEl), this._dividerEl = document.createElement("div"), this._dividerEl.className = "gengage-chat-panel-divider gengage-chat-panel-divider--hidden", this._dividerEl.setAttribute("role", "separator"), this._dividerEl.setAttribute("aria-label", "Toggle panel");
|
|
628
|
+
const h = document.createElement("button");
|
|
629
|
+
h.className = "gengage-chat-panel-divider-toggle", h.type = "button", h.setAttribute("aria-label", "Toggle panel"), h.textContent = "»", h.addEventListener("click", () => {
|
|
630
630
|
this.togglePanel(), this._onPanelToggle?.();
|
|
631
|
-
}), this._dividerEl.appendChild(
|
|
631
|
+
}), this._dividerEl.appendChild(h), p.appendChild(this._dividerEl);
|
|
632
632
|
const d = document.createElement("div");
|
|
633
633
|
d.className = "gengage-chat-conversation", d.appendChild(a), this._kvkkSlot = document.createElement("div"), this._kvkkSlot.className = "gengage-chat-kvkk-slot", d.appendChild(this._kvkkSlot), this.messagesEl = document.createElement("div"), this.messagesEl.className = "gengage-chat-messages", this.messagesEl.setAttribute("role", "log"), this.messagesEl.setAttribute("aria-live", "polite"), this.messagesEl.setAttribute("aria-label", "Chat messages");
|
|
634
634
|
let v = !1;
|
|
@@ -637,62 +637,62 @@ class Bt {
|
|
|
637
637
|
() => {
|
|
638
638
|
v || (v = !0, requestAnimationFrame(() => {
|
|
639
639
|
v = !1;
|
|
640
|
-
const { scrollTop: u, scrollHeight:
|
|
641
|
-
this._userScrolledUp =
|
|
640
|
+
const { scrollTop: u, scrollHeight: w, clientHeight: k } = this.messagesEl;
|
|
641
|
+
this._userScrolledUp = w - u - k > 10;
|
|
642
642
|
}));
|
|
643
643
|
},
|
|
644
644
|
{ passive: !0 }
|
|
645
645
|
), d.appendChild(this.messagesEl), this._thumbnailsColumn = new At({
|
|
646
646
|
onThumbnailClick: (u) => t.onThumbnailClick?.(u)
|
|
647
647
|
}), this._panelEl.appendChild(this._thumbnailsColumn.getElement()), this._pillsEl = document.createElement("div"), this._pillsEl.className = "gengage-chat-pills", this._pillsEl.setAttribute("role", "toolbar"), this._pillsEl.setAttribute("aria-label", "Suggestions"), this._pillsEl.style.display = "none";
|
|
648
|
-
const
|
|
649
|
-
|
|
650
|
-
const
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
}), this._pillsEl.appendChild(
|
|
654
|
-
let
|
|
655
|
-
|
|
648
|
+
const _ = document.createElement("div");
|
|
649
|
+
_.className = "gengage-chat-pills-scroll", this._pillsEl.appendChild(_);
|
|
650
|
+
const x = document.createElement("button");
|
|
651
|
+
x.className = "gengage-chat-pills-arrow", x.type = "button", x.setAttribute("aria-label", "More suggestions"), x.textContent = "›", x.addEventListener("click", () => {
|
|
652
|
+
_.scrollBy({ left: 150, behavior: "smooth" });
|
|
653
|
+
}), this._pillsEl.appendChild(x);
|
|
654
|
+
let L = !1;
|
|
655
|
+
_.addEventListener(
|
|
656
656
|
"scroll",
|
|
657
657
|
() => {
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
const u =
|
|
661
|
-
|
|
658
|
+
L || (L = !0, requestAnimationFrame(() => {
|
|
659
|
+
L = !1;
|
|
660
|
+
const u = _.scrollLeft + _.clientWidth >= _.scrollWidth - 4;
|
|
661
|
+
x.style.display = u ? "none" : "";
|
|
662
662
|
}));
|
|
663
663
|
},
|
|
664
664
|
{ passive: !0 }
|
|
665
665
|
), d.appendChild(this._pillsEl), this._inputChipsEl = document.createElement("div"), this._inputChipsEl.className = "gengage-chat-input-chips", this._inputChipsEl.style.display = "none", d.appendChild(this._inputChipsEl);
|
|
666
|
-
const
|
|
667
|
-
|
|
666
|
+
const T = document.createElement("div");
|
|
667
|
+
T.className = "gengage-chat-input-area", this.inputEl = document.createElement("textarea"), this.inputEl.className = "gengage-chat-input", this.inputEl.rows = 1, this.inputEl.placeholder = this.i18n.inputPlaceholder, this.inputEl.addEventListener("input", () => {
|
|
668
668
|
requestAnimationFrame(() => {
|
|
669
669
|
this.inputEl.style.height = "auto", this.inputEl.style.height = `${Math.min(this.inputEl.scrollHeight, 120)}px`;
|
|
670
670
|
});
|
|
671
671
|
}), this.inputEl.addEventListener("keydown", (u) => {
|
|
672
672
|
u.key === "Enter" && (window.innerWidth < 768 || !u.shiftKey) && (u.preventDefault(), this._submit());
|
|
673
673
|
}), this.inputEl.addEventListener("paste", (u) => {
|
|
674
|
-
const
|
|
675
|
-
|
|
674
|
+
const w = u.clipboardData?.files[0];
|
|
675
|
+
w && w.type.startsWith("image/") && (u.preventDefault(), this._onAttachment ? this._onAttachment(w) : this.stageAttachment(w));
|
|
676
676
|
}), this._fileInput = document.createElement("input"), this._fileInput.type = "file", this._fileInput.accept = "image/jpeg,image/png,image/webp", this._fileInput.style.display = "none", this._fileInput.addEventListener("change", () => {
|
|
677
677
|
const u = this._fileInput.files?.[0];
|
|
678
678
|
u && (this._onAttachment ? this._onAttachment(u) : this.stageAttachment(u)), this._fileInput.value = "";
|
|
679
679
|
});
|
|
680
|
-
const
|
|
681
|
-
|
|
682
|
-
const
|
|
683
|
-
|
|
684
|
-
const
|
|
685
|
-
|
|
686
|
-
u.preventDefault(),
|
|
687
|
-
}),
|
|
688
|
-
|
|
689
|
-
}),
|
|
690
|
-
u.preventDefault(),
|
|
691
|
-
const
|
|
692
|
-
|
|
680
|
+
const m = document.createElement("button");
|
|
681
|
+
m.className = "gengage-chat-attach-btn", m.type = "button", m.setAttribute("aria-label", this.i18n.attachImageButton), m.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>', m.addEventListener("click", () => this._fileInput.click()), this._previewStrip = document.createElement("div"), this._previewStrip.className = "gengage-chat-attachment-preview gengage-chat-attachment-preview--hidden";
|
|
682
|
+
const f = document.createElement("img");
|
|
683
|
+
f.className = "gengage-chat-attachment-preview-thumb", f.alt = "", this._previewName = document.createElement("span"), this._previewName.className = "gengage-chat-attachment-name";
|
|
684
|
+
const y = document.createElement("button");
|
|
685
|
+
y.className = "gengage-chat-attachment-remove", y.type = "button", y.setAttribute("aria-label", this.i18n.removeAttachmentButton), y.textContent = "×", y.addEventListener("click", () => this.clearAttachment()), this._previewStrip.appendChild(f), this._previewStrip.appendChild(this._previewName), this._previewStrip.appendChild(y), this.sendBtn = document.createElement("button"), this.sendBtn.className = "gengage-chat-send", this.sendBtn.type = "button", this.sendBtn.setAttribute("aria-label", this.i18n.sendButton), this.sendBtn.innerHTML = '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>', this.sendBtn.addEventListener("click", () => this._submit()), T.addEventListener("dragover", (u) => {
|
|
686
|
+
u.preventDefault(), T.classList.add("gengage-chat-input-area--dragover");
|
|
687
|
+
}), T.addEventListener("dragleave", () => {
|
|
688
|
+
T.classList.remove("gengage-chat-input-area--dragover");
|
|
689
|
+
}), T.addEventListener("drop", (u) => {
|
|
690
|
+
u.preventDefault(), T.classList.remove("gengage-chat-input-area--dragover");
|
|
691
|
+
const w = u.dataTransfer?.files[0];
|
|
692
|
+
w && (this._onAttachment ? this._onAttachment(w) : this.stageAttachment(w));
|
|
693
693
|
});
|
|
694
|
-
const
|
|
695
|
-
|
|
694
|
+
const C = document.createElement("div");
|
|
695
|
+
C.className = "gengage-chat-input-pill", C.appendChild(m), C.appendChild(this.inputEl), this._voiceEnabled && St() && (this._micBtn = document.createElement("button"), this._micBtn.className = "gengage-chat-mic-btn", this._micBtn.type = "button", this._micBtn.setAttribute("aria-label", this.i18n.voiceButton), this._micBtn.innerHTML = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>', this._micBtn.addEventListener("click", () => this._toggleVoice()), C.appendChild(this._micBtn), this._voiceInput = new Tt(
|
|
696
696
|
{
|
|
697
697
|
onInterim: (u) => {
|
|
698
698
|
this.inputEl.value = u, this.inputEl.style.height = "auto", this.inputEl.style.height = `${Math.min(this.inputEl.scrollHeight, 120)}px`;
|
|
@@ -706,12 +706,12 @@ class Bt {
|
|
|
706
706
|
onStateChange: (u) => {
|
|
707
707
|
u === "listening" ? this._micBtn?.classList.add("gengage-chat-mic-btn--active") : this._micBtn?.classList.remove("gengage-chat-mic-btn--active");
|
|
708
708
|
},
|
|
709
|
-
onError: (u,
|
|
709
|
+
onError: (u, w) => {
|
|
710
710
|
this._micBtn?.classList.remove("gengage-chat-mic-btn--active");
|
|
711
711
|
}
|
|
712
712
|
},
|
|
713
713
|
{ lang: this._voiceLang }
|
|
714
|
-
)),
|
|
714
|
+
)), C.appendChild(this.sendBtn), T.appendChild(this._previewStrip), T.appendChild(this._fileInput), T.appendChild(C), d.appendChild(T), p.appendChild(d), this.root.appendChild(p);
|
|
715
715
|
const A = document.createElement("div");
|
|
716
716
|
A.className = "gengage-chat-footer", A.textContent = this.i18n.poweredBy, this.root.appendChild(A), this.root.addEventListener("keydown", (u) => {
|
|
717
717
|
u.key === "Escape" && t.onClose();
|
|
@@ -802,7 +802,7 @@ class Bt {
|
|
|
802
802
|
for (const n of e) {
|
|
803
803
|
const i = document.createElement("button");
|
|
804
804
|
if (i.className = n.image ? "gengage-chat-pill gengage-chat-pill--rich" : "gengage-chat-pill", i.type = "button", n.icon) {
|
|
805
|
-
const s =
|
|
805
|
+
const s = pe[n.icon];
|
|
806
806
|
if (s) {
|
|
807
807
|
const l = document.createElement("span");
|
|
808
808
|
l.className = "gengage-chat-pill-icon", l.innerHTML = s, i.appendChild(l);
|
|
@@ -1063,7 +1063,7 @@ class Bt {
|
|
|
1063
1063
|
for (const t of e) {
|
|
1064
1064
|
const a = document.createElement("button");
|
|
1065
1065
|
if (a.className = "gengage-chat-input-chip", a.type = "button", t.icon) {
|
|
1066
|
-
const i =
|
|
1066
|
+
const i = pe[t.icon];
|
|
1067
1067
|
if (i) {
|
|
1068
1068
|
const r = document.createElement("span");
|
|
1069
1069
|
r.className = "gengage-chat-input-chip-icon", r.innerHTML = i, a.appendChild(r);
|
|
@@ -1211,7 +1211,7 @@ function Ht(o, e = "audio/ogg") {
|
|
|
1211
1211
|
class Ft {
|
|
1212
1212
|
constructor(e) {
|
|
1213
1213
|
this._timer = null, this._destroyed = !1, this._abortController = null, this._sessionStart = Date.now(), this._lastActivity = Date.now(), this._searchesCount = 0, this._actionsCount = 0, this._triggerFireCounts = {}, this._options = e;
|
|
1214
|
-
const t =
|
|
1214
|
+
const t = Me(e.middlewareUrl);
|
|
1215
1215
|
this._endpoint = `${t}/v2/heartbeat`;
|
|
1216
1216
|
}
|
|
1217
1217
|
start() {
|
|
@@ -1314,106 +1314,106 @@ function jt(o) {
|
|
|
1314
1314
|
if (g.className = "gengage-chat-comparison-heading", g.textContent = s?.comparisonHeading ?? "KARŞILAŞTIRMA SONUÇLARI", l.appendChild(g), e) {
|
|
1315
1315
|
const c = document.createElement("div");
|
|
1316
1316
|
c.className = "gengage-chat-comparison-recommended";
|
|
1317
|
+
const p = document.createElement("div");
|
|
1318
|
+
p.className = "gengage-chat-comparison-recommended-label", p.textContent = s?.recommendedChoiceLabel ?? "Önerilen Seçim", c.appendChild(p);
|
|
1317
1319
|
const h = document.createElement("div");
|
|
1318
|
-
h.className = "gengage-chat-comparison-recommended-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
const b = document.createElement("img");
|
|
1322
|
-
b.src = e.imageUrl, b.alt = e.name, b.loading = "lazy", b.addEventListener(
|
|
1320
|
+
if (h.className = "gengage-chat-comparison-recommended-body", e.imageUrl && K(e.imageUrl)) {
|
|
1321
|
+
const x = document.createElement("img");
|
|
1322
|
+
x.src = e.imageUrl, x.alt = e.name, x.loading = "lazy", x.addEventListener(
|
|
1323
1323
|
"error",
|
|
1324
1324
|
() => {
|
|
1325
|
-
|
|
1325
|
+
x.style.display = "none";
|
|
1326
1326
|
},
|
|
1327
1327
|
{ once: !0 }
|
|
1328
|
-
),
|
|
1328
|
+
), h.appendChild(x);
|
|
1329
1329
|
}
|
|
1330
1330
|
const d = document.createElement("div");
|
|
1331
1331
|
d.className = "gengage-chat-comparison-recommended-info";
|
|
1332
1332
|
const v = document.createElement("div");
|
|
1333
1333
|
v.className = "gengage-chat-comparison-recommended-title", v.textContent = e.name, d.appendChild(v);
|
|
1334
|
-
const
|
|
1335
|
-
if (
|
|
1334
|
+
const _ = document.createElement("div");
|
|
1335
|
+
if (_.className = "gengage-chat-comparison-recommended-price", _.textContent = e.price, d.appendChild(_), h.appendChild(d), h.addEventListener("click", () => {
|
|
1336
1336
|
r(e.sku);
|
|
1337
|
-
}),
|
|
1338
|
-
const
|
|
1339
|
-
|
|
1340
|
-
const
|
|
1341
|
-
|
|
1342
|
-
const
|
|
1343
|
-
for (const
|
|
1344
|
-
const
|
|
1345
|
-
|
|
1337
|
+
}), h.style.cursor = "pointer", c.appendChild(h), n.length > 0) {
|
|
1338
|
+
const x = document.createElement("div");
|
|
1339
|
+
x.className = "gengage-chat-comparison-highlights";
|
|
1340
|
+
const L = document.createElement("div");
|
|
1341
|
+
L.className = "gengage-chat-comparison-highlights-label", L.textContent = s?.highlightsLabel ?? "Öne Çıkan Özellikler", x.appendChild(L);
|
|
1342
|
+
const T = document.createElement("ul");
|
|
1343
|
+
for (const m of n) {
|
|
1344
|
+
const f = document.createElement("li");
|
|
1345
|
+
f.textContent = m, T.appendChild(f);
|
|
1346
1346
|
}
|
|
1347
|
-
|
|
1347
|
+
x.appendChild(T), c.appendChild(x);
|
|
1348
1348
|
}
|
|
1349
1349
|
if (o.recommendedText) {
|
|
1350
|
-
const
|
|
1351
|
-
|
|
1350
|
+
const x = document.createElement("div");
|
|
1351
|
+
x.className = "gengage-chat-comparison-recommended-text", x.textContent = o.recommendedText, c.appendChild(x);
|
|
1352
1352
|
}
|
|
1353
1353
|
l.appendChild(c);
|
|
1354
1354
|
}
|
|
1355
1355
|
if (o.keyDifferencesHtml) {
|
|
1356
1356
|
const c = document.createElement("div");
|
|
1357
1357
|
c.className = "gengage-chat-comparison-key-differences";
|
|
1358
|
-
const
|
|
1359
|
-
|
|
1360
|
-
const
|
|
1361
|
-
|
|
1358
|
+
const p = document.createElement("h4");
|
|
1359
|
+
p.textContent = s?.keyDifferencesLabel ?? "Temel Farklar", c.appendChild(p);
|
|
1360
|
+
const h = document.createElement("div");
|
|
1361
|
+
h.className = "gengage-chat-comparison-key-differences-content", h.innerHTML = Z(Vt(o.keyDifferencesHtml)), c.appendChild(h), l.appendChild(c);
|
|
1362
1362
|
}
|
|
1363
1363
|
if (i && i.length > 0) {
|
|
1364
1364
|
const c = document.createElement("details");
|
|
1365
1365
|
c.className = "gengage-chat-comparison-special";
|
|
1366
|
-
const
|
|
1367
|
-
|
|
1368
|
-
const
|
|
1366
|
+
const p = document.createElement("summary");
|
|
1367
|
+
p.textContent = s?.specialCasesLabel ?? "Özel Durumlar İçin", c.appendChild(p);
|
|
1368
|
+
const h = document.createElement("ul");
|
|
1369
1369
|
for (const d of i) {
|
|
1370
1370
|
const v = document.createElement("li");
|
|
1371
|
-
v.textContent = d,
|
|
1371
|
+
v.textContent = d, h.appendChild(v);
|
|
1372
1372
|
}
|
|
1373
|
-
c.appendChild(
|
|
1373
|
+
c.appendChild(h), l.appendChild(c);
|
|
1374
1374
|
}
|
|
1375
1375
|
if (t.length > 0 && a.length > 0) {
|
|
1376
1376
|
const c = document.createElement("table");
|
|
1377
1377
|
c.className = "gengage-chat-comparison-table";
|
|
1378
|
-
const
|
|
1379
|
-
|
|
1380
|
-
for (const
|
|
1381
|
-
const
|
|
1382
|
-
if (
|
|
1383
|
-
const
|
|
1384
|
-
|
|
1378
|
+
const p = document.createElement("thead"), h = document.createElement("tr"), d = document.createElement("th");
|
|
1379
|
+
h.appendChild(d);
|
|
1380
|
+
for (const _ of t) {
|
|
1381
|
+
const x = document.createElement("th");
|
|
1382
|
+
if (_.sku === e?.sku && (x.className = "gengage-chat-comparison-selected"), _.imageUrl && K(_.imageUrl)) {
|
|
1383
|
+
const m = document.createElement("img");
|
|
1384
|
+
m.src = _.imageUrl, m.alt = _.name, m.loading = "lazy", m.addEventListener(
|
|
1385
1385
|
"error",
|
|
1386
1386
|
() => {
|
|
1387
|
-
|
|
1387
|
+
m.style.display = "none";
|
|
1388
1388
|
},
|
|
1389
1389
|
{ once: !0 }
|
|
1390
|
-
),
|
|
1390
|
+
), x.appendChild(m);
|
|
1391
1391
|
}
|
|
1392
|
-
const
|
|
1393
|
-
|
|
1394
|
-
const
|
|
1395
|
-
|
|
1392
|
+
const L = document.createElement("div");
|
|
1393
|
+
L.textContent = _.name, x.appendChild(L);
|
|
1394
|
+
const T = document.createElement("div");
|
|
1395
|
+
T.className = "gengage-chat-comparison-table-price", T.textContent = _.price, x.appendChild(T), h.appendChild(x);
|
|
1396
1396
|
}
|
|
1397
|
-
|
|
1397
|
+
p.appendChild(h), c.appendChild(p);
|
|
1398
1398
|
const v = document.createElement("tbody");
|
|
1399
|
-
for (const
|
|
1400
|
-
const
|
|
1401
|
-
|
|
1402
|
-
for (let
|
|
1403
|
-
const
|
|
1404
|
-
t[
|
|
1399
|
+
for (const _ of a) {
|
|
1400
|
+
const x = document.createElement("tr"), L = document.createElement("td");
|
|
1401
|
+
L.className = "gengage-chat-comparison-label", L.textContent = qt(_.label), x.appendChild(L);
|
|
1402
|
+
for (let T = 0; T < _.values.length; T++) {
|
|
1403
|
+
const m = document.createElement("td");
|
|
1404
|
+
t[T]?.sku === e?.sku && (m.className = "gengage-chat-comparison-selected"), m.textContent = _.values[T] ?? "", x.appendChild(m);
|
|
1405
1405
|
}
|
|
1406
|
-
v.appendChild(
|
|
1406
|
+
v.appendChild(x);
|
|
1407
1407
|
}
|
|
1408
1408
|
c.appendChild(v), l.appendChild(c);
|
|
1409
1409
|
}
|
|
1410
1410
|
if (o.productActions) {
|
|
1411
1411
|
const c = document.createElement("div");
|
|
1412
1412
|
c.className = "gengage-chat-comparison-product-actions";
|
|
1413
|
-
for (const
|
|
1414
|
-
if (o.productActions[
|
|
1413
|
+
for (const p of t)
|
|
1414
|
+
if (o.productActions[p.sku]) {
|
|
1415
1415
|
const d = document.createElement("button");
|
|
1416
|
-
d.className = "gengage-chat-comparison-view-btn", d.type = "button", d.textContent =
|
|
1416
|
+
d.className = "gengage-chat-comparison-view-btn", d.type = "button", d.textContent = p.name, d.addEventListener("click", () => r(p.sku)), c.appendChild(d);
|
|
1417
1417
|
}
|
|
1418
1418
|
c.childElementCount > 0 && l.appendChild(c);
|
|
1419
1419
|
}
|
|
@@ -1424,19 +1424,19 @@ function Vt(o) {
|
|
|
1424
1424
|
`).filter((t) => t.trim());
|
|
1425
1425
|
return e.length <= 1 ? o : "<ul>" + e.map((t) => `<li>${t.trim()}</li>`).join("") + "</ul>";
|
|
1426
1426
|
}
|
|
1427
|
-
function
|
|
1427
|
+
function $t(o, e) {
|
|
1428
1428
|
const t = document.createElement("div");
|
|
1429
1429
|
t.className = "gengage-chat-review-highlights";
|
|
1430
1430
|
const a = o.props?.reviews;
|
|
1431
1431
|
if (!Array.isArray(a) || a.length === 0) {
|
|
1432
|
-
const
|
|
1433
|
-
return
|
|
1432
|
+
const h = document.createElement("div");
|
|
1433
|
+
return h.className = "gengage-chat-review-empty", h.textContent = e?.emptyReviewsMessage ?? "Yorum özeti bulunamadı.", t.appendChild(h), t;
|
|
1434
1434
|
}
|
|
1435
1435
|
const n = a.filter(
|
|
1436
|
-
(
|
|
1436
|
+
(h) => h !== null && typeof h == "object"
|
|
1437
1437
|
), i = { all: n.length, positive: 0, negative: 0, neutral: 0 };
|
|
1438
|
-
for (const
|
|
1439
|
-
|
|
1438
|
+
for (const h of n)
|
|
1439
|
+
h.review_class === "positive" ? i.positive++ : h.review_class === "negative" ? i.negative++ : i.neutral++;
|
|
1440
1440
|
const r = document.createElement("div");
|
|
1441
1441
|
r.className = "gengage-chat-review-tabs";
|
|
1442
1442
|
const s = [{ label: `Tümü (${i.all})`, filter: "all" }];
|
|
@@ -1446,69 +1446,69 @@ function Gt(o, e) {
|
|
|
1446
1446
|
g.className = "gengage-chat-review-items";
|
|
1447
1447
|
function c() {
|
|
1448
1448
|
for (; g.firstChild; ) g.removeChild(g.firstChild);
|
|
1449
|
-
const
|
|
1450
|
-
for (const d of
|
|
1449
|
+
const h = l === "all" ? n : n.filter((d) => d.review_class === l);
|
|
1450
|
+
for (const d of h) {
|
|
1451
1451
|
const v = document.createElement("article");
|
|
1452
1452
|
v.className = "gengage-chat-review-item";
|
|
1453
|
-
const
|
|
1454
|
-
if ((
|
|
1455
|
-
const
|
|
1456
|
-
|
|
1453
|
+
const _ = d.review_class;
|
|
1454
|
+
if ((_ === "positive" || _ === "negative" || _ === "neutral") && (v.dataset.tone = _), typeof d.review_tag == "string" && d.review_tag.length > 0) {
|
|
1455
|
+
const x = document.createElement("div");
|
|
1456
|
+
x.className = "gengage-chat-review-tag", x.textContent = d.review_tag, v.appendChild(x);
|
|
1457
1457
|
}
|
|
1458
1458
|
if (typeof d.review_text == "string" && d.review_text.length > 0) {
|
|
1459
|
-
const
|
|
1460
|
-
|
|
1459
|
+
const x = document.createElement("div");
|
|
1460
|
+
x.className = "gengage-chat-review-text", x.textContent = d.review_text, v.appendChild(x);
|
|
1461
1461
|
}
|
|
1462
1462
|
if (d.review_rating !== void 0 && String(d.review_rating).length > 0) {
|
|
1463
|
-
const
|
|
1464
|
-
|
|
1463
|
+
const x = document.createElement("div");
|
|
1464
|
+
x.className = "gengage-chat-review-rating", x.textContent = String(d.review_rating), v.appendChild(x);
|
|
1465
1465
|
}
|
|
1466
1466
|
g.appendChild(v);
|
|
1467
1467
|
}
|
|
1468
1468
|
}
|
|
1469
|
-
for (const
|
|
1469
|
+
for (const h of s) {
|
|
1470
1470
|
const d = document.createElement("button");
|
|
1471
|
-
d.className = "gengage-chat-review-tab", d.type = "button", d.textContent =
|
|
1472
|
-
l =
|
|
1471
|
+
d.className = "gengage-chat-review-tab", d.type = "button", d.textContent = h.label, h.filter === l && d.classList.add("gengage-chat-review-tab--active"), d.addEventListener("click", () => {
|
|
1472
|
+
l = h.filter;
|
|
1473
1473
|
for (const v of r.querySelectorAll(".gengage-chat-review-tab"))
|
|
1474
1474
|
v.classList.toggle("gengage-chat-review-tab--active", v === d);
|
|
1475
1475
|
c();
|
|
1476
1476
|
}), r.appendChild(d);
|
|
1477
1477
|
}
|
|
1478
1478
|
t.appendChild(r);
|
|
1479
|
-
const
|
|
1480
|
-
for (const
|
|
1481
|
-
if (typeof
|
|
1482
|
-
const d =
|
|
1483
|
-
d ? d.count++ :
|
|
1479
|
+
const p = /* @__PURE__ */ new Map();
|
|
1480
|
+
for (const h of n)
|
|
1481
|
+
if (typeof h.review_tag == "string" && h.review_tag.length > 0) {
|
|
1482
|
+
const d = p.get(h.review_tag);
|
|
1483
|
+
d ? d.count++ : p.set(h.review_tag, { count: 1, sentiment: h.review_class ?? "neutral" });
|
|
1484
1484
|
}
|
|
1485
|
-
if (
|
|
1486
|
-
const
|
|
1487
|
-
|
|
1488
|
-
for (const [d, v] of
|
|
1489
|
-
const
|
|
1490
|
-
|
|
1491
|
-
const
|
|
1492
|
-
|
|
1493
|
-
const
|
|
1494
|
-
if (
|
|
1495
|
-
const
|
|
1496
|
-
|
|
1485
|
+
if (p.size > 0) {
|
|
1486
|
+
const h = document.createElement("div");
|
|
1487
|
+
h.className = "gengage-chat-review-pills";
|
|
1488
|
+
for (const [d, v] of p) {
|
|
1489
|
+
const _ = document.createElement("span");
|
|
1490
|
+
_.className = "gengage-chat-review-pill", _.dataset.tone = v.sentiment;
|
|
1491
|
+
const x = document.createElement("span");
|
|
1492
|
+
x.className = "gengage-chat-review-pill-icon", x.textContent = v.sentiment === "positive" ? "✓" : v.sentiment === "negative" ? "✕" : "●", _.appendChild(x);
|
|
1493
|
+
const L = document.createElement("span");
|
|
1494
|
+
if (L.textContent = d, _.appendChild(L), v.count > 1) {
|
|
1495
|
+
const T = document.createElement("span");
|
|
1496
|
+
T.className = "gengage-chat-review-pill-count", T.textContent = String(v.count), _.appendChild(T);
|
|
1497
1497
|
}
|
|
1498
|
-
|
|
1498
|
+
h.appendChild(_);
|
|
1499
1499
|
}
|
|
1500
|
-
t.appendChild(
|
|
1500
|
+
t.appendChild(h);
|
|
1501
1501
|
}
|
|
1502
1502
|
return c(), t.appendChild(g), t;
|
|
1503
1503
|
}
|
|
1504
|
-
const
|
|
1504
|
+
const Gt = {
|
|
1505
1505
|
winner: "roleWinner",
|
|
1506
1506
|
best_value: "roleBestValue",
|
|
1507
1507
|
best_alternative: "roleBestAlternative"
|
|
1508
1508
|
};
|
|
1509
|
-
function
|
|
1509
|
+
function ke(o, e) {
|
|
1510
1510
|
if (!o || !e) return null;
|
|
1511
|
-
const t =
|
|
1511
|
+
const t = Gt[o];
|
|
1512
1512
|
return t ? e[t] ?? o : o;
|
|
1513
1513
|
}
|
|
1514
1514
|
function Kt(o, e) {
|
|
@@ -1530,52 +1530,52 @@ function Wt(o, e) {
|
|
|
1530
1530
|
const t = document.createElement("div");
|
|
1531
1531
|
t.className = "gengage-chat-ai-toppick-card gengage-chat-ai-toppick-card--winner";
|
|
1532
1532
|
const a = document.createElement("span");
|
|
1533
|
-
a.className = "gengage-chat-ai-toppick-badge", a.textContent =
|
|
1533
|
+
a.className = "gengage-chat-ai-toppick-badge", a.textContent = ke(o.role, e.i18n) ?? e.i18n?.roleWinner ?? "TOP MATCH", t.appendChild(a);
|
|
1534
1534
|
const n = o.product, i = n.discountPercent;
|
|
1535
1535
|
if (typeof i == "number" && i > 0) {
|
|
1536
|
-
const
|
|
1537
|
-
|
|
1536
|
+
const p = document.createElement("span");
|
|
1537
|
+
p.className = "gengage-chat-ai-toppick-discount-badge", p.textContent = `%${se(i)}`, t.appendChild(p);
|
|
1538
1538
|
}
|
|
1539
1539
|
const r = n.imageUrl;
|
|
1540
1540
|
if (r && K(r)) {
|
|
1541
|
-
const
|
|
1542
|
-
|
|
1541
|
+
const p = document.createElement("img");
|
|
1542
|
+
p.className = "gengage-chat-ai-toppick-img", D(p, "src", r), p.alt = n.name ?? "", Q(p), t.appendChild(p);
|
|
1543
1543
|
}
|
|
1544
1544
|
const s = document.createElement("div");
|
|
1545
1545
|
s.className = "gengage-chat-ai-toppick-body";
|
|
1546
1546
|
const l = n.name;
|
|
1547
1547
|
if (l) {
|
|
1548
|
-
const
|
|
1549
|
-
|
|
1548
|
+
const p = document.createElement("div");
|
|
1549
|
+
p.className = "gengage-chat-ai-toppick-name", p.textContent = l, s.appendChild(p);
|
|
1550
1550
|
}
|
|
1551
1551
|
if (o.reason) {
|
|
1552
|
-
const
|
|
1553
|
-
|
|
1552
|
+
const p = document.createElement("div");
|
|
1553
|
+
p.className = "gengage-chat-ai-toppick-reason", p.textContent = o.reason, s.appendChild(p);
|
|
1554
1554
|
}
|
|
1555
|
-
if (o.labels && o.labels.length > 0 && s.appendChild(
|
|
1556
|
-
const
|
|
1557
|
-
|
|
1555
|
+
if (o.labels && o.labels.length > 0 && s.appendChild(Ce(o.labels)), typeof o.expertQualityScore == "number") {
|
|
1556
|
+
const p = document.createElement("div");
|
|
1557
|
+
p.className = "gengage-chat-ai-toppick-score", p.textContent = `${o.expertQualityScore}/10`, s.appendChild(p);
|
|
1558
1558
|
}
|
|
1559
1559
|
if (o.reviewHighlight) {
|
|
1560
|
-
const
|
|
1561
|
-
|
|
1560
|
+
const p = document.createElement("blockquote");
|
|
1561
|
+
p.className = "gengage-chat-ai-toppick-review", p.textContent = o.reviewHighlight, s.appendChild(p);
|
|
1562
1562
|
}
|
|
1563
1563
|
const g = n.price, c = n.originalPrice;
|
|
1564
1564
|
if (g) {
|
|
1565
|
-
const
|
|
1566
|
-
if (
|
|
1565
|
+
const p = document.createElement("div");
|
|
1566
|
+
if (p.className = "gengage-chat-ai-toppick-price", c && c !== g) {
|
|
1567
1567
|
const d = document.createElement("span");
|
|
1568
|
-
d.className = "gengage-chat-ai-toppick-original-price", d.textContent = F(c, e.pricing),
|
|
1568
|
+
d.className = "gengage-chat-ai-toppick-original-price", d.textContent = F(c, e.pricing), p.appendChild(d), p.appendChild(document.createTextNode(" "));
|
|
1569
1569
|
}
|
|
1570
|
-
const
|
|
1571
|
-
|
|
1570
|
+
const h = document.createElement("span");
|
|
1571
|
+
h.textContent = F(g, e.pricing), p.appendChild(h), s.appendChild(p);
|
|
1572
1572
|
}
|
|
1573
1573
|
if (t.appendChild(s), o.action) {
|
|
1574
|
-
const
|
|
1575
|
-
|
|
1574
|
+
const p = n.sku ?? null, h = document.createElement("div");
|
|
1575
|
+
h.className = "gengage-chat-ai-toppick-spinner", h.style.display = p && e.topPicksLoadingSku === p ? "" : "none", t.appendChild(h);
|
|
1576
1576
|
const d = document.createElement("button");
|
|
1577
1577
|
d.className = "gengage-chat-ai-toppick-cta", d.type = "button", d.textContent = e.i18n?.viewDetails ?? "View Details", d.addEventListener("click", () => {
|
|
1578
|
-
|
|
1578
|
+
p && (h.style.display = ""), e.onAction(o.action);
|
|
1579
1579
|
}), t.appendChild(d);
|
|
1580
1580
|
}
|
|
1581
1581
|
return t;
|
|
@@ -1595,7 +1595,7 @@ function Yt(o, e) {
|
|
|
1595
1595
|
}
|
|
1596
1596
|
const r = document.createElement("div");
|
|
1597
1597
|
r.className = "gengage-chat-ai-toppick-body";
|
|
1598
|
-
const s =
|
|
1598
|
+
const s = ke(o.role, e.i18n);
|
|
1599
1599
|
if (s) {
|
|
1600
1600
|
const c = document.createElement("div");
|
|
1601
1601
|
c.className = "gengage-chat-ai-toppick-role", c.textContent = s, r.appendChild(c);
|
|
@@ -1609,23 +1609,23 @@ function Yt(o, e) {
|
|
|
1609
1609
|
const c = document.createElement("div");
|
|
1610
1610
|
c.className = "gengage-chat-ai-toppick-reason", c.textContent = o.reason, r.appendChild(c);
|
|
1611
1611
|
}
|
|
1612
|
-
o.labels && o.labels.length > 0 && r.appendChild(
|
|
1612
|
+
o.labels && o.labels.length > 0 && r.appendChild(Ce(o.labels));
|
|
1613
1613
|
const g = a.price;
|
|
1614
1614
|
if (g) {
|
|
1615
1615
|
const c = document.createElement("div");
|
|
1616
1616
|
c.className = "gengage-chat-ai-toppick-price", c.textContent = F(g, e.pricing), r.appendChild(c);
|
|
1617
1617
|
}
|
|
1618
1618
|
if (t.appendChild(r), o.action) {
|
|
1619
|
-
const c = a.sku ?? null,
|
|
1620
|
-
|
|
1621
|
-
const
|
|
1622
|
-
|
|
1623
|
-
c && (
|
|
1624
|
-
}), t.appendChild(
|
|
1619
|
+
const c = a.sku ?? null, p = document.createElement("div");
|
|
1620
|
+
p.className = "gengage-chat-ai-toppick-spinner", p.style.display = c && e.topPicksLoadingSku === c ? "" : "none", t.appendChild(p);
|
|
1621
|
+
const h = document.createElement("button");
|
|
1622
|
+
h.className = "gengage-chat-ai-toppick-cta", h.type = "button", h.textContent = e.i18n?.viewDetails ?? "View Details", h.addEventListener("click", () => {
|
|
1623
|
+
c && (p.style.display = ""), e.onAction(o.action);
|
|
1624
|
+
}), t.appendChild(h);
|
|
1625
1625
|
}
|
|
1626
1626
|
return t;
|
|
1627
1627
|
}
|
|
1628
|
-
function
|
|
1628
|
+
function Ce(o) {
|
|
1629
1629
|
const e = document.createElement("div");
|
|
1630
1630
|
e.className = "gengage-chat-ai-toppick-labels";
|
|
1631
1631
|
for (const t of o) {
|
|
@@ -1643,14 +1643,14 @@ function Qt(o, e) {
|
|
|
1643
1643
|
g.className = "gengage-chat-grounding-review-body";
|
|
1644
1644
|
const c = document.createElement("div");
|
|
1645
1645
|
if (c.className = "gengage-chat-grounding-review-title", c.textContent = n ?? "Müşteri Yorumları", g.appendChild(c), i) {
|
|
1646
|
-
const
|
|
1647
|
-
|
|
1646
|
+
const h = document.createElement("div");
|
|
1647
|
+
h.className = "gengage-chat-grounding-review-subtitle";
|
|
1648
1648
|
const d = e.i18n?.groundingReviewSubtitle ?? "{count} yorum mevcut";
|
|
1649
|
-
|
|
1649
|
+
h.textContent = d.replace("{count}", i), g.appendChild(h);
|
|
1650
1650
|
}
|
|
1651
1651
|
t.appendChild(g);
|
|
1652
|
-
const
|
|
1653
|
-
return
|
|
1652
|
+
const p = document.createElement("span");
|
|
1653
|
+
return p.className = "gengage-chat-grounding-review-cta", p.textContent = `${s} →`, t.appendChild(p), r && (t.style.cursor = "pointer", t.addEventListener("click", () => e.onAction(r))), t;
|
|
1654
1654
|
}
|
|
1655
1655
|
function Xt(o, e) {
|
|
1656
1656
|
const t = document.createElement("div");
|
|
@@ -1762,21 +1762,21 @@ function ta(o, e) {
|
|
|
1762
1762
|
i.className = "gengage-chat-categories-tabs", i.setAttribute("role", "tablist");
|
|
1763
1763
|
const r = [], s = [], l = (g) => {
|
|
1764
1764
|
for (let c = 0; c < r.length; c++) {
|
|
1765
|
-
const
|
|
1766
|
-
r[c].classList.toggle("gengage-chat-categories-tab--active",
|
|
1765
|
+
const p = c === g;
|
|
1766
|
+
r[c].classList.toggle("gengage-chat-categories-tab--active", p), r[c].setAttribute("aria-selected", String(p)), r[c].tabIndex = p ? 0 : -1, s[c].style.display = p ? "" : "none";
|
|
1767
1767
|
}
|
|
1768
1768
|
};
|
|
1769
1769
|
for (let g = 0; g < t.length; g++) {
|
|
1770
|
-
const c = t[g],
|
|
1771
|
-
d.className = "gengage-chat-categories-tab", d.type = "button", d.id =
|
|
1772
|
-
let
|
|
1773
|
-
|
|
1770
|
+
const c = t[g], p = `gengage-cat-tab-${g}`, h = `gengage-cat-panel-${g}`, d = document.createElement("button");
|
|
1771
|
+
d.className = "gengage-chat-categories-tab", d.type = "button", d.id = p, d.setAttribute("role", "tab"), d.setAttribute("aria-controls", h), d.setAttribute("aria-selected", String(g === 0)), d.tabIndex = g === 0 ? 0 : -1, g === 0 && d.classList.add("gengage-chat-categories-tab--active"), d.textContent = c.groupName, d.addEventListener("click", () => l(g)), d.addEventListener("keydown", (_) => {
|
|
1772
|
+
let x = -1;
|
|
1773
|
+
_.key === "ArrowRight" || _.key === "ArrowDown" ? x = (g + 1) % t.length : _.key === "ArrowLeft" || _.key === "ArrowUp" ? x = (g - 1 + t.length) % t.length : _.key === "Home" ? x = 0 : _.key === "End" && (x = t.length - 1), x >= 0 && (_.preventDefault(), l(x), r[x].focus());
|
|
1774
1774
|
}), r.push(d), i.appendChild(d);
|
|
1775
1775
|
const v = document.createElement("div");
|
|
1776
|
-
v.className = "gengage-chat-categories-grid", v.id =
|
|
1777
|
-
for (const
|
|
1778
|
-
const
|
|
1779
|
-
v.appendChild(
|
|
1776
|
+
v.className = "gengage-chat-categories-grid", v.id = h, v.setAttribute("role", "tabpanel"), v.setAttribute("aria-labelledby", p), g !== 0 && (v.style.display = "none");
|
|
1777
|
+
for (const _ of c.products) {
|
|
1778
|
+
const x = aa(_, e);
|
|
1779
|
+
v.appendChild(x);
|
|
1780
1780
|
}
|
|
1781
1781
|
s.push(v);
|
|
1782
1782
|
}
|
|
@@ -1786,10 +1786,10 @@ function ta(o, e) {
|
|
|
1786
1786
|
const g = document.createElement("div");
|
|
1787
1787
|
g.className = "gengage-chat-categories-filter-tags";
|
|
1788
1788
|
for (const c of a) {
|
|
1789
|
-
const
|
|
1790
|
-
|
|
1789
|
+
const p = document.createElement("button");
|
|
1790
|
+
p.className = "gengage-chat-categories-filter-tag", p.type = "button", p.textContent = c.title, c.action && p.addEventListener("click", () => {
|
|
1791
1791
|
e.onAction(c.action);
|
|
1792
|
-
}), g.appendChild(
|
|
1792
|
+
}), g.appendChild(p);
|
|
1793
1793
|
}
|
|
1794
1794
|
n.appendChild(g);
|
|
1795
1795
|
}
|
|
@@ -1833,13 +1833,13 @@ function ia(o, e) {
|
|
|
1833
1833
|
d.target.closest("a") || e.onProductSelect?.(t);
|
|
1834
1834
|
});
|
|
1835
1835
|
const n = t.imageUrl;
|
|
1836
|
-
if (n &&
|
|
1836
|
+
if (n && $(n)) {
|
|
1837
1837
|
const d = document.createElement("div");
|
|
1838
1838
|
d.className = "gengage-chat-product-summary__image";
|
|
1839
1839
|
const v = document.createElement("img");
|
|
1840
1840
|
D(v, "src", n);
|
|
1841
|
-
const
|
|
1842
|
-
|
|
1841
|
+
const _ = t.name;
|
|
1842
|
+
_ && (v.alt = _), Q(v), d.appendChild(v), a.appendChild(d);
|
|
1843
1843
|
}
|
|
1844
1844
|
const i = document.createElement("div");
|
|
1845
1845
|
i.className = "gengage-chat-product-summary__content";
|
|
@@ -1853,40 +1853,40 @@ function ia(o, e) {
|
|
|
1853
1853
|
const l = t.rating, g = t.reviewCount;
|
|
1854
1854
|
if (typeof l == "number" && Number.isFinite(l) && l > 0) {
|
|
1855
1855
|
const d = document.createElement("div");
|
|
1856
|
-
if (d.className = "gengage-chat-product-summary__rating", d.textContent =
|
|
1856
|
+
if (d.className = "gengage-chat-product-summary__rating", d.textContent = ve(we(l)), typeof g == "number" && Number.isFinite(g)) {
|
|
1857
1857
|
const v = document.createElement("span");
|
|
1858
1858
|
v.className = "gengage-chat-product-summary__review-count", v.textContent = ` (${g})`, d.appendChild(v);
|
|
1859
1859
|
}
|
|
1860
1860
|
i.appendChild(d);
|
|
1861
1861
|
}
|
|
1862
|
-
const c = t.price,
|
|
1862
|
+
const c = t.price, p = t.originalPrice;
|
|
1863
1863
|
if (c) {
|
|
1864
1864
|
const d = document.createElement("div");
|
|
1865
|
-
if (d.className = "gengage-chat-product-summary__price",
|
|
1866
|
-
const
|
|
1867
|
-
|
|
1865
|
+
if (d.className = "gengage-chat-product-summary__price", p && p !== c) {
|
|
1866
|
+
const _ = document.createElement("span");
|
|
1867
|
+
_.className = "gengage-chat-product-summary__price-original", _.textContent = F(p, e.pricing), d.appendChild(_), d.appendChild(document.createTextNode(" "));
|
|
1868
1868
|
}
|
|
1869
1869
|
const v = document.createElement("span");
|
|
1870
1870
|
v.className = "gengage-chat-product-summary__price-current", v.textContent = F(c, e.pricing), d.appendChild(v), i.appendChild(d);
|
|
1871
1871
|
}
|
|
1872
1872
|
a.appendChild(i);
|
|
1873
|
-
const
|
|
1874
|
-
if (
|
|
1873
|
+
const h = t.url;
|
|
1874
|
+
if (h && $(h)) {
|
|
1875
1875
|
const d = document.createElement("a");
|
|
1876
|
-
d.className = "gengage-chat-product-summary__cta", D(d, "href",
|
|
1876
|
+
d.className = "gengage-chat-product-summary__cta", D(d, "href", h), D(d, "target", "_blank"), D(d, "rel", "noopener noreferrer"), d.textContent = e.i18n?.productCtaLabel ?? "İncele", a.appendChild(d);
|
|
1877
1877
|
}
|
|
1878
1878
|
return a;
|
|
1879
1879
|
}
|
|
1880
|
-
function
|
|
1880
|
+
function Ee() {
|
|
1881
1881
|
return window.innerWidth < 768;
|
|
1882
1882
|
}
|
|
1883
|
-
const
|
|
1883
|
+
const Se = {
|
|
1884
1884
|
ActionButtons: ({ element: o, context: e }) => sa(o, e),
|
|
1885
1885
|
ActionButton: ({ element: o, context: e }) => ca(o, e),
|
|
1886
1886
|
ProductCard: ({ element: o, context: e }) => la(o, e),
|
|
1887
1887
|
ProductDetailsPanel: ({ element: o, context: e }) => ga(o, e),
|
|
1888
1888
|
ProductGrid: ({ element: o, spec: e, renderElement: t, context: a }) => ha(o, e, t, a),
|
|
1889
|
-
ReviewHighlights: ({ element: o, context: e }) =>
|
|
1889
|
+
ReviewHighlights: ({ element: o, context: e }) => $t(o, { emptyReviewsMessage: e.i18n?.emptyReviewsMessage }),
|
|
1890
1890
|
ComparisonTable: ({ element: o, context: e }) => ua(o, e),
|
|
1891
1891
|
AITopPicks: ({ element: o, context: e }) => Kt(o, e),
|
|
1892
1892
|
GroundingReviewCard: ({ element: o, context: e }) => Qt(o, e),
|
|
@@ -1897,7 +1897,7 @@ const Ee = {
|
|
|
1897
1897
|
HandoffNotice: ({ element: o, context: e }) => na(o, e),
|
|
1898
1898
|
ProductSummaryCard: ({ element: o, context: e }) => ia(o, e),
|
|
1899
1899
|
Divider: ({ element: o }) => ma(o)
|
|
1900
|
-
},
|
|
1900
|
+
}, Te = ({
|
|
1901
1901
|
element: o,
|
|
1902
1902
|
renderElement: e
|
|
1903
1903
|
}) => {
|
|
@@ -1911,10 +1911,10 @@ const Ee = {
|
|
|
1911
1911
|
return t;
|
|
1912
1912
|
};
|
|
1913
1913
|
function oa() {
|
|
1914
|
-
return { ...
|
|
1914
|
+
return { ...Se };
|
|
1915
1915
|
}
|
|
1916
|
-
function ra(o, e, t =
|
|
1917
|
-
return
|
|
1916
|
+
function ra(o, e, t = Se, a = Te) {
|
|
1917
|
+
return ze({
|
|
1918
1918
|
spec: o,
|
|
1919
1919
|
context: e,
|
|
1920
1920
|
registry: t,
|
|
@@ -1946,137 +1946,138 @@ function la(o, e) {
|
|
|
1946
1946
|
t.className = "gengage-chat-product-card";
|
|
1947
1947
|
const a = o.props?.product ?? o.props;
|
|
1948
1948
|
if (!a) return t;
|
|
1949
|
-
|
|
1950
|
-
|
|
1949
|
+
const n = a.sku;
|
|
1950
|
+
n && (t.dataset.sku = n), e.onProductSelect && (t.style.cursor = "pointer", t.addEventListener("click", (f) => {
|
|
1951
|
+
f.target.closest(".gengage-chat-product-card-atc") || f.target.closest(".gengage-chat-product-card-cta") || e.onProductSelect?.(a);
|
|
1951
1952
|
}));
|
|
1952
|
-
const
|
|
1953
|
-
if (
|
|
1954
|
-
const
|
|
1955
|
-
|
|
1953
|
+
const i = a.imageUrl;
|
|
1954
|
+
if (i && $(i)) {
|
|
1955
|
+
const f = document.createElement("div");
|
|
1956
|
+
f.className = "gengage-chat-product-card-img-wrapper";
|
|
1956
1957
|
const y = document.createElement("img");
|
|
1957
|
-
y.className = "gengage-chat-product-card-img", y.loading = "lazy", D(y, "src",
|
|
1958
|
-
const
|
|
1959
|
-
|
|
1960
|
-
const
|
|
1961
|
-
if (typeof
|
|
1962
|
-
const
|
|
1963
|
-
|
|
1958
|
+
y.className = "gengage-chat-product-card-img", y.loading = "lazy", D(y, "src", i);
|
|
1959
|
+
const C = a.name;
|
|
1960
|
+
C && (y.alt = C), Q(y), f.appendChild(y);
|
|
1961
|
+
const A = a.discountPercent;
|
|
1962
|
+
if (typeof A == "number" && A > 0) {
|
|
1963
|
+
const k = document.createElement("span");
|
|
1964
|
+
k.className = "gengage-chat-product-card-discount-badge", k.textContent = `%${se(A)}`, f.appendChild(k);
|
|
1964
1965
|
}
|
|
1965
|
-
const
|
|
1966
|
-
if (
|
|
1967
|
-
const
|
|
1968
|
-
|
|
1969
|
-
|
|
1966
|
+
const u = a.sku;
|
|
1967
|
+
if (u) {
|
|
1968
|
+
const k = document.createElement("button");
|
|
1969
|
+
k.className = "gengage-chat-find-similar-pill", k.type = "button", k.textContent = e.i18n?.findSimilarLabel ?? "Benzerlerini Bul", k.addEventListener("click", (S) => {
|
|
1970
|
+
S.stopPropagation(), e.onAction({
|
|
1970
1971
|
title: e.i18n?.findSimilarLabel ?? "Benzerlerini Bul",
|
|
1971
1972
|
type: "findSimilar",
|
|
1972
|
-
payload: { sku:
|
|
1973
|
+
payload: { sku: u, ...i ? { image_url: i } : {} }
|
|
1973
1974
|
});
|
|
1974
|
-
}),
|
|
1975
|
+
}), f.appendChild(k);
|
|
1975
1976
|
}
|
|
1976
|
-
const
|
|
1977
|
-
if (
|
|
1978
|
-
const
|
|
1979
|
-
|
|
1980
|
-
const
|
|
1981
|
-
|
|
1982
|
-
const
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
const
|
|
1986
|
-
|
|
1977
|
+
const w = a.sku;
|
|
1978
|
+
if (w && e.onFavoriteToggle) {
|
|
1979
|
+
const k = document.createElement("button");
|
|
1980
|
+
k.className = "gengage-chat-favorite-btn", k.type = "button", k.setAttribute("aria-label", "Favorilere ekle");
|
|
1981
|
+
const S = e.favoritedSkus?.has(w) ?? !1;
|
|
1982
|
+
S && k.classList.add("gengage-chat-favorite-btn--active");
|
|
1983
|
+
const P = S ? "currentColor" : "none";
|
|
1984
|
+
k.innerHTML = `<svg width="16" height="16" viewBox="0 0 24 24" fill="${P}" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>`, k.addEventListener("click", (I) => {
|
|
1985
|
+
I.stopPropagation(), k.classList.toggle("gengage-chat-favorite-btn--active");
|
|
1986
|
+
const E = k.querySelector("svg");
|
|
1987
|
+
E && E.setAttribute(
|
|
1987
1988
|
"fill",
|
|
1988
|
-
|
|
1989
|
-
), e.onFavoriteToggle(
|
|
1990
|
-
}),
|
|
1989
|
+
k.classList.contains("gengage-chat-favorite-btn--active") ? "currentColor" : "none"
|
|
1990
|
+
), e.onFavoriteToggle(w, a);
|
|
1991
|
+
}), f.appendChild(k);
|
|
1991
1992
|
}
|
|
1992
|
-
t.appendChild(
|
|
1993
|
-
}
|
|
1994
|
-
const i = document.createElement("div");
|
|
1995
|
-
i.className = "gengage-chat-product-card-body";
|
|
1996
|
-
const r = a.brand;
|
|
1997
|
-
if (r) {
|
|
1998
|
-
const p = document.createElement("div");
|
|
1999
|
-
p.className = "gengage-chat-product-card-brand", p.textContent = r, i.appendChild(p);
|
|
1993
|
+
t.appendChild(f);
|
|
2000
1994
|
}
|
|
2001
|
-
const
|
|
1995
|
+
const r = document.createElement("div");
|
|
1996
|
+
r.className = "gengage-chat-product-card-body";
|
|
1997
|
+
const s = a.brand;
|
|
2002
1998
|
if (s) {
|
|
2003
|
-
const
|
|
2004
|
-
|
|
1999
|
+
const f = document.createElement("div");
|
|
2000
|
+
f.className = "gengage-chat-product-card-brand", f.textContent = s, r.appendChild(f);
|
|
2005
2001
|
}
|
|
2006
|
-
const l = a.
|
|
2007
|
-
if (
|
|
2008
|
-
const
|
|
2009
|
-
|
|
2002
|
+
const l = a.name;
|
|
2003
|
+
if (l) {
|
|
2004
|
+
const f = document.createElement("div");
|
|
2005
|
+
f.className = "gengage-chat-product-card-name", f.textContent = l, r.appendChild(f);
|
|
2006
|
+
}
|
|
2007
|
+
const g = a.rating, c = a.reviewCount;
|
|
2008
|
+
if (typeof g == "number" && Number.isFinite(g)) {
|
|
2009
|
+
const f = document.createElement("div");
|
|
2010
|
+
if (f.className = "gengage-chat-product-card-rating", f.textContent = ve(g), typeof c == "number" && Number.isFinite(c)) {
|
|
2010
2011
|
const y = document.createElement("span");
|
|
2011
|
-
y.className = "gengage-chat-product-card-review-count", y.textContent = ` (${
|
|
2012
|
+
y.className = "gengage-chat-product-card-review-count", y.textContent = ` (${c})`, f.appendChild(y);
|
|
2012
2013
|
}
|
|
2013
|
-
|
|
2014
|
+
r.appendChild(f);
|
|
2014
2015
|
}
|
|
2015
|
-
const
|
|
2016
|
+
const p = a.price, h = a.originalPrice;
|
|
2016
2017
|
if (a.price_async === !0) {
|
|
2017
|
-
const
|
|
2018
|
-
|
|
2018
|
+
const f = document.createElement("div");
|
|
2019
|
+
f.className = "gengage-chat-product-card-price";
|
|
2019
2020
|
const y = document.createElement("span");
|
|
2020
|
-
y.className = "gengage-chat-price-skeleton",
|
|
2021
|
-
y.parentElement && (
|
|
2021
|
+
y.className = "gengage-chat-price-skeleton", f.appendChild(y), r.appendChild(f), setTimeout(() => {
|
|
2022
|
+
y.parentElement && (p ? y.replaceWith(document.createTextNode(F(p, e.pricing))) : y.remove());
|
|
2022
2023
|
}, 300);
|
|
2023
|
-
} else if (
|
|
2024
|
-
const
|
|
2025
|
-
if (
|
|
2026
|
-
const
|
|
2027
|
-
|
|
2024
|
+
} else if (p) {
|
|
2025
|
+
const f = document.createElement("div");
|
|
2026
|
+
if (f.className = "gengage-chat-product-card-price", h && h !== p) {
|
|
2027
|
+
const C = document.createElement("span");
|
|
2028
|
+
C.className = "gengage-chat-product-card-original-price", C.textContent = F(h, e.pricing), f.appendChild(C), f.appendChild(document.createTextNode(" "));
|
|
2028
2029
|
}
|
|
2029
2030
|
const y = document.createElement("span");
|
|
2030
|
-
y.textContent = F(
|
|
2031
|
+
y.textContent = F(p, e.pricing), f.appendChild(y), r.appendChild(f);
|
|
2031
2032
|
}
|
|
2032
|
-
const
|
|
2033
|
-
if (typeof
|
|
2034
|
-
const
|
|
2035
|
-
|
|
2033
|
+
const v = a.inStock;
|
|
2034
|
+
if (typeof v == "boolean") {
|
|
2035
|
+
const f = document.createElement("div");
|
|
2036
|
+
f.className = `gengage-chat-product-card-stock ${v ? "is-in-stock" : "is-out-of-stock"}`, f.textContent = v ? e.i18n?.inStockLabel ?? "Stokta" : e.i18n?.outOfStockLabel ?? "Tükendi", r.appendChild(f);
|
|
2036
2037
|
}
|
|
2037
|
-
const
|
|
2038
|
-
if (
|
|
2039
|
-
const
|
|
2040
|
-
|
|
2041
|
-
for (const y of
|
|
2042
|
-
const
|
|
2043
|
-
|
|
2038
|
+
const _ = a.promotions;
|
|
2039
|
+
if (_ && _.length > 0) {
|
|
2040
|
+
const f = document.createElement("div");
|
|
2041
|
+
f.className = "gengage-chat-product-card-promos";
|
|
2042
|
+
for (const y of _) {
|
|
2043
|
+
const C = document.createElement("span");
|
|
2044
|
+
C.className = "gengage-chat-product-card-promo-badge", C.textContent = y, f.appendChild(C);
|
|
2044
2045
|
}
|
|
2045
|
-
|
|
2046
|
-
}
|
|
2047
|
-
t.appendChild(
|
|
2048
|
-
const
|
|
2049
|
-
if (
|
|
2050
|
-
const
|
|
2051
|
-
|
|
2052
|
-
} else if (
|
|
2053
|
-
const
|
|
2054
|
-
|
|
2055
|
-
e.onProductClick &&
|
|
2056
|
-
}), t.appendChild(
|
|
2057
|
-
}
|
|
2058
|
-
const
|
|
2059
|
-
if (
|
|
2060
|
-
const
|
|
2046
|
+
r.appendChild(f);
|
|
2047
|
+
}
|
|
2048
|
+
t.appendChild(r);
|
|
2049
|
+
const x = a.url, L = a.sku, T = o.props?.action;
|
|
2050
|
+
if (T) {
|
|
2051
|
+
const f = document.createElement("button");
|
|
2052
|
+
f.className = "gengage-chat-product-card-cta", f.type = "button", f.textContent = T.title || e.i18n?.productCtaLabel || "Incele", f.addEventListener("click", () => e.onAction(T)), t.appendChild(f);
|
|
2053
|
+
} else if (x && $(x)) {
|
|
2054
|
+
const f = document.createElement("a");
|
|
2055
|
+
f.className = "gengage-chat-product-card-cta", D(f, "href", x), D(f, "target", "_blank"), D(f, "rel", "noopener noreferrer"), f.textContent = e.i18n?.productCtaLabel ?? "İncele", f.addEventListener("click", (y) => {
|
|
2056
|
+
e.onProductClick && L && (y.preventDefault(), e.onProductClick({ sku: L, url: x }));
|
|
2057
|
+
}), t.appendChild(f);
|
|
2058
|
+
}
|
|
2059
|
+
const m = a.cartCode;
|
|
2060
|
+
if (m && L) {
|
|
2061
|
+
const f = ye({
|
|
2061
2062
|
compact: !0,
|
|
2062
2063
|
label: e.i18n?.addToCartButton ?? "Sepete Ekle",
|
|
2063
2064
|
onSubmit: (y) => {
|
|
2064
2065
|
e.onAction({
|
|
2065
2066
|
title: e.i18n?.addToCartButton ?? "Sepete Ekle",
|
|
2066
2067
|
type: "addToCart",
|
|
2067
|
-
payload: { sku:
|
|
2068
|
+
payload: { sku: L, cartCode: m, quantity: y }
|
|
2068
2069
|
});
|
|
2069
2070
|
}
|
|
2070
2071
|
});
|
|
2071
|
-
|
|
2072
|
+
f.classList.add("gengage-chat-product-card-atc"), t.appendChild(f);
|
|
2072
2073
|
}
|
|
2073
|
-
if (e.comparisonSelectMode &&
|
|
2074
|
-
const
|
|
2075
|
-
|
|
2074
|
+
if (e.comparisonSelectMode && L && e.onToggleComparisonSku) {
|
|
2075
|
+
const f = document.createElement("div");
|
|
2076
|
+
f.className = "gengage-chat-comparison-select-wrapper";
|
|
2076
2077
|
const y = document.createElement("input");
|
|
2077
|
-
return y.type = "checkbox", y.className = "gengage-chat-comparison-checkbox", y.checked = e.comparisonSelectedSkus?.includes(
|
|
2078
|
-
e.onToggleComparisonSku?.(
|
|
2079
|
-
}),
|
|
2078
|
+
return y.type = "checkbox", y.className = "gengage-chat-comparison-checkbox", y.checked = e.comparisonSelectedSkus?.includes(L) ?? !1, y.addEventListener("change", () => {
|
|
2079
|
+
e.onToggleComparisonSku?.(L);
|
|
2080
|
+
}), f.appendChild(y), f.appendChild(t), f;
|
|
2080
2081
|
}
|
|
2081
2082
|
return t;
|
|
2082
2083
|
}
|
|
@@ -2089,32 +2090,32 @@ function ga(o, e) {
|
|
|
2089
2090
|
if (n && n.length > 1) {
|
|
2090
2091
|
const u = document.createElement("div");
|
|
2091
2092
|
u.className = "gengage-chat-product-details-media gengage-chat-product-details-gallery gengage-chat-product-details-img-wrap";
|
|
2092
|
-
const
|
|
2093
|
-
|
|
2094
|
-
const
|
|
2095
|
-
|
|
2093
|
+
const w = document.createElement("img");
|
|
2094
|
+
w.className = "gengage-chat-product-details-img";
|
|
2095
|
+
const k = n.find((z) => $(z));
|
|
2096
|
+
k && D(w, "src", k);
|
|
2096
2097
|
const S = a.name;
|
|
2097
|
-
S && (
|
|
2098
|
+
S && (w.alt = S), Q(w), u.appendChild(w);
|
|
2098
2099
|
const P = document.createElement("div");
|
|
2099
2100
|
P.className = "gengage-chat-product-gallery-thumbs";
|
|
2100
|
-
let
|
|
2101
|
+
let I = null, E = 0;
|
|
2101
2102
|
for (let z = 0; z < n.length; z++) {
|
|
2102
2103
|
const H = n[z];
|
|
2103
|
-
if (!H ||
|
|
2104
|
+
if (!H || !$(H)) continue;
|
|
2104
2105
|
const R = document.createElement("img");
|
|
2105
|
-
R.className = "gengage-chat-product-gallery-thumb", z === 0 && (R.classList.add("gengage-chat-product-gallery-thumb--active"),
|
|
2106
|
-
D(
|
|
2106
|
+
R.className = "gengage-chat-product-gallery-thumb", z === 0 && (R.classList.add("gengage-chat-product-gallery-thumb--active"), I = R), D(R, "src", H), R.alt = `${S ?? "Product"} ${z + 1}`, R.width = 48, R.height = 48, Q(R), R.addEventListener("click", () => {
|
|
2107
|
+
D(w, "src", H), I && I.classList.remove("gengage-chat-product-gallery-thumb--active"), R.classList.add("gengage-chat-product-gallery-thumb--active"), I = R, E = z;
|
|
2107
2108
|
}), P.appendChild(R);
|
|
2108
2109
|
}
|
|
2109
2110
|
let M = 0;
|
|
2110
2111
|
const U = 50;
|
|
2111
|
-
if (
|
|
2112
|
+
if (w.addEventListener(
|
|
2112
2113
|
"touchstart",
|
|
2113
2114
|
(z) => {
|
|
2114
2115
|
M = z.changedTouches[0].clientX;
|
|
2115
2116
|
},
|
|
2116
2117
|
{ passive: !0 }
|
|
2117
|
-
),
|
|
2118
|
+
), w.addEventListener("touchend", (z) => {
|
|
2118
2119
|
const H = z.changedTouches[0].clientX, R = M - H;
|
|
2119
2120
|
if (Math.abs(R) < U) return;
|
|
2120
2121
|
const ne = P.querySelectorAll(".gengage-chat-product-gallery-thumb"), ie = R > 0 ? Math.min(E + 1, ne.length - 1) : Math.max(E - 1, 0);
|
|
@@ -2125,18 +2126,18 @@ function ga(o, e) {
|
|
|
2125
2126
|
e.onAction({
|
|
2126
2127
|
title: e.i18n?.findSimilarLabel ?? "Benzerlerini Bul",
|
|
2127
2128
|
type: "findSimilar",
|
|
2128
|
-
payload: { sku: r, ...
|
|
2129
|
+
payload: { sku: r, ...k ? { image_url: k } : {} }
|
|
2129
2130
|
});
|
|
2130
2131
|
}), u.appendChild(z);
|
|
2131
2132
|
}
|
|
2132
2133
|
t.appendChild(u);
|
|
2133
|
-
} else if (i &&
|
|
2134
|
+
} else if (i && $(i)) {
|
|
2134
2135
|
const u = document.createElement("div");
|
|
2135
2136
|
u.className = "gengage-chat-product-details-media gengage-chat-product-details-img-wrap";
|
|
2136
|
-
const
|
|
2137
|
-
|
|
2138
|
-
const
|
|
2139
|
-
if (
|
|
2137
|
+
const w = document.createElement("img");
|
|
2138
|
+
w.className = "gengage-chat-product-details-img", w.loading = "lazy", D(w, "src", i), Q(w);
|
|
2139
|
+
const k = a.name;
|
|
2140
|
+
if (k && (w.alt = k), u.appendChild(w), r) {
|
|
2140
2141
|
const S = document.createElement("button");
|
|
2141
2142
|
S.className = "gengage-chat-find-similar-pill", S.type = "button", S.textContent = e.i18n?.findSimilarLabel ?? "Benzerlerini Bul", S.addEventListener("click", () => {
|
|
2142
2143
|
e.onAction({
|
|
@@ -2158,127 +2159,127 @@ function ga(o, e) {
|
|
|
2158
2159
|
const g = a.rating, c = a.reviewCount;
|
|
2159
2160
|
if (typeof g == "number" && Number.isFinite(g)) {
|
|
2160
2161
|
const u = document.createElement("div");
|
|
2161
|
-
if (u.className = "gengage-chat-product-details-rating", u.textContent = `★ ${
|
|
2162
|
-
const
|
|
2163
|
-
|
|
2162
|
+
if (u.className = "gengage-chat-product-details-rating", u.textContent = `★ ${we(g).toFixed(1)}`, typeof c == "number" && Number.isFinite(c)) {
|
|
2163
|
+
const w = document.createElement("span");
|
|
2164
|
+
w.className = "gengage-chat-product-details-review-count", w.textContent = ` (${c})`, u.appendChild(w);
|
|
2164
2165
|
}
|
|
2165
2166
|
s.appendChild(u);
|
|
2166
2167
|
}
|
|
2167
|
-
const
|
|
2168
|
+
const p = a.price, h = a.originalPrice;
|
|
2168
2169
|
if (a.price_async === !0) {
|
|
2169
2170
|
const u = document.createElement("div");
|
|
2170
2171
|
u.className = "gengage-chat-product-details-price";
|
|
2171
|
-
const
|
|
2172
|
-
|
|
2173
|
-
if (
|
|
2174
|
-
if (
|
|
2175
|
-
const
|
|
2176
|
-
|
|
2172
|
+
const w = document.createElement("span");
|
|
2173
|
+
w.className = "gengage-chat-price-skeleton", u.appendChild(w), s.appendChild(u), setTimeout(() => {
|
|
2174
|
+
if (w.parentElement)
|
|
2175
|
+
if (p) {
|
|
2176
|
+
const k = document.createElement("span");
|
|
2177
|
+
k.className = "gengage-chat-product-details-current-price", k.textContent = F(p, e.pricing), w.replaceWith(k);
|
|
2177
2178
|
} else
|
|
2178
|
-
|
|
2179
|
+
w.remove();
|
|
2179
2180
|
}, 300);
|
|
2180
|
-
} else if (
|
|
2181
|
+
} else if (p) {
|
|
2181
2182
|
const u = document.createElement("div");
|
|
2182
|
-
if (u.className = "gengage-chat-product-details-price",
|
|
2183
|
-
const
|
|
2184
|
-
|
|
2183
|
+
if (u.className = "gengage-chat-product-details-price", h && h !== p) {
|
|
2184
|
+
const k = document.createElement("span");
|
|
2185
|
+
k.className = "gengage-chat-product-details-original-price", k.textContent = F(h, e.pricing), u.appendChild(k), u.appendChild(document.createTextNode(" "));
|
|
2185
2186
|
}
|
|
2186
|
-
const
|
|
2187
|
-
|
|
2187
|
+
const w = document.createElement("span");
|
|
2188
|
+
w.className = "gengage-chat-product-details-current-price", w.textContent = F(p, e.pricing), u.appendChild(w), s.appendChild(u);
|
|
2188
2189
|
}
|
|
2189
2190
|
const v = a.inStock;
|
|
2190
2191
|
if (typeof v == "boolean") {
|
|
2191
2192
|
const u = document.createElement("div");
|
|
2192
2193
|
u.className = `gengage-chat-product-details-stock ${v ? "is-in-stock" : "is-out-of-stock"}`, u.textContent = v ? "Stokta var" : "Stokta yok", s.appendChild(u);
|
|
2193
2194
|
}
|
|
2194
|
-
const
|
|
2195
|
-
if (
|
|
2195
|
+
const _ = a.promotions;
|
|
2196
|
+
if (_ && _.length > 0) {
|
|
2196
2197
|
const u = document.createElement("div");
|
|
2197
2198
|
u.className = "gengage-chat-product-details-promos";
|
|
2198
|
-
for (const
|
|
2199
|
-
const
|
|
2200
|
-
|
|
2199
|
+
for (const w of _) {
|
|
2200
|
+
const k = document.createElement("span");
|
|
2201
|
+
k.className = "gengage-chat-product-details-promo-badge", k.textContent = w, u.appendChild(k);
|
|
2201
2202
|
}
|
|
2202
2203
|
s.appendChild(u);
|
|
2203
2204
|
}
|
|
2204
|
-
const
|
|
2205
|
-
if (
|
|
2205
|
+
const x = a.variants;
|
|
2206
|
+
if (x && x.length > 0) {
|
|
2206
2207
|
const u = document.createElement("div");
|
|
2207
2208
|
u.className = "gengage-chat-product-variants";
|
|
2208
|
-
const
|
|
2209
|
-
|
|
2210
|
-
const
|
|
2211
|
-
|
|
2212
|
-
for (const S of
|
|
2213
|
-
const P = S.name ?? S.variant_name,
|
|
2214
|
-
if (!P && !
|
|
2209
|
+
const w = document.createElement("div");
|
|
2210
|
+
w.className = "gengage-chat-product-variants-label", w.textContent = e.i18n?.variantsLabel ?? "Varyantlar", u.appendChild(w);
|
|
2211
|
+
const k = document.createElement("div");
|
|
2212
|
+
k.className = "gengage-chat-product-variants-list";
|
|
2213
|
+
for (const S of x) {
|
|
2214
|
+
const P = S.name ?? S.variant_name, I = S.sku;
|
|
2215
|
+
if (!P && !I) continue;
|
|
2215
2216
|
const E = document.createElement("button");
|
|
2216
2217
|
E.className = "gengage-chat-product-variant-btn", E.type = "button";
|
|
2217
|
-
const M = P ??
|
|
2218
|
-
U && String(U) !== String(
|
|
2218
|
+
const M = P ?? I ?? "", U = S.price;
|
|
2219
|
+
U && String(U) !== String(p) ? E.textContent = `${M} - ${F(String(U), e.pricing)}` : E.textContent = M, I && E.addEventListener("click", () => {
|
|
2219
2220
|
e.onAction({
|
|
2220
2221
|
title: M,
|
|
2221
2222
|
type: "launchVariant",
|
|
2222
|
-
payload: { sku:
|
|
2223
|
+
payload: { sku: I }
|
|
2223
2224
|
});
|
|
2224
|
-
}),
|
|
2225
|
+
}), k.appendChild(E);
|
|
2225
2226
|
}
|
|
2226
|
-
u.appendChild(
|
|
2227
|
+
u.appendChild(k), s.appendChild(u);
|
|
2227
2228
|
}
|
|
2228
|
-
const
|
|
2229
|
-
|
|
2230
|
-
const
|
|
2231
|
-
if (
|
|
2229
|
+
const L = a.sku, T = a.cartCode, m = document.createElement("div");
|
|
2230
|
+
m.className = "gengage-chat-product-details-actions";
|
|
2231
|
+
const f = o.props?.action;
|
|
2232
|
+
if (f) {
|
|
2232
2233
|
const u = document.createElement("button");
|
|
2233
|
-
u.className = "gengage-chat-product-details-cta", u.type = "button", u.textContent =
|
|
2234
|
+
u.className = "gengage-chat-product-details-cta", u.type = "button", u.textContent = f.title || e.i18n?.productCtaLabel || "Incele", u.addEventListener("click", () => e.onAction(f)), m.appendChild(u);
|
|
2234
2235
|
} else {
|
|
2235
2236
|
const u = a.url;
|
|
2236
|
-
if (u &&
|
|
2237
|
-
const
|
|
2238
|
-
|
|
2239
|
-
e.onProductClick &&
|
|
2240
|
-
}),
|
|
2237
|
+
if (u && $(u)) {
|
|
2238
|
+
const w = document.createElement("a");
|
|
2239
|
+
w.className = "gengage-chat-product-details-cta", D(w, "href", u), D(w, "target", "_blank"), D(w, "rel", "noopener noreferrer"), w.textContent = e.i18n?.productCtaLabel ?? "Incele", w.addEventListener("click", (k) => {
|
|
2240
|
+
e.onProductClick && L && (k.preventDefault(), e.onProductClick({ sku: L, url: u }));
|
|
2241
|
+
}), m.appendChild(w);
|
|
2241
2242
|
}
|
|
2242
2243
|
}
|
|
2243
|
-
if (
|
|
2244
|
-
const u =
|
|
2244
|
+
if (T && L) {
|
|
2245
|
+
const u = ye({
|
|
2245
2246
|
compact: !1,
|
|
2246
2247
|
label: e.i18n?.addToCartButton ?? "Sepete Ekle",
|
|
2247
|
-
onSubmit: (
|
|
2248
|
+
onSubmit: (w) => {
|
|
2248
2249
|
e.onAction({
|
|
2249
2250
|
title: e.i18n?.addToCartButton ?? "Sepete Ekle",
|
|
2250
2251
|
type: "addToCart",
|
|
2251
|
-
payload: { sku:
|
|
2252
|
+
payload: { sku: L, cartCode: T, quantity: w }
|
|
2252
2253
|
});
|
|
2253
2254
|
}
|
|
2254
2255
|
});
|
|
2255
|
-
u.classList.add("gengage-chat-product-details-atc-stepper"),
|
|
2256
|
+
u.classList.add("gengage-chat-product-details-atc-stepper"), m.appendChild(u);
|
|
2256
2257
|
}
|
|
2257
|
-
const
|
|
2258
|
-
if (
|
|
2258
|
+
const y = a.url;
|
|
2259
|
+
if (y && $(y)) {
|
|
2259
2260
|
let u = function(E, M) {
|
|
2260
2261
|
const U = document.createElementNS(P, "circle");
|
|
2261
|
-
U.setAttribute("cx", E), U.setAttribute("cy", M), U.setAttribute("r", "3"),
|
|
2262
|
-
},
|
|
2262
|
+
U.setAttribute("cx", E), U.setAttribute("cy", M), U.setAttribute("r", "3"), I.appendChild(U);
|
|
2263
|
+
}, w = function(E, M, U, z) {
|
|
2263
2264
|
const H = document.createElementNS(P, "line");
|
|
2264
|
-
H.setAttribute("x1", E), H.setAttribute("y1", M), H.setAttribute("x2", U), H.setAttribute("y2", z),
|
|
2265
|
+
H.setAttribute("x1", E), H.setAttribute("y1", M), H.setAttribute("x2", U), H.setAttribute("y2", z), I.appendChild(H);
|
|
2265
2266
|
};
|
|
2266
|
-
const
|
|
2267
|
-
|
|
2267
|
+
const k = document.createElement("button");
|
|
2268
|
+
k.className = "gengage-chat-product-details-share", k.type = "button";
|
|
2268
2269
|
const S = e.i18n?.shareButton ?? "Paylaş";
|
|
2269
|
-
|
|
2270
|
-
const P = "http://www.w3.org/2000/svg",
|
|
2271
|
-
|
|
2270
|
+
k.title = S, k.setAttribute("aria-label", S);
|
|
2271
|
+
const P = "http://www.w3.org/2000/svg", I = document.createElementNS(P, "svg");
|
|
2272
|
+
I.setAttribute("width", "18"), I.setAttribute("height", "18"), I.setAttribute("viewBox", "0 0 24 24"), I.setAttribute("fill", "none"), I.setAttribute("stroke", "currentColor"), I.setAttribute("stroke-width", "2"), I.setAttribute("stroke-linecap", "round"), I.setAttribute("stroke-linejoin", "round"), u("18", "5"), u("6", "12"), u("18", "19"), w("8.59", "13.51", "15.42", "17.49"), w("15.41", "6.51", "8.59", "10.49"), k.appendChild(I), k.addEventListener("click", async () => {
|
|
2272
2273
|
const E = a.name;
|
|
2273
2274
|
try {
|
|
2274
|
-
navigator.share ? await navigator.share({ title: E ?? "", url:
|
|
2275
|
+
navigator.share ? await navigator.share({ title: E ?? "", url: y }) : navigator.clipboard && (await navigator.clipboard.writeText(y), k.classList.add("gengage-chat-product-details-share--copied"), setTimeout(() => k.classList.remove("gengage-chat-product-details-share--copied"), 1500));
|
|
2275
2276
|
} catch {
|
|
2276
2277
|
}
|
|
2277
|
-
}),
|
|
2278
|
+
}), m.appendChild(k);
|
|
2278
2279
|
}
|
|
2279
|
-
|
|
2280
|
-
const
|
|
2281
|
-
return (
|
|
2280
|
+
m.childElementCount > 0 && s.appendChild(m), t.appendChild(s);
|
|
2281
|
+
const C = a.description, A = a.specifications;
|
|
2282
|
+
return (C || A) && t.appendChild(da(C, A, e)), t;
|
|
2282
2283
|
}
|
|
2283
2284
|
function da(o, e, t) {
|
|
2284
2285
|
const a = document.createElement("div");
|
|
@@ -2299,12 +2300,12 @@ function da(o, e, t) {
|
|
|
2299
2300
|
l.className = "gengage-chat-product-detail-tab-panel", o && (l.style.display = "none");
|
|
2300
2301
|
const g = document.createElement("table");
|
|
2301
2302
|
g.className = "gengage-chat-product-specs-table";
|
|
2302
|
-
const c = Array.isArray(e) ? e : Object.entries(e).map(([
|
|
2303
|
-
for (const
|
|
2304
|
-
const
|
|
2305
|
-
d.className = "gengage-chat-product-specs-key", d.textContent =
|
|
2303
|
+
const c = Array.isArray(e) ? e : Object.entries(e).map(([p, h]) => ({ key: p, value: h }));
|
|
2304
|
+
for (const p of c) {
|
|
2305
|
+
const h = document.createElement("tr"), d = document.createElement("td");
|
|
2306
|
+
d.className = "gengage-chat-product-specs-key", d.textContent = p.key;
|
|
2306
2307
|
const v = document.createElement("td");
|
|
2307
|
-
v.className = "gengage-chat-product-specs-value", v.textContent =
|
|
2308
|
+
v.className = "gengage-chat-product-specs-value", v.textContent = p.value, h.appendChild(d), h.appendChild(v), g.appendChild(h);
|
|
2308
2309
|
}
|
|
2309
2310
|
l.appendChild(g), i.push(l);
|
|
2310
2311
|
}
|
|
@@ -2319,7 +2320,7 @@ function da(o, e, t) {
|
|
|
2319
2320
|
for (const s of i) a.appendChild(s);
|
|
2320
2321
|
return a;
|
|
2321
2322
|
}
|
|
2322
|
-
function
|
|
2323
|
+
function Ie(o, e, t) {
|
|
2323
2324
|
if (!t || t.type === "related") return o;
|
|
2324
2325
|
const a = o.map((n) => {
|
|
2325
2326
|
const r = e.elements[n]?.props?.product, s = r ? Number(r.price) : NaN;
|
|
@@ -2328,7 +2329,7 @@ function Te(o, e, t) {
|
|
|
2328
2329
|
return a.sort((n, i) => n.price === 1 / 0 && i.price === 1 / 0 ? 0 : n.price === 1 / 0 ? 1 : i.price === 1 / 0 ? -1 : t.direction === "desc" ? i.price - n.price : n.price - i.price), a.map((n) => n.id);
|
|
2329
2330
|
}
|
|
2330
2331
|
function pa(o, e, t, a) {
|
|
2331
|
-
const n =
|
|
2332
|
+
const n = Ie(e, t, a), i = /* @__PURE__ */ new Map();
|
|
2332
2333
|
for (const r of Array.from(o.children)) {
|
|
2333
2334
|
const s = r.dataset.elementId;
|
|
2334
2335
|
s && i.set(s, r);
|
|
@@ -2345,20 +2346,20 @@ function ha(o, e, t, a) {
|
|
|
2345
2346
|
if (i.length > 1 && a?.onSortChange) {
|
|
2346
2347
|
const g = document.createElement("div");
|
|
2347
2348
|
g.className = "gengage-chat-product-sort-toolbar";
|
|
2348
|
-
const c = a.productSort ?? { type: "related" },
|
|
2349
|
+
const c = a.productSort ?? { type: "related" }, p = [
|
|
2349
2350
|
{ label: a.i18n?.sortRelated ?? "Önerilen", sortState: { type: "related" } },
|
|
2350
2351
|
{ label: a.i18n?.sortPriceAsc ?? "Fiyat ↑", sortState: { type: "price", direction: "asc" } },
|
|
2351
2352
|
{ label: a.i18n?.sortPriceDesc ?? "Fiyat ↓", sortState: { type: "price", direction: "desc" } }
|
|
2352
2353
|
];
|
|
2353
|
-
for (const
|
|
2354
|
+
for (const h of p) {
|
|
2354
2355
|
const d = document.createElement("button");
|
|
2355
|
-
d.className = "gengage-chat-product-sort-btn", d.type = "button", c.type ===
|
|
2356
|
-
a.onSortChange?.(
|
|
2356
|
+
d.className = "gengage-chat-product-sort-btn", d.type = "button", c.type === h.sortState.type && c.direction === h.sortState.direction && d.classList.add("gengage-chat-product-sort-btn--active"), d.textContent = h.label, d.addEventListener("click", () => {
|
|
2357
|
+
a.onSortChange?.(h.sortState), pa(r, i, e, h.sortState), g.querySelectorAll(".gengage-chat-product-sort-btn").forEach((_) => _.classList.remove("gengage-chat-product-sort-btn--active")), d.classList.add("gengage-chat-product-sort-btn--active");
|
|
2357
2358
|
}), g.appendChild(d);
|
|
2358
2359
|
}
|
|
2359
2360
|
if (a.onToggleComparisonSku) {
|
|
2360
|
-
const
|
|
2361
|
-
|
|
2361
|
+
const h = document.createElement("div");
|
|
2362
|
+
h.className = "gengage-chat-product-sort-separator", g.appendChild(h);
|
|
2362
2363
|
const d = document.createElement("button");
|
|
2363
2364
|
d.className = "gengage-chat-comparison-toggle-btn", d.type = "button", a.comparisonSelectMode && d.classList.add("gengage-chat-comparison-toggle-btn--active"), d.textContent = a.i18n?.compareSelected ?? "Karşılaştır", d.addEventListener("click", () => {
|
|
2364
2365
|
a.onToggleComparisonSku?.("");
|
|
@@ -2368,13 +2369,13 @@ function ha(o, e, t, a) {
|
|
|
2368
2369
|
}
|
|
2369
2370
|
const r = document.createElement("div");
|
|
2370
2371
|
r.className = "gengage-chat-product-grid";
|
|
2371
|
-
const s =
|
|
2372
|
+
const s = Ie(i, e, a?.productSort);
|
|
2372
2373
|
for (const g of s) {
|
|
2373
2374
|
if (!e.elements[g]) continue;
|
|
2374
2375
|
const c = t(g);
|
|
2375
2376
|
c && (c.dataset.elementId = g, r.appendChild(c));
|
|
2376
2377
|
}
|
|
2377
|
-
if (
|
|
2378
|
+
if (Ee() && r.classList.add("gengage-chat-product-grid--mobile"), n.appendChild(r), o.props?.endOfList !== !0 && i.length > 0) {
|
|
2378
2379
|
const g = document.createElement("button");
|
|
2379
2380
|
g.className = "gengage-chat-product-grid-view-more", g.type = "button", g.textContent = a?.i18n?.viewMoreLabel ?? "Daha Fazla Göster", g.addEventListener("click", () => {
|
|
2380
2381
|
a?.onAction({ title: "More", type: "moreProductList", payload: {} });
|
|
@@ -2387,10 +2388,10 @@ function ha(o, e, t, a) {
|
|
|
2387
2388
|
return n;
|
|
2388
2389
|
}
|
|
2389
2390
|
function ua(o, e) {
|
|
2390
|
-
const t = o.props ?? {}, a = t.keyDifferencesHtml, n = t.recommended, i = t.products ?? [], r = t.attributes ?? [], s = t.highlights ?? [], l = t.specialCases, g = t.recommendedText, c = t.winnerHits,
|
|
2391
|
+
const t = o.props ?? {}, a = t.keyDifferencesHtml, n = t.recommended, i = t.products ?? [], r = t.attributes ?? [], s = t.highlights ?? [], l = t.specialCases, g = t.recommendedText, c = t.winnerHits, p = t.productActions;
|
|
2391
2392
|
if (!n)
|
|
2392
2393
|
return document.createElement("div");
|
|
2393
|
-
const
|
|
2394
|
+
const h = {
|
|
2394
2395
|
recommended: n,
|
|
2395
2396
|
products: i,
|
|
2396
2397
|
attributes: r,
|
|
@@ -2400,7 +2401,7 @@ function ua(o, e) {
|
|
|
2400
2401
|
e.onProductClick?.({ sku: v, url: "" });
|
|
2401
2402
|
}
|
|
2402
2403
|
};
|
|
2403
|
-
g !== void 0 && (
|
|
2404
|
+
g !== void 0 && (h.recommendedText = g), c !== void 0 && (h.winnerHits = c), p !== void 0 && (h.productActions = p), a !== void 0 && (h.keyDifferencesHtml = a), e.i18n && (h.i18n = {
|
|
2404
2405
|
comparisonHeading: e.i18n.panelTitleComparisonResults,
|
|
2405
2406
|
recommendedChoiceLabel: e.i18n.recommendedChoiceLabel,
|
|
2406
2407
|
highlightsLabel: e.i18n.highlightsLabel,
|
|
@@ -2408,8 +2409,8 @@ function ua(o, e) {
|
|
|
2408
2409
|
specialCasesLabel: e.i18n.specialCasesLabel,
|
|
2409
2410
|
addToCartButton: e.i18n.addToCartButton
|
|
2410
2411
|
});
|
|
2411
|
-
const d = jt(
|
|
2412
|
-
return
|
|
2412
|
+
const d = jt(h);
|
|
2413
|
+
return Ee() && d.classList.add("gengage-chat-comparison--mobile"), d;
|
|
2413
2414
|
}
|
|
2414
2415
|
function ma(o) {
|
|
2415
2416
|
const e = document.createElement("hr");
|
|
@@ -2473,18 +2474,18 @@ function wa(o) {
|
|
|
2473
2474
|
}, isRunning: !1 };
|
|
2474
2475
|
e.innerHTML = "";
|
|
2475
2476
|
let l = 0, g = null, c = !0;
|
|
2476
|
-
function
|
|
2477
|
+
function p() {
|
|
2477
2478
|
if (!c || l >= s.length) {
|
|
2478
2479
|
c = !1, i?.();
|
|
2479
2480
|
return;
|
|
2480
2481
|
}
|
|
2481
|
-
const
|
|
2482
|
+
const h = s[l], d = document.createElement("span");
|
|
2482
2483
|
d.className = "gengage-chat-typewriter-block";
|
|
2483
|
-
for (const v of
|
|
2484
|
+
for (const v of h)
|
|
2484
2485
|
d.appendChild(v.cloneNode(!0));
|
|
2485
|
-
e.appendChild(d), l++, n?.(), l < s.length ? g = setTimeout(
|
|
2486
|
+
e.appendChild(d), l++, n?.(), l < s.length ? g = setTimeout(p, a) : (c = !1, i?.());
|
|
2486
2487
|
}
|
|
2487
|
-
return
|
|
2488
|
+
return p(), {
|
|
2488
2489
|
complete() {
|
|
2489
2490
|
c && (g !== null && clearTimeout(g), c = !1, e.innerHTML = t, i?.());
|
|
2490
2491
|
},
|
|
@@ -2507,20 +2508,20 @@ function ya(o) {
|
|
|
2507
2508
|
const s = document.createTreeWalker(e, NodeFilter.SHOW_TEXT);
|
|
2508
2509
|
let l = s.nextNode(), g = !1;
|
|
2509
2510
|
for (; l && !g; ) {
|
|
2510
|
-
const c = l.textContent ?? "",
|
|
2511
|
-
if (
|
|
2511
|
+
const c = l.textContent ?? "", p = c.toLowerCase().indexOf(i);
|
|
2512
|
+
if (p === -1) {
|
|
2512
2513
|
l = s.nextNode();
|
|
2513
2514
|
continue;
|
|
2514
2515
|
}
|
|
2515
|
-
const
|
|
2516
|
-
if (!
|
|
2516
|
+
const h = c.slice(0, p), d = c.slice(p, p + r.short_name.length), v = c.slice(p + r.short_name.length), _ = l.parentNode;
|
|
2517
|
+
if (!_) {
|
|
2517
2518
|
l = s.nextNode();
|
|
2518
2519
|
continue;
|
|
2519
2520
|
}
|
|
2520
|
-
const
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
}),
|
|
2521
|
+
const x = document.createElement("a");
|
|
2522
|
+
x.className = "gengage-product-mention", x.textContent = d, x.href = "#", x.addEventListener("click", (L) => {
|
|
2523
|
+
L.preventDefault(), a(r.sku);
|
|
2524
|
+
}), h && _.insertBefore(document.createTextNode(h), l), _.insertBefore(x, l), v && _.insertBefore(document.createTextNode(v), l), _.removeChild(l), g = !0;
|
|
2524
2525
|
}
|
|
2525
2526
|
}
|
|
2526
2527
|
}
|
|
@@ -2534,7 +2535,7 @@ const _a = /* @__PURE__ */ new Set(["search", "info", "review", "similar"]), ka
|
|
|
2534
2535
|
function Ca(o) {
|
|
2535
2536
|
return !!(o.icon && _a.has(o.icon) || o.action?.type && ka.has(o.action.type));
|
|
2536
2537
|
}
|
|
2537
|
-
const
|
|
2538
|
+
const Le = "gengage_choice_prompter_dismissed";
|
|
2538
2539
|
function Ea(o) {
|
|
2539
2540
|
const e = document.createElement("div");
|
|
2540
2541
|
e.className = "gengage-chat-choice-prompter";
|
|
@@ -2544,23 +2545,23 @@ function Ea(o) {
|
|
|
2544
2545
|
a.className = "gengage-chat-choice-prompter-suggestion", a.textContent = o.suggestion, e.appendChild(a);
|
|
2545
2546
|
const n = document.createElement("button");
|
|
2546
2547
|
n.type = "button", n.className = "gengage-chat-choice-prompter-cta", n.textContent = o.ctaLabel, n.addEventListener("click", () => {
|
|
2547
|
-
|
|
2548
|
+
he(), e.remove(), o.onCtaClick();
|
|
2548
2549
|
}), e.appendChild(n);
|
|
2549
2550
|
const i = document.createElement("button");
|
|
2550
2551
|
return i.type = "button", i.className = "gengage-chat-choice-prompter-dismiss", i.textContent = "×", i.setAttribute("aria-label", "Dismiss"), i.addEventListener("click", () => {
|
|
2551
|
-
|
|
2552
|
+
he(), e.remove(), o.onDismiss?.();
|
|
2552
2553
|
}), e.appendChild(i), e;
|
|
2553
2554
|
}
|
|
2554
2555
|
function Sa() {
|
|
2555
2556
|
try {
|
|
2556
|
-
return sessionStorage.getItem(
|
|
2557
|
+
return sessionStorage.getItem(Le) === "1";
|
|
2557
2558
|
} catch {
|
|
2558
2559
|
return !1;
|
|
2559
2560
|
}
|
|
2560
2561
|
}
|
|
2561
|
-
function
|
|
2562
|
+
function he() {
|
|
2562
2563
|
try {
|
|
2563
|
-
sessionStorage.setItem(
|
|
2564
|
+
sessionStorage.setItem(Le, "1");
|
|
2564
2565
|
} catch {
|
|
2565
2566
|
}
|
|
2566
2567
|
}
|
|
@@ -2899,7 +2900,7 @@ class Pa {
|
|
|
2899
2900
|
this.snapshots.clear(), this.snapshotTypes.clear(), this.activePanelMessageId = null, this.currentType = null, this.threads = [];
|
|
2900
2901
|
}
|
|
2901
2902
|
}
|
|
2902
|
-
class
|
|
2903
|
+
class ue {
|
|
2903
2904
|
constructor(e) {
|
|
2904
2905
|
this.favoritedSkus = /* @__PURE__ */ new Set(), this._db = e;
|
|
2905
2906
|
}
|
|
@@ -3014,21 +3015,21 @@ class he {
|
|
|
3014
3015
|
this._db?.close(), this._db = null;
|
|
3015
3016
|
}
|
|
3016
3017
|
}
|
|
3017
|
-
const
|
|
3018
|
+
const Ne = "gengage_kvkk_shown", Ba = ["kvkk", "kişisel veri", "kisisel veri"], Ma = /\b6698\b/;
|
|
3018
3019
|
function le(o) {
|
|
3019
3020
|
const e = o.toLowerCase();
|
|
3020
3021
|
return Ba.some((t) => e.includes(t)) || Ma.test(e);
|
|
3021
3022
|
}
|
|
3022
|
-
function
|
|
3023
|
+
function me(o) {
|
|
3023
3024
|
try {
|
|
3024
|
-
return localStorage.getItem(`${
|
|
3025
|
+
return localStorage.getItem(`${Ne}_${o}`) === "1";
|
|
3025
3026
|
} catch {
|
|
3026
3027
|
return !1;
|
|
3027
3028
|
}
|
|
3028
3029
|
}
|
|
3029
3030
|
function za(o) {
|
|
3030
3031
|
try {
|
|
3031
|
-
localStorage.setItem(`${
|
|
3032
|
+
localStorage.setItem(`${Ne}_${o}`, "1");
|
|
3032
3033
|
} catch {
|
|
3033
3034
|
}
|
|
3034
3035
|
}
|
|
@@ -3057,167 +3058,167 @@ const Ua = {
|
|
|
3057
3058
|
function Ha(o) {
|
|
3058
3059
|
return o ? Ua[o.toLowerCase().slice(0, 2)] ?? "TURKISH" : "TURKISH";
|
|
3059
3060
|
}
|
|
3060
|
-
const Fa = ':host{all:initial;font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px)}.gengage-chat-root{position:fixed;z-index:var(--gengage-z-index, 2147483647);--_gengage-chat-offset: var(--gengage-chat-offset, 20px);--_gengage-chat-launcher-bottom: var(--gengage-chat-launcher-bottom, 20px);--_gengage-chat-launcher-right: var(--gengage-chat-launcher-right, 20px);--_gengage-chat-launcher-size: var(--gengage-chat-launcher-size, 56px);--_gengage-chat-drawer-width: var(--gengage-chat-width, 400px);--_gengage-chat-radius: var(--gengage-chat-shell-radius, 12px);--_gengage-chat-header-height: var(--gengage-chat-header-height, 60px);--_gengage-chat-conversation-width: var(--gengage-chat-conversation-width, 396px);--_gengage-chat-panel-min-width: var(--gengage-chat-panel-min-width, 320px);--_gengage-chat-panel-max-width: var(--gengage-chat-panel-max-width, 860px);--_gengage-chat-input-height: var(--gengage-chat-input-height, 48px);--_gengage-chat-shadow: var(--gengage-chat-shadow, 0 12px 40px rgba(15, 23, 42, .18));--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-success-color: var(--gengage-success-color, #16a34a);--_gengage-text-secondary: var(--gengage-text-secondary, #64748b);--_gengage-qty-btn-size: var(--gengage-qty-btn-size, 28px);--_gengage-qty-btn-size-compact: var(--gengage-qty-btn-size-compact, 24px)}.gengage-chat-launcher-container{position:fixed;bottom:var(--_gengage-chat-launcher-bottom);right:var(--_gengage-chat-launcher-right);display:flex;flex-direction:column;align-items:flex-end;gap:10px;z-index:var(--gengage-z-index, 2147483647)}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty{display:none}.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-size);height:var(--_gengage-chat-launcher-size);border-radius:50%;border:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px #0f172a47;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s ease;position:relative;flex-shrink:0}.gengage-chat-launcher:hover{transform:scale(1.05);box-shadow:0 14px 28px #0f172a47}.gengage-chat-launcher svg{width:24px;height:24px}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%);padding:6px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;box-shadow:0 2px 8px #00000026}.gengage-chat-launcher-tooltip:after{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);border:5px solid transparent;border-left-color:#1e293b}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-proactive{position:fixed;bottom:calc(var(--_gengage-chat-launcher-bottom) + var(--_gengage-chat-launcher-size) + 14px);right:var(--_gengage-chat-launcher-right);width:280px;padding:16px 18px;border-radius:16px;background:#fff;box-shadow:0 8px 30px #0000001f,0 2px 8px #0000000f;opacity:0;transform:translateY(8px) scale(.96);transition:opacity .25s ease,transform .25s ease;z-index:2147483645}.gengage-chat-proactive--visible{opacity:1;transform:translateY(0) scale(1)}.gengage-chat-proactive-message{margin:0 0 12px;font-size:14px;line-height:1.5;color:#1f2937}.gengage-chat-proactive-actions{display:flex;gap:8px}.gengage-chat-proactive-accept{flex:1;padding:8px 16px;border:none;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .15s ease}.gengage-chat-proactive-accept:hover{filter:brightness(1.08)}.gengage-chat-proactive-dismiss{position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:#64748b;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.gengage-chat-proactive-dismiss:hover{color:#475569;background:#f1f5f9}.gengage-chat-drawer{position:fixed;top:0;bottom:0;right:0;width:var(--_gengage-chat-drawer-width);max-height:-webkit-fill-available;max-height:100dvh;border-radius:0;background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow);display:flex;flex-direction:column;overflow:hidden;z-index:var(--gengage-z-index, 2147483647);transform-origin:right center;clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:16px;bottom:calc(16px + env(safe-area-inset-bottom))}.gengage-chat-root--mobile .gengage-chat-drawer{left:0;right:0;bottom:0;width:100%;max-width:none;max-height:-webkit-fill-available;max-height:100dvh;border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom,0px);clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{top:auto;height:min(72dvh,620px);max-height:min(72dvh,620px)}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{top:0;height:100dvh;max-height:100dvh;border-radius:0}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));transform:translateY(calc(-1 * var(--gengage-keyboard-offset, 0px)))}.gengage-chat-header{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;min-height:var(--_gengage-chat-header-height);padding:4px 12px;background:var(--gengage-chat-header-bg, #1d2939);color:var(--gengage-chat-header-foreground, #fff);box-shadow:0 4px 20px #00000014,0 0 2px #0000001f;border:none;position:relative;z-index:2}.gengage-chat-header-left{display:flex;align-items:center;gap:10px;min-width:0}.gengage-chat-header-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid rgba(255,255,255,.15)}.gengage-chat-header-info{display:flex;flex-direction:column;gap:2px;min-width:0}.gengage-chat-header-title-row{display:flex;align-items:center;gap:6px}.gengage-chat-header-title{font-weight:700;font-size:15px;line-height:1.25;letter-spacing:.01em;color:inherit}.gengage-chat-header-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.5}.gengage-chat-header-powered{display:flex;align-items:center;gap:4px;font-size:11px;color:#ffffffbf;text-decoration:none;transition:color .15s}.gengage-chat-header-powered:hover{color:#fffc}.gengage-chat-header-powered svg{width:12px;height:12px;opacity:.6}.gengage-chat-header-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.gengage-chat-header-btn{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-header-btn:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-close{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-close:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-body{display:flex;flex:1;overflow:hidden;min-height:0}.gengage-chat-panel{display:none;width:0;overflow:hidden;transition:width .22s cubic-bezier(.2,.72,.2,1)}.gengage-chat-panel--visible{display:flex;flex-direction:column;position:relative;width:440px;min-width:440px;border-right:1px solid var(--_gengage-border-color);overflow-y:auto;padding:16px;background:#f8fafc}.gengage-chat-panel-divider{display:flex;align-items:center;width:4px;cursor:pointer;background:#e5e7eb;position:relative;flex-shrink:0;transition:background .15s;z-index:2}.gengage-chat-panel-divider:hover{background:#cbd5e1}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:24px;height:48px;border:1px solid var(--_gengage-border-color);border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--_gengage-text-secondary);box-shadow:0 1px 3px #00000014;transition:background .15s,color .15s;padding:0;line-height:1}.gengage-chat-panel-divider-toggle:hover{background:#f1f5f9;color:#334155}.gengage-chat-panel--collapsed{flex:0 0 0px!important;width:0!important;min-width:0!important;max-width:0!important;padding:0!important;border-right:none!important;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:0;transform:translateY(-50%)}.gengage-chat-conversation{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden;background:var(--gengage-background-color, #fff);position:relative;z-index:1}.gengage-chat-drawer--with-panel{width:auto;background:transparent;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-header{border-radius:0;flex-shrink:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex:1 1 0;min-height:0;gap:0;padding:0;align-items:stretch}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{flex:0 0 auto;width:clamp(var(--_gengage-chat-panel-min-width),50vw,var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);border-right:none;background:#fff;padding:0 16px 16px;overflow-y:auto;margin:0;border-radius:0;box-shadow:0 8px 32px #0f172a1f,0 2px 8px #0f172a0f;max-height:100dvh}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{width:20px;height:48px;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;border:2px solid #fff;box-shadow:0 2px 8px #0f172a2e;font-size:12px;z-index:10}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--gengage-primary-hover, #2563eb);color:#fff}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);border-left:none;background:var(--gengage-background-color, #fff);box-shadow:-4px 0 24px #0f172a1f,-1px 0 4px #0f172a0f}.gengage-chat-drawer--with-panel .gengage-chat-messages{padding-right:6px;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.12) transparent}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;min-height:0;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:transparent}.gengage-chat-messages::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:#0003}.gengage-chat-bubble{max-width:85%;padding:12px 16px;border-radius:12px;line-height:1.5;font-size:14px;font-weight:500;word-wrap:break-word;overflow-wrap:break-word;animation:gengage-chat-msg-in .3s cubic-bezier(.2,.7,.2,1)}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{align-self:flex-end;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);border-bottom-right-radius:4px}.gengage-chat-bubble--assistant{align-self:flex-start;background:#f3f4f6;color:#1f2937;border-bottom-left-radius:4px;min-width:120px}.gengage-chat-bubble--active{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:-2px}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--gengage-primary-color, #2563eb);text-decoration:underline}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a:hover{text-decoration:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p{margin:0 0 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p:last-child{margin-bottom:0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text ul,.gengage-chat-bubble--assistant .gengage-chat-bubble-text ol{margin:6px 0;padding-left:20px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text li{margin-bottom:6px;line-height:1.5}.gengage-chat-bubble--assistant .gengage-chat-bubble-text code{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:#0000000a;padding:8px;border-radius:6px;overflow-x:auto;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text table{border-collapse:collapse;margin:4px 0;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text th,.gengage-chat-bubble--assistant .gengage-chat-bubble-text td{border:1px solid var(--_gengage-border-color);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{max-width:100%;height:auto;border-radius:4px;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text h1,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h2,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h3,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h4,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h5,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h6{margin:8px 0 4px;line-height:1.3;color:#0f172a}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--_gengage-border-color);padding-left:12px;margin:4px 0;color:var(--_gengage-text-secondary)}.gengage-chat-bubble--first{border-left:3px solid var(--gengage-accent-primary, #3b82f6);padding-left:12px}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:15px}.gengage-chat-typing{display:flex;align-items:center;gap:5px;padding:8px 4px;align-self:flex-start;max-width:85%}.gengage-chat-typing:has(.gengage-chat-typing-text),.gengage-chat-typing:has(.gengage-chat-thinking-steps){background:#f3f4f6;padding:10px 14px;border-radius:12px 12px 12px 4px;gap:8px}.gengage-chat-typing-dots{display:flex;align-items:center;gap:5px}.gengage-chat-typing-dots span{width:6px;height:6px;border-radius:50%;background:#94a3b8;display:inline-block;animation:gengage-chat-typing-fade 1.4s ease-in-out infinite}.gengage-chat-typing-dots span:nth-child(2){animation-delay:.2s}.gengage-chat-typing-dots span:nth-child(3){animation-delay:.4s}@keyframes gengage-chat-typing-fade{0%,to{opacity:.25}50%{opacity:1}}.gengage-chat-typing-sparkle{animation:gengage-sparkle-pulse 1.2s infinite}@keyframes gengage-sparkle-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-typing-text{font-size:13px;color:var(--_gengage-text-secondary);font-style:italic;flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word}.gengage-chat-thinking-steps{display:flex;flex-direction:column;gap:4px;padding:4px 0}.gengage-chat-thinking-step{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gengage-chat-text-secondary, #666)}.gengage-chat-thinking-step-marker{font-size:12px;width:16px;text-align:center;flex-shrink:0}.gengage-chat-thinking-step-marker--done{color:var(--gengage-chat-success, #4caf50)}.gengage-chat-thinking-step-marker--active{color:var(--gengage-chat-primary, #1976d2);animation:gengage-thinking-pulse 1.5s ease-in-out infinite}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;border-radius:10px;background:#fef2f2;color:#991b1b;font-size:13px;text-align:center;border:1px solid #fecaca}.gengage-chat-error-retry{flex-shrink:0;padding:4px 12px;border:1px solid #fca5a5;border-radius:6px;background:#fff;color:#991b1b;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s}.gengage-chat-error-retry:hover{background:#fee2e2}.gengage-chat-input-area{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:8px 12px;border-top:1px solid var(--_gengage-border-color);background:var(--gengage-background-color, #fff)}.gengage-chat-input-pill{display:flex;align-items:center;gap:4px;flex:1;min-width:0;height:44px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:30px;padding:2px 8px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.gengage-chat-input-pill:focus-within{border-color:var(--gengage-primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f626}.gengage-chat-input{flex:1;min-width:0;min-height:40px;max-height:120px;padding:0 6px 0 14px;border:none;border-radius:0;font-size:14px;font-family:inherit;line-height:1.4;align-content:center;outline:none;background:transparent;color:#1f2937;resize:none;overflow-y:hidden}@media(max-width:767px){.gengage-chat-input{max-height:40px;white-space:nowrap;overflow:hidden}.gengage-chat-send{width:44px;height:44px;min-width:44px}}.gengage-chat-input::placeholder{font-size:14px;color:#6b7280}.gengage-chat-send{width:36px;height:36px;min-width:36px;padding:0;border:none;border-radius:50%;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-weight:700;font-size:0;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,transform .15s ease;box-shadow:0 2px 4px #0000001f}.gengage-chat-send:hover{filter:brightness(.92);transform:translateY(-1px);box-shadow:0 4px 8px #0000002e}.gengage-chat-send:active{transform:translateY(0);box-shadow:0 1px 2px #0000001f}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send:disabled{background:#d1d5db;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{padding:4px 10px;text-align:center;font-size:10px;color:#6b7280;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:gengage-chat-widget-enter .16s cubic-bezier(.2,.7,.2,1) both}@keyframes gengage-chat-widget-enter{0%{opacity:0;transform:translateY(5px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-chat-action-buttons{display:flex;gap:8px;padding:6px 0 4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gengage-chat-action-buttons::-webkit-scrollbar{display:none}.gengage-chat-action-btn{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;line-height:1.25;font-family:inherit;cursor:pointer;white-space:nowrap;transition:filter .15s ease,transform .1s ease}.gengage-chat-action-btn:hover{filter:brightness(.92)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-product-card{position:relative;border:1px solid #eee;border-radius:16px;overflow:hidden;background:#fff;width:160px;min-width:160px;max-width:160px;box-shadow:0 2px 8px #0000000f;transition:transform .1s ease,box-shadow .2s ease}.gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.gengage-chat-product-card-img{width:100%;height:120px;object-fit:contain;display:block;background:#fff;padding:8px;box-sizing:border-box}.gengage-chat-product-card-body{display:flex;flex-direction:column;gap:4px;padding:8px 10px 10px;text-align:center}.gengage-chat-product-card-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.35;margin-bottom:0;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.gengage-chat-product-card-brand{font-size:10px;color:#666}.gengage-chat-product-card-rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-card-review-count{color:#64748b;font-size:10px}.gengage-chat-product-card-price{display:flex;align-items:baseline;justify-content:center;gap:4px;font-size:16px;font-weight:800;color:#0f172a}.gengage-chat-product-card-original-price{text-decoration:line-through;color:#64748b;font-weight:400;font-size:12px}.gengage-chat-price-skeleton{display:inline-block;width:80px;height:16px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:gengage-skeleton-price-pulse 1.5s ease-in-out infinite;border-radius:4px;vertical-align:middle}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{display:block;padding:8px 10px;text-align:center;background:transparent;color:var(--gengage-primary-color, #3b82f6);text-decoration:none;font-size:12px;font-weight:700;letter-spacing:.01em;border-top:1px solid #f1f5f9;transition:color .15s ease,background .15s ease}.gengage-chat-product-card-cta:hover{color:var(--gengage-primary-color, #0b24d6);background:#f8fafc}.gengage-chat-product-card-cta:active{background:#f1f5f9}.gengage-chat-product-summary{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;cursor:pointer;transition:background .15s,box-shadow .15s;margin:4px 0}.gengage-chat-product-summary:hover{background:#f9fafb;box-shadow:0 1px 4px #0000000f}.gengage-chat-product-summary__image{flex-shrink:0;width:64px;height:64px;border-radius:8px;overflow:hidden;border:1px solid #f3f4f6;background:#f9fafb}.gengage-chat-product-summary__image img{width:100%;height:100%;object-fit:cover;display:block}.gengage-chat-product-summary__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.gengage-chat-product-summary__name{font-size:13px;font-weight:500;line-height:1.3;color:#111827;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.gengage-chat-product-summary__rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-summary__review-count{color:#6b7280;font-size:11px}.gengage-chat-product-summary__price{font-size:13px;font-weight:600;color:#111827;line-height:1;margin-top:2px}.gengage-chat-product-summary__price-original{text-decoration:line-through;color:#6b7280;font-weight:400;font-size:11px}.gengage-chat-product-summary__price-current{color:var(--gengage-primary-color, #111827)}.gengage-chat-product-summary__cta{flex-shrink:0;font-size:12px;font-weight:500;color:var(--gengage-primary-color, #2563eb);text-decoration:none;padding:4px 10px;border-radius:8px;transition:background .15s;white-space:nowrap}.gengage-chat-product-summary__cta:hover{background:#0000000a}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--gengage-primary-color, #2563eb);outline-offset:2px}.gengage-chat-product-grid{display:flex;gap:12px;overflow-x:auto;padding:8px 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;min-height:180px}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:0 0 auto}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-review-highlights{padding:2px 0 6px}.gengage-chat-review-item{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:10px 12px;background:#fff}.gengage-chat-review-item[data-tone=positive]{border-color:#bbf7d0;background:#f0fdf4}.gengage-chat-review-item[data-tone=negative]{border-color:#fecaca;background:#fef2f2}.gengage-chat-review-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--_gengage-text-secondary);margin-bottom:4px}.gengage-chat-review-text{font-size:13px;line-height:1.45;color:#1f2937}.gengage-chat-review-rating{margin-top:6px;font-size:12px;font-weight:700;color:#0f172a}.gengage-chat-review-empty{font-size:12px;color:var(--_gengage-text-secondary)}.gengage-chat-review-tabs{display:flex;gap:6px;margin-bottom:10px}.gengage-chat-review-tab{padding:6px 14px;border:1px solid var(--_gengage-border-color);border-radius:999px;background:#fff;color:var(--_gengage-text-secondary);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.gengage-chat-review-tab:hover{background:#f8fafc}.gengage-chat-review-tab--active{background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.gengage-chat-review-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.gengage-chat-review-pill{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--_gengage-border-color);border-radius:8px;background:#fff;font-size:12px;color:#334155;box-shadow:0 1px 2px #0000000a}.gengage-chat-review-pill[data-tone=positive]{border-color:#bbf7d0}.gengage-chat-review-pill[data-tone=negative]{border-color:#fecaca}.gengage-chat-review-pill-icon{font-size:11px;font-weight:700}.gengage-chat-review-pill[data-tone=positive] .gengage-chat-review-pill-icon{color:#16a34a}.gengage-chat-review-pill[data-tone=negative] .gengage-chat-review-pill-icon{color:#dc2626}.gengage-chat-review-pill-count{font-size:10px;font-weight:700;background:#f1f5f9;color:var(--_gengage-text-secondary);border-radius:4px;padding:1px 5px}.gengage-chat-review-items{display:grid;gap:10px}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{display:flex;align-items:center;gap:8px;margin:8px 0}.gengage-chat-divider-wrapper hr{flex:1;border:none;border-top:1px solid var(--_gengage-border-color);margin:0}.gengage-chat-divider-label{font-size:11px;color:#6b7280;white-space:nowrap}.gengage-chat--overlay .gengage-chat-drawer{position:fixed;inset:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;border-radius:0;animation:gengage-chat-overlay-in .24s cubic-bezier(.2,.72,.2,1)}.gengage-chat--overlay:before{content:"";position:fixed;inset:0;background:#00000073;z-index:-1}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{display:flex;flex-direction:column;gap:14px;padding:6px 0}.gengage-chat-panel-skeleton-block{height:110px;border-radius:10px;background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:200% 100%;animation:gengage-panel-shimmer 1.4s infinite}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{height:200px;border-radius:8px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{height:16px;border-radius:4px;margin-bottom:8px}.gengage-chat-panel-skeleton-block--text:nth-child(3){width:80%}.gengage-chat-panel-skeleton-block--text:nth-child(4){width:60%}.gengage-chat-panel-skeleton-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.gengage-chat-panel-skeleton-block--card{height:120px;border-radius:8px}.gengage-chat-panel-skeleton-block--row{height:32px;border-radius:4px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;border-radius:12px;border:1px solid var(--_gengage-border-color);box-shadow:0 1px 4px #0000000f;overflow:hidden;padding:0}.gengage-chat-panel .gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#d1d5db}.gengage-chat-panel .gengage-chat-product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));overflow-x:visible;gap:12px;min-height:auto;padding:4px 0}.gengage-chat-panel .gengage-chat-product-card-img{width:100%;height:160px;border-radius:0;object-fit:contain;background:#fafafa;padding:12px;box-sizing:border-box}.gengage-chat-panel .gengage-chat-product-card-body{padding:10px 12px 12px;text-align:left;gap:4px}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;margin-bottom:2px;font-size:13px;-webkit-line-clamp:2}.gengage-chat-panel .gengage-chat-product-card-price{justify-content:flex-start;font-size:15px}.gengage-chat-panel .gengage-chat-product-card-cta{display:block;padding:10px 12px;text-align:center;border-top:1px solid #f1f5f9;border-radius:0;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:13px}.gengage-chat-product-details-panel{display:flex;flex-direction:column;gap:12px;width:100%;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:16px;padding:14px;box-sizing:border-box}.gengage-chat-product-details-media{border:1px solid #f1f5f9;border-radius:12px;background:#fafafa;padding:12px;display:flex;flex-direction:column;align-items:center}.gengage-chat-product-details-img{width:100%;height:auto;max-height:300px;object-fit:contain;border-radius:8px}.gengage-chat-product-details-content{display:flex;flex-direction:column;gap:8px;min-width:0}.gengage-chat-product-details-title{margin:0;font-size:17px;font-weight:700;line-height:1.3;color:#0f172a}.gengage-chat-product-details-rating{display:inline-flex;align-items:center;gap:4px;width:fit-content;padding:3px 8px;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:13px;font-weight:700}.gengage-chat-product-details-review-count{color:#7c2d12;font-weight:600}.gengage-chat-product-details-price{display:flex;align-items:baseline;gap:6px}.gengage-chat-product-details-original-price{font-size:14px;color:#64748b;text-decoration:line-through}.gengage-chat-product-details-current-price{font-size:22px;font-weight:800;line-height:1.1;color:#0f172a}.gengage-chat-product-details-stock{width:fit-content;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:#dcfce7;color:#166534}.gengage-chat-product-details-stock.is-out-of-stock{background:#fee2e2;color:#991b1b}.gengage-chat-product-details-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.gengage-chat-product-details-cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 20px;border-radius:999px;border:none;text-decoration:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:14px;font-weight:700;cursor:pointer;transition:filter .14s ease,transform .12s ease}.gengage-chat-product-details-cta:hover{filter:brightness(1.05);transform:translateY(-1px)}.gengage-chat-product-details-cta:active{transform:translateY(1px)}.gengage-chat-product-details-atc{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:10px;background:var(--_gengage-success-color);color:#fff;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .12s ease,transform .12s ease}.gengage-chat-product-details-atc:hover{filter:brightness(1.08);transform:translateY(-1px)}.gengage-chat-product-details-atc:active{transform:translateY(1px)}.gengage-chat-product-detail-tabs{margin-top:4px;border-top:1px solid var(--_gengage-border-color);padding-top:12px}.gengage-chat-product-detail-tab-bar{display:flex;gap:0;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:12px}.gengage-chat-product-detail-tab{flex:1;padding:8px 12px;border:none;background:transparent;color:var(--_gengage-text-secondary);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.gengage-chat-product-detail-tab:hover{color:#334155}.gengage-chat-product-detail-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-detail-tab-panel{font-size:13px;line-height:1.6;color:#374151}.gengage-chat-product-specs-table{width:100%;border-collapse:collapse;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:#f8fafc}.gengage-chat-product-specs-key{padding:6px 10px;font-weight:600;color:#475569;white-space:nowrap;border-bottom:1px solid #f1f5f9;width:40%}.gengage-chat-product-specs-value{padding:6px 10px;color:#1f2937;border-bottom:1px solid #f1f5f9}.gengage-chat-product-card-atc{position:absolute;bottom:42px;right:6px;opacity:0;transition:opacity .15s ease;z-index:1}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}.gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(0 0 0 100%);opacity:0;pointer-events:none;box-shadow:none}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(100% 0 0 0);opacity:0;pointer-events:none;box-shadow:none}@media(max-width:900px){.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(280px,calc(100vw - var(--_gengage-chat-conversation-width)),560px);max-width:560px}}.gengage-chat-attachment-preview{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:8px;width:100%;box-sizing:border-box}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-attachment-name{flex:1;font-size:12px;color:#4b5563;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gengage-chat-attachment-remove{background:none;border:none;cursor:pointer;font-size:18px;color:#6b7280;padding:0 4px;line-height:1;flex-shrink:0}.gengage-chat-attachment-remove:hover{color:#ef4444}.gengage-chat-attach-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-attach-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-mic-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-mic-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:#ef4444;animation:gengage-mic-pulse 1.2s ease-in-out infinite}.gengage-chat-mic-btn--active:hover{color:#dc2626}@keyframes gengage-mic-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.8}}.gengage-chat-input-area--dragover{outline:2px dashed var(--gengage-primary-color, #3b82f6);outline-offset:-2px;background:#eff6ff}.gengage-chat-attachment-thumb{width:120px;max-width:100%;height:auto;border-radius:8px;margin-bottom:6px;display:block}@media(max-width:768px){.gengage-chat-panel-divider{display:none}.gengage-chat-drawer--with-panel{left:0;right:0;width:100%;border-radius:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:column}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:100%;min-width:0;max-width:none;max-height:30dvh;border-right:none;border-bottom:1px solid var(--_gengage-border-color);padding:0 12px 12px;margin:0;border-radius:0;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-conversation{width:100%;flex:1;border-left:none}.gengage-chat-panel .gengage-chat-product-card{grid-template-columns:84px 1fr}.gengage-chat-panel .gengage-chat-product-card-cta{grid-column:1 / -1;width:100%}.gengage-chat-product-details-panel{padding:12px;gap:12px}.gengage-chat-product-details-media{min-height:140px}.gengage-chat-product-details-title{font-size:15px}.gengage-chat-product-details-current-price{font-size:20px}.gengage-chat-product-grid{scroll-snap-type:x mandatory}.gengage-chat-product-card{width:280px;min-width:280px;scroll-snap-align:center}.gengage-chat-product-card-img{height:180px}}@media(max-width:480px){.gengage-chat-drawer{position:fixed;inset:0;width:100%;max-height:100%;border-radius:0}.gengage-chat-bubble{max-width:100%}}.gengage-chat-kvkk-banner{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;background:#fffbeb;border-bottom:1px solid #fde68a;font-size:12px;line-height:1.5;color:#92400e}.gengage-chat-kvkk-content{flex:1;min-width:0}.gengage-chat-kvkk-content a{color:#b45309;text-decoration:underline}.gengage-chat-kvkk-dismiss{flex-shrink:0;width:20px;height:20px;border:none;background:transparent;color:#92400e;font-size:16px;cursor:pointer;padding:0;line-height:1}.gengage-chat-comparison{padding:16px}.gengage-chat-comparison-heading{font-size:14px;font-weight:700;letter-spacing:.05em;color:#0f172a;margin:0 0 16px}.gengage-chat-comparison-recommended{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:16px;background:#fff;box-shadow:0 1px 3px #0000000f;margin-bottom:12px}.gengage-chat-comparison-recommended-label{font-size:12px;font-weight:700;color:#16a34a;text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px}.gengage-chat-comparison-recommended-body{display:flex;gap:12px;align-items:flex-start}.gengage-chat-comparison-recommended-body img{width:80px;height:80px;object-fit:contain;border-radius:8px;background:#f8fafc}.gengage-chat-comparison-recommended-info{flex:1;min-width:0}.gengage-chat-comparison-recommended-title{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:4px}.gengage-chat-comparison-recommended-price{font-size:16px;font-weight:700;color:#0f172a}.gengage-chat-comparison-highlights{margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}.gengage-chat-comparison-highlights-label{font-size:12px;font-weight:600;color:var(--_gengage-text-secondary);margin-bottom:6px}.gengage-chat-comparison-highlights ul{margin:0;padding-left:18px;font-size:13px;color:#334155;line-height:1.6}.gengage-chat-comparison-special{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:12px 16px;margin-bottom:12px;font-size:13px;color:#92400e}.gengage-chat-comparison-special summary{cursor:pointer;font-weight:600}.gengage-chat-comparison-special ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.gengage-chat-comparison-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:12px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{padding:10px 12px;text-align:center;border-bottom:1px solid #f1f5f9;vertical-align:top}.gengage-chat-comparison-table th{font-weight:600;font-size:12px;color:#334155}.gengage-chat-comparison-table th img{width:60px;height:60px;object-fit:contain;border-radius:6px;background:#f8fafc;margin-bottom:6px}.gengage-chat-comparison-table-price{font-weight:700;color:#0f172a}.gengage-chat-comparison-label{text-align:left;font-weight:600;color:var(--_gengage-text-secondary);white-space:nowrap}.gengage-chat-comparison-selected{background:#f0fdf4}.gengage-chat-comparison-recommended-text{padding:8px 12px;font-size:12px;color:var(--gengage-text-secondary, #475569);font-style:italic;border-top:1px solid var(--gengage-border-color, #e2e8f0);margin-top:8px}.gengage-chat-comparison-product-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.gengage-chat-comparison-view-btn{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--gengage-primary-color, #3b82f6);border-radius:6px;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s ease,color .15s ease;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.gengage-chat-comparison-view-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-pills{position:relative;padding:8px 12px;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-pills-scroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:28px}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-pill{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:filter .15s,transform .1s}.gengage-chat-pill:hover{filter:brightness(.92)}.gengage-chat-pill:active{transform:scale(.97)}.gengage-chat-pill--rich{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:20px}.gengage-chat-pill-img{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#ffffff26}.gengage-chat-pill-text{font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-pill-desc{display:none}.gengage-chat-pill--rich .gengage-chat-pill-desc{display:block;font-size:10px;font-weight:400;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.gengage-chat-pills-arrow{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;border:1px solid var(--_gengage-border-color);background:#fff;color:var(--_gengage-text-secondary);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:-4px 0 8px #ffffffe6;z-index:1}.gengage-chat-pills-arrow:hover{background:#f8fafc;color:#334155}@media(prefers-reduced-motion:reduce){.gengage-chat-uispec>*,.gengage-chat-action-btn,.gengage-chat-product-card,.gengage-chat-product-card-cta,.gengage-chat-send,.gengage-chat-launcher,.gengage-chat-pill,.gengage-chat-drawer,.gengage-chat-proactive,.gengage-chat-typing-dots span,.gengage-chat-typing-sparkle,.gengage-chat-thinking-step-marker--active,.gengage-chat-bubble,.gengage-chat-panel-skeleton-block,.gengage-chat-ai-toppick-card,.gengage-chat-mic-btn--active,.gengage-chat-ai-toppick-spinner:after,.gengage-chat-panel-shimmer,.gengage-chat-overlay,.gengage-chat-product-details-skeleton-price{animation:none!important;transition:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{position:absolute;left:-28px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;border-radius:50%;background:var(--gengage-surface-color, #f1f5f9);color:var(--gengage-text-secondary, #64748b);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;padding:0}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{display:flex;flex-direction:column;gap:12px;padding:8px 0}.gengage-chat-ai-top-picks-title{font-size:15px;font-weight:600;color:var(--gengage-text-primary, #1e293b);margin:0 0 4px}.gengage-chat-ai-top-picks-cards{display:flex;flex-direction:column;gap:10px}.gengage-chat-ai-toppick-discount-badge{position:absolute;top:8px;left:8px;background:var(--gengage-discount-bg, #ef4444);color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;z-index:1}.gengage-chat-ai-toppick-card--winner{position:relative;display:flex;flex-direction:column;border:2px solid var(--gengage-primary-color, #3b82f6);border-radius:12px;background:#fff;overflow:hidden;transition:box-shadow .2s ease}.gengage-chat-ai-toppick-card--winner:hover{box-shadow:0 4px 16px #3b82f626}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{width:100%;height:140px;object-fit:contain;background:#f8fafc}.gengage-chat-ai-toppick-card--compact{position:relative;display:flex;flex-direction:row;align-items:center;gap:12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;background:#fff;padding:10px;transition:box-shadow .2s ease,transform .15s ease}.gengage-chat-ai-toppick-card--compact:hover{box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:64px;height:64px;object-fit:contain;border-radius:8px;background:#f8fafc;flex-shrink:0}.gengage-chat-ai-toppick-badge{position:absolute;top:8px;left:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;z-index:1;letter-spacing:.5px}.gengage-chat-ai-toppick-body{display:flex;flex-direction:column;gap:4px;padding:10px;flex:1;min-width:0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{padding:0}.gengage-chat-ai-toppick-name{font-size:13px;font-weight:600;color:var(--gengage-text-primary, #1e293b);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gengage-chat-ai-toppick-role{font-size:11px;font-weight:600;color:var(--gengage-primary-color, #3b82f6);text-transform:uppercase;letter-spacing:.3px}.gengage-chat-ai-toppick-labels{display:flex;flex-wrap:wrap;gap:4px}.gengage-chat-ai-toppick-label{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:500}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:#dcfce7;color:#166534}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:#fee2e2;color:#991b1b}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:#f1f5f9;color:#475569}.gengage-chat-ai-toppick-score{font-size:12px;font-weight:700;color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-ai-toppick-reason{font-size:12px;color:var(--gengage-chat-text-secondary, #666);line-height:1.4;margin-top:4px}.gengage-chat-ai-toppick-review{font-size:12px;font-style:italic;color:var(--gengage-text-secondary, #64748b);margin:2px 0;padding-left:8px;border-left:2px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-ai-toppick-price{font-size:14px;font-weight:700;color:var(--gengage-text-primary, #1e293b)}.gengage-chat-ai-toppick-original-price{text-decoration:line-through;color:var(--gengage-text-secondary, #64748b);font-weight:400;font-size:12px}.gengage-chat-ai-toppick-cta{display:block;width:calc(100% - 20px);margin:6px 10px 10px;padding:8px 0;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:background .15s ease}.gengage-chat-ai-toppick-cta:hover{filter:brightness(.92)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:auto;margin:0;padding:6px 14px;flex-shrink:0;align-self:center}.gengage-chat-ai-toppick-spinner{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:3}.gengage-chat-ai-toppick-spinner:after{content:"";width:24px;height:24px;border:3px solid var(--gengage-border, #e2e8f0);border-top-color:var(--gengage-accent-primary, #3b82f6);border-radius:50%;animation:gengage-spin .7s linear infinite}@keyframes gengage-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-chat-ai-top-picks-cards{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:4px}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{min-width:280px;max-width:280px;flex-shrink:0;scroll-snap-align:start}.gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:100%;height:100px;border-radius:8px 8px 0 0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:calc(100% - 20px);margin:6px 10px 10px;align-self:stretch}.gengage-chat-rollback-btn{left:-24px}}.gengage-chat-grounding-review{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grounding-review:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grounding-review-icon{font-size:20px;flex-shrink:0}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grounding-review-subtitle{font-size:12px;color:var(--gengage-text-muted, #64748b);margin-top:2px}.gengage-chat-grounding-review-cta{font-size:13px;font-weight:500;color:var(--gengage-primary-color, #3b82f6);white-space:nowrap;flex-shrink:0}.gengage-chat-grouping-cards{display:flex;flex-direction:column;gap:6px}.gengage-chat-grouping-card{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:8px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grouping-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grouping-card-arrow{display:none;font-size:14px;color:var(--gengage-primary-color, #3b82f6);flex-shrink:0}.gengage-chat-grouping-card-img{width:20px;height:20px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-grouping-card-body{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.gengage-chat-grouping-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grouping-card-desc{font-size:12px;color:var(--gengage-text-muted, #64748b)}.gengage-chat-grouping-card-labels{display:block;font-size:11px;color:var(--gengage-chat-text-secondary, #888);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gengage-chat-root--mobile .gengage-chat-grouping-card-img{display:none}.gengage-chat-root--mobile .gengage-chat-grouping-card-arrow{display:inline}.gengage-chat-suggested-search-cards{display:flex;flex-direction:column;gap:8px}.gengage-chat-suggested-search-card{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-suggested-search-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-suggested-search-card-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex-shrink:0}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-suggested-search-card-desc{font-size:12px;color:var(--gengage-text-secondary, #475569);margin-top:2px}.gengage-chat-suggested-search-card-diff{font-size:11px;color:var(--gengage-text-muted, #64748b);margin-top:2px;font-style:italic}.gengage-chat-product-details-gallery{position:relative}.gengage-chat-product-details-gallery .gengage-chat-product-details-img{touch-action:pan-y}.gengage-chat-product-gallery-thumbs{display:flex;gap:8px;padding:10px 0 4px;overflow-x:auto;scrollbar-width:thin;justify-content:center;width:100%}.gengage-chat-product-gallery-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:2px solid transparent;cursor:pointer;flex-shrink:0;transition:border-color .15s ease;background:#fff}.gengage-chat-product-gallery-thumb:hover{border-color:var(--gengage-border-color, #cbd5e1)}.gengage-chat-product-gallery-thumb--active{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-variants{margin-top:12px}.gengage-chat-product-variants-label{font-size:12px;font-weight:600;color:var(--gengage-text-muted, #64748b);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.gengage-chat-product-variants-list{display:flex;flex-wrap:wrap;gap:6px}.gengage-chat-product-variant-btn{padding:6px 12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:6px;background:var(--gengage-surface-color, #f8fafc);color:var(--gengage-text-color, #1e293b);font-size:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.gengage-chat-product-variant-btn:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-grid-wrapper{display:flex;flex-direction:column;gap:8px}.gengage-chat-product-sort-toolbar{display:flex;gap:4px;padding:4px;background:var(--gengage-surface-color, #f8fafc);border-radius:8px;border:1px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-product-sort-btn{flex:1;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.gengage-chat-product-sort-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-product-sort-btn--active,.gengage-chat-product-sort-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-product-sort-separator{width:1px;background:var(--gengage-border-color, #e2e8f0);margin:2px}.gengage-chat-comparison-toggle-btn{flex:none;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.gengage-chat-comparison-toggle-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-comparison-toggle-btn--active,.gengage-chat-comparison-toggle-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-comparison-select-wrapper{position:relative}.gengage-chat-comparison-checkbox{position:absolute;top:8px;left:8px;z-index:2;width:18px;height:18px;cursor:pointer;accent-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-comparison-floating-btn{display:block;width:100%;margin-top:8px;padding:10px 16px;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease;text-align:center}.gengage-chat-comparison-floating-btn:hover{background:var(--gengage-primary-hover, #2563eb)}.gengage-chat-panel-topbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--_gengage-border-color);background:#f8fafc;min-height:44px;flex-shrink:0;position:sticky;top:0;z-index:3}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{width:28px;height:28px;min-width:28px;padding:0;border:1px solid #d1d5db;border-radius:6px;background:transparent;color:#374151;font-size:14px;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{flex:1;font-size:14px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{display:block;animation:gengage-typewriter-fade-in .15s ease both}@media(prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--gengage-primary-color, #3b82f6);text-decoration:none;cursor:pointer;font-weight:500;border-bottom:1px dashed var(--gengage-primary-color, #3b82f6);transition:border-color .15s}.gengage-product-mention:hover{border-bottom-style:solid}@keyframes gengage-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.gengage-chat-panel-skeleton-block{animation:gengage-skeleton-pulse 1.5s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{display:flex;gap:6px;padding:4px 12px 2px;flex-wrap:wrap}.gengage-chat-input-chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:12px;border:1px solid var(--_gengage-border-color);background:#f9fafb;color:#374151;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.gengage-chat-input-chip:hover{background:#f3f4f6;border-color:#d1d5db}.gengage-chat-icon{width:14px;height:14px;flex-shrink:0}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{display:inline-flex;align-items:center;margin-right:4px}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{position:absolute;top:6px;left:6px;padding:2px 6px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:11px;font-weight:700;line-height:1.3;z-index:1}.gengage-chat-product-card-stock{font-size:11px;font-weight:600;margin-top:2px}.gengage-chat-product-card-stock.is-in-stock{color:var(--_gengage-success-color)}.gengage-chat-product-card-stock.is-out-of-stock{color:#dc2626}.gengage-chat-find-similar-pill{position:absolute;top:8px;right:8px;opacity:0;pointer-events:none;transition:opacity .2s ease;padding:4px 10px;font-size:11px;font-weight:500;font-family:inherit;border:none;border-radius:12px;background:var(--gengage-chat-pill-bg, rgba(0, 0, 0, .7));color:var(--gengage-chat-pill-text, #fff);cursor:pointer;white-space:nowrap;z-index:2}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-product-details-img-wrap:hover .gengage-chat-find-similar-pill{opacity:1;pointer-events:auto}.gengage-chat-favorite-btn{position:absolute;top:8px;right:8px;background:#ffffffe6;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gengage-text-secondary, #64748b);z-index:3;transition:color .2s;padding:0}.gengage-chat-favorite-btn:hover,.gengage-chat-favorite-btn--active{color:var(--gengage-accent-primary, #ef4444)}.gengage-chat-product-card-promos,.gengage-chat-product-details-promos{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.gengage-chat-product-card-promo-badge,.gengage-chat-product-details-promo-badge{display:inline-block;padding:2px 6px;font-size:10px;font-weight:500;border-radius:4px;background:var(--gengage-chat-promo-bg, #e8f5e9);color:var(--gengage-chat-promo-text, #2e7d32);white-space:nowrap}.gengage-chat-thumbnails-column{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:2;pointer-events:auto}.gengage-chat-thumbnail-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:2px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:border-color .15s ease}.gengage-chat-thumbnail-btn:hover{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-thumbnail-img{width:100%;height:100%;object-fit:cover}.gengage-chat-choice-prompter{position:absolute;bottom:12px;right:12px;width:200px;padding:12px 14px;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:10px;box-shadow:0 4px 12px #0000001a;z-index:10;animation:gengage-choice-prompter-in .2s ease}@keyframes gengage-choice-prompter-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-choice-prompter-heading{font-size:13px;font-weight:600;color:#1f2937;margin-bottom:4px}.gengage-chat-choice-prompter-suggestion{font-size:12px;color:#6b7280;margin-bottom:10px;line-height:1.4}.gengage-chat-choice-prompter-cta{display:block;width:100%;padding:6px 12px;border:none;border-radius:6px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;text-align:center;transition:opacity .15s ease}.gengage-chat-choice-prompter-cta:hover{opacity:.9}.gengage-chat-choice-prompter-dismiss{position:absolute;top:4px;right:6px;padding:2px 6px;border:none;background:none;color:#6b7280;font-size:16px;cursor:pointer;line-height:1}.gengage-chat-choice-prompter-dismiss:hover{color:#6b7280}@media(prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-pros-cons{padding:12px 14px;background:#f8fafc;border-radius:8px;margin:8px 0}.gengage-chat-pros-cons-heading{margin:0 0 10px;font-size:14px;font-weight:600;color:#0f172a}.gengage-chat-pros-cons-list{list-style:none;margin:0 0 8px;padding:0}.gengage-chat-pros-cons-list:last-child{margin-bottom:0}.gengage-chat-pros-cons-item{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:13px;line-height:1.5;color:#334155}.gengage-chat-pros-cons-icon{flex-shrink:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border-radius:50%}.gengage-chat-pros-cons-icon--pro{color:#16a34a;background:#dcfce7}.gengage-chat-pros-cons-icon--con{color:#dc2626;background:#fee2e2}.gengage-chat-categories{display:flex;flex-direction:column;gap:8px}.gengage-chat-categories-tabs{display:flex;gap:4px;overflow-x:auto;padding:4px 0;-webkit-overflow-scrolling:touch}.gengage-chat-categories-tab{padding:6px 14px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:20px;background:var(--gengage-bg, #fff);color:var(--gengage-text, #374151);cursor:pointer;white-space:nowrap;font-size:13px;transition:background .15s,color .15s}.gengage-chat-categories-tab:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-categories-tab--active{background:var(--gengage-primary, #2563eb);color:#fff;border-color:var(--gengage-primary, #2563eb)}.gengage-chat-categories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.gengage-chat-categories-filter-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.gengage-chat-categories-filter-tag{padding:4px 10px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:14px;background:var(--gengage-bg, #fff);color:var(--gengage-text-secondary, #6b7280);font-size:12px;cursor:pointer;transition:background .15s}.gengage-chat-categories-filter-tag:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid-view-more{display:block;width:100%;padding:10px;margin-top:8px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:8px;background:var(--gengage-bg, #fff);color:var(--gengage-primary, #2563eb);font-size:14px;font-weight:500;cursor:pointer;text-align:center;transition:background .15s;grid-column:1 / -1}.gengage-chat-product-grid-view-more:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid--mobile{display:flex;overflow-x:auto;gap:8px;padding:8px 0;-webkit-overflow-scrolling:touch}.gengage-chat-product-grid--mobile .gengage-chat-product-card{min-width:160px;max-width:180px;flex-shrink:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table,.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead,.gengage-chat-comparison--mobile .gengage-chat-comparison-table tbody{display:block}.gengage-chat-comparison--mobile .gengage-chat-comparison-table tr{display:flex;flex-wrap:wrap}.gengage-chat-comparison-key-differences{margin-top:12px;padding:12px;background:var(--gengage-bg-secondary, #f9fafb);border-radius:8px}.gengage-chat-comparison-key-differences h4{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-comparison-key-differences-content{font-size:13px;color:var(--gengage-text-secondary, #6b7280);line-height:1.5}.gengage-chat-comparison-key-differences-content ul{margin:0;padding-left:18px}.gengage-chat-comparison-key-differences-content li{margin-bottom:4px}.gengage-chat-product-details-similars-heading{margin:16px 0 8px;font-size:15px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-handoff-notice{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;margin:8px 0;background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;text-align:center}.gengage-chat-handoff-notice-icon{font-size:24px}.gengage-chat-handoff-notice-heading{margin:0;font-size:14px;font-weight:600;color:#92400e}.gengage-chat-handoff-notice-summary{margin:0;font-size:13px;line-height:1.5;color:#78350f}.gengage-qty-stepper{display:inline-flex;align-items:center;gap:0;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;background:#fff}.gengage-qty-btn{width:var(--_gengage-qty-btn-size);height:var(--_gengage-qty-btn-size);border:none;background:transparent;color:#374151;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .12s}.gengage-qty-btn:hover:not(:disabled){background:#f3f4f6}.gengage-qty-btn:disabled{opacity:.35;cursor:default}.gengage-qty-value{min-width:24px;text-align:center;font-size:13px;font-weight:600;color:#1f2937;-webkit-user-select:none;user-select:none}.gengage-qty-submit{border:none;border-left:1px solid #d1d5db;background:var(--_gengage-success-color);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;padding:6px 12px;transition:filter .12s ease,transform .12s ease}.gengage-qty-submit:hover{filter:brightness(1.08)}.gengage-qty-submit:active{transform:translateY(1px)}.gengage-qty-stepper--compact{border-radius:14px;box-shadow:0 2px 6px #0000001f}.gengage-qty-stepper--compact .gengage-qty-btn{width:var(--_gengage-qty-btn-size-compact);height:var(--_gengage-qty-btn-size-compact);font-size:12px}.gengage-qty-stepper--compact .gengage-qty-value{min-width:18px;font-size:12px}.gengage-qty-stepper--compact .gengage-qty-submit{padding:4px 8px;font-size:13px;border-radius:0 14px 14px 0}.gengage-chat-product-details-atc-stepper{border-radius:10px}.gengage-chat-product-details-atc-stepper .gengage-qty-btn{width:32px;height:32px}.gengage-chat-product-details-atc-stepper .gengage-qty-value{min-width:28px;font-size:14px}.gengage-chat-product-details-atc-stepper .gengage-qty-submit{padding:8px 18px;font-size:14px;border-radius:0 10px 10px 0}.gengage-chat-product-details-share{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #d1d5db;border-radius:10px;background:transparent;color:#6b7280;cursor:pointer;transition:color .12s,border-color .12s,background-color .12s;position:relative;flex-shrink:0}.gengage-chat-product-details-share:hover{color:var(--gengage-primary-color, #3b82f6);border-color:var(--gengage-primary-color, #3b82f6);background:#f0f7ff}.gengage-chat-product-details-share:before{content:attr(aria-label);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background:#1e293b;color:#fff;font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:2}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--_gengage-success-color);color:#fff;border-radius:10px;font-size:16px;font-weight:700}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered:focus-visible,.gengage-chat-proactive-accept:focus-visible,.gengage-chat-proactive-dismiss:focus-visible,.gengage-chat-send:focus-visible,.gengage-chat-action-btn:focus-visible,.gengage-chat-pill:focus-visible,.gengage-chat-input-chip:focus-visible,.gengage-chat-pills-arrow:focus-visible,.gengage-chat-error-retry:focus-visible,.gengage-chat-product-card-cta:focus-visible,.gengage-chat-product-details-cta:focus-visible,.gengage-chat-product-details-atc:focus-visible,.gengage-chat-product-detail-tab:focus-visible,.gengage-chat-panel-divider-toggle:focus-visible,.gengage-chat-panel-topbar-back:focus-visible,.gengage-chat-panel-topbar-forward:focus-visible,.gengage-chat-rollback-btn:focus-visible,.gengage-chat-ai-toppick-cta:focus-visible,.gengage-chat-comparison-view-btn:focus-visible,.gengage-chat-comparison-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-btn:focus-visible,.gengage-chat-product-variant-btn:focus-visible,.gengage-chat-product-gallery-thumb:focus-visible,.gengage-chat-thumbnail-btn:focus-visible,.gengage-chat-find-similar-pill:focus-visible,.gengage-chat-favorite-btn:focus-visible,.gengage-chat-attach-btn:focus-visible,.gengage-chat-mic-btn:focus-visible,.gengage-chat-attachment-remove:focus-visible,.gengage-chat-kvkk-dismiss:focus-visible,.gengage-chat-choice-prompter-cta:focus-visible,.gengage-chat-choice-prompter-dismiss:focus-visible,.gengage-chat-categories-tab:focus-visible,.gengage-chat-categories-filter-tag:focus-visible,.gengage-chat-product-grid-view-more:focus-visible,.gengage-chat-product-details-share:focus-visible,.gengage-qty-btn:focus-visible,.gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}', Oa = L({
|
|
3061
|
-
role:
|
|
3062
|
-
content:
|
|
3061
|
+
const Fa = ':host{all:initial;font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px)}.gengage-chat-root{position:fixed;z-index:var(--gengage-z-index, 2147483647);--_gengage-chat-offset: var(--gengage-chat-offset, 20px);--_gengage-chat-launcher-bottom: var(--gengage-chat-launcher-bottom, 20px);--_gengage-chat-launcher-right: var(--gengage-chat-launcher-right, 20px);--_gengage-chat-launcher-size: var(--gengage-chat-launcher-size, 56px);--_gengage-chat-drawer-width: var(--gengage-chat-width, 400px);--_gengage-chat-radius: var(--gengage-chat-shell-radius, 12px);--_gengage-chat-header-height: var(--gengage-chat-header-height, 60px);--_gengage-chat-conversation-width: var(--gengage-chat-conversation-width, 396px);--_gengage-chat-panel-min-width: var(--gengage-chat-panel-min-width, 320px);--_gengage-chat-panel-max-width: var(--gengage-chat-panel-max-width, 860px);--_gengage-chat-input-height: var(--gengage-chat-input-height, 48px);--_gengage-chat-shadow: var(--gengage-chat-shadow, 0 12px 40px rgba(15, 23, 42, .18));--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-success-color: var(--gengage-success-color, #16a34a);--_gengage-text-secondary: var(--gengage-text-secondary, #64748b);--_gengage-qty-btn-size: var(--gengage-qty-btn-size, 28px);--_gengage-qty-btn-size-compact: var(--gengage-qty-btn-size-compact, 24px)}.gengage-chat-launcher-container{position:fixed;bottom:var(--_gengage-chat-launcher-bottom);right:var(--_gengage-chat-launcher-right);display:flex;flex-direction:column;align-items:flex-end;gap:10px;z-index:var(--gengage-z-index, 2147483647)}.gengage-chat-launcher-content-area,.gengage-chat-launcher-content-area-bottom{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.gengage-chat-launcher-content-area:empty,.gengage-chat-launcher-content-area-bottom:empty{display:none}.gengage-chat-root--open .gengage-chat-launcher-content-area,.gengage-chat-root--open .gengage-chat-launcher-content-area-bottom{display:none}.gengage-chat-launcher{width:var(--_gengage-chat-launcher-size);height:var(--_gengage-chat-launcher-size);border-radius:50%;border:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px #0f172a47;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s ease;position:relative;flex-shrink:0}.gengage-chat-launcher:hover{transform:scale(1.05);box-shadow:0 14px 28px #0f172a47}.gengage-chat-launcher svg{width:24px;height:24px}.gengage-chat-launcher--hidden-mobile{display:none!important}.gengage-chat-launcher-tooltip{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%);padding:6px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease;box-shadow:0 2px 8px #00000026}.gengage-chat-launcher-tooltip:after{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);border:5px solid transparent;border-left-color:#1e293b}.gengage-chat-launcher:hover .gengage-chat-launcher-tooltip{opacity:1}.gengage-chat-root--open .gengage-chat-launcher-tooltip{display:none}.gengage-chat-proactive{position:fixed;bottom:calc(var(--_gengage-chat-launcher-bottom) + var(--_gengage-chat-launcher-size) + 14px);right:var(--_gengage-chat-launcher-right);width:280px;padding:16px 18px;border-radius:16px;background:#fff;box-shadow:0 8px 30px #0000001f,0 2px 8px #0000000f;opacity:0;transform:translateY(8px) scale(.96);transition:opacity .25s ease,transform .25s ease;z-index:2147483645}.gengage-chat-proactive--visible{opacity:1;transform:translateY(0) scale(1)}.gengage-chat-proactive-message{margin:0 0 12px;font-size:14px;line-height:1.5;color:#1f2937}.gengage-chat-proactive-actions{display:flex;gap:8px}.gengage-chat-proactive-accept{flex:1;padding:8px 16px;border:none;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .15s ease}.gengage-chat-proactive-accept:hover{filter:brightness(1.08)}.gengage-chat-proactive-dismiss{position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:#64748b;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.gengage-chat-proactive-dismiss:hover{color:#475569;background:#f1f5f9}.gengage-chat-drawer{position:fixed;top:0;bottom:0;right:0;width:var(--_gengage-chat-drawer-width);max-height:-webkit-fill-available;max-height:100dvh;border-radius:0;background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow);display:flex;flex-direction:column;overflow:hidden;z-index:var(--gengage-z-index, 2147483647);transform-origin:right center;clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile .gengage-chat-launcher-container{right:16px;bottom:calc(16px + env(safe-area-inset-bottom))}.gengage-chat-root--mobile .gengage-chat-drawer{left:0;right:0;bottom:0;width:100%;max-width:none;max-height:-webkit-fill-available;max-height:100dvh;border-radius:16px 16px 0 0;border-top:1px solid rgba(0,0,0,.06);box-shadow:0 -4px 16px #0000001a,0 12px 40px #0f172a2e;padding-bottom:env(safe-area-inset-bottom,0px);clip-path:inset(0);transition:clip-path .42s cubic-bezier(.25,.46,.45,.94),opacity .32s ease}.gengage-chat-root--mobile.gengage-chat-root--open:before{content:"";position:fixed;inset:0;background:#0000001f;z-index:-1;pointer-events:none}.gengage-chat-root--mobile.gengage-chat-root--mobile-half .gengage-chat-drawer{top:auto;height:min(72dvh,620px);max-height:min(72dvh,620px)}.gengage-chat-root--mobile.gengage-chat-root--mobile-full .gengage-chat-drawer{top:0;height:100dvh;max-height:100dvh;border-radius:0;border-top:none}.gengage-chat-root--mobile .gengage-chat-input-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--_gengage-border-color, #e5e7eb);transform:translateY(calc(-1 * var(--gengage-keyboard-offset, 0px)))}.gengage-chat-header{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;min-height:var(--_gengage-chat-header-height);padding:4px 12px;background:var(--gengage-chat-header-bg, #1d2939);color:var(--gengage-chat-header-foreground, #fff);box-shadow:0 4px 20px #00000014,0 0 2px #0000001f;border:none;position:relative;z-index:2}.gengage-chat-header-left{display:flex;align-items:center;gap:10px;min-width:0}.gengage-chat-header-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid rgba(255,255,255,.15)}.gengage-chat-header-info{display:flex;flex-direction:column;gap:2px;min-width:0}.gengage-chat-header-title-row{display:flex;align-items:center;gap:6px}.gengage-chat-header-title{font-weight:700;font-size:15px;line-height:1.25;letter-spacing:.01em;color:inherit}.gengage-chat-header-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.5}.gengage-chat-header-powered{display:flex;align-items:center;gap:4px;font-size:11px;color:#ffffffbf;text-decoration:none;transition:color .15s}.gengage-chat-header-powered:hover{color:#fffc}.gengage-chat-header-powered svg{width:12px;height:12px;opacity:.6}.gengage-chat-header-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.gengage-chat-header-btn{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-header-btn:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-close{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid rgba(255,255,255,.12);color:#ffffffb3;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.gengage-chat-close:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40}.gengage-chat-body{display:flex;flex:1;overflow:hidden;min-height:0}.gengage-chat-panel{display:none;width:0;overflow:hidden;transition:width .22s cubic-bezier(.2,.72,.2,1)}.gengage-chat-panel--visible{display:flex;flex-direction:column;position:relative;width:440px;min-width:440px;border-right:1px solid var(--_gengage-border-color);overflow-y:auto;padding:16px;background:#f8fafc}.gengage-chat-panel-divider{display:flex;align-items:center;width:4px;cursor:pointer;background:#e5e7eb;position:relative;flex-shrink:0;transition:background .15s;z-index:2}.gengage-chat-panel-divider:hover{background:#cbd5e1}.gengage-chat-panel-divider--hidden{display:none}.gengage-chat-panel-divider-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:24px;height:48px;border:1px solid var(--_gengage-border-color);border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--_gengage-text-secondary);box-shadow:0 1px 3px #00000014;transition:background .15s,color .15s;padding:0;line-height:1}.gengage-chat-panel-divider-toggle:hover{background:#f1f5f9;color:#334155}.gengage-chat-panel--collapsed{flex:0 0 0px!important;width:0!important;min-width:0!important;max-width:0!important;padding:0!important;border-right:none!important;overflow:hidden}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-panel--collapsed~.gengage-chat-panel-divider .gengage-chat-panel-divider-toggle{left:0;transform:translateY(-50%)}.gengage-chat-conversation{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden;background:var(--gengage-background-color, #fff);position:relative;z-index:1}.gengage-chat-drawer--with-panel{width:auto;background:transparent;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-header{border-radius:0;flex-shrink:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex:1 1 0;min-height:0;gap:0;padding:0;align-items:stretch}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{flex:0 0 auto;width:clamp(var(--_gengage-chat-panel-min-width),50vw,var(--_gengage-chat-panel-max-width));min-width:var(--_gengage-chat-panel-min-width);max-width:var(--_gengage-chat-panel-max-width);border-right:none;background:#fff;padding:0 16px 16px;overflow-y:auto;margin:0;border-radius:0;box-shadow:0 8px 32px #0f172a1f,0 2px 8px #0f172a0f;max-height:100dvh}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider{width:0;background:transparent}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle{width:20px;height:48px;border-radius:10px;background:var(--gengage-primary-color, #3b82f6);color:#fff;border:2px solid #fff;box-shadow:0 2px 8px #0f172a2e;font-size:12px;z-index:10}.gengage-chat-drawer--with-panel .gengage-chat-panel-divider-toggle:hover{background:var(--gengage-primary-hover, #2563eb);color:#fff}.gengage-chat-drawer--with-panel .gengage-chat-conversation{flex:0 0 var(--_gengage-chat-conversation-width);width:var(--_gengage-chat-conversation-width);border-left:none;background:var(--gengage-background-color, #fff);box-shadow:-4px 0 24px #0f172a1f,-1px 0 4px #0f172a0f}.gengage-chat-drawer--with-panel .gengage-chat-messages{padding-right:6px;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.12) transparent}.gengage-chat-drawer--with-panel .gengage-chat-messages::-webkit-scrollbar{width:0}.gengage-chat-drawer--with-panel:has(.gengage-chat-panel--collapsed){width:var(--_gengage-chat-conversation-width);background:var(--gengage-background-color, #fff);box-shadow:var(--_gengage-chat-shadow)}.gengage-chat-drawer--with-panel .gengage-chat-footer{display:none}.gengage-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;min-height:0;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.gengage-chat-messages::-webkit-scrollbar{width:6px}.gengage-chat-messages::-webkit-scrollbar-track{background:transparent}.gengage-chat-messages::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}.gengage-chat-messages::-webkit-scrollbar-thumb:hover{background:#0003}.gengage-chat-bubble{max-width:85%;padding:12px 16px;border-radius:12px;line-height:1.5;font-size:14px;font-weight:500;word-wrap:break-word;overflow-wrap:break-word;animation:gengage-chat-msg-in .3s cubic-bezier(.2,.7,.2,1)}@keyframes gengage-chat-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-bubble--user{align-self:flex-end;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);border-bottom-right-radius:4px}.gengage-chat-bubble--assistant{align-self:flex-start;background:#f3f4f6;color:#1f2937;border-bottom-left-radius:4px;min-width:120px}.gengage-chat-bubble--active{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:-2px}.gengage-chat-bubble--assistant:empty{display:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a{color:var(--gengage-primary-color, #2563eb);text-decoration:underline}.gengage-chat-bubble--assistant .gengage-chat-bubble-text a:hover{text-decoration:none}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p{margin:0 0 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text p:last-child{margin-bottom:0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text ul,.gengage-chat-bubble--assistant .gengage-chat-bubble-text ol{margin:6px 0;padding-left:20px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text li{margin-bottom:6px;line-height:1.5}.gengage-chat-bubble--assistant .gengage-chat-bubble-text code{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text pre{background:#0000000a;padding:8px;border-radius:6px;overflow-x:auto;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text table{border-collapse:collapse;margin:4px 0;font-size:.9em}.gengage-chat-bubble--assistant .gengage-chat-bubble-text th,.gengage-chat-bubble--assistant .gengage-chat-bubble-text td{border:1px solid var(--_gengage-border-color);padding:4px 8px}.gengage-chat-bubble--assistant .gengage-chat-bubble-text img{max-width:100%;height:auto;border-radius:4px;margin:4px 0}.gengage-chat-bubble--assistant .gengage-chat-bubble-text h1,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h2,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h3,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h4,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h5,.gengage-chat-bubble--assistant .gengage-chat-bubble-text h6{margin:8px 0 4px;line-height:1.3;color:#0f172a}.gengage-chat-bubble--assistant .gengage-chat-bubble-text blockquote{border-left:3px solid var(--_gengage-border-color);padding-left:12px;margin:4px 0;color:var(--_gengage-text-secondary)}.gengage-chat-bubble--first{border-left:3px solid var(--gengage-accent-primary, #3b82f6);padding-left:12px}.gengage-chat-bubble--first .gengage-chat-bubble-text{font-size:15px}.gengage-chat-typing{display:flex;align-items:center;gap:5px;padding:8px 4px;align-self:flex-start;max-width:85%}.gengage-chat-typing:has(.gengage-chat-typing-text),.gengage-chat-typing:has(.gengage-chat-thinking-steps){background:#f3f4f6;padding:10px 14px;border-radius:12px 12px 12px 4px;gap:8px}.gengage-chat-typing-dots{display:flex;align-items:center;gap:5px}.gengage-chat-typing-dots span{width:6px;height:6px;border-radius:50%;background:#94a3b8;display:inline-block;animation:gengage-chat-typing-fade 1.4s ease-in-out infinite}.gengage-chat-typing-dots span:nth-child(2){animation-delay:.2s}.gengage-chat-typing-dots span:nth-child(3){animation-delay:.4s}@keyframes gengage-chat-typing-fade{0%,to{opacity:.25}50%{opacity:1}}.gengage-chat-typing-sparkle{animation:gengage-sparkle-pulse 1.2s infinite}@keyframes gengage-sparkle-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-typing-text{font-size:13px;color:var(--_gengage-text-secondary);font-style:italic;flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word}.gengage-chat-thinking-steps{display:flex;flex-direction:column;gap:4px;padding:4px 0}.gengage-chat-thinking-step{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gengage-chat-text-secondary, #666)}.gengage-chat-thinking-step-marker{font-size:12px;width:16px;text-align:center;flex-shrink:0}.gengage-chat-thinking-step-marker--done{color:var(--gengage-chat-success, #4caf50)}.gengage-chat-thinking-step-marker--active{color:var(--gengage-chat-primary, #1976d2);animation:gengage-thinking-pulse 1.5s ease-in-out infinite}@keyframes gengage-thinking-pulse{0%,to{opacity:1}50%{opacity:.4}}.gengage-chat-thinking-step-text{line-height:1.4}.gengage-chat-error{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;border-radius:10px;background:#fef2f2;color:#991b1b;font-size:13px;text-align:center;border:1px solid #fecaca}.gengage-chat-error-retry{flex-shrink:0;padding:4px 12px;border:1px solid #fca5a5;border-radius:6px;background:#fff;color:#991b1b;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s}.gengage-chat-error-retry:hover{background:#fee2e2}.gengage-chat-input-area{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:8px 12px;border-top:1px solid var(--_gengage-border-color);background:var(--gengage-background-color, #fff)}.gengage-chat-input-pill{display:flex;align-items:center;gap:4px;flex:1;min-width:0;height:44px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:30px;padding:2px 8px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.gengage-chat-input-pill:focus-within{border-color:var(--gengage-primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f626}.gengage-chat-input{flex:1;min-width:0;min-height:40px;max-height:120px;padding:0 6px 0 14px;border:none;border-radius:0;font-size:14px;font-family:inherit;line-height:1.4;align-content:center;outline:none;background:transparent;color:#1f2937;resize:none;overflow-y:hidden}@media(max-width:767px){.gengage-chat-input{max-height:40px;white-space:nowrap;overflow:hidden}.gengage-chat-send{width:44px;height:44px;min-width:44px}}.gengage-chat-input::placeholder{font-size:14px;color:#6b7280}.gengage-chat-send{width:36px;height:36px;min-width:36px;padding:0;border:none;border-radius:50%;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-weight:700;font-size:0;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,transform .15s ease;box-shadow:0 2px 4px #0000001f}.gengage-chat-send:hover{filter:brightness(.92);transform:translateY(-1px);box-shadow:0 4px 8px #0000002e}.gengage-chat-send:active{transform:translateY(0);box-shadow:0 1px 2px #0000001f}.gengage-chat-send svg{width:18px;height:18px}.gengage-chat-send:disabled{background:#d1d5db;box-shadow:none;cursor:not-allowed}.gengage-chat-footer{padding:4px 10px;text-align:center;font-size:10px;color:#6b7280;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-uispec{width:100%}.gengage-chat-uispec:empty{display:none}.gengage-chat-uispec>*{animation:gengage-chat-widget-enter .16s cubic-bezier(.2,.7,.2,1) both}@keyframes gengage-chat-widget-enter{0%{opacity:0;transform:translateY(5px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-chat-action-buttons{display:flex;gap:8px;padding:6px 0 4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gengage-chat-action-buttons::-webkit-scrollbar{display:none}.gengage-chat-action-btn{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;line-height:1.25;font-family:inherit;cursor:pointer;white-space:nowrap;transition:filter .15s ease,transform .1s ease}.gengage-chat-action-btn:hover{filter:brightness(.92)}.gengage-chat-action-btn:active{transform:scale(.97)}.gengage-chat-product-card{position:relative;border:1px solid #eee;border-radius:16px;overflow:hidden;background:#fff;width:160px;min-width:160px;max-width:160px;box-shadow:0 2px 8px #0000000f;transition:transform .1s ease,box-shadow .2s ease}.gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.gengage-chat-product-card-img{width:100%;height:120px;object-fit:contain;display:block;background:#fff;padding:8px;box-sizing:border-box}.gengage-chat-product-card-body{display:flex;flex-direction:column;gap:4px;padding:8px 10px 10px;text-align:center}.gengage-chat-product-card-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.35;margin-bottom:0;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.gengage-chat-product-card-brand{font-size:10px;color:#666}.gengage-chat-product-card-rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-card-review-count{color:#64748b;font-size:10px}.gengage-chat-product-card-price{display:flex;align-items:baseline;justify-content:center;gap:4px;font-size:16px;font-weight:800;color:#0f172a}.gengage-chat-product-card-original-price{text-decoration:line-through;color:#64748b;font-weight:400;font-size:12px}.gengage-chat-price-skeleton{display:inline-block;width:80px;height:16px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:gengage-skeleton-price-pulse 1.5s ease-in-out infinite;border-radius:4px;vertical-align:middle}@keyframes gengage-skeleton-price-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-product-card-cta{display:block;padding:8px 10px;text-align:center;background:transparent;color:var(--gengage-primary-color, #3b82f6);text-decoration:none;font-size:12px;font-weight:700;letter-spacing:.01em;border-top:1px solid #f1f5f9;transition:color .15s ease,background .15s ease}.gengage-chat-product-card-cta:hover{color:var(--gengage-primary-color, #0b24d6);background:#f8fafc}.gengage-chat-product-card-cta:active{background:#f1f5f9}.gengage-chat-product-summary{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;cursor:pointer;transition:background .15s,box-shadow .15s;margin:4px 0}.gengage-chat-product-summary:hover{background:#f9fafb;box-shadow:0 1px 4px #0000000f}.gengage-chat-product-summary__image{flex-shrink:0;width:64px;height:64px;border-radius:8px;overflow:hidden;border:1px solid #f3f4f6;background:#f9fafb}.gengage-chat-product-summary__image img{width:100%;height:100%;object-fit:cover;display:block}.gengage-chat-product-summary__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.gengage-chat-product-summary__name{font-size:13px;font-weight:500;line-height:1.3;color:#111827;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.gengage-chat-product-summary__rating{font-size:11px;color:#f59e0b;line-height:1}.gengage-chat-product-summary__review-count{color:#6b7280;font-size:11px}.gengage-chat-product-summary__price{font-size:13px;font-weight:600;color:#111827;line-height:1;margin-top:2px}.gengage-chat-product-summary__price-original{text-decoration:line-through;color:#6b7280;font-weight:400;font-size:11px}.gengage-chat-product-summary__price-current{color:var(--gengage-primary-color, #111827)}.gengage-chat-product-summary__cta{flex-shrink:0;font-size:12px;font-weight:500;color:var(--gengage-primary-color, #2563eb);text-decoration:none;padding:4px 10px;border-radius:8px;transition:background .15s;white-space:nowrap}.gengage-chat-product-summary__cta:hover{background:#0000000a}.gengage-chat-product-summary__cta:focus-visible{outline:2px solid var(--gengage-primary-color, #2563eb);outline-offset:2px}.gengage-chat-product-grid{display:flex;gap:12px;overflow-x:auto;padding:8px 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;min-height:180px}.gengage-chat-product-grid>*{scroll-snap-align:start;flex:0 0 auto}.gengage-chat-product-grid::-webkit-scrollbar{display:none}.gengage-chat-review-highlights{padding:2px 0 6px}.gengage-chat-review-item{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:10px 12px;background:#fff}.gengage-chat-review-item[data-tone=positive]{border-color:#bbf7d0;background:#f0fdf4}.gengage-chat-review-item[data-tone=negative]{border-color:#fecaca;background:#fef2f2}.gengage-chat-review-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--_gengage-text-secondary);margin-bottom:4px}.gengage-chat-review-text{font-size:13px;line-height:1.45;color:#1f2937}.gengage-chat-review-rating{margin-top:6px;font-size:12px;font-weight:700;color:#0f172a}.gengage-chat-review-empty{font-size:12px;color:var(--_gengage-text-secondary)}.gengage-chat-review-tabs{display:flex;gap:6px;margin-bottom:10px}.gengage-chat-review-tab{padding:6px 14px;border:1px solid var(--_gengage-border-color);border-radius:999px;background:#fff;color:var(--_gengage-text-secondary);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.gengage-chat-review-tab:hover{background:#f8fafc}.gengage-chat-review-tab--active{background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.gengage-chat-review-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.gengage-chat-review-pill{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--_gengage-border-color);border-radius:8px;background:#fff;font-size:12px;color:#334155;box-shadow:0 1px 2px #0000000a}.gengage-chat-review-pill[data-tone=positive]{border-color:#bbf7d0}.gengage-chat-review-pill[data-tone=negative]{border-color:#fecaca}.gengage-chat-review-pill-icon{font-size:11px;font-weight:700}.gengage-chat-review-pill[data-tone=positive] .gengage-chat-review-pill-icon{color:#16a34a}.gengage-chat-review-pill[data-tone=negative] .gengage-chat-review-pill-icon{color:#dc2626}.gengage-chat-review-pill-count{font-size:10px;font-weight:700;background:#f1f5f9;color:var(--_gengage-text-secondary);border-radius:4px;padding:1px 5px}.gengage-chat-review-items{display:grid;gap:10px}.gengage-chat-divider{border:none;border-top:1px solid var(--_gengage-border-color);margin:8px 0}.gengage-chat-divider-wrapper{display:flex;align-items:center;gap:8px;margin:8px 0}.gengage-chat-divider-wrapper hr{flex:1;border:none;border-top:1px solid var(--_gengage-border-color);margin:0}.gengage-chat-divider-label{font-size:11px;color:#6b7280;white-space:nowrap}.gengage-chat--overlay .gengage-chat-drawer{position:fixed;inset:0;width:100%;max-width:480px;max-height:100%;margin:0 auto;border-radius:0;animation:gengage-chat-overlay-in .24s cubic-bezier(.2,.72,.2,1)}.gengage-chat--overlay:before{content:"";position:fixed;inset:0;background:#00000073;z-index:-1}@keyframes gengage-chat-overlay-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-panel-skeleton{display:flex;flex-direction:column;gap:14px;padding:6px 0}.gengage-chat-panel-skeleton-block{height:110px;border-radius:10px;background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:200% 100%;animation:gengage-panel-shimmer 1.4s infinite}@keyframes gengage-panel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gengage-chat-panel-skeleton-block--image{height:200px;border-radius:8px;margin-bottom:12px}.gengage-chat-panel-skeleton-block--text{height:16px;border-radius:4px;margin-bottom:8px}.gengage-chat-panel-skeleton-block--text:nth-child(3){width:80%}.gengage-chat-panel-skeleton-block--text:nth-child(4){width:60%}.gengage-chat-panel-skeleton-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.gengage-chat-panel-skeleton-block--card{height:120px;border-radius:8px}.gengage-chat-panel-skeleton-block--row{height:32px;border-radius:4px;margin-bottom:4px}.gengage-chat-panel .gengage-chat-product-card{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;border-radius:12px;border:1px solid var(--_gengage-border-color);box-shadow:0 1px 4px #0000000f;overflow:hidden;padding:0}.gengage-chat-panel .gengage-chat-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#d1d5db}.gengage-chat-panel .gengage-chat-product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));overflow-x:visible;gap:12px;min-height:auto;padding:4px 0}.gengage-chat-panel .gengage-chat-product-card-img{width:100%;height:160px;border-radius:0;object-fit:contain;background:#fafafa;padding:12px;box-sizing:border-box}.gengage-chat-panel .gengage-chat-product-card-body{padding:10px 12px 12px;text-align:left;gap:4px}.gengage-chat-panel .gengage-chat-product-card-name{min-height:0;margin-bottom:2px;font-size:13px;-webkit-line-clamp:2}.gengage-chat-panel .gengage-chat-product-card-price{justify-content:flex-start;font-size:15px}.gengage-chat-panel .gengage-chat-product-card-cta{display:block;padding:10px 12px;text-align:center;border-top:1px solid #f1f5f9;border-radius:0;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:13px}.gengage-chat-product-details-panel{display:flex;flex-direction:column;gap:12px;width:100%;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:16px;padding:14px;box-sizing:border-box}.gengage-chat-product-details-media{border:1px solid #f1f5f9;border-radius:12px;background:#fafafa;padding:12px;display:flex;flex-direction:column;align-items:center}.gengage-chat-product-details-img{width:100%;height:auto;max-height:300px;object-fit:contain;border-radius:8px}.gengage-chat-product-details-content{display:flex;flex-direction:column;gap:8px;min-width:0}.gengage-chat-product-details-title{margin:0;font-size:17px;font-weight:700;line-height:1.3;color:#0f172a}.gengage-chat-product-details-rating{display:inline-flex;align-items:center;gap:4px;width:fit-content;padding:3px 8px;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:13px;font-weight:700}.gengage-chat-product-details-review-count{color:#7c2d12;font-weight:600}.gengage-chat-product-details-price{display:flex;align-items:baseline;gap:6px}.gengage-chat-product-details-original-price{font-size:14px;color:#64748b;text-decoration:line-through}.gengage-chat-product-details-current-price{font-size:22px;font-weight:800;line-height:1.1;color:#0f172a}.gengage-chat-product-details-stock{width:fit-content;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700}.gengage-chat-product-details-stock.is-in-stock{background:#dcfce7;color:#166534}.gengage-chat-product-details-stock.is-out-of-stock{background:#fee2e2;color:#991b1b}.gengage-chat-product-details-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.gengage-chat-product-details-cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 20px;border-radius:999px;border:none;text-decoration:none;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:14px;font-weight:700;cursor:pointer;transition:filter .14s ease,transform .12s ease}.gengage-chat-product-details-cta:hover{filter:brightness(1.05);transform:translateY(-1px)}.gengage-chat-product-details-cta:active{transform:translateY(1px)}.gengage-chat-product-details-atc{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:10px;background:var(--_gengage-success-color);color:#fff;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;transition:filter .12s ease,transform .12s ease}.gengage-chat-product-details-atc:hover{filter:brightness(1.08);transform:translateY(-1px)}.gengage-chat-product-details-atc:active{transform:translateY(1px)}.gengage-chat-product-detail-tabs{margin-top:4px;border-top:1px solid var(--_gengage-border-color);padding-top:12px}.gengage-chat-product-detail-tab-bar{display:flex;gap:0;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:12px}.gengage-chat-product-detail-tab{flex:1;padding:8px 12px;border:none;background:transparent;color:var(--_gengage-text-secondary);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.gengage-chat-product-detail-tab:hover{color:#334155}.gengage-chat-product-detail-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-detail-tab-panel{font-size:13px;line-height:1.6;color:#374151}.gengage-chat-product-specs-table{width:100%;border-collapse:collapse;font-size:13px}.gengage-chat-product-specs-table tr:nth-child(2n){background:#f8fafc}.gengage-chat-product-specs-key{padding:6px 10px;font-weight:600;color:#475569;white-space:nowrap;border-bottom:1px solid #f1f5f9;width:40%}.gengage-chat-product-specs-value{padding:6px 10px;color:#1f2937;border-bottom:1px solid #f1f5f9}.gengage-chat-product-card-atc{position:absolute;bottom:42px;right:6px;opacity:0;transition:opacity .15s ease;z-index:1}.gengage-chat-product-card:hover .gengage-chat-product-card-atc{opacity:1}.gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(0 0 0 100%);opacity:0;pointer-events:none;box-shadow:none}.gengage-chat-root--mobile .gengage-chat-drawer.gengage-chat-drawer--hidden{clip-path:inset(100% 0 0 0);opacity:0;pointer-events:none;box-shadow:none}@media(max-width:900px){.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:clamp(280px,calc(100vw - var(--_gengage-chat-conversation-width)),560px);max-width:560px}}.gengage-chat-attachment-preview{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f3f4f6;border:1px solid var(--_gengage-border-color);border-radius:8px;width:100%;box-sizing:border-box}.gengage-chat-attachment-preview--hidden{display:none}.gengage-chat-attachment-preview-thumb{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-attachment-name{flex:1;font-size:12px;color:#4b5563;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gengage-chat-attachment-remove{background:none;border:none;cursor:pointer;font-size:18px;color:#6b7280;padding:0 4px;line-height:1;flex-shrink:0}.gengage-chat-attachment-remove:hover{color:#ef4444}.gengage-chat-attach-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-attach-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-attach-btn svg{width:20px;height:20px}.gengage-chat-mic-btn{background:none;border:none;cursor:pointer;padding:6px;line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#6b7280;transition:color .15s,background .15s}.gengage-chat-mic-btn:hover{color:#4b5563;background:#0000000d}.gengage-chat-mic-btn svg{width:20px;height:20px}.gengage-chat-mic-btn--active{color:#ef4444;animation:gengage-mic-pulse 1.2s ease-in-out infinite}.gengage-chat-mic-btn--active:hover{color:#dc2626}@keyframes gengage-mic-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.8}}.gengage-chat-input-area--dragover{outline:2px dashed var(--gengage-primary-color, #3b82f6);outline-offset:-2px;background:#eff6ff}.gengage-chat-attachment-thumb{width:120px;max-width:100%;height:auto;border-radius:8px;margin-bottom:6px;display:block}@media(max-width:768px){.gengage-chat-panel-divider{display:none}.gengage-chat-drawer--with-panel{left:0;right:0;width:100%;border-radius:0}.gengage-chat-drawer--with-panel .gengage-chat-body{flex-direction:column}.gengage-chat-drawer--with-panel .gengage-chat-panel--visible{width:100%;min-width:0;max-width:none;max-height:30dvh;border-right:none;border-bottom:1px solid var(--_gengage-border-color);padding:0 12px 12px;margin:0;border-radius:0;box-shadow:none}.gengage-chat-drawer--with-panel .gengage-chat-conversation{width:100%;flex:1;border-left:none}.gengage-chat-panel .gengage-chat-product-card{grid-template-columns:84px 1fr}.gengage-chat-panel .gengage-chat-product-card-cta{grid-column:1 / -1;width:100%}.gengage-chat-product-details-panel{padding:12px;gap:12px}.gengage-chat-product-details-media{min-height:140px}.gengage-chat-product-details-title{font-size:15px}.gengage-chat-product-details-current-price{font-size:20px}.gengage-chat-product-grid{scroll-snap-type:x mandatory}.gengage-chat-product-card{width:280px;min-width:280px;scroll-snap-align:center}.gengage-chat-product-card-img{height:180px}}@media(max-width:480px){.gengage-chat-drawer{position:fixed;inset:0;width:100%;max-height:100%;border-radius:0}.gengage-chat-bubble{max-width:100%}}.gengage-chat-kvkk-banner{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;background:#fffbeb;border-bottom:1px solid #fde68a;font-size:12px;line-height:1.5;color:#92400e}.gengage-chat-kvkk-content{flex:1;min-width:0}.gengage-chat-kvkk-content a{color:#b45309;text-decoration:underline}.gengage-chat-kvkk-dismiss{flex-shrink:0;width:20px;height:20px;border:none;background:transparent;color:#92400e;font-size:16px;cursor:pointer;padding:0;line-height:1}.gengage-chat-comparison{padding:16px}.gengage-chat-comparison-heading{font-size:14px;font-weight:700;letter-spacing:.05em;color:#0f172a;margin:0 0 16px}.gengage-chat-comparison-recommended{border:1px solid var(--_gengage-border-color);border-radius:12px;padding:16px;background:#fff;box-shadow:0 1px 3px #0000000f;margin-bottom:12px}.gengage-chat-comparison-recommended-label{font-size:12px;font-weight:700;color:#16a34a;text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px}.gengage-chat-comparison-recommended-body{display:flex;gap:12px;align-items:flex-start}.gengage-chat-comparison-recommended-body img{width:80px;height:80px;object-fit:contain;border-radius:8px;background:#f8fafc}.gengage-chat-comparison-recommended-info{flex:1;min-width:0}.gengage-chat-comparison-recommended-title{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:4px}.gengage-chat-comparison-recommended-price{font-size:16px;font-weight:700;color:#0f172a}.gengage-chat-comparison-highlights{margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}.gengage-chat-comparison-highlights-label{font-size:12px;font-weight:600;color:var(--_gengage-text-secondary);margin-bottom:6px}.gengage-chat-comparison-highlights ul{margin:0;padding-left:18px;font-size:13px;color:#334155;line-height:1.6}.gengage-chat-comparison-special{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:12px 16px;margin-bottom:12px;font-size:13px;color:#92400e}.gengage-chat-comparison-special summary{cursor:pointer;font-weight:600}.gengage-chat-comparison-special ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.gengage-chat-comparison-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:12px}.gengage-chat-comparison-table th,.gengage-chat-comparison-table td{padding:10px 12px;text-align:center;border-bottom:1px solid #f1f5f9;vertical-align:top}.gengage-chat-comparison-table th{font-weight:600;font-size:12px;color:#334155}.gengage-chat-comparison-table th img{width:60px;height:60px;object-fit:contain;border-radius:6px;background:#f8fafc;margin-bottom:6px}.gengage-chat-comparison-table-price{font-weight:700;color:#0f172a}.gengage-chat-comparison-label{text-align:left;font-weight:600;color:var(--_gengage-text-secondary);white-space:nowrap}.gengage-chat-comparison-selected{background:#f0fdf4}.gengage-chat-comparison-recommended-text{padding:8px 12px;font-size:12px;color:var(--gengage-text-secondary, #475569);font-style:italic;border-top:1px solid var(--gengage-border-color, #e2e8f0);margin-top:8px}.gengage-chat-comparison-product-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.gengage-chat-comparison-view-btn{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--gengage-primary-color, #3b82f6);border-radius:6px;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s ease,color .15s ease;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.gengage-chat-comparison-view-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-pills{position:relative;padding:8px 12px;border-top:1px solid #f1f5f9;background:var(--gengage-background-color, #fff)}.gengage-chat-pills-scroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:28px}.gengage-chat-pills-scroll::-webkit-scrollbar{display:none}.gengage-chat-pill{flex:0 0 auto;padding:8px 16px;border:none;border-radius:999px;background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:filter .15s,transform .1s}.gengage-chat-pill:hover{filter:brightness(.92)}.gengage-chat-pill:active{transform:scale(.97)}.gengage-chat-pill--rich{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:20px}.gengage-chat-pill-img{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#ffffff26}.gengage-chat-pill-text{font-size:13px;font-weight:600;line-height:1.2}.gengage-chat-pill-desc{display:none}.gengage-chat-pill--rich .gengage-chat-pill-desc{display:block;font-size:10px;font-weight:400;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.gengage-chat-pills-arrow{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;border:1px solid var(--_gengage-border-color);background:#fff;color:var(--_gengage-text-secondary);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:-4px 0 8px #ffffffe6;z-index:1}.gengage-chat-pills-arrow:hover{background:#f8fafc;color:#334155}@media(prefers-reduced-motion:reduce){.gengage-chat-uispec>*,.gengage-chat-action-btn,.gengage-chat-product-card,.gengage-chat-product-card-cta,.gengage-chat-send,.gengage-chat-launcher,.gengage-chat-pill,.gengage-chat-drawer,.gengage-chat-proactive,.gengage-chat-typing-dots span,.gengage-chat-typing-sparkle,.gengage-chat-thinking-step-marker--active,.gengage-chat-bubble,.gengage-chat-panel-skeleton-block,.gengage-chat-ai-toppick-card,.gengage-chat-mic-btn--active,.gengage-chat-ai-toppick-spinner:after,.gengage-chat-panel-shimmer,.gengage-chat-overlay,.gengage-chat-product-details-skeleton-price{animation:none!important;transition:none!important;transform:none!important}}.gengage-chat-bubble--user{position:relative}.gengage-chat-rollback-btn{position:absolute;left:-28px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;border-radius:50%;background:var(--gengage-surface-color, #f1f5f9);color:var(--gengage-text-secondary, #64748b);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;padding:0}.gengage-chat-bubble--user:hover .gengage-chat-rollback-btn{opacity:1}.gengage-chat-rollback-btn:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-bubble--hidden{display:none}.gengage-chat-ai-top-picks{display:flex;flex-direction:column;gap:12px;padding:8px 0}.gengage-chat-ai-top-picks-title{font-size:15px;font-weight:600;color:var(--gengage-text-primary, #1e293b);margin:0 0 4px}.gengage-chat-ai-top-picks-cards{display:flex;flex-direction:column;gap:10px}.gengage-chat-ai-toppick-discount-badge{position:absolute;top:8px;left:8px;background:var(--gengage-discount-bg, #ef4444);color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;z-index:1}.gengage-chat-ai-toppick-card--winner{position:relative;display:flex;flex-direction:column;border:2px solid var(--gengage-primary-color, #3b82f6);border-radius:12px;background:#fff;overflow:hidden;transition:box-shadow .2s ease}.gengage-chat-ai-toppick-card--winner:hover{box-shadow:0 4px 16px #3b82f626}.gengage-chat-ai-toppick-card--winner .gengage-chat-ai-toppick-img{width:100%;height:140px;object-fit:contain;background:#f8fafc}.gengage-chat-ai-toppick-card--compact{position:relative;display:flex;flex-direction:row;align-items:center;gap:12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;background:#fff;padding:10px;transition:box-shadow .2s ease,transform .15s ease}.gengage-chat-ai-toppick-card--compact:hover{box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:64px;height:64px;object-fit:contain;border-radius:8px;background:#f8fafc;flex-shrink:0}.gengage-chat-ai-toppick-badge{position:absolute;top:8px;left:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;z-index:1;letter-spacing:.5px}.gengage-chat-ai-toppick-body{display:flex;flex-direction:column;gap:4px;padding:10px;flex:1;min-width:0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-body{padding:0}.gengage-chat-ai-toppick-name{font-size:13px;font-weight:600;color:var(--gengage-text-primary, #1e293b);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gengage-chat-ai-toppick-role{font-size:11px;font-weight:600;color:var(--gengage-primary-color, #3b82f6);text-transform:uppercase;letter-spacing:.3px}.gengage-chat-ai-toppick-labels{display:flex;flex-wrap:wrap;gap:4px}.gengage-chat-ai-toppick-label{font-size:11px;padding:1px 6px;border-radius:4px;font-weight:500}.gengage-chat-ai-toppick-label[data-sentiment=positive]{background:#dcfce7;color:#166534}.gengage-chat-ai-toppick-label[data-sentiment=negative]{background:#fee2e2;color:#991b1b}.gengage-chat-ai-toppick-label[data-sentiment=neutral]{background:#f1f5f9;color:#475569}.gengage-chat-ai-toppick-score{font-size:12px;font-weight:700;color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-ai-toppick-reason{font-size:12px;color:var(--gengage-chat-text-secondary, #666);line-height:1.4;margin-top:4px}.gengage-chat-ai-toppick-review{font-size:12px;font-style:italic;color:var(--gengage-text-secondary, #64748b);margin:2px 0;padding-left:8px;border-left:2px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-ai-toppick-price{font-size:14px;font-weight:700;color:var(--gengage-text-primary, #1e293b)}.gengage-chat-ai-toppick-original-price{text-decoration:line-through;color:var(--gengage-text-secondary, #64748b);font-weight:400;font-size:12px}.gengage-chat-ai-toppick-cta{display:block;width:calc(100% - 20px);margin:6px 10px 10px;padding:8px 0;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:background .15s ease}.gengage-chat-ai-toppick-cta:hover{filter:brightness(.92)}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:auto;margin:0;padding:6px 14px;flex-shrink:0;align-self:center}.gengage-chat-ai-toppick-spinner{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:3}.gengage-chat-ai-toppick-spinner:after{content:"";width:24px;height:24px;border:3px solid var(--gengage-border, #e2e8f0);border-top-color:var(--gengage-accent-primary, #3b82f6);border-radius:50%;animation:gengage-spin .7s linear infinite}@keyframes gengage-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-chat-ai-top-picks-cards{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:4px}.gengage-chat-ai-toppick-card--winner,.gengage-chat-ai-toppick-card--compact{min-width:280px;max-width:280px;flex-shrink:0;scroll-snap-align:start}.gengage-chat-ai-toppick-card--compact{flex-direction:column;align-items:stretch}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-img{width:100%;height:100px;border-radius:8px 8px 0 0}.gengage-chat-ai-toppick-card--compact .gengage-chat-ai-toppick-cta{width:calc(100% - 20px);margin:6px 10px 10px;align-self:stretch}.gengage-chat-rollback-btn{left:-24px}}.gengage-chat-grounding-review{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grounding-review:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grounding-review-icon{font-size:20px;flex-shrink:0}.gengage-chat-grounding-review-body{flex:1;min-width:0}.gengage-chat-grounding-review-title{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grounding-review-subtitle{font-size:12px;color:var(--gengage-text-muted, #64748b);margin-top:2px}.gengage-chat-grounding-review-cta{font-size:13px;font-weight:500;color:var(--gengage-primary-color, #3b82f6);white-space:nowrap;flex-shrink:0}.gengage-chat-grouping-cards{display:flex;flex-direction:column;gap:6px}.gengage-chat-grouping-card{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:8px;transition:background .15s ease,border-color .15s ease}.gengage-chat-grouping-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-grouping-card-arrow{display:none;font-size:14px;color:var(--gengage-primary-color, #3b82f6);flex-shrink:0}.gengage-chat-grouping-card-img{width:20px;height:20px;border-radius:4px;object-fit:cover;flex-shrink:0}.gengage-chat-grouping-card-body{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.gengage-chat-grouping-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-grouping-card-desc{font-size:12px;color:var(--gengage-text-muted, #64748b)}.gengage-chat-grouping-card-labels{display:block;font-size:11px;color:var(--gengage-chat-text-secondary, #888);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gengage-chat-root--mobile .gengage-chat-grouping-card-img{display:none}.gengage-chat-root--mobile .gengage-chat-grouping-card-arrow{display:inline}.gengage-chat-suggested-search-cards{display:flex;flex-direction:column;gap:8px}.gengage-chat-suggested-search-card{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;background:var(--gengage-surface-color, #f8fafc);border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:10px;transition:background .15s ease,border-color .15s ease}.gengage-chat-suggested-search-card:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-suggested-search-card-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex-shrink:0}.gengage-chat-suggested-search-card-body{flex:1;min-width:0}.gengage-chat-suggested-search-card-name{font-weight:600;font-size:13px;color:var(--gengage-text-color, #1e293b)}.gengage-chat-suggested-search-card-desc{font-size:12px;color:var(--gengage-text-secondary, #475569);margin-top:2px}.gengage-chat-suggested-search-card-diff{font-size:11px;color:var(--gengage-text-muted, #64748b);margin-top:2px;font-style:italic}.gengage-chat-product-details-gallery{position:relative}.gengage-chat-product-details-gallery .gengage-chat-product-details-img{touch-action:pan-y}.gengage-chat-product-gallery-thumbs{display:flex;gap:8px;padding:10px 0 4px;overflow-x:auto;scrollbar-width:thin;justify-content:center;width:100%}.gengage-chat-product-gallery-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;border:2px solid transparent;cursor:pointer;flex-shrink:0;transition:border-color .15s ease;background:#fff}.gengage-chat-product-gallery-thumb:hover{border-color:var(--gengage-border-color, #cbd5e1)}.gengage-chat-product-gallery-thumb--active{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-variants{margin-top:12px}.gengage-chat-product-variants-label{font-size:12px;font-weight:600;color:var(--gengage-text-muted, #64748b);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.gengage-chat-product-variants-list{display:flex;flex-wrap:wrap;gap:6px}.gengage-chat-product-variant-btn{padding:6px 12px;border:1px solid var(--gengage-border-color, #e2e8f0);border-radius:6px;background:var(--gengage-surface-color, #f8fafc);color:var(--gengage-text-color, #1e293b);font-size:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.gengage-chat-product-variant-btn:hover{background:var(--gengage-hover-color, #f1f5f9);border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-product-grid-wrapper{display:flex;flex-direction:column;gap:8px}.gengage-chat-product-sort-toolbar{display:flex;gap:4px;padding:4px;background:var(--gengage-surface-color, #f8fafc);border-radius:8px;border:1px solid var(--gengage-border-color, #e2e8f0)}.gengage-chat-product-sort-btn{flex:1;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.gengage-chat-product-sort-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-product-sort-btn--active,.gengage-chat-product-sort-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-product-sort-separator{width:1px;background:var(--gengage-border-color, #e2e8f0);margin:2px}.gengage-chat-comparison-toggle-btn{flex:none;padding:6px 10px;border:none;border-radius:6px;background:transparent;color:var(--gengage-text-muted, #64748b);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.gengage-chat-comparison-toggle-btn:hover{background:var(--gengage-hover-color, #f1f5f9);color:var(--gengage-text-color, #1e293b)}.gengage-chat-comparison-toggle-btn--active,.gengage-chat-comparison-toggle-btn--active:hover{background:var(--gengage-primary-color, #3b82f6);color:#fff}.gengage-chat-comparison-select-wrapper{position:relative}.gengage-chat-comparison-checkbox{position:absolute;top:8px;left:8px;z-index:2;width:18px;height:18px;cursor:pointer;accent-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-comparison-floating-btn{display:block;width:100%;margin-top:8px;padding:10px 16px;border:none;border-radius:8px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease;text-align:center}.gengage-chat-comparison-floating-btn:hover{background:var(--gengage-primary-hover, #2563eb)}.gengage-chat-panel-topbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--_gengage-border-color);background:#f8fafc;min-height:44px;flex-shrink:0;position:sticky;top:0;z-index:3}.gengage-chat-panel-topbar-back,.gengage-chat-panel-topbar-forward{width:28px;height:28px;min-width:28px;padding:0;border:1px solid #d1d5db;border-radius:6px;background:transparent;color:#374151;font-size:14px;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.gengage-chat-panel-topbar-back:hover:not(:disabled),.gengage-chat-panel-topbar-forward:hover:not(:disabled){background:#f3f4f6;border-color:#9ca3af}.gengage-chat-panel-topbar-back:disabled,.gengage-chat-panel-topbar-forward:disabled{opacity:.3;cursor:default}.gengage-chat-panel-topbar-title{flex:1;font-size:14px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}@keyframes gengage-typewriter-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-typewriter-block{display:block;animation:gengage-typewriter-fade-in .15s ease both}@media(prefers-reduced-motion:reduce){.gengage-chat-typewriter-block{animation:none}}.gengage-product-mention{color:var(--gengage-primary-color, #3b82f6);text-decoration:none;cursor:pointer;font-weight:500;border-bottom:1px dashed var(--gengage-primary-color, #3b82f6);transition:border-color .15s}.gengage-product-mention:hover{border-bottom-style:solid}@keyframes gengage-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.gengage-chat-panel-skeleton-block{animation:gengage-skeleton-pulse 1.5s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.gengage-chat-panel-skeleton-block{animation:none}}.gengage-chat-input-chips{display:flex;gap:6px;padding:4px 12px 2px;flex-wrap:wrap}.gengage-chat-input-chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:12px;border:1px solid var(--_gengage-border-color);background:#f9fafb;color:#374151;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.gengage-chat-input-chip:hover{background:#f3f4f6;border-color:#d1d5db}.gengage-chat-icon{width:14px;height:14px;flex-shrink:0}.gengage-chat-input-chip-icon,.gengage-chat-pill-icon{display:inline-flex;align-items:center;margin-right:4px}.gengage-chat-product-card-img-wrapper,.gengage-chat-product-details-img-wrap{position:relative;overflow:hidden}.gengage-chat-product-card-discount-badge{position:absolute;top:6px;left:6px;padding:2px 6px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:11px;font-weight:700;line-height:1.3;z-index:1}.gengage-chat-product-card-stock{font-size:11px;font-weight:600;margin-top:2px}.gengage-chat-product-card-stock.is-in-stock{color:var(--_gengage-success-color)}.gengage-chat-product-card-stock.is-out-of-stock{color:#dc2626}.gengage-chat-find-similar-pill{position:absolute;top:8px;right:8px;opacity:0;pointer-events:none;transition:opacity .2s ease;padding:4px 10px;font-size:11px;font-weight:500;font-family:inherit;border:none;border-radius:12px;background:var(--gengage-chat-pill-bg, rgba(0, 0, 0, .7));color:var(--gengage-chat-pill-text, #fff);cursor:pointer;white-space:nowrap;z-index:2}.gengage-chat-product-card-img-wrapper:hover .gengage-chat-find-similar-pill,.gengage-chat-product-details-img-wrap:hover .gengage-chat-find-similar-pill{opacity:1;pointer-events:auto}.gengage-chat-favorite-btn{position:absolute;top:8px;right:8px;background:#ffffffe6;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gengage-text-secondary, #64748b);z-index:3;transition:color .2s;padding:0}.gengage-chat-favorite-btn:hover,.gengage-chat-favorite-btn--active{color:var(--gengage-accent-primary, #ef4444)}.gengage-chat-product-card-promos,.gengage-chat-product-details-promos{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.gengage-chat-product-card-promo-badge,.gengage-chat-product-details-promo-badge{display:inline-block;padding:2px 6px;font-size:10px;font-weight:500;border-radius:4px;background:var(--gengage-chat-promo-bg, #e8f5e9);color:var(--gengage-chat-promo-text, #2e7d32);white-space:nowrap}.gengage-chat-thumbnails-column{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:2;pointer-events:auto}.gengage-chat-thumbnail-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:2px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden;transition:border-color .15s ease}.gengage-chat-thumbnail-btn:hover{border-color:var(--gengage-primary-color, #3b82f6)}.gengage-chat-thumbnail-img{width:100%;height:100%;object-fit:cover}.gengage-chat-choice-prompter{position:absolute;bottom:12px;right:12px;width:200px;padding:12px 14px;background:#fff;border:1px solid var(--_gengage-border-color);border-radius:10px;box-shadow:0 4px 12px #0000001a;z-index:10;animation:gengage-choice-prompter-in .2s ease}@keyframes gengage-choice-prompter-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.gengage-chat-choice-prompter-heading{font-size:13px;font-weight:600;color:#1f2937;margin-bottom:4px}.gengage-chat-choice-prompter-suggestion{font-size:12px;color:#6b7280;margin-bottom:10px;line-height:1.4}.gengage-chat-choice-prompter-cta{display:block;width:100%;padding:6px 12px;border:none;border-radius:6px;background:var(--gengage-primary-color, #3b82f6);color:#fff;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;text-align:center;transition:opacity .15s ease}.gengage-chat-choice-prompter-cta:hover{opacity:.9}.gengage-chat-choice-prompter-dismiss{position:absolute;top:4px;right:6px;padding:2px 6px;border:none;background:none;color:#6b7280;font-size:16px;cursor:pointer;line-height:1}.gengage-chat-choice-prompter-dismiss:hover{color:#6b7280}@media(prefers-reduced-motion:reduce){.gengage-chat-choice-prompter{animation:none}}.gengage-chat-pros-cons{padding:12px 14px;background:#f8fafc;border-radius:8px;margin:8px 0}.gengage-chat-pros-cons-heading{margin:0 0 10px;font-size:14px;font-weight:600;color:#0f172a}.gengage-chat-pros-cons-list{list-style:none;margin:0 0 8px;padding:0}.gengage-chat-pros-cons-list:last-child{margin-bottom:0}.gengage-chat-pros-cons-item{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:13px;line-height:1.5;color:#334155}.gengage-chat-pros-cons-icon{flex-shrink:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border-radius:50%}.gengage-chat-pros-cons-icon--pro{color:#16a34a;background:#dcfce7}.gengage-chat-pros-cons-icon--con{color:#dc2626;background:#fee2e2}.gengage-chat-categories{display:flex;flex-direction:column;gap:8px}.gengage-chat-categories-tabs{display:flex;gap:4px;overflow-x:auto;padding:4px 0;-webkit-overflow-scrolling:touch}.gengage-chat-categories-tab{padding:6px 14px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:20px;background:var(--gengage-bg, #fff);color:var(--gengage-text, #374151);cursor:pointer;white-space:nowrap;font-size:13px;transition:background .15s,color .15s}.gengage-chat-categories-tab:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-categories-tab--active{background:var(--gengage-primary, #2563eb);color:#fff;border-color:var(--gengage-primary, #2563eb)}.gengage-chat-categories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.gengage-chat-categories-filter-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.gengage-chat-categories-filter-tag{padding:4px 10px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:14px;background:var(--gengage-bg, #fff);color:var(--gengage-text-secondary, #6b7280);font-size:12px;cursor:pointer;transition:background .15s}.gengage-chat-categories-filter-tag:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid-view-more{display:block;width:100%;padding:10px;margin-top:8px;border:1px solid var(--gengage-border-color, #e5e7eb);border-radius:8px;background:var(--gengage-bg, #fff);color:var(--gengage-primary, #2563eb);font-size:14px;font-weight:500;cursor:pointer;text-align:center;transition:background .15s;grid-column:1 / -1}.gengage-chat-product-grid-view-more:hover{background:var(--gengage-bg-hover, #f3f4f6)}.gengage-chat-product-grid--mobile{display:flex;overflow-x:auto;gap:8px;padding:8px 0;-webkit-overflow-scrolling:touch}.gengage-chat-product-grid--mobile .gengage-chat-product-card{min-width:160px;max-width:180px;flex-shrink:0}.gengage-chat-comparison--mobile .gengage-chat-comparison-table,.gengage-chat-comparison--mobile .gengage-chat-comparison-table thead,.gengage-chat-comparison--mobile .gengage-chat-comparison-table tbody{display:block}.gengage-chat-comparison--mobile .gengage-chat-comparison-table tr{display:flex;flex-wrap:wrap}.gengage-chat-comparison-key-differences{margin-top:12px;padding:12px;background:var(--gengage-bg-secondary, #f9fafb);border-radius:8px}.gengage-chat-comparison-key-differences h4{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-comparison-key-differences-content{font-size:13px;color:var(--gengage-text-secondary, #6b7280);line-height:1.5}.gengage-chat-comparison-key-differences-content ul{margin:0;padding-left:18px}.gengage-chat-comparison-key-differences-content li{margin-bottom:4px}.gengage-chat-product-details-similars-heading{margin:16px 0 8px;font-size:15px;font-weight:600;color:var(--gengage-text, #374151)}.gengage-chat-product-details-similars{margin-top:8px}.gengage-chat-handoff-notice{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;margin:8px 0;background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;text-align:center}.gengage-chat-handoff-notice-icon{font-size:24px}.gengage-chat-handoff-notice-heading{margin:0;font-size:14px;font-weight:600;color:#92400e}.gengage-chat-handoff-notice-summary{margin:0;font-size:13px;line-height:1.5;color:#78350f}.gengage-qty-stepper{display:inline-flex;align-items:center;gap:0;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;background:#fff}.gengage-qty-btn{width:var(--_gengage-qty-btn-size);height:var(--_gengage-qty-btn-size);border:none;background:transparent;color:#374151;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .12s}.gengage-qty-btn:hover:not(:disabled){background:#f3f4f6}.gengage-qty-btn:disabled{opacity:.35;cursor:default}.gengage-qty-value{min-width:24px;text-align:center;font-size:13px;font-weight:600;color:#1f2937;-webkit-user-select:none;user-select:none}.gengage-qty-submit{border:none;border-left:1px solid #d1d5db;background:var(--_gengage-success-color);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;padding:6px 12px;transition:filter .12s ease,transform .12s ease}.gengage-qty-submit:hover{filter:brightness(1.08)}.gengage-qty-submit:active{transform:translateY(1px)}.gengage-qty-stepper--compact{border-radius:14px;box-shadow:0 2px 6px #0000001f}.gengage-qty-stepper--compact .gengage-qty-btn{width:var(--_gengage-qty-btn-size-compact);height:var(--_gengage-qty-btn-size-compact);font-size:12px}.gengage-qty-stepper--compact .gengage-qty-value{min-width:18px;font-size:12px}.gengage-qty-stepper--compact .gengage-qty-submit{padding:4px 8px;font-size:13px;border-radius:0 14px 14px 0}.gengage-chat-product-details-atc-stepper{border-radius:10px}.gengage-chat-product-details-atc-stepper .gengage-qty-btn{width:32px;height:32px}.gengage-chat-product-details-atc-stepper .gengage-qty-value{min-width:28px;font-size:14px}.gengage-chat-product-details-atc-stepper .gengage-qty-submit{padding:8px 18px;font-size:14px;border-radius:0 10px 10px 0}.gengage-chat-product-details-share{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #d1d5db;border-radius:10px;background:transparent;color:#6b7280;cursor:pointer;transition:color .12s,border-color .12s,background-color .12s;position:relative;flex-shrink:0}.gengage-chat-product-details-share:hover{color:var(--gengage-primary-color, #3b82f6);border-color:var(--gengage-primary-color, #3b82f6);background:#f0f7ff}.gengage-chat-product-details-share:before{content:attr(aria-label);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background:#1e293b;color:#fff;font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:2}.gengage-chat-product-details-share:hover:before{opacity:1}.gengage-chat-product-details-share--copied:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--_gengage-success-color);color:#fff;border-radius:10px;font-size:16px;font-weight:700}.gengage-chat-launcher:focus-visible,.gengage-chat-close:focus-visible,.gengage-chat-header-btn:focus-visible,.gengage-chat-header-powered:focus-visible,.gengage-chat-proactive-accept:focus-visible,.gengage-chat-proactive-dismiss:focus-visible,.gengage-chat-send:focus-visible,.gengage-chat-action-btn:focus-visible,.gengage-chat-pill:focus-visible,.gengage-chat-input-chip:focus-visible,.gengage-chat-pills-arrow:focus-visible,.gengage-chat-error-retry:focus-visible,.gengage-chat-product-card-cta:focus-visible,.gengage-chat-product-details-cta:focus-visible,.gengage-chat-product-details-atc:focus-visible,.gengage-chat-product-detail-tab:focus-visible,.gengage-chat-panel-divider-toggle:focus-visible,.gengage-chat-panel-topbar-back:focus-visible,.gengage-chat-panel-topbar-forward:focus-visible,.gengage-chat-rollback-btn:focus-visible,.gengage-chat-ai-toppick-cta:focus-visible,.gengage-chat-comparison-view-btn:focus-visible,.gengage-chat-comparison-toggle-btn:focus-visible,.gengage-chat-comparison-floating-btn:focus-visible,.gengage-chat-comparison-checkbox:focus-visible,.gengage-chat-product-sort-btn:focus-visible,.gengage-chat-product-variant-btn:focus-visible,.gengage-chat-product-gallery-thumb:focus-visible,.gengage-chat-thumbnail-btn:focus-visible,.gengage-chat-find-similar-pill:focus-visible,.gengage-chat-favorite-btn:focus-visible,.gengage-chat-attach-btn:focus-visible,.gengage-chat-mic-btn:focus-visible,.gengage-chat-attachment-remove:focus-visible,.gengage-chat-kvkk-dismiss:focus-visible,.gengage-chat-choice-prompter-cta:focus-visible,.gengage-chat-choice-prompter-dismiss:focus-visible,.gengage-chat-categories-tab:focus-visible,.gengage-chat-categories-filter-tag:focus-visible,.gengage-chat-product-grid-view-more:focus-visible,.gengage-chat-product-details-share:focus-visible,.gengage-qty-btn:focus-visible,.gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}', Oa = N({
|
|
3062
|
+
role: xe(["user", "assistant"]),
|
|
3063
|
+
content: b(),
|
|
3063
3064
|
timestamp: Y().optional()
|
|
3064
|
-
}), qa =
|
|
3065
|
-
sku:
|
|
3066
|
-
name:
|
|
3067
|
-
imageUrl:
|
|
3068
|
-
price:
|
|
3069
|
-
originalPrice:
|
|
3070
|
-
url:
|
|
3065
|
+
}), qa = N({
|
|
3066
|
+
sku: b(),
|
|
3067
|
+
name: b(),
|
|
3068
|
+
imageUrl: b().url().optional(),
|
|
3069
|
+
price: b().optional(),
|
|
3070
|
+
originalPrice: b().optional(),
|
|
3071
|
+
url: b().url(),
|
|
3071
3072
|
/** Override CTA label (default: "View product") */
|
|
3072
|
-
ctaLabel:
|
|
3073
|
-
}), ja =
|
|
3073
|
+
ctaLabel: b().optional()
|
|
3074
|
+
}), ja = N({
|
|
3074
3075
|
buttons: B(
|
|
3075
|
-
|
|
3076
|
-
label:
|
|
3076
|
+
N({
|
|
3077
|
+
label: b(),
|
|
3077
3078
|
/** Opaque action payload forwarded to the backend when clicked. */
|
|
3078
|
-
action:
|
|
3079
|
-
title:
|
|
3080
|
-
type:
|
|
3081
|
-
payload:
|
|
3079
|
+
action: N({
|
|
3080
|
+
title: b(),
|
|
3081
|
+
type: b(),
|
|
3082
|
+
payload: G().optional()
|
|
3082
3083
|
})
|
|
3083
3084
|
})
|
|
3084
3085
|
)
|
|
3085
|
-
}), Va =
|
|
3086
|
-
label:
|
|
3087
|
-
}),
|
|
3088
|
-
sku:
|
|
3089
|
-
name:
|
|
3090
|
-
price:
|
|
3091
|
-
imageUrl:
|
|
3086
|
+
}), Va = N({}), $a = N({
|
|
3087
|
+
label: b().optional()
|
|
3088
|
+
}), fe = N({
|
|
3089
|
+
sku: b(),
|
|
3090
|
+
name: b(),
|
|
3091
|
+
price: b(),
|
|
3092
|
+
imageUrl: b().optional(),
|
|
3092
3093
|
rating: Y().optional(),
|
|
3093
3094
|
reviewCount: Y().optional()
|
|
3094
|
-
}),
|
|
3095
|
-
recommended:
|
|
3096
|
-
products: B(
|
|
3095
|
+
}), Ga = N({
|
|
3096
|
+
recommended: fe,
|
|
3097
|
+
products: B(fe),
|
|
3097
3098
|
attributes: B(
|
|
3098
|
-
|
|
3099
|
-
label:
|
|
3100
|
-
values: B(
|
|
3099
|
+
N({
|
|
3100
|
+
label: b(),
|
|
3101
|
+
values: B(b())
|
|
3101
3102
|
})
|
|
3102
3103
|
),
|
|
3103
|
-
highlights: B(
|
|
3104
|
-
specialCases: B(
|
|
3105
|
-
recommendedText:
|
|
3104
|
+
highlights: B(b()),
|
|
3105
|
+
specialCases: B(b()).optional(),
|
|
3106
|
+
recommendedText: b().optional(),
|
|
3106
3107
|
winnerHits: ae(
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
positive: B(
|
|
3110
|
-
negative: B(
|
|
3108
|
+
b(),
|
|
3109
|
+
N({
|
|
3110
|
+
positive: B(b()).optional(),
|
|
3111
|
+
negative: B(b()).optional()
|
|
3111
3112
|
})
|
|
3112
3113
|
).optional(),
|
|
3113
3114
|
productActions: ae(
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
title:
|
|
3117
|
-
type:
|
|
3118
|
-
payload:
|
|
3115
|
+
b(),
|
|
3116
|
+
N({
|
|
3117
|
+
title: b(),
|
|
3118
|
+
type: b(),
|
|
3119
|
+
payload: G().optional()
|
|
3119
3120
|
})
|
|
3120
3121
|
).optional()
|
|
3121
|
-
}), Ka =
|
|
3122
|
-
label:
|
|
3123
|
-
sentiment:
|
|
3124
|
-
}), Wa =
|
|
3125
|
-
product: ae(
|
|
3126
|
-
role:
|
|
3127
|
-
reason:
|
|
3122
|
+
}), Ka = N({
|
|
3123
|
+
label: b(),
|
|
3124
|
+
sentiment: xe(["positive", "negative", "neutral"]).optional()
|
|
3125
|
+
}), Wa = N({
|
|
3126
|
+
product: ae(b(), G()),
|
|
3127
|
+
role: b().optional(),
|
|
3128
|
+
reason: b().optional(),
|
|
3128
3129
|
labels: B(Ka).optional(),
|
|
3129
3130
|
expertQualityScore: Y().optional(),
|
|
3130
|
-
reviewHighlight:
|
|
3131
|
-
action:
|
|
3132
|
-
title:
|
|
3133
|
-
type:
|
|
3134
|
-
payload:
|
|
3131
|
+
reviewHighlight: b().optional(),
|
|
3132
|
+
action: N({
|
|
3133
|
+
title: b(),
|
|
3134
|
+
type: b(),
|
|
3135
|
+
payload: G().optional()
|
|
3135
3136
|
}).optional()
|
|
3136
|
-
}), Ya =
|
|
3137
|
+
}), Ya = N({
|
|
3137
3138
|
suggestions: B(Wa)
|
|
3138
|
-
}), Qa =
|
|
3139
|
-
title:
|
|
3140
|
-
text:
|
|
3141
|
-
reviewCount:
|
|
3142
|
-
action:
|
|
3143
|
-
}), Xa =
|
|
3139
|
+
}), Qa = N({
|
|
3140
|
+
title: b().optional(),
|
|
3141
|
+
text: b().optional(),
|
|
3142
|
+
reviewCount: b().optional(),
|
|
3143
|
+
action: N({ title: b(), type: b(), payload: G().optional() })
|
|
3144
|
+
}), Xa = N({
|
|
3144
3145
|
entries: B(
|
|
3145
|
-
|
|
3146
|
-
name:
|
|
3147
|
-
image:
|
|
3148
|
-
description:
|
|
3149
|
-
action:
|
|
3146
|
+
N({
|
|
3147
|
+
name: b(),
|
|
3148
|
+
image: b().optional(),
|
|
3149
|
+
description: b().optional(),
|
|
3150
|
+
action: N({ title: b(), type: b(), payload: G().optional() })
|
|
3150
3151
|
})
|
|
3151
3152
|
)
|
|
3152
|
-
}), Ja =
|
|
3153
|
+
}), Ja = N({
|
|
3153
3154
|
entries: B(
|
|
3154
|
-
|
|
3155
|
-
shortName:
|
|
3156
|
-
detailedMessage:
|
|
3157
|
-
whyDifferent:
|
|
3158
|
-
image:
|
|
3159
|
-
action:
|
|
3155
|
+
N({
|
|
3156
|
+
shortName: b(),
|
|
3157
|
+
detailedMessage: b().optional(),
|
|
3158
|
+
whyDifferent: b().optional(),
|
|
3159
|
+
image: b().optional(),
|
|
3160
|
+
action: N({ title: b(), type: b(), payload: G().optional() })
|
|
3160
3161
|
})
|
|
3161
3162
|
)
|
|
3162
|
-
}),
|
|
3163
|
-
title:
|
|
3164
|
-
type:
|
|
3165
|
-
payload:
|
|
3166
|
-
}), Za =
|
|
3167
|
-
name:
|
|
3168
|
-
variant_name:
|
|
3169
|
-
sku:
|
|
3170
|
-
price: re([Y(),
|
|
3171
|
-
}), en =
|
|
3172
|
-
product:
|
|
3173
|
-
sku:
|
|
3174
|
-
name:
|
|
3175
|
-
images: B(
|
|
3176
|
-
imageUrl:
|
|
3163
|
+
}), Ae = N({
|
|
3164
|
+
title: b(),
|
|
3165
|
+
type: b(),
|
|
3166
|
+
payload: G().optional()
|
|
3167
|
+
}), Za = N({
|
|
3168
|
+
name: b().optional(),
|
|
3169
|
+
variant_name: b().optional(),
|
|
3170
|
+
sku: b().optional(),
|
|
3171
|
+
price: re([Y(), b()]).optional()
|
|
3172
|
+
}), en = N({
|
|
3173
|
+
product: N({
|
|
3174
|
+
sku: b().optional(),
|
|
3175
|
+
name: b().optional(),
|
|
3176
|
+
images: B(b()).optional(),
|
|
3177
|
+
imageUrl: b().optional(),
|
|
3177
3178
|
rating: Y().optional(),
|
|
3178
3179
|
reviewCount: Y().optional(),
|
|
3179
|
-
price:
|
|
3180
|
-
originalPrice:
|
|
3180
|
+
price: b().optional(),
|
|
3181
|
+
originalPrice: b().optional(),
|
|
3181
3182
|
price_async: oe().optional(),
|
|
3182
3183
|
inStock: oe().optional(),
|
|
3183
|
-
promotions: B(
|
|
3184
|
+
promotions: B(b()).optional(),
|
|
3184
3185
|
variants: B(Za).optional(),
|
|
3185
|
-
url:
|
|
3186
|
-
cartCode:
|
|
3187
|
-
description:
|
|
3188
|
-
specifications: re([ae(
|
|
3186
|
+
url: b().optional(),
|
|
3187
|
+
cartCode: b().optional(),
|
|
3188
|
+
description: b().optional(),
|
|
3189
|
+
specifications: re([ae(b(), b()), B(N({ key: b(), value: b() }))]).optional()
|
|
3189
3190
|
}).optional(),
|
|
3190
|
-
action:
|
|
3191
|
-
}), tn =
|
|
3191
|
+
action: Ae.optional()
|
|
3192
|
+
}), tn = N({
|
|
3192
3193
|
endOfList: oe().optional()
|
|
3193
|
-
}), an =
|
|
3194
|
-
review_class:
|
|
3195
|
-
review_text:
|
|
3196
|
-
review_rating: re([
|
|
3197
|
-
review_tag:
|
|
3198
|
-
}), nn =
|
|
3194
|
+
}), an = N({
|
|
3195
|
+
review_class: b().optional(),
|
|
3196
|
+
review_text: b().optional(),
|
|
3197
|
+
review_rating: re([b(), Y()]).optional(),
|
|
3198
|
+
review_tag: b().optional()
|
|
3199
|
+
}), nn = N({
|
|
3199
3200
|
reviews: B(an).optional()
|
|
3200
|
-
}), on =
|
|
3201
|
-
productName:
|
|
3202
|
-
pros: B(
|
|
3203
|
-
cons: B(
|
|
3204
|
-
}), rn =
|
|
3201
|
+
}), on = N({
|
|
3202
|
+
productName: b().optional(),
|
|
3203
|
+
pros: B(b()).optional(),
|
|
3204
|
+
cons: B(b()).optional()
|
|
3205
|
+
}), rn = N({
|
|
3205
3206
|
groups: B(
|
|
3206
|
-
|
|
3207
|
-
groupName:
|
|
3208
|
-
products: B(ae(
|
|
3207
|
+
N({
|
|
3208
|
+
groupName: b(),
|
|
3209
|
+
products: B(ae(b(), G())).optional()
|
|
3209
3210
|
})
|
|
3210
3211
|
).optional(),
|
|
3211
3212
|
filterTags: B(
|
|
3212
|
-
|
|
3213
|
-
title:
|
|
3214
|
-
action:
|
|
3213
|
+
N({
|
|
3214
|
+
title: b(),
|
|
3215
|
+
action: Ae.optional()
|
|
3215
3216
|
})
|
|
3216
3217
|
).optional()
|
|
3217
|
-
}), sn =
|
|
3218
|
-
summary:
|
|
3219
|
-
products_discussed: B(
|
|
3220
|
-
user_sentiment:
|
|
3218
|
+
}), sn = N({
|
|
3219
|
+
summary: b().optional(),
|
|
3220
|
+
products_discussed: B(b()).optional(),
|
|
3221
|
+
user_sentiment: b().optional()
|
|
3221
3222
|
}), pn = {
|
|
3222
3223
|
components: {
|
|
3223
3224
|
MessageBubble: {
|
|
@@ -3237,11 +3238,11 @@ const Fa = ':host{all:initial;font-family:var(--gengage-font-family, -apple-syst
|
|
|
3237
3238
|
description: "An animated indicator shown while the assistant is typing."
|
|
3238
3239
|
},
|
|
3239
3240
|
Divider: {
|
|
3240
|
-
schema:
|
|
3241
|
+
schema: $a,
|
|
3241
3242
|
description: "A horizontal rule with an optional label."
|
|
3242
3243
|
},
|
|
3243
3244
|
ComparisonTable: {
|
|
3244
|
-
schema:
|
|
3245
|
+
schema: Ga,
|
|
3245
3246
|
description: "A product comparison table with recommended pick, attribute rows, and highlights."
|
|
3246
3247
|
},
|
|
3247
3248
|
AITopPicks: {
|
|
@@ -3292,7 +3293,7 @@ function cn(o) {
|
|
|
3292
3293
|
function te(o) {
|
|
3293
3294
|
return typeof o == "object" && o !== null && typeof o.type == "string";
|
|
3294
3295
|
}
|
|
3295
|
-
class ln extends
|
|
3296
|
+
class ln extends De {
|
|
3296
3297
|
constructor() {
|
|
3297
3298
|
super(...arguments), this._shadow = null, this._rootEl = null, this._launcher = null, this._drawer = null, this._bridge = null, this._activityTracker = null, this._heartbeat = null, this._proactiveShown = !1, this._drawerVisible = !1, this._messages = [], this._currentMessageId = 0, this._abortControllers = /* @__PURE__ */ new Set(), this._currentThreadId = null, this._lastThreadId = null, this._chatCreatedAt = "", this._lastBackendContext = null, this._productSort = { type: "related" }, this._comparisonSelectMode = !1, this._comparisonSelectedSkus = [], this._thumbnailEntries = [], this._choicePrompterEl = null, this._openState = "full", this._mobileBreakpoint = 768, this._isMobileViewport = !1, this._pdpLaunched = !1, this._i18n = ce, this._extendedModeManager = null, this._activeTypewriter = null, this._activeTtsHandle = null, this._activeRequestThreadId = null, this._skuToProductItem = {}, this._conversationMode = null, this._initComplete = !1, this._pendingActions = [], this._bridgeContext = null, this._cartQuantity = null, this._threadsWithFirstBot = /* @__PURE__ */ new Set(), this._panel = null, this._session = null, this._eventCallbacks = /* @__PURE__ */ new Map();
|
|
3298
3299
|
}
|
|
@@ -3314,7 +3315,7 @@ class ln extends ze {
|
|
|
3314
3315
|
const i = document.createElement("div");
|
|
3315
3316
|
a.appendChild(i), this._drawer = new Bt(i, {
|
|
3316
3317
|
i18n: this._i18n,
|
|
3317
|
-
onSend: (c,
|
|
3318
|
+
onSend: (c, p) => this._sendMessage(c, p),
|
|
3318
3319
|
onClose: () => this.close(),
|
|
3319
3320
|
onAttachment: (c) => this._handleAttachment(c),
|
|
3320
3321
|
onPanelToggle: () => {
|
|
@@ -3329,7 +3330,7 @@ class ln extends ze {
|
|
|
3329
3330
|
headerCartUrl: e.headerCartUrl,
|
|
3330
3331
|
headerFavoritesToggle: e.headerFavoritesToggle,
|
|
3331
3332
|
onFavoritesClick: () => {
|
|
3332
|
-
|
|
3333
|
+
Re(), e.onFavoritesClick?.();
|
|
3333
3334
|
},
|
|
3334
3335
|
onThumbnailClick: (c) => this._rollbackToThread(c),
|
|
3335
3336
|
onLinkClick: (c) => {
|
|
@@ -3353,19 +3354,19 @@ class ln extends ze {
|
|
|
3353
3354
|
s && l && (sessionStorage.removeItem("gengage_restore_session_id"), sessionStorage.removeItem("gengage_restore_sku"));
|
|
3354
3355
|
try {
|
|
3355
3356
|
const c = new La();
|
|
3356
|
-
await c.open(), this._session = new
|
|
3357
|
+
await c.open(), this._session = new ue(c), await this._restoreFromIndexedDB();
|
|
3357
3358
|
} catch {
|
|
3358
|
-
this._session = new
|
|
3359
|
+
this._session = new ue(null);
|
|
3359
3360
|
}
|
|
3360
3361
|
this._registerPublicAPI(), e.mobileInitialState !== void 0 && (this._openState = e.mobileInitialState), this._mobileBreakpoint = e.mobileBreakpoint ?? 768, this._syncViewportState();
|
|
3361
3362
|
const g = () => this._syncViewportState();
|
|
3362
3363
|
if (window.addEventListener("resize", g, { passive: !0 }), this.addCleanup(() => window.removeEventListener("resize", g)), window.visualViewport) {
|
|
3363
3364
|
const c = () => {
|
|
3364
3365
|
if (!this._drawerVisible || !this._isMobileViewport) return;
|
|
3365
|
-
const
|
|
3366
|
-
if (!
|
|
3367
|
-
const
|
|
3368
|
-
|
|
3366
|
+
const p = this._drawer?.getElement();
|
|
3367
|
+
if (!p) return;
|
|
3368
|
+
const h = window.innerHeight - (window.visualViewport?.height ?? window.innerHeight);
|
|
3369
|
+
p.style.setProperty("--gengage-keyboard-offset", `${Math.max(0, h)}px`);
|
|
3369
3370
|
};
|
|
3370
3371
|
window.visualViewport.addEventListener("resize", c), this.addCleanup(() => window.visualViewport?.removeEventListener("resize", c));
|
|
3371
3372
|
}
|
|
@@ -3376,8 +3377,8 @@ class ln extends ze {
|
|
|
3376
3377
|
idleThresholdMs: e.proactiveDelayMs ?? 3e4,
|
|
3377
3378
|
onActivity: (c) => {
|
|
3378
3379
|
if (c.type === "idle" && !this._proactiveShown && !this._drawerVisible) {
|
|
3379
|
-
const
|
|
3380
|
-
if (
|
|
3380
|
+
const p = e.proactiveMinScrollDepth ?? 0;
|
|
3381
|
+
if (p > 0 && (this._activityTracker?.maxScrollDepth ?? 0) < p * 100)
|
|
3381
3382
|
return;
|
|
3382
3383
|
try {
|
|
3383
3384
|
if (sessionStorage.getItem("gengage_proactive_shown")) return;
|
|
@@ -3397,27 +3398,27 @@ class ln extends ze {
|
|
|
3397
3398
|
getCurrentSku: () => this.config.pageContext?.sku ?? "",
|
|
3398
3399
|
onMessage: (c) => {
|
|
3399
3400
|
if (!this._proactiveShown && !this._drawerVisible && c.message) {
|
|
3400
|
-
const
|
|
3401
|
+
const p = [];
|
|
3401
3402
|
if (c.suggested_actions && Array.isArray(c.suggested_actions))
|
|
3402
|
-
for (const
|
|
3403
|
-
|
|
3404
|
-
title:
|
|
3403
|
+
for (const h of c.suggested_actions)
|
|
3404
|
+
h.title && te(h.requestDetails) && p.push({
|
|
3405
|
+
title: h.title,
|
|
3405
3406
|
onSelect: () => {
|
|
3406
|
-
this.openWithAction(
|
|
3407
|
+
this.openWithAction(h.requestDetails);
|
|
3407
3408
|
}
|
|
3408
3409
|
});
|
|
3409
|
-
this._showProactivePopup(c.message,
|
|
3410
|
+
this._showProactivePopup(c.message, p.length > 0 ? p : void 0);
|
|
3410
3411
|
}
|
|
3411
3412
|
}
|
|
3412
3413
|
}), this._heartbeat.start(), this.addCleanup(() => this._heartbeat?.destroy())), this._initComplete = !0;
|
|
3413
3414
|
for (const c of this._pendingActions)
|
|
3414
3415
|
this._sendAction(c.action, c.options);
|
|
3415
|
-
this._pendingActions = [], O("gengage:chat:ready", {}),
|
|
3416
|
+
this._pendingActions = [], O("gengage:chat:ready", {}), Ue("chat"), e.onReady?.();
|
|
3416
3417
|
}
|
|
3417
3418
|
onUpdate(e) {
|
|
3418
3419
|
}
|
|
3419
3420
|
onShow() {
|
|
3420
|
-
this._showDrawer(), this.emit("open"), O("gengage:chat:open", { state: this._openState }),
|
|
3421
|
+
this._showDrawer(), this.emit("open"), O("gengage:chat:open", { state: this._openState }), He("chat"), this.config.onOpen?.(), !this._pdpLaunched && this.config.pageContext?.sku && (this._pdpLaunched = !0, this._sendAction(
|
|
3421
3422
|
{
|
|
3422
3423
|
title: "",
|
|
3423
3424
|
type: "launchSingleProduct",
|
|
@@ -3596,11 +3597,11 @@ class ln extends ze {
|
|
|
3596
3597
|
for (const l of i.actions) {
|
|
3597
3598
|
const g = l, c = g.title;
|
|
3598
3599
|
if (c && te(g.requestDetails)) {
|
|
3599
|
-
const
|
|
3600
|
+
const p = g.requestDetails;
|
|
3600
3601
|
s.push({
|
|
3601
3602
|
title: c,
|
|
3602
3603
|
onSelect: () => {
|
|
3603
|
-
this.openWithAction(
|
|
3604
|
+
this.openWithAction(p);
|
|
3604
3605
|
}
|
|
3605
3606
|
});
|
|
3606
3607
|
}
|
|
@@ -3662,7 +3663,7 @@ class ln extends ze {
|
|
|
3662
3663
|
this._drawer?.stageAttachment(e);
|
|
3663
3664
|
}
|
|
3664
3665
|
_sendMessage(e, t) {
|
|
3665
|
-
|
|
3666
|
+
Fe(), this._messages.some((i) => i.role === "user") || Oe();
|
|
3666
3667
|
const n = {
|
|
3667
3668
|
title: e,
|
|
3668
3669
|
type: "user_message",
|
|
@@ -3676,12 +3677,12 @@ class ln extends ze {
|
|
|
3676
3677
|
return;
|
|
3677
3678
|
}
|
|
3678
3679
|
if (this._choicePrompterEl?.remove(), this._choicePrompterEl = null, this._currentThreadId && this._lastThreadId && this._lastThreadId > this._currentThreadId) {
|
|
3679
|
-
const
|
|
3680
|
-
this._messages = this._messages.filter((
|
|
3681
|
-
for (const
|
|
3682
|
-
this._shadow?.querySelector(`[data-message-id="${CSS.escape(
|
|
3683
|
-
this._shadow?.querySelectorAll("[data-thread-id]")?.forEach((
|
|
3684
|
-
|
|
3680
|
+
const m = this._currentThreadId, f = this._messages.filter((C) => C.threadId !== void 0 && C.threadId > m);
|
|
3681
|
+
this._messages = this._messages.filter((C) => !C.threadId || C.threadId <= m);
|
|
3682
|
+
for (const C of f)
|
|
3683
|
+
this._shadow?.querySelector(`[data-message-id="${CSS.escape(C.id)}"]`)?.remove(), this._panel.snapshots.delete(C.id), this._panel.snapshotTypes.delete(C.id);
|
|
3684
|
+
this._shadow?.querySelectorAll("[data-thread-id]")?.forEach((C) => {
|
|
3685
|
+
C instanceof HTMLElement && C.dataset.threadId && C.dataset.threadId > m && C.remove();
|
|
3685
3686
|
});
|
|
3686
3687
|
}
|
|
3687
3688
|
this._drawer?.setPills([]), this._drawer?.clearInputAreaChips(), this._bridge?.send("isResponding", !0);
|
|
@@ -3689,22 +3690,22 @@ class ln extends ze {
|
|
|
3689
3690
|
this._currentThreadId = a, this._lastThreadId = a;
|
|
3690
3691
|
const n = t?.preservePanel === !0;
|
|
3691
3692
|
if (n || (this._activeRequestThreadId = a), !t?.silent) {
|
|
3692
|
-
const
|
|
3693
|
-
|
|
3693
|
+
const m = this._createMessage("user", typeof e.payload == "string" ? e.payload : e.title);
|
|
3694
|
+
m.threadId = a, t?.attachment !== void 0 && (m.attachment = t.attachment), this._drawer?.addMessage(m), this._messages.push(m);
|
|
3694
3695
|
}
|
|
3695
3696
|
t?.preservePanel || (this._drawer?.hasPanelContent() ? this._drawer.showPanelLoading() : this._drawer?.clearPanel()), this._drawer?.showTypingIndicator();
|
|
3696
3697
|
let i = "";
|
|
3697
3698
|
const r = this._createMessage("assistant", "");
|
|
3698
|
-
r.threadId = a, r.status = "streaming", this._messages.push(r), t?.preservePanel || (this._abortControllers.forEach((
|
|
3699
|
+
r.threadId = a, r.status = "streaming", this._messages.push(r), t?.preservePanel || (this._abortControllers.forEach((m) => m.abort()), this._abortControllers.clear());
|
|
3699
3700
|
const s = {
|
|
3700
3701
|
middlewareUrl: this.config.middlewareUrl,
|
|
3701
3702
|
...this.config.backendType ? { backendType: this.config.backendType } : {},
|
|
3702
3703
|
...this.config.accountId ? { accountId: this.config.accountId } : {}
|
|
3703
3704
|
};
|
|
3704
3705
|
t?.attachment !== void 0 && (s.attachment = t.attachment);
|
|
3705
|
-
const g = this._getVisibleMessages().filter((
|
|
3706
|
-
role:
|
|
3707
|
-
content:
|
|
3706
|
+
const g = this._getVisibleMessages().filter((m) => m.content).slice(-50).map((m) => ({
|
|
3707
|
+
role: m.role === "user" ? "user" : "model",
|
|
3708
|
+
content: m.content ?? ""
|
|
3708
3709
|
})), c = {
|
|
3709
3710
|
outputLanguage: Ha(this.config.locale),
|
|
3710
3711
|
parentUrl: window.location.href,
|
|
@@ -3716,22 +3717,22 @@ class ln extends ze {
|
|
|
3716
3717
|
appId: this.config.accountId,
|
|
3717
3718
|
threads: [],
|
|
3718
3719
|
createdAt: this._chatCreatedAt,
|
|
3719
|
-
kvkkApproved:
|
|
3720
|
+
kvkkApproved: me(this.config.accountId),
|
|
3720
3721
|
voiceEnabled: this.config.voiceEnabled ?? !1,
|
|
3721
3722
|
threadId: a,
|
|
3722
3723
|
isControlGroup: this.config.session?.abTestVariant === "control",
|
|
3723
3724
|
isMobile: this._isMobileViewport
|
|
3724
3725
|
};
|
|
3725
3726
|
this.config.session?.viewId !== void 0 && (c.viewId = this.config.session.viewId);
|
|
3726
|
-
const
|
|
3727
|
+
const p = bt(e, {
|
|
3727
3728
|
pageContext: this.config.pageContext,
|
|
3728
3729
|
backendContext: this._lastBackendContext,
|
|
3729
3730
|
isMobile: this._isMobileViewport
|
|
3730
|
-
}),
|
|
3731
|
+
}), h = {
|
|
3731
3732
|
account_id: this.config.accountId,
|
|
3732
3733
|
session_id: this.config.session?.sessionId ?? "",
|
|
3733
3734
|
correlation_id: this.config.session?.sessionId ?? "",
|
|
3734
|
-
type:
|
|
3735
|
+
type: p.type,
|
|
3735
3736
|
locale: this.config.locale ?? "tr",
|
|
3736
3737
|
meta: c,
|
|
3737
3738
|
context: {
|
|
@@ -3745,63 +3746,63 @@ class ln extends ze {
|
|
|
3745
3746
|
session_id: this.config.session?.sessionId ?? ""
|
|
3746
3747
|
}
|
|
3747
3748
|
};
|
|
3748
|
-
this.config.session?.userId !== void 0 && (
|
|
3749
|
+
this.config.session?.userId !== void 0 && (h.user_id = this.config.session.userId), this.config.session?.viewId !== void 0 && (h.view_id = this.config.session.viewId), p.payload !== void 0 && (h.payload = p.payload), this.config.pageContext?.sku !== void 0 && (h.sku = this.config.pageContext.sku), this.config.pageContext?.pageType !== void 0 && (h.page_type = this.config.pageContext.pageType);
|
|
3749
3750
|
const d = crypto.randomUUID(), v = Date.now();
|
|
3750
|
-
let
|
|
3751
|
+
let _ = 0, x = !1, L = !1;
|
|
3751
3752
|
this.track(
|
|
3752
|
-
|
|
3753
|
+
qe(this.analyticsContext(), {
|
|
3753
3754
|
endpoint: "process_action",
|
|
3754
3755
|
request_id: d,
|
|
3755
3756
|
widget: "chat"
|
|
3756
3757
|
})
|
|
3757
3758
|
);
|
|
3758
|
-
let
|
|
3759
|
-
|
|
3760
|
-
|
|
3759
|
+
let T = null;
|
|
3760
|
+
T = yt(
|
|
3761
|
+
h,
|
|
3761
3762
|
{
|
|
3762
|
-
onTextChunk: (
|
|
3763
|
-
if (!n && a !== this._activeRequestThreadId || (i +=
|
|
3763
|
+
onTextChunk: (m, f, y) => {
|
|
3764
|
+
if (!n && a !== this._activeRequestThreadId || (i += m, this._drawer?.removeTypingIndicator(), y?.skuToProductItem && (this._skuToProductItem = { ...this._skuToProductItem, ...y.skuToProductItem }), y?.conversationMode && (this._conversationMode = y.conversationMode), this.track(
|
|
3764
3765
|
rt(this.analyticsContext(), {
|
|
3765
3766
|
request_id: d,
|
|
3766
|
-
chunk_index:
|
|
3767
|
+
chunk_index: _++,
|
|
3767
3768
|
widget: "chat"
|
|
3768
3769
|
})
|
|
3769
3770
|
), !this._drawer)) return;
|
|
3770
|
-
let
|
|
3771
|
-
if (
|
|
3771
|
+
let C = i;
|
|
3772
|
+
if (f && le(C)) {
|
|
3772
3773
|
const u = this.config.accountId;
|
|
3773
|
-
if (!
|
|
3774
|
-
const
|
|
3775
|
-
|
|
3774
|
+
if (!me(u)) {
|
|
3775
|
+
const w = Ra(C);
|
|
3776
|
+
w && this._drawer?.showKvkkBanner(w, () => {
|
|
3776
3777
|
this._drawer?.hideKvkkBanner();
|
|
3777
3778
|
}), za(u);
|
|
3778
3779
|
}
|
|
3779
|
-
|
|
3780
|
+
C = Da(C);
|
|
3780
3781
|
}
|
|
3781
3782
|
const A = this._shadow?.querySelector(
|
|
3782
3783
|
`[data-message-id="${r.id}"] .gengage-chat-bubble-text`
|
|
3783
3784
|
);
|
|
3784
|
-
if (A ? A.innerHTML = Z(
|
|
3785
|
-
r.content =
|
|
3785
|
+
if (A ? A.innerHTML = Z(C) : (r.content = C, r.role === "assistant" && r.threadId && !this._threadsWithFirstBot.has(r.threadId) && (this._threadsWithFirstBot.add(r.threadId), this._drawer.markFirstBotMessage(r.id)), this._drawer.addMessage(r)), f) {
|
|
3786
|
+
r.content = C, r.status = "done", de();
|
|
3786
3787
|
const u = this._shadow?.querySelector(
|
|
3787
3788
|
`[data-message-id="${r.id}"] .gengage-chat-bubble-text`
|
|
3788
3789
|
);
|
|
3789
3790
|
if (u) {
|
|
3790
3791
|
this._activeTypewriter?.cancel();
|
|
3791
|
-
const
|
|
3792
|
+
const w = y?.productMentions;
|
|
3792
3793
|
this._activeTypewriter = wa({
|
|
3793
3794
|
container: u,
|
|
3794
|
-
html: Z(
|
|
3795
|
+
html: Z(C),
|
|
3795
3796
|
onTick: () => this._drawer?.scrollToBottomIfNeeded(),
|
|
3796
3797
|
onComplete: () => {
|
|
3797
|
-
this._activeTypewriter = null,
|
|
3798
|
+
this._activeTypewriter = null, w && w.length > 0 && u && ya({
|
|
3798
3799
|
container: u,
|
|
3799
|
-
mentions:
|
|
3800
|
-
onProductClick: (
|
|
3800
|
+
mentions: w,
|
|
3801
|
+
onProductClick: (k) => {
|
|
3801
3802
|
this._sendAction({
|
|
3802
|
-
title:
|
|
3803
|
+
title: w.find((S) => S.sku === k)?.short_name ?? k,
|
|
3803
3804
|
type: "launchSingleProduct",
|
|
3804
|
-
payload: { sku:
|
|
3805
|
+
payload: { sku: k }
|
|
3805
3806
|
});
|
|
3806
3807
|
}
|
|
3807
3808
|
});
|
|
@@ -3810,34 +3811,34 @@ class ln extends ze {
|
|
|
3810
3811
|
}
|
|
3811
3812
|
}
|
|
3812
3813
|
},
|
|
3813
|
-
onUISpec: (
|
|
3814
|
-
if (!n && a !== this._activeRequestThreadId ||
|
|
3815
|
-
const
|
|
3814
|
+
onUISpec: (m, f, y) => {
|
|
3815
|
+
if (!n && a !== this._activeRequestThreadId || f !== "chat") return;
|
|
3816
|
+
const C = m.elements[m.root], A = C?.type ?? "unknown";
|
|
3816
3817
|
this.track(
|
|
3817
3818
|
nt(this.analyticsContext(), {
|
|
3818
3819
|
request_id: d,
|
|
3819
|
-
chunk_index:
|
|
3820
|
+
chunk_index: _,
|
|
3820
3821
|
component_type: A,
|
|
3821
3822
|
widget: "chat"
|
|
3822
3823
|
})
|
|
3823
3824
|
);
|
|
3824
3825
|
const u = this._buildRenderContext();
|
|
3825
3826
|
if (A === "ComparisonTable") {
|
|
3826
|
-
const S =
|
|
3827
|
+
const S = C?.props?.products;
|
|
3827
3828
|
it(Array.isArray(S) ? S.length : 0);
|
|
3828
3829
|
}
|
|
3829
3830
|
if (A === "ProductGrid") {
|
|
3830
|
-
const S =
|
|
3831
|
+
const S = C?.children?.length ?? 0;
|
|
3831
3832
|
ot(void 0, S);
|
|
3832
3833
|
}
|
|
3833
|
-
const
|
|
3834
|
-
if (
|
|
3835
|
-
|
|
3834
|
+
const w = y === "panel" && this._panel ? this._panel.toPanelSpec(m) : m, k = !r.silent && (y !== "panel" || A === "ProductCard") && A !== "ActionButtons";
|
|
3835
|
+
if (y === "panel" && this._panel) {
|
|
3836
|
+
L = !0, C?.props?.similarsAppend === !0 && this._panel.currentType === "ProductDetailsPanel" && this._drawer?.hasPanelContent() && !this._drawer.isPanelLoading() ? this._appendSimilarsToPanel(w, u) : A === "ProductGrid" && this._drawer?.hasPanelContent() && !this._drawer.isPanelLoading() ? this._drawer.appendPanelContent(this._renderUISpec(w, u)) : (this._drawer?.setPanelContent(this._renderUISpec(w, u)), this._panel.currentType = A), r.threadId && !this._panel.threads.includes(r.threadId) && this._panel.threads.push(r.threadId);
|
|
3836
3837
|
const S = this._panel.currentType ?? A;
|
|
3837
3838
|
this._panel.updateTopBar(S), this._panel.updateExtendedMode(A);
|
|
3838
3839
|
}
|
|
3839
|
-
if (A === "ProductDetailsPanel" && !r.silent &&
|
|
3840
|
-
const S =
|
|
3840
|
+
if (A === "ProductDetailsPanel" && !r.silent && y === "panel") {
|
|
3841
|
+
const S = C?.props?.product;
|
|
3841
3842
|
if (S) {
|
|
3842
3843
|
const P = {
|
|
3843
3844
|
root: "root",
|
|
@@ -3847,48 +3848,48 @@ class ln extends ze {
|
|
|
3847
3848
|
props: { product: S }
|
|
3848
3849
|
}
|
|
3849
3850
|
}
|
|
3850
|
-
},
|
|
3851
|
-
if (
|
|
3851
|
+
}, I = this._shadow?.querySelector(".gengage-chat-messages");
|
|
3852
|
+
if (I) {
|
|
3852
3853
|
const E = this._renderUISpec(P, u);
|
|
3853
|
-
r.threadId && (E.dataset.threadId = r.threadId),
|
|
3854
|
+
r.threadId && (E.dataset.threadId = r.threadId), I.appendChild(E), E.scrollIntoView({ behavior: "auto", block: "end" });
|
|
3854
3855
|
}
|
|
3855
3856
|
}
|
|
3856
3857
|
}
|
|
3857
|
-
if (
|
|
3858
|
+
if (k) {
|
|
3858
3859
|
const S = this._shadow?.querySelector(".gengage-chat-messages");
|
|
3859
3860
|
if (S) {
|
|
3860
|
-
const P = this._renderUISpec(
|
|
3861
|
+
const P = this._renderUISpec(m, u);
|
|
3861
3862
|
r.threadId && (P.dataset.threadId = r.threadId), S.appendChild(P), P.scrollIntoView({ behavior: "auto", block: "end" });
|
|
3862
3863
|
}
|
|
3863
3864
|
}
|
|
3864
3865
|
if ((A === "ProductGrid" || A === "ProductCard") && r.threadId) {
|
|
3865
|
-
const S =
|
|
3866
|
-
for (const
|
|
3867
|
-
const E =
|
|
3866
|
+
const S = C?.children ?? [], P = A === "ProductGrid" ? S.map((I) => m.elements[I]?.props?.product).filter(Boolean) : [C?.props?.product].filter(Boolean);
|
|
3867
|
+
for (const I of P) {
|
|
3868
|
+
const E = I.sku, M = I.imageUrl;
|
|
3868
3869
|
E && M && this._thumbnailEntries.push({ sku: E, imageUrl: M, threadId: r.threadId });
|
|
3869
3870
|
}
|
|
3870
3871
|
this._drawer?.setThumbnails(this._thumbnailEntries);
|
|
3871
3872
|
}
|
|
3872
3873
|
if (A === "ProductGrid" || A === "ProductDetailsPanel") {
|
|
3873
|
-
const P = (A === "ProductGrid" ? (
|
|
3874
|
-
|
|
3875
|
-
].filter(Boolean)).map((
|
|
3874
|
+
const P = (A === "ProductGrid" ? (C?.children ?? []).map((I) => m.elements[I]?.props?.product).filter(Boolean) : [
|
|
3875
|
+
C?.props?.product ?? C?.props
|
|
3876
|
+
].filter(Boolean)).map((I) => I.imageUrl).filter((I) => typeof I == "string").slice(0, 5);
|
|
3876
3877
|
P.length > 0 && this._bridge?.send("previewImages", { images: P });
|
|
3877
3878
|
}
|
|
3878
|
-
if (A === "ProductGrid" &&
|
|
3879
|
+
if (A === "ProductGrid" && y === "panel" && !this._comparisonSelectMode && !Sa() && (this._choicePrompterEl?.remove(), this._choicePrompterEl = Ea({
|
|
3879
3880
|
heading: this._i18n.choicePrompterHeading,
|
|
3880
3881
|
suggestion: this._i18n.choicePrompterSuggestion,
|
|
3881
3882
|
ctaLabel: this._i18n.choicePrompterCta,
|
|
3882
3883
|
onCtaClick: () => {
|
|
3883
|
-
this._comparisonSelectMode = !0, this._choicePrompterEl = null;
|
|
3884
|
+
this._comparisonSelectMode = !0, this._choicePrompterEl = null, this._refreshComparisonUI();
|
|
3884
3885
|
},
|
|
3885
3886
|
onDismiss: () => {
|
|
3886
3887
|
this._choicePrompterEl = null;
|
|
3887
3888
|
}
|
|
3888
3889
|
}), this._shadow?.querySelector(".gengage-chat-panel")?.appendChild(this._choicePrompterEl)), A === "ActionButtons") {
|
|
3889
|
-
const S =
|
|
3890
|
+
const S = C?.props?.buttons;
|
|
3890
3891
|
if (S && S.length > 0) {
|
|
3891
|
-
const P = [],
|
|
3892
|
+
const P = [], I = [];
|
|
3892
3893
|
for (const E of S)
|
|
3893
3894
|
if (Ca(E)) {
|
|
3894
3895
|
const M = {
|
|
@@ -3897,15 +3898,15 @@ class ln extends ze {
|
|
|
3897
3898
|
};
|
|
3898
3899
|
E.icon && (M.icon = E.icon), P.push(M);
|
|
3899
3900
|
} else
|
|
3900
|
-
|
|
3901
|
+
I.push(E);
|
|
3901
3902
|
P.length > 0 && this._drawer?.setInputAreaChips(
|
|
3902
3903
|
P.map((E) => ({
|
|
3903
3904
|
label: E.label,
|
|
3904
3905
|
onAction: () => this._sendAction(E.action),
|
|
3905
3906
|
...E.icon ? { icon: E.icon } : {}
|
|
3906
3907
|
}))
|
|
3907
|
-
),
|
|
3908
|
-
|
|
3908
|
+
), I.length > 0 && this._drawer?.setPills(
|
|
3909
|
+
I.map((E) => {
|
|
3909
3910
|
const M = {
|
|
3910
3911
|
label: E.label,
|
|
3911
3912
|
onAction: () => this._sendAction(E.action)
|
|
@@ -3915,89 +3916,89 @@ class ln extends ze {
|
|
|
3915
3916
|
);
|
|
3916
3917
|
}
|
|
3917
3918
|
}
|
|
3918
|
-
r.uiSpec =
|
|
3919
|
+
r.uiSpec = m;
|
|
3919
3920
|
},
|
|
3920
|
-
onAction: (
|
|
3921
|
-
if (!(!n && a !== this._activeRequestThreadId) &&
|
|
3922
|
-
const
|
|
3923
|
-
this.config.actionHandling?.unknownActionPolicy !== void 0 && (
|
|
3924
|
-
|
|
3921
|
+
onAction: (m) => {
|
|
3922
|
+
if (!(!n && a !== this._activeRequestThreadId) && m.type === "action") {
|
|
3923
|
+
const f = {};
|
|
3924
|
+
this.config.actionHandling?.unknownActionPolicy !== void 0 && (f.unknownActionPolicy = this.config.actionHandling.unknownActionPolicy), this.config.actionHandling?.allowScriptCall !== void 0 && (f.allowScriptCall = this.config.actionHandling.allowScriptCall), dt(
|
|
3925
|
+
m,
|
|
3925
3926
|
{
|
|
3926
3927
|
openChat: () => this.open(),
|
|
3927
|
-
navigate: (
|
|
3928
|
-
this._bridge?.send("navigate",
|
|
3928
|
+
navigate: (y) => {
|
|
3929
|
+
this._bridge?.send("navigate", y), y.newTab ? window.open(y.url, "_blank", "noopener,noreferrer") : window.location.href = y.url;
|
|
3929
3930
|
},
|
|
3930
|
-
saveSession: (
|
|
3931
|
-
addToCart: (
|
|
3932
|
-
O("gengage:similar:add-to-cart",
|
|
3931
|
+
saveSession: (y) => this.saveSession(y.sessionId, y.sku),
|
|
3932
|
+
addToCart: (y) => {
|
|
3933
|
+
O("gengage:similar:add-to-cart", y);
|
|
3933
3934
|
},
|
|
3934
|
-
scriptCall: (
|
|
3935
|
-
O("gengage:chat:script-call",
|
|
3935
|
+
scriptCall: (y) => {
|
|
3936
|
+
O("gengage:chat:script-call", y), this.config.onScriptCall?.(y);
|
|
3936
3937
|
}
|
|
3937
3938
|
},
|
|
3938
|
-
|
|
3939
|
+
f
|
|
3939
3940
|
);
|
|
3940
3941
|
}
|
|
3941
3942
|
},
|
|
3942
|
-
onMetadata: (
|
|
3943
|
-
if (!(!n && a !== this._activeRequestThreadId) &&
|
|
3944
|
-
if ((
|
|
3945
|
-
|
|
3946
|
-
const
|
|
3947
|
-
this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(
|
|
3943
|
+
onMetadata: (m) => {
|
|
3944
|
+
if (!(!n && a !== this._activeRequestThreadId) && m.type === "metadata" && m.meta) {
|
|
3945
|
+
if ((m.meta.panel !== void 0 || m.meta.messages !== void 0 || m.meta.message_id !== void 0) && (this._lastBackendContext = m.meta), m.meta.panelLoading) {
|
|
3946
|
+
x = !0, L = !1;
|
|
3947
|
+
const y = typeof m.meta.panelPendingType == "string" ? m.meta.panelPendingType : void 0;
|
|
3948
|
+
this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(y), y && this._panel?.updateTopBarForLoading(y);
|
|
3948
3949
|
}
|
|
3949
|
-
if (
|
|
3950
|
-
const
|
|
3951
|
-
detail: { payload:
|
|
3950
|
+
if (m.meta.voice) {
|
|
3951
|
+
const y = new CustomEvent("gengage:chat:voice", {
|
|
3952
|
+
detail: { payload: m.meta.voice },
|
|
3952
3953
|
bubbles: !1,
|
|
3953
3954
|
cancelable: !0
|
|
3954
|
-
}),
|
|
3955
|
-
if (tt(),
|
|
3956
|
-
const A =
|
|
3955
|
+
}), C = window.dispatchEvent(y);
|
|
3956
|
+
if (tt(), C) {
|
|
3957
|
+
const A = m.meta.voice;
|
|
3957
3958
|
A.audio_base64 && (this._activeTtsHandle?.stop(), this._activeTtsHandle = Ht(
|
|
3958
3959
|
A.audio_base64,
|
|
3959
3960
|
A.content_type ?? "audio/ogg"
|
|
3960
3961
|
));
|
|
3961
3962
|
}
|
|
3962
3963
|
}
|
|
3963
|
-
(
|
|
3964
|
-
target:
|
|
3965
|
-
payload:
|
|
3966
|
-
}),
|
|
3967
|
-
type:
|
|
3968
|
-
data:
|
|
3969
|
-
}),
|
|
3970
|
-
const
|
|
3971
|
-
typeof
|
|
3964
|
+
(m.meta.redirectTarget || m.meta.redirect) && O("gengage:chat:redirect", {
|
|
3965
|
+
target: m.meta.redirectTarget ?? null,
|
|
3966
|
+
payload: m.meta.redirect ?? null
|
|
3967
|
+
}), m.meta.analyzeAnimation && (x = !0, L = !1, this._panel && (this._panel.currentType = null), this._drawer?.showPanelLoading(), this._panel?.updateTopBarForLoading("productDetails")), m.meta.loading && typeof m.meta.loadingText == "string" && (this._drawer?.addThinkingStep(m.meta.loadingText), this._bridge?.send("loadingMessage", { text: m.meta.loadingText })), m.meta.visitorDataResponse && this._bridge?.send("engagingMessage", m.meta.visitorDataResponse), m.meta.formType && this._bridge?.send("glovOtokoc", {
|
|
3968
|
+
type: m.meta.formType,
|
|
3969
|
+
data: m.meta.formPayload
|
|
3970
|
+
}), m.meta.launcherContent && this._bridge?.send("launcherContent", m.meta.launcherContent), O("gengage:chat:metadata", { payload: m.meta });
|
|
3971
|
+
const f = m.meta;
|
|
3972
|
+
typeof f.prompt_tokens == "number" && typeof f.completion_tokens == "number" && this.track(
|
|
3972
3973
|
at(this.analyticsContext(), {
|
|
3973
|
-
model:
|
|
3974
|
-
prompt_tokens:
|
|
3975
|
-
completion_tokens:
|
|
3976
|
-
total_tokens:
|
|
3974
|
+
model: m.model ?? "unknown",
|
|
3975
|
+
prompt_tokens: f.prompt_tokens,
|
|
3976
|
+
completion_tokens: f.completion_tokens,
|
|
3977
|
+
total_tokens: f.total_tokens ?? f.prompt_tokens + f.completion_tokens
|
|
3977
3978
|
})
|
|
3978
3979
|
);
|
|
3979
3980
|
}
|
|
3980
3981
|
},
|
|
3981
|
-
onError: (
|
|
3982
|
-
|
|
3982
|
+
onError: (m) => {
|
|
3983
|
+
T && this._abortControllers.delete(T), !(!n && a !== this._activeRequestThreadId) && (this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), x && !L && this._drawer?.isPanelLoading() && this._drawer.clearPanel(), x = !1, L = !1, O("gengage:global:error", {
|
|
3983
3984
|
source: "chat",
|
|
3984
3985
|
code: "STREAM_ERROR",
|
|
3985
3986
|
message: this._i18n.errorMessage
|
|
3986
|
-
}), this.emit("error",
|
|
3987
|
+
}), this.emit("error", m), this._drawer?.showError(m.message), r.status === "streaming" && (r.status = "error"), this.track(
|
|
3987
3988
|
et(this.analyticsContext(), {
|
|
3988
3989
|
request_id: d,
|
|
3989
3990
|
error_code: "STREAM_ERROR",
|
|
3990
|
-
error_message:
|
|
3991
|
+
error_message: m.message,
|
|
3991
3992
|
widget: "chat"
|
|
3992
3993
|
})
|
|
3993
3994
|
));
|
|
3994
3995
|
},
|
|
3995
3996
|
onDone: () => {
|
|
3996
|
-
|
|
3997
|
+
T && this._abortControllers.delete(T), !(!n && a !== this._activeRequestThreadId) && (this._activeRequestThreadId = null, this._bridge?.send("isResponding", !1), this._bridge?.send("loadingMessage", { text: null }), this._drawer?.removeTypingIndicator(), x && !L && this._drawer?.isPanelLoading() && this._drawer.clearPanel(), x = !1, L = !1, r.status === "streaming" && (r.status = "done", de()), this.emit("message", r), this._panel?.snapshotForMessage(r.id), this._panel?.attachClickHandler(r.id), this.track(
|
|
3997
3998
|
Xe(this.analyticsContext(), {
|
|
3998
3999
|
request_id: d,
|
|
3999
4000
|
latency_ms: Date.now() - v,
|
|
4000
|
-
chunk_count:
|
|
4001
|
+
chunk_count: _,
|
|
4001
4002
|
widget: "chat"
|
|
4002
4003
|
})
|
|
4003
4004
|
), this.track(
|
|
@@ -4017,7 +4018,7 @@ class ln extends ze {
|
|
|
4017
4018
|
}
|
|
4018
4019
|
},
|
|
4019
4020
|
s
|
|
4020
|
-
), this._abortControllers.add(
|
|
4021
|
+
), this._abortControllers.add(T);
|
|
4021
4022
|
}
|
|
4022
4023
|
/** Return messages visible at the current thread cursor. */
|
|
4023
4024
|
_getVisibleMessages() {
|
|
@@ -4157,6 +4158,67 @@ class ln extends ze {
|
|
|
4157
4158
|
this._drawer?.scrollToLastThread();
|
|
4158
4159
|
}, 550);
|
|
4159
4160
|
}
|
|
4161
|
+
/**
|
|
4162
|
+
* Toggle comparison mode or individual SKU selection, then refresh the DOM.
|
|
4163
|
+
* Extracted so both the render-context callback and DOM-created checkboxes
|
|
4164
|
+
* share the same state-mutation + refresh path.
|
|
4165
|
+
*/
|
|
4166
|
+
_toggleComparisonSku(e) {
|
|
4167
|
+
e === "" ? (this._comparisonSelectMode = !this._comparisonSelectMode, this._comparisonSelectMode || (this._comparisonSelectedSkus = [], je())) : this._comparisonSelectedSkus.indexOf(e) >= 0 ? this._comparisonSelectedSkus = this._comparisonSelectedSkus.filter((a) => a !== e) : (this._comparisonSelectedSkus = [...this._comparisonSelectedSkus, e], Ve(e)), this._refreshComparisonUI();
|
|
4168
|
+
}
|
|
4169
|
+
/**
|
|
4170
|
+
* Refresh the panel DOM to reflect the current comparison state without
|
|
4171
|
+
* full re-render. Updates: toggle button active class, checkbox overlays
|
|
4172
|
+
* on product cards, and the floating comparison button.
|
|
4173
|
+
*/
|
|
4174
|
+
_refreshComparisonUI() {
|
|
4175
|
+
const e = this._shadow?.querySelector(".gengage-chat-panel");
|
|
4176
|
+
if (!e) return;
|
|
4177
|
+
const t = e.querySelector(".gengage-chat-product-grid-wrapper");
|
|
4178
|
+
if (!t) return;
|
|
4179
|
+
const a = t.querySelector(".gengage-chat-product-grid");
|
|
4180
|
+
if (!a) return;
|
|
4181
|
+
const n = t.querySelector(".gengage-chat-comparison-toggle-btn");
|
|
4182
|
+
if (n && n.classList.toggle("gengage-chat-comparison-toggle-btn--active", this._comparisonSelectMode), this._comparisonSelectMode) {
|
|
4183
|
+
const r = a.querySelectorAll(".gengage-chat-product-card[data-sku]");
|
|
4184
|
+
for (const s of r) {
|
|
4185
|
+
if (s.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")) {
|
|
4186
|
+
const p = s.parentElement.querySelector(".gengage-chat-comparison-checkbox");
|
|
4187
|
+
p && (p.checked = this._comparisonSelectedSkus.includes(s.dataset.sku));
|
|
4188
|
+
continue;
|
|
4189
|
+
}
|
|
4190
|
+
const l = s.dataset.sku, g = document.createElement("div");
|
|
4191
|
+
g.className = "gengage-chat-comparison-select-wrapper";
|
|
4192
|
+
const c = document.createElement("input");
|
|
4193
|
+
c.type = "checkbox", c.className = "gengage-chat-comparison-checkbox", c.checked = this._comparisonSelectedSkus.includes(l), c.addEventListener("change", () => {
|
|
4194
|
+
this._toggleComparisonSku(l);
|
|
4195
|
+
}), s.parentNode.insertBefore(g, s), g.appendChild(c), g.appendChild(s);
|
|
4196
|
+
}
|
|
4197
|
+
} else {
|
|
4198
|
+
const r = a.querySelectorAll(".gengage-chat-comparison-select-wrapper");
|
|
4199
|
+
for (const s of r) {
|
|
4200
|
+
const l = s.querySelector(".gengage-chat-product-card");
|
|
4201
|
+
l && s.parentNode && (s.parentNode.insertBefore(l, s), s.remove());
|
|
4202
|
+
}
|
|
4203
|
+
}
|
|
4204
|
+
const i = t.querySelector(".gengage-chat-comparison-floating-btn");
|
|
4205
|
+
if (this._comparisonSelectMode && this._comparisonSelectedSkus.length >= 2) {
|
|
4206
|
+
const r = this._i18n.compareSelected ?? "Karşılaştır", s = `${r} (${this._comparisonSelectedSkus.length})`;
|
|
4207
|
+
if (i)
|
|
4208
|
+
i.textContent = s;
|
|
4209
|
+
else {
|
|
4210
|
+
const l = document.createElement("button");
|
|
4211
|
+
l.className = "gengage-chat-comparison-floating-btn", l.type = "button", l.textContent = s, l.addEventListener("click", () => {
|
|
4212
|
+
ge(this._comparisonSelectedSkus), this._sendAction({
|
|
4213
|
+
title: r,
|
|
4214
|
+
type: "getComparisonTable",
|
|
4215
|
+
payload: { sku_list: [...this._comparisonSelectedSkus] }
|
|
4216
|
+
});
|
|
4217
|
+
}), t.appendChild(l);
|
|
4218
|
+
}
|
|
4219
|
+
} else
|
|
4220
|
+
i?.remove();
|
|
4221
|
+
}
|
|
4160
4222
|
/**
|
|
4161
4223
|
* Build a ChatUISpecRenderContext with all callbacks wired up.
|
|
4162
4224
|
* Used both during streaming and during session restore.
|
|
@@ -4164,16 +4226,16 @@ class ln extends ze {
|
|
|
4164
4226
|
_buildRenderContext() {
|
|
4165
4227
|
const e = {
|
|
4166
4228
|
onAction: (t) => {
|
|
4167
|
-
if (
|
|
4229
|
+
if (Ye(t.title, t.type), t.type === "findSimilar") {
|
|
4168
4230
|
const n = typeof t.payload == "object" && t.payload !== null && "sku" in t.payload ? String(t.payload.sku) : "";
|
|
4169
|
-
|
|
4231
|
+
Qe(n);
|
|
4170
4232
|
}
|
|
4171
|
-
t.type === "getComparisonTable" &&
|
|
4233
|
+
t.type === "getComparisonTable" && ge(this._comparisonSelectedSkus);
|
|
4172
4234
|
const a = t.type === "addToCart" || t.type === "like";
|
|
4173
4235
|
this._sendAction(t, a ? { preservePanel: !0 } : void 0);
|
|
4174
4236
|
},
|
|
4175
4237
|
onProductClick: (t) => {
|
|
4176
|
-
|
|
4238
|
+
We(t.sku), O("gengage:similar:product-click", {
|
|
4177
4239
|
sku: t.sku,
|
|
4178
4240
|
url: t.url,
|
|
4179
4241
|
sessionId: this.config.session?.sessionId ?? null
|
|
@@ -4184,7 +4246,7 @@ class ln extends ze {
|
|
|
4184
4246
|
}) : this._saveSessionAndOpenURL(t.url);
|
|
4185
4247
|
},
|
|
4186
4248
|
onAddToCart: (t) => {
|
|
4187
|
-
|
|
4249
|
+
Ke(t.sku, t.quantity);
|
|
4188
4250
|
const a = {
|
|
4189
4251
|
...t,
|
|
4190
4252
|
sessionId: this.config.session?.sessionId ?? null
|
|
@@ -4219,11 +4281,11 @@ class ln extends ze {
|
|
|
4219
4281
|
comparisonSelectMode: this._comparisonSelectMode,
|
|
4220
4282
|
comparisonSelectedSkus: this._comparisonSelectedSkus,
|
|
4221
4283
|
onToggleComparisonSku: (t) => {
|
|
4222
|
-
|
|
4284
|
+
this._toggleComparisonSku(t);
|
|
4223
4285
|
},
|
|
4224
4286
|
favoritedSkus: this._session?.favoritedSkus ?? /* @__PURE__ */ new Set(),
|
|
4225
4287
|
onFavoriteToggle: (t, a) => {
|
|
4226
|
-
|
|
4288
|
+
Ge(t), this._toggleFavorite(t, a);
|
|
4227
4289
|
const n = a.name ?? t;
|
|
4228
4290
|
this._sendAction(
|
|
4229
4291
|
{
|
|
@@ -4309,10 +4371,10 @@ class ln extends ze {
|
|
|
4309
4371
|
}
|
|
4310
4372
|
_resolveUISpecRegistry() {
|
|
4311
4373
|
const e = oa();
|
|
4312
|
-
return
|
|
4374
|
+
return $e(e, this.config.renderer?.registry);
|
|
4313
4375
|
}
|
|
4314
4376
|
_renderUISpec(e, t) {
|
|
4315
|
-
const a = this._resolveUISpecRegistry(), n = this.config.renderer?.unknownRenderer ??
|
|
4377
|
+
const a = this._resolveUISpecRegistry(), n = this.config.renderer?.unknownRenderer ?? Te, i = (l, g) => ra(l, g, a, n), r = this.config.renderer?.renderUISpec;
|
|
4316
4378
|
return r ? r(e, t, {
|
|
4317
4379
|
registry: a,
|
|
4318
4380
|
unknownRenderer: n,
|
|
@@ -4329,9 +4391,9 @@ export {
|
|
|
4329
4391
|
oa as a,
|
|
4330
4392
|
ra as b,
|
|
4331
4393
|
hn as c,
|
|
4332
|
-
|
|
4394
|
+
Te as d,
|
|
4333
4395
|
pn as e,
|
|
4334
4396
|
St as i,
|
|
4335
4397
|
dt as r
|
|
4336
4398
|
};
|
|
4337
|
-
//# sourceMappingURL=index-
|
|
4399
|
+
//# sourceMappingURL=index-kp84NL1R.js.map
|