@skippr/live-agent-sdk 0.110.0 → 0.111.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -1
- package/dist/esm/lib-exports.js +404 -346
- package/dist/skippr-sdk.js +141 -141
- package/dist/types/components/ConsentBubble.d.ts +2 -2
- package/dist/types/components/ConsentNotice.d.ts +2 -3
- package/dist/types/components/LiveAgent.d.ts +1 -0
- package/dist/types/context/LiveAgentContext.d.ts +1 -0
- package/dist/types/hooks/useAvailableModules.d.ts +2 -1
- package/dist/types/lib/constants.d.ts +19 -0
- package/dist/types/lib/locale.d.ts +2 -0
- package/dist/types/lib/splashPresentation.d.ts +1 -0
- package/package.json +1 -1
package/dist/esm/lib-exports.js
CHANGED
|
@@ -387,63 +387,6 @@ function isEditableTarget() {
|
|
|
387
387
|
return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT" || el.isContentEditable;
|
|
388
388
|
}
|
|
389
389
|
|
|
390
|
-
// src/components/ConsentNotice.tsx
|
|
391
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
392
|
-
function ConsentNotice({ className, leadIn, determiner = "Skippr's" }) {
|
|
393
|
-
return /* @__PURE__ */ jsxs("p", {
|
|
394
|
-
className: cn("skippr:text-[11px] skippr:leading-[1.2] skippr:text-muted-foreground skippr:text-center", className),
|
|
395
|
-
children: [
|
|
396
|
-
leadIn,
|
|
397
|
-
", you agree to ",
|
|
398
|
-
determiner,
|
|
399
|
-
" ",
|
|
400
|
-
/* @__PURE__ */ jsx("a", {
|
|
401
|
-
href: "https://www.skippr.ai/terms",
|
|
402
|
-
target: "_blank",
|
|
403
|
-
rel: "noopener noreferrer",
|
|
404
|
-
className: "skippr:underline skippr:underline-offset-[2px] skippr:decoration-muted-foreground/40 skippr:hover:text-foreground skippr:hover:decoration-muted-foreground",
|
|
405
|
-
children: "Terms"
|
|
406
|
-
}),
|
|
407
|
-
" ",
|
|
408
|
-
"&",
|
|
409
|
-
" ",
|
|
410
|
-
/* @__PURE__ */ jsx("a", {
|
|
411
|
-
href: "https://www.skippr.ai/privacy",
|
|
412
|
-
target: "_blank",
|
|
413
|
-
rel: "noopener noreferrer",
|
|
414
|
-
className: "skippr:underline skippr:underline-offset-[2px] skippr:decoration-muted-foreground/40 skippr:hover:text-foreground skippr:hover:decoration-muted-foreground",
|
|
415
|
-
children: "Privacy"
|
|
416
|
-
})
|
|
417
|
-
]
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
// src/components/ConsentBubble.tsx
|
|
422
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
423
|
-
function ConsentBubble({
|
|
424
|
-
className,
|
|
425
|
-
style,
|
|
426
|
-
leadIn,
|
|
427
|
-
onPointerEnter,
|
|
428
|
-
onPointerLeave
|
|
429
|
-
}) {
|
|
430
|
-
return /* @__PURE__ */ jsx2("div", {
|
|
431
|
-
className: cn("skippr:pointer-events-auto skippr:w-[240px] skippr:rounded-2xl skippr:bg-white skippr:px-2.5 skippr:py-1.5 skippr:shadow-[0_6px_16px_rgba(45,45,63,0.14)]", className),
|
|
432
|
-
style,
|
|
433
|
-
onPointerEnter,
|
|
434
|
-
onPointerLeave,
|
|
435
|
-
children: /* @__PURE__ */ jsx2(ConsentNotice, {
|
|
436
|
-
leadIn
|
|
437
|
-
})
|
|
438
|
-
});
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
// src/components/VoiceBarLoginCard.tsx
|
|
442
|
-
import { useContext as useContext2 } from "react";
|
|
443
|
-
|
|
444
|
-
// src/context/LiveAgentContext.tsx
|
|
445
|
-
import { createContext as createContext2 } from "react";
|
|
446
|
-
|
|
447
390
|
// src/lib/constants.ts
|
|
448
391
|
var BUDDY_SHAPE = {
|
|
449
392
|
Bolt: "bolt",
|
|
@@ -542,6 +485,11 @@ var SPLASH_SURFACE = {
|
|
|
542
485
|
Host: "host"
|
|
543
486
|
};
|
|
544
487
|
var SKIPPR_OPEN_EVENT = "skippr:open";
|
|
488
|
+
var CONSENT_TERMS_PLACEHOLDER = "{terms}";
|
|
489
|
+
var CONSENT_PRIVACY_PLACEHOLDER = "{privacy}";
|
|
490
|
+
var CONSENT_NOTICE_SESSION_START = `By starting a session, you agree to Skippr's ${CONSENT_TERMS_PLACEHOLDER} & ${CONSENT_PRIVACY_PLACEHOLDER}`;
|
|
491
|
+
var CONSENT_NOTICE_CONTINUING = `By continuing, you agree to the ${CONSENT_TERMS_PLACEHOLDER} & ${CONSENT_PRIVACY_PLACEHOLDER}`;
|
|
492
|
+
var CONSENT_NOTICE_AGENT_SESSION_START = `By starting the AI agent session, you agree to Skippr's ${CONSENT_TERMS_PLACEHOLDER} & ${CONSENT_PRIVACY_PLACEHOLDER}`;
|
|
545
493
|
var SPLASH_COPY_DEFAULTS = {
|
|
546
494
|
howItWorksHeading: "How it works",
|
|
547
495
|
lastAccomplishmentHeading: "Last accomplishment",
|
|
@@ -558,7 +506,21 @@ var SPLASH_COPY_DEFAULTS = {
|
|
|
558
506
|
tipsHeading: "Tips",
|
|
559
507
|
tipsCta: "Need help with something else?",
|
|
560
508
|
tipsEmptyTitle: "Ask about this page",
|
|
561
|
-
tipsEmptyDescription: "Get instant answers about anything you see here"
|
|
509
|
+
tipsEmptyDescription: "Get instant answers about anything you see here",
|
|
510
|
+
attributionPrefix: "AI Agent Powered by",
|
|
511
|
+
closeLabel: "Close",
|
|
512
|
+
mediaEnableAction: "Enable",
|
|
513
|
+
mediaEnabledStatus: "Enabled",
|
|
514
|
+
micMutedStatus: "Muted",
|
|
515
|
+
screenRequiredStatus: "Required",
|
|
516
|
+
muteMicAction: "Mute microphone",
|
|
517
|
+
consentNotice: CONSENT_NOTICE_SESSION_START,
|
|
518
|
+
sectionRouteTitle: "Guides you step by step",
|
|
519
|
+
sectionRouteDescription: "Walks you through each step, start to finish",
|
|
520
|
+
sectionMessagesTitle: "Talk or type",
|
|
521
|
+
sectionMessagesDescription: "Ask by voice or in chat",
|
|
522
|
+
sectionPointerTitle: "Ask it to click through for you",
|
|
523
|
+
sectionPointerDescription: "Controls the environment for you"
|
|
562
524
|
};
|
|
563
525
|
var SPLASH_SECTION_GLYPH = {
|
|
564
526
|
Route: "route",
|
|
@@ -568,20 +530,20 @@ var SPLASH_SECTION_GLYPH = {
|
|
|
568
530
|
var DEFAULT_SPLASH_SECTIONS = [
|
|
569
531
|
{
|
|
570
532
|
id: "9f2b1c4a-5d6e-4f70-8a91-b2c3d4e5f601",
|
|
571
|
-
title:
|
|
572
|
-
description:
|
|
533
|
+
title: SPLASH_COPY_DEFAULTS.sectionRouteTitle,
|
|
534
|
+
description: SPLASH_COPY_DEFAULTS.sectionRouteDescription,
|
|
573
535
|
glyph: SPLASH_SECTION_GLYPH.Route
|
|
574
536
|
},
|
|
575
537
|
{
|
|
576
538
|
id: "9f2b1c4a-5d6e-4f70-8a91-b2c3d4e5f602",
|
|
577
|
-
title:
|
|
578
|
-
description:
|
|
539
|
+
title: SPLASH_COPY_DEFAULTS.sectionMessagesTitle,
|
|
540
|
+
description: SPLASH_COPY_DEFAULTS.sectionMessagesDescription,
|
|
579
541
|
glyph: SPLASH_SECTION_GLYPH.Messages
|
|
580
542
|
},
|
|
581
543
|
{
|
|
582
544
|
id: "9f2b1c4a-5d6e-4f70-8a91-b2c3d4e5f603",
|
|
583
|
-
title:
|
|
584
|
-
description:
|
|
545
|
+
title: SPLASH_COPY_DEFAULTS.sectionPointerTitle,
|
|
546
|
+
description: SPLASH_COPY_DEFAULTS.sectionPointerDescription,
|
|
585
547
|
glyph: SPLASH_SECTION_GLYPH.Pointer
|
|
586
548
|
}
|
|
587
549
|
];
|
|
@@ -625,7 +587,68 @@ var PLAN_ATTR = "skippr.action-plan";
|
|
|
625
587
|
var LINK_CARD_ATTR = "skippr.link-card";
|
|
626
588
|
var NAME_MAX_CHARS = 80;
|
|
627
589
|
|
|
590
|
+
// src/components/ConsentNotice.tsx
|
|
591
|
+
import { jsx } from "react/jsx-runtime";
|
|
592
|
+
var CONSENT_LINK_BY_PLACEHOLDER = {
|
|
593
|
+
[CONSENT_TERMS_PLACEHOLDER]: { href: "https://www.skippr.ai/terms", label: "Terms" },
|
|
594
|
+
[CONSENT_PRIVACY_PLACEHOLDER]: { href: "https://www.skippr.ai/privacy", label: "Privacy" }
|
|
595
|
+
};
|
|
596
|
+
var CONSENT_LINK_CLASS = "skippr:underline skippr:underline-offset-[2px] skippr:decoration-muted-foreground/40 skippr:hover:text-foreground skippr:hover:decoration-muted-foreground";
|
|
597
|
+
function toConsentParts(template) {
|
|
598
|
+
const parts = [];
|
|
599
|
+
let rest = template;
|
|
600
|
+
while (rest.length > 0) {
|
|
601
|
+
const next = Object.keys(CONSENT_LINK_BY_PLACEHOLDER).map((placeholder) => ({ placeholder, at: rest.indexOf(placeholder) })).filter(({ at }) => at !== -1).sort((a, b) => a.at - b.at)[0];
|
|
602
|
+
if (!next) {
|
|
603
|
+
parts.push(rest);
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
if (next.at > 0)
|
|
607
|
+
parts.push(rest.slice(0, next.at));
|
|
608
|
+
parts.push(CONSENT_LINK_BY_PLACEHOLDER[next.placeholder]);
|
|
609
|
+
rest = rest.slice(next.at + next.placeholder.length);
|
|
610
|
+
}
|
|
611
|
+
return parts;
|
|
612
|
+
}
|
|
613
|
+
function ConsentNotice({ className, template }) {
|
|
614
|
+
return /* @__PURE__ */ jsx("p", {
|
|
615
|
+
lang: "en",
|
|
616
|
+
className: cn("skippr:text-[11px] skippr:leading-[1.2] skippr:text-muted-foreground skippr:text-center", className),
|
|
617
|
+
children: toConsentParts(template).map((part) => typeof part === "string" ? part : /* @__PURE__ */ jsx("a", {
|
|
618
|
+
href: part.href,
|
|
619
|
+
target: "_blank",
|
|
620
|
+
rel: "noopener noreferrer",
|
|
621
|
+
className: CONSENT_LINK_CLASS,
|
|
622
|
+
children: part.label
|
|
623
|
+
}, part.href))
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// src/components/ConsentBubble.tsx
|
|
628
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
629
|
+
function ConsentBubble({
|
|
630
|
+
className,
|
|
631
|
+
style,
|
|
632
|
+
template,
|
|
633
|
+
onPointerEnter,
|
|
634
|
+
onPointerLeave
|
|
635
|
+
}) {
|
|
636
|
+
return /* @__PURE__ */ jsx2("div", {
|
|
637
|
+
className: cn("skippr:pointer-events-auto skippr:w-[240px] skippr:rounded-2xl skippr:bg-white skippr:px-2.5 skippr:py-1.5 skippr:shadow-[0_6px_16px_rgba(45,45,63,0.14)]", className),
|
|
638
|
+
style,
|
|
639
|
+
onPointerEnter,
|
|
640
|
+
onPointerLeave,
|
|
641
|
+
children: /* @__PURE__ */ jsx2(ConsentNotice, {
|
|
642
|
+
template
|
|
643
|
+
})
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// src/components/VoiceBarLoginCard.tsx
|
|
648
|
+
import { useContext as useContext2 } from "react";
|
|
649
|
+
|
|
628
650
|
// src/context/LiveAgentContext.tsx
|
|
651
|
+
import { createContext as createContext2 } from "react";
|
|
629
652
|
var LiveAgentContext = createContext2(null);
|
|
630
653
|
|
|
631
654
|
// src/components/LoginFlow.tsx
|
|
@@ -661,7 +684,7 @@ var Button = forwardRef3(({ className, variant = "default", size = "default", ..
|
|
|
661
684
|
Button.displayName = "Button";
|
|
662
685
|
|
|
663
686
|
// src/components/LoginFlow.tsx
|
|
664
|
-
import { jsx as jsx4, jsxs
|
|
687
|
+
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
665
688
|
var OTP_LENGTH = 6;
|
|
666
689
|
var DIGIT_KEYS = ["d0", "d1", "d2", "d3", "d4", "d5"];
|
|
667
690
|
function LoginFlow({ requestOtp, verifyOtp, error, isSubmitting }) {
|
|
@@ -705,10 +728,10 @@ function EmailStep({ email, onEmailChange, onSubmit, error, isSubmitting }) {
|
|
|
705
728
|
if (email.trim())
|
|
706
729
|
onSubmit(email.trim());
|
|
707
730
|
}
|
|
708
|
-
return /* @__PURE__ */
|
|
731
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
709
732
|
className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:px-4 skippr:py-4",
|
|
710
733
|
children: [
|
|
711
|
-
/* @__PURE__ */
|
|
734
|
+
/* @__PURE__ */ jsxs("div", {
|
|
712
735
|
className: "skippr:mb-4 skippr:text-center",
|
|
713
736
|
children: [
|
|
714
737
|
/* @__PURE__ */ jsx4(Mail, {
|
|
@@ -724,7 +747,7 @@ function EmailStep({ email, onEmailChange, onSubmit, error, isSubmitting }) {
|
|
|
724
747
|
})
|
|
725
748
|
]
|
|
726
749
|
}),
|
|
727
|
-
/* @__PURE__ */
|
|
750
|
+
/* @__PURE__ */ jsxs("form", {
|
|
728
751
|
onSubmit: handleSubmit,
|
|
729
752
|
className: "skippr:flex skippr:flex-col skippr:gap-3",
|
|
730
753
|
children: [
|
|
@@ -751,7 +774,7 @@ function EmailStep({ email, onEmailChange, onSubmit, error, isSubmitting }) {
|
|
|
751
774
|
className: "skippr:text-xs skippr:text-center skippr:text-destructive",
|
|
752
775
|
children: error
|
|
753
776
|
}),
|
|
754
|
-
/* @__PURE__ */
|
|
777
|
+
/* @__PURE__ */ jsxs("p", {
|
|
755
778
|
className: "skippr:text-[11px] skippr:leading-relaxed skippr:text-muted-foreground skippr:text-center",
|
|
756
779
|
children: [
|
|
757
780
|
"By continuing, you agree to the",
|
|
@@ -851,17 +874,17 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
851
874
|
submittedRef.current = false;
|
|
852
875
|
inputRefs.current[0]?.focus();
|
|
853
876
|
}
|
|
854
|
-
return /* @__PURE__ */
|
|
877
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
855
878
|
className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:px-4 skippr:py-4",
|
|
856
879
|
children: [
|
|
857
|
-
/* @__PURE__ */
|
|
880
|
+
/* @__PURE__ */ jsxs("div", {
|
|
858
881
|
className: "skippr:mb-4 skippr:text-center",
|
|
859
882
|
children: [
|
|
860
883
|
/* @__PURE__ */ jsx4("p", {
|
|
861
884
|
className: "skippr:text-sm skippr:font-medium skippr:text-foreground",
|
|
862
885
|
children: "Enter verification code"
|
|
863
886
|
}),
|
|
864
|
-
/* @__PURE__ */
|
|
887
|
+
/* @__PURE__ */ jsxs("p", {
|
|
865
888
|
className: "skippr:mt-1 skippr:text-xs skippr:text-muted-foreground",
|
|
866
889
|
children: [
|
|
867
890
|
"We sent a 6-digit code to",
|
|
@@ -874,7 +897,7 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
874
897
|
})
|
|
875
898
|
]
|
|
876
899
|
}),
|
|
877
|
-
/* @__PURE__ */
|
|
900
|
+
/* @__PURE__ */ jsxs("form", {
|
|
878
901
|
onSubmit: handleSubmit,
|
|
879
902
|
className: "skippr:flex skippr:flex-col skippr:gap-3",
|
|
880
903
|
children: [
|
|
@@ -909,7 +932,7 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
909
932
|
className: "skippr:size-4 skippr:animate-spin"
|
|
910
933
|
}) : "Verify"
|
|
911
934
|
}),
|
|
912
|
-
/* @__PURE__ */
|
|
935
|
+
/* @__PURE__ */ jsxs("div", {
|
|
913
936
|
className: "skippr:flex skippr:items-center skippr:justify-between skippr:text-xs",
|
|
914
937
|
children: [
|
|
915
938
|
/* @__PURE__ */ jsx4("button", {
|
|
@@ -935,17 +958,17 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
935
958
|
}
|
|
936
959
|
|
|
937
960
|
// src/components/VoiceBarLoginCard.tsx
|
|
938
|
-
import { jsx as jsx5, jsxs as
|
|
961
|
+
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
939
962
|
function VoiceBarLoginCard({ onDismiss }) {
|
|
940
963
|
const ctx = useContext2(LiveAgentContext);
|
|
941
964
|
if (!ctx) {
|
|
942
965
|
throw new Error("VoiceBarLoginCard must be used within a <LiveAgent> provider");
|
|
943
966
|
}
|
|
944
967
|
const { requestOtp, verifyOtp, authError, isAuthSubmitting } = ctx;
|
|
945
|
-
return /* @__PURE__ */
|
|
968
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
946
969
|
className: "skippr:w-[320px] skippr:rounded-[14px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:shadow-[0_10px_28px_rgba(45,45,63,0.16)] skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)]",
|
|
947
970
|
children: [
|
|
948
|
-
/* @__PURE__ */
|
|
971
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
949
972
|
className: "skippr:flex skippr:items-center skippr:justify-between skippr:border-b skippr:border-[rgba(45,45,63,0.06)] skippr:px-[12px] skippr:py-[6px]",
|
|
950
973
|
children: [
|
|
951
974
|
/* @__PURE__ */ jsx5("span", {
|
|
@@ -1178,7 +1201,7 @@ function useVoiceTurn() {
|
|
|
1178
1201
|
}
|
|
1179
1202
|
|
|
1180
1203
|
// src/buddy/BuddyFace.tsx
|
|
1181
|
-
import { jsx as jsx6, jsxs as
|
|
1204
|
+
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1182
1205
|
function BuddyFace({
|
|
1183
1206
|
eyeDx,
|
|
1184
1207
|
eyeDy,
|
|
@@ -1187,7 +1210,7 @@ function BuddyFace({
|
|
|
1187
1210
|
lidsPath,
|
|
1188
1211
|
pupilOpacity
|
|
1189
1212
|
}) {
|
|
1190
|
-
return /* @__PURE__ */
|
|
1213
|
+
return /* @__PURE__ */ jsxs3("svg", {
|
|
1191
1214
|
width: "52",
|
|
1192
1215
|
height: "28",
|
|
1193
1216
|
viewBox: "0 0 52 28",
|
|
@@ -1200,7 +1223,7 @@ function BuddyFace({
|
|
|
1200
1223
|
transformOrigin: "center",
|
|
1201
1224
|
animation: "skippr-blink 4.6s ease-in-out infinite"
|
|
1202
1225
|
},
|
|
1203
|
-
children: /* @__PURE__ */
|
|
1226
|
+
children: /* @__PURE__ */ jsxs3("g", {
|
|
1204
1227
|
opacity: pupilOpacity,
|
|
1205
1228
|
children: [
|
|
1206
1229
|
/* @__PURE__ */ jsx6("ellipse", {
|
|
@@ -1221,7 +1244,7 @@ function BuddyFace({
|
|
|
1221
1244
|
stroke: "#2D2D3F",
|
|
1222
1245
|
strokeWidth: "2"
|
|
1223
1246
|
}),
|
|
1224
|
-
/* @__PURE__ */
|
|
1247
|
+
/* @__PURE__ */ jsxs3("g", {
|
|
1225
1248
|
transform: `translate(${eyeDx} ${eyeDy})`,
|
|
1226
1249
|
children: [
|
|
1227
1250
|
/* @__PURE__ */ jsx6("circle", {
|
|
@@ -1289,7 +1312,7 @@ function PeekBody() {
|
|
|
1289
1312
|
}
|
|
1290
1313
|
|
|
1291
1314
|
// src/buddy/shapes/colorful.tsx
|
|
1292
|
-
import { jsx as jsx8, jsxs as
|
|
1315
|
+
import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1293
1316
|
function BloomBody() {
|
|
1294
1317
|
return /* @__PURE__ */ jsx8("svg", {
|
|
1295
1318
|
width: BODY_SIZE.width,
|
|
@@ -1336,10 +1359,10 @@ function PopBody() {
|
|
|
1336
1359
|
viewBox: "0 0 96 92",
|
|
1337
1360
|
style: { display: "block", overflow: "visible" },
|
|
1338
1361
|
"aria-hidden": "true",
|
|
1339
|
-
children: /* @__PURE__ */
|
|
1362
|
+
children: /* @__PURE__ */ jsxs4("g", {
|
|
1340
1363
|
fill: "#7B52D3",
|
|
1341
1364
|
children: [
|
|
1342
|
-
/* @__PURE__ */
|
|
1365
|
+
/* @__PURE__ */ jsxs4("g", {
|
|
1343
1366
|
className: "skippr-avatar-bub-tail",
|
|
1344
1367
|
children: [
|
|
1345
1368
|
/* @__PURE__ */ jsx8("circle", {
|
|
@@ -1368,10 +1391,10 @@ function RoboBody() {
|
|
|
1368
1391
|
viewBox: "0 0 96 92",
|
|
1369
1392
|
style: { display: "block", overflow: "visible" },
|
|
1370
1393
|
"aria-hidden": "true",
|
|
1371
|
-
children: /* @__PURE__ */
|
|
1394
|
+
children: /* @__PURE__ */ jsxs4("g", {
|
|
1372
1395
|
fill: "#5FA8E8",
|
|
1373
1396
|
children: [
|
|
1374
|
-
/* @__PURE__ */
|
|
1397
|
+
/* @__PURE__ */ jsxs4("g", {
|
|
1375
1398
|
className: "skippr-avatar-antenna",
|
|
1376
1399
|
children: [
|
|
1377
1400
|
/* @__PURE__ */ jsx8("rect", {
|
|
@@ -1411,9 +1434,9 @@ function RoboBody() {
|
|
|
1411
1434
|
}
|
|
1412
1435
|
|
|
1413
1436
|
// src/buddy/shapes/glass.tsx
|
|
1414
|
-
import { jsx as jsx9, jsxs as
|
|
1437
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1415
1438
|
function BoulderBody() {
|
|
1416
|
-
return /* @__PURE__ */
|
|
1439
|
+
return /* @__PURE__ */ jsxs5("svg", {
|
|
1417
1440
|
width: BODY_SIZE.width,
|
|
1418
1441
|
height: BODY_SIZE.height,
|
|
1419
1442
|
viewBox: "0 0 96 92",
|
|
@@ -1438,7 +1461,7 @@ function BoulderBody() {
|
|
|
1438
1461
|
});
|
|
1439
1462
|
}
|
|
1440
1463
|
function KiteBody() {
|
|
1441
|
-
return /* @__PURE__ */
|
|
1464
|
+
return /* @__PURE__ */ jsxs5("svg", {
|
|
1442
1465
|
width: BODY_SIZE.width,
|
|
1443
1466
|
height: BODY_SIZE.height,
|
|
1444
1467
|
viewBox: "0 0 96 92",
|
|
@@ -1464,7 +1487,7 @@ function KiteBody() {
|
|
|
1464
1487
|
});
|
|
1465
1488
|
}
|
|
1466
1489
|
function LoafBody() {
|
|
1467
|
-
return /* @__PURE__ */
|
|
1490
|
+
return /* @__PURE__ */ jsxs5("svg", {
|
|
1468
1491
|
width: BODY_SIZE.width,
|
|
1469
1492
|
height: BODY_SIZE.height,
|
|
1470
1493
|
viewBox: "0 0 96 92",
|
|
@@ -1489,7 +1512,7 @@ function LoafBody() {
|
|
|
1489
1512
|
});
|
|
1490
1513
|
}
|
|
1491
1514
|
function FacetBody() {
|
|
1492
|
-
return /* @__PURE__ */
|
|
1515
|
+
return /* @__PURE__ */ jsxs5("svg", {
|
|
1493
1516
|
width: BODY_SIZE.width,
|
|
1494
1517
|
height: BODY_SIZE.height,
|
|
1495
1518
|
viewBox: "0 0 96 92",
|
|
@@ -1513,7 +1536,7 @@ function FacetBody() {
|
|
|
1513
1536
|
});
|
|
1514
1537
|
}
|
|
1515
1538
|
function BellBody() {
|
|
1516
|
-
return /* @__PURE__ */
|
|
1539
|
+
return /* @__PURE__ */ jsxs5("svg", {
|
|
1517
1540
|
width: BODY_SIZE.width,
|
|
1518
1541
|
height: BODY_SIZE.height,
|
|
1519
1542
|
viewBox: "0 0 96 92",
|
|
@@ -1547,9 +1570,9 @@ function BellBody() {
|
|
|
1547
1570
|
}
|
|
1548
1571
|
|
|
1549
1572
|
// src/buddy/shapes/original.tsx
|
|
1550
|
-
import { jsx as jsx10, jsxs as
|
|
1573
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1551
1574
|
function BoltBody() {
|
|
1552
|
-
return /* @__PURE__ */
|
|
1575
|
+
return /* @__PURE__ */ jsxs6("svg", {
|
|
1553
1576
|
width: BODY_SIZE.width,
|
|
1554
1577
|
height: BODY_SIZE.height,
|
|
1555
1578
|
viewBox: "0 0 96 92",
|
|
@@ -1611,7 +1634,7 @@ function BoltBody() {
|
|
|
1611
1634
|
});
|
|
1612
1635
|
}
|
|
1613
1636
|
function TermBody() {
|
|
1614
|
-
return /* @__PURE__ */
|
|
1637
|
+
return /* @__PURE__ */ jsxs6("svg", {
|
|
1615
1638
|
width: BODY_SIZE.width,
|
|
1616
1639
|
height: BODY_SIZE.height,
|
|
1617
1640
|
viewBox: "0 0 96 92",
|
|
@@ -1656,7 +1679,7 @@ function TermBody() {
|
|
|
1656
1679
|
});
|
|
1657
1680
|
}
|
|
1658
1681
|
function HexBody() {
|
|
1659
|
-
return /* @__PURE__ */
|
|
1682
|
+
return /* @__PURE__ */ jsxs6("svg", {
|
|
1660
1683
|
width: BODY_SIZE.width,
|
|
1661
1684
|
height: BODY_SIZE.height,
|
|
1662
1685
|
viewBox: "0 0 96 92",
|
|
@@ -1698,9 +1721,9 @@ function BubBody() {
|
|
|
1698
1721
|
}
|
|
1699
1722
|
|
|
1700
1723
|
// src/buddy/shapes/pixel.tsx
|
|
1701
|
-
import { jsx as jsx11, jsxs as
|
|
1724
|
+
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1702
1725
|
function TotemBody() {
|
|
1703
|
-
return /* @__PURE__ */
|
|
1726
|
+
return /* @__PURE__ */ jsxs7("svg", {
|
|
1704
1727
|
width: BODY_SIZE.width,
|
|
1705
1728
|
height: BODY_SIZE.height,
|
|
1706
1729
|
viewBox: "0 0 96 92",
|
|
@@ -1754,7 +1777,7 @@ function TotemBody() {
|
|
|
1754
1777
|
});
|
|
1755
1778
|
}
|
|
1756
1779
|
function MelonBody() {
|
|
1757
|
-
return /* @__PURE__ */
|
|
1780
|
+
return /* @__PURE__ */ jsxs7("svg", {
|
|
1758
1781
|
width: BODY_SIZE.width,
|
|
1759
1782
|
height: BODY_SIZE.height,
|
|
1760
1783
|
viewBox: "0 0 96 92",
|
|
@@ -1815,7 +1838,7 @@ function MelonBody() {
|
|
|
1815
1838
|
});
|
|
1816
1839
|
}
|
|
1817
1840
|
function SunnyBody() {
|
|
1818
|
-
return /* @__PURE__ */
|
|
1841
|
+
return /* @__PURE__ */ jsxs7("svg", {
|
|
1819
1842
|
width: BODY_SIZE.width,
|
|
1820
1843
|
height: BODY_SIZE.height,
|
|
1821
1844
|
viewBox: "0 0 96 92",
|
|
@@ -1862,7 +1885,7 @@ function SunnyBody() {
|
|
|
1862
1885
|
});
|
|
1863
1886
|
}
|
|
1864
1887
|
function StormBody() {
|
|
1865
|
-
return /* @__PURE__ */
|
|
1888
|
+
return /* @__PURE__ */ jsxs7("svg", {
|
|
1866
1889
|
width: BODY_SIZE.width,
|
|
1867
1890
|
height: BODY_SIZE.height,
|
|
1868
1891
|
viewBox: "0 0 96 92",
|
|
@@ -1909,7 +1932,7 @@ function StormBody() {
|
|
|
1909
1932
|
});
|
|
1910
1933
|
}
|
|
1911
1934
|
function ReedBody() {
|
|
1912
|
-
return /* @__PURE__ */
|
|
1935
|
+
return /* @__PURE__ */ jsxs7("svg", {
|
|
1913
1936
|
width: BODY_SIZE.width,
|
|
1914
1937
|
height: BODY_SIZE.height,
|
|
1915
1938
|
viewBox: "0 0 96 92",
|
|
@@ -2003,7 +2026,7 @@ var SHAPE_FACE_OFFSET = {
|
|
|
2003
2026
|
};
|
|
2004
2027
|
|
|
2005
2028
|
// src/buddy/BuddyFamilyFace.tsx
|
|
2006
|
-
import { jsx as jsx12, jsxs as
|
|
2029
|
+
import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2007
2030
|
var VIEWBOX_UNITS_PER_PX = 512 / BODY_SIZE.width;
|
|
2008
2031
|
var COLORFUL_FACE = {
|
|
2009
2032
|
rAlmond: "M240.7 287.4C262.7 265.4 262.7 229.6 240.7 207.6C235.7 202.6 230 198.7 224 196C203.2 186.6 178 190.5 160.9 207.6C138.9 229.6 138.9 265.4 160.9 287.4C179.7 306.2 208.5 308.9 230.2 295.6C233.9 293.4 237.5 290.6 240.7 287.4C240.7 287.4 240.7 287.4 240.7 287.4Z",
|
|
@@ -2041,7 +2064,7 @@ function ColorfulFace({
|
|
|
2041
2064
|
const eyeGroupProps = animated ? { className: "skippr-avatar-blink" } : { className: "skippr-buddy-blink" };
|
|
2042
2065
|
const pupilGroupProps = animated ? { className: "skippr-avatar-pupil" } : { transform: pupilShift };
|
|
2043
2066
|
if (asleep) {
|
|
2044
|
-
return /* @__PURE__ */
|
|
2067
|
+
return /* @__PURE__ */ jsxs8("svg", {
|
|
2045
2068
|
width: BODY_SIZE.width,
|
|
2046
2069
|
height: BODY_SIZE.width,
|
|
2047
2070
|
viewBox: "0 0 512 512",
|
|
@@ -2067,7 +2090,7 @@ function ColorfulFace({
|
|
|
2067
2090
|
]
|
|
2068
2091
|
});
|
|
2069
2092
|
}
|
|
2070
|
-
return /* @__PURE__ */
|
|
2093
|
+
return /* @__PURE__ */ jsxs8("svg", {
|
|
2071
2094
|
width: BODY_SIZE.width,
|
|
2072
2095
|
height: BODY_SIZE.width,
|
|
2073
2096
|
viewBox: "0 0 512 512",
|
|
@@ -2087,10 +2110,10 @@ function ColorfulFace({
|
|
|
2087
2110
|
d: COLORFUL_FACE.lAlmond
|
|
2088
2111
|
})
|
|
2089
2112
|
}),
|
|
2090
|
-
/* @__PURE__ */
|
|
2113
|
+
/* @__PURE__ */ jsxs8("g", {
|
|
2091
2114
|
className: animated ? "skippr-avatar-eyes" : undefined,
|
|
2092
2115
|
children: [
|
|
2093
|
-
/* @__PURE__ */
|
|
2116
|
+
/* @__PURE__ */ jsxs8("g", {
|
|
2094
2117
|
...eyeGroupProps,
|
|
2095
2118
|
children: [
|
|
2096
2119
|
/* @__PURE__ */ jsx12("path", {
|
|
@@ -2099,7 +2122,7 @@ function ColorfulFace({
|
|
|
2099
2122
|
}),
|
|
2100
2123
|
/* @__PURE__ */ jsx12("g", {
|
|
2101
2124
|
clipPath: `url(#${clipId}r)`,
|
|
2102
|
-
children: /* @__PURE__ */
|
|
2125
|
+
children: /* @__PURE__ */ jsxs8("g", {
|
|
2103
2126
|
...pupilGroupProps,
|
|
2104
2127
|
children: [
|
|
2105
2128
|
/* @__PURE__ */ jsx12("circle", {
|
|
@@ -2117,7 +2140,7 @@ function ColorfulFace({
|
|
|
2117
2140
|
})
|
|
2118
2141
|
]
|
|
2119
2142
|
}),
|
|
2120
|
-
/* @__PURE__ */
|
|
2143
|
+
/* @__PURE__ */ jsxs8("g", {
|
|
2121
2144
|
...eyeGroupProps,
|
|
2122
2145
|
children: [
|
|
2123
2146
|
/* @__PURE__ */ jsx12("path", {
|
|
@@ -2126,7 +2149,7 @@ function ColorfulFace({
|
|
|
2126
2149
|
}),
|
|
2127
2150
|
/* @__PURE__ */ jsx12("g", {
|
|
2128
2151
|
clipPath: `url(#${clipId}l)`,
|
|
2129
|
-
children: /* @__PURE__ */
|
|
2152
|
+
children: /* @__PURE__ */ jsxs8("g", {
|
|
2130
2153
|
...pupilGroupProps,
|
|
2131
2154
|
children: [
|
|
2132
2155
|
/* @__PURE__ */ jsx12("circle", {
|
|
@@ -2160,7 +2183,7 @@ function aimPupil(center, rest, eyeDx, eyeDy) {
|
|
|
2160
2183
|
}
|
|
2161
2184
|
function PixelFace({ eyeDx, eyeDy, asleep }) {
|
|
2162
2185
|
if (asleep) {
|
|
2163
|
-
return /* @__PURE__ */
|
|
2186
|
+
return /* @__PURE__ */ jsxs8("svg", {
|
|
2164
2187
|
width: BODY_SIZE.width,
|
|
2165
2188
|
height: BODY_SIZE.width,
|
|
2166
2189
|
viewBox: "0 0 512 512",
|
|
@@ -2189,7 +2212,7 @@ function PixelFace({ eyeDx, eyeDy, asleep }) {
|
|
|
2189
2212
|
const tracking = eyeDx !== 0 || eyeDy !== 0;
|
|
2190
2213
|
const right = tracking ? aimPupil(PIXEL_FACE.r, PIXEL_FACE.pupilRest.r, eyeDx, eyeDy) : PIXEL_FACE.pupilRest.r;
|
|
2191
2214
|
const left = tracking ? aimPupil(PIXEL_FACE.l, PIXEL_FACE.pupilRest.l, eyeDx, eyeDy) : PIXEL_FACE.pupilRest.l;
|
|
2192
|
-
return /* @__PURE__ */
|
|
2215
|
+
return /* @__PURE__ */ jsxs8("svg", {
|
|
2193
2216
|
width: BODY_SIZE.width,
|
|
2194
2217
|
height: BODY_SIZE.width,
|
|
2195
2218
|
viewBox: "0 0 512 512",
|
|
@@ -2197,7 +2220,7 @@ function PixelFace({ eyeDx, eyeDy, asleep }) {
|
|
|
2197
2220
|
"data-testid": "buddy-face-pixel",
|
|
2198
2221
|
"aria-hidden": "true",
|
|
2199
2222
|
children: [
|
|
2200
|
-
/* @__PURE__ */
|
|
2223
|
+
/* @__PURE__ */ jsxs8("g", {
|
|
2201
2224
|
className: "skippr-buddy-blink",
|
|
2202
2225
|
children: [
|
|
2203
2226
|
/* @__PURE__ */ jsx12("circle", {
|
|
@@ -2216,7 +2239,7 @@ function PixelFace({ eyeDx, eyeDy, asleep }) {
|
|
|
2216
2239
|
})
|
|
2217
2240
|
]
|
|
2218
2241
|
}),
|
|
2219
|
-
/* @__PURE__ */
|
|
2242
|
+
/* @__PURE__ */ jsxs8("g", {
|
|
2220
2243
|
className: "skippr-buddy-blink",
|
|
2221
2244
|
children: [
|
|
2222
2245
|
/* @__PURE__ */ jsx12("circle", {
|
|
@@ -2240,7 +2263,7 @@ function PixelFace({ eyeDx, eyeDy, asleep }) {
|
|
|
2240
2263
|
}
|
|
2241
2264
|
|
|
2242
2265
|
// src/buddy/BuddyCreature.tsx
|
|
2243
|
-
import { jsx as jsx13, jsxs as
|
|
2266
|
+
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2244
2267
|
var COLORFUL_SHAPES = new Set([
|
|
2245
2268
|
BUDDY_SHAPE.Bloom,
|
|
2246
2269
|
BUDDY_SHAPE.Wobble,
|
|
@@ -2302,7 +2325,7 @@ function BuddyCreature({ shape, mode, eyeDx, eyeDy, isTalking }) {
|
|
|
2302
2325
|
const offset = SHAPE_FACE_OFFSET[shape];
|
|
2303
2326
|
const asleep = mode === BUDDY_MODE.Sleep;
|
|
2304
2327
|
const colorfulAnimated = isColorful && mode !== BUDDY_MODE.Sleep && mode !== BUDDY_MODE.Happy;
|
|
2305
|
-
return /* @__PURE__ */
|
|
2328
|
+
return /* @__PURE__ */ jsxs9("span", {
|
|
2306
2329
|
"data-testid": `buddy-shape-${shape}`,
|
|
2307
2330
|
style: {
|
|
2308
2331
|
position: "relative",
|
|
@@ -2343,7 +2366,7 @@ function BuddyCreature({ shape, mode, eyeDx, eyeDy, isTalking }) {
|
|
|
2343
2366
|
pupilOpacity: face.pupilOpacity
|
|
2344
2367
|
})
|
|
2345
2368
|
}),
|
|
2346
|
-
mode === BUDDY_MODE.Sleep && /* @__PURE__ */
|
|
2369
|
+
mode === BUDDY_MODE.Sleep && /* @__PURE__ */ jsxs9("span", {
|
|
2347
2370
|
style: {
|
|
2348
2371
|
position: "absolute",
|
|
2349
2372
|
bottom: "calc(100% - 10px)",
|
|
@@ -2774,7 +2797,7 @@ function useBuddyIdleMode({
|
|
|
2774
2797
|
}
|
|
2775
2798
|
|
|
2776
2799
|
// src/buddy/BuddyVoiceBar.tsx
|
|
2777
|
-
import { jsx as jsx14, jsxs as
|
|
2800
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2778
2801
|
var WAKE_BUBBLE_MS = 2100;
|
|
2779
2802
|
var FOCUS_RING = {
|
|
2780
2803
|
outline: "2px solid var(--skippr-brand, #2bc0ae)",
|
|
@@ -2833,7 +2856,7 @@ var PEEK_CLASS = {
|
|
|
2833
2856
|
bottom: "skippr-peek-bottom"
|
|
2834
2857
|
};
|
|
2835
2858
|
function BuddyLoadingDots() {
|
|
2836
|
-
return /* @__PURE__ */
|
|
2859
|
+
return /* @__PURE__ */ jsxs10("span", {
|
|
2837
2860
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
2838
2861
|
"aria-hidden": "true",
|
|
2839
2862
|
children: [
|
|
@@ -3034,7 +3057,7 @@ function BuddyVoiceBar({ revealed }) {
|
|
|
3034
3057
|
};
|
|
3035
3058
|
return /* @__PURE__ */ jsx14("div", {
|
|
3036
3059
|
style: isConnected ? activeWrapperStyle : { ...edgeWrapperStyle(edgeDrag.pos), touchAction: "none" },
|
|
3037
|
-
children: isConnected ? /* @__PURE__ */
|
|
3060
|
+
children: isConnected ? /* @__PURE__ */ jsxs10("div", {
|
|
3038
3061
|
ref: (node) => {
|
|
3039
3062
|
containerRef.current = node;
|
|
3040
3063
|
},
|
|
@@ -3077,13 +3100,13 @@ function BuddyVoiceBar({ revealed }) {
|
|
|
3077
3100
|
"aria-label": "Close buddy session",
|
|
3078
3101
|
title: "Close",
|
|
3079
3102
|
className: `skippr:absolute skippr:-right-1 skippr:-top-1 skippr:flex skippr:h-6 skippr:w-6 skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-[#5c5850] ${isDisconnecting ? "skippr:cursor-default" : "skippr:cursor-pointer skippr:bg-white/80 skippr:shadow-[0_2px_6px_rgba(45,45,63,0.14)] skippr:hover:text-[#2D2D3F]"}`,
|
|
3080
|
-
children: /* @__PURE__ */
|
|
3103
|
+
children: /* @__PURE__ */ jsxs10("span", {
|
|
3081
3104
|
className: "skippr:relative skippr:flex skippr:size-5 skippr:items-center skippr:justify-center",
|
|
3082
3105
|
children: [
|
|
3083
3106
|
/* @__PURE__ */ jsx14(X, {
|
|
3084
3107
|
className: `skippr:size-3.5 skippr:transition-opacity skippr:duration-200 ${isDisconnecting ? "skippr:opacity-40" : ""}`
|
|
3085
3108
|
}),
|
|
3086
|
-
isDisconnecting && /* @__PURE__ */
|
|
3109
|
+
isDisconnecting && /* @__PURE__ */ jsxs10("svg", {
|
|
3087
3110
|
viewBox: "0 0 24 24",
|
|
3088
3111
|
fill: "none",
|
|
3089
3112
|
"aria-hidden": "true",
|
|
@@ -3111,7 +3134,7 @@ function BuddyVoiceBar({ revealed }) {
|
|
|
3111
3134
|
]
|
|
3112
3135
|
})
|
|
3113
3136
|
}),
|
|
3114
|
-
showWakeBubble ? /* @__PURE__ */
|
|
3137
|
+
showWakeBubble ? /* @__PURE__ */ jsxs10("div", {
|
|
3115
3138
|
className: "skippr:absolute skippr:-top-8 skippr:left-1/2 skippr:flex skippr:-translate-x-1/2 skippr:items-center skippr:gap-1.5 skippr:whitespace-nowrap skippr:rounded-full skippr:bg-white skippr:px-3 skippr:py-1 skippr:text-[11px] skippr:font-medium skippr:text-[#2D2D3F] skippr:shadow-[0_6px_16px_rgba(45,45,63,0.14)]",
|
|
3116
3139
|
role: "status",
|
|
3117
3140
|
children: [
|
|
@@ -3134,15 +3157,15 @@ function BuddyVoiceBar({ revealed }) {
|
|
|
3134
3157
|
children: "hold me down to talk"
|
|
3135
3158
|
})
|
|
3136
3159
|
]
|
|
3137
|
-
}) : /* @__PURE__ */
|
|
3160
|
+
}) : /* @__PURE__ */ jsxs10("div", {
|
|
3138
3161
|
ref: setHoverContainer,
|
|
3139
3162
|
style: { position: "relative", display: "flex" },
|
|
3140
3163
|
children: [
|
|
3141
|
-
/* @__PURE__ */
|
|
3164
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
3142
3165
|
className: isStandingBy || isIdleLauncherHovered ? "skippr-peek-out" : PEEK_CLASS[edgeDrag.pos.edge],
|
|
3143
3166
|
style: { display: "flex", position: "relative" },
|
|
3144
3167
|
children: [
|
|
3145
|
-
/* @__PURE__ */
|
|
3168
|
+
/* @__PURE__ */ jsxs10("button", {
|
|
3146
3169
|
ref: (node) => {
|
|
3147
3170
|
containerRef.current = node;
|
|
3148
3171
|
},
|
|
@@ -3190,7 +3213,7 @@ function BuddyVoiceBar({ revealed }) {
|
|
|
3190
3213
|
]
|
|
3191
3214
|
}),
|
|
3192
3215
|
isIdleLauncherHovered && !loginOpen && /* @__PURE__ */ jsx14(ConsentBubble, {
|
|
3193
|
-
|
|
3216
|
+
template: CONSENT_NOTICE_AGENT_SESSION_START,
|
|
3194
3217
|
className: "skippr:absolute skippr:bottom-[calc(100%+8px)] skippr:w-[150px]",
|
|
3195
3218
|
style: edgeDrag.pos.edge === "left" ? { left: 0 } : edgeDrag.pos.edge === "right" ? { right: 0 } : { left: "50%", transform: "translateX(-50%)" }
|
|
3196
3219
|
})
|
|
@@ -4062,7 +4085,8 @@ function useAvailableModules({
|
|
|
4062
4085
|
enabled,
|
|
4063
4086
|
bearerToken,
|
|
4064
4087
|
authedFetch,
|
|
4065
|
-
agentId
|
|
4088
|
+
agentId,
|
|
4089
|
+
locale
|
|
4066
4090
|
}) {
|
|
4067
4091
|
const [modules, setModules] = useState12([]);
|
|
4068
4092
|
const [defaultSelection, setDefaultSelection] = useState12(EMPTY_DEFAULT);
|
|
@@ -4078,7 +4102,13 @@ function useAvailableModules({
|
|
|
4078
4102
|
setIsLoading(true);
|
|
4079
4103
|
setError(null);
|
|
4080
4104
|
try {
|
|
4081
|
-
const
|
|
4105
|
+
const params = new URLSearchParams;
|
|
4106
|
+
if (agentId)
|
|
4107
|
+
params.set("agentId", agentId);
|
|
4108
|
+
if (locale)
|
|
4109
|
+
params.set("locale", locale);
|
|
4110
|
+
const search = params.toString();
|
|
4111
|
+
const query = search ? `?${search}` : "";
|
|
4082
4112
|
const resp = await authedFetch(`${API_URL3}/v1/modules/available${query}`, {
|
|
4083
4113
|
signal: signal ?? null
|
|
4084
4114
|
});
|
|
@@ -4103,7 +4133,7 @@ function useAvailableModules({
|
|
|
4103
4133
|
setHasResolved(true);
|
|
4104
4134
|
}
|
|
4105
4135
|
}
|
|
4106
|
-
}, [authedFetch, agentId]);
|
|
4136
|
+
}, [authedFetch, agentId, locale]);
|
|
4107
4137
|
useEffect15(() => {
|
|
4108
4138
|
if (!enabled || !bearerToken)
|
|
4109
4139
|
return;
|
|
@@ -4759,6 +4789,31 @@ function launcherPopsDown(bottomPx) {
|
|
|
4759
4789
|
return bottomPx + LAUNCHER_HEIGHT_PX / 2 > window.innerHeight / 2;
|
|
4760
4790
|
}
|
|
4761
4791
|
|
|
4792
|
+
// src/lib/locale.ts
|
|
4793
|
+
import { useSyncExternalStore } from "react";
|
|
4794
|
+
function detectLocale(configLocale) {
|
|
4795
|
+
return firstNonBlank(configLocale) ?? firstNonBlank(document.documentElement.lang) ?? firstNonBlank(navigator.language);
|
|
4796
|
+
}
|
|
4797
|
+
function useDetectedLocale(configLocale) {
|
|
4798
|
+
useSyncExternalStore(subscribeToHtmlLang, readHtmlLang, readServerHtmlLang);
|
|
4799
|
+
return detectLocale(configLocale);
|
|
4800
|
+
}
|
|
4801
|
+
function subscribeToHtmlLang(onChange) {
|
|
4802
|
+
const observer = new MutationObserver(onChange);
|
|
4803
|
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ["lang"] });
|
|
4804
|
+
return () => observer.disconnect();
|
|
4805
|
+
}
|
|
4806
|
+
function readHtmlLang() {
|
|
4807
|
+
return document.documentElement.lang;
|
|
4808
|
+
}
|
|
4809
|
+
function readServerHtmlLang() {
|
|
4810
|
+
return "";
|
|
4811
|
+
}
|
|
4812
|
+
function firstNonBlank(value) {
|
|
4813
|
+
const trimmed = value?.trim();
|
|
4814
|
+
return trimmed ? trimmed : undefined;
|
|
4815
|
+
}
|
|
4816
|
+
|
|
4762
4817
|
// src/lib/splashSurfaces.ts
|
|
4763
4818
|
var NO_SPLASH_SURFACES = {
|
|
4764
4819
|
applies: false,
|
|
@@ -5074,7 +5129,7 @@ function traceRing(path, durationMs, onFrame, onDone) {
|
|
|
5074
5129
|
}
|
|
5075
5130
|
|
|
5076
5131
|
// src/components/AgentCursor.tsx
|
|
5077
|
-
import { jsx as jsx18, jsxs as
|
|
5132
|
+
import { jsx as jsx18, jsxs as jsxs11, Fragment } from "react/jsx-runtime";
|
|
5078
5133
|
var Z_INDEX = 2147483646;
|
|
5079
5134
|
var BRAND_COLOR = "var(--skippr-brand, #2bc0ae)";
|
|
5080
5135
|
var GLIDE_EASE = "cubic-bezier(0.45, 0, 0.25, 1)";
|
|
@@ -5305,7 +5360,7 @@ function AgentCursor({
|
|
|
5305
5360
|
return null;
|
|
5306
5361
|
const rippleCenter = ringBox ? centerOf(ringBox) : null;
|
|
5307
5362
|
const drawing = phase === "travel" || phase === "drawing";
|
|
5308
|
-
return /* @__PURE__ */
|
|
5363
|
+
return /* @__PURE__ */ jsxs11("div", {
|
|
5309
5364
|
"data-skippr-private": "true",
|
|
5310
5365
|
"aria-hidden": "true",
|
|
5311
5366
|
children: [
|
|
@@ -5322,7 +5377,7 @@ function AgentCursor({
|
|
|
5322
5377
|
style: { strokeDasharray: "0 99999" }
|
|
5323
5378
|
})
|
|
5324
5379
|
}),
|
|
5325
|
-
phase === "done" && ringBox && /* @__PURE__ */
|
|
5380
|
+
phase === "done" && ringBox && /* @__PURE__ */ jsxs11(Fragment, {
|
|
5326
5381
|
children: [
|
|
5327
5382
|
/* @__PURE__ */ jsx18("div", {
|
|
5328
5383
|
style: ringBoxStyle(ringBox, Z_INDEX),
|
|
@@ -7163,7 +7218,7 @@ function useLauncherDrag(containerRef, onDrop, followRefs, reportDragging, enabl
|
|
|
7163
7218
|
}
|
|
7164
7219
|
|
|
7165
7220
|
// src/components/AdoptionBubble.tsx
|
|
7166
|
-
import { jsx as jsx19, jsxs as
|
|
7221
|
+
import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
7167
7222
|
function AdoptionBubble({
|
|
7168
7223
|
goal,
|
|
7169
7224
|
onAttend,
|
|
@@ -7177,7 +7232,7 @@ function AdoptionBubble({
|
|
|
7177
7232
|
transitionDelay: hidden ? `${exitDelayMs}ms` : "0ms"
|
|
7178
7233
|
},
|
|
7179
7234
|
className: cn("skippr:group skippr:relative", "skippr:transition-opacity skippr:duration-300", "skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)_backwards]", hidden && "skippr:opacity-0 skippr:pointer-events-none"),
|
|
7180
|
-
children: /* @__PURE__ */
|
|
7235
|
+
children: /* @__PURE__ */ jsxs12("button", {
|
|
7181
7236
|
type: "button",
|
|
7182
7237
|
onClick: () => onAttend(goal),
|
|
7183
7238
|
className: cn("skippr:flex skippr:max-w-72 skippr:items-center skippr:gap-2", "skippr:rounded-[14px] skippr:bg-amber-50 skippr:py-1.5 skippr:pr-3 skippr:pl-1.5", "skippr:text-left skippr:shadow-[0_8px_24px_rgba(0,0,0,0.18)]", "skippr:transition-colors skippr:cursor-pointer skippr:hover:bg-amber-100", "skippr:focus-visible:outline-none skippr:focus-visible:ring-2 skippr:focus-visible:ring-bubble/60"),
|
|
@@ -7202,7 +7257,7 @@ function AdoptionBubble({
|
|
|
7202
7257
|
}
|
|
7203
7258
|
|
|
7204
7259
|
// src/components/ModulePill.tsx
|
|
7205
|
-
import { jsx as jsx20, jsxs as
|
|
7260
|
+
import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
7206
7261
|
var RING_RADIUS = 8;
|
|
7207
7262
|
var RING_CIRCUMFERENCE = 2 * Math.PI * RING_RADIUS;
|
|
7208
7263
|
function ModulePill({ module, onSelect }) {
|
|
@@ -7210,12 +7265,12 @@ function ModulePill({ module, onSelect }) {
|
|
|
7210
7265
|
const totalPhases = module.totalPhases;
|
|
7211
7266
|
const showProgress = module.mode !== AGENT_MODE.AlwaysOn && totalPhases > 0;
|
|
7212
7267
|
const progressFraction = showProgress ? Math.min(completedPhases / totalPhases, 1) : 0;
|
|
7213
|
-
return /* @__PURE__ */
|
|
7268
|
+
return /* @__PURE__ */ jsxs13("button", {
|
|
7214
7269
|
type: "button",
|
|
7215
7270
|
onClick: () => onSelect(module.id),
|
|
7216
7271
|
className: cn("skippr:flex skippr:w-40 skippr:items-center skippr:gap-1.5 skippr:whitespace-nowrap", "skippr:rounded-[14px] skippr:bg-white skippr:px-3 skippr:py-1.5", "skippr:text-[13px] skippr:font-medium skippr:text-black", "skippr:shadow-[0_8px_24px_rgba(0,0,0,0.18)]", "skippr:transition-colors skippr:cursor-pointer skippr:hover:bg-neutral-100", "skippr:animate-[skippr-bubble-in_0.28s_ease-out]", "skippr:focus-visible:outline-none skippr:focus-visible:ring-2 skippr:focus-visible:ring-bubble/60"),
|
|
7217
7272
|
children: [
|
|
7218
|
-
showProgress && /* @__PURE__ */
|
|
7273
|
+
showProgress && /* @__PURE__ */ jsxs13("svg", {
|
|
7219
7274
|
viewBox: "0 0 20 20",
|
|
7220
7275
|
className: "skippr:size-4 skippr:shrink-0 skippr:-rotate-90",
|
|
7221
7276
|
"aria-hidden": "true",
|
|
@@ -7245,7 +7300,7 @@ function ModulePill({ module, onSelect }) {
|
|
|
7245
7300
|
className: "skippr:min-w-0 skippr:flex-1 skippr:truncate skippr:text-left",
|
|
7246
7301
|
children: module.name
|
|
7247
7302
|
}),
|
|
7248
|
-
showProgress && /* @__PURE__ */
|
|
7303
|
+
showProgress && /* @__PURE__ */ jsxs13("span", {
|
|
7249
7304
|
className: cn("skippr:ml-0.5 skippr:inline-flex skippr:shrink-0 skippr:items-center skippr:gap-1 skippr:rounded-full", "skippr:bg-black/[0.07] skippr:px-1.5 skippr:py-0.5", "skippr:text-[10px] skippr:font-semibold"),
|
|
7250
7305
|
children: [
|
|
7251
7306
|
completedPhases,
|
|
@@ -7258,7 +7313,7 @@ function ModulePill({ module, onSelect }) {
|
|
|
7258
7313
|
}
|
|
7259
7314
|
|
|
7260
7315
|
// src/components/MinimizedBubble.tsx
|
|
7261
|
-
import { jsx as jsx21, jsxs as
|
|
7316
|
+
import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
7262
7317
|
var GOALS_AUTO_HIDE_MS = 6000;
|
|
7263
7318
|
var GOAL_FADE_OUT_MS = 300;
|
|
7264
7319
|
var GOAL_APPEAR_STAGGER_MS = 150;
|
|
@@ -7330,7 +7385,7 @@ function IdleLauncher({
|
|
|
7330
7385
|
onStart,
|
|
7331
7386
|
onChat
|
|
7332
7387
|
}) {
|
|
7333
|
-
return /* @__PURE__ */
|
|
7388
|
+
return /* @__PURE__ */ jsxs14("div", {
|
|
7334
7389
|
className: cn("skippr:flex skippr:h-[48px] skippr:items-center", "skippr:bg-launcher skippr:p-1.5 skippr:shadow-[-6px_8px_30px_rgba(15,18,26,0.32)]", "skippr:[animation:skippr-orb-in_320ms_cubic-bezier(0.34,1.3,0.64,1)]", "skippr:transition-transform skippr:duration-[400ms] skippr:ease-[cubic-bezier(0.22,1,0.36,1)]", position === "right" ? "skippr:rounded-l-[18px] skippr:origin-right" : "skippr:rounded-r-[18px] skippr:origin-left", position === "right" ? isHovered || logoUrl ? "skippr:translate-x-3" : "skippr:translate-x-7" : isHovered || logoUrl ? "skippr:-translate-x-3" : "skippr:-translate-x-7"),
|
|
7335
7390
|
style: { gap: isHovered ? 8 : 0 },
|
|
7336
7391
|
children: [
|
|
@@ -7357,7 +7412,7 @@ function WelcomeBubble({
|
|
|
7357
7412
|
const timer = setTimeout(onDismiss, 5000);
|
|
7358
7413
|
return () => clearTimeout(timer);
|
|
7359
7414
|
}, [onDismiss]);
|
|
7360
|
-
return /* @__PURE__ */
|
|
7415
|
+
return /* @__PURE__ */ jsxs14("button", {
|
|
7361
7416
|
type: "button",
|
|
7362
7417
|
className: cn("skippr:absolute", popsDown ? "skippr:top-full skippr:mt-3" : "skippr:bottom-full skippr:mb-3", "skippr:max-w-64 skippr:rounded-xl skippr:bg-card skippr:shadow-lg", "skippr:border skippr:border-border skippr:px-4 skippr:py-3", "skippr:text-sm skippr:text-foreground skippr:leading-relaxed skippr:text-left", "skippr:animate-[skippr-fade-in_0.3s_ease-out]", "skippr:cursor-pointer", position === "right" ? "skippr:right-0" : "skippr:left-0"),
|
|
7363
7418
|
onClick,
|
|
@@ -7485,12 +7540,12 @@ function MinimizedBubble({
|
|
|
7485
7540
|
expandPanel();
|
|
7486
7541
|
}
|
|
7487
7542
|
};
|
|
7488
|
-
return /* @__PURE__ */
|
|
7543
|
+
return /* @__PURE__ */ jsxs14("div", {
|
|
7489
7544
|
ref: hoverContainerRef,
|
|
7490
7545
|
style: { bottom: launcherBottomPx },
|
|
7491
7546
|
className: cn("skippr:fixed skippr:z-[9999] skippr:touch-none", "skippr:flex skippr:items-center skippr:gap-2", position === "right" ? "skippr:right-3" : "skippr:left-3"),
|
|
7492
7547
|
children: [
|
|
7493
|
-
(modulePills.length > 0 || visibleGoals.length > 0) && /* @__PURE__ */
|
|
7548
|
+
(modulePills.length > 0 || visibleGoals.length > 0) && /* @__PURE__ */ jsxs14("div", {
|
|
7494
7549
|
className: cn("skippr:absolute skippr:gap-2", popsDown ? "skippr:top-full skippr:mt-3 skippr:flex skippr:flex-col-reverse" : "skippr:bottom-full skippr:mb-3 skippr:flex skippr:flex-col", position === "right" ? "skippr:right-0 skippr:items-end" : "skippr:left-0 skippr:items-start"),
|
|
7495
7550
|
children: [
|
|
7496
7551
|
visibleGoals.map((goal, index2) => /* @__PURE__ */ jsx21(AdoptionBubble, {
|
|
@@ -7522,11 +7577,11 @@ function MinimizedBubble({
|
|
|
7522
7577
|
onDismissWelcome();
|
|
7523
7578
|
}
|
|
7524
7579
|
}),
|
|
7525
|
-
/* @__PURE__ */
|
|
7580
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
7526
7581
|
className: "skippr:relative",
|
|
7527
7582
|
children: [
|
|
7528
7583
|
isLauncherHovered && /* @__PURE__ */ jsx21(ConsentBubble, {
|
|
7529
|
-
|
|
7584
|
+
template: CONSENT_NOTICE_SESSION_START,
|
|
7530
7585
|
className: cn("skippr:absolute skippr:bottom-[calc(100%+8px)]", position === "right" ? "skippr:right-0" : "skippr:left-0")
|
|
7531
7586
|
}),
|
|
7532
7587
|
/* @__PURE__ */ jsx21(IdleLauncher, {
|
|
@@ -8068,17 +8123,17 @@ function useMicLevel(enabled) {
|
|
|
8068
8123
|
}
|
|
8069
8124
|
|
|
8070
8125
|
// src/components/PausedCountdown.tsx
|
|
8071
|
-
import { jsxs as
|
|
8126
|
+
import { jsxs as jsxs15 } from "react/jsx-runtime";
|
|
8072
8127
|
function PausedCountdown({ secondsRemaining }) {
|
|
8073
8128
|
const minutes = Math.floor(secondsRemaining / 60);
|
|
8074
8129
|
const seconds = String(secondsRemaining % 60).padStart(2, "0");
|
|
8075
|
-
return /* @__PURE__ */
|
|
8130
|
+
return /* @__PURE__ */ jsxs15("span", {
|
|
8076
8131
|
role: "timer",
|
|
8077
8132
|
"aria-label": `Agent closes in ${secondsRemaining} seconds`,
|
|
8078
8133
|
className: "skippr:flex skippr:h-[38px] skippr:items-center skippr:whitespace-nowrap skippr:px-1 skippr:text-[13px] skippr:font-medium skippr:text-neutral-500 skippr:[animation:skippr-stage-fade_240ms_ease-out]",
|
|
8079
8134
|
children: [
|
|
8080
8135
|
"Agent closes in",
|
|
8081
|
-
/* @__PURE__ */
|
|
8136
|
+
/* @__PURE__ */ jsxs15("span", {
|
|
8082
8137
|
className: "skippr:ml-1 skippr:font-semibold skippr:tabular-nums skippr:text-bubble",
|
|
8083
8138
|
children: [
|
|
8084
8139
|
minutes,
|
|
@@ -8091,15 +8146,15 @@ function PausedCountdown({ secondsRemaining }) {
|
|
|
8091
8146
|
}
|
|
8092
8147
|
|
|
8093
8148
|
// src/components/PushToTalkHint.tsx
|
|
8094
|
-
import { jsx as jsx22, jsxs as
|
|
8149
|
+
import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
8095
8150
|
function PushToTalkHint() {
|
|
8096
|
-
return /* @__PURE__ */
|
|
8151
|
+
return /* @__PURE__ */ jsxs16("div", {
|
|
8097
8152
|
className: cn("skippr:absolute skippr:top-full skippr:left-2 skippr:mt-2 skippr:flex skippr:w-fit skippr:items-center skippr:gap-1.5 skippr:whitespace-nowrap skippr:rounded-full skippr:bg-[#f4ecd8] skippr:px-2.5 skippr:py-1 skippr:text-[10px] skippr:font-medium skippr:text-black skippr:shadow-[0_4px_14px_rgba(0,0,0,0.12)] skippr:[animation:skippr-agent-in_200ms_ease-out]"),
|
|
8098
8153
|
children: [
|
|
8099
8154
|
/* @__PURE__ */ jsx22("span", {
|
|
8100
8155
|
children: "Hold the"
|
|
8101
8156
|
}),
|
|
8102
|
-
/* @__PURE__ */
|
|
8157
|
+
/* @__PURE__ */ jsxs16("kbd", {
|
|
8103
8158
|
className: "skippr:flex skippr:items-center skippr:gap-0.5 skippr:rounded skippr:border skippr:border-black/25 skippr:bg-white/70 skippr:px-1.5 skippr:py-0.5 skippr:font-mono skippr:text-[11px] skippr:leading-none skippr:text-black",
|
|
8104
8159
|
children: [
|
|
8105
8160
|
/* @__PURE__ */ jsx22("span", {
|
|
@@ -8122,7 +8177,7 @@ function PushToTalkHint() {
|
|
|
8122
8177
|
}
|
|
8123
8178
|
|
|
8124
8179
|
// src/components/PushToTalkMic.tsx
|
|
8125
|
-
import { jsx as jsx23, jsxs as
|
|
8180
|
+
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
8126
8181
|
function PushToTalkMic({
|
|
8127
8182
|
isCapturingSpeech,
|
|
8128
8183
|
showLabel,
|
|
@@ -8133,7 +8188,7 @@ function PushToTalkMic({
|
|
|
8133
8188
|
const holdPushToTalk = usePointerHold(onStart, onCommit);
|
|
8134
8189
|
const label = isCapturingSpeech ? "Release to send" : "Hold to talk";
|
|
8135
8190
|
const withLabel = isCapturingSpeech || showLabel;
|
|
8136
|
-
return /* @__PURE__ */
|
|
8191
|
+
return /* @__PURE__ */ jsxs17("button", {
|
|
8137
8192
|
type: "button",
|
|
8138
8193
|
"data-skippr-no-drag": "",
|
|
8139
8194
|
onPointerDown: holdPushToTalk,
|
|
@@ -8170,9 +8225,9 @@ function PushToTalkMic({
|
|
|
8170
8225
|
}
|
|
8171
8226
|
|
|
8172
8227
|
// src/components/StopActionsIcon.tsx
|
|
8173
|
-
import { jsx as jsx24, jsxs as
|
|
8228
|
+
import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
8174
8229
|
function StopActionsIcon({ className }) {
|
|
8175
|
-
return /* @__PURE__ */
|
|
8230
|
+
return /* @__PURE__ */ jsxs18("svg", {
|
|
8176
8231
|
viewBox: "0 0 24 24",
|
|
8177
8232
|
fill: "none",
|
|
8178
8233
|
stroke: "currentColor",
|
|
@@ -8196,12 +8251,12 @@ function StopActionsIcon({ className }) {
|
|
|
8196
8251
|
}
|
|
8197
8252
|
|
|
8198
8253
|
// src/components/TapToTalkMic.tsx
|
|
8199
|
-
import { jsx as jsx25, jsxs as
|
|
8254
|
+
import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
8200
8255
|
function TapToTalkMic({ isCapturingSpeech, showLabel, onToggle }) {
|
|
8201
8256
|
const { barRefs, isTalking } = useMicLevel(isCapturingSpeech);
|
|
8202
8257
|
const label = isCapturingSpeech ? "Tap to send" : "Tap to talk";
|
|
8203
8258
|
const withLabel = isCapturingSpeech || showLabel;
|
|
8204
|
-
return /* @__PURE__ */
|
|
8259
|
+
return /* @__PURE__ */ jsxs19("button", {
|
|
8205
8260
|
type: "button",
|
|
8206
8261
|
onClick: onToggle,
|
|
8207
8262
|
"aria-label": "Tap to talk",
|
|
@@ -8237,7 +8292,7 @@ function TapToTalkMic({ isCapturingSpeech, showLabel, onToggle }) {
|
|
|
8237
8292
|
}
|
|
8238
8293
|
|
|
8239
8294
|
// src/components/SessionControlBar.tsx
|
|
8240
|
-
import { jsx as jsx26, jsxs as
|
|
8295
|
+
import { jsx as jsx26, jsxs as jsxs20, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
8241
8296
|
var STANDBY_BAR_WIDTH = 168;
|
|
8242
8297
|
var READY_BAR_WIDTH = 238;
|
|
8243
8298
|
var PAUSED_BAR_WIDTH = 248;
|
|
@@ -8270,7 +8325,7 @@ function AgentActivity({
|
|
|
8270
8325
|
noiseGate: AGENT_NOISE_GATE
|
|
8271
8326
|
});
|
|
8272
8327
|
const label = isActing ? "Working" : AGENT_STATE_LABELS[state] ?? "";
|
|
8273
|
-
return /* @__PURE__ */
|
|
8328
|
+
return /* @__PURE__ */ jsxs20("span", {
|
|
8274
8329
|
role: "status",
|
|
8275
8330
|
className: "skippr:flex skippr:items-center skippr:gap-1.5 skippr:text-bubble",
|
|
8276
8331
|
"aria-label": isActing ? "Agent is acting" : `Agent is ${state}`,
|
|
@@ -8280,7 +8335,7 @@ function AgentActivity({
|
|
|
8280
8335
|
children: isActing ? /* @__PURE__ */ jsx26(MousePointerClick, {
|
|
8281
8336
|
strokeWidth: 2,
|
|
8282
8337
|
className: "skippr:size-5 skippr:[animation:skippr-finger-tap_1.1s_ease-in-out_infinite]"
|
|
8283
|
-
}) : /* @__PURE__ */
|
|
8338
|
+
}) : /* @__PURE__ */ jsxs20(Fragment2, {
|
|
8284
8339
|
children: [
|
|
8285
8340
|
state === "speaking" && /* @__PURE__ */ jsx26("span", {
|
|
8286
8341
|
className: "skippr:flex skippr:h-5 skippr:items-center skippr:gap-[2px]",
|
|
@@ -8292,7 +8347,7 @@ function AgentActivity({
|
|
|
8292
8347
|
style: { height: AGENT_BAR_IDLE_HEIGHT_PX }
|
|
8293
8348
|
}, index2))
|
|
8294
8349
|
}),
|
|
8295
|
-
state === "thinking" && /* @__PURE__ */
|
|
8350
|
+
state === "thinking" && /* @__PURE__ */ jsxs20("span", {
|
|
8296
8351
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
8297
8352
|
children: [
|
|
8298
8353
|
/* @__PURE__ */ jsx26("span", {
|
|
@@ -8306,7 +8361,7 @@ function AgentActivity({
|
|
|
8306
8361
|
})
|
|
8307
8362
|
]
|
|
8308
8363
|
}),
|
|
8309
|
-
state === "listening" && /* @__PURE__ */
|
|
8364
|
+
state === "listening" && /* @__PURE__ */ jsxs20("svg", {
|
|
8310
8365
|
viewBox: "0 0 24 24",
|
|
8311
8366
|
className: "skippr:size-5",
|
|
8312
8367
|
fill: "none",
|
|
@@ -8451,7 +8506,7 @@ function SessionControlBar() {
|
|
|
8451
8506
|
className: "skippr:size-5"
|
|
8452
8507
|
})
|
|
8453
8508
|
});
|
|
8454
|
-
return /* @__PURE__ */
|
|
8509
|
+
return /* @__PURE__ */ jsxs20("div", {
|
|
8455
8510
|
ref: controlBarRef,
|
|
8456
8511
|
style: { bottom: launcherBottomPx },
|
|
8457
8512
|
className: cn("skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab", position === "right" ? "skippr:right-3" : "skippr:left-3"),
|
|
@@ -8463,14 +8518,14 @@ function SessionControlBar() {
|
|
|
8463
8518
|
children: "Listening…"
|
|
8464
8519
|
})
|
|
8465
8520
|
}),
|
|
8466
|
-
/* @__PURE__ */
|
|
8521
|
+
/* @__PURE__ */ jsxs20("div", {
|
|
8467
8522
|
style: { width: isReady && pushOrTapMicMode ? "auto" : barWidth },
|
|
8468
8523
|
className: cn("skippr:group skippr:relative skippr:flex skippr:h-[54px] skippr:items-center skippr:justify-center skippr:gap-2", "skippr:rounded-[20px] skippr:bg-white skippr:p-2", "skippr:shadow-[0_10px_32px_rgba(0,0,0,0.18)] skippr:ring-1 skippr:ring-black/5", "skippr:transition-[width,margin] skippr:duration-300 skippr:ease-out", "skippr:[animation:skippr-toolset-pop_440ms_cubic-bezier(0.22,1,0.36,1)]", isReady && (position === "right" ? "skippr:mr-7" : "skippr:ml-7")),
|
|
8469
8524
|
children: [
|
|
8470
|
-
!isReady && /* @__PURE__ */
|
|
8525
|
+
!isReady && /* @__PURE__ */ jsxs20("span", {
|
|
8471
8526
|
className: "skippr:flex skippr:h-[38px] skippr:items-center skippr:justify-center skippr:gap-2 skippr:text-[13px] skippr:font-medium skippr:text-bubble skippr:[animation:skippr-stage-fade_240ms_ease-out]",
|
|
8472
8527
|
children: [
|
|
8473
|
-
/* @__PURE__ */
|
|
8528
|
+
/* @__PURE__ */ jsxs20("span", {
|
|
8474
8529
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
8475
8530
|
children: [
|
|
8476
8531
|
/* @__PURE__ */ jsx26("span", {
|
|
@@ -8489,7 +8544,7 @@ function SessionControlBar() {
|
|
|
8489
8544
|
})
|
|
8490
8545
|
]
|
|
8491
8546
|
}),
|
|
8492
|
-
isReady && /* @__PURE__ */
|
|
8547
|
+
isReady && /* @__PURE__ */ jsxs20("div", {
|
|
8493
8548
|
className: cn("skippr:flex skippr:items-center skippr:gap-2 skippr:[animation:skippr-stage-fade_240ms_ease-out]", isHeld && "skippr:w-full skippr:justify-start"),
|
|
8494
8549
|
children: [
|
|
8495
8550
|
/* @__PURE__ */ jsx26("button", {
|
|
@@ -8506,16 +8561,16 @@ function SessionControlBar() {
|
|
|
8506
8561
|
fill: "currentColor"
|
|
8507
8562
|
})
|
|
8508
8563
|
}),
|
|
8509
|
-
isHeld ? /* @__PURE__ */
|
|
8564
|
+
isHeld ? /* @__PURE__ */ jsxs20(Fragment2, {
|
|
8510
8565
|
children: [
|
|
8511
8566
|
/* @__PURE__ */ jsx26(PausedCountdown, {
|
|
8512
8567
|
secondsRemaining: countdown
|
|
8513
8568
|
}),
|
|
8514
8569
|
panelToggleButton
|
|
8515
8570
|
]
|
|
8516
|
-
}) : /* @__PURE__ */
|
|
8571
|
+
}) : /* @__PURE__ */ jsxs20(Fragment2, {
|
|
8517
8572
|
children: [
|
|
8518
|
-
!textMode && pushOrTapMicMode && /* @__PURE__ */
|
|
8573
|
+
!textMode && pushOrTapMicMode && /* @__PURE__ */ jsxs20("div", {
|
|
8519
8574
|
className: "skippr:flex skippr:h-[38px] skippr:items-center skippr:gap-2",
|
|
8520
8575
|
children: [
|
|
8521
8576
|
micMode === MIC_MODE.PushToTalk ? /* @__PURE__ */ jsx26(PushToTalkMic, {
|
|
@@ -8541,7 +8596,7 @@ function SessionControlBar() {
|
|
|
8541
8596
|
})
|
|
8542
8597
|
]
|
|
8543
8598
|
}),
|
|
8544
|
-
!textMode && !pushOrTapMicMode && /* @__PURE__ */
|
|
8599
|
+
!textMode && !pushOrTapMicMode && /* @__PURE__ */ jsxs20("div", {
|
|
8545
8600
|
className: "skippr:relative skippr:h-[38px]",
|
|
8546
8601
|
style: { width: MIC_REGION_WIDTH },
|
|
8547
8602
|
children: [
|
|
@@ -8554,7 +8609,7 @@ function SessionControlBar() {
|
|
|
8554
8609
|
mediaStreamTrack: agentMediaStreamTrack
|
|
8555
8610
|
})
|
|
8556
8611
|
}),
|
|
8557
|
-
/* @__PURE__ */
|
|
8612
|
+
/* @__PURE__ */ jsxs20("button", {
|
|
8558
8613
|
type: "button",
|
|
8559
8614
|
onClick: ifNotDragged(() => void toggleMute()),
|
|
8560
8615
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
@@ -8619,14 +8674,14 @@ function SessionControlBar() {
|
|
|
8619
8674
|
"aria-label": "End session",
|
|
8620
8675
|
"aria-busy": isPausing,
|
|
8621
8676
|
className: cn("skippr:absolute skippr:top-1/2 skippr:z-20 skippr:flex skippr:h-[54px] skippr:w-[50px] skippr:-mt-[27px] skippr:items-center", position === "right" ? "skippr:-right-8 skippr:justify-start skippr:pl-2.5" : "skippr:-left-8 skippr:justify-end skippr:pr-2.5", "skippr:rounded-[16px] skippr:bg-red-500 skippr:text-white", "skippr:shadow-[0_4px_14px_rgba(239,68,68,0.45)]", "skippr:transition-colors skippr:duration-150", "skippr:[animation:skippr-toolset-pop_280ms_cubic-bezier(0.22,1,0.36,1)]", isPausing ? "skippr:cursor-default" : "skippr:cursor-pointer skippr:hover:bg-red-600"),
|
|
8622
|
-
children: /* @__PURE__ */
|
|
8677
|
+
children: /* @__PURE__ */ jsxs20("span", {
|
|
8623
8678
|
className: "skippr:relative skippr:flex skippr:size-5 skippr:items-center skippr:justify-center",
|
|
8624
8679
|
children: [
|
|
8625
8680
|
/* @__PURE__ */ jsx26(X, {
|
|
8626
8681
|
className: cn("skippr:size-4 skippr:transition-opacity skippr:duration-200", isPausing && "skippr:opacity-40"),
|
|
8627
8682
|
strokeWidth: 2.5
|
|
8628
8683
|
}),
|
|
8629
|
-
isPausing && /* @__PURE__ */
|
|
8684
|
+
isPausing && /* @__PURE__ */ jsxs20("svg", {
|
|
8630
8685
|
viewBox: "0 0 24 24",
|
|
8631
8686
|
fill: "none",
|
|
8632
8687
|
"aria-hidden": "true",
|
|
@@ -9011,7 +9066,7 @@ function useTextMode() {
|
|
|
9011
9066
|
}
|
|
9012
9067
|
|
|
9013
9068
|
// src/components/ChatHeader.tsx
|
|
9014
|
-
import { jsx as jsx28, jsxs as
|
|
9069
|
+
import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
9015
9070
|
var TABS_PILL_BASE = "skippr:cursor-pointer skippr:rounded-full skippr:border-none skippr:bg-transparent skippr:px-[9px] skippr:py-[3px] skippr:text-[11.5px] skippr:font-semibold skippr:text-[#8b877f] skippr:transition-colors";
|
|
9016
9071
|
var TABS_PILL_ACTIVE = "skippr:bg-white skippr:text-[#2D2D3F] skippr:shadow-[0_1px_2px_rgba(45,45,63,0.08)]";
|
|
9017
9072
|
function ChatHeader({ wasDraggedRef, draggable, headerRef }) {
|
|
@@ -9035,11 +9090,11 @@ function ChatHeader({ wasDraggedRef, draggable, headerRef }) {
|
|
|
9035
9090
|
const displayedMode = agentMode ?? defaultModule?.mode ?? null;
|
|
9036
9091
|
const showAgenda = displayedMode !== AGENT_MODE.AlwaysOn;
|
|
9037
9092
|
const showToggle = isConnected && (sidebarTab === "chat" || !showAgenda);
|
|
9038
|
-
return /* @__PURE__ */
|
|
9093
|
+
return /* @__PURE__ */ jsxs21("header", {
|
|
9039
9094
|
ref: headerRef,
|
|
9040
9095
|
className: cn("skippr:sticky skippr:top-0 skippr:z-10 skippr:flex skippr:shrink-0 skippr:items-center skippr:gap-[7px] skippr:border-b skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:pl-[13px] skippr:pr-[9px] skippr:pt-[9px] skippr:pb-[8px]", draggable && "skippr:cursor-grab"),
|
|
9041
9096
|
children: [
|
|
9042
|
-
showAgenda ? /* @__PURE__ */
|
|
9097
|
+
showAgenda ? /* @__PURE__ */ jsxs21("div", {
|
|
9043
9098
|
role: "tablist",
|
|
9044
9099
|
"aria-label": "Panel",
|
|
9045
9100
|
"data-skippr-no-drag": "",
|
|
@@ -9069,7 +9124,7 @@ function ChatHeader({ wasDraggedRef, draggable, headerRef }) {
|
|
|
9069
9124
|
/* @__PURE__ */ jsx28("div", {
|
|
9070
9125
|
className: "skippr:flex-1"
|
|
9071
9126
|
}),
|
|
9072
|
-
showToggle && /* @__PURE__ */
|
|
9127
|
+
showToggle && /* @__PURE__ */ jsxs21("button", {
|
|
9073
9128
|
type: "button",
|
|
9074
9129
|
disabled: isHeld,
|
|
9075
9130
|
onClick: () => void toggleTextMode(),
|
|
@@ -9108,12 +9163,12 @@ function ChatHeader({ wasDraggedRef, draggable, headerRef }) {
|
|
|
9108
9163
|
}
|
|
9109
9164
|
|
|
9110
9165
|
// src/components/LoadingDots.tsx
|
|
9111
|
-
import { jsx as jsx29, jsxs as
|
|
9166
|
+
import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
9112
9167
|
function LoadingDots({ label }) {
|
|
9113
|
-
return /* @__PURE__ */
|
|
9168
|
+
return /* @__PURE__ */ jsxs22("div", {
|
|
9114
9169
|
className: "skippr:flex skippr:items-center skippr:gap-2 skippr:py-4",
|
|
9115
9170
|
children: [
|
|
9116
|
-
/* @__PURE__ */
|
|
9171
|
+
/* @__PURE__ */ jsxs22("div", {
|
|
9117
9172
|
className: "skippr:flex skippr:gap-1",
|
|
9118
9173
|
children: [
|
|
9119
9174
|
/* @__PURE__ */ jsx29("span", {
|
|
@@ -9136,9 +9191,9 @@ function LoadingDots({ label }) {
|
|
|
9136
9191
|
}
|
|
9137
9192
|
|
|
9138
9193
|
// src/components/LogoMark.tsx
|
|
9139
|
-
import { jsx as jsx30, jsxs as
|
|
9194
|
+
import { jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
9140
9195
|
function LogoMark({ className, decorative }) {
|
|
9141
|
-
return /* @__PURE__ */
|
|
9196
|
+
return /* @__PURE__ */ jsxs23("svg", {
|
|
9142
9197
|
viewBox: "21 21 109 109",
|
|
9143
9198
|
fill: "none",
|
|
9144
9199
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -9164,7 +9219,7 @@ import { useCallback as useCallback27, useLayoutEffect as useLayoutEffect3, useR
|
|
|
9164
9219
|
|
|
9165
9220
|
// src/components/ChatInput.tsx
|
|
9166
9221
|
import { useContext as useContext16, useEffect as useEffect34, useRef as useRef30, useState as useState26 } from "react";
|
|
9167
|
-
import { jsx as jsx31, jsxs as
|
|
9222
|
+
import { jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
9168
9223
|
var MAX_INPUT_HEIGHT = 60;
|
|
9169
9224
|
function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
9170
9225
|
const ctx = useContext16(LiveAgentContext);
|
|
@@ -9206,7 +9261,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
|
9206
9261
|
handleSubmit(e);
|
|
9207
9262
|
}
|
|
9208
9263
|
}
|
|
9209
|
-
return /* @__PURE__ */
|
|
9264
|
+
return /* @__PURE__ */ jsxs24("form", {
|
|
9210
9265
|
onSubmit: handleSubmit,
|
|
9211
9266
|
"data-skippr-no-drag": "",
|
|
9212
9267
|
className: "skippr:flex skippr:items-center skippr:gap-[7px] skippr:border-t skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:p-[9px]",
|
|
@@ -9241,7 +9296,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
|
9241
9296
|
}
|
|
9242
9297
|
|
|
9243
9298
|
// src/components/ChatMessage.tsx
|
|
9244
|
-
import { jsx as jsx32, jsxs as
|
|
9299
|
+
import { jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
9245
9300
|
function formatTimestamp(ts) {
|
|
9246
9301
|
return new Date(ts).toLocaleTimeString("en-US", {
|
|
9247
9302
|
hour: "numeric",
|
|
@@ -9253,7 +9308,7 @@ function ChatMessage({ message }) {
|
|
|
9253
9308
|
const isAgent = message.role === "assistant";
|
|
9254
9309
|
return /* @__PURE__ */ jsx32("div", {
|
|
9255
9310
|
className: cn("skippr:flex skippr:gap-2", isAgent ? "skippr:items-start" : "skippr:justify-end"),
|
|
9256
|
-
children: /* @__PURE__ */
|
|
9311
|
+
children: /* @__PURE__ */ jsxs25("div", {
|
|
9257
9312
|
className: cn("skippr:flex skippr:max-w-[80%] skippr:flex-col", isAgent ? "skippr:items-start" : "skippr:items-end"),
|
|
9258
9313
|
children: [
|
|
9259
9314
|
/* @__PURE__ */ jsx32("div", {
|
|
@@ -9283,7 +9338,7 @@ async function copyToClipboard(text) {
|
|
|
9283
9338
|
}
|
|
9284
9339
|
|
|
9285
9340
|
// src/components/LinkCard.tsx
|
|
9286
|
-
import { jsx as jsx33, jsxs as
|
|
9341
|
+
import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
9287
9342
|
var COPIED_RESET_MS = 2000;
|
|
9288
9343
|
var DISMISS_AFTER_COPY_MS = 3000;
|
|
9289
9344
|
function LinkCard({ card, onDismiss }) {
|
|
@@ -9308,10 +9363,10 @@ function LinkCard({ card, onDismiss }) {
|
|
|
9308
9363
|
setCopied(true);
|
|
9309
9364
|
dismissTimerRef.current = setTimeout(onDismiss, DISMISS_AFTER_COPY_MS);
|
|
9310
9365
|
}, [card.url, onDismiss]);
|
|
9311
|
-
return /* @__PURE__ */
|
|
9366
|
+
return /* @__PURE__ */ jsxs26("div", {
|
|
9312
9367
|
className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
|
|
9313
9368
|
children: [
|
|
9314
|
-
/* @__PURE__ */
|
|
9369
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
9315
9370
|
className: "skippr:mb-1 skippr:flex skippr:items-start skippr:justify-between skippr:gap-2",
|
|
9316
9371
|
children: [
|
|
9317
9372
|
card.title && /* @__PURE__ */ jsx33("p", {
|
|
@@ -9334,10 +9389,10 @@ function LinkCard({ card, onDismiss }) {
|
|
|
9334
9389
|
className: "skippr:mb-3 skippr:truncate skippr:text-xs skippr:text-muted-foreground",
|
|
9335
9390
|
children: card.url
|
|
9336
9391
|
}),
|
|
9337
|
-
/* @__PURE__ */
|
|
9392
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
9338
9393
|
className: "skippr:flex skippr:gap-2",
|
|
9339
9394
|
children: [
|
|
9340
|
-
/* @__PURE__ */
|
|
9395
|
+
/* @__PURE__ */ jsxs26("a", {
|
|
9341
9396
|
href: card.url,
|
|
9342
9397
|
target: "_blank",
|
|
9343
9398
|
rel: "noopener noreferrer",
|
|
@@ -9349,7 +9404,7 @@ function LinkCard({ card, onDismiss }) {
|
|
|
9349
9404
|
"Open"
|
|
9350
9405
|
]
|
|
9351
9406
|
}),
|
|
9352
|
-
/* @__PURE__ */
|
|
9407
|
+
/* @__PURE__ */ jsxs26(Button, {
|
|
9353
9408
|
variant: "outline",
|
|
9354
9409
|
className: "skippr:flex-1 skippr:py-2",
|
|
9355
9410
|
onClick: handleCopy,
|
|
@@ -9371,7 +9426,7 @@ function LinkCard({ card, onDismiss }) {
|
|
|
9371
9426
|
|
|
9372
9427
|
// src/components/PlanCard.tsx
|
|
9373
9428
|
import { useEffect as useEffect36, useState as useState28 } from "react";
|
|
9374
|
-
import { jsx as jsx34, jsxs as
|
|
9429
|
+
import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
9375
9430
|
var APPROVE_MESSAGE = "Yes, go ahead.";
|
|
9376
9431
|
var CANCEL_MESSAGE = "No, cancel that.";
|
|
9377
9432
|
var COMPLETED_CARD_VISIBLE_MS = 2500;
|
|
@@ -9423,7 +9478,7 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
9423
9478
|
const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
|
|
9424
9479
|
return () => clearTimeout(timer);
|
|
9425
9480
|
}, [plan.state, onDismiss]);
|
|
9426
|
-
return /* @__PURE__ */
|
|
9481
|
+
return /* @__PURE__ */ jsxs27("div", {
|
|
9427
9482
|
className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
|
|
9428
9483
|
children: [
|
|
9429
9484
|
/* @__PURE__ */ jsx34("p", {
|
|
@@ -9432,7 +9487,7 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
9432
9487
|
}),
|
|
9433
9488
|
/* @__PURE__ */ jsx34("div", {
|
|
9434
9489
|
className: "skippr:space-y-2",
|
|
9435
|
-
children: plan.steps.map((step) => /* @__PURE__ */
|
|
9490
|
+
children: plan.steps.map((step) => /* @__PURE__ */ jsxs27("div", {
|
|
9436
9491
|
className: "skippr:flex skippr:items-center skippr:gap-2",
|
|
9437
9492
|
children: [
|
|
9438
9493
|
/* @__PURE__ */ jsx34(StepIcon, {
|
|
@@ -9445,10 +9500,10 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
9445
9500
|
]
|
|
9446
9501
|
}, step.index))
|
|
9447
9502
|
}),
|
|
9448
|
-
awaitingApproval && /* @__PURE__ */
|
|
9503
|
+
awaitingApproval && /* @__PURE__ */ jsxs27("div", {
|
|
9449
9504
|
className: "skippr:mt-3.5 skippr:flex skippr:gap-2",
|
|
9450
9505
|
children: [
|
|
9451
|
-
/* @__PURE__ */
|
|
9506
|
+
/* @__PURE__ */ jsxs27(Button, {
|
|
9452
9507
|
className: "skippr:flex-1 skippr:gap-1.5 skippr:py-2",
|
|
9453
9508
|
disabled: isApproving,
|
|
9454
9509
|
onClick: approve,
|
|
@@ -9473,17 +9528,17 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
9473
9528
|
}
|
|
9474
9529
|
|
|
9475
9530
|
// src/components/TypingIndicator.tsx
|
|
9476
|
-
import { jsx as jsx35, jsxs as
|
|
9531
|
+
import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
9477
9532
|
function TypingIndicator() {
|
|
9478
9533
|
return /* @__PURE__ */ jsx35("div", {
|
|
9479
9534
|
className: "skippr:flex skippr:items-start skippr:gap-2 skippr:animate-skippr-tab-fade",
|
|
9480
|
-
children: /* @__PURE__ */
|
|
9535
|
+
children: /* @__PURE__ */ jsxs28("div", {
|
|
9481
9536
|
className: "skippr:inline-flex skippr:items-center skippr:gap-1 skippr:rounded-2xl skippr:border skippr:border-primary/20 skippr:bg-primary/10 skippr:px-4 skippr:py-2 skippr:text-xs skippr:text-primary",
|
|
9482
9537
|
children: [
|
|
9483
9538
|
/* @__PURE__ */ jsx35("span", {
|
|
9484
9539
|
children: "Agent is analyzing your screen"
|
|
9485
9540
|
}),
|
|
9486
|
-
/* @__PURE__ */
|
|
9541
|
+
/* @__PURE__ */ jsxs28("span", {
|
|
9487
9542
|
className: "skippr:inline-flex skippr:items-center skippr:gap-[2px]",
|
|
9488
9543
|
children: [
|
|
9489
9544
|
/* @__PURE__ */ jsx35("span", {
|
|
@@ -9503,7 +9558,7 @@ function TypingIndicator() {
|
|
|
9503
9558
|
}
|
|
9504
9559
|
|
|
9505
9560
|
// src/components/MessageList.tsx
|
|
9506
|
-
import { jsx as jsx36, jsxs as
|
|
9561
|
+
import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
9507
9562
|
var BOTTOM_THRESHOLD_PX = 32;
|
|
9508
9563
|
function MessageList({
|
|
9509
9564
|
messages,
|
|
@@ -9562,13 +9617,13 @@ function MessageList({
|
|
|
9562
9617
|
container.scrollTop = container.scrollHeight;
|
|
9563
9618
|
}, [messages.length, lastMessage?.content]);
|
|
9564
9619
|
const showTyping = isStreaming && lastMessage?.role === "assistant" && lastMessage.content === "";
|
|
9565
|
-
return /* @__PURE__ */
|
|
9620
|
+
return /* @__PURE__ */ jsxs29("div", {
|
|
9566
9621
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
9567
9622
|
children: [
|
|
9568
|
-
/* @__PURE__ */
|
|
9623
|
+
/* @__PURE__ */ jsxs29("div", {
|
|
9569
9624
|
className: "skippr:relative skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
9570
9625
|
children: [
|
|
9571
|
-
/* @__PURE__ */
|
|
9626
|
+
/* @__PURE__ */ jsxs29("div", {
|
|
9572
9627
|
ref: containerRef,
|
|
9573
9628
|
onScroll: handleScroll,
|
|
9574
9629
|
"data-skippr-no-drag": "",
|
|
@@ -9625,7 +9680,7 @@ function MessageList({
|
|
|
9625
9680
|
|
|
9626
9681
|
// src/components/SessionAgenda.tsx
|
|
9627
9682
|
import { useContext as useContext17 } from "react";
|
|
9628
|
-
import { jsx as jsx37, jsxs as
|
|
9683
|
+
import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
9629
9684
|
function SessionAgenda({ phases, hasStarted }) {
|
|
9630
9685
|
const ctx = useContext17(LiveAgentContext);
|
|
9631
9686
|
const title = ctx?.activeModule?.name ?? "Agenda";
|
|
@@ -9642,17 +9697,17 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
9642
9697
|
const activeIndex = phases.findIndex((p) => p.status === "active");
|
|
9643
9698
|
const currentStep = activeIndex >= 0 ? activeIndex + 1 : Math.min(completedCount + 1, total);
|
|
9644
9699
|
const progressPct = Math.round(completedCount / total * 100);
|
|
9645
|
-
return /* @__PURE__ */
|
|
9700
|
+
return /* @__PURE__ */ jsxs30("div", {
|
|
9646
9701
|
className: "skippr:flex-1 skippr:overflow-y-auto skippr:p-[14px]",
|
|
9647
9702
|
children: [
|
|
9648
|
-
/* @__PURE__ */
|
|
9703
|
+
/* @__PURE__ */ jsxs30("div", {
|
|
9649
9704
|
className: "skippr:mb-2 skippr:flex skippr:items-baseline skippr:justify-between",
|
|
9650
9705
|
children: [
|
|
9651
9706
|
/* @__PURE__ */ jsx37("span", {
|
|
9652
9707
|
className: "skippr:text-[12.5px] skippr:font-semibold skippr:text-[#2D2D3F]",
|
|
9653
9708
|
children: title
|
|
9654
9709
|
}),
|
|
9655
|
-
/* @__PURE__ */
|
|
9710
|
+
/* @__PURE__ */ jsxs30("span", {
|
|
9656
9711
|
className: "skippr:text-[11px] skippr:font-semibold skippr:text-[var(--skippr-brand-deep)]",
|
|
9657
9712
|
children: [
|
|
9658
9713
|
"step ",
|
|
@@ -9678,7 +9733,7 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
9678
9733
|
phases.map((phase) => {
|
|
9679
9734
|
const isActive = phase.status === "active";
|
|
9680
9735
|
const isCompleted = phase.status === "completed";
|
|
9681
|
-
return /* @__PURE__ */
|
|
9736
|
+
return /* @__PURE__ */ jsxs30("div", {
|
|
9682
9737
|
className: "skippr:flex skippr:items-center skippr:gap-[9px] skippr:py-[5px]",
|
|
9683
9738
|
children: [
|
|
9684
9739
|
isCompleted ? /* @__PURE__ */ jsx37("span", {
|
|
@@ -9726,7 +9781,7 @@ function SessionWarningBanner({ remaining }) {
|
|
|
9726
9781
|
}
|
|
9727
9782
|
|
|
9728
9783
|
// src/components/Sidebar.tsx
|
|
9729
|
-
import { jsx as jsx39, jsxs as
|
|
9784
|
+
import { jsx as jsx39, jsxs as jsxs31, Fragment as Fragment4 } from "react/jsx-runtime";
|
|
9730
9785
|
var ATTRIBUTION_PREFIX = "Powered by";
|
|
9731
9786
|
var ATTRIBUTION_BRAND = "Skippr";
|
|
9732
9787
|
var ATTRIBUTION_URL = "https://www.skippr.ai/";
|
|
@@ -9813,7 +9868,7 @@ function Sidebar({
|
|
|
9813
9868
|
}, [isSidebar, isPanelOpen, position]);
|
|
9814
9869
|
if (splashReplacesPanel)
|
|
9815
9870
|
return null;
|
|
9816
|
-
return /* @__PURE__ */
|
|
9871
|
+
return /* @__PURE__ */ jsxs31("div", {
|
|
9817
9872
|
ref: internalCtx?.panelRef,
|
|
9818
9873
|
className: cn("skippr:fixed skippr:z-[9999]", "skippr:bg-card", "skippr:flex skippr:flex-col", "skippr:overflow-hidden", isFloating && "skippr:rounded-[16px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:shadow-[0_14px_34px_rgba(45,45,63,0.15),0_2px_6px_rgba(45,45,63,0.06)]", isFloating && "skippr:transition-[opacity,transform,height] skippr:duration-300 skippr:ease-in-out", anchor2 && panelTransformOrigin(anchor2.popsDown, anchor2.isLeftAligned), isFloating && !isPanelOpen && "skippr:scale-0 skippr:opacity-0 skippr:pointer-events-none", isFloating && isPanelOpen && "skippr:scale-100 skippr:opacity-100", followsPanel && "skippr:select-none", isSidebar && "skippr:top-0 skippr:h-full", isSidebar && "skippr:transition-[width] skippr:duration-300 skippr:ease-in-out", isSidebar && position === "right" && "skippr:right-0 skippr:border-l skippr:border-l-border", isSidebar && position === "left" && "skippr:left-0 skippr:border-r skippr:border-r-border", isSidebar && !isPanelOpen && "skippr:w-0 skippr:border-0"),
|
|
9819
9874
|
style: { width: isPanelOpen ? SIDEBAR_WIDTH : undefined, ...floatingStyle },
|
|
@@ -9875,7 +9930,7 @@ function AuthenticatedContent({
|
|
|
9875
9930
|
}) {
|
|
9876
9931
|
const inSession = isConnected || isStarting || isPaused || isPausing;
|
|
9877
9932
|
const effectiveTab = showAgenda ? activeTab : "chat";
|
|
9878
|
-
return /* @__PURE__ */
|
|
9933
|
+
return /* @__PURE__ */ jsxs31(Fragment4, {
|
|
9879
9934
|
children: [
|
|
9880
9935
|
isConnected && /* @__PURE__ */ jsx39(ConnectedBanner, {}),
|
|
9881
9936
|
/* @__PURE__ */ jsx39("div", {
|
|
@@ -9903,7 +9958,7 @@ function AuthenticatedContent({
|
|
|
9903
9958
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border",
|
|
9904
9959
|
children: /* @__PURE__ */ jsx39("div", {
|
|
9905
9960
|
className: "skippr:flex skippr:items-center skippr:justify-center skippr:px-4 skippr:pt-1 skippr:pb-0.5 skippr:text-[10px] skippr:text-muted-foreground",
|
|
9906
|
-
children: /* @__PURE__ */
|
|
9961
|
+
children: /* @__PURE__ */ jsxs31("a", {
|
|
9907
9962
|
href: ATTRIBUTION_URL,
|
|
9908
9963
|
target: "_blank",
|
|
9909
9964
|
rel: "noopener noreferrer",
|
|
@@ -9927,8 +9982,7 @@ function AuthenticatedContent({
|
|
|
9927
9982
|
"data-skippr-no-drag": "",
|
|
9928
9983
|
className: `skippr:shrink-0 skippr:px-2${hideControls ? " skippr:pb-4 skippr:border-t skippr:border-border skippr:pt-1" : " skippr:pb-1"}`,
|
|
9929
9984
|
children: /* @__PURE__ */ jsx39(ConsentNotice, {
|
|
9930
|
-
|
|
9931
|
-
determiner: "the",
|
|
9985
|
+
template: CONSENT_NOTICE_CONTINUING,
|
|
9932
9986
|
className: "skippr:whitespace-nowrap skippr:text-[10px]"
|
|
9933
9987
|
})
|
|
9934
9988
|
})
|
|
@@ -9936,7 +9990,7 @@ function AuthenticatedContent({
|
|
|
9936
9990
|
});
|
|
9937
9991
|
}
|
|
9938
9992
|
function AuthError() {
|
|
9939
|
-
return /* @__PURE__ */
|
|
9993
|
+
return /* @__PURE__ */ jsxs31("div", {
|
|
9940
9994
|
className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:items-center skippr:justify-center skippr:px-6 skippr:py-4 skippr:text-center",
|
|
9941
9995
|
children: [
|
|
9942
9996
|
/* @__PURE__ */ jsx39(CircleAlert, {
|
|
@@ -9976,7 +10030,7 @@ function IdleHistory({
|
|
|
9976
10030
|
})
|
|
9977
10031
|
});
|
|
9978
10032
|
}
|
|
9979
|
-
return /* @__PURE__ */
|
|
10033
|
+
return /* @__PURE__ */ jsxs31("div", {
|
|
9980
10034
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:animate-skippr-tab-fade",
|
|
9981
10035
|
children: [
|
|
9982
10036
|
activeTab === "agenda" ? /* @__PURE__ */ jsx39("div", {
|
|
@@ -9991,11 +10045,11 @@ function IdleHistory({
|
|
|
9991
10045
|
isStreaming: false,
|
|
9992
10046
|
readOnly: true
|
|
9993
10047
|
}),
|
|
9994
|
-
(showTalk || error) && /* @__PURE__ */
|
|
10048
|
+
(showTalk || error) && /* @__PURE__ */ jsxs31("div", {
|
|
9995
10049
|
"data-skippr-no-drag": "",
|
|
9996
10050
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
9997
10051
|
children: [
|
|
9998
|
-
showTalk && /* @__PURE__ */
|
|
10052
|
+
showTalk && /* @__PURE__ */ jsxs31("button", {
|
|
9999
10053
|
type: "button",
|
|
10000
10054
|
onClick: onTalk,
|
|
10001
10055
|
disabled: talkDisabled,
|
|
@@ -10056,9 +10110,9 @@ function ConnectedBody({
|
|
|
10056
10110
|
import { useContext as useContext19 } from "react";
|
|
10057
10111
|
|
|
10058
10112
|
// src/components/Logo.tsx
|
|
10059
|
-
import { jsx as jsx40, jsxs as
|
|
10113
|
+
import { jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
10060
10114
|
function Logo({ className, decorative }) {
|
|
10061
|
-
return /* @__PURE__ */
|
|
10115
|
+
return /* @__PURE__ */ jsxs32("svg", {
|
|
10062
10116
|
width: "1em",
|
|
10063
10117
|
height: "1em",
|
|
10064
10118
|
viewBox: "0 0 200 200",
|
|
@@ -10075,7 +10129,7 @@ function Logo({ className, decorative }) {
|
|
|
10075
10129
|
rx: "40",
|
|
10076
10130
|
fill: "#2D2D3F"
|
|
10077
10131
|
}),
|
|
10078
|
-
/* @__PURE__ */
|
|
10132
|
+
/* @__PURE__ */ jsxs32("g", {
|
|
10079
10133
|
transform: "translate(100 100) scale(0.8) translate(-100 -100)",
|
|
10080
10134
|
children: [
|
|
10081
10135
|
/* @__PURE__ */ jsx40("path", {
|
|
@@ -10168,6 +10222,7 @@ function resolveSplashPresentation(splash) {
|
|
|
10168
10222
|
const width = splash?.width;
|
|
10169
10223
|
const maxHeight = splash?.maxHeight;
|
|
10170
10224
|
return {
|
|
10225
|
+
locale: splash?.locale ?? "en",
|
|
10171
10226
|
copy,
|
|
10172
10227
|
card: {
|
|
10173
10228
|
width: width === undefined ? DEFAULT_SPLASH_WIDTH_PX : clampSplashWidth(width),
|
|
@@ -10327,12 +10382,7 @@ var CARD_FRAME = "skippr:rounded-[16px] skippr:bg-white skippr:shadow-[0_0_0_1px
|
|
|
10327
10382
|
|
|
10328
10383
|
// src/components/SplashMediaSection.tsx
|
|
10329
10384
|
import { useCallback as useCallback30, useRef as useRef34 } from "react";
|
|
10330
|
-
import { jsx as jsx42, jsxs as
|
|
10331
|
-
var SCREEN_NOTICE = "Required";
|
|
10332
|
-
var ENABLE_ACTION = "Enable";
|
|
10333
|
-
var MEDIA_ENABLED_STATUS = "Enabled";
|
|
10334
|
-
var MIC_MUTED_STATUS = "Muted";
|
|
10335
|
-
var MUTE_MIC_ACTION = "Mute microphone";
|
|
10385
|
+
import { jsx as jsx42, jsxs as jsxs33, Fragment as Fragment5 } from "react/jsx-runtime";
|
|
10336
10386
|
var MEDIA_TRAILING_BOX = "skippr:shrink-0 skippr:rounded-full skippr:border skippr:px-[18px] skippr:py-[7px] skippr:text-[14px]";
|
|
10337
10387
|
var MEDIA_PILL = `${MEDIA_TRAILING_BOX} skippr:cursor-pointer skippr:border-[rgba(45,45,63,0.12)] skippr:font-medium skippr:transition-colors`;
|
|
10338
10388
|
var MEDIA_LINK = `${FOCUS_RING3} skippr:shrink-0 skippr:cursor-pointer skippr:rounded-[4px] skippr:text-[14px] skippr:font-medium skippr:text-brand-on-white skippr:underline-offset-2 skippr:hover:underline`;
|
|
@@ -10340,14 +10390,14 @@ var MEDIA_STATUS_SHAPE = "skippr:shrink-0 skippr:text-[14px]";
|
|
|
10340
10390
|
var MEDIA_STATUS_MUTED = `${MEDIA_STATUS_SHAPE} skippr:text-[#6b6875]`;
|
|
10341
10391
|
var MEDIA_STATUS_BRAND = `${MEDIA_STATUS_SHAPE} skippr:font-medium skippr:text-brand-on-white`;
|
|
10342
10392
|
function MediaRow({ icon, label, subtext, trailing }) {
|
|
10343
|
-
return /* @__PURE__ */
|
|
10393
|
+
return /* @__PURE__ */ jsxs33("li", {
|
|
10344
10394
|
className: "skippr:flex skippr:items-center skippr:gap-3",
|
|
10345
10395
|
children: [
|
|
10346
10396
|
/* @__PURE__ */ jsx42("span", {
|
|
10347
10397
|
className: ICON_TILE,
|
|
10348
10398
|
children: icon
|
|
10349
10399
|
}),
|
|
10350
|
-
/* @__PURE__ */
|
|
10400
|
+
/* @__PURE__ */ jsxs33("span", {
|
|
10351
10401
|
className: `skippr:flex-1 ${ROW_TEXT}`,
|
|
10352
10402
|
children: [
|
|
10353
10403
|
/* @__PURE__ */ jsx42("span", {
|
|
@@ -10368,12 +10418,12 @@ function MediaRow({ icon, label, subtext, trailing }) {
|
|
|
10368
10418
|
]
|
|
10369
10419
|
});
|
|
10370
10420
|
}
|
|
10371
|
-
function EnableButton({ onEnable }) {
|
|
10421
|
+
function EnableButton({ label, onEnable }) {
|
|
10372
10422
|
return /* @__PURE__ */ jsx42("button", {
|
|
10373
10423
|
type: "button",
|
|
10374
10424
|
onClick: onEnable,
|
|
10375
10425
|
className: MEDIA_LINK,
|
|
10376
|
-
children:
|
|
10426
|
+
children: label
|
|
10377
10427
|
});
|
|
10378
10428
|
}
|
|
10379
10429
|
function MediaStatus({ label, className }) {
|
|
@@ -10384,6 +10434,7 @@ function MediaStatus({ label, className }) {
|
|
|
10384
10434
|
}
|
|
10385
10435
|
function MicToggle({
|
|
10386
10436
|
muted,
|
|
10437
|
+
muteLabel,
|
|
10387
10438
|
onToggle,
|
|
10388
10439
|
toggleRef
|
|
10389
10440
|
}) {
|
|
@@ -10392,7 +10443,7 @@ function MicToggle({
|
|
|
10392
10443
|
type: "button",
|
|
10393
10444
|
onClick: onToggle,
|
|
10394
10445
|
"aria-pressed": muted,
|
|
10395
|
-
"aria-label":
|
|
10446
|
+
"aria-label": muteLabel,
|
|
10396
10447
|
className: `${MEDIA_PILL} ${FOCUS_RING3} skippr:flex skippr:items-center skippr:justify-center ${muted ? "skippr:bg-[#f2f0eb] skippr:text-[#6b6875]" : "skippr:text-[#2D2D3F] skippr:hover:bg-[#f2f0eb]"}`,
|
|
10397
10448
|
children: muted ? /* @__PURE__ */ jsx42(MicOff, {
|
|
10398
10449
|
className: ROW_ICON,
|
|
@@ -10405,18 +10456,23 @@ function MicToggle({
|
|
|
10405
10456
|
})
|
|
10406
10457
|
});
|
|
10407
10458
|
}
|
|
10408
|
-
function ScreenTrailing({
|
|
10459
|
+
function ScreenTrailing({
|
|
10460
|
+
copy,
|
|
10461
|
+
enabled,
|
|
10462
|
+
onEnable
|
|
10463
|
+
}) {
|
|
10409
10464
|
if (enabled === null)
|
|
10410
10465
|
return /* @__PURE__ */ jsx42(MediaStatus, {
|
|
10411
|
-
label:
|
|
10466
|
+
label: copy.screenRequiredStatus,
|
|
10412
10467
|
className: MEDIA_STATUS_BRAND
|
|
10413
10468
|
});
|
|
10414
10469
|
if (enabled)
|
|
10415
10470
|
return /* @__PURE__ */ jsx42(MediaStatus, {
|
|
10416
|
-
label:
|
|
10471
|
+
label: copy.mediaEnabledStatus,
|
|
10417
10472
|
className: MEDIA_STATUS_BRAND
|
|
10418
10473
|
});
|
|
10419
10474
|
return /* @__PURE__ */ jsx42(EnableButton, {
|
|
10475
|
+
label: copy.mediaEnableAction,
|
|
10420
10476
|
onEnable
|
|
10421
10477
|
});
|
|
10422
10478
|
}
|
|
@@ -10440,14 +10496,14 @@ function SplashMediaSection({
|
|
|
10440
10496
|
micFocusPending.current = true;
|
|
10441
10497
|
enableMic();
|
|
10442
10498
|
};
|
|
10443
|
-
return /* @__PURE__ */
|
|
10499
|
+
return /* @__PURE__ */ jsxs33("section", {
|
|
10444
10500
|
className: SECTION_BLOCK,
|
|
10445
10501
|
children: [
|
|
10446
10502
|
/* @__PURE__ */ jsx42("h3", {
|
|
10447
10503
|
className: SECTION_HEADING,
|
|
10448
10504
|
children: copy.mediaHeading
|
|
10449
10505
|
}),
|
|
10450
|
-
/* @__PURE__ */
|
|
10506
|
+
/* @__PURE__ */ jsxs33("ul", {
|
|
10451
10507
|
className: "skippr:flex skippr:flex-col skippr:gap-[14px]",
|
|
10452
10508
|
children: [
|
|
10453
10509
|
/* @__PURE__ */ jsx42(MediaRow, {
|
|
@@ -10458,19 +10514,21 @@ function SplashMediaSection({
|
|
|
10458
10514
|
}),
|
|
10459
10515
|
label: copy.micLabel,
|
|
10460
10516
|
subtext: copy.micSubtext,
|
|
10461
|
-
trailing: micEnabled ? /* @__PURE__ */
|
|
10517
|
+
trailing: micEnabled ? /* @__PURE__ */ jsxs33(Fragment5, {
|
|
10462
10518
|
children: [
|
|
10463
10519
|
/* @__PURE__ */ jsx42(MicToggle, {
|
|
10464
10520
|
muted: startMuted,
|
|
10521
|
+
muteLabel: copy.muteMicAction,
|
|
10465
10522
|
onToggle: toggleStartMuted,
|
|
10466
10523
|
toggleRef: focusMicToggle
|
|
10467
10524
|
}),
|
|
10468
10525
|
/* @__PURE__ */ jsx42(MediaStatus, {
|
|
10469
|
-
label: startMuted ?
|
|
10526
|
+
label: startMuted ? copy.micMutedStatus : copy.mediaEnabledStatus,
|
|
10470
10527
|
className: startMuted ? MEDIA_STATUS_MUTED : MEDIA_STATUS_BRAND
|
|
10471
10528
|
})
|
|
10472
10529
|
]
|
|
10473
10530
|
}) : /* @__PURE__ */ jsx42(EnableButton, {
|
|
10531
|
+
label: copy.mediaEnableAction,
|
|
10474
10532
|
onEnable: grantMic
|
|
10475
10533
|
})
|
|
10476
10534
|
}),
|
|
@@ -10483,6 +10541,7 @@ function SplashMediaSection({
|
|
|
10483
10541
|
label: copy.screenLabel,
|
|
10484
10542
|
subtext: copy.screenSubtext,
|
|
10485
10543
|
trailing: /* @__PURE__ */ jsx42(ScreenTrailing, {
|
|
10544
|
+
copy,
|
|
10486
10545
|
enabled: screenEnabled,
|
|
10487
10546
|
onEnable: enableScreen
|
|
10488
10547
|
})
|
|
@@ -10494,16 +10553,16 @@ function SplashMediaSection({
|
|
|
10494
10553
|
}
|
|
10495
10554
|
|
|
10496
10555
|
// src/components/SplashOptOut.tsx
|
|
10497
|
-
import { jsx as jsx43, jsxs as
|
|
10556
|
+
import { jsx as jsx43, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
10498
10557
|
function SplashOptOut({
|
|
10499
10558
|
label,
|
|
10500
10559
|
checked,
|
|
10501
10560
|
onToggle
|
|
10502
10561
|
}) {
|
|
10503
|
-
return /* @__PURE__ */
|
|
10562
|
+
return /* @__PURE__ */ jsxs34("label", {
|
|
10504
10563
|
className: "skippr:mt-2 skippr:flex skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-2 skippr:py-1",
|
|
10505
10564
|
children: [
|
|
10506
|
-
/* @__PURE__ */
|
|
10565
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
10507
10566
|
className: "skippr:relative skippr:flex skippr:size-4 skippr:shrink-0 skippr:items-center skippr:justify-center",
|
|
10508
10567
|
children: [
|
|
10509
10568
|
/* @__PURE__ */ jsx43("input", {
|
|
@@ -10528,19 +10587,16 @@ function SplashOptOut({
|
|
|
10528
10587
|
}
|
|
10529
10588
|
|
|
10530
10589
|
// src/components/SplashAlwaysOn.tsx
|
|
10531
|
-
import { jsx as jsx44, jsxs as
|
|
10532
|
-
var ATTRIBUTION_PREFIX2 = "AI Agent Powered by";
|
|
10590
|
+
import { jsx as jsx44, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
10533
10591
|
var ATTRIBUTION_BRAND2 = "Skippr";
|
|
10534
10592
|
var ATTRIBUTION_URL2 = "https://www.skippr.ai/";
|
|
10535
|
-
var CLOSE_LABEL = "Close";
|
|
10536
|
-
var CONSENT_LEAD_IN = "By starting a session";
|
|
10537
10593
|
function TipRow({
|
|
10538
10594
|
title,
|
|
10539
10595
|
subtext,
|
|
10540
10596
|
onStart
|
|
10541
10597
|
}) {
|
|
10542
10598
|
return /* @__PURE__ */ jsx44("li", {
|
|
10543
|
-
children: /* @__PURE__ */
|
|
10599
|
+
children: /* @__PURE__ */ jsxs35("button", {
|
|
10544
10600
|
type: "button",
|
|
10545
10601
|
onClick: onStart,
|
|
10546
10602
|
className: `${FOCUS_RING3} skippr:flex skippr:w-full skippr:cursor-pointer skippr:items-start skippr:gap-3 skippr:rounded-[11px] skippr:text-left skippr:transition-colors skippr:hover:bg-[rgba(45,45,63,0.04)]`,
|
|
@@ -10553,7 +10609,7 @@ function TipRow({
|
|
|
10553
10609
|
"aria-hidden": true
|
|
10554
10610
|
})
|
|
10555
10611
|
}),
|
|
10556
|
-
/* @__PURE__ */
|
|
10612
|
+
/* @__PURE__ */ jsxs35("span", {
|
|
10557
10613
|
className: ROW_TEXT,
|
|
10558
10614
|
children: [
|
|
10559
10615
|
/* @__PURE__ */ jsx44("span", {
|
|
@@ -10591,18 +10647,19 @@ function SplashAlwaysOn({
|
|
|
10591
10647
|
ctaRef
|
|
10592
10648
|
}) {
|
|
10593
10649
|
const { copy, card } = presentation;
|
|
10594
|
-
return /* @__PURE__ */
|
|
10650
|
+
return /* @__PURE__ */ jsxs35("section", {
|
|
10595
10651
|
"aria-label": agentName,
|
|
10652
|
+
lang: presentation.locale,
|
|
10596
10653
|
style: { maxWidth: card.width, maxHeight: `${card.maxHeight}vh` },
|
|
10597
10654
|
className: `${CARD_SHELL} ${CARD_FRAME}`,
|
|
10598
10655
|
children: [
|
|
10599
|
-
/* @__PURE__ */
|
|
10656
|
+
/* @__PURE__ */ jsxs35("div", {
|
|
10600
10657
|
className: "skippr:flex skippr:shrink-0 skippr:items-start skippr:justify-between skippr:gap-3 skippr:border-b skippr:border-[rgba(45,45,63,0.06)] skippr:bg-[rgba(45,45,63,0.03)] skippr:px-[22px] skippr:pt-5 skippr:pb-4",
|
|
10601
10658
|
children: [
|
|
10602
|
-
/* @__PURE__ */
|
|
10659
|
+
/* @__PURE__ */ jsxs35("div", {
|
|
10603
10660
|
className: "skippr:flex skippr:min-w-0 skippr:flex-col skippr:gap-1",
|
|
10604
10661
|
children: [
|
|
10605
|
-
/* @__PURE__ */
|
|
10662
|
+
/* @__PURE__ */ jsxs35("span", {
|
|
10606
10663
|
className: "skippr:flex skippr:min-w-0 skippr:items-center skippr:gap-1.5 skippr:text-[#2D2D3F]",
|
|
10607
10664
|
children: [
|
|
10608
10665
|
headerIconUrl ? /* @__PURE__ */ jsx44("img", {
|
|
@@ -10620,7 +10677,7 @@ function SplashAlwaysOn({
|
|
|
10620
10677
|
})
|
|
10621
10678
|
]
|
|
10622
10679
|
}),
|
|
10623
|
-
attributionVisible && /* @__PURE__ */
|
|
10680
|
+
attributionVisible && /* @__PURE__ */ jsxs35("a", {
|
|
10624
10681
|
href: ATTRIBUTION_URL2,
|
|
10625
10682
|
target: "_blank",
|
|
10626
10683
|
rel: "noopener noreferrer",
|
|
@@ -10630,7 +10687,7 @@ function SplashAlwaysOn({
|
|
|
10630
10687
|
decorative: true,
|
|
10631
10688
|
className: "skippr:size-[13px]"
|
|
10632
10689
|
}),
|
|
10633
|
-
|
|
10690
|
+
copy.attributionPrefix,
|
|
10634
10691
|
" ",
|
|
10635
10692
|
/* @__PURE__ */ jsx44("span", {
|
|
10636
10693
|
className: "skippr:font-medium skippr:text-[#2D2D3F] skippr:underline skippr:underline-offset-2",
|
|
@@ -10643,7 +10700,7 @@ function SplashAlwaysOn({
|
|
|
10643
10700
|
/* @__PURE__ */ jsx44("button", {
|
|
10644
10701
|
type: "button",
|
|
10645
10702
|
onClick: dismiss,
|
|
10646
|
-
"aria-label":
|
|
10703
|
+
"aria-label": copy.closeLabel,
|
|
10647
10704
|
className: `${FOCUS_RING3} skippr:ml-auto skippr:flex skippr:size-6 skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-[#6b6875] skippr:transition-colors skippr:hover:bg-[#f2f0eb] skippr:hover:text-[#2D2D3F]`,
|
|
10648
10705
|
children: /* @__PURE__ */ jsx44(X, {
|
|
10649
10706
|
className: "skippr:size-4",
|
|
@@ -10653,11 +10710,11 @@ function SplashAlwaysOn({
|
|
|
10653
10710
|
})
|
|
10654
10711
|
]
|
|
10655
10712
|
}),
|
|
10656
|
-
/* @__PURE__ */
|
|
10713
|
+
/* @__PURE__ */ jsxs35("div", {
|
|
10657
10714
|
tabIndex: 0,
|
|
10658
10715
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:gap-[14px] skippr:overflow-y-auto skippr:px-[22px] skippr:pt-[18px]",
|
|
10659
10716
|
children: [
|
|
10660
|
-
/* @__PURE__ */
|
|
10717
|
+
/* @__PURE__ */ jsxs35("section", {
|
|
10661
10718
|
className: SECTION_BLOCK,
|
|
10662
10719
|
children: [
|
|
10663
10720
|
/* @__PURE__ */ jsx44("h3", {
|
|
@@ -10689,10 +10746,10 @@ function SplashAlwaysOn({
|
|
|
10689
10746
|
})
|
|
10690
10747
|
]
|
|
10691
10748
|
}),
|
|
10692
|
-
/* @__PURE__ */
|
|
10749
|
+
/* @__PURE__ */ jsxs35("div", {
|
|
10693
10750
|
className: "skippr:shrink-0 skippr:px-[22px] skippr:pt-[22px] skippr:pb-[22px]",
|
|
10694
10751
|
children: [
|
|
10695
|
-
/* @__PURE__ */
|
|
10752
|
+
/* @__PURE__ */ jsxs35("button", {
|
|
10696
10753
|
ref: ctaRef,
|
|
10697
10754
|
type: "button",
|
|
10698
10755
|
onClick: start,
|
|
@@ -10712,7 +10769,7 @@ function SplashAlwaysOn({
|
|
|
10712
10769
|
onToggle: toggleOptOut
|
|
10713
10770
|
}),
|
|
10714
10771
|
/* @__PURE__ */ jsx44(ConsentNotice, {
|
|
10715
|
-
|
|
10772
|
+
template: copy.consentNotice,
|
|
10716
10773
|
className: "skippr:mt-3"
|
|
10717
10774
|
})
|
|
10718
10775
|
]
|
|
@@ -10722,12 +10779,9 @@ function SplashAlwaysOn({
|
|
|
10722
10779
|
}
|
|
10723
10780
|
|
|
10724
10781
|
// src/components/SplashPrimary.tsx
|
|
10725
|
-
import { jsx as jsx45, jsxs as
|
|
10726
|
-
var ATTRIBUTION_PREFIX3 = "AI Agent Powered by";
|
|
10782
|
+
import { jsx as jsx45, jsxs as jsxs36, Fragment as Fragment6 } from "react/jsx-runtime";
|
|
10727
10783
|
var ATTRIBUTION_BRAND3 = "Skippr";
|
|
10728
10784
|
var ATTRIBUTION_URL3 = "https://www.skippr.ai/";
|
|
10729
|
-
var CLOSE_LABEL2 = "Close";
|
|
10730
|
-
var CONSENT_LEAD_IN2 = "By starting a session";
|
|
10731
10785
|
var GLYPH_COMPONENT = {
|
|
10732
10786
|
[SPLASH_SECTION_GLYPH.Route]: Route,
|
|
10733
10787
|
[SPLASH_SECTION_GLYPH.Messages]: MessagesSquare,
|
|
@@ -10735,7 +10789,7 @@ var GLYPH_COMPONENT = {
|
|
|
10735
10789
|
};
|
|
10736
10790
|
function SectionRow({ iconUrl, glyph, title, description }) {
|
|
10737
10791
|
const Glyph = glyph ? GLYPH_COMPONENT[glyph] : Sparkles;
|
|
10738
|
-
return /* @__PURE__ */
|
|
10792
|
+
return /* @__PURE__ */ jsxs36("li", {
|
|
10739
10793
|
className: "skippr:flex skippr:items-start skippr:gap-3",
|
|
10740
10794
|
children: [
|
|
10741
10795
|
/* @__PURE__ */ jsx45("span", {
|
|
@@ -10750,7 +10804,7 @@ function SectionRow({ iconUrl, glyph, title, description }) {
|
|
|
10750
10804
|
"aria-hidden": true
|
|
10751
10805
|
})
|
|
10752
10806
|
}),
|
|
10753
|
-
/* @__PURE__ */
|
|
10807
|
+
/* @__PURE__ */ jsxs36("span", {
|
|
10754
10808
|
className: ROW_TEXT,
|
|
10755
10809
|
children: [
|
|
10756
10810
|
/* @__PURE__ */ jsx45("span", {
|
|
@@ -10790,18 +10844,19 @@ function SplashPrimary({
|
|
|
10790
10844
|
ctaRef
|
|
10791
10845
|
}) {
|
|
10792
10846
|
const { copy, card } = presentation;
|
|
10793
|
-
return /* @__PURE__ */
|
|
10847
|
+
return /* @__PURE__ */ jsxs36("section", {
|
|
10794
10848
|
"aria-label": agentName,
|
|
10849
|
+
lang: presentation.locale,
|
|
10795
10850
|
style: { maxWidth: card.width, maxHeight: `${card.maxHeight}vh` },
|
|
10796
10851
|
className: `${CARD_SHELL} ${CARD_FRAME}`,
|
|
10797
10852
|
children: [
|
|
10798
|
-
/* @__PURE__ */
|
|
10853
|
+
/* @__PURE__ */ jsxs36("div", {
|
|
10799
10854
|
className: "skippr:flex skippr:shrink-0 skippr:items-start skippr:justify-between skippr:gap-3 skippr:border-b skippr:border-[rgba(45,45,63,0.06)] skippr:bg-[rgba(45,45,63,0.03)] skippr:px-[22px] skippr:pt-5 skippr:pb-4",
|
|
10800
10855
|
children: [
|
|
10801
|
-
/* @__PURE__ */
|
|
10856
|
+
/* @__PURE__ */ jsxs36("div", {
|
|
10802
10857
|
className: "skippr:flex skippr:min-w-0 skippr:flex-col skippr:gap-1",
|
|
10803
10858
|
children: [
|
|
10804
|
-
/* @__PURE__ */
|
|
10859
|
+
/* @__PURE__ */ jsxs36("span", {
|
|
10805
10860
|
className: "skippr:flex skippr:min-w-0 skippr:items-center skippr:gap-1.5 skippr:text-[#2D2D3F]",
|
|
10806
10861
|
children: [
|
|
10807
10862
|
headerIconUrl ? /* @__PURE__ */ jsx45("img", {
|
|
@@ -10819,7 +10874,7 @@ function SplashPrimary({
|
|
|
10819
10874
|
})
|
|
10820
10875
|
]
|
|
10821
10876
|
}),
|
|
10822
|
-
attributionVisible && /* @__PURE__ */
|
|
10877
|
+
attributionVisible && /* @__PURE__ */ jsxs36("a", {
|
|
10823
10878
|
href: ATTRIBUTION_URL3,
|
|
10824
10879
|
target: "_blank",
|
|
10825
10880
|
rel: "noopener noreferrer",
|
|
@@ -10829,7 +10884,7 @@ function SplashPrimary({
|
|
|
10829
10884
|
decorative: true,
|
|
10830
10885
|
className: "skippr:size-[13px]"
|
|
10831
10886
|
}),
|
|
10832
|
-
|
|
10887
|
+
copy.attributionPrefix,
|
|
10833
10888
|
" ",
|
|
10834
10889
|
/* @__PURE__ */ jsx45("span", {
|
|
10835
10890
|
className: "skippr:font-medium skippr:text-[#2D2D3F] skippr:underline skippr:underline-offset-2",
|
|
@@ -10842,7 +10897,7 @@ function SplashPrimary({
|
|
|
10842
10897
|
/* @__PURE__ */ jsx45("button", {
|
|
10843
10898
|
type: "button",
|
|
10844
10899
|
onClick: dismiss,
|
|
10845
|
-
"aria-label":
|
|
10900
|
+
"aria-label": copy.closeLabel,
|
|
10846
10901
|
className: `${FOCUS_RING3} skippr:ml-auto skippr:flex skippr:size-6 skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-[#6b6875] skippr:transition-colors skippr:hover:bg-[#f2f0eb] skippr:hover:text-[#2D2D3F]`,
|
|
10847
10902
|
children: /* @__PURE__ */ jsx45(X, {
|
|
10848
10903
|
className: "skippr:size-4",
|
|
@@ -10852,11 +10907,11 @@ function SplashPrimary({
|
|
|
10852
10907
|
})
|
|
10853
10908
|
]
|
|
10854
10909
|
}),
|
|
10855
|
-
/* @__PURE__ */
|
|
10910
|
+
/* @__PURE__ */ jsxs36("div", {
|
|
10856
10911
|
tabIndex: 0,
|
|
10857
10912
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:gap-[14px] skippr:overflow-y-auto skippr:px-[22px] skippr:pt-[18px]",
|
|
10858
10913
|
children: [
|
|
10859
|
-
intent === SPLASH_INTENT.Start ? sections.length > 0 && /* @__PURE__ */
|
|
10914
|
+
intent === SPLASH_INTENT.Start ? sections.length > 0 && /* @__PURE__ */ jsxs36("section", {
|
|
10860
10915
|
className: SECTION_BLOCK,
|
|
10861
10916
|
children: [
|
|
10862
10917
|
/* @__PURE__ */ jsx45("h3", {
|
|
@@ -10870,16 +10925,16 @@ function SplashPrimary({
|
|
|
10870
10925
|
}, section.id))
|
|
10871
10926
|
})
|
|
10872
10927
|
]
|
|
10873
|
-
}) : /* @__PURE__ */
|
|
10928
|
+
}) : /* @__PURE__ */ jsxs36(Fragment6, {
|
|
10874
10929
|
children: [
|
|
10875
|
-
lastCompletedPhase && /* @__PURE__ */
|
|
10930
|
+
lastCompletedPhase && /* @__PURE__ */ jsxs36("section", {
|
|
10876
10931
|
className: SECTION_BLOCK,
|
|
10877
10932
|
children: [
|
|
10878
10933
|
/* @__PURE__ */ jsx45("h3", {
|
|
10879
10934
|
className: SECTION_HEADING,
|
|
10880
10935
|
children: copy.lastAccomplishmentHeading
|
|
10881
10936
|
}),
|
|
10882
|
-
/* @__PURE__ */
|
|
10937
|
+
/* @__PURE__ */ jsxs36("div", {
|
|
10883
10938
|
className: "skippr:flex skippr:items-start skippr:gap-3",
|
|
10884
10939
|
children: [
|
|
10885
10940
|
/* @__PURE__ */ jsx45("span", {
|
|
@@ -10890,7 +10945,7 @@ function SplashPrimary({
|
|
|
10890
10945
|
"aria-hidden": true
|
|
10891
10946
|
})
|
|
10892
10947
|
}),
|
|
10893
|
-
/* @__PURE__ */
|
|
10948
|
+
/* @__PURE__ */ jsxs36("span", {
|
|
10894
10949
|
className: ROW_TEXT,
|
|
10895
10950
|
children: [
|
|
10896
10951
|
/* @__PURE__ */ jsx45("span", {
|
|
@@ -10907,7 +10962,7 @@ function SplashPrimary({
|
|
|
10907
10962
|
})
|
|
10908
10963
|
]
|
|
10909
10964
|
}),
|
|
10910
|
-
upcomingPhases.length > 0 && /* @__PURE__ */
|
|
10965
|
+
upcomingPhases.length > 0 && /* @__PURE__ */ jsxs36("section", {
|
|
10911
10966
|
className: SECTION_BLOCK,
|
|
10912
10967
|
children: [
|
|
10913
10968
|
/* @__PURE__ */ jsx45("h3", {
|
|
@@ -10916,14 +10971,14 @@ function SplashPrimary({
|
|
|
10916
10971
|
}),
|
|
10917
10972
|
/* @__PURE__ */ jsx45("ol", {
|
|
10918
10973
|
className: "skippr:flex skippr:flex-col skippr:gap-3",
|
|
10919
|
-
children: upcomingPhases.map((phase, index2) => /* @__PURE__ */
|
|
10974
|
+
children: upcomingPhases.map((phase, index2) => /* @__PURE__ */ jsxs36("li", {
|
|
10920
10975
|
className: "skippr:flex skippr:items-start skippr:gap-3",
|
|
10921
10976
|
children: [
|
|
10922
10977
|
/* @__PURE__ */ jsx45("span", {
|
|
10923
10978
|
className: "skippr:flex skippr:size-[26px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-[#f2f0eb] skippr:text-[12px] skippr:font-semibold skippr:text-[#6b6875]",
|
|
10924
10979
|
children: index2 + 1
|
|
10925
10980
|
}),
|
|
10926
|
-
/* @__PURE__ */
|
|
10981
|
+
/* @__PURE__ */ jsxs36("span", {
|
|
10927
10982
|
className: ROW_TEXT,
|
|
10928
10983
|
children: [
|
|
10929
10984
|
/* @__PURE__ */ jsx45("span", {
|
|
@@ -10954,10 +11009,10 @@ function SplashPrimary({
|
|
|
10954
11009
|
})
|
|
10955
11010
|
]
|
|
10956
11011
|
}),
|
|
10957
|
-
/* @__PURE__ */
|
|
11012
|
+
/* @__PURE__ */ jsxs36("div", {
|
|
10958
11013
|
className: "skippr:shrink-0 skippr:px-[22px] skippr:pt-[22px] skippr:pb-[22px]",
|
|
10959
11014
|
children: [
|
|
10960
|
-
/* @__PURE__ */
|
|
11015
|
+
/* @__PURE__ */ jsxs36("button", {
|
|
10961
11016
|
ref: ctaRef,
|
|
10962
11017
|
type: "button",
|
|
10963
11018
|
onClick: start,
|
|
@@ -10983,7 +11038,7 @@ function SplashPrimary({
|
|
|
10983
11038
|
onToggle: toggleOptOut
|
|
10984
11039
|
}),
|
|
10985
11040
|
/* @__PURE__ */ jsx45(ConsentNotice, {
|
|
10986
|
-
|
|
11041
|
+
template: copy.consentNotice,
|
|
10987
11042
|
className: "skippr:mt-3"
|
|
10988
11043
|
})
|
|
10989
11044
|
]
|
|
@@ -11427,7 +11482,7 @@ function useVoiceBarDrag(containerRef, onDrop, followRefs, reportDragging) {
|
|
|
11427
11482
|
|
|
11428
11483
|
// src/components/VoiceBarChatLine.tsx
|
|
11429
11484
|
import { useCallback as useCallback32, useContext as useContext25, useEffect as useEffect42, useRef as useRef39, useState as useState33 } from "react";
|
|
11430
|
-
import { jsx as jsx48, jsxs as
|
|
11485
|
+
import { jsx as jsx48, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
11431
11486
|
var IDLE_HIDE_MS = 6000;
|
|
11432
11487
|
function VoiceBarChatLine({
|
|
11433
11488
|
popsDown,
|
|
@@ -11476,7 +11531,7 @@ function VoiceBarChatLine({
|
|
|
11476
11531
|
width: 255,
|
|
11477
11532
|
...popsDown ? { top: "calc(100% + 12px)" } : { bottom: "calc(100% + 12px)" }
|
|
11478
11533
|
};
|
|
11479
|
-
return /* @__PURE__ */
|
|
11534
|
+
return /* @__PURE__ */ jsxs37("div", {
|
|
11480
11535
|
style: embedded ? undefined : style,
|
|
11481
11536
|
onPointerDown: (event) => event.stopPropagation(),
|
|
11482
11537
|
className: cn("skippr:flex skippr:items-center skippr:gap-[7px] skippr:py-[4px] skippr:pl-[13px] skippr:pr-[5px]", !embedded && "skippr:z-[4] skippr:rounded-[12px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:shadow-[0_10px_26px_rgba(45,45,63,0.13),0_2px_6px_rgba(45,45,63,0.05)] skippr:[animation:skippr-fade-in_0.16s_ease]"),
|
|
@@ -11520,7 +11575,7 @@ function VoiceBarChatLine({
|
|
|
11520
11575
|
|
|
11521
11576
|
// src/components/VoiceBarLinkCard.tsx
|
|
11522
11577
|
import { useCallback as useCallback33, useEffect as useEffect43, useRef as useRef40, useState as useState34 } from "react";
|
|
11523
|
-
import { jsx as jsx49, jsxs as
|
|
11578
|
+
import { jsx as jsx49, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
11524
11579
|
var COPIED_RESET_MS2 = 2000;
|
|
11525
11580
|
var DISMISS_AFTER_COPY_MS2 = 3000;
|
|
11526
11581
|
function VoiceBarLinkCard({ card, onDismiss }) {
|
|
@@ -11545,7 +11600,7 @@ function VoiceBarLinkCard({ card, onDismiss }) {
|
|
|
11545
11600
|
setCopied(true);
|
|
11546
11601
|
dismissTimerRef.current = setTimeout(onDismiss, DISMISS_AFTER_COPY_MS2);
|
|
11547
11602
|
}, [card.url, onDismiss]);
|
|
11548
|
-
return /* @__PURE__ */
|
|
11603
|
+
return /* @__PURE__ */ jsxs38("div", {
|
|
11549
11604
|
className: "skippr:relative skippr:w-[225px] skippr:rounded-[14px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:shadow-[0_10px_28px_rgba(45,45,63,0.16)] skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)]",
|
|
11550
11605
|
children: [
|
|
11551
11606
|
/* @__PURE__ */ jsx49("button", {
|
|
@@ -11558,17 +11613,17 @@ function VoiceBarLinkCard({ card, onDismiss }) {
|
|
|
11558
11613
|
strokeWidth: 2.5
|
|
11559
11614
|
})
|
|
11560
11615
|
}),
|
|
11561
|
-
/* @__PURE__ */
|
|
11616
|
+
/* @__PURE__ */ jsxs38("div", {
|
|
11562
11617
|
className: "skippr:px-[12px] skippr:pb-[10px] skippr:pt-[10px]",
|
|
11563
11618
|
children: [
|
|
11564
11619
|
/* @__PURE__ */ jsx49("p", {
|
|
11565
11620
|
className: "skippr:mr-[22px] skippr:truncate skippr:text-[10px] skippr:text-[#8b877f]",
|
|
11566
11621
|
children: card.url
|
|
11567
11622
|
}),
|
|
11568
|
-
/* @__PURE__ */
|
|
11623
|
+
/* @__PURE__ */ jsxs38("div", {
|
|
11569
11624
|
className: "skippr:mt-[9px] skippr:flex skippr:gap-[8px]",
|
|
11570
11625
|
children: [
|
|
11571
|
-
/* @__PURE__ */
|
|
11626
|
+
/* @__PURE__ */ jsxs38("a", {
|
|
11572
11627
|
href: card.url,
|
|
11573
11628
|
target: "_blank",
|
|
11574
11629
|
rel: "noopener noreferrer",
|
|
@@ -11581,7 +11636,7 @@ function VoiceBarLinkCard({ card, onDismiss }) {
|
|
|
11581
11636
|
"open"
|
|
11582
11637
|
]
|
|
11583
11638
|
}),
|
|
11584
|
-
/* @__PURE__ */
|
|
11639
|
+
/* @__PURE__ */ jsxs38("button", {
|
|
11585
11640
|
type: "button",
|
|
11586
11641
|
onClick: handleCopy,
|
|
11587
11642
|
"aria-label": "Copy link",
|
|
@@ -11607,7 +11662,7 @@ function VoiceBarLinkCard({ card, onDismiss }) {
|
|
|
11607
11662
|
|
|
11608
11663
|
// src/components/VoiceBarNotification.tsx
|
|
11609
11664
|
import { useEffect as useEffect44, useRef as useRef41, useState as useState35 } from "react";
|
|
11610
|
-
import { jsx as jsx50, jsxs as
|
|
11665
|
+
import { jsx as jsx50, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
11611
11666
|
function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
11612
11667
|
const [index2, setIndex] = useState35(0);
|
|
11613
11668
|
const [paused, setPaused] = useState35(false);
|
|
@@ -11655,7 +11710,7 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
11655
11710
|
return /* @__PURE__ */ jsx50("div", {
|
|
11656
11711
|
style: wrapperStyle,
|
|
11657
11712
|
"data-skippr-no-drag": "",
|
|
11658
|
-
children: /* @__PURE__ */
|
|
11713
|
+
children: /* @__PURE__ */ jsxs39("div", {
|
|
11659
11714
|
ref: cardRef,
|
|
11660
11715
|
className: "skippr:flex skippr:w-[255px] skippr:items-center skippr:gap-[8px] skippr:rounded-[14px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:px-[11px] skippr:py-[3px] skippr:shadow-[0_10px_28px_rgba(45,45,63,0.16)] skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)]",
|
|
11661
11716
|
children: [
|
|
@@ -11675,7 +11730,7 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
11675
11730
|
className: "skippr:shrink-0 skippr:cursor-pointer skippr:rounded-full skippr:bg-[#2D2D3F] skippr:px-[9px] skippr:py-[3px] skippr:text-[9.5px] skippr:font-semibold skippr:text-white skippr:transition-colors skippr:hover:bg-[#3d3d52]",
|
|
11676
11731
|
children: "start"
|
|
11677
11732
|
}),
|
|
11678
|
-
hasMultiple && /* @__PURE__ */
|
|
11733
|
+
hasMultiple && /* @__PURE__ */ jsxs39("button", {
|
|
11679
11734
|
type: "button",
|
|
11680
11735
|
onClick: () => setIndex((current) => (current + 1) % notifications.length),
|
|
11681
11736
|
"aria-label": "Next",
|
|
@@ -11698,7 +11753,7 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
11698
11753
|
|
|
11699
11754
|
// src/components/VoiceBarPlanCard.tsx
|
|
11700
11755
|
import { useEffect as useEffect45, useState as useState36 } from "react";
|
|
11701
|
-
import { jsx as jsx51, jsxs as
|
|
11756
|
+
import { jsx as jsx51, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
11702
11757
|
var APPROVING_RESET_MS2 = 8000;
|
|
11703
11758
|
function StepIndicator({ step }) {
|
|
11704
11759
|
if (step.status === "done") {
|
|
@@ -11760,10 +11815,10 @@ function VoiceBarPlanCard({
|
|
|
11760
11815
|
const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
|
|
11761
11816
|
return () => clearTimeout(timer);
|
|
11762
11817
|
}, [plan.state, onDismiss]);
|
|
11763
|
-
return /* @__PURE__ */
|
|
11818
|
+
return /* @__PURE__ */ jsxs40("div", {
|
|
11764
11819
|
className: cn(!embedded && "skippr:w-[255px] skippr:rounded-[14px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:shadow-[0_10px_28px_rgba(45,45,63,0.16)] skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)]"),
|
|
11765
11820
|
children: [
|
|
11766
|
-
/* @__PURE__ */
|
|
11821
|
+
/* @__PURE__ */ jsxs40("div", {
|
|
11767
11822
|
className: "skippr:flex skippr:items-center skippr:justify-between skippr:border-b skippr:border-[rgba(45,45,63,0.06)] skippr:px-[12px] skippr:py-[6px]",
|
|
11768
11823
|
children: [
|
|
11769
11824
|
/* @__PURE__ */ jsx51("span", {
|
|
@@ -11782,14 +11837,14 @@ function VoiceBarPlanCard({
|
|
|
11782
11837
|
})
|
|
11783
11838
|
]
|
|
11784
11839
|
}),
|
|
11785
|
-
/* @__PURE__ */
|
|
11840
|
+
/* @__PURE__ */ jsxs40("div", {
|
|
11786
11841
|
className: "skippr:px-[12px] skippr:pb-[10px] skippr:pt-[8px]",
|
|
11787
11842
|
children: [
|
|
11788
11843
|
/* @__PURE__ */ jsx51("p", {
|
|
11789
11844
|
className: "skippr:text-[11.5px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#2D2D3F]",
|
|
11790
11845
|
children: "Here's my plan"
|
|
11791
11846
|
}),
|
|
11792
|
-
awaitingApproval && /* @__PURE__ */
|
|
11847
|
+
awaitingApproval && /* @__PURE__ */ jsxs40("p", {
|
|
11793
11848
|
className: "skippr:mt-[1px] skippr:text-[10px] skippr:text-[#8b877f]",
|
|
11794
11849
|
children: [
|
|
11795
11850
|
plan.steps.length,
|
|
@@ -11798,7 +11853,7 @@ function VoiceBarPlanCard({
|
|
|
11798
11853
|
}),
|
|
11799
11854
|
/* @__PURE__ */ jsx51("div", {
|
|
11800
11855
|
className: "skippr:mt-[8px] skippr:max-h-[132px] skippr:space-y-[6px] skippr:overflow-y-auto skippr:overscroll-contain",
|
|
11801
|
-
children: plan.steps.map((step) => /* @__PURE__ */
|
|
11856
|
+
children: plan.steps.map((step) => /* @__PURE__ */ jsxs40("div", {
|
|
11802
11857
|
className: "skippr:flex skippr:items-center skippr:gap-[7px]",
|
|
11803
11858
|
children: [
|
|
11804
11859
|
/* @__PURE__ */ jsx51(StepIndicator, {
|
|
@@ -11813,10 +11868,10 @@ function VoiceBarPlanCard({
|
|
|
11813
11868
|
}),
|
|
11814
11869
|
/* @__PURE__ */ jsx51("div", {
|
|
11815
11870
|
className: "skippr:mt-[9px]",
|
|
11816
|
-
children: awaitingApproval ? /* @__PURE__ */
|
|
11871
|
+
children: awaitingApproval ? /* @__PURE__ */ jsxs40("div", {
|
|
11817
11872
|
className: "skippr:flex skippr:gap-[8px]",
|
|
11818
11873
|
children: [
|
|
11819
|
-
/* @__PURE__ */
|
|
11874
|
+
/* @__PURE__ */ jsxs40("button", {
|
|
11820
11875
|
type: "button",
|
|
11821
11876
|
disabled: isApproving,
|
|
11822
11877
|
onClick: approve,
|
|
@@ -11836,7 +11891,7 @@ function VoiceBarPlanCard({
|
|
|
11836
11891
|
children: "cancel"
|
|
11837
11892
|
})
|
|
11838
11893
|
]
|
|
11839
|
-
}) : /* @__PURE__ */
|
|
11894
|
+
}) : /* @__PURE__ */ jsxs40("span", {
|
|
11840
11895
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
11841
11896
|
className: "skippr:flex skippr:items-center skippr:justify-center skippr:gap-[5px] skippr:rounded-full skippr:bg-brand skippr:px-[10px] skippr:py-[6px] skippr:text-[11px] skippr:font-semibold",
|
|
11842
11897
|
children: [
|
|
@@ -11855,7 +11910,7 @@ function VoiceBarPlanCard({
|
|
|
11855
11910
|
}
|
|
11856
11911
|
|
|
11857
11912
|
// src/components/VoiceBarFrame.tsx
|
|
11858
|
-
import { jsx as jsx52, jsxs as
|
|
11913
|
+
import { jsx as jsx52, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
11859
11914
|
var AUTO_OFF_MOTES = [
|
|
11860
11915
|
{ left: "13%", delay: "0s", size: 4 },
|
|
11861
11916
|
{ left: "27%", delay: "0.4s", size: 3 },
|
|
@@ -11868,7 +11923,7 @@ var AUTO_OFF_MOTES = [
|
|
|
11868
11923
|
var EDGE_BUTTON = "skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:text-[#2D2D3F] skippr:cursor-pointer skippr:transition-colors skippr:hover:bg-[#f2f0eb]";
|
|
11869
11924
|
var PILL = "skippr:relative skippr:flex skippr:h-[36px] skippr:min-w-[96px] skippr:flex-1 skippr:items-center skippr:justify-center skippr:gap-[8px] skippr:rounded-full skippr:text-[13px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-white";
|
|
11870
11925
|
function LoadingAvatar({ logoUrl }) {
|
|
11871
|
-
return /* @__PURE__ */
|
|
11926
|
+
return /* @__PURE__ */ jsxs41("span", {
|
|
11872
11927
|
className: "skippr:relative skippr:size-[22px] skippr:shrink-0",
|
|
11873
11928
|
children: [
|
|
11874
11929
|
/* @__PURE__ */ jsx52("span", {
|
|
@@ -11893,7 +11948,7 @@ function BusyRing({ tone }) {
|
|
|
11893
11948
|
});
|
|
11894
11949
|
}
|
|
11895
11950
|
function AgentDots() {
|
|
11896
|
-
return /* @__PURE__ */
|
|
11951
|
+
return /* @__PURE__ */ jsxs41("span", {
|
|
11897
11952
|
className: "skippr:flex skippr:items-center skippr:gap-[4px]",
|
|
11898
11953
|
children: [
|
|
11899
11954
|
/* @__PURE__ */ jsx52("span", {
|
|
@@ -11991,14 +12046,14 @@ function ShortcutHint({
|
|
|
11991
12046
|
el.removeEventListener("mouseleave", leave);
|
|
11992
12047
|
};
|
|
11993
12048
|
}, [enabled, seenRef]);
|
|
11994
|
-
return /* @__PURE__ */
|
|
12049
|
+
return /* @__PURE__ */ jsxs41("div", {
|
|
11995
12050
|
ref,
|
|
11996
12051
|
className: "skippr:relative skippr:flex skippr:min-w-[96px] skippr:flex-1",
|
|
11997
12052
|
children: [
|
|
11998
|
-
enabled && visible && !suppressed && /* @__PURE__ */
|
|
12053
|
+
enabled && visible && !suppressed && /* @__PURE__ */ jsxs41("div", {
|
|
11999
12054
|
className: "skippr:pointer-events-none skippr:absolute skippr:bottom-[calc(100%+11px)] skippr:left-1/2 skippr:z-[8] skippr:flex skippr:-translate-x-1/2 skippr:items-center skippr:gap-[7px] skippr:whitespace-nowrap skippr:rounded-[11px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:px-[11px] skippr:py-[6px] skippr:shadow-[0_8px_22px_rgba(45,45,63,0.12),0_1px_3px_rgba(45,45,63,0.04)] skippr:[animation:skippr-fade-in_0.22s_ease]",
|
|
12000
12055
|
children: [
|
|
12001
|
-
/* @__PURE__ */
|
|
12056
|
+
/* @__PURE__ */ jsxs41("span", {
|
|
12002
12057
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
12003
12058
|
children: [
|
|
12004
12059
|
/* @__PURE__ */ jsx52(ShortcutChip, {
|
|
@@ -12021,7 +12076,7 @@ function ShortcutHint({
|
|
|
12021
12076
|
className: "skippr:text-[10px] skippr:text-[#cbc7bf]",
|
|
12022
12077
|
children: "·"
|
|
12023
12078
|
}),
|
|
12024
|
-
/* @__PURE__ */
|
|
12079
|
+
/* @__PURE__ */ jsxs41("span", {
|
|
12025
12080
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
12026
12081
|
children: [
|
|
12027
12082
|
/* @__PURE__ */ jsx52(ShortcutChip, {
|
|
@@ -12255,7 +12310,7 @@ function VoiceBarFrame({
|
|
|
12255
12310
|
...popsDown ? { top: "calc(100% + 12px)" } : { bottom: "calc(100% + 12px)" }
|
|
12256
12311
|
};
|
|
12257
12312
|
const pillEvaporate = autoOffClosing ? "skippr:[animation:skippr-evaporate_3.2s_ease-in_forwards] skippr:motion-reduce:animate-none" : "";
|
|
12258
|
-
return /* @__PURE__ */
|
|
12313
|
+
return /* @__PURE__ */ jsxs41("div", {
|
|
12259
12314
|
ref: setContainerRefs,
|
|
12260
12315
|
style: barPosStyle(pos),
|
|
12261
12316
|
className: cn("skippr:fixed skippr:z-[9999] skippr:flex skippr:touch-none skippr:cursor-grab skippr:items-center", barWidthClass),
|
|
@@ -12289,7 +12344,7 @@ function VoiceBarFrame({
|
|
|
12289
12344
|
showLiveStrip && /* @__PURE__ */ jsx52("div", {
|
|
12290
12345
|
style: stripStyle,
|
|
12291
12346
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
12292
|
-
children: /* @__PURE__ */
|
|
12347
|
+
children: /* @__PURE__ */ jsxs41("div", {
|
|
12293
12348
|
className: "skippr:flex skippr:items-center skippr:gap-[7px] skippr:rounded-full skippr:border skippr:border-[rgba(45,45,63,0.06)] skippr:bg-white/95 skippr:px-[12px] skippr:py-[5px] skippr:shadow-[0_4px_12px_rgba(45,45,63,0.1)] skippr:[animation:skippr-fade-in_0.25s_ease]",
|
|
12294
12349
|
children: [
|
|
12295
12350
|
/* @__PURE__ */ jsx52("span", {
|
|
@@ -12306,7 +12361,7 @@ function VoiceBarFrame({
|
|
|
12306
12361
|
showTimerStrip && sessionTimer && /* @__PURE__ */ jsx52("div", {
|
|
12307
12362
|
style: stripStyle,
|
|
12308
12363
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
12309
|
-
children: /* @__PURE__ */
|
|
12364
|
+
children: /* @__PURE__ */ jsxs41("div", {
|
|
12310
12365
|
className: "skippr:flex skippr:items-center skippr:gap-[7px] skippr:rounded-full skippr:border skippr:border-[rgba(45,45,63,0.06)] skippr:bg-white/95 skippr:px-[12px] skippr:py-[5px] skippr:shadow-[0_4px_12px_rgba(45,45,63,0.1)] skippr:[animation:skippr-fade-in_0.25s_ease]",
|
|
12311
12366
|
children: [
|
|
12312
12367
|
/* @__PURE__ */ jsx52("span", {
|
|
@@ -12324,7 +12379,7 @@ function VoiceBarFrame({
|
|
|
12324
12379
|
role: "status",
|
|
12325
12380
|
style: stripStyle,
|
|
12326
12381
|
className: "skippr:pointer-events-none skippr:z-[6]",
|
|
12327
|
-
children: /* @__PURE__ */
|
|
12382
|
+
children: /* @__PURE__ */ jsxs41("div", {
|
|
12328
12383
|
className: "skippr:flex skippr:items-center skippr:gap-[7px] skippr:rounded-full skippr:border skippr:border-[rgba(45,45,63,0.06)] skippr:bg-white/95 skippr:px-[12px] skippr:py-[5px] skippr:shadow-[0_4px_12px_rgba(45,45,63,0.1)] skippr:[animation:skippr-fade-in_0.25s_ease]",
|
|
12329
12384
|
children: [
|
|
12330
12385
|
/* @__PURE__ */ jsx52("span", {
|
|
@@ -12375,7 +12430,7 @@ function VoiceBarFrame({
|
|
|
12375
12430
|
children: /* @__PURE__ */ jsx52("div", {
|
|
12376
12431
|
className: "skippr:w-[220px] skippr:rounded-[14px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:px-3 skippr:py-2 skippr:shadow-[0_10px_28px_rgba(45,45,63,0.16)] skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)]",
|
|
12377
12432
|
children: /* @__PURE__ */ jsx52(ConsentNotice, {
|
|
12378
|
-
|
|
12433
|
+
template: CONSENT_NOTICE_SESSION_START
|
|
12379
12434
|
})
|
|
12380
12435
|
})
|
|
12381
12436
|
}),
|
|
@@ -12394,10 +12449,10 @@ function VoiceBarFrame({
|
|
|
12394
12449
|
pos,
|
|
12395
12450
|
onDismiss: closeBanner
|
|
12396
12451
|
}),
|
|
12397
|
-
/* @__PURE__ */
|
|
12452
|
+
/* @__PURE__ */ jsxs41("div", {
|
|
12398
12453
|
className: cn("skippr:relative skippr:z-[1] skippr:flex skippr:w-full skippr:items-center skippr:gap-[7px] skippr:px-[7px] skippr:py-[5px]", pillEvaporate),
|
|
12399
12454
|
children: [
|
|
12400
|
-
showClose && /* @__PURE__ */
|
|
12455
|
+
showClose && /* @__PURE__ */ jsxs41("button", {
|
|
12401
12456
|
type: "button",
|
|
12402
12457
|
onClick: ifNotDragged(closeBar),
|
|
12403
12458
|
disabled: isPausing || isLoading,
|
|
@@ -12413,7 +12468,7 @@ function VoiceBarFrame({
|
|
|
12413
12468
|
})
|
|
12414
12469
|
]
|
|
12415
12470
|
}),
|
|
12416
|
-
isLoading && /* @__PURE__ */
|
|
12471
|
+
isLoading && /* @__PURE__ */ jsxs41("div", {
|
|
12417
12472
|
className: cn(PILL, "skippr:bg-[#F1EFEA] skippr:overflow-hidden", !isExchanging && "skippr:[animation:skippr-fade-in_0.25s_ease]"),
|
|
12418
12473
|
children: [
|
|
12419
12474
|
/* @__PURE__ */ jsx52(LoadingAvatar, {
|
|
@@ -12423,7 +12478,7 @@ function VoiceBarFrame({
|
|
|
12423
12478
|
className: "skippr:whitespace-nowrap skippr:text-[12.5px] skippr:font-semibold skippr:text-[#5a5650]",
|
|
12424
12479
|
children: "Agent is loading"
|
|
12425
12480
|
}),
|
|
12426
|
-
/* @__PURE__ */
|
|
12481
|
+
/* @__PURE__ */ jsxs41("span", {
|
|
12427
12482
|
className: "skippr:flex skippr:items-end skippr:gap-[3px]",
|
|
12428
12483
|
children: [
|
|
12429
12484
|
/* @__PURE__ */ jsx52("span", {
|
|
@@ -12443,7 +12498,7 @@ function VoiceBarFrame({
|
|
|
12443
12498
|
enabled: isPushToTalk,
|
|
12444
12499
|
seenRef: hintSeenRef,
|
|
12445
12500
|
suppressed: hintSuppressed,
|
|
12446
|
-
children: /* @__PURE__ */
|
|
12501
|
+
children: /* @__PURE__ */ jsxs41("button", {
|
|
12447
12502
|
type: "button",
|
|
12448
12503
|
"data-skippr-no-drag": "",
|
|
12449
12504
|
style: {
|
|
@@ -12470,7 +12525,7 @@ function VoiceBarFrame({
|
|
|
12470
12525
|
]
|
|
12471
12526
|
})
|
|
12472
12527
|
}),
|
|
12473
|
-
showLivePill && /* @__PURE__ */
|
|
12528
|
+
showLivePill && /* @__PURE__ */ jsxs41("div", {
|
|
12474
12529
|
style: { background: livePillBg, color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
12475
12530
|
className: cn(PILL, "skippr:min-w-0 skippr:gap-[10px] skippr:px-[5px]"),
|
|
12476
12531
|
children: [
|
|
@@ -12500,7 +12555,7 @@ function VoiceBarFrame({
|
|
|
12500
12555
|
})
|
|
12501
12556
|
]
|
|
12502
12557
|
}),
|
|
12503
|
-
!isLoading && isConnected && textMode && /* @__PURE__ */
|
|
12558
|
+
!isLoading && isConnected && textMode && /* @__PURE__ */ jsxs41("div", {
|
|
12504
12559
|
className: cn(PILL, "skippr:gap-[7px] skippr:bg-[#F1EFEA] skippr:text-[#5a5650] skippr:[animation:skippr-fade-in_0.25s_ease]"),
|
|
12505
12560
|
children: [
|
|
12506
12561
|
/* @__PURE__ */ jsx52(MessageSquare, {
|
|
@@ -12510,7 +12565,7 @@ function VoiceBarFrame({
|
|
|
12510
12565
|
"Text mode"
|
|
12511
12566
|
]
|
|
12512
12567
|
}),
|
|
12513
|
-
!sessionLive && /* @__PURE__ */
|
|
12568
|
+
!sessionLive && /* @__PURE__ */ jsxs41("button", {
|
|
12514
12569
|
type: "button",
|
|
12515
12570
|
onClick: ifNotDragged(() => {
|
|
12516
12571
|
if (canStart) {
|
|
@@ -12551,7 +12606,7 @@ function VoiceBarFrame({
|
|
|
12551
12606
|
})
|
|
12552
12607
|
]
|
|
12553
12608
|
}),
|
|
12554
|
-
lineBlockOpen && /* @__PURE__ */
|
|
12609
|
+
lineBlockOpen && /* @__PURE__ */ jsxs41("div", {
|
|
12555
12610
|
style: chatBlockStyle,
|
|
12556
12611
|
"data-skippr-no-drag": "",
|
|
12557
12612
|
onPointerDown: (event) => event.stopPropagation(),
|
|
@@ -12583,7 +12638,7 @@ import { useCallback as useCallback35, useEffect as useEffect48, useRef as useRe
|
|
|
12583
12638
|
|
|
12584
12639
|
// src/components/LauncherNotification.tsx
|
|
12585
12640
|
import { useEffect as useEffect47, useRef as useRef43, useState as useState38 } from "react";
|
|
12586
|
-
import { jsx as jsx53, jsxs as
|
|
12641
|
+
import { jsx as jsx53, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
12587
12642
|
function LauncherNotification({
|
|
12588
12643
|
notifications,
|
|
12589
12644
|
dock,
|
|
@@ -12638,7 +12693,7 @@ function LauncherNotification({
|
|
|
12638
12693
|
return /* @__PURE__ */ jsx53("div", {
|
|
12639
12694
|
style: wrapperStyle,
|
|
12640
12695
|
"data-skippr-no-drag": "",
|
|
12641
|
-
children: /* @__PURE__ */
|
|
12696
|
+
children: /* @__PURE__ */ jsxs42("div", {
|
|
12642
12697
|
ref: cardRef,
|
|
12643
12698
|
className: "skippr:flex skippr:w-[148px] skippr:items-center skippr:gap-[4px] skippr:rounded-[14px] skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:pr-[6px] skippr:pl-[9px] skippr:py-[3px] skippr:shadow-[0_10px_28px_rgba(45,45,63,0.16)] skippr:[animation:skippr-tip-in_360ms_cubic-bezier(0.34,1.3,0.64,1)]",
|
|
12644
12699
|
children: [
|
|
@@ -12680,7 +12735,7 @@ function LauncherNotification({
|
|
|
12680
12735
|
}
|
|
12681
12736
|
|
|
12682
12737
|
// src/components/VoiceBarLauncher.tsx
|
|
12683
|
-
import { jsx as jsx54, jsxs as
|
|
12738
|
+
import { jsx as jsx54, jsxs as jsxs43, Fragment as Fragment7 } from "react/jsx-runtime";
|
|
12684
12739
|
function SkipprMark2() {
|
|
12685
12740
|
return /* @__PURE__ */ jsx54("svg", {
|
|
12686
12741
|
viewBox: "0 0 15.4044 18.4853",
|
|
@@ -12766,7 +12821,7 @@ function LauncherChat({
|
|
|
12766
12821
|
onClick
|
|
12767
12822
|
}) {
|
|
12768
12823
|
const vertical = isHorizontalEdge(edge);
|
|
12769
|
-
return /* @__PURE__ */
|
|
12824
|
+
return /* @__PURE__ */ jsxs43("div", {
|
|
12770
12825
|
className: cn("skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center skippr:gap-[5px] skippr:overflow-hidden skippr:transition-all skippr:duration-[400ms] skippr:ease-[cubic-bezier(0.22,1,0.36,1)]", AVATAR_FLEX[edge]),
|
|
12771
12826
|
style: {
|
|
12772
12827
|
width: vertical ? 46 : revealed ? 52 : 0,
|
|
@@ -12909,7 +12964,7 @@ function VoiceBarLauncher({
|
|
|
12909
12964
|
const expanded = hovered && !!onChat;
|
|
12910
12965
|
const length = expanded ? 84 : 40;
|
|
12911
12966
|
const thickness = expanded ? 36 : 10;
|
|
12912
|
-
return /* @__PURE__ */
|
|
12967
|
+
return /* @__PURE__ */ jsxs43("div", {
|
|
12913
12968
|
ref: containerRef,
|
|
12914
12969
|
style: dockStyleFlush(dock),
|
|
12915
12970
|
className: "skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab",
|
|
@@ -12917,7 +12972,7 @@ function VoiceBarLauncher({
|
|
|
12917
12972
|
/* @__PURE__ */ jsx54("div", {
|
|
12918
12973
|
style: horizontal ? { width: length, height: thickness } : { width: thickness, height: length },
|
|
12919
12974
|
className: cn("skippr:relative skippr:flex skippr:items-center skippr:justify-center skippr:gap-[6px] skippr:border-2 skippr:transition-[width,height,background-color,border-color] skippr:duration-200 skippr:ease-out", !horizontal && "skippr:flex-col", expanded ? "skippr:border-brand skippr:bg-white" : "skippr:border-transparent skippr:bg-brand", expanded ? STRIP_ROUNDING_EXPANDED[dock.edge] : STRIP_ROUNDING[dock.edge], expanded ? AVATAR_SHADOW[dock.edge] : STRIP_SHADOW[dock.edge]),
|
|
12920
|
-
children: expanded ? /* @__PURE__ */
|
|
12975
|
+
children: expanded ? /* @__PURE__ */ jsxs43(Fragment7, {
|
|
12921
12976
|
children: [
|
|
12922
12977
|
/* @__PURE__ */ jsx54("button", {
|
|
12923
12978
|
type: "button",
|
|
@@ -12979,12 +13034,12 @@ function VoiceBarLauncher({
|
|
|
12979
13034
|
]
|
|
12980
13035
|
});
|
|
12981
13036
|
}
|
|
12982
|
-
return /* @__PURE__ */
|
|
13037
|
+
return /* @__PURE__ */ jsxs43("div", {
|
|
12983
13038
|
ref: containerRef,
|
|
12984
13039
|
style: dockStyleFlush(dock),
|
|
12985
13040
|
className: "skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab",
|
|
12986
13041
|
children: [
|
|
12987
|
-
/* @__PURE__ */
|
|
13042
|
+
/* @__PURE__ */ jsxs43("div", {
|
|
12988
13043
|
style: { gap: onChat && hovered ? 2 : 0 },
|
|
12989
13044
|
className: cn("skippr:flex skippr:items-center skippr:border-2 skippr:border-brand skippr:bg-white skippr:p-[3px] skippr:transition-[gap] skippr:duration-[400ms] skippr:ease-[cubic-bezier(0.22,1,0.36,1)]", "skippr:[animation:skippr-pop_0.2s_ease]", AVATAR_FLEX[dock.edge], VIEWPORT_ROUNDING[dock.edge], AVATAR_SHADOW[dock.edge]),
|
|
12990
13045
|
children: [
|
|
@@ -13099,7 +13154,7 @@ function VoiceBar({ revealed }) {
|
|
|
13099
13154
|
}
|
|
13100
13155
|
|
|
13101
13156
|
// src/components/LiveAgent.tsx
|
|
13102
|
-
import { jsx as jsx56, jsxs as
|
|
13157
|
+
import { jsx as jsx56, jsxs as jsxs44, Fragment as Fragment9 } from "react/jsx-runtime";
|
|
13103
13158
|
function readSavedPosition() {
|
|
13104
13159
|
try {
|
|
13105
13160
|
const saved = localStorage.getItem("skippr_widget_position");
|
|
@@ -13142,6 +13197,7 @@ function LiveAgent(props) {
|
|
|
13142
13197
|
getUserToken,
|
|
13143
13198
|
userToken,
|
|
13144
13199
|
userContext,
|
|
13200
|
+
locale: hostLocale,
|
|
13145
13201
|
verticalAlign: hostVerticalAlign,
|
|
13146
13202
|
variant = "floating",
|
|
13147
13203
|
minimizable = true,
|
|
@@ -13258,6 +13314,7 @@ function LiveAgent(props) {
|
|
|
13258
13314
|
if (!isConnected)
|
|
13259
13315
|
setTextModeState(false);
|
|
13260
13316
|
}, [isConnected, setTextModeState]);
|
|
13317
|
+
const locale = useDetectedLocale(hostLocale);
|
|
13261
13318
|
const {
|
|
13262
13319
|
modules: availableModules,
|
|
13263
13320
|
defaultSelection,
|
|
@@ -13271,7 +13328,8 @@ function LiveAgent(props) {
|
|
|
13271
13328
|
enabled: !isSessionLive,
|
|
13272
13329
|
bearerToken,
|
|
13273
13330
|
authedFetch,
|
|
13274
|
-
agentId: hostAgentId ?? undefined
|
|
13331
|
+
agentId: hostAgentId ?? undefined,
|
|
13332
|
+
locale
|
|
13275
13333
|
});
|
|
13276
13334
|
const isAuthenticated = bearerToken !== null || auth.isAuthenticated;
|
|
13277
13335
|
const noModulesAvailable = hasResolvedModules && !modulesError && availableModules.length === 0 && !isSessionLive;
|
|
@@ -13833,17 +13891,17 @@ function LiveAgent(props) {
|
|
|
13833
13891
|
}
|
|
13834
13892
|
return /* @__PURE__ */ jsx56(LiveAgentContext.Provider, {
|
|
13835
13893
|
value: ctx,
|
|
13836
|
-
children: /* @__PURE__ */
|
|
13894
|
+
children: /* @__PURE__ */ jsxs44(LiveKitRoom, {
|
|
13837
13895
|
serverUrl: connection?.livekitUrl,
|
|
13838
13896
|
token: connection?.token,
|
|
13839
13897
|
connect: shouldConnect,
|
|
13840
13898
|
audio: !startMuted,
|
|
13841
13899
|
onDisconnected: handleRoomDisconnected,
|
|
13842
13900
|
children: [
|
|
13843
|
-
/* @__PURE__ */
|
|
13901
|
+
/* @__PURE__ */ jsxs44(Fragment8, {
|
|
13844
13902
|
children: [
|
|
13845
13903
|
connection && !textMode && /* @__PURE__ */ jsx56(RoomAudioRenderer, {}),
|
|
13846
|
-
/* @__PURE__ */
|
|
13904
|
+
/* @__PURE__ */ jsxs44(SessionHoldProvider, {
|
|
13847
13905
|
children: [
|
|
13848
13906
|
connection && captureMode === CAPTURE_MODE.Screenshare && /* @__PURE__ */ jsx56(AutoStartMedia, {
|
|
13849
13907
|
pendingScreenStream,
|
|
@@ -13854,7 +13912,7 @@ function LiveAgent(props) {
|
|
|
13854
13912
|
pushOrTapMicMode: isRequestResponseMicMode(agentControls?.micMode),
|
|
13855
13913
|
startMuted
|
|
13856
13914
|
}),
|
|
13857
|
-
/* @__PURE__ */
|
|
13915
|
+
/* @__PURE__ */ jsxs44(ShadowHost, {
|
|
13858
13916
|
accentColor: appearance?.accentColor ?? null,
|
|
13859
13917
|
children: [
|
|
13860
13918
|
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.highlight && /* @__PURE__ */ jsx56(HighlightOverlay, {}),
|
|
@@ -13867,7 +13925,7 @@ function LiveAgent(props) {
|
|
|
13867
13925
|
children: /* @__PURE__ */ jsx56(TranscriptionsProvider, {
|
|
13868
13926
|
children: /* @__PURE__ */ jsx56("div", {
|
|
13869
13927
|
id: WIDGET_ROOT_ID,
|
|
13870
|
-
children: variant === "sidebar" ? /* @__PURE__ */
|
|
13928
|
+
children: variant === "sidebar" ? /* @__PURE__ */ jsxs44(Fragment9, {
|
|
13871
13929
|
children: [
|
|
13872
13930
|
isMinimized && !showControlBar && isLauncherRevealed && /* @__PURE__ */ jsx56(MinimizedBubble, {
|
|
13873
13931
|
welcomeMessage,
|
|
@@ -13884,12 +13942,12 @@ function LiveAgent(props) {
|
|
|
13884
13942
|
]
|
|
13885
13943
|
}) : !isLauncherRevealed ? null : buddyActive ? /* @__PURE__ */ jsx56(BuddyVoiceBar, {
|
|
13886
13944
|
revealed: isLauncherRevealed
|
|
13887
|
-
}) : /* @__PURE__ */
|
|
13945
|
+
}) : /* @__PURE__ */ jsxs44(Fragment9, {
|
|
13888
13946
|
children: [
|
|
13889
13947
|
/* @__PURE__ */ jsx56(VoiceBar, {
|
|
13890
13948
|
revealed: isLauncherRevealed
|
|
13891
13949
|
}),
|
|
13892
|
-
(agentControls?.chat ?? DEFAULT_CHAT_SURFACE) === CHAT_SURFACE.Room && /* @__PURE__ */
|
|
13950
|
+
(agentControls?.chat ?? DEFAULT_CHAT_SURFACE) === CHAT_SURFACE.Room && /* @__PURE__ */ jsxs44(Fragment9, {
|
|
13893
13951
|
children: [
|
|
13894
13952
|
/* @__PURE__ */ jsx56(SplashPanel, {}),
|
|
13895
13953
|
/* @__PURE__ */ jsx56(Sidebar, {
|