@skippr/live-agent-sdk 0.107.0 → 0.109.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 +29 -3
- package/dist/esm/lib-exports.js +1138 -937
- package/dist/skippr-sdk.css +1 -1
- package/dist/skippr-sdk.js +145 -145
- package/dist/types/components/LogoMark.d.ts +6 -0
- package/dist/types/components/SplashAlwaysOn.d.ts +19 -0
- package/dist/types/components/SplashMediaSection.d.ts +11 -0
- package/dist/types/components/{SplashDefault.d.ts → SplashPrimary.d.ts} +1 -1
- package/dist/types/context/LiveAgentContext.d.ts +5 -3
- package/dist/types/hooks/useAdoptionGoals.d.ts +1 -0
- package/dist/types/hooks/useSessionHold.d.ts +1 -1
- package/dist/types/hooks/useSplash.d.ts +9 -2
- package/dist/types/lib/constants.d.ts +9 -1
- package/dist/types/lib/splashStyles.d.ts +10 -0
- package/package.json +1 -1
- package/dist/types/hooks/useHighlightControl.d.ts +0 -6
package/dist/esm/lib-exports.js
CHANGED
|
@@ -8,7 +8,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
8
8
|
|
|
9
9
|
// src/components/LiveAgent.tsx
|
|
10
10
|
import { LiveKitRoom, RoomAudioRenderer } from "@livekit/components-react";
|
|
11
|
-
import { Fragment as
|
|
11
|
+
import { Fragment as Fragment6, useCallback as useCallback32, useEffect as useEffect48, useMemo as useMemo8, useRef as useRef42, useState as useState38 } from "react";
|
|
12
12
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
13
13
|
import { forwardRef as forwardRef2, createElement as createElement3 } from "react";
|
|
14
14
|
|
|
@@ -521,6 +521,10 @@ var LAUNCHER_MODE = {
|
|
|
521
521
|
Template: "template"
|
|
522
522
|
};
|
|
523
523
|
var DEFAULT_LAUNCHER_MODE = LAUNCHER_MODE.Avatar;
|
|
524
|
+
var SPLASH_LAYOUT = {
|
|
525
|
+
Primary: "primary",
|
|
526
|
+
AlwaysOn: "always_on"
|
|
527
|
+
};
|
|
524
528
|
var SPLASH_COPY_DEFAULTS = {
|
|
525
529
|
howItWorksHeading: "How it works",
|
|
526
530
|
lastAccomplishmentHeading: "Last accomplishment",
|
|
@@ -532,7 +536,11 @@ var SPLASH_COPY_DEFAULTS = {
|
|
|
532
536
|
screenSubtext: "Skippr sees your screen while the session runs",
|
|
533
537
|
startCta: "Start with Skippr",
|
|
534
538
|
continueCta: "Continue session",
|
|
535
|
-
dismissLabel: "Skip for now"
|
|
539
|
+
dismissLabel: "Skip for now",
|
|
540
|
+
tipsHeading: "Tips",
|
|
541
|
+
tipsCta: "Need help with something else?",
|
|
542
|
+
tipsEmptyTitle: "Ask about this page",
|
|
543
|
+
tipsEmptyDescription: "Get instant answers about anything you see here"
|
|
536
544
|
};
|
|
537
545
|
var SPLASH_SECTION_GLYPH = {
|
|
538
546
|
Route: "route",
|
|
@@ -3262,6 +3270,82 @@ import { useLocalParticipant as useLocalParticipant3 } from "@livekit/components
|
|
|
3262
3270
|
import { Track } from "livekit-client";
|
|
3263
3271
|
import { useCallback as useCallback10, useEffect as useEffect11, useRef as useRef11, useState as useState9 } from "react";
|
|
3264
3272
|
|
|
3273
|
+
// src/capture/agentActionSignal.ts
|
|
3274
|
+
var isDispatchingAgentAction = false;
|
|
3275
|
+
function runAgentAction(dispatch) {
|
|
3276
|
+
isDispatchingAgentAction = true;
|
|
3277
|
+
try {
|
|
3278
|
+
dispatch();
|
|
3279
|
+
} finally {
|
|
3280
|
+
isDispatchingAgentAction = false;
|
|
3281
|
+
}
|
|
3282
|
+
}
|
|
3283
|
+
function isAgentActionInProgress() {
|
|
3284
|
+
return isDispatchingAgentAction;
|
|
3285
|
+
}
|
|
3286
|
+
var snapshotRequestHandler = null;
|
|
3287
|
+
function onSnapshotRequest(handler) {
|
|
3288
|
+
snapshotRequestHandler = handler;
|
|
3289
|
+
return () => {
|
|
3290
|
+
if (snapshotRequestHandler === handler)
|
|
3291
|
+
snapshotRequestHandler = null;
|
|
3292
|
+
};
|
|
3293
|
+
}
|
|
3294
|
+
function requestSnapshotAfterAction() {
|
|
3295
|
+
snapshotRequestHandler?.();
|
|
3296
|
+
}
|
|
3297
|
+
var stopSubscribers = new Set;
|
|
3298
|
+
function stopActions() {
|
|
3299
|
+
for (const subscriber of stopSubscribers)
|
|
3300
|
+
subscriber();
|
|
3301
|
+
}
|
|
3302
|
+
function onActionsStopped(subscriber) {
|
|
3303
|
+
stopSubscribers.add(subscriber);
|
|
3304
|
+
return () => {
|
|
3305
|
+
stopSubscribers.delete(subscriber);
|
|
3306
|
+
};
|
|
3307
|
+
}
|
|
3308
|
+
var actionsBusy = false;
|
|
3309
|
+
var busySubscribers = new Set;
|
|
3310
|
+
function setActionsBusy(busy) {
|
|
3311
|
+
if (actionsBusy === busy)
|
|
3312
|
+
return;
|
|
3313
|
+
actionsBusy = busy;
|
|
3314
|
+
for (const subscriber of busySubscribers)
|
|
3315
|
+
subscriber(busy);
|
|
3316
|
+
}
|
|
3317
|
+
function isActionsBusy() {
|
|
3318
|
+
return actionsBusy;
|
|
3319
|
+
}
|
|
3320
|
+
function subscribeActionsBusy(subscriber) {
|
|
3321
|
+
busySubscribers.add(subscriber);
|
|
3322
|
+
return () => {
|
|
3323
|
+
busySubscribers.delete(subscriber);
|
|
3324
|
+
};
|
|
3325
|
+
}
|
|
3326
|
+
|
|
3327
|
+
// src/capture/highlightSignal.ts
|
|
3328
|
+
var highlightActive = false;
|
|
3329
|
+
var activeSubscribers = new Set;
|
|
3330
|
+
function setHighlightActive(active) {
|
|
3331
|
+
if (highlightActive === active)
|
|
3332
|
+
return;
|
|
3333
|
+
highlightActive = active;
|
|
3334
|
+
for (const subscriber of activeSubscribers)
|
|
3335
|
+
subscriber(active);
|
|
3336
|
+
}
|
|
3337
|
+
var clearSubscribers = new Set;
|
|
3338
|
+
function clearHighlight() {
|
|
3339
|
+
for (const subscriber of clearSubscribers)
|
|
3340
|
+
subscriber();
|
|
3341
|
+
}
|
|
3342
|
+
function onHighlightCleared(subscriber) {
|
|
3343
|
+
clearSubscribers.add(subscriber);
|
|
3344
|
+
return () => {
|
|
3345
|
+
clearSubscribers.delete(subscriber);
|
|
3346
|
+
};
|
|
3347
|
+
}
|
|
3348
|
+
|
|
3265
3349
|
// src/capture/pausedScreenTrack.ts
|
|
3266
3350
|
var FALLBACK_WIDTH = 1280;
|
|
3267
3351
|
var FALLBACK_HEIGHT = 720;
|
|
@@ -3365,7 +3449,7 @@ function useMediaControls() {
|
|
|
3365
3449
|
|
|
3366
3450
|
// src/hooks/useSessionHold.ts
|
|
3367
3451
|
var textEncoder2 = new TextEncoder;
|
|
3368
|
-
var FALLBACK_PAUSE_TIMEOUT_SECONDS =
|
|
3452
|
+
var FALLBACK_PAUSE_TIMEOUT_SECONDS = 180;
|
|
3369
3453
|
function useSessionHold({
|
|
3370
3454
|
pauseSession,
|
|
3371
3455
|
pauseTimeoutSeconds,
|
|
@@ -3411,10 +3495,12 @@ function useSessionHold({
|
|
|
3411
3495
|
}, [localParticipant]);
|
|
3412
3496
|
const hold = useCallback10(async () => {
|
|
3413
3497
|
try {
|
|
3498
|
+
stopActions();
|
|
3499
|
+
clearHighlight();
|
|
3500
|
+
await publish("pause");
|
|
3414
3501
|
await localParticipant.setMicrophoneEnabled(false);
|
|
3415
3502
|
micTrack()?.mediaStreamTrack?.stop();
|
|
3416
3503
|
await pauseScreenShareForHold();
|
|
3417
|
-
await publish("pause");
|
|
3418
3504
|
setIsHeld(true);
|
|
3419
3505
|
} catch (error) {
|
|
3420
3506
|
console.error("Failed to hold session:", error);
|
|
@@ -3593,6 +3679,7 @@ function useAdoptionGoals({
|
|
|
3593
3679
|
authedFetch
|
|
3594
3680
|
}) {
|
|
3595
3681
|
const [candidates, setCandidates] = useState10([]);
|
|
3682
|
+
const [hasResolved, setHasResolved] = useState10(false);
|
|
3596
3683
|
const [hash, setHash] = useState10(window.location.hash);
|
|
3597
3684
|
const match = useCallback11(async () => {
|
|
3598
3685
|
try {
|
|
@@ -3610,11 +3697,14 @@ function useAdoptionGoals({
|
|
|
3610
3697
|
} catch (e) {
|
|
3611
3698
|
console.warn("[Skippr] adoption match failed", e);
|
|
3612
3699
|
setCandidates([]);
|
|
3700
|
+
} finally {
|
|
3701
|
+
setHasResolved(true);
|
|
3613
3702
|
}
|
|
3614
3703
|
}, [authedFetch]);
|
|
3615
3704
|
useEffect12(() => {
|
|
3616
3705
|
if (!enabled || !bearerToken) {
|
|
3617
3706
|
setCandidates([]);
|
|
3707
|
+
setHasResolved(false);
|
|
3618
3708
|
return;
|
|
3619
3709
|
}
|
|
3620
3710
|
match();
|
|
@@ -3654,7 +3744,7 @@ function useAdoptionGoals({
|
|
|
3654
3744
|
const attendGoal = useCallback11((goalId) => {
|
|
3655
3745
|
postStatus(goalId, "attended" /* Attended */);
|
|
3656
3746
|
}, [postStatus]);
|
|
3657
|
-
return { goals, attendGoal };
|
|
3747
|
+
return { goals, hasResolved, attendGoal };
|
|
3658
3748
|
}
|
|
3659
3749
|
|
|
3660
3750
|
// src/hooks/useAuth.ts
|
|
@@ -5876,60 +5966,6 @@ function buildAccessibilityTree() {
|
|
|
5876
5966
|
};
|
|
5877
5967
|
}
|
|
5878
5968
|
|
|
5879
|
-
// src/capture/agentActionSignal.ts
|
|
5880
|
-
var isDispatchingAgentAction = false;
|
|
5881
|
-
function runAgentAction(dispatch) {
|
|
5882
|
-
isDispatchingAgentAction = true;
|
|
5883
|
-
try {
|
|
5884
|
-
dispatch();
|
|
5885
|
-
} finally {
|
|
5886
|
-
isDispatchingAgentAction = false;
|
|
5887
|
-
}
|
|
5888
|
-
}
|
|
5889
|
-
function isAgentActionInProgress() {
|
|
5890
|
-
return isDispatchingAgentAction;
|
|
5891
|
-
}
|
|
5892
|
-
var snapshotRequestHandler = null;
|
|
5893
|
-
function onSnapshotRequest(handler) {
|
|
5894
|
-
snapshotRequestHandler = handler;
|
|
5895
|
-
return () => {
|
|
5896
|
-
if (snapshotRequestHandler === handler)
|
|
5897
|
-
snapshotRequestHandler = null;
|
|
5898
|
-
};
|
|
5899
|
-
}
|
|
5900
|
-
function requestSnapshotAfterAction() {
|
|
5901
|
-
snapshotRequestHandler?.();
|
|
5902
|
-
}
|
|
5903
|
-
var stopSubscribers = new Set;
|
|
5904
|
-
function stopActions() {
|
|
5905
|
-
for (const subscriber of stopSubscribers)
|
|
5906
|
-
subscriber();
|
|
5907
|
-
}
|
|
5908
|
-
function onActionsStopped(subscriber) {
|
|
5909
|
-
stopSubscribers.add(subscriber);
|
|
5910
|
-
return () => {
|
|
5911
|
-
stopSubscribers.delete(subscriber);
|
|
5912
|
-
};
|
|
5913
|
-
}
|
|
5914
|
-
var actionsBusy = false;
|
|
5915
|
-
var busySubscribers = new Set;
|
|
5916
|
-
function setActionsBusy(busy) {
|
|
5917
|
-
if (actionsBusy === busy)
|
|
5918
|
-
return;
|
|
5919
|
-
actionsBusy = busy;
|
|
5920
|
-
for (const subscriber of busySubscribers)
|
|
5921
|
-
subscriber(busy);
|
|
5922
|
-
}
|
|
5923
|
-
function isActionsBusy() {
|
|
5924
|
-
return actionsBusy;
|
|
5925
|
-
}
|
|
5926
|
-
function subscribeActionsBusy(subscriber) {
|
|
5927
|
-
busySubscribers.add(subscriber);
|
|
5928
|
-
return () => {
|
|
5929
|
-
busySubscribers.delete(subscriber);
|
|
5930
|
-
};
|
|
5931
|
-
}
|
|
5932
|
-
|
|
5933
5969
|
// src/capture/domEvents.ts
|
|
5934
5970
|
var MUTATION_DEBOUNCE_MS = 250;
|
|
5935
5971
|
var textEncoder3 = new TextEncoder;
|
|
@@ -6107,23 +6143,51 @@ var DARK_FOREGROUND = "#2d2b3d";
|
|
|
6107
6143
|
var LIGHT_FOREGROUND = "#ffffff";
|
|
6108
6144
|
var LUMINANCE_THRESHOLD = 0.179;
|
|
6109
6145
|
var HEX_COLOR = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
6146
|
+
var MIN_CONTRAST_ON_WHITE = 4.5;
|
|
6147
|
+
var DARKENING_STEPS = 12;
|
|
6110
6148
|
function isHexColor(value) {
|
|
6111
6149
|
return HEX_COLOR.test(value);
|
|
6112
6150
|
}
|
|
6113
|
-
function
|
|
6114
|
-
const channel = Number.parseInt(hex.slice(offset, offset + 2), 16) / 255;
|
|
6115
|
-
return channel <= 0.03928 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4;
|
|
6116
|
-
}
|
|
6117
|
-
function luminance(accentColor) {
|
|
6151
|
+
function toChannels(accentColor) {
|
|
6118
6152
|
const hex = accentColor.replace("#", "");
|
|
6119
6153
|
const fullHex = hex.length === 3 ? hex.split("").map((char) => char + char).join("") : hex;
|
|
6120
|
-
return 0
|
|
6154
|
+
return [0, 2, 4].map((offset) => Number.parseInt(fullHex.slice(offset, offset + 2), 16));
|
|
6155
|
+
}
|
|
6156
|
+
function toHex(channels) {
|
|
6157
|
+
return `#${channels.map((channel) => Math.round(channel).toString(16).padStart(2, "0")).join("")}`;
|
|
6158
|
+
}
|
|
6159
|
+
function linearChannel(channel) {
|
|
6160
|
+
const scaled = channel / 255;
|
|
6161
|
+
return scaled <= 0.03928 ? scaled / 12.92 : ((scaled + 0.055) / 1.055) ** 2.4;
|
|
6162
|
+
}
|
|
6163
|
+
function luminance(accentColor) {
|
|
6164
|
+
const [r, g, b] = toChannels(accentColor);
|
|
6165
|
+
return 0.2126 * linearChannel(r) + 0.7152 * linearChannel(g) + 0.0722 * linearChannel(b);
|
|
6166
|
+
}
|
|
6167
|
+
function contrastOnWhite(accentColor) {
|
|
6168
|
+
return 1.05 / (luminance(accentColor) + 0.05);
|
|
6169
|
+
}
|
|
6170
|
+
function darken(accentColor, factor) {
|
|
6171
|
+
const [r, g, b] = toChannels(accentColor);
|
|
6172
|
+
return toHex([r * factor, g * factor, b * factor]);
|
|
6121
6173
|
}
|
|
6122
6174
|
function brandForeground(accentColor) {
|
|
6123
6175
|
return luminance(accentColor) > LUMINANCE_THRESHOLD ? DARK_FOREGROUND : LIGHT_FOREGROUND;
|
|
6124
6176
|
}
|
|
6125
6177
|
function brandOnWhite(accentColor) {
|
|
6126
|
-
|
|
6178
|
+
if (contrastOnWhite(accentColor) >= MIN_CONTRAST_ON_WHITE)
|
|
6179
|
+
return toHex(toChannels(accentColor));
|
|
6180
|
+
let tooDark = 0;
|
|
6181
|
+
let tooLight = 1;
|
|
6182
|
+
for (let step = 0;step < DARKENING_STEPS; step++) {
|
|
6183
|
+
const factor = (tooDark + tooLight) / 2;
|
|
6184
|
+
if (contrastOnWhite(darken(accentColor, factor)) >= MIN_CONTRAST_ON_WHITE) {
|
|
6185
|
+
tooDark = factor;
|
|
6186
|
+
} else {
|
|
6187
|
+
tooLight = factor;
|
|
6188
|
+
}
|
|
6189
|
+
}
|
|
6190
|
+
return darken(accentColor, tooDark);
|
|
6127
6191
|
}
|
|
6128
6192
|
|
|
6129
6193
|
// src/capture/paintCursorOverlay.ts
|
|
@@ -6677,39 +6741,6 @@ function DomCapture({ pushOrTapMicMode = false, startMuted = false }) {
|
|
|
6677
6741
|
// src/components/HighlightOverlay.tsx
|
|
6678
6742
|
import { useDataChannel } from "@livekit/components-react/hooks";
|
|
6679
6743
|
import { useCallback as useCallback16, useEffect as useEffect23, useRef as useRef18 } from "react";
|
|
6680
|
-
|
|
6681
|
-
// src/capture/highlightSignal.ts
|
|
6682
|
-
var highlightActive = false;
|
|
6683
|
-
var activeSubscribers = new Set;
|
|
6684
|
-
function setHighlightActive(active) {
|
|
6685
|
-
if (highlightActive === active)
|
|
6686
|
-
return;
|
|
6687
|
-
highlightActive = active;
|
|
6688
|
-
for (const subscriber of activeSubscribers)
|
|
6689
|
-
subscriber(active);
|
|
6690
|
-
}
|
|
6691
|
-
function isHighlightActive() {
|
|
6692
|
-
return highlightActive;
|
|
6693
|
-
}
|
|
6694
|
-
function subscribeHighlightActive(subscriber) {
|
|
6695
|
-
activeSubscribers.add(subscriber);
|
|
6696
|
-
return () => {
|
|
6697
|
-
activeSubscribers.delete(subscriber);
|
|
6698
|
-
};
|
|
6699
|
-
}
|
|
6700
|
-
var clearSubscribers = new Set;
|
|
6701
|
-
function clearHighlight() {
|
|
6702
|
-
for (const subscriber of clearSubscribers)
|
|
6703
|
-
subscriber();
|
|
6704
|
-
}
|
|
6705
|
-
function onHighlightCleared(subscriber) {
|
|
6706
|
-
clearSubscribers.add(subscriber);
|
|
6707
|
-
return () => {
|
|
6708
|
-
clearSubscribers.delete(subscriber);
|
|
6709
|
-
};
|
|
6710
|
-
}
|
|
6711
|
-
|
|
6712
|
-
// src/components/HighlightOverlay.tsx
|
|
6713
6744
|
var HIGHLIGHT_AUTO_CLEAR_MS = 25000;
|
|
6714
6745
|
var textDecoder = new TextDecoder;
|
|
6715
6746
|
function parseHighlightMessage(payload) {
|
|
@@ -8482,7 +8513,7 @@ function ShadowHost({
|
|
|
8482
8513
|
const hostRef = useRef25(null);
|
|
8483
8514
|
const [shadowRoot, setShadowRoot] = useState22(null);
|
|
8484
8515
|
const css = `/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
8485
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--skippr-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--skippr-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--skippr-color-red-50:oklch(97.1% .013 17.38);--skippr-color-red-100:oklch(93.6% .032 17.717);--skippr-color-red-200:oklch(88.5% .062 18.334);--skippr-color-red-300:oklch(80.8% .114 19.571);--skippr-color-red-400:oklch(70.4% .191 22.216);--skippr-color-red-500:oklch(63.7% .237 25.331);--skippr-color-red-600:oklch(57.7% .245 27.325);--skippr-color-red-700:oklch(50.5% .213 27.518);--skippr-color-amber-50:oklch(98.7% .022 95.277);--skippr-color-amber-100:oklch(96.2% .059 95.617);--skippr-color-amber-400:oklch(82.8% .189 84.429);--skippr-color-amber-700:oklch(55.5% .163 48.998);--skippr-color-amber-950:oklch(27.9% .077 45.635);--skippr-color-emerald-400:oklch(76.5% .177 163.223);--skippr-color-neutral-100:oklch(97% 0 0);--skippr-color-neutral-200:oklch(92.2% 0 0);--skippr-color-neutral-500:oklch(55.6% 0 0);--skippr-color-neutral-700:oklch(37.1% 0 0);--skippr-color-black:#000;--skippr-color-white:#fff;--skippr-spacing:.25rem;--skippr-text-xs:.75rem;--skippr-text-xs--line-height:calc(1/.75);--skippr-text-sm:.875rem;--skippr-text-sm--line-height:calc(1.25/.875);--skippr-font-weight-medium:500;--skippr-font-weight-semibold:600;--skippr-font-weight-bold:700;--skippr-leading-snug:1.375;--skippr-leading-relaxed:1.625;--skippr-ease-out:cubic-bezier(0,0,.2,1);--skippr-ease-in-out:cubic-bezier(.4,0,.2,1);--skippr-animate-spin:spin 1s linear infinite;--skippr-animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--skippr-animate-bounce:bounce 1s infinite;--skippr-blur-sm:8px;--skippr-default-transition-duration:.15s;--skippr-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--skippr-default-font-family:var(--skippr-font-sans);--skippr-default-mono-font-family:var(--skippr-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--skippr-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--skippr-default-font-feature-settings,normal);font-variation-settings:var(--skippr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--skippr-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--skippr-default-mono-font-feature-settings,normal);font-variation-settings:var(--skippr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.skippr\\:pointer-events-auto{pointer-events:auto}.skippr\\:pointer-events-none{pointer-events:none}.skippr\\:absolute{position:absolute}.skippr\\:fixed{position:fixed}.skippr\\:relative{position:relative}.skippr\\:sticky{position:sticky}.skippr\\:-inset-\\[3px\\]{inset:-3px}.skippr\\:inset-0{inset:calc(var(--skippr-spacing)*0)}.skippr\\:inset-y-0{inset-block:calc(var(--skippr-spacing)*0)}.skippr\\:-top-1{top:calc(var(--skippr-spacing)*-1)}.skippr\\:-top-6{top:calc(var(--skippr-spacing)*-6)}.skippr\\:-top-8{top:calc(var(--skippr-spacing)*-8)}.skippr\\:-top-\\[2px\\]{top:-2px}.skippr\\:-top-\\[3px\\]{top:-3px}.skippr\\:-top-\\[13px\\]{top:-13px}.skippr\\:top-0{top:calc(var(--skippr-spacing)*0)}.skippr\\:top-1\\/2{top:50%}.skippr\\:top-\\[8px\\]{top:8px}.skippr\\:top-full{top:100%}.skippr\\:-right-1{right:calc(var(--skippr-spacing)*-1)}.skippr\\:-right-8{right:calc(var(--skippr-spacing)*-8)}.skippr\\:-right-\\[2px\\]{right:-2px}.skippr\\:-right-\\[6px\\]{right:-6px}.skippr\\:right-0{right:calc(var(--skippr-spacing)*0)}.skippr\\:right-3{right:calc(var(--skippr-spacing)*3)}.skippr\\:right-5{right:calc(var(--skippr-spacing)*5)}.skippr\\:right-6{right:calc(var(--skippr-spacing)*6)}.skippr\\:right-\\[4px\\]{right:4px}.skippr\\:right-\\[8px\\]{right:8px}.skippr\\:-bottom-\\[2px\\]{bottom:-2px}.skippr\\:bottom-3{bottom:calc(var(--skippr-spacing)*3)}.skippr\\:bottom-4{bottom:calc(var(--skippr-spacing)*4)}.skippr\\:bottom-20{bottom:calc(var(--skippr-spacing)*20)}.skippr\\:bottom-\\[calc\\(100\\%\\+8px\\)\\]{bottom:calc(100% + 8px)}.skippr\\:bottom-\\[calc\\(100\\%\\+11px\\)\\]{bottom:calc(100% + 11px)}.skippr\\:bottom-full{bottom:100%}.skippr\\:-left-8{left:calc(var(--skippr-spacing)*-8)}.skippr\\:-left-\\[2px\\]{left:-2px}.skippr\\:-left-\\[6px\\]{left:-6px}.skippr\\:left-0{left:calc(var(--skippr-spacing)*0)}.skippr\\:left-1\\/2{left:50%}.skippr\\:left-2{left:calc(var(--skippr-spacing)*2)}.skippr\\:left-3{left:calc(var(--skippr-spacing)*3)}.skippr\\:left-5{left:calc(var(--skippr-spacing)*5)}.skippr\\:left-6{left:calc(var(--skippr-spacing)*6)}.skippr\\:z-10{z-index:10}.skippr\\:z-20{z-index:20}.skippr\\:z-\\[1\\]{z-index:1}.skippr\\:z-\\[2\\]{z-index:2}.skippr\\:z-\\[4\\]{z-index:4}.skippr\\:z-\\[5\\]{z-index:5}.skippr\\:z-\\[6\\]{z-index:6}.skippr\\:z-\\[7\\]{z-index:7}.skippr\\:z-\\[8\\]{z-index:8}.skippr\\:z-\\[9998\\]{z-index:9998}.skippr\\:z-\\[9999\\]{z-index:9999}.skippr\\:z-\\[10000\\]{z-index:10000}.skippr\\:order-first{order:-9999}.skippr\\:order-last{order:9999}.skippr\\:mx-auto{margin-inline:auto}.skippr\\:-mt-1{margin-top:calc(var(--skippr-spacing)*-1)}.skippr\\:-mt-\\[5px\\]{margin-top:-5px}.skippr\\:-mt-\\[27px\\]{margin-top:-27px}.skippr\\:mt-1{margin-top:calc(var(--skippr-spacing)*1)}.skippr\\:mt-1\\.5{margin-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:mt-2{margin-top:calc(var(--skippr-spacing)*2)}.skippr\\:mt-3{margin-top:calc(var(--skippr-spacing)*3)}.skippr\\:mt-3\\.5{margin-top:calc(var(--skippr-spacing)*3.5)}.skippr\\:mt-\\[1px\\]{margin-top:1px}.skippr\\:mt-\\[6px\\]{margin-top:6px}.skippr\\:mt-\\[8px\\]{margin-top:8px}.skippr\\:mt-\\[9px\\]{margin-top:9px}.skippr\\:-mr-1{margin-right:calc(var(--skippr-spacing)*-1)}.skippr\\:mr-7{margin-right:calc(var(--skippr-spacing)*7)}.skippr\\:mr-\\[22px\\]{margin-right:22px}.skippr\\:-mb-\\[5px\\]{margin-bottom:-5px}.skippr\\:mb-1{margin-bottom:calc(var(--skippr-spacing)*1)}.skippr\\:mb-1\\.5{margin-bottom:calc(var(--skippr-spacing)*1.5)}.skippr\\:mb-2{margin-bottom:calc(var(--skippr-spacing)*2)}.skippr\\:mb-3{margin-bottom:calc(var(--skippr-spacing)*3)}.skippr\\:mb-4{margin-bottom:calc(var(--skippr-spacing)*4)}.skippr\\:mb-\\[14px\\]{margin-bottom:14px}.skippr\\:-ml-\\[2px\\]{margin-left:-2px}.skippr\\:ml-0\\.5{margin-left:calc(var(--skippr-spacing)*.5)}.skippr\\:ml-1{margin-left:calc(var(--skippr-spacing)*1)}.skippr\\:ml-7{margin-left:calc(var(--skippr-spacing)*7)}.skippr\\:ml-auto{margin-left:auto}.skippr\\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.skippr\\:block{display:block}.skippr\\:flex{display:flex}.skippr\\:hidden{display:none}.skippr\\:inline-flex{display:inline-flex}.skippr\\:aspect-square{aspect-ratio:1}.skippr\\:size-1{width:calc(var(--skippr-spacing)*1);height:calc(var(--skippr-spacing)*1)}.skippr\\:size-1\\.5{width:calc(var(--skippr-spacing)*1.5);height:calc(var(--skippr-spacing)*1.5)}.skippr\\:size-2{width:calc(var(--skippr-spacing)*2);height:calc(var(--skippr-spacing)*2)}.skippr\\:size-2\\.5{width:calc(var(--skippr-spacing)*2.5);height:calc(var(--skippr-spacing)*2.5)}.skippr\\:size-3{width:calc(var(--skippr-spacing)*3);height:calc(var(--skippr-spacing)*3)}.skippr\\:size-3\\.5{width:calc(var(--skippr-spacing)*3.5);height:calc(var(--skippr-spacing)*3.5)}.skippr\\:size-4{width:calc(var(--skippr-spacing)*4);height:calc(var(--skippr-spacing)*4)}.skippr\\:size-5{width:calc(var(--skippr-spacing)*5);height:calc(var(--skippr-spacing)*5)}.skippr\\:size-6{width:calc(var(--skippr-spacing)*6);height:calc(var(--skippr-spacing)*6)}.skippr\\:size-7{width:calc(var(--skippr-spacing)*7);height:calc(var(--skippr-spacing)*7)}.skippr\\:size-8{width:calc(var(--skippr-spacing)*8);height:calc(var(--skippr-spacing)*8)}.skippr\\:size-9{width:calc(var(--skippr-spacing)*9);height:calc(var(--skippr-spacing)*9)}.skippr\\:size-10{width:calc(var(--skippr-spacing)*10);height:calc(var(--skippr-spacing)*10)}.skippr\\:size-12{width:calc(var(--skippr-spacing)*12);height:calc(var(--skippr-spacing)*12)}.skippr\\:size-\\[3px\\]{width:3px;height:3px}.skippr\\:size-\\[4px\\]{width:4px;height:4px}.skippr\\:size-\\[5px\\]{width:5px;height:5px}.skippr\\:size-\\[6px\\]{width:6px;height:6px}.skippr\\:size-\\[7px\\]{width:7px;height:7px}.skippr\\:size-\\[8px\\]{width:8px;height:8px}.skippr\\:size-\\[9px\\]{width:9px;height:9px}.skippr\\:size-\\[10px\\]{width:10px;height:10px}.skippr\\:size-\\[11px\\]{width:11px;height:11px}.skippr\\:size-\\[12px\\]{width:12px;height:12px}.skippr\\:size-\\[13px\\]{width:13px;height:13px}.skippr\\:size-\\[14px\\]{width:14px;height:14px}.skippr\\:size-\\[15px\\]{width:15px;height:15px}.skippr\\:size-\\[16px\\]{width:16px;height:16px}.skippr\\:size-\\[17px\\]{width:17px;height:17px}.skippr\\:size-\\[18px\\]{width:18px;height:18px}.skippr\\:size-\\[19px\\]{width:19px;height:19px}.skippr\\:size-\\[20px\\]{width:20px;height:20px}.skippr\\:size-\\[22px\\]{width:22px;height:22px}.skippr\\:size-\\[26px\\]{width:26px;height:26px}.skippr\\:size-\\[28px\\]{width:28px;height:28px}.skippr\\:size-\\[30px\\]{width:30px;height:30px}.skippr\\:size-\\[32px\\]{width:32px;height:32px}.skippr\\:size-\\[34px\\]{width:34px;height:34px}.skippr\\:size-\\[38px\\]{width:38px;height:38px}.skippr\\:size-\\[46px\\]{width:46px;height:46px}.skippr\\:size-full{width:100%;height:100%}.skippr\\:h-0{height:calc(var(--skippr-spacing)*0)}.skippr\\:h-1{height:calc(var(--skippr-spacing)*1)}.skippr\\:h-1\\.5{height:calc(var(--skippr-spacing)*1.5)}.skippr\\:h-2{height:calc(var(--skippr-spacing)*2)}.skippr\\:h-3{height:calc(var(--skippr-spacing)*3)}.skippr\\:h-3\\.5{height:calc(var(--skippr-spacing)*3.5)}.skippr\\:h-5{height:calc(var(--skippr-spacing)*5)}.skippr\\:h-6{height:calc(var(--skippr-spacing)*6)}.skippr\\:h-7{height:calc(var(--skippr-spacing)*7)}.skippr\\:h-8{height:calc(var(--skippr-spacing)*8)}.skippr\\:h-9{height:calc(var(--skippr-spacing)*9)}.skippr\\:h-10{height:calc(var(--skippr-spacing)*10)}.skippr\\:h-\\[5px\\]{height:5px}.skippr\\:h-\\[14px\\]{height:14px}.skippr\\:h-\\[16px\\]{height:16px}.skippr\\:h-\\[18\\.5px\\]{height:18.5px}.skippr\\:h-\\[18px\\]{height:18px}.skippr\\:h-\\[22px\\]{height:22px}.skippr\\:h-\\[24px\\]{height:24px}.skippr\\:h-\\[26px\\]{height:26px}.skippr\\:h-\\[36px\\]{height:36px}.skippr\\:h-\\[38px\\]{height:38px}.skippr\\:h-\\[48px\\]{height:48px}.skippr\\:h-\\[54px\\]{height:54px}.skippr\\:h-full{height:100%}.skippr\\:h-px{height:1px}.skippr\\:max-h-\\[132px\\]{max-height:132px}.skippr\\:min-h-0{min-height:calc(var(--skippr-spacing)*0)}.skippr\\:min-h-11{min-height:calc(var(--skippr-spacing)*11)}.skippr\\:min-h-\\[16px\\]{min-height:16px}.skippr\\:w-0{width:calc(var(--skippr-spacing)*0)}.skippr\\:w-3\\.5{width:calc(var(--skippr-spacing)*3.5)}.skippr\\:w-5{width:calc(var(--skippr-spacing)*5)}.skippr\\:w-6{width:calc(var(--skippr-spacing)*6)}.skippr\\:w-7{width:calc(var(--skippr-spacing)*7)}.skippr\\:w-10{width:calc(var(--skippr-spacing)*10)}.skippr\\:w-40{width:calc(var(--skippr-spacing)*40)}.skippr\\:w-\\[2\\.5px\\]{width:2.5px}.skippr\\:w-\\[2px\\]{width:2px}.skippr\\:w-\\[3px\\]{width:3px}.skippr\\:w-\\[14px\\]{width:14px}.skippr\\:w-\\[15\\.4px\\]{width:15.4px}.skippr\\:w-\\[15px\\]{width:15px}.skippr\\:w-\\[16px\\]{width:16px}.skippr\\:w-\\[22px\\]{width:22px}.skippr\\:w-\\[36px\\]{width:36px}.skippr\\:w-\\[38px\\]{width:38px}.skippr\\:w-\\[50px\\]{width:50px}.skippr\\:w-\\[148px\\]{width:148px}.skippr\\:w-\\[150px\\]{width:150px}.skippr\\:w-\\[220px\\]{width:220px}.skippr\\:w-\\[225px\\]{width:225px}.skippr\\:w-\\[240px\\]{width:240px}.skippr\\:w-\\[255px\\]{width:255px}.skippr\\:w-\\[320px\\]{width:320px}.skippr\\:w-fit{width:fit-content}.skippr\\:w-full{width:100%}.skippr\\:w-px{width:1px}.skippr\\:max-w-64{max-width:calc(var(--skippr-spacing)*64)}.skippr\\:max-w-72{max-width:calc(var(--skippr-spacing)*72)}.skippr\\:max-w-\\[80\\%\\]{max-width:80%}.skippr\\:max-w-\\[280px\\]{max-width:280px}.skippr\\:min-w-0{min-width:calc(var(--skippr-spacing)*0)}.skippr\\:min-w-11{min-width:calc(var(--skippr-spacing)*11)}.skippr\\:min-w-\\[96px\\]{min-width:96px}.skippr\\:flex-1{flex:1}.skippr\\:shrink-0{flex-shrink:0}.skippr\\:origin-bottom{transform-origin:bottom}.skippr\\:origin-bottom-left{transform-origin:0 100%}.skippr\\:origin-bottom-right{transform-origin:100% 100%}.skippr\\:origin-center{transform-origin:50%}.skippr\\:origin-left{transform-origin:0}.skippr\\:origin-right{transform-origin:100%}.skippr\\:origin-top{transform-origin:top}.skippr\\:origin-top-left{transform-origin:0 0}.skippr\\:origin-top-right{transform-origin:100% 0}.skippr\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-x-3{--tw-translate-x:calc(var(--skippr-spacing)*-3);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-x-7{--tw-translate-x:calc(var(--skippr-spacing)*-7);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:translate-x-3{--tw-translate-x:calc(var(--skippr-spacing)*3);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:translate-x-7{--tw-translate-x:calc(var(--skippr-spacing)*7);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-y-\\[4px\\]{--tw-translate-y:calc(4px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:scale-\\[0\\.94\\]{scale:.94}.skippr\\:-rotate-90{rotate:-90deg}.skippr\\:rotate-45{rotate:45deg}.skippr\\:rotate-\\[225deg\\]{rotate:225deg}.skippr\\:\\[animation\\:skippr-agent-in_200ms_ease-out\\]{animation:.2s ease-out skippr-agent-in}.skippr\\:\\[animation\\:skippr-agent-in_200ms_ease-out_240ms_both\\]{animation:.2s ease-out .24s both skippr-agent-in}.skippr\\:\\[animation\\:skippr-banner-look_2\\.4s_ease-in-out_infinite\\]{animation:2.4s ease-in-out infinite skippr-banner-look}.skippr\\:\\[animation\\:skippr-block-reveal_320ms_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.32s cubic-bezier(.22,1,.36,1) skippr-block-reveal}.skippr\\:\\[animation\\:skippr-breathe_1\\.1s_ease-in-out_0\\.18s_infinite\\]{animation:1.1s ease-in-out .18s infinite skippr-breathe}.skippr\\:\\[animation\\:skippr-breathe_1\\.1s_ease-in-out_0\\.36s_infinite\\]{animation:1.1s ease-in-out .36s infinite skippr-breathe}.skippr\\:\\[animation\\:skippr-breathe_1\\.1s_ease-in-out_0s_infinite\\]{animation:1.1s ease-in-out infinite skippr-breathe}.skippr\\:\\[animation\\:skippr-evaporate_3\\.2s_ease-in_forwards\\]{animation:3.2s ease-in forwards skippr-evaporate}.skippr\\:\\[animation\\:skippr-fade-in_0\\.2s_ease\\]{animation:.2s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.16s_ease\\]{animation:.16s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.22s_ease\\]{animation:.22s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.24s_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.24s cubic-bezier(.22,1,.36,1) skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.25s_ease\\]{animation:.25s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-out_0\\.18s_ease-in_forwards\\]{animation:.18s ease-in forwards skippr-fade-out}.skippr\\:\\[animation\\:skippr-finger-tap_1\\.1s_ease-in-out_infinite\\]{animation:1.1s ease-in-out infinite skippr-finger-tap}.skippr\\:\\[animation\\:skippr-mote-rise_1\\.6s_ease-out_infinite\\]{animation:1.6s ease-out infinite skippr-mote-rise}.skippr\\:\\[animation\\:skippr-orb-in_320ms_cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)\\]{animation:.32s cubic-bezier(.34,1.3,.64,1) skippr-orb-in}.skippr\\:\\[animation\\:skippr-pop_0\\.2s_ease\\]{animation:.2s skippr-pop}.skippr\\:\\[animation\\:skippr-stage-fade_240ms_ease-out\\]{animation:.24s ease-out skippr-stage-fade}.skippr\\:\\[animation\\:skippr-tip-in_360ms_cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)\\]{animation:.36s cubic-bezier(.34,1.3,.64,1) skippr-tip-in}.skippr\\:\\[animation\\:skippr-tip-in_360ms_cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)_backwards\\]{animation:.36s cubic-bezier(.34,1.3,.64,1) backwards skippr-tip-in}.skippr\\:\\[animation\\:skippr-toolset-pop_280ms_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.28s cubic-bezier(.22,1,.36,1) skippr-toolset-pop}.skippr\\:\\[animation\\:skippr-toolset-pop_440ms_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.44s cubic-bezier(.22,1,.36,1) skippr-toolset-pop}.skippr\\:animate-\\[skippr-banner-look_2\\.4s_ease-in-out_infinite\\]{animation:2.4s ease-in-out infinite skippr-banner-look}.skippr\\:animate-\\[skippr-bubble-in_0\\.28s_ease-out\\]{animation:.28s ease-out skippr-bubble-in}.skippr\\:animate-\\[skippr-fade-in_0\\.3s_ease-out\\]{animation:.3s ease-out skippr-fade-in}.skippr\\:animate-\\[skippr-pill-content_0\\.22s_ease-out\\]{animation:.22s ease-out skippr-pill-content}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.3s_infinite\\]{animation:1.1s ease-in-out .3s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.6s_infinite\\]{animation:1.1s ease-in-out .6s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.15s_infinite\\]{animation:1.1s ease-in-out .15s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.45s_infinite\\]{animation:1.1s ease-in-out .45s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_infinite\\]{animation:1.1s ease-in-out infinite skippr-speak}.skippr\\:animate-bounce{animation:var(--skippr-animate-bounce)}.skippr\\:animate-ping{animation:var(--skippr-animate-ping)}.skippr\\:animate-skippr-annotation-pulse{animation:1.8s ease-in-out infinite skippr-annotation-pulse}.skippr\\:animate-skippr-click-ping{animation:.5s ease-out forwards skippr-click-ping}.skippr\\:animate-skippr-cursor-pop{animation:.22s ease-out skippr-cursor-pop}.skippr\\:animate-skippr-flow{animation:3.6s linear infinite skippr-flow}.skippr\\:animate-skippr-press{animation:.5s ease-in-out skippr-press}.skippr\\:animate-skippr-ptt-transmit{animation:1.4s ease-out infinite skippr-ptt-transmit}.skippr\\:animate-skippr-rec-ring{animation:2s ease-out infinite skippr-rec-ring}.skippr\\:animate-skippr-tab-fade{animation:.2s ease-out skippr-tab-fade}.skippr\\:animate-skippr-thinking-dot{animation:1.2s ease-in-out infinite skippr-thinking-dot}.skippr\\:animate-skippr-voice-pulse{animation:1.6s ease-out infinite skippr-voice-pulse}.skippr\\:animate-spin{animation:var(--skippr-animate-spin)}.skippr\\:cursor-default{cursor:default}.skippr\\:cursor-grab{cursor:grab}.skippr\\:cursor-not-allowed{cursor:not-allowed}.skippr\\:cursor-pointer{cursor:pointer}.skippr\\:touch-none{touch-action:none}.skippr\\:resize-none{resize:none}.skippr\\:flex-col{flex-direction:column}.skippr\\:flex-col-reverse{flex-direction:column-reverse}.skippr\\:flex-row{flex-direction:row}.skippr\\:flex-row-reverse{flex-direction:row-reverse}.skippr\\:items-baseline{align-items:baseline}.skippr\\:items-center{align-items:center}.skippr\\:items-end{align-items:flex-end}.skippr\\:items-start{align-items:flex-start}.skippr\\:justify-between{justify-content:space-between}.skippr\\:justify-center{justify-content:center}.skippr\\:justify-end{justify-content:flex-end}.skippr\\:justify-start{justify-content:flex-start}.skippr\\:gap-0\\.5{gap:calc(var(--skippr-spacing)*.5)}.skippr\\:gap-1{gap:calc(var(--skippr-spacing)*1)}.skippr\\:gap-1\\.5{gap:calc(var(--skippr-spacing)*1.5)}.skippr\\:gap-2{gap:calc(var(--skippr-spacing)*2)}.skippr\\:gap-2\\.5{gap:calc(var(--skippr-spacing)*2.5)}.skippr\\:gap-3{gap:calc(var(--skippr-spacing)*3)}.skippr\\:gap-\\[1px\\]{gap:1px}.skippr\\:gap-\\[2px\\]{gap:2px}.skippr\\:gap-\\[3px\\]{gap:3px}.skippr\\:gap-\\[4px\\]{gap:4px}.skippr\\:gap-\\[5px\\]{gap:5px}.skippr\\:gap-\\[6px\\]{gap:6px}.skippr\\:gap-\\[7px\\]{gap:7px}.skippr\\:gap-\\[8px\\]{gap:8px}.skippr\\:gap-\\[9px\\]{gap:9px}.skippr\\:gap-\\[14px\\]{gap:14px}.skippr\\:gap-px{gap:1px}:where(.skippr\\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.skippr\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.skippr\\:space-y-\\[6px\\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(6px*var(--tw-space-y-reverse));margin-block-end:calc(6px*calc(1 - var(--tw-space-y-reverse)))}.skippr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.skippr\\:overflow-hidden{overflow:hidden}.skippr\\:overflow-visible{overflow:visible}.skippr\\:overflow-y-auto{overflow-y:auto}.skippr\\:overscroll-contain{overscroll-behavior:contain}.skippr\\:rounded{border-radius:.25rem}.skippr\\:rounded-2xl{border-radius:1.125rem}.skippr\\:rounded-\\[1rem\\]{border-radius:1rem}.skippr\\:rounded-\\[4px\\]{border-radius:4px}.skippr\\:rounded-\\[5px\\]{border-radius:5px}.skippr\\:rounded-\\[10px\\]{border-radius:10px}.skippr\\:rounded-\\[11px\\]{border-radius:11px}.skippr\\:rounded-\\[12px\\]{border-radius:12px}.skippr\\:rounded-\\[14px\\]{border-radius:14px}.skippr\\:rounded-\\[16px\\]{border-radius:16px}.skippr\\:rounded-\\[20px\\]{border-radius:20px}.skippr\\:rounded-full{border-radius:3.40282e38px}.skippr\\:rounded-md{border-radius:.5rem}.skippr\\:rounded-sm{border-radius:.375rem}.skippr\\:rounded-xl{border-radius:.875rem}.skippr\\:rounded-t-\\[6px\\]{border-top-left-radius:6px;border-top-right-radius:6px}.skippr\\:rounded-t-\\[18px\\]{border-top-left-radius:18px;border-top-right-radius:18px}.skippr\\:rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.skippr\\:rounded-l-\\[6px\\]{border-top-left-radius:6px;border-bottom-left-radius:6px}.skippr\\:rounded-l-\\[18px\\]{border-top-left-radius:18px;border-bottom-left-radius:18px}.skippr\\:rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.skippr\\:rounded-tl-\\[6px\\]{border-top-left-radius:6px}.skippr\\:rounded-tl-md{border-top-left-radius:.5rem}.skippr\\:rounded-r-\\[6px\\]{border-top-right-radius:6px;border-bottom-right-radius:6px}.skippr\\:rounded-r-\\[18px\\]{border-top-right-radius:18px;border-bottom-right-radius:18px}.skippr\\:rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.skippr\\:rounded-tr-\\[6px\\]{border-top-right-radius:6px}.skippr\\:rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.skippr\\:rounded-b-\\[18px\\]{border-bottom-right-radius:18px;border-bottom-left-radius:18px}.skippr\\:rounded-b-full{border-bottom-right-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.skippr\\:rounded-bl-\\[6px\\]{border-bottom-left-radius:6px}.skippr\\:border{border-style:var(--tw-border-style);border-width:1px}.skippr\\:border-0{border-style:var(--tw-border-style);border-width:0}.skippr\\:border-2{border-style:var(--tw-border-style);border-width:2px}.skippr\\:border-\\[2\\.5px\\]{border-style:var(--tw-border-style);border-width:2.5px}.skippr\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.skippr\\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.skippr\\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.skippr\\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.skippr\\:border-none{--tw-border-style:none;border-style:none}.skippr\\:border-\\[\\#d8d3ca\\]{border-color:#d8d3ca}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.1\\)\\]{border-color:#2d2d3f1a}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.06\\)\\]{border-color:#2d2d3f0f}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.08\\)\\]{border-color:#2d2d3f14}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.12\\)\\]{border-color:#2d2d3f1f}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.14\\)\\]{border-color:#2d2d3f24}.skippr\\:border-\\[var\\(--skippr-brand-ring\\)\\]{border-color:var(--skippr-brand-ring)}.skippr\\:border-black\\/25{border-color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:border-black\\/25{border-color:color-mix(in oklab,var(--skippr-color-black)25%,transparent)}}.skippr\\:border-border{border-color:oklch(92.3% .003 48.717)}.skippr\\:border-brand{border-color:var(--skippr-brand,#2bc0ae)}.skippr\\:border-input{border-color:oklch(92.3% .003 48.717)}.skippr\\:border-primary\\/20{border-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:border-primary\\/20{border-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)20%,transparent)}}.skippr\\:border-transparent{border-color:#0000}.skippr\\:border-white,.skippr\\:border-white\\/30{border-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:border-white\\/30{border-color:color-mix(in oklab,var(--skippr-color-white)30%,transparent)}}.skippr\\:border-t-brand{border-top-color:var(--skippr-brand,#2bc0ae)}.skippr\\:border-t-white{border-top-color:var(--skippr-color-white)}.skippr\\:border-r-border{border-right-color:oklch(92.3% .003 48.717)}.skippr\\:border-l-border{border-left-color:oklch(92.3% .003 48.717)}.skippr\\:bg-\\[\\#2D2D3F\\]{background-color:#2d2d3f}.skippr\\:bg-\\[\\#F1EFEA\\]{background-color:#f1efea}.skippr\\:bg-\\[\\#b9b4ab\\]{background-color:#b9b4ab}.skippr\\:bg-\\[\\#dc2626\\]{background-color:#dc2626}.skippr\\:bg-\\[\\#eeeae4\\]{background-color:#eeeae4}.skippr\\:bg-\\[\\#f2f0eb\\]{background-color:#f2f0eb}.skippr\\:bg-\\[\\#f4ecd8\\]{background-color:#f4ecd8}.skippr\\:bg-\\[\\#f4f2ee\\]{background-color:#f4f2ee}.skippr\\:bg-\\[rgba\\(45\\,45\\,63\\,0\\.03\\)\\]{background-color:#2d2d3f08}.skippr\\:bg-amber-50{background-color:var(--skippr-color-amber-50)}.skippr\\:bg-amber-400{background-color:var(--skippr-color-amber-400)}.skippr\\:bg-background{background-color:oklch(100% 0 0)}.skippr\\:bg-black\\/\\[0\\.07\\]{background-color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-black\\/\\[0\\.07\\]{background-color:color-mix(in oklab,var(--skippr-color-black)7.0%,transparent)}}.skippr\\:bg-brand,.skippr\\:bg-brand\\/10{background-color:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-brand\\/10{background-color:color-mix(in oklab,var(--skippr-brand,#2bc0ae)10%,transparent)}}.skippr\\:bg-brand\\/50{background-color:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-brand\\/50{background-color:color-mix(in oklab,var(--skippr-brand,#2bc0ae)50%,transparent)}}.skippr\\:bg-bubble{background-color:#2d2b3d}.skippr\\:bg-bubble\\/95{background-color:oklab(29.9244% .0107414 -.0305411/.95)}.skippr\\:bg-card{background-color:oklch(100% 0 0)}.skippr\\:bg-current{background-color:currentColor}.skippr\\:bg-destructive{background-color:#d94f4f}.skippr\\:bg-emerald-400{background-color:var(--skippr-color-emerald-400)}.skippr\\:bg-foreground{background-color:oklch(14.7% .004 49.25)}.skippr\\:bg-foreground\\/10{background-color:oklab(14.7% .00261104 .00303026/.1)}.skippr\\:bg-launcher{background-color:#2d2d3f}.skippr\\:bg-muted-foreground\\/40{background-color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:bg-neutral-100{background-color:var(--skippr-color-neutral-100)}.skippr\\:bg-primary,.skippr\\:bg-primary\\/10{background-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-primary\\/10{background-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)10%,transparent)}}.skippr\\:bg-red-50{background-color:var(--skippr-color-red-50)}.skippr\\:bg-red-100{background-color:var(--skippr-color-red-100)}.skippr\\:bg-red-500{background-color:var(--skippr-color-red-500)}.skippr\\:bg-secondary{background-color:#ffdfb5}.skippr\\:bg-transparent{background-color:#0000}.skippr\\:bg-white,.skippr\\:bg-white\\/40{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/40{background-color:color-mix(in oklab,var(--skippr-color-white)40%,transparent)}}.skippr\\:bg-white\\/70{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/70{background-color:color-mix(in oklab,var(--skippr-color-white)70%,transparent)}}.skippr\\:bg-white\\/80{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/80{background-color:color-mix(in oklab,var(--skippr-color-white)80%,transparent)}}.skippr\\:bg-white\\/95{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/95{background-color:color-mix(in oklab,var(--skippr-color-white)95%,transparent)}}.skippr\\:fill-brand{fill:var(--skippr-brand,#2bc0ae)}.skippr\\:fill-current{fill:currentColor}.skippr\\:fill-primary\\/30{fill:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:fill-primary\\/30{fill:color-mix(in oklab,var(--skippr-brand,#2d2b3d)30%,transparent)}}.skippr\\:fill-white{fill:var(--skippr-color-white)}.skippr\\:stroke-black\\/15{stroke:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:stroke-black\\/15{stroke:color-mix(in oklab,var(--skippr-color-black)15%,transparent)}}.skippr\\:stroke-bubble{stroke:#2d2b3d}.skippr\\:object-contain{object-fit:contain}.skippr\\:object-cover{object-fit:cover}.skippr\\:p-0{padding:calc(var(--skippr-spacing)*0)}.skippr\\:p-1\\.5{padding:calc(var(--skippr-spacing)*1.5)}.skippr\\:p-2{padding:calc(var(--skippr-spacing)*2)}.skippr\\:p-3{padding:calc(var(--skippr-spacing)*3)}.skippr\\:p-3\\.5{padding:calc(var(--skippr-spacing)*3.5)}.skippr\\:p-4{padding:calc(var(--skippr-spacing)*4)}.skippr\\:p-\\[2px\\]{padding:2px}.skippr\\:p-\\[3px\\]{padding:3px}.skippr\\:p-\\[9px\\]{padding:9px}.skippr\\:p-\\[14px\\]{padding:14px}.skippr\\:px-1{padding-inline:calc(var(--skippr-spacing)*1)}.skippr\\:px-1\\.5{padding-inline:calc(var(--skippr-spacing)*1.5)}.skippr\\:px-2{padding-inline:calc(var(--skippr-spacing)*2)}.skippr\\:px-2\\.5{padding-inline:calc(var(--skippr-spacing)*2.5)}.skippr\\:px-3{padding-inline:calc(var(--skippr-spacing)*3)}.skippr\\:px-3\\.5{padding-inline:calc(var(--skippr-spacing)*3.5)}.skippr\\:px-4{padding-inline:calc(var(--skippr-spacing)*4)}.skippr\\:px-5{padding-inline:calc(var(--skippr-spacing)*5)}.skippr\\:px-6{padding-inline:calc(var(--skippr-spacing)*6)}.skippr\\:px-8{padding-inline:calc(var(--skippr-spacing)*8)}.skippr\\:px-\\[5px\\]{padding-inline:5px}.skippr\\:px-\\[7px\\]{padding-inline:7px}.skippr\\:px-\\[8px\\]{padding-inline:8px}.skippr\\:px-\\[9px\\]{padding-inline:9px}.skippr\\:px-\\[10px\\]{padding-inline:10px}.skippr\\:px-\\[11px\\]{padding-inline:11px}.skippr\\:px-\\[12px\\]{padding-inline:12px}.skippr\\:px-\\[18px\\]{padding-inline:18px}.skippr\\:px-\\[22px\\]{padding-inline:22px}.skippr\\:py-0\\.5{padding-block:calc(var(--skippr-spacing)*.5)}.skippr\\:py-1{padding-block:calc(var(--skippr-spacing)*1)}.skippr\\:py-1\\.5{padding-block:calc(var(--skippr-spacing)*1.5)}.skippr\\:py-2{padding-block:calc(var(--skippr-spacing)*2)}.skippr\\:py-2\\.5{padding-block:calc(var(--skippr-spacing)*2.5)}.skippr\\:py-3{padding-block:calc(var(--skippr-spacing)*3)}.skippr\\:py-4{padding-block:calc(var(--skippr-spacing)*4)}.skippr\\:py-6{padding-block:calc(var(--skippr-spacing)*6)}.skippr\\:py-\\[1px\\]{padding-block:1px}.skippr\\:py-\\[3px\\]{padding-block:3px}.skippr\\:py-\\[4px\\]{padding-block:4px}.skippr\\:py-\\[5px\\]{padding-block:5px}.skippr\\:py-\\[6px\\]{padding-block:6px}.skippr\\:py-\\[7px\\]{padding-block:7px}.skippr\\:py-\\[13px\\]{padding-block:13px}.skippr\\:pt-1{padding-top:calc(var(--skippr-spacing)*1)}.skippr\\:pt-5{padding-top:calc(var(--skippr-spacing)*5)}.skippr\\:pt-\\[8px\\]{padding-top:8px}.skippr\\:pt-\\[9px\\]{padding-top:9px}.skippr\\:pt-\\[10px\\]{padding-top:10px}.skippr\\:pt-\\[18px\\]{padding-top:18px}.skippr\\:pt-\\[22px\\]{padding-top:22px}.skippr\\:pr-2\\.5{padding-right:calc(var(--skippr-spacing)*2.5)}.skippr\\:pr-3{padding-right:calc(var(--skippr-spacing)*3)}.skippr\\:pr-\\[5px\\]{padding-right:5px}.skippr\\:pr-\\[6px\\]{padding-right:6px}.skippr\\:pr-\\[9px\\]{padding-right:9px}.skippr\\:pr-\\[10px\\]{padding-right:10px}.skippr\\:pb-0\\.5{padding-bottom:calc(var(--skippr-spacing)*.5)}.skippr\\:pb-1{padding-bottom:calc(var(--skippr-spacing)*1)}.skippr\\:pb-4{padding-bottom:calc(var(--skippr-spacing)*4)}.skippr\\:pb-\\[8px\\]{padding-bottom:8px}.skippr\\:pb-\\[10px\\]{padding-bottom:10px}.skippr\\:pb-\\[22px\\]{padding-bottom:22px}.skippr\\:pl-1\\.5{padding-left:calc(var(--skippr-spacing)*1.5)}.skippr\\:pl-2\\.5{padding-left:calc(var(--skippr-spacing)*2.5)}.skippr\\:pl-3\\.5{padding-left:calc(var(--skippr-spacing)*3.5)}.skippr\\:pl-\\[9px\\]{padding-left:9px}.skippr\\:pl-\\[13px\\]{padding-left:13px}.skippr\\:text-center{text-align:center}.skippr\\:text-left{text-align:left}.skippr\\:font-mono{font-family:var(--skippr-font-mono)}.skippr\\:text-sm{font-size:var(--skippr-text-sm);line-height:var(--tw-leading,var(--skippr-text-sm--line-height))}.skippr\\:text-xs{font-size:var(--skippr-text-xs);line-height:var(--tw-leading,var(--skippr-text-xs--line-height))}.skippr\\:text-\\[8\\.5px\\]{font-size:8.5px}.skippr\\:text-\\[9\\.5px\\]{font-size:9.5px}.skippr\\:text-\\[9px\\]{font-size:9px}.skippr\\:text-\\[10\\.5px\\]{font-size:10.5px}.skippr\\:text-\\[10px\\]{font-size:10px}.skippr\\:text-\\[11\\.5px\\]{font-size:11.5px}.skippr\\:text-\\[11px\\]{font-size:11px}.skippr\\:text-\\[12\\.5px\\]{font-size:12.5px}.skippr\\:text-\\[12px\\]{font-size:12px}.skippr\\:text-\\[13px\\]{font-size:13px}.skippr\\:text-\\[14px\\]{font-size:14px}.skippr\\:text-\\[16px\\]{font-size:16px}.skippr\\:text-\\[18px\\]{font-size:18px}.skippr\\:leading-5{--tw-leading:calc(var(--skippr-spacing)*5);line-height:calc(var(--skippr-spacing)*5)}.skippr\\:leading-\\[1\\.2\\]{--tw-leading:1.2;line-height:1.2}.skippr\\:leading-\\[1\\.25\\]{--tw-leading:1.25;line-height:1.25}.skippr\\:leading-none{--tw-leading:1;line-height:1}.skippr\\:leading-relaxed{--tw-leading:var(--skippr-leading-relaxed);line-height:var(--skippr-leading-relaxed)}.skippr\\:leading-snug{--tw-leading:var(--skippr-leading-snug);line-height:var(--skippr-leading-snug)}.skippr\\:font-bold{--tw-font-weight:var(--skippr-font-weight-bold);font-weight:var(--skippr-font-weight-bold)}.skippr\\:font-medium{--tw-font-weight:var(--skippr-font-weight-medium);font-weight:var(--skippr-font-weight-medium)}.skippr\\:font-semibold{--tw-font-weight:var(--skippr-font-weight-semibold);font-weight:var(--skippr-font-weight-semibold)}.skippr\\:tracking-\\[-0\\.01em\\]{--tw-tracking:-.01em;letter-spacing:-.01em}.skippr\\:tracking-\\[-0\\.0125em\\]{--tw-tracking:-.0125em;letter-spacing:-.0125em}.skippr\\:tracking-\\[0\\.02em\\]{--tw-tracking:.02em;letter-spacing:.02em}.skippr\\:tracking-\\[0\\.05em\\]{--tw-tracking:.05em;letter-spacing:.05em}.skippr\\:whitespace-nowrap{white-space:nowrap}.skippr\\:text-\\[\\#2D2D3F\\]{color:#2d2d3f}.skippr\\:text-\\[\\#5a5650\\]{color:#5a5650}.skippr\\:text-\\[\\#5c5850\\]{color:#5c5850}.skippr\\:text-\\[\\#6b6660\\]{color:#6b6660}.skippr\\:text-\\[\\#6b6875\\]{color:#6b6875}.skippr\\:text-\\[\\#8b877f\\]{color:#8b877f}.skippr\\:text-\\[\\#92400e\\]{color:#92400e}.skippr\\:text-\\[\\#a8a49c\\]{color:#a8a49c}.skippr\\:text-\\[\\#b8b4ac\\]{color:#b8b4ac}.skippr\\:text-\\[\\#c9c5bd\\]{color:#c9c5bd}.skippr\\:text-\\[\\#cbc7bf\\]{color:#cbc7bf}.skippr\\:text-\\[\\#dc2626\\]{color:#dc2626}.skippr\\:text-\\[var\\(--skippr-brand-deep\\)\\]{color:var(--skippr-brand-deep)}.skippr\\:text-\\[var\\(--skippr-brand-on-white\\,\\#2d2b3d\\)\\]{color:var(--skippr-brand-on-white,#2d2b3d)}.skippr\\:text-amber-700{color:var(--skippr-color-amber-700)}.skippr\\:text-amber-950{color:var(--skippr-color-amber-950)}.skippr\\:text-background{color:oklch(100% 0 0)}.skippr\\:text-black,.skippr\\:text-black\\/40{color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:text-black\\/40{color:color-mix(in oklab,var(--skippr-color-black)40%,transparent)}}.skippr\\:text-brand{color:var(--skippr-brand,#2bc0ae)}.skippr\\:text-bubble{color:#2d2b3d}.skippr\\:text-chart-3{color:oklch(66.6% .179 58.318)}.skippr\\:text-destructive{color:#d94f4f}.skippr\\:text-foreground{color:oklch(14.7% .004 49.25)}.skippr\\:text-muted-foreground{color:oklch(55.3% .013 58.071)}.skippr\\:text-muted-foreground\\/30{color:oklab(55.3% .00687528 .0110332/.3)}.skippr\\:text-muted-foreground\\/60{color:oklab(55.3% .00687528 .0110332/.6)}.skippr\\:text-neutral-500{color:var(--skippr-color-neutral-500)}.skippr\\:text-neutral-700{color:var(--skippr-color-neutral-700)}.skippr\\:text-primary{color:var(--skippr-brand,#2d2b3d)}.skippr\\:text-primary-foreground{color:var(--skippr-brand-foreground,#fff)}.skippr\\:text-red-400{color:var(--skippr-color-red-400)}.skippr\\:text-red-600{color:var(--skippr-color-red-600)}.skippr\\:text-red-700{color:var(--skippr-color-red-700)}.skippr\\:text-secondary-foreground{color:#613700}.skippr\\:text-white,.skippr\\:text-white\\/60{color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:text-white\\/60{color:color-mix(in oklab,var(--skippr-color-white)60%,transparent)}}.skippr\\:capitalize{text-transform:capitalize}.skippr\\:uppercase{text-transform:uppercase}.skippr\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.skippr\\:line-through{text-decoration-line:line-through}.skippr\\:underline{text-decoration-line:underline}.skippr\\:decoration-muted-foreground\\/40{text-decoration-color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:underline-offset-2,.skippr\\:underline-offset-\\[2px\\]{text-underline-offset:2px}.skippr\\:placeholder-muted-foreground::placeholder{color:oklch(55.3% .013 58.071)}.skippr\\:opacity-0{opacity:0}.skippr\\:opacity-40{opacity:.4}.skippr\\:opacity-75{opacity:.75}.skippr\\:opacity-100{opacity:1}.skippr\\:shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[-3px_0_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:-3px 0 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[-4px_6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:-4px 6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[-6px_8px_30px_rgba\\(15\\,18\\,26\\,0\\.32\\)\\]{--tw-shadow:-6px 8px 30px var(--tw-shadow-color,#0f121a52);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_-3px_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:0 -3px 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_-6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:0 -6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_0_0_1\\.5px_rgba\\(255\\,255\\,255\\,0\\.85\\)\\]{--tw-shadow:0 0 0 1.5px var(--tw-shadow-color,#ffffffd9);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_0_0_1px_rgba\\(45\\,45\\,63\\,0\\.10\\)\\,0_1px_2px_rgba\\(45\\,45\\,63\\,0\\.04\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#2d2d3f1a),0 1px 2px var(--tw-shadow-color,#2d2d3f0a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_0_0_4px_var\\(--skippr-brand-ring\\)\\]{--tw-shadow:0 0 0 4px var(--tw-shadow-color,var(--skippr-brand-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_1px_2px_rgba\\(45\\,45\\,63\\,0\\.05\\)\\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#2d2d3f0d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_1px_2px_rgba\\(45\\,45\\,63\\,0\\.08\\)\\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#2d2d3f14);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_2px_6px_rgba\\(0\\,0\\,0\\,0\\.28\\)\\]{--tw-shadow:0 2px 6px var(--tw-shadow-color,#00000047);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\]{--tw-shadow:0 2px 6px var(--tw-shadow-color,#2d2d3f24);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_3px_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:0 3px 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_12px_rgba\\(45\\,45\\,63\\,0\\.1\\)\\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#2d2d3f1a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_14px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\]{--tw-shadow:0 4px 14px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_14px_rgba\\(239\\,68\\,68\\,0\\.45\\)\\]{--tw-shadow:0 4px 14px var(--tw-shadow-color,#ef444473);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_16px_rgba\\(45\\,43\\,61\\,0\\.45\\)\\,0_2px_4px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#2d2b3d73),0 2px 4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_6px_16px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\]{--tw-shadow:0 6px 16px var(--tw-shadow-color,#2d2d3f24);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:0 6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_22px_rgba\\(45\\,45\\,63\\,0\\.12\\)\\,0_1px_3px_rgba\\(45\\,45\\,63\\,0\\.04\\)\\]{--tw-shadow:0 8px 22px var(--tw-shadow-color,#2d2d3f1f),0 1px 3px var(--tw-shadow-color,#2d2d3f0a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_24px_rgba\\(0\\,0\\,0\\,0\\.18\\)\\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_24px_rgba\\(45\\,43\\,61\\,0\\.35\\)\\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#2d2b3d59);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_30px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\,0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.06\\)\\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#2d2d3f24),0 2px 6px var(--tw-shadow-color,#2d2d3f0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_26px_rgba\\(45\\,45\\,63\\,0\\.13\\)\\,0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.05\\)\\]{--tw-shadow:0 10px 26px var(--tw-shadow-color,#2d2d3f21),0 2px 6px var(--tw-shadow-color,#2d2d3f0d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_28px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:0 10px 28px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_30px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\,0_0_0_1\\.5px_var\\(--skippr-brand-ring\\)\\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#2d2d3f24),0 0 0 1.5px var(--tw-shadow-color,var(--skippr-brand-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_32px_rgba\\(0\\,0\\,0\\,0\\.18\\)\\]{--tw-shadow:0 10px 32px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_14px_34px_rgba\\(45\\,45\\,63\\,0\\.15\\)\\,0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.06\\)\\]{--tw-shadow:0 14px 34px var(--tw-shadow-color,#2d2d3f26),0 2px 6px var(--tw-shadow-color,#2d2d3f0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[3px_0_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:3px 0 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[4px_6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:4px 6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[inset_0_0_0_1\\.5px_var\\(--skippr-brand\\,\\#2bc0ae\\)\\]{--tw-shadow:inset 0 0 0 1.5px var(--tw-shadow-color,var(--skippr-brand,#2bc0ae));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:ring-black\\/5{--tw-ring-color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:ring-black\\/5{--tw-ring-color:color-mix(in oklab,var(--skippr-color-black)5%,transparent)}}.skippr\\:ring-brand{--tw-ring-color:var(--skippr-brand,#2bc0ae)}.skippr\\:ring-white\\/15{--tw-ring-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:ring-white\\/15{--tw-ring-color:color-mix(in oklab,var(--skippr-color-white)15%,transparent)}}.skippr\\:ring-offset-background{--tw-ring-offset-color:oklch(100% 0 0)}.skippr\\:drop-shadow-\\[0_2px_5px_rgba\\(0\\,0\\,0\\,0\\.4\\)\\]{--tw-drop-shadow-size:drop-shadow(0 2px 5px var(--tw-drop-shadow-color,#0006));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.skippr\\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--skippr-blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.skippr\\:transition-\\[filter\\]{transition-property:filter;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[gap\\]{transition-property:gap;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[height\\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[left\\]{transition-property:left;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[opacity\\,transform\\,height\\]{transition-property:opacity,transform,height;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[width\\,height\\,background-color\\,border-color\\]{transition-property:width,height,background-color,border-color;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[width\\,margin\\]{transition-property:width,margin;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:duration-75{--tw-duration:75ms;transition-duration:75ms}.skippr\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.skippr\\:duration-150{--tw-duration:.15s;transition-duration:.15s}.skippr\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.skippr\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.skippr\\:duration-\\[400ms\\]{--tw-duration:.4s;transition-duration:.4s}.skippr\\:ease-\\[cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{--tw-ease:cubic-bezier(.22,1,.36,1);transition-timing-function:cubic-bezier(.22,1,.36,1)}.skippr\\:ease-\\[cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)\\]{--tw-ease:cubic-bezier(.34,1.3,.64,1);transition-timing-function:cubic-bezier(.34,1.3,.64,1)}.skippr\\:ease-\\[cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\]{--tw-ease:cubic-bezier(.34,1.56,.64,1);transition-timing-function:cubic-bezier(.34,1.56,.64,1)}.skippr\\:ease-in-out{--tw-ease:var(--skippr-ease-in-out);transition-timing-function:var(--skippr-ease-in-out)}.skippr\\:ease-out{--tw-ease:var(--skippr-ease-out);transition-timing-function:var(--skippr-ease-out)}.skippr\\:outline-none{--tw-outline-style:none;outline-style:none}.skippr\\:select-none{-webkit-user-select:none;user-select:none}.skippr\\:select-text{-webkit-user-select:text;user-select:text}.skippr\\:\\[animation-delay\\:0ms\\]{animation-delay:0s}.skippr\\:\\[animation-delay\\:150ms\\]{animation-delay:.15s}.skippr\\:\\[animation-delay\\:200ms\\]{animation-delay:.2s}.skippr\\:\\[animation-delay\\:300ms\\]{animation-delay:.3s}.skippr\\:\\[animation-delay\\:400ms\\]{animation-delay:.4s}.skippr\\:\\[overflow-anchor\\:none\\]{overflow-anchor:none}.skippr\\:group-focus-within\\:scale-100:is(:where(.skippr\\:group):focus-within *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:group-focus-within\\:opacity-100:is(:where(.skippr\\:group):focus-within *){opacity:1}@media (hover:hover){.skippr\\:group-hover\\:scale-100:is(:where(.skippr\\:group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:group-hover\\:text-red-300:is(:where(.skippr\\:group):hover *){color:var(--skippr-color-red-300)}.skippr\\:group-hover\\:text-white\\/80:is(:where(.skippr\\:group):hover *){color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:group-hover\\:text-white\\/80:is(:where(.skippr\\:group):hover *){color:color-mix(in oklab,var(--skippr-color-white)80%,transparent)}}.skippr\\:group-hover\\:opacity-100:is(:where(.skippr\\:group):hover *){opacity:1}}.skippr\\:placeholder\\:text-\\[\\#b0aca4\\]::placeholder{color:#b0aca4}.skippr\\:first\\:mt-0:first-child{margin-top:calc(var(--skippr-spacing)*0)}@media (hover:hover){.skippr\\:hover\\:-translate-y-0\\.5:hover{--tw-translate-y:calc(var(--skippr-spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:hover\\:bg-\\[\\#3a384b\\]:hover{background-color:#3a384b}.skippr\\:hover\\:bg-\\[\\#3d3d52\\]:hover{background-color:#3d3d52}.skippr\\:hover\\:bg-\\[\\#f2f0eb\\]:hover{background-color:#f2f0eb}.skippr\\:hover\\:bg-\\[\\#f4f2ee\\]:hover{background-color:#f4f2ee}.skippr\\:hover\\:bg-\\[\\#f6f4f0\\]:hover{background-color:#f6f4f0}.skippr\\:hover\\:bg-accent:hover{background-color:#e7e5e4}.skippr\\:hover\\:bg-amber-100:hover{background-color:var(--skippr-color-amber-100)}.skippr\\:hover\\:bg-bubble:hover{background-color:#2d2b3d}.skippr\\:hover\\:bg-destructive\\/90:hover{background-color:oklab(61.4357% .15892 .0698893/.9)}.skippr\\:hover\\:bg-foreground\\/8:hover{background-color:oklab(14.7% .00261104 .00303026/.08)}.skippr\\:hover\\:bg-muted:hover{background-color:oklch(97% .001 106.424)}.skippr\\:hover\\:bg-neutral-100:hover{background-color:var(--skippr-color-neutral-100)}.skippr\\:hover\\:bg-neutral-200:hover{background-color:var(--skippr-color-neutral-200)}.skippr\\:hover\\:bg-primary\\/90:hover{background-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)90%,transparent)}}.skippr\\:hover\\:bg-red-200:hover{background-color:var(--skippr-color-red-200)}.skippr\\:hover\\:bg-red-600:hover{background-color:var(--skippr-color-red-600)}.skippr\\:hover\\:bg-secondary\\/80:hover{background-color:oklab(91.9963% .0175391 .0626889/.8)}.skippr\\:hover\\:bg-transparent:hover{background-color:#0000}.skippr\\:hover\\:bg-white\\/20:hover{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:hover\\:bg-white\\/20:hover{background-color:color-mix(in oklab,var(--skippr-color-white)20%,transparent)}}.skippr\\:hover\\:text-\\[\\#2D2D3F\\]:hover{color:#2d2d3f}.skippr\\:hover\\:text-\\[\\#5a5650\\]:hover{color:#5a5650}.skippr\\:hover\\:text-\\[\\#8b877f\\]:hover{color:#8b877f}.skippr\\:hover\\:text-\\[\\#b8b4ac\\]:hover{color:#b8b4ac}.skippr\\:hover\\:text-accent-foreground:hover{color:oklch(21.6% .006 56.043)}.skippr\\:hover\\:text-foreground:hover{color:oklch(14.7% .004 49.25)}.skippr\\:hover\\:underline:hover{text-decoration-line:underline}.skippr\\:hover\\:decoration-muted-foreground:hover{text-decoration-color:oklch(55.3% .013 58.071)}.skippr\\:hover\\:opacity-80:hover{opacity:.8}.skippr\\:hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.skippr\\:hover\\:brightness-\\[1\\.04\\]:hover{--tw-brightness:brightness(1.04);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.skippr\\:hover\\:brightness-\\[1\\.06\\]:hover{--tw-brightness:brightness(1.06);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.skippr\\:focus\\:border-primary:focus{border-color:var(--skippr-brand,#2d2b3d)}.skippr\\:focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:focus\\:ring-primary\\/30:focus{--tw-ring-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:focus\\:ring-primary\\/30:focus{--tw-ring-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)30%,transparent)}}.skippr\\:focus-visible\\:border-\\[var\\(--skippr-brand-ring\\)\\]:focus-visible{border-color:var(--skippr-brand-ring)}.skippr\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:focus-visible\\:ring-\\[var\\(--skippr-brand-ring\\)\\]:focus-visible{--tw-ring-color:var(--skippr-brand-ring)}.skippr\\:focus-visible\\:ring-bubble\\/60:focus-visible{--tw-ring-color:oklab(29.9244% .0107414 -.0305411/.6)}.skippr\\:focus-visible\\:ring-ring:focus-visible{--tw-ring-color:oklch(70.9% .01 56.259)}.skippr\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.skippr\\:focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.skippr\\:focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.skippr\\:focus-visible\\:outline-\\[var\\(--skippr-brand\\)\\]:focus-visible{outline-color:var(--skippr-brand)}.skippr\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.skippr\\:active\\:translate-y-0:active{--tw-translate-y:calc(var(--skippr-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:active\\:scale-\\[0\\.98\\]:active{scale:.98}.skippr\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.skippr\\:disabled\\:cursor-default:disabled{cursor:default}.skippr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.skippr\\:disabled\\:opacity-50:disabled{opacity:.5}.skippr\\:disabled\\:opacity-60:disabled{opacity:.6}.skippr\\:disabled\\:opacity-80:disabled{opacity:.8}@media (hover:hover){.skippr\\:disabled\\:hover\\:bg-\\[\\#2D2D3F\\]:disabled:hover{background-color:#2d2d3f}.skippr\\:disabled\\:hover\\:bg-white:disabled:hover{background-color:var(--skippr-color-white)}}@media (prefers-reduced-motion:reduce){.skippr\\:motion-reduce\\:hidden{display:none}.skippr\\:motion-reduce\\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:motion-reduce\\:animate-none{animation:none}}.skippr\\:\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.skippr\\:\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.skippr\\:\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--skippr-spacing)*4);height:calc(var(--skippr-spacing)*4)}}:host{--skippr-brand-active:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-active:color-mix(in srgb,var(--skippr-brand,#2bc0ae)93%,#000)}}:host{--skippr-brand-deep:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-deep:color-mix(in srgb,var(--skippr-brand,#2bc0ae)78%,#000)}}:host{--skippr-brand-ring:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-ring:color-mix(in srgb,var(--skippr-brand,#2bc0ae)22%,transparent)}}:host{--skippr-brand-halo:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-halo:color-mix(in srgb,var(--skippr-brand,#2bc0ae)40%,transparent)}}:host{--skippr-brand-glow:linear-gradient(90deg,var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae))}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-glow:linear-gradient(90deg,var(--skippr-brand,#2bc0ae),color-mix(in srgb,var(--skippr-brand,#2bc0ae)55%,#fff),color-mix(in srgb,var(--skippr-brand,#2bc0ae)72%,#fff),var(--skippr-brand,#2bc0ae),color-mix(in srgb,var(--skippr-brand,#2bc0ae)42%,#fff))}}@keyframes skippr-tap{0%{transform:scale(1)}45%{transform:scale(.7)}to{transform:scale(1)}}@keyframes skippr-press{0%{transform:scale(1)}55%{transform:scale(1)}85%{transform:scale(.68)}to{transform:scale(1)}}@keyframes skippr-cursor-pop{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes skippr-click-ping{0%{opacity:.9;transform:translate(-50%,-50%)scale(.4)}to{opacity:0;transform:translate(-50%,-50%)scale(2.4)}}@keyframes skippr-tab-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes skippr-speak{0%,to{opacity:.6;transform:scaleY(.4)}50%{opacity:1;transform:scaleY(1)}}@keyframes skippr-thinking-dot{0%,80%,to{opacity:.2;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes skippr-pulse-ring{0%,to{box-shadow:0 0 #2d2b3d66}50%{box-shadow:0 0 0 10px #2d2b3d00}}@keyframes skippr-rec-ring{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)55%,transparent)}70%{box-shadow:0 0 0 11px #0000}to{box-shadow:0 0 #0000}}@keyframes skippr-voice-pulse{0%{box-shadow:0 0 0 0 var(--skippr-pulse-color,#2bc0ae80)}70%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}@keyframes skippr-ptt-transmit{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)60%,transparent),0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)35%,transparent)}70%{box-shadow:0 0 0 9px #0000,0 0 0 16px #0000}to{box-shadow:0 0 #0000,0 0 #0000}}@keyframes skippr-annotation-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)50%,transparent)}50%{box-shadow:0 0 0 6px #0000}}@keyframes skippr-speak-ripple{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}@keyframes skippr-bar{0%,to{transform:scaleY(.35)}50%{transform:scaleY(1)}}@keyframes skippr-breathe{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes skippr-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes skippr-evaporate{0%{opacity:1;filter:blur();transform:translateY(0)scale(1)}55%{opacity:.85;filter:blur()}to{opacity:0;filter:blur(2.5px);transform:translateY(-7px)scale(.965)}}@keyframes skippr-mote-rise{0%{opacity:0;transform:translateY(2px)scale(.5)}25%{opacity:.85}to{opacity:0;transform:translateY(-24px)scale(1)}}@keyframes skippr-flow{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes skippr-wave{0%,to{opacity:.4;transform:scaleY(.4)}50%{opacity:1;transform:scaleY(1)}}@keyframes skippr-bubble-in{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes skippr-tip-in{0%{opacity:0;transform:translateY(14px)scale(.96)}60%{opacity:1;transform:translateY(-2px)scale(1.01)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes skippr-pill-content{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes skippr-banner-look{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@keyframes skippr-finger-tap{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(2px)rotate(-6deg)}}@keyframes skippr-toolset-pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes skippr-stage-fade{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes skippr-agent-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes skippr-orb-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes skippr-pop{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}@keyframes skippr-blink{0%,40%{transform:scaleY(1)}41.3%,42%{transform:scaleY(.08)}43.3%,70%{transform:scaleY(1)}71.3%,72%{transform:scaleY(.08)}73.3%,to{transform:scaleY(1)}}.skippr-buddy-blink{transform-box:fill-box;transform-origin:50%;animation:5s linear infinite skippr-blink}@keyframes skippr-avatar-eyes-bob{0%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(0)}18%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(24px)}33.33%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(-30px)}48%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(-7px)}64%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(-30px)}82%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(31px)}96%,to{transform:translateY(0)}}@keyframes skippr-avatar-pupil-glance{0%,21.33%{transform:translate(0)}28%,68%{transform:translate(-30px)}74%,to{transform:translate(0)}}@keyframes skippr-avatar-body-vibe{0%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1)}17.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1.08,.95)}33.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1)}49.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1.08,.95)}65.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1)}81.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1.08,.95)}96%,to{transform:scale(1)}}@keyframes skippr-avatar-blink{0%,40%{transform:scaleY(1)}41.3%,42%{transform:scaleY(.08)}43.3%,70%{transform:scaleY(1)}71.3%,72%{transform:scaleY(.08)}73.3%,to{transform:scaleY(1)}}@keyframes skippr-avatar-bub-tail-drift{0%,10%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translate(0)}45%,60%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translate(-24px)}95%,to{transform:translate(0)}}@keyframes skippr-avatar-antenna-shake{0%,to{transform:rotate(-4deg)}25%{transform:rotate(4deg)}50%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}.skippr-avatar-eyes{animation:5s infinite skippr-avatar-eyes-bob}.skippr-avatar-pupil{animation:5s linear infinite skippr-avatar-pupil-glance}.skippr-avatar-body{transform-box:fill-box;transform-origin:50% 100%;animation:5s infinite skippr-avatar-body-vibe}.skippr-avatar-blink{transform-box:fill-box;transform-origin:50%;animation:5s infinite skippr-avatar-blink}.skippr-avatar-body .skippr-avatar-antenna{transform-box:view-box;transform-origin:48px 22px;animation:1.6s ease-in-out infinite skippr-avatar-antenna-shake}.skippr-avatar-body .skippr-avatar-bub-tail{animation:5s infinite skippr-avatar-bub-tail-drift}@keyframes skippr-buddy-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes skippr-buddy-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes skippr-buddy-pop{0%{transform:scale(1)}50%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes skippr-buddy-sleep{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(1px)scale(.995)}}@keyframes skippr-buddy-zfloat{0%{opacity:0;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(-10px)}}@keyframes skippr-peek-left{0%,20%{transform:translate(-58%)}46%,66%{transform:translate(0)}92%,to{transform:translate(-58%)}}@keyframes skippr-peek-right{0%,20%{transform:translate(58%)}46%,66%{transform:translate(0)}92%,to{transform:translate(58%)}}@keyframes skippr-peek-top{0%,20%{transform:translateY(-58%)}46%,66%{transform:translateY(0)}92%,to{transform:translateY(-58%)}}@keyframes skippr-peek-bottom{0%,20%{transform:translateY(58%)}46%,66%{transform:translateY(0)}92%,to{transform:translateY(58%)}}.skippr-peek-left{animation:3.6s ease-in-out infinite skippr-peek-left}.skippr-peek-right{animation:3.6s ease-in-out infinite skippr-peek-right}.skippr-peek-top{animation:3.6s ease-in-out infinite skippr-peek-top}.skippr-peek-bottom{animation:3.6s ease-in-out infinite skippr-peek-bottom}.skippr-peek-out{animation:none;transform:none}@keyframes skippr-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes skippr-block-reveal{0%{opacity:0;max-height:0;transform:translateY(-4px)}55%{opacity:1}to{opacity:1;max-height:260px;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.skippr-buddy-blink,[style*=skippr-blink],[style*=skippr-buddy-bob],[style*=skippr-buddy-breathe],[style*=skippr-buddy-pop],[style*=skippr-buddy-sleep],[style*=skippr-buddy-zfloat],.skippr-avatar-eyes,.skippr-avatar-pupil,.skippr-avatar-body,.skippr-avatar-blink,.skippr-avatar-body .skippr-avatar-antenna,.skippr-avatar-body .skippr-avatar-bub-tail,.skippr-peek-left,.skippr-peek-right,.skippr-peek-top,.skippr-peek-bottom{animation-play-state:paused}}.skippr-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.skippr-no-scrollbar::-webkit-scrollbar{display:none}:host{color:var(--color-foreground)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}`;
|
|
8516
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--skippr-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--skippr-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--skippr-color-red-50:oklch(97.1% .013 17.38);--skippr-color-red-100:oklch(93.6% .032 17.717);--skippr-color-red-200:oklch(88.5% .062 18.334);--skippr-color-red-300:oklch(80.8% .114 19.571);--skippr-color-red-400:oklch(70.4% .191 22.216);--skippr-color-red-500:oklch(63.7% .237 25.331);--skippr-color-red-600:oklch(57.7% .245 27.325);--skippr-color-red-700:oklch(50.5% .213 27.518);--skippr-color-amber-50:oklch(98.7% .022 95.277);--skippr-color-amber-100:oklch(96.2% .059 95.617);--skippr-color-amber-400:oklch(82.8% .189 84.429);--skippr-color-amber-700:oklch(55.5% .163 48.998);--skippr-color-amber-950:oklch(27.9% .077 45.635);--skippr-color-emerald-400:oklch(76.5% .177 163.223);--skippr-color-neutral-100:oklch(97% 0 0);--skippr-color-neutral-200:oklch(92.2% 0 0);--skippr-color-neutral-500:oklch(55.6% 0 0);--skippr-color-neutral-700:oklch(37.1% 0 0);--skippr-color-black:#000;--skippr-color-white:#fff;--skippr-spacing:.25rem;--skippr-text-xs:.75rem;--skippr-text-xs--line-height:calc(1/.75);--skippr-text-sm:.875rem;--skippr-text-sm--line-height:calc(1.25/.875);--skippr-font-weight-medium:500;--skippr-font-weight-semibold:600;--skippr-font-weight-bold:700;--skippr-leading-snug:1.375;--skippr-leading-relaxed:1.625;--skippr-ease-out:cubic-bezier(0,0,.2,1);--skippr-ease-in-out:cubic-bezier(.4,0,.2,1);--skippr-animate-spin:spin 1s linear infinite;--skippr-animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--skippr-animate-bounce:bounce 1s infinite;--skippr-blur-sm:8px;--skippr-default-transition-duration:.15s;--skippr-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--skippr-default-font-family:var(--skippr-font-sans);--skippr-default-mono-font-family:var(--skippr-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--skippr-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--skippr-default-font-feature-settings,normal);font-variation-settings:var(--skippr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--skippr-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--skippr-default-mono-font-feature-settings,normal);font-variation-settings:var(--skippr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.skippr\\:pointer-events-auto{pointer-events:auto}.skippr\\:pointer-events-none{pointer-events:none}.skippr\\:absolute{position:absolute}.skippr\\:fixed{position:fixed}.skippr\\:relative{position:relative}.skippr\\:sticky{position:sticky}.skippr\\:-inset-\\[3px\\]{inset:-3px}.skippr\\:inset-0{inset:calc(var(--skippr-spacing)*0)}.skippr\\:inset-y-0{inset-block:calc(var(--skippr-spacing)*0)}.skippr\\:-top-1{top:calc(var(--skippr-spacing)*-1)}.skippr\\:-top-6{top:calc(var(--skippr-spacing)*-6)}.skippr\\:-top-8{top:calc(var(--skippr-spacing)*-8)}.skippr\\:-top-\\[2px\\]{top:-2px}.skippr\\:-top-\\[3px\\]{top:-3px}.skippr\\:-top-\\[13px\\]{top:-13px}.skippr\\:top-0{top:calc(var(--skippr-spacing)*0)}.skippr\\:top-1\\/2{top:50%}.skippr\\:top-\\[8px\\]{top:8px}.skippr\\:top-full{top:100%}.skippr\\:-right-1{right:calc(var(--skippr-spacing)*-1)}.skippr\\:-right-8{right:calc(var(--skippr-spacing)*-8)}.skippr\\:-right-\\[2px\\]{right:-2px}.skippr\\:-right-\\[6px\\]{right:-6px}.skippr\\:right-0{right:calc(var(--skippr-spacing)*0)}.skippr\\:right-3{right:calc(var(--skippr-spacing)*3)}.skippr\\:right-5{right:calc(var(--skippr-spacing)*5)}.skippr\\:right-6{right:calc(var(--skippr-spacing)*6)}.skippr\\:right-\\[4px\\]{right:4px}.skippr\\:right-\\[8px\\]{right:8px}.skippr\\:-bottom-\\[2px\\]{bottom:-2px}.skippr\\:bottom-3{bottom:calc(var(--skippr-spacing)*3)}.skippr\\:bottom-4{bottom:calc(var(--skippr-spacing)*4)}.skippr\\:bottom-20{bottom:calc(var(--skippr-spacing)*20)}.skippr\\:bottom-\\[calc\\(100\\%\\+8px\\)\\]{bottom:calc(100% + 8px)}.skippr\\:bottom-\\[calc\\(100\\%\\+11px\\)\\]{bottom:calc(100% + 11px)}.skippr\\:bottom-full{bottom:100%}.skippr\\:-left-8{left:calc(var(--skippr-spacing)*-8)}.skippr\\:-left-\\[2px\\]{left:-2px}.skippr\\:-left-\\[6px\\]{left:-6px}.skippr\\:left-0{left:calc(var(--skippr-spacing)*0)}.skippr\\:left-1\\/2{left:50%}.skippr\\:left-2{left:calc(var(--skippr-spacing)*2)}.skippr\\:left-3{left:calc(var(--skippr-spacing)*3)}.skippr\\:left-5{left:calc(var(--skippr-spacing)*5)}.skippr\\:left-6{left:calc(var(--skippr-spacing)*6)}.skippr\\:z-10{z-index:10}.skippr\\:z-20{z-index:20}.skippr\\:z-\\[1\\]{z-index:1}.skippr\\:z-\\[2\\]{z-index:2}.skippr\\:z-\\[4\\]{z-index:4}.skippr\\:z-\\[5\\]{z-index:5}.skippr\\:z-\\[6\\]{z-index:6}.skippr\\:z-\\[7\\]{z-index:7}.skippr\\:z-\\[8\\]{z-index:8}.skippr\\:z-\\[9998\\]{z-index:9998}.skippr\\:z-\\[9999\\]{z-index:9999}.skippr\\:z-\\[10000\\]{z-index:10000}.skippr\\:order-first{order:-9999}.skippr\\:order-last{order:9999}.skippr\\:mx-auto{margin-inline:auto}.skippr\\:-mt-1{margin-top:calc(var(--skippr-spacing)*-1)}.skippr\\:-mt-\\[5px\\]{margin-top:-5px}.skippr\\:-mt-\\[27px\\]{margin-top:-27px}.skippr\\:mt-1{margin-top:calc(var(--skippr-spacing)*1)}.skippr\\:mt-1\\.5{margin-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:mt-2{margin-top:calc(var(--skippr-spacing)*2)}.skippr\\:mt-3{margin-top:calc(var(--skippr-spacing)*3)}.skippr\\:mt-3\\.5{margin-top:calc(var(--skippr-spacing)*3.5)}.skippr\\:mt-\\[1px\\]{margin-top:1px}.skippr\\:mt-\\[6px\\]{margin-top:6px}.skippr\\:mt-\\[8px\\]{margin-top:8px}.skippr\\:mt-\\[9px\\]{margin-top:9px}.skippr\\:-mr-1{margin-right:calc(var(--skippr-spacing)*-1)}.skippr\\:mr-7{margin-right:calc(var(--skippr-spacing)*7)}.skippr\\:mr-\\[22px\\]{margin-right:22px}.skippr\\:-mb-\\[5px\\]{margin-bottom:-5px}.skippr\\:mb-1{margin-bottom:calc(var(--skippr-spacing)*1)}.skippr\\:mb-1\\.5{margin-bottom:calc(var(--skippr-spacing)*1.5)}.skippr\\:mb-2{margin-bottom:calc(var(--skippr-spacing)*2)}.skippr\\:mb-3{margin-bottom:calc(var(--skippr-spacing)*3)}.skippr\\:mb-4{margin-bottom:calc(var(--skippr-spacing)*4)}.skippr\\:mb-\\[14px\\]{margin-bottom:14px}.skippr\\:-ml-\\[2px\\]{margin-left:-2px}.skippr\\:ml-0\\.5{margin-left:calc(var(--skippr-spacing)*.5)}.skippr\\:ml-1{margin-left:calc(var(--skippr-spacing)*1)}.skippr\\:ml-7{margin-left:calc(var(--skippr-spacing)*7)}.skippr\\:ml-auto{margin-left:auto}.skippr\\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.skippr\\:block{display:block}.skippr\\:flex{display:flex}.skippr\\:hidden{display:none}.skippr\\:inline-flex{display:inline-flex}.skippr\\:size-1{width:calc(var(--skippr-spacing)*1);height:calc(var(--skippr-spacing)*1)}.skippr\\:size-1\\.5{width:calc(var(--skippr-spacing)*1.5);height:calc(var(--skippr-spacing)*1.5)}.skippr\\:size-2{width:calc(var(--skippr-spacing)*2);height:calc(var(--skippr-spacing)*2)}.skippr\\:size-2\\.5{width:calc(var(--skippr-spacing)*2.5);height:calc(var(--skippr-spacing)*2.5)}.skippr\\:size-3{width:calc(var(--skippr-spacing)*3);height:calc(var(--skippr-spacing)*3)}.skippr\\:size-3\\.5{width:calc(var(--skippr-spacing)*3.5);height:calc(var(--skippr-spacing)*3.5)}.skippr\\:size-4{width:calc(var(--skippr-spacing)*4);height:calc(var(--skippr-spacing)*4)}.skippr\\:size-5{width:calc(var(--skippr-spacing)*5);height:calc(var(--skippr-spacing)*5)}.skippr\\:size-6{width:calc(var(--skippr-spacing)*6);height:calc(var(--skippr-spacing)*6)}.skippr\\:size-7{width:calc(var(--skippr-spacing)*7);height:calc(var(--skippr-spacing)*7)}.skippr\\:size-8{width:calc(var(--skippr-spacing)*8);height:calc(var(--skippr-spacing)*8)}.skippr\\:size-9{width:calc(var(--skippr-spacing)*9);height:calc(var(--skippr-spacing)*9)}.skippr\\:size-10{width:calc(var(--skippr-spacing)*10);height:calc(var(--skippr-spacing)*10)}.skippr\\:size-12{width:calc(var(--skippr-spacing)*12);height:calc(var(--skippr-spacing)*12)}.skippr\\:size-\\[3px\\]{width:3px;height:3px}.skippr\\:size-\\[4px\\]{width:4px;height:4px}.skippr\\:size-\\[5px\\]{width:5px;height:5px}.skippr\\:size-\\[6px\\]{width:6px;height:6px}.skippr\\:size-\\[7px\\]{width:7px;height:7px}.skippr\\:size-\\[8px\\]{width:8px;height:8px}.skippr\\:size-\\[9px\\]{width:9px;height:9px}.skippr\\:size-\\[10px\\]{width:10px;height:10px}.skippr\\:size-\\[11px\\]{width:11px;height:11px}.skippr\\:size-\\[12px\\]{width:12px;height:12px}.skippr\\:size-\\[13px\\]{width:13px;height:13px}.skippr\\:size-\\[14px\\]{width:14px;height:14px}.skippr\\:size-\\[15px\\]{width:15px;height:15px}.skippr\\:size-\\[16px\\]{width:16px;height:16px}.skippr\\:size-\\[17px\\]{width:17px;height:17px}.skippr\\:size-\\[18px\\]{width:18px;height:18px}.skippr\\:size-\\[19px\\]{width:19px;height:19px}.skippr\\:size-\\[20px\\]{width:20px;height:20px}.skippr\\:size-\\[22px\\]{width:22px;height:22px}.skippr\\:size-\\[26px\\]{width:26px;height:26px}.skippr\\:size-\\[28px\\]{width:28px;height:28px}.skippr\\:size-\\[30px\\]{width:30px;height:30px}.skippr\\:size-\\[32px\\]{width:32px;height:32px}.skippr\\:size-\\[34px\\]{width:34px;height:34px}.skippr\\:size-\\[38px\\]{width:38px;height:38px}.skippr\\:size-\\[46px\\]{width:46px;height:46px}.skippr\\:size-full{width:100%;height:100%}.skippr\\:h-0{height:calc(var(--skippr-spacing)*0)}.skippr\\:h-1{height:calc(var(--skippr-spacing)*1)}.skippr\\:h-1\\.5{height:calc(var(--skippr-spacing)*1.5)}.skippr\\:h-2{height:calc(var(--skippr-spacing)*2)}.skippr\\:h-3{height:calc(var(--skippr-spacing)*3)}.skippr\\:h-3\\.5{height:calc(var(--skippr-spacing)*3.5)}.skippr\\:h-5{height:calc(var(--skippr-spacing)*5)}.skippr\\:h-6{height:calc(var(--skippr-spacing)*6)}.skippr\\:h-7{height:calc(var(--skippr-spacing)*7)}.skippr\\:h-8{height:calc(var(--skippr-spacing)*8)}.skippr\\:h-9{height:calc(var(--skippr-spacing)*9)}.skippr\\:h-10{height:calc(var(--skippr-spacing)*10)}.skippr\\:h-\\[5px\\]{height:5px}.skippr\\:h-\\[11px\\]{height:11px}.skippr\\:h-\\[14px\\]{height:14px}.skippr\\:h-\\[16px\\]{height:16px}.skippr\\:h-\\[18\\.5px\\]{height:18.5px}.skippr\\:h-\\[18px\\]{height:18px}.skippr\\:h-\\[22px\\]{height:22px}.skippr\\:h-\\[24px\\]{height:24px}.skippr\\:h-\\[26px\\]{height:26px}.skippr\\:h-\\[36px\\]{height:36px}.skippr\\:h-\\[38px\\]{height:38px}.skippr\\:h-\\[48px\\]{height:48px}.skippr\\:h-\\[54px\\]{height:54px}.skippr\\:h-full{height:100%}.skippr\\:h-px{height:1px}.skippr\\:max-h-\\[132px\\]{max-height:132px}.skippr\\:min-h-0{min-height:calc(var(--skippr-spacing)*0)}.skippr\\:min-h-11{min-height:calc(var(--skippr-spacing)*11)}.skippr\\:min-h-\\[16px\\]{min-height:16px}.skippr\\:w-0{width:calc(var(--skippr-spacing)*0)}.skippr\\:w-3\\.5{width:calc(var(--skippr-spacing)*3.5)}.skippr\\:w-5{width:calc(var(--skippr-spacing)*5)}.skippr\\:w-6{width:calc(var(--skippr-spacing)*6)}.skippr\\:w-7{width:calc(var(--skippr-spacing)*7)}.skippr\\:w-10{width:calc(var(--skippr-spacing)*10)}.skippr\\:w-40{width:calc(var(--skippr-spacing)*40)}.skippr\\:w-\\[2\\.5px\\]{width:2.5px}.skippr\\:w-\\[2px\\]{width:2px}.skippr\\:w-\\[3px\\]{width:3px}.skippr\\:w-\\[9px\\]{width:9px}.skippr\\:w-\\[14px\\]{width:14px}.skippr\\:w-\\[15\\.4px\\]{width:15.4px}.skippr\\:w-\\[15px\\]{width:15px}.skippr\\:w-\\[16px\\]{width:16px}.skippr\\:w-\\[22px\\]{width:22px}.skippr\\:w-\\[36px\\]{width:36px}.skippr\\:w-\\[38px\\]{width:38px}.skippr\\:w-\\[50px\\]{width:50px}.skippr\\:w-\\[120px\\]{width:120px}.skippr\\:w-\\[148px\\]{width:148px}.skippr\\:w-\\[150px\\]{width:150px}.skippr\\:w-\\[156px\\]{width:156px}.skippr\\:w-\\[220px\\]{width:220px}.skippr\\:w-\\[225px\\]{width:225px}.skippr\\:w-\\[240px\\]{width:240px}.skippr\\:w-\\[255px\\]{width:255px}.skippr\\:w-\\[320px\\]{width:320px}.skippr\\:w-fit{width:fit-content}.skippr\\:w-full{width:100%}.skippr\\:w-px{width:1px}.skippr\\:max-w-64{max-width:calc(var(--skippr-spacing)*64)}.skippr\\:max-w-72{max-width:calc(var(--skippr-spacing)*72)}.skippr\\:max-w-\\[80\\%\\]{max-width:80%}.skippr\\:max-w-\\[280px\\]{max-width:280px}.skippr\\:min-w-0{min-width:calc(var(--skippr-spacing)*0)}.skippr\\:min-w-11{min-width:calc(var(--skippr-spacing)*11)}.skippr\\:min-w-\\[96px\\]{min-width:96px}.skippr\\:flex-1{flex:1}.skippr\\:shrink-0{flex-shrink:0}.skippr\\:origin-bottom{transform-origin:bottom}.skippr\\:origin-bottom-left{transform-origin:0 100%}.skippr\\:origin-bottom-right{transform-origin:100% 100%}.skippr\\:origin-center{transform-origin:50%}.skippr\\:origin-left{transform-origin:0}.skippr\\:origin-right{transform-origin:100%}.skippr\\:origin-top{transform-origin:top}.skippr\\:origin-top-left{transform-origin:0 0}.skippr\\:origin-top-right{transform-origin:100% 0}.skippr\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-x-3{--tw-translate-x:calc(var(--skippr-spacing)*-3);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-x-7{--tw-translate-x:calc(var(--skippr-spacing)*-7);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:translate-x-3{--tw-translate-x:calc(var(--skippr-spacing)*3);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:translate-x-7{--tw-translate-x:calc(var(--skippr-spacing)*7);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:-translate-y-\\[4px\\]{--tw-translate-y:calc(4px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:scale-\\[0\\.94\\]{scale:.94}.skippr\\:-rotate-90{rotate:-90deg}.skippr\\:rotate-45{rotate:45deg}.skippr\\:rotate-\\[225deg\\]{rotate:225deg}.skippr\\:\\[animation\\:skippr-agent-in_200ms_ease-out\\]{animation:.2s ease-out skippr-agent-in}.skippr\\:\\[animation\\:skippr-agent-in_200ms_ease-out_240ms_both\\]{animation:.2s ease-out .24s both skippr-agent-in}.skippr\\:\\[animation\\:skippr-banner-look_2\\.4s_ease-in-out_infinite\\]{animation:2.4s ease-in-out infinite skippr-banner-look}.skippr\\:\\[animation\\:skippr-block-reveal_320ms_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.32s cubic-bezier(.22,1,.36,1) skippr-block-reveal}.skippr\\:\\[animation\\:skippr-breathe_1\\.1s_ease-in-out_0\\.18s_infinite\\]{animation:1.1s ease-in-out .18s infinite skippr-breathe}.skippr\\:\\[animation\\:skippr-breathe_1\\.1s_ease-in-out_0\\.36s_infinite\\]{animation:1.1s ease-in-out .36s infinite skippr-breathe}.skippr\\:\\[animation\\:skippr-breathe_1\\.1s_ease-in-out_0s_infinite\\]{animation:1.1s ease-in-out infinite skippr-breathe}.skippr\\:\\[animation\\:skippr-evaporate_3\\.2s_ease-in_forwards\\]{animation:3.2s ease-in forwards skippr-evaporate}.skippr\\:\\[animation\\:skippr-fade-in_0\\.2s_ease\\]{animation:.2s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.16s_ease\\]{animation:.16s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.22s_ease\\]{animation:.22s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.24s_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.24s cubic-bezier(.22,1,.36,1) skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-in_0\\.25s_ease\\]{animation:.25s skippr-fade-in}.skippr\\:\\[animation\\:skippr-fade-out_0\\.18s_ease-in_forwards\\]{animation:.18s ease-in forwards skippr-fade-out}.skippr\\:\\[animation\\:skippr-finger-tap_1\\.1s_ease-in-out_infinite\\]{animation:1.1s ease-in-out infinite skippr-finger-tap}.skippr\\:\\[animation\\:skippr-mote-rise_1\\.6s_ease-out_infinite\\]{animation:1.6s ease-out infinite skippr-mote-rise}.skippr\\:\\[animation\\:skippr-orb-in_320ms_cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)\\]{animation:.32s cubic-bezier(.34,1.3,.64,1) skippr-orb-in}.skippr\\:\\[animation\\:skippr-pop_0\\.2s_ease\\]{animation:.2s skippr-pop}.skippr\\:\\[animation\\:skippr-stage-fade_240ms_ease-out\\]{animation:.24s ease-out skippr-stage-fade}.skippr\\:\\[animation\\:skippr-tip-in_360ms_cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)\\]{animation:.36s cubic-bezier(.34,1.3,.64,1) skippr-tip-in}.skippr\\:\\[animation\\:skippr-tip-in_360ms_cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)_backwards\\]{animation:.36s cubic-bezier(.34,1.3,.64,1) backwards skippr-tip-in}.skippr\\:\\[animation\\:skippr-toolset-pop_280ms_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.28s cubic-bezier(.22,1,.36,1) skippr-toolset-pop}.skippr\\:\\[animation\\:skippr-toolset-pop_440ms_cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{animation:.44s cubic-bezier(.22,1,.36,1) skippr-toolset-pop}.skippr\\:animate-\\[skippr-banner-look_2\\.4s_ease-in-out_infinite\\]{animation:2.4s ease-in-out infinite skippr-banner-look}.skippr\\:animate-\\[skippr-bubble-in_0\\.28s_ease-out\\]{animation:.28s ease-out skippr-bubble-in}.skippr\\:animate-\\[skippr-fade-in_0\\.3s_ease-out\\]{animation:.3s ease-out skippr-fade-in}.skippr\\:animate-\\[skippr-pill-content_0\\.22s_ease-out\\]{animation:.22s ease-out skippr-pill-content}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.3s_infinite\\]{animation:1.1s ease-in-out .3s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.6s_infinite\\]{animation:1.1s ease-in-out .6s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.15s_infinite\\]{animation:1.1s ease-in-out .15s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_0\\.45s_infinite\\]{animation:1.1s ease-in-out .45s infinite skippr-speak}.skippr\\:animate-\\[skippr-speak_1\\.1s_ease-in-out_infinite\\]{animation:1.1s ease-in-out infinite skippr-speak}.skippr\\:animate-bounce{animation:var(--skippr-animate-bounce)}.skippr\\:animate-ping{animation:var(--skippr-animate-ping)}.skippr\\:animate-skippr-annotation-pulse{animation:1.8s ease-in-out infinite skippr-annotation-pulse}.skippr\\:animate-skippr-click-ping{animation:.5s ease-out forwards skippr-click-ping}.skippr\\:animate-skippr-cursor-pop{animation:.22s ease-out skippr-cursor-pop}.skippr\\:animate-skippr-flow{animation:3.6s linear infinite skippr-flow}.skippr\\:animate-skippr-press{animation:.5s ease-in-out skippr-press}.skippr\\:animate-skippr-ptt-transmit{animation:1.4s ease-out infinite skippr-ptt-transmit}.skippr\\:animate-skippr-rec-ring{animation:2s ease-out infinite skippr-rec-ring}.skippr\\:animate-skippr-tab-fade{animation:.2s ease-out skippr-tab-fade}.skippr\\:animate-skippr-thinking-dot{animation:1.2s ease-in-out infinite skippr-thinking-dot}.skippr\\:animate-skippr-voice-pulse{animation:1.6s ease-out infinite skippr-voice-pulse}.skippr\\:animate-spin{animation:var(--skippr-animate-spin)}.skippr\\:cursor-default{cursor:default}.skippr\\:cursor-grab{cursor:grab}.skippr\\:cursor-not-allowed{cursor:not-allowed}.skippr\\:cursor-pointer{cursor:pointer}.skippr\\:touch-none{touch-action:none}.skippr\\:resize-none{resize:none}.skippr\\:flex-col{flex-direction:column}.skippr\\:flex-col-reverse{flex-direction:column-reverse}.skippr\\:flex-row{flex-direction:row}.skippr\\:flex-row-reverse{flex-direction:row-reverse}.skippr\\:items-baseline{align-items:baseline}.skippr\\:items-center{align-items:center}.skippr\\:items-end{align-items:flex-end}.skippr\\:items-start{align-items:flex-start}.skippr\\:justify-between{justify-content:space-between}.skippr\\:justify-center{justify-content:center}.skippr\\:justify-end{justify-content:flex-end}.skippr\\:justify-start{justify-content:flex-start}.skippr\\:gap-0\\.5{gap:calc(var(--skippr-spacing)*.5)}.skippr\\:gap-1{gap:calc(var(--skippr-spacing)*1)}.skippr\\:gap-1\\.5{gap:calc(var(--skippr-spacing)*1.5)}.skippr\\:gap-2{gap:calc(var(--skippr-spacing)*2)}.skippr\\:gap-2\\.5{gap:calc(var(--skippr-spacing)*2.5)}.skippr\\:gap-3{gap:calc(var(--skippr-spacing)*3)}.skippr\\:gap-\\[1px\\]{gap:1px}.skippr\\:gap-\\[2px\\]{gap:2px}.skippr\\:gap-\\[3px\\]{gap:3px}.skippr\\:gap-\\[4px\\]{gap:4px}.skippr\\:gap-\\[5px\\]{gap:5px}.skippr\\:gap-\\[6px\\]{gap:6px}.skippr\\:gap-\\[7px\\]{gap:7px}.skippr\\:gap-\\[8px\\]{gap:8px}.skippr\\:gap-\\[9px\\]{gap:9px}.skippr\\:gap-\\[10px\\]{gap:10px}.skippr\\:gap-\\[14px\\]{gap:14px}.skippr\\:gap-px{gap:1px}:where(.skippr\\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.skippr\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.skippr\\:space-y-\\[6px\\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(6px*var(--tw-space-y-reverse));margin-block-end:calc(6px*calc(1 - var(--tw-space-y-reverse)))}.skippr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.skippr\\:overflow-hidden{overflow:hidden}.skippr\\:overflow-visible{overflow:visible}.skippr\\:overflow-y-auto{overflow-y:auto}.skippr\\:overscroll-contain{overscroll-behavior:contain}.skippr\\:rounded{border-radius:.25rem}.skippr\\:rounded-2xl{border-radius:1.125rem}.skippr\\:rounded-\\[1rem\\]{border-radius:1rem}.skippr\\:rounded-\\[4px\\]{border-radius:4px}.skippr\\:rounded-\\[5px\\]{border-radius:5px}.skippr\\:rounded-\\[10px\\]{border-radius:10px}.skippr\\:rounded-\\[11px\\]{border-radius:11px}.skippr\\:rounded-\\[12px\\]{border-radius:12px}.skippr\\:rounded-\\[14px\\]{border-radius:14px}.skippr\\:rounded-\\[16px\\]{border-radius:16px}.skippr\\:rounded-\\[20px\\]{border-radius:20px}.skippr\\:rounded-full{border-radius:3.40282e38px}.skippr\\:rounded-md{border-radius:.5rem}.skippr\\:rounded-sm{border-radius:.375rem}.skippr\\:rounded-xl{border-radius:.875rem}.skippr\\:rounded-t-\\[6px\\]{border-top-left-radius:6px;border-top-right-radius:6px}.skippr\\:rounded-t-\\[18px\\]{border-top-left-radius:18px;border-top-right-radius:18px}.skippr\\:rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.skippr\\:rounded-l-\\[6px\\]{border-top-left-radius:6px;border-bottom-left-radius:6px}.skippr\\:rounded-l-\\[18px\\]{border-top-left-radius:18px;border-bottom-left-radius:18px}.skippr\\:rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.skippr\\:rounded-tl-\\[6px\\]{border-top-left-radius:6px}.skippr\\:rounded-tl-md{border-top-left-radius:.5rem}.skippr\\:rounded-r-\\[6px\\]{border-top-right-radius:6px;border-bottom-right-radius:6px}.skippr\\:rounded-r-\\[18px\\]{border-top-right-radius:18px;border-bottom-right-radius:18px}.skippr\\:rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.skippr\\:rounded-tr-\\[6px\\]{border-top-right-radius:6px}.skippr\\:rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.skippr\\:rounded-b-\\[18px\\]{border-bottom-right-radius:18px;border-bottom-left-radius:18px}.skippr\\:rounded-b-full{border-bottom-right-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.skippr\\:rounded-bl-\\[6px\\]{border-bottom-left-radius:6px}.skippr\\:border{border-style:var(--tw-border-style);border-width:1px}.skippr\\:border-0{border-style:var(--tw-border-style);border-width:0}.skippr\\:border-2{border-style:var(--tw-border-style);border-width:2px}.skippr\\:border-\\[2\\.5px\\]{border-style:var(--tw-border-style);border-width:2.5px}.skippr\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.skippr\\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.skippr\\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.skippr\\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.skippr\\:border-none{--tw-border-style:none;border-style:none}.skippr\\:border-\\[\\#d8d3ca\\]{border-color:#d8d3ca}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.1\\)\\]{border-color:#2d2d3f1a}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.06\\)\\]{border-color:#2d2d3f0f}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.08\\)\\]{border-color:#2d2d3f14}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.12\\)\\]{border-color:#2d2d3f1f}.skippr\\:border-\\[rgba\\(45\\,45\\,63\\,0\\.14\\)\\]{border-color:#2d2d3f24}.skippr\\:border-\\[var\\(--skippr-brand-ring\\)\\]{border-color:var(--skippr-brand-ring)}.skippr\\:border-black\\/25{border-color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:border-black\\/25{border-color:color-mix(in oklab,var(--skippr-color-black)25%,transparent)}}.skippr\\:border-border{border-color:oklch(92.3% .003 48.717)}.skippr\\:border-brand{border-color:var(--skippr-brand,#2bc0ae)}.skippr\\:border-input{border-color:oklch(92.3% .003 48.717)}.skippr\\:border-primary\\/20{border-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:border-primary\\/20{border-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)20%,transparent)}}.skippr\\:border-transparent{border-color:#0000}.skippr\\:border-white,.skippr\\:border-white\\/30{border-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:border-white\\/30{border-color:color-mix(in oklab,var(--skippr-color-white)30%,transparent)}}.skippr\\:border-t-brand{border-top-color:var(--skippr-brand,#2bc0ae)}.skippr\\:border-t-white{border-top-color:var(--skippr-color-white)}.skippr\\:border-r-border{border-right-color:oklch(92.3% .003 48.717)}.skippr\\:border-l-border{border-left-color:oklch(92.3% .003 48.717)}.skippr\\:bg-\\[\\#2D2D3F\\]{background-color:#2d2d3f}.skippr\\:bg-\\[\\#F1EFEA\\]{background-color:#f1efea}.skippr\\:bg-\\[\\#b9b4ab\\]{background-color:#b9b4ab}.skippr\\:bg-\\[\\#dc2626\\]{background-color:#dc2626}.skippr\\:bg-\\[\\#eeeae4\\]{background-color:#eeeae4}.skippr\\:bg-\\[\\#f2f0eb\\]{background-color:#f2f0eb}.skippr\\:bg-\\[\\#f4ecd8\\]{background-color:#f4ecd8}.skippr\\:bg-\\[\\#f4f2ee\\]{background-color:#f4f2ee}.skippr\\:bg-\\[rgba\\(45\\,45\\,63\\,0\\.03\\)\\]{background-color:#2d2d3f08}.skippr\\:bg-amber-50{background-color:var(--skippr-color-amber-50)}.skippr\\:bg-amber-400{background-color:var(--skippr-color-amber-400)}.skippr\\:bg-background{background-color:oklch(100% 0 0)}.skippr\\:bg-black\\/\\[0\\.07\\]{background-color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-black\\/\\[0\\.07\\]{background-color:color-mix(in oklab,var(--skippr-color-black)7.0%,transparent)}}.skippr\\:bg-brand,.skippr\\:bg-brand\\/50{background-color:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-brand\\/50{background-color:color-mix(in oklab,var(--skippr-brand,#2bc0ae)50%,transparent)}}.skippr\\:bg-bubble{background-color:#2d2b3d}.skippr\\:bg-bubble\\/95{background-color:oklab(29.9244% .0107414 -.0305411/.95)}.skippr\\:bg-card{background-color:oklch(100% 0 0)}.skippr\\:bg-current{background-color:currentColor}.skippr\\:bg-destructive{background-color:#d94f4f}.skippr\\:bg-emerald-400{background-color:var(--skippr-color-emerald-400)}.skippr\\:bg-foreground{background-color:oklch(14.7% .004 49.25)}.skippr\\:bg-foreground\\/10{background-color:oklab(14.7% .00261104 .00303026/.1)}.skippr\\:bg-launcher{background-color:#2d2d3f}.skippr\\:bg-muted-foreground\\/40{background-color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:bg-neutral-100{background-color:var(--skippr-color-neutral-100)}.skippr\\:bg-primary,.skippr\\:bg-primary\\/10{background-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-primary\\/10{background-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)10%,transparent)}}.skippr\\:bg-red-50{background-color:var(--skippr-color-red-50)}.skippr\\:bg-red-100{background-color:var(--skippr-color-red-100)}.skippr\\:bg-red-500{background-color:var(--skippr-color-red-500)}.skippr\\:bg-secondary{background-color:#ffdfb5}.skippr\\:bg-transparent{background-color:#0000}.skippr\\:bg-white,.skippr\\:bg-white\\/70{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/70{background-color:color-mix(in oklab,var(--skippr-color-white)70%,transparent)}}.skippr\\:bg-white\\/80{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/80{background-color:color-mix(in oklab,var(--skippr-color-white)80%,transparent)}}.skippr\\:bg-white\\/95{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/95{background-color:color-mix(in oklab,var(--skippr-color-white)95%,transparent)}}.skippr\\:fill-brand{fill:var(--skippr-brand,#2bc0ae)}.skippr\\:fill-current{fill:currentColor}.skippr\\:fill-primary\\/30{fill:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:fill-primary\\/30{fill:color-mix(in oklab,var(--skippr-brand,#2d2b3d)30%,transparent)}}.skippr\\:fill-white{fill:var(--skippr-color-white)}.skippr\\:stroke-black\\/15{stroke:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:stroke-black\\/15{stroke:color-mix(in oklab,var(--skippr-color-black)15%,transparent)}}.skippr\\:stroke-bubble{stroke:#2d2b3d}.skippr\\:object-contain{object-fit:contain}.skippr\\:object-cover{object-fit:cover}.skippr\\:p-0{padding:calc(var(--skippr-spacing)*0)}.skippr\\:p-1\\.5{padding:calc(var(--skippr-spacing)*1.5)}.skippr\\:p-2{padding:calc(var(--skippr-spacing)*2)}.skippr\\:p-3{padding:calc(var(--skippr-spacing)*3)}.skippr\\:p-3\\.5{padding:calc(var(--skippr-spacing)*3.5)}.skippr\\:p-4{padding:calc(var(--skippr-spacing)*4)}.skippr\\:p-\\[2px\\]{padding:2px}.skippr\\:p-\\[3px\\]{padding:3px}.skippr\\:p-\\[9px\\]{padding:9px}.skippr\\:p-\\[14px\\]{padding:14px}.skippr\\:px-1{padding-inline:calc(var(--skippr-spacing)*1)}.skippr\\:px-1\\.5{padding-inline:calc(var(--skippr-spacing)*1.5)}.skippr\\:px-2{padding-inline:calc(var(--skippr-spacing)*2)}.skippr\\:px-2\\.5{padding-inline:calc(var(--skippr-spacing)*2.5)}.skippr\\:px-3{padding-inline:calc(var(--skippr-spacing)*3)}.skippr\\:px-3\\.5{padding-inline:calc(var(--skippr-spacing)*3.5)}.skippr\\:px-4{padding-inline:calc(var(--skippr-spacing)*4)}.skippr\\:px-5{padding-inline:calc(var(--skippr-spacing)*5)}.skippr\\:px-6{padding-inline:calc(var(--skippr-spacing)*6)}.skippr\\:px-8{padding-inline:calc(var(--skippr-spacing)*8)}.skippr\\:px-\\[5px\\]{padding-inline:5px}.skippr\\:px-\\[7px\\]{padding-inline:7px}.skippr\\:px-\\[9px\\]{padding-inline:9px}.skippr\\:px-\\[10px\\]{padding-inline:10px}.skippr\\:px-\\[11px\\]{padding-inline:11px}.skippr\\:px-\\[12px\\]{padding-inline:12px}.skippr\\:px-\\[18px\\]{padding-inline:18px}.skippr\\:px-\\[22px\\]{padding-inline:22px}.skippr\\:py-0\\.5{padding-block:calc(var(--skippr-spacing)*.5)}.skippr\\:py-1{padding-block:calc(var(--skippr-spacing)*1)}.skippr\\:py-1\\.5{padding-block:calc(var(--skippr-spacing)*1.5)}.skippr\\:py-2{padding-block:calc(var(--skippr-spacing)*2)}.skippr\\:py-2\\.5{padding-block:calc(var(--skippr-spacing)*2.5)}.skippr\\:py-3{padding-block:calc(var(--skippr-spacing)*3)}.skippr\\:py-4{padding-block:calc(var(--skippr-spacing)*4)}.skippr\\:py-6{padding-block:calc(var(--skippr-spacing)*6)}.skippr\\:py-\\[1px\\]{padding-block:1px}.skippr\\:py-\\[3px\\]{padding-block:3px}.skippr\\:py-\\[4px\\]{padding-block:4px}.skippr\\:py-\\[5px\\]{padding-block:5px}.skippr\\:py-\\[6px\\]{padding-block:6px}.skippr\\:py-\\[7px\\]{padding-block:7px}.skippr\\:py-\\[13px\\]{padding-block:13px}.skippr\\:pt-1{padding-top:calc(var(--skippr-spacing)*1)}.skippr\\:pt-5{padding-top:calc(var(--skippr-spacing)*5)}.skippr\\:pt-\\[8px\\]{padding-top:8px}.skippr\\:pt-\\[9px\\]{padding-top:9px}.skippr\\:pt-\\[10px\\]{padding-top:10px}.skippr\\:pt-\\[18px\\]{padding-top:18px}.skippr\\:pt-\\[22px\\]{padding-top:22px}.skippr\\:pr-2\\.5{padding-right:calc(var(--skippr-spacing)*2.5)}.skippr\\:pr-3{padding-right:calc(var(--skippr-spacing)*3)}.skippr\\:pr-\\[5px\\]{padding-right:5px}.skippr\\:pr-\\[6px\\]{padding-right:6px}.skippr\\:pr-\\[9px\\]{padding-right:9px}.skippr\\:pr-\\[10px\\]{padding-right:10px}.skippr\\:pb-0\\.5{padding-bottom:calc(var(--skippr-spacing)*.5)}.skippr\\:pb-1{padding-bottom:calc(var(--skippr-spacing)*1)}.skippr\\:pb-4{padding-bottom:calc(var(--skippr-spacing)*4)}.skippr\\:pb-\\[8px\\]{padding-bottom:8px}.skippr\\:pb-\\[10px\\]{padding-bottom:10px}.skippr\\:pb-\\[22px\\]{padding-bottom:22px}.skippr\\:pl-1\\.5{padding-left:calc(var(--skippr-spacing)*1.5)}.skippr\\:pl-2\\.5{padding-left:calc(var(--skippr-spacing)*2.5)}.skippr\\:pl-3\\.5{padding-left:calc(var(--skippr-spacing)*3.5)}.skippr\\:pl-\\[9px\\]{padding-left:9px}.skippr\\:pl-\\[13px\\]{padding-left:13px}.skippr\\:text-center{text-align:center}.skippr\\:text-left{text-align:left}.skippr\\:font-mono{font-family:var(--skippr-font-mono)}.skippr\\:text-sm{font-size:var(--skippr-text-sm);line-height:var(--tw-leading,var(--skippr-text-sm--line-height))}.skippr\\:text-xs{font-size:var(--skippr-text-xs);line-height:var(--tw-leading,var(--skippr-text-xs--line-height))}.skippr\\:text-\\[8\\.5px\\]{font-size:8.5px}.skippr\\:text-\\[9\\.5px\\]{font-size:9.5px}.skippr\\:text-\\[9px\\]{font-size:9px}.skippr\\:text-\\[10\\.5px\\]{font-size:10.5px}.skippr\\:text-\\[10px\\]{font-size:10px}.skippr\\:text-\\[11\\.5px\\]{font-size:11.5px}.skippr\\:text-\\[11px\\]{font-size:11px}.skippr\\:text-\\[12\\.5px\\]{font-size:12.5px}.skippr\\:text-\\[12px\\]{font-size:12px}.skippr\\:text-\\[13px\\]{font-size:13px}.skippr\\:text-\\[14px\\]{font-size:14px}.skippr\\:text-\\[16px\\]{font-size:16px}.skippr\\:text-\\[18px\\]{font-size:18px}.skippr\\:leading-5{--tw-leading:calc(var(--skippr-spacing)*5);line-height:calc(var(--skippr-spacing)*5)}.skippr\\:leading-\\[1\\.2\\]{--tw-leading:1.2;line-height:1.2}.skippr\\:leading-\\[1\\.25\\]{--tw-leading:1.25;line-height:1.25}.skippr\\:leading-none{--tw-leading:1;line-height:1}.skippr\\:leading-relaxed{--tw-leading:var(--skippr-leading-relaxed);line-height:var(--skippr-leading-relaxed)}.skippr\\:leading-snug{--tw-leading:var(--skippr-leading-snug);line-height:var(--skippr-leading-snug)}.skippr\\:font-bold{--tw-font-weight:var(--skippr-font-weight-bold);font-weight:var(--skippr-font-weight-bold)}.skippr\\:font-medium{--tw-font-weight:var(--skippr-font-weight-medium);font-weight:var(--skippr-font-weight-medium)}.skippr\\:font-semibold{--tw-font-weight:var(--skippr-font-weight-semibold);font-weight:var(--skippr-font-weight-semibold)}.skippr\\:tracking-\\[-0\\.01em\\]{--tw-tracking:-.01em;letter-spacing:-.01em}.skippr\\:tracking-\\[-0\\.0125em\\]{--tw-tracking:-.0125em;letter-spacing:-.0125em}.skippr\\:tracking-\\[0\\.02em\\]{--tw-tracking:.02em;letter-spacing:.02em}.skippr\\:tracking-\\[0\\.05em\\]{--tw-tracking:.05em;letter-spacing:.05em}.skippr\\:whitespace-nowrap{white-space:nowrap}.skippr\\:text-\\[\\#2D2D3F\\]{color:#2d2d3f}.skippr\\:text-\\[\\#5a5650\\]{color:#5a5650}.skippr\\:text-\\[\\#5c5850\\]{color:#5c5850}.skippr\\:text-\\[\\#6b6660\\]{color:#6b6660}.skippr\\:text-\\[\\#6b6875\\]{color:#6b6875}.skippr\\:text-\\[\\#8b877f\\]{color:#8b877f}.skippr\\:text-\\[\\#92400e\\]{color:#92400e}.skippr\\:text-\\[\\#a8a49c\\]{color:#a8a49c}.skippr\\:text-\\[\\#b8b4ac\\]{color:#b8b4ac}.skippr\\:text-\\[\\#c9c5bd\\]{color:#c9c5bd}.skippr\\:text-\\[\\#cbc7bf\\]{color:#cbc7bf}.skippr\\:text-\\[\\#dc2626\\]{color:#dc2626}.skippr\\:text-\\[var\\(--skippr-brand-deep\\)\\]{color:var(--skippr-brand-deep)}.skippr\\:text-amber-700{color:var(--skippr-color-amber-700)}.skippr\\:text-amber-950{color:var(--skippr-color-amber-950)}.skippr\\:text-background{color:oklch(100% 0 0)}.skippr\\:text-black,.skippr\\:text-black\\/40{color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:text-black\\/40{color:color-mix(in oklab,var(--skippr-color-black)40%,transparent)}}.skippr\\:text-brand{color:var(--skippr-brand,#2bc0ae)}.skippr\\:text-brand-on-white{color:var(--skippr-brand-on-white,#1e8478)}.skippr\\:text-bubble{color:#2d2b3d}.skippr\\:text-chart-3{color:oklch(66.6% .179 58.318)}.skippr\\:text-destructive{color:#d94f4f}.skippr\\:text-foreground{color:oklch(14.7% .004 49.25)}.skippr\\:text-muted-foreground{color:oklch(55.3% .013 58.071)}.skippr\\:text-muted-foreground\\/30{color:oklab(55.3% .00687528 .0110332/.3)}.skippr\\:text-muted-foreground\\/60{color:oklab(55.3% .00687528 .0110332/.6)}.skippr\\:text-neutral-500{color:var(--skippr-color-neutral-500)}.skippr\\:text-neutral-700{color:var(--skippr-color-neutral-700)}.skippr\\:text-primary{color:var(--skippr-brand,#2d2b3d)}.skippr\\:text-primary-foreground{color:var(--skippr-brand-foreground,#fff)}.skippr\\:text-red-400{color:var(--skippr-color-red-400)}.skippr\\:text-red-600{color:var(--skippr-color-red-600)}.skippr\\:text-red-700{color:var(--skippr-color-red-700)}.skippr\\:text-secondary-foreground{color:#613700}.skippr\\:text-white,.skippr\\:text-white\\/60{color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:text-white\\/60{color:color-mix(in oklab,var(--skippr-color-white)60%,transparent)}}.skippr\\:capitalize{text-transform:capitalize}.skippr\\:uppercase{text-transform:uppercase}.skippr\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.skippr\\:line-through{text-decoration-line:line-through}.skippr\\:underline{text-decoration-line:underline}.skippr\\:decoration-muted-foreground\\/40{text-decoration-color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:underline-offset-2,.skippr\\:underline-offset-\\[2px\\]{text-underline-offset:2px}.skippr\\:placeholder-muted-foreground::placeholder{color:oklch(55.3% .013 58.071)}.skippr\\:opacity-0{opacity:0}.skippr\\:opacity-40{opacity:.4}.skippr\\:opacity-75{opacity:.75}.skippr\\:opacity-85{opacity:.85}.skippr\\:opacity-100{opacity:1}.skippr\\:shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[-3px_0_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:-3px 0 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[-4px_6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:-4px 6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[-6px_8px_30px_rgba\\(15\\,18\\,26\\,0\\.32\\)\\]{--tw-shadow:-6px 8px 30px var(--tw-shadow-color,#0f121a52);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_-3px_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:0 -3px 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_-6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:0 -6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_0_0_1\\.5px_rgba\\(255\\,255\\,255\\,0\\.85\\)\\]{--tw-shadow:0 0 0 1.5px var(--tw-shadow-color,#ffffffd9);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_0_0_1px_rgba\\(45\\,45\\,63\\,0\\.10\\)\\,0_1px_2px_rgba\\(45\\,45\\,63\\,0\\.04\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#2d2d3f1a),0 1px 2px var(--tw-shadow-color,#2d2d3f0a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_0_0_4px_var\\(--skippr-brand-ring\\)\\]{--tw-shadow:0 0 0 4px var(--tw-shadow-color,var(--skippr-brand-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_1px_2px_rgba\\(45\\,45\\,63\\,0\\.05\\)\\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#2d2d3f0d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_1px_2px_rgba\\(45\\,45\\,63\\,0\\.08\\)\\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#2d2d3f14);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_2px_6px_rgba\\(0\\,0\\,0\\,0\\.28\\)\\]{--tw-shadow:0 2px 6px var(--tw-shadow-color,#00000047);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\]{--tw-shadow:0 2px 6px var(--tw-shadow-color,#2d2d3f24);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_3px_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:0 3px 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_12px_rgba\\(45\\,45\\,63\\,0\\.1\\)\\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#2d2d3f1a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_14px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\]{--tw-shadow:0 4px 14px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_14px_rgba\\(239\\,68\\,68\\,0\\.45\\)\\]{--tw-shadow:0 4px 14px var(--tw-shadow-color,#ef444473);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_4px_16px_rgba\\(45\\,43\\,61\\,0\\.45\\)\\,0_2px_4px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#2d2b3d73),0 2px 4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_6px_16px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\]{--tw-shadow:0 6px 16px var(--tw-shadow-color,#2d2d3f24);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:0 6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_22px_rgba\\(45\\,45\\,63\\,0\\.12\\)\\,0_1px_3px_rgba\\(45\\,45\\,63\\,0\\.04\\)\\]{--tw-shadow:0 8px 22px var(--tw-shadow-color,#2d2d3f1f),0 1px 3px var(--tw-shadow-color,#2d2d3f0a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_24px_rgba\\(0\\,0\\,0\\,0\\.18\\)\\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_24px_rgba\\(45\\,43\\,61\\,0\\.35\\)\\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#2d2b3d59);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_8px_30px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\,0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.06\\)\\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#2d2d3f24),0 2px 6px var(--tw-shadow-color,#2d2d3f0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_26px_rgba\\(45\\,45\\,63\\,0\\.13\\)\\,0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.05\\)\\]{--tw-shadow:0 10px 26px var(--tw-shadow-color,#2d2d3f21),0 2px 6px var(--tw-shadow-color,#2d2d3f0d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_28px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:0 10px 28px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_30px_rgba\\(45\\,45\\,63\\,0\\.14\\)\\,0_0_0_1\\.5px_var\\(--skippr-brand-ring\\)\\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#2d2d3f24),0 0 0 1.5px var(--tw-shadow-color,var(--skippr-brand-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_10px_32px_rgba\\(0\\,0\\,0\\,0\\.18\\)\\]{--tw-shadow:0 10px 32px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[0_14px_34px_rgba\\(45\\,45\\,63\\,0\\.15\\)\\,0_2px_6px_rgba\\(45\\,45\\,63\\,0\\.06\\)\\]{--tw-shadow:0 14px 34px var(--tw-shadow-color,#2d2d3f26),0 2px 6px var(--tw-shadow-color,#2d2d3f0f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[3px_0_14px_var\\(--skippr-brand-halo\\)\\]{--tw-shadow:3px 0 14px var(--tw-shadow-color,var(--skippr-brand-halo));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[4px_6px_18px_rgba\\(45\\,45\\,63\\,0\\.16\\)\\]{--tw-shadow:4px 6px 18px var(--tw-shadow-color,#2d2d3f29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-\\[inset_0_0_0_1\\.5px_var\\(--skippr-brand\\,\\#2bc0ae\\)\\]{--tw-shadow:inset 0 0 0 1.5px var(--tw-shadow-color,var(--skippr-brand,#2bc0ae));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:ring-black\\/5{--tw-ring-color:var(--skippr-color-black)}@supports (color:color-mix(in lab, red, red)){.skippr\\:ring-black\\/5{--tw-ring-color:color-mix(in oklab,var(--skippr-color-black)5%,transparent)}}.skippr\\:ring-brand{--tw-ring-color:var(--skippr-brand,#2bc0ae)}.skippr\\:ring-white\\/15{--tw-ring-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:ring-white\\/15{--tw-ring-color:color-mix(in oklab,var(--skippr-color-white)15%,transparent)}}.skippr\\:ring-offset-background{--tw-ring-offset-color:oklch(100% 0 0)}.skippr\\:drop-shadow-\\[0_2px_5px_rgba\\(0\\,0\\,0\\,0\\.4\\)\\]{--tw-drop-shadow-size:drop-shadow(0 2px 5px var(--tw-drop-shadow-color,#0006));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.skippr\\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--skippr-blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.skippr\\:transition-\\[filter\\]{transition-property:filter;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[gap\\]{transition-property:gap;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[height\\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[left\\]{transition-property:left;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[opacity\\,color\\]{transition-property:opacity,color;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[opacity\\,transform\\,height\\]{transition-property:opacity,transform,height;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[width\\,height\\,background-color\\,border-color\\]{transition-property:width,height,background-color,border-color;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[width\\,margin\\]{transition-property:width,margin;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--skippr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--skippr-default-transition-duration))}.skippr\\:duration-75{--tw-duration:75ms;transition-duration:75ms}.skippr\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.skippr\\:duration-150{--tw-duration:.15s;transition-duration:.15s}.skippr\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.skippr\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.skippr\\:duration-\\[400ms\\]{--tw-duration:.4s;transition-duration:.4s}.skippr\\:ease-\\[cubic-bezier\\(0\\.22\\,1\\,0\\.36\\,1\\)\\]{--tw-ease:cubic-bezier(.22,1,.36,1);transition-timing-function:cubic-bezier(.22,1,.36,1)}.skippr\\:ease-\\[cubic-bezier\\(0\\.34\\,1\\.3\\,0\\.64\\,1\\)\\]{--tw-ease:cubic-bezier(.34,1.3,.64,1);transition-timing-function:cubic-bezier(.34,1.3,.64,1)}.skippr\\:ease-\\[cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\]{--tw-ease:cubic-bezier(.34,1.56,.64,1);transition-timing-function:cubic-bezier(.34,1.56,.64,1)}.skippr\\:ease-in-out{--tw-ease:var(--skippr-ease-in-out);transition-timing-function:var(--skippr-ease-in-out)}.skippr\\:ease-out{--tw-ease:var(--skippr-ease-out);transition-timing-function:var(--skippr-ease-out)}.skippr\\:outline-none{--tw-outline-style:none;outline-style:none}.skippr\\:select-none{-webkit-user-select:none;user-select:none}.skippr\\:select-text{-webkit-user-select:text;user-select:text}.skippr\\:\\[animation-delay\\:0ms\\]{animation-delay:0s}.skippr\\:\\[animation-delay\\:150ms\\]{animation-delay:.15s}.skippr\\:\\[animation-delay\\:200ms\\]{animation-delay:.2s}.skippr\\:\\[animation-delay\\:300ms\\]{animation-delay:.3s}.skippr\\:\\[animation-delay\\:400ms\\]{animation-delay:.4s}.skippr\\:\\[overflow-anchor\\:none\\]{overflow-anchor:none}.skippr\\:group-focus-within\\:scale-100:is(:where(.skippr\\:group):focus-within *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:group-focus-within\\:opacity-100:is(:where(.skippr\\:group):focus-within *){opacity:1}@media (hover:hover){.skippr\\:group-hover\\:scale-100:is(:where(.skippr\\:group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:group-hover\\:text-red-300:is(:where(.skippr\\:group):hover *){color:var(--skippr-color-red-300)}.skippr\\:group-hover\\:text-white\\/80:is(:where(.skippr\\:group):hover *){color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:group-hover\\:text-white\\/80:is(:where(.skippr\\:group):hover *){color:color-mix(in oklab,var(--skippr-color-white)80%,transparent)}}.skippr\\:group-hover\\:opacity-100:is(:where(.skippr\\:group):hover *){opacity:1}}.skippr\\:placeholder\\:text-\\[\\#b0aca4\\]::placeholder{color:#b0aca4}.skippr\\:first\\:mt-0:first-child{margin-top:calc(var(--skippr-spacing)*0)}@media (hover:hover){.skippr\\:hover\\:-translate-y-0\\.5:hover{--tw-translate-y:calc(var(--skippr-spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:hover\\:bg-\\[\\#3a384b\\]:hover{background-color:#3a384b}.skippr\\:hover\\:bg-\\[\\#3d3d52\\]:hover{background-color:#3d3d52}.skippr\\:hover\\:bg-\\[\\#f2f0eb\\]:hover{background-color:#f2f0eb}.skippr\\:hover\\:bg-\\[\\#f4f2ee\\]:hover{background-color:#f4f2ee}.skippr\\:hover\\:bg-\\[\\#f6f4f0\\]:hover{background-color:#f6f4f0}.skippr\\:hover\\:bg-\\[rgba\\(45\\,45\\,63\\,0\\.04\\)\\]:hover{background-color:#2d2d3f0a}.skippr\\:hover\\:bg-accent:hover{background-color:#e7e5e4}.skippr\\:hover\\:bg-amber-100:hover{background-color:var(--skippr-color-amber-100)}.skippr\\:hover\\:bg-bubble:hover{background-color:#2d2b3d}.skippr\\:hover\\:bg-destructive\\/90:hover{background-color:oklab(61.4357% .15892 .0698893/.9)}.skippr\\:hover\\:bg-foreground\\/8:hover{background-color:oklab(14.7% .00261104 .00303026/.08)}.skippr\\:hover\\:bg-muted:hover{background-color:oklch(97% .001 106.424)}.skippr\\:hover\\:bg-neutral-100:hover{background-color:var(--skippr-color-neutral-100)}.skippr\\:hover\\:bg-neutral-200:hover{background-color:var(--skippr-color-neutral-200)}.skippr\\:hover\\:bg-primary\\/90:hover{background-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)90%,transparent)}}.skippr\\:hover\\:bg-red-200:hover{background-color:var(--skippr-color-red-200)}.skippr\\:hover\\:bg-red-600:hover{background-color:var(--skippr-color-red-600)}.skippr\\:hover\\:bg-secondary\\/80:hover{background-color:oklab(91.9963% .0175391 .0626889/.8)}.skippr\\:hover\\:bg-transparent:hover{background-color:#0000}.skippr\\:hover\\:text-\\[\\#2D2D3F\\]:hover{color:#2d2d3f}.skippr\\:hover\\:text-\\[\\#5a5650\\]:hover{color:#5a5650}.skippr\\:hover\\:text-accent-foreground:hover{color:oklch(21.6% .006 56.043)}.skippr\\:hover\\:text-destructive:hover{color:#d94f4f}.skippr\\:hover\\:text-foreground:hover{color:oklch(14.7% .004 49.25)}.skippr\\:hover\\:underline:hover{text-decoration-line:underline}.skippr\\:hover\\:decoration-muted-foreground:hover{text-decoration-color:oklch(55.3% .013 58.071)}.skippr\\:hover\\:opacity-80:hover{opacity:.8}.skippr\\:hover\\:opacity-100:hover{opacity:1}.skippr\\:hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.skippr\\:hover\\:brightness-\\[1\\.04\\]:hover{--tw-brightness:brightness(1.04);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.skippr\\:hover\\:brightness-\\[1\\.06\\]:hover{--tw-brightness:brightness(1.06);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.skippr\\:focus\\:border-primary:focus{border-color:var(--skippr-brand,#2d2b3d)}.skippr\\:focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:focus\\:ring-primary\\/30:focus{--tw-ring-color:var(--skippr-brand,#2d2b3d)}@supports (color:color-mix(in lab, red, red)){.skippr\\:focus\\:ring-primary\\/30:focus{--tw-ring-color:color-mix(in oklab,var(--skippr-brand,#2d2b3d)30%,transparent)}}.skippr\\:focus-visible\\:border-\\[var\\(--skippr-brand-ring\\)\\]:focus-visible{border-color:var(--skippr-brand-ring)}.skippr\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.skippr\\:focus-visible\\:ring-\\[var\\(--skippr-brand-ring\\)\\]:focus-visible{--tw-ring-color:var(--skippr-brand-ring)}.skippr\\:focus-visible\\:ring-bubble\\/60:focus-visible{--tw-ring-color:oklab(29.9244% .0107414 -.0305411/.6)}.skippr\\:focus-visible\\:ring-ring:focus-visible{--tw-ring-color:oklch(70.9% .01 56.259)}.skippr\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.skippr\\:focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.skippr\\:focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.skippr\\:focus-visible\\:outline-\\[var\\(--skippr-brand\\)\\]:focus-visible{outline-color:var(--skippr-brand)}.skippr\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.skippr\\:active\\:translate-y-0:active{--tw-translate-y:calc(var(--skippr-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.skippr\\:active\\:scale-\\[0\\.98\\]:active{scale:.98}.skippr\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.skippr\\:disabled\\:cursor-default:disabled{cursor:default}.skippr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.skippr\\:disabled\\:opacity-50:disabled{opacity:.5}.skippr\\:disabled\\:opacity-60:disabled{opacity:.6}.skippr\\:disabled\\:opacity-80:disabled{opacity:.8}@media (hover:hover){.skippr\\:disabled\\:hover\\:bg-\\[\\#2D2D3F\\]:disabled:hover{background-color:#2d2d3f}.skippr\\:disabled\\:hover\\:bg-white:disabled:hover{background-color:var(--skippr-color-white)}}@media (prefers-reduced-motion:reduce){.skippr\\:motion-reduce\\:hidden{display:none}.skippr\\:motion-reduce\\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:motion-reduce\\:animate-none{animation:none}}.skippr\\:\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.skippr\\:\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.skippr\\:\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--skippr-spacing)*4);height:calc(var(--skippr-spacing)*4)}}:host{--skippr-brand-active:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-active:color-mix(in srgb,var(--skippr-brand,#2bc0ae)93%,#000)}}:host{--skippr-brand-deep:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-deep:color-mix(in srgb,var(--skippr-brand,#2bc0ae)78%,#000)}}:host{--skippr-brand-ring:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-ring:color-mix(in srgb,var(--skippr-brand,#2bc0ae)22%,transparent)}}:host{--skippr-brand-halo:var(--skippr-brand,#2bc0ae)}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-halo:color-mix(in srgb,var(--skippr-brand,#2bc0ae)40%,transparent)}}:host{--skippr-brand-glow:linear-gradient(90deg,var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae),var(--skippr-brand,#2bc0ae))}@supports (color:color-mix(in lab, red, red)){:host{--skippr-brand-glow:linear-gradient(90deg,var(--skippr-brand,#2bc0ae),color-mix(in srgb,var(--skippr-brand,#2bc0ae)55%,#fff),color-mix(in srgb,var(--skippr-brand,#2bc0ae)72%,#fff),var(--skippr-brand,#2bc0ae),color-mix(in srgb,var(--skippr-brand,#2bc0ae)42%,#fff))}}@keyframes skippr-tap{0%{transform:scale(1)}45%{transform:scale(.7)}to{transform:scale(1)}}@keyframes skippr-press{0%{transform:scale(1)}55%{transform:scale(1)}85%{transform:scale(.68)}to{transform:scale(1)}}@keyframes skippr-cursor-pop{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes skippr-click-ping{0%{opacity:.9;transform:translate(-50%,-50%)scale(.4)}to{opacity:0;transform:translate(-50%,-50%)scale(2.4)}}@keyframes skippr-tab-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes skippr-speak{0%,to{opacity:.6;transform:scaleY(.4)}50%{opacity:1;transform:scaleY(1)}}@keyframes skippr-thinking-dot{0%,80%,to{opacity:.2;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes skippr-pulse-ring{0%,to{box-shadow:0 0 #2d2b3d66}50%{box-shadow:0 0 0 10px #2d2b3d00}}@keyframes skippr-rec-ring{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)55%,transparent)}70%{box-shadow:0 0 0 11px #0000}to{box-shadow:0 0 #0000}}@keyframes skippr-voice-pulse{0%{box-shadow:0 0 0 0 var(--skippr-pulse-color,#2bc0ae80)}70%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}@keyframes skippr-ptt-transmit{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)60%,transparent),0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)35%,transparent)}70%{box-shadow:0 0 0 9px #0000,0 0 0 16px #0000}to{box-shadow:0 0 #0000,0 0 #0000}}@keyframes skippr-annotation-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb,var(--skippr-brand,#2bc0ae)50%,transparent)}50%{box-shadow:0 0 0 6px #0000}}@keyframes skippr-speak-ripple{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}@keyframes skippr-bar{0%,to{transform:scaleY(.35)}50%{transform:scaleY(1)}}@keyframes skippr-breathe{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes skippr-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes skippr-evaporate{0%{opacity:1;filter:blur();transform:translateY(0)scale(1)}55%{opacity:.85;filter:blur()}to{opacity:0;filter:blur(2.5px);transform:translateY(-7px)scale(.965)}}@keyframes skippr-mote-rise{0%{opacity:0;transform:translateY(2px)scale(.5)}25%{opacity:.85}to{opacity:0;transform:translateY(-24px)scale(1)}}@keyframes skippr-flow{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes skippr-wave{0%,to{opacity:.4;transform:scaleY(.4)}50%{opacity:1;transform:scaleY(1)}}@keyframes skippr-bubble-in{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes skippr-tip-in{0%{opacity:0;transform:translateY(14px)scale(.96)}60%{opacity:1;transform:translateY(-2px)scale(1.01)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes skippr-pill-content{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes skippr-banner-look{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@keyframes skippr-finger-tap{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(2px)rotate(-6deg)}}@keyframes skippr-toolset-pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes skippr-stage-fade{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes skippr-agent-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes skippr-orb-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes skippr-pop{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}@keyframes skippr-blink{0%,40%{transform:scaleY(1)}41.3%,42%{transform:scaleY(.08)}43.3%,70%{transform:scaleY(1)}71.3%,72%{transform:scaleY(.08)}73.3%,to{transform:scaleY(1)}}.skippr-buddy-blink{transform-box:fill-box;transform-origin:50%;animation:5s linear infinite skippr-blink}@keyframes skippr-avatar-eyes-bob{0%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(0)}18%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(24px)}33.33%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(-30px)}48%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(-7px)}64%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(-30px)}82%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translateY(31px)}96%,to{transform:translateY(0)}}@keyframes skippr-avatar-pupil-glance{0%,21.33%{transform:translate(0)}28%,68%{transform:translate(-30px)}74%,to{transform:translate(0)}}@keyframes skippr-avatar-body-vibe{0%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1)}17.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1.08,.95)}33.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1)}49.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1.08,.95)}65.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1)}81.67%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:scale(1.08,.95)}96%,to{transform:scale(1)}}@keyframes skippr-avatar-blink{0%,40%{transform:scaleY(1)}41.3%,42%{transform:scaleY(.08)}43.3%,70%{transform:scaleY(1)}71.3%,72%{transform:scaleY(.08)}73.3%,to{transform:scaleY(1)}}@keyframes skippr-avatar-bub-tail-drift{0%,10%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translate(0)}45%,60%{animation-timing-function:cubic-bezier(.65,0,.36,1);transform:translate(-24px)}95%,to{transform:translate(0)}}@keyframes skippr-avatar-antenna-shake{0%,to{transform:rotate(-4deg)}25%{transform:rotate(4deg)}50%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}.skippr-avatar-eyes{animation:5s infinite skippr-avatar-eyes-bob}.skippr-avatar-pupil{animation:5s linear infinite skippr-avatar-pupil-glance}.skippr-avatar-body{transform-box:fill-box;transform-origin:50% 100%;animation:5s infinite skippr-avatar-body-vibe}.skippr-avatar-blink{transform-box:fill-box;transform-origin:50%;animation:5s infinite skippr-avatar-blink}.skippr-avatar-body .skippr-avatar-antenna{transform-box:view-box;transform-origin:48px 22px;animation:1.6s ease-in-out infinite skippr-avatar-antenna-shake}.skippr-avatar-body .skippr-avatar-bub-tail{animation:5s infinite skippr-avatar-bub-tail-drift}@keyframes skippr-buddy-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes skippr-buddy-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes skippr-buddy-pop{0%{transform:scale(1)}50%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes skippr-buddy-sleep{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(1px)scale(.995)}}@keyframes skippr-buddy-zfloat{0%{opacity:0;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(-10px)}}@keyframes skippr-peek-left{0%,20%{transform:translate(-58%)}46%,66%{transform:translate(0)}92%,to{transform:translate(-58%)}}@keyframes skippr-peek-right{0%,20%{transform:translate(58%)}46%,66%{transform:translate(0)}92%,to{transform:translate(58%)}}@keyframes skippr-peek-top{0%,20%{transform:translateY(-58%)}46%,66%{transform:translateY(0)}92%,to{transform:translateY(-58%)}}@keyframes skippr-peek-bottom{0%,20%{transform:translateY(58%)}46%,66%{transform:translateY(0)}92%,to{transform:translateY(58%)}}.skippr-peek-left{animation:3.6s ease-in-out infinite skippr-peek-left}.skippr-peek-right{animation:3.6s ease-in-out infinite skippr-peek-right}.skippr-peek-top{animation:3.6s ease-in-out infinite skippr-peek-top}.skippr-peek-bottom{animation:3.6s ease-in-out infinite skippr-peek-bottom}.skippr-peek-out{animation:none;transform:none}@keyframes skippr-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes skippr-block-reveal{0%{opacity:0;max-height:0;transform:translateY(-4px)}55%{opacity:1}to{opacity:1;max-height:260px;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.skippr-buddy-blink,[style*=skippr-blink],[style*=skippr-buddy-bob],[style*=skippr-buddy-breathe],[style*=skippr-buddy-pop],[style*=skippr-buddy-sleep],[style*=skippr-buddy-zfloat],.skippr-avatar-eyes,.skippr-avatar-pupil,.skippr-avatar-body,.skippr-avatar-blink,.skippr-avatar-body .skippr-avatar-antenna,.skippr-avatar-body .skippr-avatar-bub-tail,.skippr-peek-left,.skippr-peek-right,.skippr-peek-top,.skippr-peek-bottom{animation-play-state:paused}}.skippr-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.skippr-no-scrollbar::-webkit-scrollbar{display:none}:host{color:var(--color-foreground)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}`;
|
|
8486
8517
|
const hostStyle = accentColor && isHexColor(accentColor) ? {
|
|
8487
8518
|
"--skippr-brand": accentColor,
|
|
8488
8519
|
"--skippr-brand-foreground": brandForeground(accentColor),
|
|
@@ -8865,12 +8896,36 @@ function LoadingDots({ label }) {
|
|
|
8865
8896
|
});
|
|
8866
8897
|
}
|
|
8867
8898
|
|
|
8899
|
+
// src/components/LogoMark.tsx
|
|
8900
|
+
import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
8901
|
+
function LogoMark({ className, decorative }) {
|
|
8902
|
+
return /* @__PURE__ */ jsxs24("svg", {
|
|
8903
|
+
viewBox: "21 21 109 109",
|
|
8904
|
+
fill: "none",
|
|
8905
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8906
|
+
role: decorative ? undefined : "img",
|
|
8907
|
+
"aria-label": decorative ? undefined : "Skippr",
|
|
8908
|
+
"aria-hidden": decorative || undefined,
|
|
8909
|
+
className,
|
|
8910
|
+
children: [
|
|
8911
|
+
/* @__PURE__ */ jsx30("path", {
|
|
8912
|
+
d: "M119.497 24C124.193 24 128 27.8071 128 32.5033V81.3974C128 83.0339 127.536 84.5616 126.735 85.8587L89.8936 57.4811L89.8943 57.4804C80.4203 50.1648 66.2971 56.7058 66.297 69.0147V89.9007H29.5033C24.8071 89.9007 21 86.0936 21 81.3974V32.5033C21 27.8071 24.8071 24 29.5033 24H119.497ZM76.2715 69.0147C76.2716 65.1724 80.7356 63.0111 83.7978 65.3755L115.637 89.9007H76.2715V69.0147Z",
|
|
8913
|
+
fill: "currentColor"
|
|
8914
|
+
}),
|
|
8915
|
+
/* @__PURE__ */ jsx30("path", {
|
|
8916
|
+
d: "M83.7979 64.8856C80.7358 62.5211 76.2716 64.6824 76.2716 68.5247V120.892C76.2716 125.27 81.8518 127.191 84.5938 123.755L97.6194 107.437C98.1001 106.836 98.7119 106.35 99.4091 106.016C100.106 105.683 100.871 105.51 101.645 105.51H122.946C127.386 105.51 129.316 99.9436 125.81 97.2466L83.7979 64.8856Z",
|
|
8917
|
+
className: "skippr:fill-brand"
|
|
8918
|
+
})
|
|
8919
|
+
]
|
|
8920
|
+
});
|
|
8921
|
+
}
|
|
8922
|
+
|
|
8868
8923
|
// src/components/MessageList.tsx
|
|
8869
8924
|
import { useCallback as useCallback25, useLayoutEffect as useLayoutEffect3, useRef as useRef31, useState as useState27 } from "react";
|
|
8870
8925
|
|
|
8871
8926
|
// src/components/ChatInput.tsx
|
|
8872
8927
|
import { useContext as useContext16, useEffect as useEffect33, useRef as useRef29, useState as useState24 } from "react";
|
|
8873
|
-
import { jsx as
|
|
8928
|
+
import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
8874
8929
|
var MAX_INPUT_HEIGHT = 60;
|
|
8875
8930
|
function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
8876
8931
|
const ctx = useContext16(LiveAgentContext);
|
|
@@ -8912,12 +8967,12 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
|
8912
8967
|
handleSubmit(e);
|
|
8913
8968
|
}
|
|
8914
8969
|
}
|
|
8915
|
-
return /* @__PURE__ */
|
|
8970
|
+
return /* @__PURE__ */ jsxs25("form", {
|
|
8916
8971
|
onSubmit: handleSubmit,
|
|
8917
8972
|
"data-skippr-no-drag": "",
|
|
8918
8973
|
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]",
|
|
8919
8974
|
children: [
|
|
8920
|
-
/* @__PURE__ */
|
|
8975
|
+
/* @__PURE__ */ jsx31("textarea", {
|
|
8921
8976
|
ref: textareaRef,
|
|
8922
8977
|
rows: 1,
|
|
8923
8978
|
value: inputText,
|
|
@@ -8928,7 +8983,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
|
8928
8983
|
className: "skippr:min-w-0 skippr:flex-1 skippr:resize-none skippr:overflow-y-auto skippr:rounded-[10px] skippr:border skippr:border-[rgba(45,45,63,0.14)] skippr:bg-white skippr:px-[10px] skippr:py-[7px] skippr:text-[13px] skippr:font-medium skippr:leading-5 skippr:text-[#2D2D3F] skippr:shadow-[0_1px_2px_rgba(45,45,63,0.05)] skippr:outline-none skippr:focus-visible:border-[var(--skippr-brand-ring)] skippr:focus-visible:ring-2 skippr:focus-visible:ring-[var(--skippr-brand-ring)] skippr:placeholder:text-[#b0aca4]",
|
|
8929
8984
|
style: { maxHeight: `${MAX_INPUT_HEIGHT}px` }
|
|
8930
8985
|
}),
|
|
8931
|
-
/* @__PURE__ */
|
|
8986
|
+
/* @__PURE__ */ jsx31("button", {
|
|
8932
8987
|
type: "submit",
|
|
8933
8988
|
disabled: !canSend,
|
|
8934
8989
|
"aria-label": "Send message",
|
|
@@ -8937,7 +8992,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
|
8937
8992
|
color: "var(--skippr-brand-foreground, #2d2b3d)"
|
|
8938
8993
|
},
|
|
8939
8994
|
className: cn("skippr:flex skippr:size-[34px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:transition-[filter] skippr:focus-visible:outline-2 skippr:focus-visible:outline-offset-2 skippr:focus-visible:outline-[var(--skippr-brand)]", canSend ? "skippr:cursor-pointer skippr:hover:brightness-[1.06]" : "skippr:cursor-not-allowed"),
|
|
8940
|
-
children: /* @__PURE__ */
|
|
8995
|
+
children: /* @__PURE__ */ jsx31(Send, {
|
|
8941
8996
|
className: "skippr:size-[16px]",
|
|
8942
8997
|
strokeWidth: 2
|
|
8943
8998
|
})
|
|
@@ -8947,7 +9002,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
|
|
|
8947
9002
|
}
|
|
8948
9003
|
|
|
8949
9004
|
// src/components/ChatMessage.tsx
|
|
8950
|
-
import { jsx as
|
|
9005
|
+
import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
8951
9006
|
function formatTimestamp(ts) {
|
|
8952
9007
|
return new Date(ts).toLocaleTimeString("en-US", {
|
|
8953
9008
|
hour: "numeric",
|
|
@@ -8957,16 +9012,16 @@ function formatTimestamp(ts) {
|
|
|
8957
9012
|
}
|
|
8958
9013
|
function ChatMessage({ message }) {
|
|
8959
9014
|
const isAgent = message.role === "assistant";
|
|
8960
|
-
return /* @__PURE__ */
|
|
9015
|
+
return /* @__PURE__ */ jsx32("div", {
|
|
8961
9016
|
className: cn("skippr:flex skippr:gap-2", isAgent ? "skippr:items-start" : "skippr:justify-end"),
|
|
8962
|
-
children: /* @__PURE__ */
|
|
9017
|
+
children: /* @__PURE__ */ jsxs26("div", {
|
|
8963
9018
|
className: cn("skippr:flex skippr:max-w-[80%] skippr:flex-col", isAgent ? "skippr:items-start" : "skippr:items-end"),
|
|
8964
9019
|
children: [
|
|
8965
|
-
/* @__PURE__ */
|
|
9020
|
+
/* @__PURE__ */ jsx32("div", {
|
|
8966
9021
|
className: cn("skippr:rounded-2xl skippr:px-4 skippr:py-2.5 skippr:text-sm skippr:leading-relaxed", isAgent ? "skippr:border skippr:border-border skippr:bg-card skippr:text-foreground" : "skippr:bg-primary skippr:text-primary-foreground"),
|
|
8967
9022
|
children: message.content
|
|
8968
9023
|
}),
|
|
8969
|
-
message.timestamp && /* @__PURE__ */
|
|
9024
|
+
message.timestamp && /* @__PURE__ */ jsx32("span", {
|
|
8970
9025
|
className: "skippr:mt-1 skippr:px-1 skippr:text-[10px] skippr:text-muted-foreground/60",
|
|
8971
9026
|
children: formatTimestamp(message.timestamp)
|
|
8972
9027
|
})
|
|
@@ -8989,7 +9044,7 @@ async function copyToClipboard(text) {
|
|
|
8989
9044
|
}
|
|
8990
9045
|
|
|
8991
9046
|
// src/components/LinkCard.tsx
|
|
8992
|
-
import { jsx as
|
|
9047
|
+
import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8993
9048
|
var COPIED_RESET_MS = 2000;
|
|
8994
9049
|
var DISMISS_AFTER_COPY_MS = 3000;
|
|
8995
9050
|
function LinkCard({ card, onDismiss }) {
|
|
@@ -9014,56 +9069,56 @@ function LinkCard({ card, onDismiss }) {
|
|
|
9014
9069
|
setCopied(true);
|
|
9015
9070
|
dismissTimerRef.current = setTimeout(onDismiss, DISMISS_AFTER_COPY_MS);
|
|
9016
9071
|
}, [card.url, onDismiss]);
|
|
9017
|
-
return /* @__PURE__ */
|
|
9072
|
+
return /* @__PURE__ */ jsxs27("div", {
|
|
9018
9073
|
className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
|
|
9019
9074
|
children: [
|
|
9020
|
-
/* @__PURE__ */
|
|
9075
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
9021
9076
|
className: "skippr:mb-1 skippr:flex skippr:items-start skippr:justify-between skippr:gap-2",
|
|
9022
9077
|
children: [
|
|
9023
|
-
card.title && /* @__PURE__ */
|
|
9078
|
+
card.title && /* @__PURE__ */ jsx33("p", {
|
|
9024
9079
|
className: "skippr:text-sm skippr:font-semibold skippr:leading-snug skippr:text-foreground",
|
|
9025
9080
|
children: card.title
|
|
9026
9081
|
}),
|
|
9027
|
-
/* @__PURE__ */
|
|
9082
|
+
/* @__PURE__ */ jsx33("button", {
|
|
9028
9083
|
type: "button",
|
|
9029
9084
|
onClick: onDismiss,
|
|
9030
9085
|
"aria-label": "Dismiss link",
|
|
9031
9086
|
className: "skippr:-mr-1 skippr:-mt-1 skippr:flex skippr:size-6 skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-muted-foreground skippr:transition-colors skippr:hover:bg-muted skippr:hover:text-foreground",
|
|
9032
|
-
children: /* @__PURE__ */
|
|
9087
|
+
children: /* @__PURE__ */ jsx33(X, {
|
|
9033
9088
|
className: "skippr:size-3.5",
|
|
9034
9089
|
strokeWidth: 2.5
|
|
9035
9090
|
})
|
|
9036
9091
|
})
|
|
9037
9092
|
]
|
|
9038
9093
|
}),
|
|
9039
|
-
/* @__PURE__ */
|
|
9094
|
+
/* @__PURE__ */ jsx33("p", {
|
|
9040
9095
|
className: "skippr:mb-3 skippr:truncate skippr:text-xs skippr:text-muted-foreground",
|
|
9041
9096
|
children: card.url
|
|
9042
9097
|
}),
|
|
9043
|
-
/* @__PURE__ */
|
|
9098
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
9044
9099
|
className: "skippr:flex skippr:gap-2",
|
|
9045
9100
|
children: [
|
|
9046
|
-
/* @__PURE__ */
|
|
9101
|
+
/* @__PURE__ */ jsxs27("a", {
|
|
9047
9102
|
href: card.url,
|
|
9048
9103
|
target: "_blank",
|
|
9049
9104
|
rel: "noopener noreferrer",
|
|
9050
9105
|
className: "skippr:inline-flex skippr:flex-1 skippr:items-center skippr:justify-center skippr:gap-2 skippr:rounded-md skippr:bg-primary skippr:py-2 skippr:text-sm skippr:font-medium skippr:text-primary-foreground skippr:transition-all skippr:hover:bg-primary/90 skippr:focus-visible:outline-none skippr:focus-visible:ring-2 skippr:focus-visible:ring-ring skippr:focus-visible:ring-offset-2",
|
|
9051
9106
|
children: [
|
|
9052
|
-
/* @__PURE__ */
|
|
9107
|
+
/* @__PURE__ */ jsx33(ExternalLink, {
|
|
9053
9108
|
className: "skippr:size-4"
|
|
9054
9109
|
}),
|
|
9055
9110
|
"Open"
|
|
9056
9111
|
]
|
|
9057
9112
|
}),
|
|
9058
|
-
/* @__PURE__ */
|
|
9113
|
+
/* @__PURE__ */ jsxs27(Button, {
|
|
9059
9114
|
variant: "outline",
|
|
9060
9115
|
className: "skippr:flex-1 skippr:py-2",
|
|
9061
9116
|
onClick: handleCopy,
|
|
9062
9117
|
"aria-label": "Copy link",
|
|
9063
9118
|
children: [
|
|
9064
|
-
copied ? /* @__PURE__ */
|
|
9119
|
+
copied ? /* @__PURE__ */ jsx33(Check, {
|
|
9065
9120
|
className: "skippr:size-4"
|
|
9066
|
-
}) : /* @__PURE__ */
|
|
9121
|
+
}) : /* @__PURE__ */ jsx33(Copy, {
|
|
9067
9122
|
className: "skippr:size-4"
|
|
9068
9123
|
}),
|
|
9069
9124
|
copied ? "Copied" : "Copy link"
|
|
@@ -9077,28 +9132,28 @@ function LinkCard({ card, onDismiss }) {
|
|
|
9077
9132
|
|
|
9078
9133
|
// src/components/PlanCard.tsx
|
|
9079
9134
|
import { useEffect as useEffect35, useState as useState26 } from "react";
|
|
9080
|
-
import { jsx as
|
|
9135
|
+
import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
9081
9136
|
var APPROVE_MESSAGE = "Yes, go ahead.";
|
|
9082
9137
|
var CANCEL_MESSAGE = "No, cancel that.";
|
|
9083
9138
|
var COMPLETED_CARD_VISIBLE_MS = 2500;
|
|
9084
9139
|
var APPROVING_RESET_MS = 8000;
|
|
9085
9140
|
function StepIcon({ status }) {
|
|
9086
9141
|
if (status === "done") {
|
|
9087
|
-
return /* @__PURE__ */
|
|
9142
|
+
return /* @__PURE__ */ jsx34(CircleCheck, {
|
|
9088
9143
|
className: "skippr:size-4 skippr:text-chart-3"
|
|
9089
9144
|
});
|
|
9090
9145
|
}
|
|
9091
9146
|
if (status === "failed") {
|
|
9092
|
-
return /* @__PURE__ */
|
|
9147
|
+
return /* @__PURE__ */ jsx34(CircleX, {
|
|
9093
9148
|
className: "skippr:size-4 skippr:text-destructive"
|
|
9094
9149
|
});
|
|
9095
9150
|
}
|
|
9096
9151
|
if (status === "active") {
|
|
9097
|
-
return /* @__PURE__ */
|
|
9152
|
+
return /* @__PURE__ */ jsx34(Circle, {
|
|
9098
9153
|
className: "skippr:size-4 skippr:fill-primary/30 skippr:text-primary"
|
|
9099
9154
|
});
|
|
9100
9155
|
}
|
|
9101
|
-
return /* @__PURE__ */
|
|
9156
|
+
return /* @__PURE__ */ jsx34(Circle, {
|
|
9102
9157
|
className: "skippr:size-4 skippr:text-muted-foreground/30"
|
|
9103
9158
|
});
|
|
9104
9159
|
}
|
|
@@ -9129,43 +9184,43 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
9129
9184
|
const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
|
|
9130
9185
|
return () => clearTimeout(timer);
|
|
9131
9186
|
}, [plan.state, onDismiss]);
|
|
9132
|
-
return /* @__PURE__ */
|
|
9187
|
+
return /* @__PURE__ */ jsxs28("div", {
|
|
9133
9188
|
className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
|
|
9134
9189
|
children: [
|
|
9135
|
-
/* @__PURE__ */
|
|
9190
|
+
/* @__PURE__ */ jsx34("p", {
|
|
9136
9191
|
className: "skippr:mb-3 skippr:text-sm skippr:font-semibold skippr:leading-snug skippr:text-foreground",
|
|
9137
9192
|
children: "Plan"
|
|
9138
9193
|
}),
|
|
9139
|
-
/* @__PURE__ */
|
|
9194
|
+
/* @__PURE__ */ jsx34("div", {
|
|
9140
9195
|
className: "skippr:space-y-2",
|
|
9141
|
-
children: plan.steps.map((step) => /* @__PURE__ */
|
|
9196
|
+
children: plan.steps.map((step) => /* @__PURE__ */ jsxs28("div", {
|
|
9142
9197
|
className: "skippr:flex skippr:items-center skippr:gap-2",
|
|
9143
9198
|
children: [
|
|
9144
|
-
/* @__PURE__ */
|
|
9199
|
+
/* @__PURE__ */ jsx34(StepIcon, {
|
|
9145
9200
|
status: step.status
|
|
9146
9201
|
}),
|
|
9147
|
-
/* @__PURE__ */
|
|
9202
|
+
/* @__PURE__ */ jsx34("p", {
|
|
9148
9203
|
className: cn("skippr:text-sm skippr:leading-snug", step.status === "done" && "skippr:text-muted-foreground skippr:line-through", step.status === "active" && "skippr:font-medium skippr:text-foreground", step.status === "pending" && "skippr:text-muted-foreground", step.status === "failed" && "skippr:text-destructive"),
|
|
9149
9204
|
children: step.label
|
|
9150
9205
|
})
|
|
9151
9206
|
]
|
|
9152
9207
|
}, step.index))
|
|
9153
9208
|
}),
|
|
9154
|
-
awaitingApproval && /* @__PURE__ */
|
|
9209
|
+
awaitingApproval && /* @__PURE__ */ jsxs28("div", {
|
|
9155
9210
|
className: "skippr:mt-3.5 skippr:flex skippr:gap-2",
|
|
9156
9211
|
children: [
|
|
9157
|
-
/* @__PURE__ */
|
|
9212
|
+
/* @__PURE__ */ jsxs28(Button, {
|
|
9158
9213
|
className: "skippr:flex-1 skippr:gap-1.5 skippr:py-2",
|
|
9159
9214
|
disabled: isApproving,
|
|
9160
9215
|
onClick: approve,
|
|
9161
9216
|
children: [
|
|
9162
|
-
isApproving && /* @__PURE__ */
|
|
9217
|
+
isApproving && /* @__PURE__ */ jsx34("span", {
|
|
9163
9218
|
className: "skippr:size-3 skippr:shrink-0 skippr:animate-spin skippr:rounded-full skippr:border-2 skippr:border-white/30 skippr:border-t-white"
|
|
9164
9219
|
}),
|
|
9165
9220
|
isApproving ? "Approving…" : "Approve"
|
|
9166
9221
|
]
|
|
9167
9222
|
}),
|
|
9168
|
-
/* @__PURE__ */
|
|
9223
|
+
/* @__PURE__ */ jsx34(Button, {
|
|
9169
9224
|
variant: "outline",
|
|
9170
9225
|
className: "skippr:flex-1 skippr:py-2",
|
|
9171
9226
|
disabled: isApproving,
|
|
@@ -9179,26 +9234,26 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
9179
9234
|
}
|
|
9180
9235
|
|
|
9181
9236
|
// src/components/TypingIndicator.tsx
|
|
9182
|
-
import { jsx as
|
|
9237
|
+
import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
9183
9238
|
function TypingIndicator() {
|
|
9184
|
-
return /* @__PURE__ */
|
|
9239
|
+
return /* @__PURE__ */ jsx35("div", {
|
|
9185
9240
|
className: "skippr:flex skippr:items-start skippr:gap-2 skippr:animate-skippr-tab-fade",
|
|
9186
|
-
children: /* @__PURE__ */
|
|
9241
|
+
children: /* @__PURE__ */ jsxs29("div", {
|
|
9187
9242
|
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",
|
|
9188
9243
|
children: [
|
|
9189
|
-
/* @__PURE__ */
|
|
9244
|
+
/* @__PURE__ */ jsx35("span", {
|
|
9190
9245
|
children: "Agent is analyzing your screen"
|
|
9191
9246
|
}),
|
|
9192
|
-
/* @__PURE__ */
|
|
9247
|
+
/* @__PURE__ */ jsxs29("span", {
|
|
9193
9248
|
className: "skippr:inline-flex skippr:items-center skippr:gap-[2px]",
|
|
9194
9249
|
children: [
|
|
9195
|
-
/* @__PURE__ */
|
|
9250
|
+
/* @__PURE__ */ jsx35("span", {
|
|
9196
9251
|
className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:0ms]"
|
|
9197
9252
|
}),
|
|
9198
|
-
/* @__PURE__ */
|
|
9253
|
+
/* @__PURE__ */ jsx35("span", {
|
|
9199
9254
|
className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:200ms]"
|
|
9200
9255
|
}),
|
|
9201
|
-
/* @__PURE__ */
|
|
9256
|
+
/* @__PURE__ */ jsx35("span", {
|
|
9202
9257
|
className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:400ms]"
|
|
9203
9258
|
})
|
|
9204
9259
|
]
|
|
@@ -9209,7 +9264,7 @@ function TypingIndicator() {
|
|
|
9209
9264
|
}
|
|
9210
9265
|
|
|
9211
9266
|
// src/components/MessageList.tsx
|
|
9212
|
-
import { jsx as
|
|
9267
|
+
import { jsx as jsx36, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
9213
9268
|
var BOTTOM_THRESHOLD_PX = 32;
|
|
9214
9269
|
function MessageList({
|
|
9215
9270
|
messages,
|
|
@@ -9268,59 +9323,59 @@ function MessageList({
|
|
|
9268
9323
|
container.scrollTop = container.scrollHeight;
|
|
9269
9324
|
}, [messages.length, lastMessage?.content]);
|
|
9270
9325
|
const showTyping = isStreaming && lastMessage?.role === "assistant" && lastMessage.content === "";
|
|
9271
|
-
return /* @__PURE__ */
|
|
9326
|
+
return /* @__PURE__ */ jsxs30("div", {
|
|
9272
9327
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
9273
9328
|
children: [
|
|
9274
|
-
/* @__PURE__ */
|
|
9329
|
+
/* @__PURE__ */ jsxs30("div", {
|
|
9275
9330
|
className: "skippr:relative skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
9276
9331
|
children: [
|
|
9277
|
-
/* @__PURE__ */
|
|
9332
|
+
/* @__PURE__ */ jsxs30("div", {
|
|
9278
9333
|
ref: containerRef,
|
|
9279
9334
|
onScroll: handleScroll,
|
|
9280
9335
|
"data-skippr-no-drag": "",
|
|
9281
9336
|
className: "skippr:min-h-0 skippr:flex-1 skippr:select-text skippr:space-y-4 skippr:overflow-y-auto skippr:p-4 skippr:[overflow-anchor:none]",
|
|
9282
9337
|
children: [
|
|
9283
|
-
messages.length === 0 && !showTyping && (readOnly ? /* @__PURE__ */
|
|
9338
|
+
messages.length === 0 && !showTyping && (readOnly ? /* @__PURE__ */ jsx36("p", {
|
|
9284
9339
|
className: "skippr:px-2 skippr:py-6 skippr:text-center skippr:text-sm skippr:text-muted-foreground",
|
|
9285
9340
|
children: "No messages in this conversation yet."
|
|
9286
|
-
}) : /* @__PURE__ */
|
|
9341
|
+
}) : /* @__PURE__ */ jsx36(LoadingDots, {
|
|
9287
9342
|
label: "Waiting for conversation to begin..."
|
|
9288
9343
|
})),
|
|
9289
|
-
messages.map((message) => /* @__PURE__ */
|
|
9344
|
+
messages.map((message) => /* @__PURE__ */ jsx36(ChatMessage, {
|
|
9290
9345
|
message
|
|
9291
9346
|
}, message.id)),
|
|
9292
|
-
showTyping && /* @__PURE__ */
|
|
9347
|
+
showTyping && /* @__PURE__ */ jsx36(TypingIndicator, {})
|
|
9293
9348
|
]
|
|
9294
9349
|
}),
|
|
9295
|
-
showJumpToLatest && /* @__PURE__ */
|
|
9350
|
+
showJumpToLatest && /* @__PURE__ */ jsx36("button", {
|
|
9296
9351
|
type: "button",
|
|
9297
9352
|
onClick: jumpToLatest,
|
|
9298
9353
|
"aria-label": "Jump to latest message",
|
|
9299
9354
|
className: "skippr:-translate-x-1/2 skippr:absolute skippr:bottom-3 skippr:left-1/2 skippr:flex skippr:min-h-11 skippr:min-w-11 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:border skippr:border-border skippr:bg-background skippr:p-1.5 skippr:text-foreground skippr:shadow-md skippr:transition-colors skippr:hover:bg-muted",
|
|
9300
|
-
children: /* @__PURE__ */
|
|
9355
|
+
children: /* @__PURE__ */ jsx36(ChevronDown, {
|
|
9301
9356
|
className: "skippr:size-4"
|
|
9302
9357
|
})
|
|
9303
9358
|
})
|
|
9304
9359
|
]
|
|
9305
9360
|
}),
|
|
9306
|
-
sendChatMessage && isPlanVisible(plan) && plan.planId !== dismissedPlanId && /* @__PURE__ */
|
|
9361
|
+
sendChatMessage && isPlanVisible(plan) && plan.planId !== dismissedPlanId && /* @__PURE__ */ jsx36("div", {
|
|
9307
9362
|
"data-skippr-no-drag": "",
|
|
9308
9363
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
9309
|
-
children: /* @__PURE__ */
|
|
9364
|
+
children: /* @__PURE__ */ jsx36(PlanCard, {
|
|
9310
9365
|
plan,
|
|
9311
9366
|
sendChatMessage,
|
|
9312
9367
|
onDismiss: dismissPlan
|
|
9313
9368
|
}, plan.planId)
|
|
9314
9369
|
}),
|
|
9315
|
-
linkCard && linkCard.cardId !== dismissedLinkCardId && /* @__PURE__ */
|
|
9370
|
+
linkCard && linkCard.cardId !== dismissedLinkCardId && /* @__PURE__ */ jsx36("div", {
|
|
9316
9371
|
"data-skippr-no-drag": "",
|
|
9317
9372
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
9318
|
-
children: /* @__PURE__ */
|
|
9373
|
+
children: /* @__PURE__ */ jsx36(LinkCard, {
|
|
9319
9374
|
card: linkCard,
|
|
9320
9375
|
onDismiss: dismissLinkCard
|
|
9321
9376
|
}, linkCard.cardId)
|
|
9322
9377
|
}),
|
|
9323
|
-
!readOnly && sendChatMessage && /* @__PURE__ */
|
|
9378
|
+
!readOnly && sendChatMessage && /* @__PURE__ */ jsx36(ChatInput, {
|
|
9324
9379
|
sendChatMessage,
|
|
9325
9380
|
isSendingChat,
|
|
9326
9381
|
autoFocus
|
|
@@ -9331,14 +9386,14 @@ function MessageList({
|
|
|
9331
9386
|
|
|
9332
9387
|
// src/components/SessionAgenda.tsx
|
|
9333
9388
|
import { useContext as useContext17 } from "react";
|
|
9334
|
-
import { jsx as
|
|
9389
|
+
import { jsx as jsx37, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
9335
9390
|
function SessionAgenda({ phases, hasStarted }) {
|
|
9336
9391
|
const ctx = useContext17(LiveAgentContext);
|
|
9337
9392
|
const title = ctx?.activeModule?.name ?? "Agenda";
|
|
9338
9393
|
if (phases.length === 0 || !hasStarted) {
|
|
9339
|
-
return /* @__PURE__ */
|
|
9394
|
+
return /* @__PURE__ */ jsx37("div", {
|
|
9340
9395
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
9341
|
-
children: /* @__PURE__ */
|
|
9396
|
+
children: /* @__PURE__ */ jsx37(LoadingDots, {
|
|
9342
9397
|
label: "Waiting for agenda to load..."
|
|
9343
9398
|
})
|
|
9344
9399
|
});
|
|
@@ -9348,17 +9403,17 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
9348
9403
|
const activeIndex = phases.findIndex((p) => p.status === "active");
|
|
9349
9404
|
const currentStep = activeIndex >= 0 ? activeIndex + 1 : Math.min(completedCount + 1, total);
|
|
9350
9405
|
const progressPct = Math.round(completedCount / total * 100);
|
|
9351
|
-
return /* @__PURE__ */
|
|
9406
|
+
return /* @__PURE__ */ jsxs31("div", {
|
|
9352
9407
|
className: "skippr:flex-1 skippr:overflow-y-auto skippr:p-[14px]",
|
|
9353
9408
|
children: [
|
|
9354
|
-
/* @__PURE__ */
|
|
9409
|
+
/* @__PURE__ */ jsxs31("div", {
|
|
9355
9410
|
className: "skippr:mb-2 skippr:flex skippr:items-baseline skippr:justify-between",
|
|
9356
9411
|
children: [
|
|
9357
|
-
/* @__PURE__ */
|
|
9412
|
+
/* @__PURE__ */ jsx37("span", {
|
|
9358
9413
|
className: "skippr:text-[12.5px] skippr:font-semibold skippr:text-[#2D2D3F]",
|
|
9359
9414
|
children: title
|
|
9360
9415
|
}),
|
|
9361
|
-
/* @__PURE__ */
|
|
9416
|
+
/* @__PURE__ */ jsxs31("span", {
|
|
9362
9417
|
className: "skippr:text-[11px] skippr:font-semibold skippr:text-[var(--skippr-brand-deep)]",
|
|
9363
9418
|
children: [
|
|
9364
9419
|
"step ",
|
|
@@ -9369,14 +9424,14 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
9369
9424
|
})
|
|
9370
9425
|
]
|
|
9371
9426
|
}),
|
|
9372
|
-
/* @__PURE__ */
|
|
9427
|
+
/* @__PURE__ */ jsx37("div", {
|
|
9373
9428
|
role: "progressbar",
|
|
9374
9429
|
"aria-label": "Agenda progress",
|
|
9375
9430
|
"aria-valuenow": Math.round(progressPct),
|
|
9376
9431
|
"aria-valuemin": 0,
|
|
9377
9432
|
"aria-valuemax": 100,
|
|
9378
9433
|
className: "skippr:mb-[14px] skippr:h-[5px] skippr:overflow-hidden skippr:rounded-full skippr:bg-[#eeeae4]",
|
|
9379
|
-
children: /* @__PURE__ */
|
|
9434
|
+
children: /* @__PURE__ */ jsx37("div", {
|
|
9380
9435
|
className: "skippr:h-full skippr:rounded-full skippr:bg-brand",
|
|
9381
9436
|
style: { width: `${progressPct}%` }
|
|
9382
9437
|
})
|
|
@@ -9384,29 +9439,29 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
9384
9439
|
phases.map((phase) => {
|
|
9385
9440
|
const isActive = phase.status === "active";
|
|
9386
9441
|
const isCompleted = phase.status === "completed";
|
|
9387
|
-
return /* @__PURE__ */
|
|
9442
|
+
return /* @__PURE__ */ jsxs31("div", {
|
|
9388
9443
|
className: "skippr:flex skippr:items-center skippr:gap-[9px] skippr:py-[5px]",
|
|
9389
9444
|
children: [
|
|
9390
|
-
isCompleted ? /* @__PURE__ */
|
|
9445
|
+
isCompleted ? /* @__PURE__ */ jsx37("span", {
|
|
9391
9446
|
className: "skippr:flex skippr:size-[19px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-brand",
|
|
9392
|
-
children: /* @__PURE__ */
|
|
9447
|
+
children: /* @__PURE__ */ jsx37(Check, {
|
|
9393
9448
|
className: "skippr:size-[11px]",
|
|
9394
9449
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
9395
9450
|
strokeWidth: 3
|
|
9396
9451
|
})
|
|
9397
|
-
}) : isActive ? /* @__PURE__ */
|
|
9452
|
+
}) : isActive ? /* @__PURE__ */ jsx37("span", {
|
|
9398
9453
|
className: "skippr:flex skippr:size-[19px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-brand skippr:shadow-[0_0_0_4px_var(--skippr-brand-ring)]",
|
|
9399
|
-
children: /* @__PURE__ */
|
|
9454
|
+
children: /* @__PURE__ */ jsx37("span", {
|
|
9400
9455
|
className: "skippr:size-[6px] skippr:rounded-full skippr:bg-white"
|
|
9401
9456
|
})
|
|
9402
|
-
}) : /* @__PURE__ */
|
|
9457
|
+
}) : /* @__PURE__ */ jsx37("span", {
|
|
9403
9458
|
className: "skippr:size-[19px] skippr:shrink-0 skippr:rounded-full skippr:border-2 skippr:border-[#d8d3ca] skippr:bg-white"
|
|
9404
9459
|
}),
|
|
9405
|
-
/* @__PURE__ */
|
|
9460
|
+
/* @__PURE__ */ jsx37("span", {
|
|
9406
9461
|
className: cn("skippr:text-[12.5px]", isActive || isCompleted ? "skippr:font-semibold skippr:text-[#2D2D3F]" : "skippr:font-medium skippr:text-[#a8a49c]"),
|
|
9407
9462
|
children: phase.name
|
|
9408
9463
|
}),
|
|
9409
|
-
isActive && /* @__PURE__ */
|
|
9464
|
+
isActive && /* @__PURE__ */ jsx37("span", {
|
|
9410
9465
|
className: "skippr:ml-auto skippr:text-[9.5px] skippr:font-bold skippr:uppercase skippr:tracking-[0.05em] skippr:text-[var(--skippr-brand-deep)]",
|
|
9411
9466
|
children: "now"
|
|
9412
9467
|
})
|
|
@@ -9418,12 +9473,12 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
9418
9473
|
}
|
|
9419
9474
|
|
|
9420
9475
|
// src/components/SessionWarningBanner.tsx
|
|
9421
|
-
import { jsx as
|
|
9476
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
9422
9477
|
var SESSION_WARNING_THRESHOLD_SECS = 60;
|
|
9423
9478
|
function SessionWarningBanner({ remaining }) {
|
|
9424
9479
|
if (remaining === null || remaining <= 0 || remaining > SESSION_WARNING_THRESHOLD_SECS)
|
|
9425
9480
|
return null;
|
|
9426
|
-
return /* @__PURE__ */
|
|
9481
|
+
return /* @__PURE__ */ jsx38("div", {
|
|
9427
9482
|
"data-testid": "session-warning-banner",
|
|
9428
9483
|
role: "alert",
|
|
9429
9484
|
className: "skippr:bg-red-50 skippr:px-4 skippr:py-1.5 skippr:text-center skippr:text-xs skippr:font-medium skippr:text-red-700",
|
|
@@ -9432,7 +9487,7 @@ function SessionWarningBanner({ remaining }) {
|
|
|
9432
9487
|
}
|
|
9433
9488
|
|
|
9434
9489
|
// src/components/Sidebar.tsx
|
|
9435
|
-
import { jsx as
|
|
9490
|
+
import { jsx as jsx39, jsxs as jsxs32, Fragment as Fragment4 } from "react/jsx-runtime";
|
|
9436
9491
|
var PANEL_GAP_PX = 12;
|
|
9437
9492
|
var PANEL_VIEWPORT_MARGIN_PX = 24;
|
|
9438
9493
|
var PANEL_MAX_HEIGHT_PX = 460;
|
|
@@ -9542,17 +9597,17 @@ function Sidebar({
|
|
|
9542
9597
|
document.body.style.transition = "";
|
|
9543
9598
|
};
|
|
9544
9599
|
}, [isSidebar, isPanelOpen, position]);
|
|
9545
|
-
return /* @__PURE__ */
|
|
9600
|
+
return /* @__PURE__ */ jsxs32("div", {
|
|
9546
9601
|
ref: internalCtx?.panelRef,
|
|
9547
9602
|
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", isFloating && (popsDown ? isLeftAligned ? "skippr:origin-top-left" : "skippr:origin-top-right" : isLeftAligned ? "skippr:origin-bottom-left" : "skippr:origin-bottom-right"), 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"),
|
|
9548
9603
|
style: { width: isPanelOpen ? SIDEBAR_WIDTH : undefined, ...floatingStyle },
|
|
9549
9604
|
children: [
|
|
9550
|
-
!hideHeader && /* @__PURE__ */
|
|
9605
|
+
!hideHeader && /* @__PURE__ */ jsx39(ChatHeader, {
|
|
9551
9606
|
wasDraggedRef,
|
|
9552
9607
|
draggable: followsPanel,
|
|
9553
9608
|
headerRef
|
|
9554
9609
|
}),
|
|
9555
|
-
authFailed ? /* @__PURE__ */
|
|
9610
|
+
authFailed ? /* @__PURE__ */ jsx39(AuthError, {}) : isAuthenticated && hasResolvedModules ? /* @__PURE__ */ jsx39(AuthenticatedContent, {
|
|
9556
9611
|
isConnected,
|
|
9557
9612
|
isPaused,
|
|
9558
9613
|
isPausing,
|
|
@@ -9568,14 +9623,14 @@ function Sidebar({
|
|
|
9568
9623
|
talkLabel: startSessionLabel,
|
|
9569
9624
|
talkDisabled,
|
|
9570
9625
|
showTalk: !isFloating
|
|
9571
|
-
}) : usesHostAuth || isValidating || isAuthenticated ? /* @__PURE__ */
|
|
9626
|
+
}) : usesHostAuth || isValidating || isAuthenticated ? /* @__PURE__ */ jsx39("div", {
|
|
9572
9627
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
9573
|
-
children: /* @__PURE__ */
|
|
9628
|
+
children: /* @__PURE__ */ jsx39(LoadingDots, {
|
|
9574
9629
|
label: "Loading..."
|
|
9575
9630
|
})
|
|
9576
|
-
}) : /* @__PURE__ */
|
|
9631
|
+
}) : /* @__PURE__ */ jsx39("div", {
|
|
9577
9632
|
"data-skippr-no-drag": "",
|
|
9578
|
-
children: /* @__PURE__ */
|
|
9633
|
+
children: /* @__PURE__ */ jsx39(LoginFlow, {
|
|
9579
9634
|
requestOtp,
|
|
9580
9635
|
verifyOtp,
|
|
9581
9636
|
error: authError,
|
|
@@ -9604,20 +9659,20 @@ function AuthenticatedContent({
|
|
|
9604
9659
|
}) {
|
|
9605
9660
|
const inSession = isConnected || isStarting || isPaused || isPausing;
|
|
9606
9661
|
const effectiveTab = showAgenda ? activeTab : "chat";
|
|
9607
|
-
return /* @__PURE__ */
|
|
9662
|
+
return /* @__PURE__ */ jsxs32(Fragment4, {
|
|
9608
9663
|
children: [
|
|
9609
|
-
isConnected && /* @__PURE__ */
|
|
9610
|
-
/* @__PURE__ */
|
|
9664
|
+
isConnected && /* @__PURE__ */ jsx39(ConnectedBanner, {}),
|
|
9665
|
+
/* @__PURE__ */ jsx39("div", {
|
|
9611
9666
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
9612
|
-
children: isDisconnecting ? /* @__PURE__ */
|
|
9667
|
+
children: isDisconnecting ? /* @__PURE__ */ jsx39("div", {
|
|
9613
9668
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
9614
|
-
children: /* @__PURE__ */
|
|
9669
|
+
children: /* @__PURE__ */ jsx39(LoadingDots, {
|
|
9615
9670
|
label: "Ending session..."
|
|
9616
9671
|
})
|
|
9617
|
-
}) : inSession ? /* @__PURE__ */
|
|
9672
|
+
}) : inSession ? /* @__PURE__ */ jsx39(ConnectedBody, {
|
|
9618
9673
|
activeTab: effectiveTab,
|
|
9619
9674
|
autoFocusChat
|
|
9620
|
-
}) : /* @__PURE__ */
|
|
9675
|
+
}) : /* @__PURE__ */ jsx39(IdleHistory, {
|
|
9621
9676
|
activeTab: effectiveTab,
|
|
9622
9677
|
history: idleHistory,
|
|
9623
9678
|
onTalk,
|
|
@@ -9627,36 +9682,24 @@ function AuthenticatedContent({
|
|
|
9627
9682
|
error
|
|
9628
9683
|
})
|
|
9629
9684
|
}),
|
|
9630
|
-
!hideControls && /* @__PURE__ */
|
|
9685
|
+
!hideControls && /* @__PURE__ */ jsx39("div", {
|
|
9631
9686
|
"data-skippr-no-drag": "",
|
|
9632
9687
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border",
|
|
9633
|
-
children: /* @__PURE__ */
|
|
9688
|
+
children: /* @__PURE__ */ jsx39("div", {
|
|
9634
9689
|
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",
|
|
9635
|
-
children: /* @__PURE__ */
|
|
9690
|
+
children: /* @__PURE__ */ jsxs32("a", {
|
|
9636
9691
|
href: ATTRIBUTION_URL,
|
|
9637
9692
|
target: "_blank",
|
|
9638
9693
|
rel: "noopener noreferrer",
|
|
9639
9694
|
className: `${FOCUS_RING2} skippr:flex skippr:w-fit skippr:items-center skippr:gap-1 skippr:rounded-[4px] skippr:transition-colors skippr:hover:text-foreground`,
|
|
9640
9695
|
children: [
|
|
9641
|
-
/* @__PURE__ */
|
|
9642
|
-
|
|
9643
|
-
className: "skippr:size-3"
|
|
9644
|
-
fill: "none",
|
|
9645
|
-
"aria-hidden": "true",
|
|
9646
|
-
children: [
|
|
9647
|
-
/* @__PURE__ */ jsx38("path", {
|
|
9648
|
-
d: "M119.497 24C124.193 24 128 27.8071 128 32.5033V81.3974C128 83.0339 127.536 84.5616 126.735 85.8587L89.8936 57.4811L89.8943 57.4804C80.4203 50.1648 66.2971 56.7058 66.297 69.0147V89.9007H29.5033C24.8071 89.9007 21 86.0936 21 81.3974V32.5033C21 27.8071 24.8071 24 29.5033 24H119.497ZM76.2715 69.0147C76.2716 65.1724 80.7356 63.0111 83.7978 65.3755L115.637 89.9007H76.2715V69.0147Z",
|
|
9649
|
-
fill: "currentColor"
|
|
9650
|
-
}),
|
|
9651
|
-
/* @__PURE__ */ jsx38("path", {
|
|
9652
|
-
d: "M83.7979 64.8856C80.7358 62.5211 76.2716 64.6824 76.2716 68.5247V120.892C76.2716 125.27 81.8518 127.191 84.5938 123.755L97.6194 107.437C98.1001 106.836 98.7119 106.35 99.4091 106.016C100.106 105.683 100.871 105.51 101.645 105.51H122.946C127.386 105.51 129.316 99.9436 125.81 97.2466L83.7979 64.8856Z",
|
|
9653
|
-
className: "skippr:fill-brand"
|
|
9654
|
-
})
|
|
9655
|
-
]
|
|
9696
|
+
/* @__PURE__ */ jsx39(LogoMark, {
|
|
9697
|
+
decorative: true,
|
|
9698
|
+
className: "skippr:size-3"
|
|
9656
9699
|
}),
|
|
9657
9700
|
ATTRIBUTION_PREFIX,
|
|
9658
9701
|
" ",
|
|
9659
|
-
/* @__PURE__ */
|
|
9702
|
+
/* @__PURE__ */ jsx39("span", {
|
|
9660
9703
|
className: "skippr:font-medium skippr:text-foreground skippr:underline skippr:underline-offset-2",
|
|
9661
9704
|
children: ATTRIBUTION_BRAND
|
|
9662
9705
|
})
|
|
@@ -9664,10 +9707,10 @@ function AuthenticatedContent({
|
|
|
9664
9707
|
})
|
|
9665
9708
|
})
|
|
9666
9709
|
}),
|
|
9667
|
-
/* @__PURE__ */
|
|
9710
|
+
/* @__PURE__ */ jsx39("div", {
|
|
9668
9711
|
"data-skippr-no-drag": "",
|
|
9669
9712
|
className: `skippr:shrink-0 skippr:px-2${hideControls ? " skippr:pb-4 skippr:border-t skippr:border-border skippr:pt-1" : " skippr:pb-1"}`,
|
|
9670
|
-
children: /* @__PURE__ */
|
|
9713
|
+
children: /* @__PURE__ */ jsx39(ConsentNotice, {
|
|
9671
9714
|
leadIn: "By continuing",
|
|
9672
9715
|
determiner: "the",
|
|
9673
9716
|
className: "skippr:whitespace-nowrap skippr:text-[10px]"
|
|
@@ -9677,17 +9720,17 @@ function AuthenticatedContent({
|
|
|
9677
9720
|
});
|
|
9678
9721
|
}
|
|
9679
9722
|
function AuthError() {
|
|
9680
|
-
return /* @__PURE__ */
|
|
9723
|
+
return /* @__PURE__ */ jsxs32("div", {
|
|
9681
9724
|
className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:items-center skippr:justify-center skippr:px-6 skippr:py-4 skippr:text-center",
|
|
9682
9725
|
children: [
|
|
9683
|
-
/* @__PURE__ */
|
|
9726
|
+
/* @__PURE__ */ jsx39(CircleAlert, {
|
|
9684
9727
|
className: "skippr:mb-3 skippr:size-7 skippr:text-destructive"
|
|
9685
9728
|
}),
|
|
9686
|
-
/* @__PURE__ */
|
|
9729
|
+
/* @__PURE__ */ jsx39("p", {
|
|
9687
9730
|
className: "skippr:text-sm skippr:font-medium skippr:text-foreground",
|
|
9688
9731
|
children: "We couldn't verify your session"
|
|
9689
9732
|
}),
|
|
9690
|
-
/* @__PURE__ */
|
|
9733
|
+
/* @__PURE__ */ jsx39("p", {
|
|
9691
9734
|
className: "skippr:mt-1 skippr:text-xs skippr:text-muted-foreground",
|
|
9692
9735
|
children: "Please contact administrator."
|
|
9693
9736
|
})
|
|
@@ -9696,7 +9739,7 @@ function AuthError() {
|
|
|
9696
9739
|
}
|
|
9697
9740
|
function ConnectedBanner() {
|
|
9698
9741
|
const remaining = useSessionRemaining();
|
|
9699
|
-
return /* @__PURE__ */
|
|
9742
|
+
return /* @__PURE__ */ jsx39(SessionWarningBanner, {
|
|
9700
9743
|
remaining
|
|
9701
9744
|
});
|
|
9702
9745
|
}
|
|
@@ -9710,45 +9753,45 @@ function IdleHistory({
|
|
|
9710
9753
|
error
|
|
9711
9754
|
}) {
|
|
9712
9755
|
if (history2.isLoading) {
|
|
9713
|
-
return /* @__PURE__ */
|
|
9756
|
+
return /* @__PURE__ */ jsx39("div", {
|
|
9714
9757
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
9715
|
-
children: /* @__PURE__ */
|
|
9758
|
+
children: /* @__PURE__ */ jsx39(LoadingDots, {
|
|
9716
9759
|
label: "Loading conversation..."
|
|
9717
9760
|
})
|
|
9718
9761
|
});
|
|
9719
9762
|
}
|
|
9720
|
-
return /* @__PURE__ */
|
|
9763
|
+
return /* @__PURE__ */ jsxs32("div", {
|
|
9721
9764
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:animate-skippr-tab-fade",
|
|
9722
9765
|
children: [
|
|
9723
|
-
activeTab === "agenda" ? /* @__PURE__ */
|
|
9766
|
+
activeTab === "agenda" ? /* @__PURE__ */ jsx39("div", {
|
|
9724
9767
|
"data-skippr-no-drag": "",
|
|
9725
9768
|
className: "skippr:min-h-0 skippr:flex-1 skippr:overflow-y-auto",
|
|
9726
|
-
children: /* @__PURE__ */
|
|
9769
|
+
children: /* @__PURE__ */ jsx39(SessionAgenda, {
|
|
9727
9770
|
phases: history2.phases,
|
|
9728
9771
|
hasStarted: history2.phases.length > 0
|
|
9729
9772
|
})
|
|
9730
|
-
}) : /* @__PURE__ */
|
|
9773
|
+
}) : /* @__PURE__ */ jsx39(MessageList, {
|
|
9731
9774
|
messages: history2.messages,
|
|
9732
9775
|
isStreaming: false,
|
|
9733
9776
|
readOnly: true
|
|
9734
9777
|
}),
|
|
9735
|
-
(showTalk || error) && /* @__PURE__ */
|
|
9778
|
+
(showTalk || error) && /* @__PURE__ */ jsxs32("div", {
|
|
9736
9779
|
"data-skippr-no-drag": "",
|
|
9737
9780
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
9738
9781
|
children: [
|
|
9739
|
-
showTalk && /* @__PURE__ */
|
|
9782
|
+
showTalk && /* @__PURE__ */ jsxs32("button", {
|
|
9740
9783
|
type: "button",
|
|
9741
9784
|
onClick: onTalk,
|
|
9742
9785
|
disabled: talkDisabled,
|
|
9743
9786
|
className: "skippr:flex skippr:w-full skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-2 skippr:rounded-xl skippr:bg-primary skippr:px-4 skippr:py-3 skippr:font-semibold skippr:text-[13px] skippr:text-primary-foreground skippr:transition-colors skippr:hover:bg-primary/90 skippr:disabled:cursor-not-allowed skippr:disabled:opacity-50",
|
|
9744
9787
|
children: [
|
|
9745
|
-
/* @__PURE__ */
|
|
9788
|
+
/* @__PURE__ */ jsx39(Mic, {
|
|
9746
9789
|
className: "skippr:size-4"
|
|
9747
9790
|
}),
|
|
9748
9791
|
talkLabel
|
|
9749
9792
|
]
|
|
9750
9793
|
}),
|
|
9751
|
-
error && /* @__PURE__ */
|
|
9794
|
+
error && /* @__PURE__ */ jsx39("p", {
|
|
9752
9795
|
role: "alert",
|
|
9753
9796
|
className: cn("skippr:text-center skippr:text-xs skippr:text-destructive", showTalk && "skippr:mt-2"),
|
|
9754
9797
|
children: error
|
|
@@ -9769,18 +9812,18 @@ function ConnectedBody({
|
|
|
9769
9812
|
const { agentControls, isPaused } = useLiveAgent();
|
|
9770
9813
|
const { isHeld } = useSessionHoldContext();
|
|
9771
9814
|
if (activeTab === "agenda") {
|
|
9772
|
-
return /* @__PURE__ */
|
|
9815
|
+
return /* @__PURE__ */ jsx39("div", {
|
|
9773
9816
|
"data-skippr-no-drag": "",
|
|
9774
9817
|
className: "skippr:min-h-0 skippr:flex-1 skippr:overflow-y-auto skippr:animate-skippr-tab-fade",
|
|
9775
|
-
children: /* @__PURE__ */
|
|
9818
|
+
children: /* @__PURE__ */ jsx39(SessionAgenda, {
|
|
9776
9819
|
phases,
|
|
9777
9820
|
hasStarted: allMessages.length > 0 || agentState === "speaking"
|
|
9778
9821
|
})
|
|
9779
9822
|
}, "agenda");
|
|
9780
9823
|
}
|
|
9781
|
-
return /* @__PURE__ */
|
|
9824
|
+
return /* @__PURE__ */ jsx39("div", {
|
|
9782
9825
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:animate-skippr-tab-fade",
|
|
9783
|
-
children: /* @__PURE__ */
|
|
9826
|
+
children: /* @__PURE__ */ jsx39(MessageList, {
|
|
9784
9827
|
messages: allMessages,
|
|
9785
9828
|
isStreaming: agentState === "speaking",
|
|
9786
9829
|
sendChatMessage,
|
|
@@ -9797,9 +9840,9 @@ function ConnectedBody({
|
|
|
9797
9840
|
import { useContext as useContext19 } from "react";
|
|
9798
9841
|
|
|
9799
9842
|
// src/components/Logo.tsx
|
|
9800
|
-
import { jsx as
|
|
9843
|
+
import { jsx as jsx40, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
9801
9844
|
function Logo({ className, decorative }) {
|
|
9802
|
-
return /* @__PURE__ */
|
|
9845
|
+
return /* @__PURE__ */ jsxs33("svg", {
|
|
9803
9846
|
width: "1em",
|
|
9804
9847
|
height: "1em",
|
|
9805
9848
|
viewBox: "0 0 200 200",
|
|
@@ -9810,20 +9853,20 @@ function Logo({ className, decorative }) {
|
|
|
9810
9853
|
"aria-hidden": decorative || undefined,
|
|
9811
9854
|
className,
|
|
9812
9855
|
children: [
|
|
9813
|
-
/* @__PURE__ */
|
|
9856
|
+
/* @__PURE__ */ jsx40("rect", {
|
|
9814
9857
|
width: "200",
|
|
9815
9858
|
height: "200",
|
|
9816
9859
|
rx: "40",
|
|
9817
9860
|
fill: "#2D2D3F"
|
|
9818
9861
|
}),
|
|
9819
|
-
/* @__PURE__ */
|
|
9862
|
+
/* @__PURE__ */ jsxs33("g", {
|
|
9820
9863
|
transform: "translate(100 100) scale(0.8) translate(-100 -100)",
|
|
9821
9864
|
children: [
|
|
9822
|
-
/* @__PURE__ */
|
|
9865
|
+
/* @__PURE__ */ jsx40("path", {
|
|
9823
9866
|
d: "M144.497 59C149.193 59 153 62.8071 153 67.5033V116.397C153 118.034 152.536 119.562 151.735 120.859L114.894 92.4811L114.894 92.4804C105.42 85.1648 91.2971 91.7058 91.297 104.015V124.901H54.5033C49.8071 124.901 46 121.094 46 116.397V67.5033C46 62.8071 49.8071 59 54.5033 59H144.497ZM101.272 104.015C101.272 100.172 105.736 98.0111 108.798 100.375L140.637 124.901H101.272V104.015Z",
|
|
9824
9867
|
fill: "white"
|
|
9825
9868
|
}),
|
|
9826
|
-
/* @__PURE__ */
|
|
9869
|
+
/* @__PURE__ */ jsx40("path", {
|
|
9827
9870
|
d: "M108.798 99.8856C105.736 97.5211 101.271 99.6824 101.271 103.525V155.892C101.271 160.27 106.852 162.191 109.594 158.755L122.619 142.437C123.1 141.836 123.712 141.35 124.409 141.016C125.106 140.683 125.871 140.51 126.645 140.51H147.946C152.386 140.51 154.316 134.944 150.81 132.247L108.798 99.8856Z",
|
|
9828
9871
|
className: "skippr:fill-brand"
|
|
9829
9872
|
})
|
|
@@ -9834,7 +9877,7 @@ function Logo({ className, decorative }) {
|
|
|
9834
9877
|
}
|
|
9835
9878
|
|
|
9836
9879
|
// src/components/SidebarTrigger.tsx
|
|
9837
|
-
import { jsx as
|
|
9880
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
9838
9881
|
function SidebarTrigger() {
|
|
9839
9882
|
const {
|
|
9840
9883
|
isPanelOpen,
|
|
@@ -9854,27 +9897,27 @@ function SidebarTrigger() {
|
|
|
9854
9897
|
if (isMinimized || isConnected || isStarting || isPausing)
|
|
9855
9898
|
return null;
|
|
9856
9899
|
const handleClick = isPanelOpen && minimizable ? minimizePanel : togglePanel;
|
|
9857
|
-
return /* @__PURE__ */
|
|
9900
|
+
return /* @__PURE__ */ jsx41("button", {
|
|
9858
9901
|
type: "button",
|
|
9859
9902
|
onClick: handleClick,
|
|
9860
9903
|
title: isPanelOpen ? "Close chat" : "Open chat",
|
|
9861
9904
|
"aria-label": isPanelOpen ? "Close chat" : "Open chat",
|
|
9862
9905
|
style: { bottom: triggerBottomPx(launcherBottomPx, popsDown) },
|
|
9863
9906
|
className: cn("skippr:fixed skippr:z-[9998]", "skippr:flex skippr:size-12 skippr:items-center skippr:justify-center", "skippr:shadow-[0_4px_16px_rgba(45,43,61,0.45),0_2px_4px_rgba(0,0,0,0.1)] skippr:transition-all", "skippr:cursor-pointer skippr:hover:brightness-110 skippr:hover:-translate-y-0.5 skippr:active:translate-y-0", isPanelOpen ? "skippr:rounded-[14px] skippr:bg-bubble skippr:text-white" : "skippr:rounded-[10px] skippr:overflow-hidden", position === "right" ? "skippr:right-6" : "skippr:left-6"),
|
|
9864
|
-
children: isPanelOpen ? /* @__PURE__ */
|
|
9907
|
+
children: isPanelOpen ? /* @__PURE__ */ jsx41(ChevronDown, {
|
|
9865
9908
|
className: "skippr:size-5"
|
|
9866
|
-
}) : logoUrl ? /* @__PURE__ */
|
|
9909
|
+
}) : logoUrl ? /* @__PURE__ */ jsx41("img", {
|
|
9867
9910
|
src: logoUrl,
|
|
9868
9911
|
alt: "",
|
|
9869
9912
|
className: "skippr:size-12 skippr:object-cover"
|
|
9870
|
-
}) : /* @__PURE__ */
|
|
9913
|
+
}) : /* @__PURE__ */ jsx41(Logo, {
|
|
9871
9914
|
className: "skippr:size-12"
|
|
9872
9915
|
})
|
|
9873
9916
|
});
|
|
9874
9917
|
}
|
|
9875
9918
|
|
|
9876
9919
|
// src/components/VoiceBar.tsx
|
|
9877
|
-
import { useCallback as
|
|
9920
|
+
import { useCallback as useCallback31, useContext as useContext24, useState as useState37 } from "react";
|
|
9878
9921
|
|
|
9879
9922
|
// src/hooks/useBarNotifications.ts
|
|
9880
9923
|
import { useContext as useContext21 } from "react";
|
|
@@ -9938,37 +9981,15 @@ function useBarNotifications() {
|
|
|
9938
9981
|
}
|
|
9939
9982
|
|
|
9940
9983
|
// src/components/VoiceBarFrame.tsx
|
|
9941
|
-
import { useIsSpeaking, useLocalParticipant as
|
|
9942
|
-
import { useCallback as
|
|
9943
|
-
|
|
9944
|
-
// src/hooks/useHighlightControl.ts
|
|
9945
|
-
import { useLocalParticipant as useLocalParticipant12 } from "@livekit/components-react/hooks";
|
|
9946
|
-
import { useCallback as useCallback27, useEffect as useEffect37, useState as useState28 } from "react";
|
|
9947
|
-
var textEncoder7 = new TextEncoder;
|
|
9948
|
-
function useHighlightControl() {
|
|
9949
|
-
const { localParticipant } = useLocalParticipant12();
|
|
9950
|
-
const [active, setActive] = useState28(isHighlightActive);
|
|
9951
|
-
useEffect37(() => subscribeHighlightActive(setActive), []);
|
|
9952
|
-
const requestClear = useCallback27(async () => {
|
|
9953
|
-
clearHighlight();
|
|
9954
|
-
try {
|
|
9955
|
-
await localParticipant.publishData(textEncoder7.encode(JSON.stringify({ type: "dismiss" })), {
|
|
9956
|
-
reliable: true,
|
|
9957
|
-
topic: HIGHLIGHT_TOPIC
|
|
9958
|
-
});
|
|
9959
|
-
} catch (error) {
|
|
9960
|
-
console.error("Failed to send highlight dismiss:", error);
|
|
9961
|
-
}
|
|
9962
|
-
}, [localParticipant]);
|
|
9963
|
-
return { highlightActive: active, clearHighlight: requestClear };
|
|
9964
|
-
}
|
|
9984
|
+
import { useIsSpeaking, useLocalParticipant as useLocalParticipant12 } from "@livekit/components-react/hooks";
|
|
9985
|
+
import { useCallback as useCallback29, useContext as useContext23, useEffect as useEffect45, useRef as useRef39, useState as useState34 } from "react";
|
|
9965
9986
|
|
|
9966
9987
|
// src/hooks/useKeyboardStop.ts
|
|
9967
|
-
import { useEffect as
|
|
9988
|
+
import { useEffect as useEffect37, useRef as useRef33 } from "react";
|
|
9968
9989
|
function useKeyboardStop({ enabled, onStop }) {
|
|
9969
9990
|
const handler = useRef33(onStop);
|
|
9970
9991
|
handler.current = onStop;
|
|
9971
|
-
|
|
9992
|
+
useEffect37(() => {
|
|
9972
9993
|
if (!enabled)
|
|
9973
9994
|
return;
|
|
9974
9995
|
const onKeyDown = (event) => {
|
|
@@ -9985,18 +10006,18 @@ function useKeyboardStop({ enabled, onStop }) {
|
|
|
9985
10006
|
}
|
|
9986
10007
|
|
|
9987
10008
|
// src/hooks/useSessionTimer.ts
|
|
9988
|
-
import { useEffect as
|
|
10009
|
+
import { useEffect as useEffect39, useState as useState29 } from "react";
|
|
9989
10010
|
|
|
9990
10011
|
// src/hooks/useElapsedSeconds.ts
|
|
9991
|
-
import { useEffect as
|
|
10012
|
+
import { useEffect as useEffect38, useRef as useRef34, useState as useState28 } from "react";
|
|
9992
10013
|
function useElapsedSeconds(isRunning, resetSignal) {
|
|
9993
|
-
const [elapsed, setElapsed] =
|
|
10014
|
+
const [elapsed, setElapsed] = useState28(0);
|
|
9994
10015
|
const accumulatedSecondsRef = useRef34(0);
|
|
9995
|
-
|
|
10016
|
+
useEffect38(() => {
|
|
9996
10017
|
accumulatedSecondsRef.current = 0;
|
|
9997
10018
|
setElapsed(0);
|
|
9998
10019
|
}, [resetSignal]);
|
|
9999
|
-
|
|
10020
|
+
useEffect38(() => {
|
|
10000
10021
|
if (!isRunning)
|
|
10001
10022
|
return;
|
|
10002
10023
|
const resumedAt = Date.now();
|
|
@@ -10021,8 +10042,8 @@ function useSessionTimer(isRunning, resetSignal) {
|
|
|
10021
10042
|
const active = isRunning && remaining !== null;
|
|
10022
10043
|
const warning = active && remaining !== null && remaining <= SESSION_TIMER_WARNING_S;
|
|
10023
10044
|
const revealCycle = !active ? null : warning ? "warning" : "normal";
|
|
10024
|
-
const [revealed, setRevealed] =
|
|
10025
|
-
|
|
10045
|
+
const [revealed, setRevealed] = useState29(false);
|
|
10046
|
+
useEffect39(() => {
|
|
10026
10047
|
if (!revealCycle) {
|
|
10027
10048
|
setRevealed(false);
|
|
10028
10049
|
return;
|
|
@@ -10050,7 +10071,7 @@ function useSessionTimer(isRunning, resetSignal) {
|
|
|
10050
10071
|
}
|
|
10051
10072
|
|
|
10052
10073
|
// src/hooks/useVoiceBarDrag.ts
|
|
10053
|
-
import { useEffect as
|
|
10074
|
+
import { useEffect as useEffect40, useRef as useRef35 } from "react";
|
|
10054
10075
|
import { flushSync as flushSync2 } from "react-dom";
|
|
10055
10076
|
var DRAG_THRESHOLD_PX2 = 5;
|
|
10056
10077
|
function useVoiceBarDrag(containerRef, onDrop, followRefs, reportDragging) {
|
|
@@ -10061,7 +10082,7 @@ function useVoiceBarDrag(containerRef, onDrop, followRefs, reportDragging) {
|
|
|
10061
10082
|
followTargetsRef.current = followRefs;
|
|
10062
10083
|
const reportDraggingRef = useRef35(reportDragging);
|
|
10063
10084
|
reportDraggingRef.current = reportDragging;
|
|
10064
|
-
|
|
10085
|
+
useEffect40(() => {
|
|
10065
10086
|
const el = containerRef.current;
|
|
10066
10087
|
if (!el)
|
|
10067
10088
|
return;
|
|
@@ -10211,8 +10232,8 @@ function useVoiceBarDrag(containerRef, onDrop, followRefs, reportDragging) {
|
|
|
10211
10232
|
}
|
|
10212
10233
|
|
|
10213
10234
|
// src/components/VoiceBarChatLine.tsx
|
|
10214
|
-
import { useCallback as
|
|
10215
|
-
import { jsx as
|
|
10235
|
+
import { useCallback as useCallback27, useContext as useContext22, useEffect as useEffect41, useRef as useRef36, useState as useState30 } from "react";
|
|
10236
|
+
import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
10216
10237
|
var IDLE_HIDE_MS = 6000;
|
|
10217
10238
|
function VoiceBarChatLine({
|
|
10218
10239
|
popsDown,
|
|
@@ -10223,19 +10244,19 @@ function VoiceBarChatLine({
|
|
|
10223
10244
|
const { sendChatMessage, isSendingChat } = useChatMessages();
|
|
10224
10245
|
const ctx = useContext22(LiveAgentContext);
|
|
10225
10246
|
const reportChatActivity = ctx?.reportChatActivity;
|
|
10226
|
-
const [localDraft, setLocalDraft] =
|
|
10247
|
+
const [localDraft, setLocalDraft] = useState30("");
|
|
10227
10248
|
const text = ctx?.chatDraft ?? localDraft;
|
|
10228
10249
|
const setText = ctx?.setChatDraft ?? setLocalDraft;
|
|
10229
10250
|
const inputRef = useRef36(null);
|
|
10230
10251
|
const idleTimerRef = useRef36(null);
|
|
10231
10252
|
const onCloseRef = useRef36(onClose);
|
|
10232
10253
|
onCloseRef.current = onClose;
|
|
10233
|
-
const armIdle =
|
|
10254
|
+
const armIdle = useCallback27(() => {
|
|
10234
10255
|
if (idleTimerRef.current)
|
|
10235
10256
|
clearTimeout(idleTimerRef.current);
|
|
10236
10257
|
idleTimerRef.current = setTimeout(() => onCloseRef.current(), IDLE_HIDE_MS);
|
|
10237
10258
|
}, []);
|
|
10238
|
-
|
|
10259
|
+
useEffect41(() => {
|
|
10239
10260
|
inputRef.current?.focus();
|
|
10240
10261
|
armIdle();
|
|
10241
10262
|
return () => {
|
|
@@ -10261,12 +10282,12 @@ function VoiceBarChatLine({
|
|
|
10261
10282
|
width: 255,
|
|
10262
10283
|
...popsDown ? { top: "calc(100% + 12px)" } : { bottom: "calc(100% + 12px)" }
|
|
10263
10284
|
};
|
|
10264
|
-
return /* @__PURE__ */
|
|
10285
|
+
return /* @__PURE__ */ jsxs34("div", {
|
|
10265
10286
|
style: embedded ? undefined : style,
|
|
10266
10287
|
onPointerDown: (event) => event.stopPropagation(),
|
|
10267
10288
|
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]"),
|
|
10268
10289
|
children: [
|
|
10269
|
-
/* @__PURE__ */
|
|
10290
|
+
/* @__PURE__ */ jsx42("input", {
|
|
10270
10291
|
ref: inputRef,
|
|
10271
10292
|
value: text,
|
|
10272
10293
|
onChange: (event) => {
|
|
@@ -10284,7 +10305,7 @@ function VoiceBarChatLine({
|
|
|
10284
10305
|
"aria-label": "Message",
|
|
10285
10306
|
className: "skippr:min-w-0 skippr:flex-1 skippr:border-none skippr:bg-transparent skippr:py-[7px] skippr:text-[13px] skippr:font-medium skippr:text-[#2D2D3F] skippr:outline-none skippr:placeholder:text-[#b0aca4]"
|
|
10286
10307
|
}),
|
|
10287
|
-
/* @__PURE__ */
|
|
10308
|
+
/* @__PURE__ */ jsx42("button", {
|
|
10288
10309
|
type: "button",
|
|
10289
10310
|
onClick: submit,
|
|
10290
10311
|
disabled: !sendReady,
|
|
@@ -10294,7 +10315,7 @@ function VoiceBarChatLine({
|
|
|
10294
10315
|
},
|
|
10295
10316
|
"aria-label": "Send",
|
|
10296
10317
|
className: "skippr:flex skippr:size-[32px] skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:transition-[filter] skippr:hover:brightness-[1.06] skippr:focus-visible:outline-2 skippr:focus-visible:outline-offset-2 skippr:focus-visible:outline-[var(--skippr-brand)] skippr:disabled:cursor-not-allowed",
|
|
10297
|
-
children: /* @__PURE__ */
|
|
10318
|
+
children: /* @__PURE__ */ jsx42(Send, {
|
|
10298
10319
|
className: "skippr:size-[15px]",
|
|
10299
10320
|
strokeWidth: 2
|
|
10300
10321
|
})
|
|
@@ -10304,78 +10325,78 @@ function VoiceBarChatLine({
|
|
|
10304
10325
|
}
|
|
10305
10326
|
|
|
10306
10327
|
// src/components/VoiceBarLinkCard.tsx
|
|
10307
|
-
import { useCallback as
|
|
10308
|
-
import { jsx as
|
|
10328
|
+
import { useCallback as useCallback28, useEffect as useEffect42, useRef as useRef37, useState as useState31 } from "react";
|
|
10329
|
+
import { jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
10309
10330
|
var COPIED_RESET_MS2 = 2000;
|
|
10310
10331
|
var DISMISS_AFTER_COPY_MS2 = 3000;
|
|
10311
10332
|
function VoiceBarLinkCard({ card, onDismiss }) {
|
|
10312
|
-
const [copied, setCopied] =
|
|
10333
|
+
const [copied, setCopied] = useState31(false);
|
|
10313
10334
|
const dismissTimerRef = useRef37(null);
|
|
10314
|
-
|
|
10335
|
+
useEffect42(() => {
|
|
10315
10336
|
if (!copied)
|
|
10316
10337
|
return;
|
|
10317
10338
|
const timer = setTimeout(() => setCopied(false), COPIED_RESET_MS2);
|
|
10318
10339
|
return () => clearTimeout(timer);
|
|
10319
10340
|
}, [copied]);
|
|
10320
|
-
|
|
10341
|
+
useEffect42(() => {
|
|
10321
10342
|
return () => {
|
|
10322
10343
|
if (dismissTimerRef.current)
|
|
10323
10344
|
clearTimeout(dismissTimerRef.current);
|
|
10324
10345
|
};
|
|
10325
10346
|
}, []);
|
|
10326
|
-
const handleCopy =
|
|
10347
|
+
const handleCopy = useCallback28(async () => {
|
|
10327
10348
|
const ok = await copyToClipboard(card.url);
|
|
10328
10349
|
if (!ok)
|
|
10329
10350
|
return;
|
|
10330
10351
|
setCopied(true);
|
|
10331
10352
|
dismissTimerRef.current = setTimeout(onDismiss, DISMISS_AFTER_COPY_MS2);
|
|
10332
10353
|
}, [card.url, onDismiss]);
|
|
10333
|
-
return /* @__PURE__ */
|
|
10354
|
+
return /* @__PURE__ */ jsxs35("div", {
|
|
10334
10355
|
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)]",
|
|
10335
10356
|
children: [
|
|
10336
|
-
/* @__PURE__ */
|
|
10357
|
+
/* @__PURE__ */ jsx43("button", {
|
|
10337
10358
|
type: "button",
|
|
10338
10359
|
onClick: onDismiss,
|
|
10339
10360
|
"aria-label": "Dismiss link",
|
|
10340
10361
|
className: "skippr:absolute skippr:right-[8px] skippr:top-[8px] skippr:flex skippr:size-[20px] skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-[#b8b4ac] skippr:transition-colors skippr:hover:bg-[#f2f0eb] skippr:hover:text-[#2D2D3F]",
|
|
10341
|
-
children: /* @__PURE__ */
|
|
10362
|
+
children: /* @__PURE__ */ jsx43(X, {
|
|
10342
10363
|
className: "skippr:size-[12px]",
|
|
10343
10364
|
strokeWidth: 2.5
|
|
10344
10365
|
})
|
|
10345
10366
|
}),
|
|
10346
|
-
/* @__PURE__ */
|
|
10367
|
+
/* @__PURE__ */ jsxs35("div", {
|
|
10347
10368
|
className: "skippr:px-[12px] skippr:pb-[10px] skippr:pt-[10px]",
|
|
10348
10369
|
children: [
|
|
10349
|
-
/* @__PURE__ */
|
|
10370
|
+
/* @__PURE__ */ jsx43("p", {
|
|
10350
10371
|
className: "skippr:mr-[22px] skippr:truncate skippr:text-[10px] skippr:text-[#8b877f]",
|
|
10351
10372
|
children: card.url
|
|
10352
10373
|
}),
|
|
10353
|
-
/* @__PURE__ */
|
|
10374
|
+
/* @__PURE__ */ jsxs35("div", {
|
|
10354
10375
|
className: "skippr:mt-[9px] skippr:flex skippr:gap-[8px]",
|
|
10355
10376
|
children: [
|
|
10356
|
-
/* @__PURE__ */
|
|
10377
|
+
/* @__PURE__ */ jsxs35("a", {
|
|
10357
10378
|
href: card.url,
|
|
10358
10379
|
target: "_blank",
|
|
10359
10380
|
rel: "noopener noreferrer",
|
|
10360
10381
|
className: "skippr:flex skippr:flex-1 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-[6px] skippr:rounded-full skippr:bg-[#2D2D3F] skippr:px-[10px] skippr:py-[6px] skippr:text-[11px] skippr:font-semibold skippr:text-white skippr:transition-colors skippr:hover:bg-[#3d3d52]",
|
|
10361
10382
|
children: [
|
|
10362
|
-
/* @__PURE__ */
|
|
10383
|
+
/* @__PURE__ */ jsx43(ExternalLink, {
|
|
10363
10384
|
className: "skippr:size-[11px]",
|
|
10364
10385
|
strokeWidth: 2.5
|
|
10365
10386
|
}),
|
|
10366
10387
|
"open"
|
|
10367
10388
|
]
|
|
10368
10389
|
}),
|
|
10369
|
-
/* @__PURE__ */
|
|
10390
|
+
/* @__PURE__ */ jsxs35("button", {
|
|
10370
10391
|
type: "button",
|
|
10371
10392
|
onClick: handleCopy,
|
|
10372
10393
|
"aria-label": "Copy link",
|
|
10373
10394
|
className: "skippr:flex skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-[6px] skippr:rounded-full skippr:border skippr:border-[rgba(45,45,63,0.12)] skippr:bg-white skippr:px-[10px] skippr:py-[6px] skippr:text-[11px] skippr:font-semibold skippr:text-[#2D2D3F] skippr:transition-colors skippr:hover:bg-[#f2f0eb]",
|
|
10374
10395
|
children: [
|
|
10375
|
-
copied ? /* @__PURE__ */
|
|
10396
|
+
copied ? /* @__PURE__ */ jsx43(Check, {
|
|
10376
10397
|
className: "skippr:size-[11px]",
|
|
10377
10398
|
strokeWidth: 3
|
|
10378
|
-
}) : /* @__PURE__ */
|
|
10399
|
+
}) : /* @__PURE__ */ jsx43(Copy, {
|
|
10379
10400
|
className: "skippr:size-[11px]",
|
|
10380
10401
|
strokeWidth: 2.5
|
|
10381
10402
|
}),
|
|
@@ -10391,13 +10412,13 @@ function VoiceBarLinkCard({ card, onDismiss }) {
|
|
|
10391
10412
|
}
|
|
10392
10413
|
|
|
10393
10414
|
// src/components/VoiceBarNotification.tsx
|
|
10394
|
-
import { useEffect as
|
|
10395
|
-
import { jsx as
|
|
10415
|
+
import { useEffect as useEffect43, useRef as useRef38, useState as useState32 } from "react";
|
|
10416
|
+
import { jsx as jsx44, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
10396
10417
|
function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
10397
|
-
const [index2, setIndex] =
|
|
10398
|
-
const [paused, setPaused] =
|
|
10418
|
+
const [index2, setIndex] = useState32(0);
|
|
10419
|
+
const [paused, setPaused] = useState32(false);
|
|
10399
10420
|
const cardRef = useRef38(null);
|
|
10400
|
-
|
|
10421
|
+
useEffect43(() => {
|
|
10401
10422
|
const el = cardRef.current;
|
|
10402
10423
|
if (!el)
|
|
10403
10424
|
return;
|
|
@@ -10410,7 +10431,7 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
10410
10431
|
el.removeEventListener("mouseleave", leave);
|
|
10411
10432
|
};
|
|
10412
10433
|
}, []);
|
|
10413
|
-
|
|
10434
|
+
useEffect43(() => {
|
|
10414
10435
|
if (paused)
|
|
10415
10436
|
return;
|
|
10416
10437
|
const rotate = setInterval(() => setIndex((current) => (current + 1) % notifications.length), TIP_ROTATE_MS);
|
|
@@ -10437,21 +10458,21 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
10437
10458
|
zIndex: 6,
|
|
10438
10459
|
...popsDown ? { top: "calc(100% + 10px)" } : { bottom: "calc(100% + 10px)" }
|
|
10439
10460
|
};
|
|
10440
|
-
return /* @__PURE__ */
|
|
10461
|
+
return /* @__PURE__ */ jsx44("div", {
|
|
10441
10462
|
style: wrapperStyle,
|
|
10442
10463
|
"data-skippr-no-drag": "",
|
|
10443
|
-
children: /* @__PURE__ */
|
|
10464
|
+
children: /* @__PURE__ */ jsxs36("div", {
|
|
10444
10465
|
ref: cardRef,
|
|
10445
10466
|
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)]",
|
|
10446
10467
|
children: [
|
|
10447
|
-
/* @__PURE__ */
|
|
10468
|
+
/* @__PURE__ */ jsx44("span", {
|
|
10448
10469
|
className: "skippr:flex skippr:min-h-[16px] skippr:min-w-0 skippr:flex-1 skippr:items-center skippr:text-[10px] skippr:font-medium skippr:leading-[1.25] skippr:text-[#5a5650]",
|
|
10449
|
-
children: /* @__PURE__ */
|
|
10470
|
+
children: /* @__PURE__ */ jsx44("span", {
|
|
10450
10471
|
className: "skippr:line-clamp-2",
|
|
10451
10472
|
children: notification.message
|
|
10452
10473
|
})
|
|
10453
10474
|
}),
|
|
10454
|
-
/* @__PURE__ */
|
|
10475
|
+
/* @__PURE__ */ jsx44("button", {
|
|
10455
10476
|
type: "button",
|
|
10456
10477
|
onClick: () => {
|
|
10457
10478
|
notification.activate();
|
|
@@ -10460,7 +10481,7 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
10460
10481
|
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]",
|
|
10461
10482
|
children: "start"
|
|
10462
10483
|
}),
|
|
10463
|
-
hasMultiple && /* @__PURE__ */
|
|
10484
|
+
hasMultiple && /* @__PURE__ */ jsxs36("button", {
|
|
10464
10485
|
type: "button",
|
|
10465
10486
|
onClick: () => setIndex((current) => (current + 1) % notifications.length),
|
|
10466
10487
|
"aria-label": "Next",
|
|
@@ -10470,7 +10491,7 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
10470
10491
|
safeIndex + 1,
|
|
10471
10492
|
"/",
|
|
10472
10493
|
notifications.length,
|
|
10473
|
-
/* @__PURE__ */
|
|
10494
|
+
/* @__PURE__ */ jsx44(ChevronRight, {
|
|
10474
10495
|
className: "skippr:size-[11px]",
|
|
10475
10496
|
strokeWidth: 2.5
|
|
10476
10497
|
})
|
|
@@ -10482,14 +10503,14 @@ function VoiceBarNotification({ notifications, pos, onDismiss }) {
|
|
|
10482
10503
|
}
|
|
10483
10504
|
|
|
10484
10505
|
// src/components/VoiceBarPlanCard.tsx
|
|
10485
|
-
import { useEffect as
|
|
10486
|
-
import { jsx as
|
|
10506
|
+
import { useEffect as useEffect44, useState as useState33 } from "react";
|
|
10507
|
+
import { jsx as jsx45, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
10487
10508
|
var APPROVING_RESET_MS2 = 8000;
|
|
10488
10509
|
function StepIndicator({ step }) {
|
|
10489
10510
|
if (step.status === "done") {
|
|
10490
|
-
return /* @__PURE__ */
|
|
10511
|
+
return /* @__PURE__ */ jsx45("span", {
|
|
10491
10512
|
className: "skippr:flex skippr:size-[16px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-brand",
|
|
10492
|
-
children: /* @__PURE__ */
|
|
10513
|
+
children: /* @__PURE__ */ jsx45(Check, {
|
|
10493
10514
|
className: "skippr:size-[10px]",
|
|
10494
10515
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
10495
10516
|
strokeWidth: 3
|
|
@@ -10497,15 +10518,15 @@ function StepIndicator({ step }) {
|
|
|
10497
10518
|
});
|
|
10498
10519
|
}
|
|
10499
10520
|
if (step.status === "failed") {
|
|
10500
|
-
return /* @__PURE__ */
|
|
10521
|
+
return /* @__PURE__ */ jsx45("span", {
|
|
10501
10522
|
className: "skippr:flex skippr:size-[16px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-[#dc2626]",
|
|
10502
|
-
children: /* @__PURE__ */
|
|
10523
|
+
children: /* @__PURE__ */ jsx45(X, {
|
|
10503
10524
|
className: "skippr:size-[10px] skippr:text-white",
|
|
10504
10525
|
strokeWidth: 3
|
|
10505
10526
|
})
|
|
10506
10527
|
});
|
|
10507
10528
|
}
|
|
10508
|
-
return /* @__PURE__ */
|
|
10529
|
+
return /* @__PURE__ */ jsx45("span", {
|
|
10509
10530
|
className: cn("skippr:flex skippr:size-[16px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-[#f2f0eb] skippr:text-[9px] skippr:font-bold skippr:text-[#8b877f]", step.status === "active" && "skippr:bg-white skippr:text-brand skippr:shadow-[inset_0_0_0_1.5px_var(--skippr-brand,#2bc0ae)]"),
|
|
10510
10531
|
children: step.index + 1
|
|
10511
10532
|
});
|
|
@@ -10517,8 +10538,8 @@ function VoiceBarPlanCard({
|
|
|
10517
10538
|
embedded = false
|
|
10518
10539
|
}) {
|
|
10519
10540
|
const awaitingApproval = plan.state === "proposed";
|
|
10520
|
-
const [isApproving, setIsApproving] =
|
|
10521
|
-
const [lastPlanId, setLastPlanId] =
|
|
10541
|
+
const [isApproving, setIsApproving] = useState33(false);
|
|
10542
|
+
const [lastPlanId, setLastPlanId] = useState33(plan.planId);
|
|
10522
10543
|
if (plan.planId !== lastPlanId) {
|
|
10523
10544
|
setLastPlanId(plan.planId);
|
|
10524
10545
|
setIsApproving(false);
|
|
@@ -10533,87 +10554,87 @@ function VoiceBarPlanCard({
|
|
|
10533
10554
|
const cancel = () => {
|
|
10534
10555
|
sendChatMessage(CANCEL_MESSAGE).catch((e) => console.warn("[Skippr] plan reply failed", e));
|
|
10535
10556
|
};
|
|
10536
|
-
|
|
10557
|
+
useEffect44(() => {
|
|
10537
10558
|
if (!isApproving)
|
|
10538
10559
|
return;
|
|
10539
10560
|
const timer = setTimeout(() => setIsApproving(false), APPROVING_RESET_MS2);
|
|
10540
10561
|
return () => clearTimeout(timer);
|
|
10541
10562
|
}, [isApproving]);
|
|
10542
|
-
|
|
10563
|
+
useEffect44(() => {
|
|
10543
10564
|
if (plan.state !== "completed")
|
|
10544
10565
|
return;
|
|
10545
10566
|
const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
|
|
10546
10567
|
return () => clearTimeout(timer);
|
|
10547
10568
|
}, [plan.state, onDismiss]);
|
|
10548
|
-
return /* @__PURE__ */
|
|
10569
|
+
return /* @__PURE__ */ jsxs37("div", {
|
|
10549
10570
|
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)]"),
|
|
10550
10571
|
children: [
|
|
10551
|
-
/* @__PURE__ */
|
|
10572
|
+
/* @__PURE__ */ jsxs37("div", {
|
|
10552
10573
|
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]",
|
|
10553
10574
|
children: [
|
|
10554
|
-
/* @__PURE__ */
|
|
10575
|
+
/* @__PURE__ */ jsx45("span", {
|
|
10555
10576
|
className: "skippr:text-[11px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#2D2D3F]",
|
|
10556
10577
|
children: "Plan"
|
|
10557
10578
|
}),
|
|
10558
|
-
/* @__PURE__ */
|
|
10579
|
+
/* @__PURE__ */ jsx45("button", {
|
|
10559
10580
|
type: "button",
|
|
10560
10581
|
onClick: onDismiss,
|
|
10561
10582
|
"aria-label": "Dismiss plan",
|
|
10562
10583
|
className: "skippr:flex skippr:size-[20px] skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-[#b8b4ac] skippr:transition-colors skippr:hover:bg-[#f2f0eb] skippr:hover:text-[#2D2D3F]",
|
|
10563
|
-
children: /* @__PURE__ */
|
|
10584
|
+
children: /* @__PURE__ */ jsx45(X, {
|
|
10564
10585
|
className: "skippr:size-[12px]",
|
|
10565
10586
|
strokeWidth: 2.5
|
|
10566
10587
|
})
|
|
10567
10588
|
})
|
|
10568
10589
|
]
|
|
10569
10590
|
}),
|
|
10570
|
-
/* @__PURE__ */
|
|
10591
|
+
/* @__PURE__ */ jsxs37("div", {
|
|
10571
10592
|
className: "skippr:px-[12px] skippr:pb-[10px] skippr:pt-[8px]",
|
|
10572
10593
|
children: [
|
|
10573
|
-
/* @__PURE__ */
|
|
10594
|
+
/* @__PURE__ */ jsx45("p", {
|
|
10574
10595
|
className: "skippr:text-[11.5px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#2D2D3F]",
|
|
10575
10596
|
children: "Here's my plan"
|
|
10576
10597
|
}),
|
|
10577
|
-
awaitingApproval && /* @__PURE__ */
|
|
10598
|
+
awaitingApproval && /* @__PURE__ */ jsxs37("p", {
|
|
10578
10599
|
className: "skippr:mt-[1px] skippr:text-[10px] skippr:text-[#8b877f]",
|
|
10579
10600
|
children: [
|
|
10580
10601
|
plan.steps.length,
|
|
10581
10602
|
" steps · review and approve to run"
|
|
10582
10603
|
]
|
|
10583
10604
|
}),
|
|
10584
|
-
/* @__PURE__ */
|
|
10605
|
+
/* @__PURE__ */ jsx45("div", {
|
|
10585
10606
|
className: "skippr:mt-[8px] skippr:max-h-[132px] skippr:space-y-[6px] skippr:overflow-y-auto skippr:overscroll-contain",
|
|
10586
|
-
children: plan.steps.map((step) => /* @__PURE__ */
|
|
10607
|
+
children: plan.steps.map((step) => /* @__PURE__ */ jsxs37("div", {
|
|
10587
10608
|
className: "skippr:flex skippr:items-center skippr:gap-[7px]",
|
|
10588
10609
|
children: [
|
|
10589
|
-
/* @__PURE__ */
|
|
10610
|
+
/* @__PURE__ */ jsx45(StepIndicator, {
|
|
10590
10611
|
step
|
|
10591
10612
|
}),
|
|
10592
|
-
/* @__PURE__ */
|
|
10613
|
+
/* @__PURE__ */ jsx45("p", {
|
|
10593
10614
|
className: cn("skippr:min-w-0 skippr:text-[11px] skippr:leading-snug skippr:text-[#2D2D3F]", step.status === "pending" && "skippr:text-[#8b877f]", step.status === "failed" && "skippr:text-[#dc2626]"),
|
|
10594
10615
|
children: step.label
|
|
10595
10616
|
})
|
|
10596
10617
|
]
|
|
10597
10618
|
}, step.index))
|
|
10598
10619
|
}),
|
|
10599
|
-
/* @__PURE__ */
|
|
10620
|
+
/* @__PURE__ */ jsx45("div", {
|
|
10600
10621
|
className: "skippr:mt-[9px]",
|
|
10601
|
-
children: awaitingApproval ? /* @__PURE__ */
|
|
10622
|
+
children: awaitingApproval ? /* @__PURE__ */ jsxs37("div", {
|
|
10602
10623
|
className: "skippr:flex skippr:gap-[8px]",
|
|
10603
10624
|
children: [
|
|
10604
|
-
/* @__PURE__ */
|
|
10625
|
+
/* @__PURE__ */ jsxs37("button", {
|
|
10605
10626
|
type: "button",
|
|
10606
10627
|
disabled: isApproving,
|
|
10607
10628
|
onClick: approve,
|
|
10608
10629
|
className: "skippr:flex skippr:flex-1 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-[6px] skippr:rounded-full skippr:bg-[#2D2D3F] skippr:px-[10px] skippr:py-[6px] skippr:text-[11px] skippr:font-semibold skippr:text-white skippr:transition-colors skippr:hover:bg-[#3d3d52] skippr:disabled:cursor-default skippr:disabled:opacity-80 skippr:disabled:hover:bg-[#2D2D3F]",
|
|
10609
10630
|
children: [
|
|
10610
|
-
isApproving && /* @__PURE__ */
|
|
10631
|
+
isApproving && /* @__PURE__ */ jsx45("span", {
|
|
10611
10632
|
className: "skippr:size-[10px] skippr:shrink-0 skippr:animate-spin skippr:rounded-full skippr:border-2 skippr:border-white/30 skippr:border-t-white"
|
|
10612
10633
|
}),
|
|
10613
10634
|
isApproving ? "approving…" : "approve plan"
|
|
10614
10635
|
]
|
|
10615
10636
|
}),
|
|
10616
|
-
/* @__PURE__ */
|
|
10637
|
+
/* @__PURE__ */ jsx45("button", {
|
|
10617
10638
|
type: "button",
|
|
10618
10639
|
disabled: isApproving,
|
|
10619
10640
|
onClick: cancel,
|
|
@@ -10621,11 +10642,11 @@ function VoiceBarPlanCard({
|
|
|
10621
10642
|
children: "cancel"
|
|
10622
10643
|
})
|
|
10623
10644
|
]
|
|
10624
|
-
}) : /* @__PURE__ */
|
|
10645
|
+
}) : /* @__PURE__ */ jsxs37("span", {
|
|
10625
10646
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
10626
10647
|
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",
|
|
10627
10648
|
children: [
|
|
10628
|
-
/* @__PURE__ */
|
|
10649
|
+
/* @__PURE__ */ jsx45(Check, {
|
|
10629
10650
|
className: "skippr:size-[11px]",
|
|
10630
10651
|
strokeWidth: 3
|
|
10631
10652
|
}),
|
|
@@ -10640,7 +10661,7 @@ function VoiceBarPlanCard({
|
|
|
10640
10661
|
}
|
|
10641
10662
|
|
|
10642
10663
|
// src/components/VoiceBarFrame.tsx
|
|
10643
|
-
import { jsx as
|
|
10664
|
+
import { jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
10644
10665
|
var AUTO_OFF_MOTES = [
|
|
10645
10666
|
{ left: "13%", delay: "0s", size: 4 },
|
|
10646
10667
|
{ left: "27%", delay: "0.4s", size: 3 },
|
|
@@ -10650,22 +10671,22 @@ var AUTO_OFF_MOTES = [
|
|
|
10650
10671
|
{ left: "79%", delay: "0.55s", size: 3 },
|
|
10651
10672
|
{ left: "90%", delay: "1.2s", size: 4 }
|
|
10652
10673
|
];
|
|
10653
|
-
var EDGE_BUTTON = "skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:text-[#
|
|
10674
|
+
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]";
|
|
10654
10675
|
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";
|
|
10655
10676
|
function LoadingAvatar({ logoUrl }) {
|
|
10656
|
-
return /* @__PURE__ */
|
|
10677
|
+
return /* @__PURE__ */ jsxs38("span", {
|
|
10657
10678
|
className: "skippr:relative skippr:size-[22px] skippr:shrink-0",
|
|
10658
10679
|
children: [
|
|
10659
|
-
/* @__PURE__ */
|
|
10680
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10660
10681
|
className: "skippr:absolute skippr:-inset-[3px] skippr:rounded-full skippr:border-2 skippr:border-[var(--skippr-brand-ring)] skippr:border-t-brand skippr:animate-spin"
|
|
10661
10682
|
}),
|
|
10662
|
-
/* @__PURE__ */
|
|
10683
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10663
10684
|
className: "skippr:absolute skippr:inset-0 skippr:overflow-hidden skippr:rounded-full",
|
|
10664
|
-
children: logoUrl ? /* @__PURE__ */
|
|
10685
|
+
children: logoUrl ? /* @__PURE__ */ jsx46("img", {
|
|
10665
10686
|
src: logoUrl,
|
|
10666
10687
|
alt: "",
|
|
10667
10688
|
className: "skippr:block skippr:size-full skippr:object-cover"
|
|
10668
|
-
}) : /* @__PURE__ */
|
|
10689
|
+
}) : /* @__PURE__ */ jsx46("span", {
|
|
10669
10690
|
className: "skippr:block skippr:size-full skippr:bg-launcher"
|
|
10670
10691
|
})
|
|
10671
10692
|
})
|
|
@@ -10673,39 +10694,21 @@ function LoadingAvatar({ logoUrl }) {
|
|
|
10673
10694
|
});
|
|
10674
10695
|
}
|
|
10675
10696
|
function BusyRing({ tone }) {
|
|
10676
|
-
return /* @__PURE__ */
|
|
10697
|
+
return /* @__PURE__ */ jsx46("span", {
|
|
10677
10698
|
className: cn("skippr:pointer-events-none skippr:absolute skippr:-inset-[3px] skippr:rounded-full skippr:border-2 skippr:animate-spin", tone === "white" ? "skippr:border-white/30 skippr:border-t-white" : "skippr:border-[var(--skippr-brand-ring)] skippr:border-t-brand")
|
|
10678
10699
|
});
|
|
10679
10700
|
}
|
|
10680
|
-
function useTransientHint(timeoutMs) {
|
|
10681
|
-
const [visible, setVisible] = useState35(false);
|
|
10682
|
-
const hideTimer = useRef39(null);
|
|
10683
|
-
useEffect46(() => () => clearTimeout(hideTimer.current ?? undefined), []);
|
|
10684
|
-
const show = () => {
|
|
10685
|
-
setVisible(true);
|
|
10686
|
-
clearTimeout(hideTimer.current ?? undefined);
|
|
10687
|
-
hideTimer.current = setTimeout(() => setVisible(false), timeoutMs);
|
|
10688
|
-
};
|
|
10689
|
-
const hide = () => {
|
|
10690
|
-
clearTimeout(hideTimer.current ?? undefined);
|
|
10691
|
-
setVisible(false);
|
|
10692
|
-
};
|
|
10693
|
-
return {
|
|
10694
|
-
visible,
|
|
10695
|
-
hintProps: { onMouseEnter: show, onMouseLeave: hide, onFocus: show, onBlur: hide }
|
|
10696
|
-
};
|
|
10697
|
-
}
|
|
10698
10701
|
function AgentDots() {
|
|
10699
|
-
return /* @__PURE__ */
|
|
10702
|
+
return /* @__PURE__ */ jsxs38("span", {
|
|
10700
10703
|
className: "skippr:flex skippr:items-center skippr:gap-[4px]",
|
|
10701
10704
|
children: [
|
|
10702
|
-
/* @__PURE__ */
|
|
10705
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10703
10706
|
className: "skippr:size-[4px] skippr:rounded-full skippr:bg-current skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
10704
10707
|
}),
|
|
10705
|
-
/* @__PURE__ */
|
|
10708
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10706
10709
|
className: "skippr:size-[4px] skippr:rounded-full skippr:bg-current skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.18s_infinite]"
|
|
10707
10710
|
}),
|
|
10708
|
-
/* @__PURE__ */
|
|
10711
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10709
10712
|
className: "skippr:size-[4px] skippr:rounded-full skippr:bg-current skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.36s_infinite]"
|
|
10710
10713
|
})
|
|
10711
10714
|
]
|
|
@@ -10713,9 +10716,9 @@ function AgentDots() {
|
|
|
10713
10716
|
}
|
|
10714
10717
|
function SpeakingBars() {
|
|
10715
10718
|
const { barRefs } = useMicLevel(true);
|
|
10716
|
-
return /* @__PURE__ */
|
|
10719
|
+
return /* @__PURE__ */ jsx46("span", {
|
|
10717
10720
|
className: "skippr:flex skippr:h-[22px] skippr:items-center skippr:gap-[3px]",
|
|
10718
|
-
children: Array.from({ length: MIC_BARS }).map((_, index2) => /* @__PURE__ */
|
|
10721
|
+
children: Array.from({ length: MIC_BARS }).map((_, index2) => /* @__PURE__ */ jsx46("span", {
|
|
10719
10722
|
ref: (el) => {
|
|
10720
10723
|
barRefs.current[index2] = el;
|
|
10721
10724
|
},
|
|
@@ -10724,27 +10727,41 @@ function SpeakingBars() {
|
|
|
10724
10727
|
}, index2))
|
|
10725
10728
|
});
|
|
10726
10729
|
}
|
|
10727
|
-
var
|
|
10728
|
-
var
|
|
10729
|
-
var
|
|
10730
|
-
|
|
10731
|
-
|
|
10732
|
-
const {
|
|
10733
|
-
|
|
10734
|
-
|
|
10735
|
-
|
|
10736
|
-
|
|
10737
|
-
|
|
10738
|
-
|
|
10739
|
-
|
|
10740
|
-
|
|
10741
|
-
|
|
10742
|
-
|
|
10743
|
-
|
|
10730
|
+
var MIC_LEVEL_BARS = 3;
|
|
10731
|
+
var MIC_LEVEL_IDLE_PX = 3;
|
|
10732
|
+
var MIC_LEVEL_GROWTH_PX = 8;
|
|
10733
|
+
var MIC_LEVEL_NOISE_GATE = 0.15;
|
|
10734
|
+
function MicLevelGlyph({ muted }) {
|
|
10735
|
+
const { microphoneTrack } = useLocalParticipant12();
|
|
10736
|
+
const { barRefs, isTalking } = useAudioLevelBars(muted ? undefined : microphoneTrack?.track?.mediaStreamTrack, {
|
|
10737
|
+
barCount: MIC_LEVEL_BARS,
|
|
10738
|
+
idleHeightPx: MIC_LEVEL_IDLE_PX,
|
|
10739
|
+
maxGrowthPx: MIC_LEVEL_GROWTH_PX,
|
|
10740
|
+
noiseGate: MIC_LEVEL_NOISE_GATE
|
|
10741
|
+
});
|
|
10742
|
+
if (muted)
|
|
10743
|
+
return /* @__PURE__ */ jsx46(MicOff, {
|
|
10744
|
+
className: "skippr:size-[13px]",
|
|
10745
|
+
strokeWidth: 2
|
|
10746
|
+
});
|
|
10747
|
+
if (!isTalking)
|
|
10748
|
+
return /* @__PURE__ */ jsx46(Mic, {
|
|
10749
|
+
className: "skippr:size-[13px]",
|
|
10750
|
+
strokeWidth: 2
|
|
10751
|
+
});
|
|
10752
|
+
return /* @__PURE__ */ jsx46("span", {
|
|
10753
|
+
className: "skippr:flex skippr:h-[11px] skippr:w-[9px] skippr:items-center skippr:justify-between",
|
|
10754
|
+
children: Array.from({ length: MIC_LEVEL_BARS }).map((_, index2) => /* @__PURE__ */ jsx46("span", {
|
|
10755
|
+
ref: (el) => {
|
|
10756
|
+
barRefs.current[index2] = el;
|
|
10757
|
+
},
|
|
10758
|
+
className: "skippr:w-[2px] skippr:rounded-full skippr:bg-current skippr:transition-[height] skippr:duration-75",
|
|
10759
|
+
style: { height: MIC_LEVEL_IDLE_PX }
|
|
10760
|
+
}, index2))
|
|
10744
10761
|
});
|
|
10745
10762
|
}
|
|
10746
10763
|
function ShortcutChip({ children }) {
|
|
10747
|
-
return /* @__PURE__ */
|
|
10764
|
+
return /* @__PURE__ */ jsx46("span", {
|
|
10748
10765
|
className: "skippr:rounded-[5px] skippr:border skippr:border-[rgba(45,45,63,0.1)] skippr:bg-[#f2f0eb] skippr:px-[5px] skippr:py-[1px] skippr:font-mono skippr:text-[10px] skippr:font-semibold skippr:text-[#6b6660]",
|
|
10749
10766
|
children
|
|
10750
10767
|
});
|
|
@@ -10756,8 +10773,8 @@ function ShortcutHint({
|
|
|
10756
10773
|
children
|
|
10757
10774
|
}) {
|
|
10758
10775
|
const ref = useRef39(null);
|
|
10759
|
-
const [visible, setVisible] =
|
|
10760
|
-
|
|
10776
|
+
const [visible, setVisible] = useState34(false);
|
|
10777
|
+
useEffect45(() => {
|
|
10761
10778
|
if (!enabled)
|
|
10762
10779
|
return;
|
|
10763
10780
|
const el = ref.current;
|
|
@@ -10780,56 +10797,56 @@ function ShortcutHint({
|
|
|
10780
10797
|
el.removeEventListener("mouseleave", leave);
|
|
10781
10798
|
};
|
|
10782
10799
|
}, [enabled, seenRef]);
|
|
10783
|
-
return /* @__PURE__ */
|
|
10800
|
+
return /* @__PURE__ */ jsxs38("div", {
|
|
10784
10801
|
ref,
|
|
10785
10802
|
className: "skippr:relative skippr:flex skippr:min-w-[96px] skippr:flex-1",
|
|
10786
10803
|
children: [
|
|
10787
|
-
enabled && visible && !suppressed && /* @__PURE__ */
|
|
10804
|
+
enabled && visible && !suppressed && /* @__PURE__ */ jsxs38("div", {
|
|
10788
10805
|
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]",
|
|
10789
10806
|
children: [
|
|
10790
|
-
/* @__PURE__ */
|
|
10807
|
+
/* @__PURE__ */ jsxs38("span", {
|
|
10791
10808
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
10792
10809
|
children: [
|
|
10793
|
-
/* @__PURE__ */
|
|
10810
|
+
/* @__PURE__ */ jsx46(ShortcutChip, {
|
|
10794
10811
|
children: "Ctrl"
|
|
10795
10812
|
}),
|
|
10796
|
-
/* @__PURE__ */
|
|
10813
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10797
10814
|
className: "skippr:text-[9px] skippr:text-[#c9c5bd]",
|
|
10798
10815
|
children: "+"
|
|
10799
10816
|
}),
|
|
10800
|
-
/* @__PURE__ */
|
|
10817
|
+
/* @__PURE__ */ jsx46(ShortcutChip, {
|
|
10801
10818
|
children: "Space"
|
|
10802
10819
|
})
|
|
10803
10820
|
]
|
|
10804
10821
|
}),
|
|
10805
|
-
/* @__PURE__ */
|
|
10822
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10806
10823
|
className: "skippr:text-[10.5px] skippr:font-medium skippr:text-[#8b877f]",
|
|
10807
10824
|
children: "talk"
|
|
10808
10825
|
}),
|
|
10809
|
-
/* @__PURE__ */
|
|
10826
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10810
10827
|
className: "skippr:text-[10px] skippr:text-[#cbc7bf]",
|
|
10811
10828
|
children: "·"
|
|
10812
10829
|
}),
|
|
10813
|
-
/* @__PURE__ */
|
|
10830
|
+
/* @__PURE__ */ jsxs38("span", {
|
|
10814
10831
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
10815
10832
|
children: [
|
|
10816
|
-
/* @__PURE__ */
|
|
10833
|
+
/* @__PURE__ */ jsx46(ShortcutChip, {
|
|
10817
10834
|
children: "Ctrl"
|
|
10818
10835
|
}),
|
|
10819
|
-
/* @__PURE__ */
|
|
10836
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10820
10837
|
className: "skippr:text-[9px] skippr:text-[#c9c5bd]",
|
|
10821
10838
|
children: "+"
|
|
10822
10839
|
}),
|
|
10823
|
-
/* @__PURE__ */
|
|
10840
|
+
/* @__PURE__ */ jsx46(ShortcutChip, {
|
|
10824
10841
|
children: "X"
|
|
10825
10842
|
})
|
|
10826
10843
|
]
|
|
10827
10844
|
}),
|
|
10828
|
-
/* @__PURE__ */
|
|
10845
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10829
10846
|
className: "skippr:text-[10.5px] skippr:font-medium skippr:text-[#8b877f]",
|
|
10830
|
-
children: "
|
|
10847
|
+
children: "end"
|
|
10831
10848
|
}),
|
|
10832
|
-
/* @__PURE__ */
|
|
10849
|
+
/* @__PURE__ */ jsx46("span", {
|
|
10833
10850
|
className: "skippr:absolute skippr:left-1/2 skippr:top-full skippr:size-[9px] skippr:-translate-x-1/2 skippr:-translate-y-[4px] skippr:rotate-45 skippr:border-b skippr:border-r skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white"
|
|
10834
10851
|
})
|
|
10835
10852
|
]
|
|
@@ -10875,48 +10892,46 @@ function VoiceBarFrame({
|
|
|
10875
10892
|
setAutoStartAfterLogin
|
|
10876
10893
|
} = ctx;
|
|
10877
10894
|
const needsLogin = !usesHostAuth && !isAuthenticated;
|
|
10878
|
-
const [loginOpen, setLoginOpen] =
|
|
10879
|
-
|
|
10895
|
+
const [loginOpen, setLoginOpen] = useState34(false);
|
|
10896
|
+
useEffect45(() => {
|
|
10880
10897
|
if (!needsLogin)
|
|
10881
10898
|
setLoginOpen(false);
|
|
10882
10899
|
}, [needsLogin]);
|
|
10883
|
-
const [bannerOpen, setBannerOpen] =
|
|
10900
|
+
const [bannerOpen, setBannerOpen] = useState34(false);
|
|
10884
10901
|
const hasNotifications = notifications.length > 0;
|
|
10885
10902
|
const notifAccent = notifications[0]?.accentColor;
|
|
10886
|
-
const closeBanner =
|
|
10903
|
+
const closeBanner = useCallback29(() => setBannerOpen(false), []);
|
|
10887
10904
|
const containerRef = useRef39(null);
|
|
10888
|
-
const setContainerRefs =
|
|
10905
|
+
const setContainerRefs = useCallback29((node) => {
|
|
10889
10906
|
containerRef.current = node;
|
|
10890
10907
|
voiceBarRef.current = node;
|
|
10891
10908
|
}, [voiceBarRef]);
|
|
10892
10909
|
const dragFollowers = isPanelOpen ? [panelRef] : null;
|
|
10893
10910
|
const { wasDraggedRef } = useVoiceBarDrag(containerRef, onDrop, dragFollowers, setDragging);
|
|
10894
10911
|
const { isMuted, toggleMute } = useMediaControls();
|
|
10895
|
-
const { localParticipant } =
|
|
10912
|
+
const { localParticipant } = useLocalParticipant12();
|
|
10896
10913
|
const isUserSpeaking = useIsSpeaking(localParticipant);
|
|
10897
10914
|
const { state } = useAgentVoiceState();
|
|
10898
10915
|
const { isCapturingSpeech, toggle: toggleTapToTalk, start, commit } = useVoiceTurnContext();
|
|
10899
10916
|
const holdPushToTalk = usePointerHold(start, commit);
|
|
10900
|
-
const { isHeld,
|
|
10917
|
+
const { isHeld, toggle: togglePause } = useSessionHoldContext();
|
|
10901
10918
|
const plan = usePlanUpdates();
|
|
10902
10919
|
const linkCard = useLinkCard();
|
|
10903
10920
|
const { sendChatMessage } = useChatMessages();
|
|
10904
|
-
const [dismissedFloatingPlanId, setDismissedFloatingPlanId] =
|
|
10905
|
-
const [dismissedBlockPlanId, setDismissedBlockPlanId] =
|
|
10906
|
-
const [dismissedLinkCardId, setDismissedLinkCardId] =
|
|
10921
|
+
const [dismissedFloatingPlanId, setDismissedFloatingPlanId] = useState34(null);
|
|
10922
|
+
const [dismissedBlockPlanId, setDismissedBlockPlanId] = useState34(null);
|
|
10923
|
+
const [dismissedLinkCardId, setDismissedLinkCardId] = useState34(null);
|
|
10907
10924
|
const micMode = agentControls?.micMode;
|
|
10908
10925
|
const pushOrTap = isRequestResponseMicMode(micMode);
|
|
10909
10926
|
const isPushToTalk = micMode === MIC_MODE.PushToTalk;
|
|
10910
10927
|
const agentActive = state === "speaking" || state === "thinking";
|
|
10911
|
-
const { actionsActive
|
|
10912
|
-
const { highlightActive: highlightActive2, clearHighlight: clearHighlight2 } = useHighlightControl();
|
|
10913
|
-
const { visible: stopHintVisible, hintProps: stopHintProps } = useTransientHint(1000);
|
|
10928
|
+
const { actionsActive } = useActionControl();
|
|
10914
10929
|
const showActionControl = isConnected && captureMode === CAPTURE_MODE.Auto && actionsActive;
|
|
10915
10930
|
const chatSurface = agentControls?.chat ?? DEFAULT_CHAT_SURFACE;
|
|
10916
10931
|
const isRoomChat = chatSurface === CHAT_SURFACE.Room;
|
|
10917
|
-
const [chatLineOpen, setChatLineOpen] =
|
|
10918
|
-
const [chatLineMounted, setChatLineMounted] =
|
|
10919
|
-
const [chatLineClosing, setChatLineClosing] =
|
|
10932
|
+
const [chatLineOpen, setChatLineOpen] = useState34(false);
|
|
10933
|
+
const [chatLineMounted, setChatLineMounted] = useState34(false);
|
|
10934
|
+
const [chatLineClosing, setChatLineClosing] = useState34(false);
|
|
10920
10935
|
const chatOpen = isRoomChat ? isPanelOpen : chatLineOpen;
|
|
10921
10936
|
const lineBlockOpen = !isRoomChat && chatLineMounted;
|
|
10922
10937
|
const toggleChat = () => {
|
|
@@ -10926,7 +10941,7 @@ function VoiceBarFrame({
|
|
|
10926
10941
|
setChatLineOpen((open) => !open);
|
|
10927
10942
|
}
|
|
10928
10943
|
};
|
|
10929
|
-
|
|
10944
|
+
useEffect45(() => {
|
|
10930
10945
|
if (chatLineOpen) {
|
|
10931
10946
|
setChatLineMounted(true);
|
|
10932
10947
|
setChatLineClosing(false);
|
|
@@ -10952,6 +10967,8 @@ function VoiceBarFrame({
|
|
|
10952
10967
|
const isLoading = isStarting || isExchanging;
|
|
10953
10968
|
const canStart = isAuthenticated && (!!defaultAgentId || !!pendingStart);
|
|
10954
10969
|
const showClose = canFold || sessionLive;
|
|
10970
|
+
const showLivePill = !isLoading && isConnected && !textMode && !pushOrTap;
|
|
10971
|
+
const barWidthClass = !showLivePill ? "skippr:w-[255px]" : isHeld ? "skippr:w-[120px]" : "skippr:w-[156px]";
|
|
10955
10972
|
const logoUrl = appearance?.logoUrl ?? null;
|
|
10956
10973
|
const ifNotDragged = (action) => () => {
|
|
10957
10974
|
if (wasDraggedRef.current)
|
|
@@ -10973,17 +10990,17 @@ function VoiceBarFrame({
|
|
|
10973
10990
|
const requestLabel = agentStateLabel ?? (isCapturingSpeech ? "listening…" : idleRequestLabel);
|
|
10974
10991
|
const livePillBg = agentActive && !isHeld ? "var(--skippr-brand-active)" : "var(--skippr-brand, #2bc0ae)";
|
|
10975
10992
|
const glow = isConnected && !isHeld && agentActive;
|
|
10976
|
-
const [autoOffClosing, setAutoOffClosing] =
|
|
10993
|
+
const [autoOffClosing, setAutoOffClosing] = useState34(false);
|
|
10977
10994
|
const { reportActivity } = useIdleAutoOff({
|
|
10978
10995
|
enabled: isConnected && !autoOffClosing,
|
|
10979
10996
|
active: agentActive || isCapturingSpeech || isUserSpeaking,
|
|
10980
10997
|
onExpire: () => setAutoOffClosing(true)
|
|
10981
10998
|
});
|
|
10982
|
-
|
|
10999
|
+
useEffect45(() => {
|
|
10983
11000
|
if (chatActivityAt)
|
|
10984
11001
|
reportActivity();
|
|
10985
11002
|
}, [chatActivityAt, reportActivity]);
|
|
10986
|
-
|
|
11003
|
+
useEffect45(() => {
|
|
10987
11004
|
if (!autoOffClosing)
|
|
10988
11005
|
return;
|
|
10989
11006
|
if (!isConnected) {
|
|
@@ -10999,12 +11016,12 @@ function VoiceBarFrame({
|
|
|
10999
11016
|
const floatingPlanActive = planEnabled && !isRoomChat && !lineBlockOpen && activePlan.planId !== dismissedFloatingPlanId;
|
|
11000
11017
|
const planInLineBlock = planEnabled && lineBlockOpen && activePlan.planId !== dismissedBlockPlanId;
|
|
11001
11018
|
const planCardActive = floatingPlanActive || planInLineBlock;
|
|
11002
|
-
|
|
11019
|
+
useEffect45(() => {
|
|
11003
11020
|
if (lineBlockOpen)
|
|
11004
11021
|
setDismissedBlockPlanId(null);
|
|
11005
11022
|
}, [lineBlockOpen]);
|
|
11006
|
-
const [autoOpenedPlanId, setAutoOpenedPlanId] =
|
|
11007
|
-
|
|
11023
|
+
const [autoOpenedPlanId, setAutoOpenedPlanId] = useState34(null);
|
|
11024
|
+
useEffect45(() => {
|
|
11008
11025
|
if (!isRoomChat || !planEnabled || !activePlan)
|
|
11009
11026
|
return;
|
|
11010
11027
|
if (activePlan.planId === autoOpenedPlanId)
|
|
@@ -11017,15 +11034,12 @@ function VoiceBarFrame({
|
|
|
11017
11034
|
const linkCardActive = !!visibleLinkCard && isConnected && !planCardActive && !(isRoomChat && chatOpen) && !isCapturingSpeech && !isHeld && !autoOffClosing;
|
|
11018
11035
|
const bannerActive = hasNotifications && bannerOpen;
|
|
11019
11036
|
const slotClaimed = chatOpen || bannerActive || lineBlockOpen;
|
|
11020
|
-
const autoBase =
|
|
11021
|
-
const showHeldStrip = !slotClaimed && autoBase && isHeld;
|
|
11037
|
+
const autoBase = showLivePill && !autoOffClosing;
|
|
11022
11038
|
const showLiveStrip = !slotClaimed && autoBase && !isHeld && !planCardActive && (state === "thinking" || showActionControl);
|
|
11023
|
-
const showTimerStrip = !slotClaimed && !autoOffClosing && !isCapturingSpeech && !planCardActive && !showLiveStrip && !
|
|
11039
|
+
const showTimerStrip = !slotClaimed && !autoOffClosing && !isCapturingSpeech && !planCardActive && !showLiveStrip && !isHeld && !!sessionTimer;
|
|
11024
11040
|
const showAutoOffStrip = !slotClaimed && autoOffClosing;
|
|
11025
|
-
const hintSuppressed = slotClaimed || isCapturingSpeech || planCardActive || showLiveStrip ||
|
|
11041
|
+
const hintSuppressed = slotClaimed || isCapturingSpeech || planCardActive || showLiveStrip || isHeld || showTimerStrip || showAutoOffStrip;
|
|
11026
11042
|
const liveStripLabel = showActionControl ? "working…" : "thinking…";
|
|
11027
|
-
const heldMinutes = Math.floor(holdCountdown / 60);
|
|
11028
|
-
const heldSeconds = String(holdCountdown % 60).padStart(2, "0");
|
|
11029
11043
|
const popsDown = barPopsDown(pos);
|
|
11030
11044
|
const isLeftAligned = barLeftAligned(pos);
|
|
11031
11045
|
const stripStyle = {
|
|
@@ -11047,12 +11061,12 @@ function VoiceBarFrame({
|
|
|
11047
11061
|
...popsDown ? { top: "calc(100% + 12px)" } : { bottom: "calc(100% + 12px)" }
|
|
11048
11062
|
};
|
|
11049
11063
|
const pillEvaporate = autoOffClosing ? "skippr:[animation:skippr-evaporate_3.2s_ease-in_forwards] skippr:motion-reduce:animate-none" : "";
|
|
11050
|
-
return /* @__PURE__ */
|
|
11064
|
+
return /* @__PURE__ */ jsxs38("div", {
|
|
11051
11065
|
ref: setContainerRefs,
|
|
11052
11066
|
style: barPosStyle(pos),
|
|
11053
|
-
className: "skippr:fixed skippr:z-[9999] skippr:flex skippr:
|
|
11067
|
+
className: cn("skippr:fixed skippr:z-[9999] skippr:flex skippr:touch-none skippr:cursor-grab skippr:items-center", barWidthClass),
|
|
11054
11068
|
children: [
|
|
11055
|
-
glow && /* @__PURE__ */
|
|
11069
|
+
glow && /* @__PURE__ */ jsx46("span", {
|
|
11056
11070
|
"aria-hidden": true,
|
|
11057
11071
|
className: "skippr:pointer-events-none skippr:absolute skippr:-left-[6px] skippr:-right-[6px] skippr:-top-[13px] skippr:h-[24px] skippr:rounded-full skippr:animate-skippr-flow skippr:motion-reduce:animate-none",
|
|
11058
11072
|
style: {
|
|
@@ -11062,13 +11076,13 @@ function VoiceBarFrame({
|
|
|
11062
11076
|
backgroundSize: "300% 100%"
|
|
11063
11077
|
}
|
|
11064
11078
|
}),
|
|
11065
|
-
/* @__PURE__ */
|
|
11079
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11066
11080
|
className: cn("skippr:pointer-events-none skippr:absolute skippr:inset-0 skippr:rounded-full skippr:border skippr:border-[rgba(45,45,63,0.08)] skippr:bg-white skippr:transition-shadow", glow ? "skippr:shadow-[0_10px_30px_rgba(45,45,63,0.14),0_0_0_1.5px_var(--skippr-brand-ring)]" : "skippr:shadow-[0_8px_30px_rgba(45,45,63,0.14),0_2px_6px_rgba(45,45,63,0.06)]", pillEvaporate)
|
|
11067
11081
|
}),
|
|
11068
|
-
autoOffClosing && /* @__PURE__ */
|
|
11082
|
+
autoOffClosing && /* @__PURE__ */ jsx46("span", {
|
|
11069
11083
|
"aria-hidden": true,
|
|
11070
11084
|
className: "skippr:pointer-events-none skippr:absolute skippr:inset-0 skippr:z-[4] skippr:overflow-visible",
|
|
11071
|
-
children: AUTO_OFF_MOTES.map((mote) => /* @__PURE__ */
|
|
11085
|
+
children: AUTO_OFF_MOTES.map((mote) => /* @__PURE__ */ jsx46("span", {
|
|
11072
11086
|
className: "skippr:absolute skippr:top-1/2 skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-mote-rise_1.6s_ease-out_infinite] skippr:motion-reduce:animate-none",
|
|
11073
11087
|
style: {
|
|
11074
11088
|
left: mote.left,
|
|
@@ -11078,128 +11092,100 @@ function VoiceBarFrame({
|
|
|
11078
11092
|
}
|
|
11079
11093
|
}, mote.left))
|
|
11080
11094
|
}),
|
|
11081
|
-
showLiveStrip && /* @__PURE__ */
|
|
11095
|
+
showLiveStrip && /* @__PURE__ */ jsx46("div", {
|
|
11082
11096
|
style: stripStyle,
|
|
11083
11097
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
11084
|
-
children: /* @__PURE__ */
|
|
11098
|
+
children: /* @__PURE__ */ jsxs38("div", {
|
|
11085
11099
|
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]",
|
|
11086
11100
|
children: [
|
|
11087
|
-
/* @__PURE__ */
|
|
11101
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11088
11102
|
style: { background: livePillBg },
|
|
11089
11103
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
11090
11104
|
}),
|
|
11091
|
-
/* @__PURE__ */
|
|
11105
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11092
11106
|
className: "skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#5a5650]",
|
|
11093
11107
|
children: liveStripLabel
|
|
11094
11108
|
})
|
|
11095
11109
|
]
|
|
11096
11110
|
})
|
|
11097
11111
|
}),
|
|
11098
|
-
|
|
11099
|
-
style: stripStyle,
|
|
11100
|
-
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
11101
|
-
children: /* @__PURE__ */ jsxs37("div", {
|
|
11102
|
-
role: "timer",
|
|
11103
|
-
"aria-label": `Agent closes in ${holdCountdown} seconds`,
|
|
11104
|
-
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]",
|
|
11105
|
-
children: [
|
|
11106
|
-
/* @__PURE__ */ jsx45("span", {
|
|
11107
|
-
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full skippr:bg-[#b9b4ab]"
|
|
11108
|
-
}),
|
|
11109
|
-
/* @__PURE__ */ jsxs37("span", {
|
|
11110
|
-
className: "skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#5a5650]",
|
|
11111
|
-
children: [
|
|
11112
|
-
"Agent closes in",
|
|
11113
|
-
/* @__PURE__ */ jsxs37("span", {
|
|
11114
|
-
className: "skippr:ml-1 skippr:tabular-nums",
|
|
11115
|
-
children: [
|
|
11116
|
-
heldMinutes,
|
|
11117
|
-
":",
|
|
11118
|
-
heldSeconds
|
|
11119
|
-
]
|
|
11120
|
-
})
|
|
11121
|
-
]
|
|
11122
|
-
})
|
|
11123
|
-
]
|
|
11124
|
-
})
|
|
11125
|
-
}),
|
|
11126
|
-
showTimerStrip && sessionTimer && /* @__PURE__ */ jsx45("div", {
|
|
11112
|
+
showTimerStrip && sessionTimer && /* @__PURE__ */ jsx46("div", {
|
|
11127
11113
|
style: stripStyle,
|
|
11128
11114
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
11129
|
-
children: /* @__PURE__ */
|
|
11115
|
+
children: /* @__PURE__ */ jsxs38("div", {
|
|
11130
11116
|
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]",
|
|
11131
11117
|
children: [
|
|
11132
|
-
/* @__PURE__ */
|
|
11118
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11133
11119
|
style: { background: sessionTimer.warning ? "#f59e0b" : "#b9b4ab" },
|
|
11134
11120
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full"
|
|
11135
11121
|
}),
|
|
11136
|
-
/* @__PURE__ */
|
|
11122
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11137
11123
|
className: cn("skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em]", sessionTimer.warning ? "skippr:text-[#92400e]" : "skippr:text-[#5a5650]"),
|
|
11138
11124
|
children: sessionTimer.label
|
|
11139
11125
|
})
|
|
11140
11126
|
]
|
|
11141
11127
|
})
|
|
11142
11128
|
}),
|
|
11143
|
-
showAutoOffStrip && /* @__PURE__ */
|
|
11129
|
+
showAutoOffStrip && /* @__PURE__ */ jsx46("div", {
|
|
11144
11130
|
role: "status",
|
|
11145
11131
|
style: stripStyle,
|
|
11146
11132
|
className: "skippr:pointer-events-none skippr:z-[6]",
|
|
11147
|
-
children: /* @__PURE__ */
|
|
11133
|
+
children: /* @__PURE__ */ jsxs38("div", {
|
|
11148
11134
|
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]",
|
|
11149
11135
|
children: [
|
|
11150
|
-
/* @__PURE__ */
|
|
11136
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11151
11137
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full skippr:bg-[#b9b4ab] skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
11152
11138
|
}),
|
|
11153
|
-
/* @__PURE__ */
|
|
11139
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11154
11140
|
className: "skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#5a5650]",
|
|
11155
11141
|
children: "No activity — closing…"
|
|
11156
11142
|
})
|
|
11157
11143
|
]
|
|
11158
11144
|
})
|
|
11159
11145
|
}),
|
|
11160
|
-
floatingPlanActive && activePlan && /* @__PURE__ */
|
|
11146
|
+
floatingPlanActive && activePlan && /* @__PURE__ */ jsx46("div", {
|
|
11161
11147
|
style: planCardStyle,
|
|
11162
11148
|
className: "skippr:z-[6]",
|
|
11163
11149
|
"data-skippr-no-drag": "",
|
|
11164
|
-
children: /* @__PURE__ */
|
|
11150
|
+
children: /* @__PURE__ */ jsx46(VoiceBarPlanCard, {
|
|
11165
11151
|
plan: activePlan,
|
|
11166
11152
|
sendChatMessage,
|
|
11167
11153
|
onDismiss: () => setDismissedFloatingPlanId(activePlan.planId)
|
|
11168
11154
|
}, activePlan.planId)
|
|
11169
11155
|
}),
|
|
11170
|
-
linkCardActive && visibleLinkCard && /* @__PURE__ */
|
|
11156
|
+
linkCardActive && visibleLinkCard && /* @__PURE__ */ jsx46("div", {
|
|
11171
11157
|
style: planCardStyle,
|
|
11172
11158
|
className: "skippr:z-[6]",
|
|
11173
11159
|
"data-skippr-no-drag": "",
|
|
11174
|
-
children: /* @__PURE__ */
|
|
11160
|
+
children: /* @__PURE__ */ jsx46(VoiceBarLinkCard, {
|
|
11175
11161
|
card: visibleLinkCard,
|
|
11176
11162
|
onDismiss: () => setDismissedLinkCardId(visibleLinkCard.cardId)
|
|
11177
11163
|
}, visibleLinkCard.cardId)
|
|
11178
11164
|
}),
|
|
11179
|
-
loginOpen && needsLogin && /* @__PURE__ */
|
|
11165
|
+
loginOpen && needsLogin && /* @__PURE__ */ jsx46("div", {
|
|
11180
11166
|
style: planCardStyle,
|
|
11181
11167
|
className: "skippr:z-[6]",
|
|
11182
11168
|
"data-skippr-no-drag": "",
|
|
11183
11169
|
onPointerDown: (event) => event.stopPropagation(),
|
|
11184
|
-
children: /* @__PURE__ */
|
|
11170
|
+
children: /* @__PURE__ */ jsx46(VoiceBarLoginCard, {
|
|
11185
11171
|
onDismiss: () => {
|
|
11186
11172
|
setLoginOpen(false);
|
|
11187
11173
|
setAutoStartAfterLogin(false);
|
|
11188
11174
|
}
|
|
11189
11175
|
})
|
|
11190
11176
|
}),
|
|
11191
|
-
!sessionLive && !needsLogin && !bannerActive && /* @__PURE__ */
|
|
11177
|
+
!sessionLive && !needsLogin && !bannerActive && /* @__PURE__ */ jsx46("div", {
|
|
11192
11178
|
style: planCardStyle,
|
|
11193
11179
|
className: "skippr:z-[6]",
|
|
11194
11180
|
"data-skippr-no-drag": "",
|
|
11195
|
-
children: /* @__PURE__ */
|
|
11181
|
+
children: /* @__PURE__ */ jsx46("div", {
|
|
11196
11182
|
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)]",
|
|
11197
|
-
children: /* @__PURE__ */
|
|
11183
|
+
children: /* @__PURE__ */ jsx46(ConsentNotice, {
|
|
11198
11184
|
leadIn: "By starting a session"
|
|
11199
11185
|
})
|
|
11200
11186
|
})
|
|
11201
11187
|
}),
|
|
11202
|
-
hasNotifications && !bannerOpen && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */
|
|
11188
|
+
hasNotifications && !bannerOpen && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */ jsx46("button", {
|
|
11203
11189
|
type: "button",
|
|
11204
11190
|
onClick: ifNotDragged(() => setBannerOpen(true)),
|
|
11205
11191
|
"aria-label": "Show notifications",
|
|
@@ -11209,61 +11195,61 @@ function VoiceBarFrame({
|
|
|
11209
11195
|
},
|
|
11210
11196
|
className: "skippr:absolute skippr:-top-[3px] skippr:right-[4px] skippr:z-[7] skippr:size-[13px] skippr:cursor-pointer skippr:rounded-full skippr:border-[2.5px] skippr:border-white skippr:animate-skippr-voice-pulse skippr:motion-reduce:animate-none"
|
|
11211
11197
|
}),
|
|
11212
|
-
bannerActive && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */
|
|
11198
|
+
bannerActive && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */ jsx46(VoiceBarNotification, {
|
|
11213
11199
|
notifications,
|
|
11214
11200
|
pos,
|
|
11215
11201
|
onDismiss: closeBanner
|
|
11216
11202
|
}),
|
|
11217
|
-
/* @__PURE__ */
|
|
11203
|
+
/* @__PURE__ */ jsxs38("div", {
|
|
11218
11204
|
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),
|
|
11219
11205
|
children: [
|
|
11220
|
-
showClose && /* @__PURE__ */
|
|
11206
|
+
showClose && /* @__PURE__ */ jsxs38("button", {
|
|
11221
11207
|
type: "button",
|
|
11222
11208
|
onClick: ifNotDragged(closeBar),
|
|
11223
11209
|
disabled: isPausing || isLoading,
|
|
11224
11210
|
"aria-label": sessionLive ? "End session" : "Close",
|
|
11225
|
-
className: cn(EDGE_BUTTON, "skippr:relative skippr:size-[26px]", isLoading && "skippr:cursor-not-allowed skippr:opacity-40 skippr:hover:bg-transparent
|
|
11211
|
+
className: cn(EDGE_BUTTON, "skippr:relative skippr:size-[26px]", isLoading && "skippr:cursor-not-allowed skippr:opacity-40 skippr:hover:bg-transparent"),
|
|
11226
11212
|
children: [
|
|
11227
|
-
isPausing && /* @__PURE__ */
|
|
11213
|
+
isPausing && /* @__PURE__ */ jsx46(BusyRing, {
|
|
11228
11214
|
tone: "brand"
|
|
11229
11215
|
}),
|
|
11230
|
-
/* @__PURE__ */
|
|
11231
|
-
className: "skippr:size-[
|
|
11216
|
+
/* @__PURE__ */ jsx46(X, {
|
|
11217
|
+
className: "skippr:size-[20px]",
|
|
11232
11218
|
strokeWidth: 2
|
|
11233
11219
|
})
|
|
11234
11220
|
]
|
|
11235
11221
|
}),
|
|
11236
|
-
isLoading && /* @__PURE__ */
|
|
11222
|
+
isLoading && /* @__PURE__ */ jsxs38("div", {
|
|
11237
11223
|
className: cn(PILL, "skippr:bg-[#F1EFEA] skippr:overflow-hidden", !isExchanging && "skippr:[animation:skippr-fade-in_0.25s_ease]"),
|
|
11238
11224
|
children: [
|
|
11239
|
-
/* @__PURE__ */
|
|
11225
|
+
/* @__PURE__ */ jsx46(LoadingAvatar, {
|
|
11240
11226
|
logoUrl
|
|
11241
11227
|
}),
|
|
11242
|
-
/* @__PURE__ */
|
|
11228
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11243
11229
|
className: "skippr:whitespace-nowrap skippr:text-[12.5px] skippr:font-semibold skippr:text-[#5a5650]",
|
|
11244
11230
|
children: "Agent is loading"
|
|
11245
11231
|
}),
|
|
11246
|
-
/* @__PURE__ */
|
|
11232
|
+
/* @__PURE__ */ jsxs38("span", {
|
|
11247
11233
|
className: "skippr:flex skippr:items-end skippr:gap-[3px]",
|
|
11248
11234
|
children: [
|
|
11249
|
-
/* @__PURE__ */
|
|
11235
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11250
11236
|
className: "skippr:size-[3px] skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
11251
11237
|
}),
|
|
11252
|
-
/* @__PURE__ */
|
|
11238
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11253
11239
|
className: "skippr:size-[3px] skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.18s_infinite]"
|
|
11254
11240
|
}),
|
|
11255
|
-
/* @__PURE__ */
|
|
11241
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11256
11242
|
className: "skippr:size-[3px] skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.36s_infinite]"
|
|
11257
11243
|
})
|
|
11258
11244
|
]
|
|
11259
11245
|
})
|
|
11260
11246
|
]
|
|
11261
11247
|
}),
|
|
11262
|
-
!isLoading && isConnected && !textMode && pushOrTap && /* @__PURE__ */
|
|
11248
|
+
!isLoading && isConnected && !textMode && pushOrTap && /* @__PURE__ */ jsx46(ShortcutHint, {
|
|
11263
11249
|
enabled: isPushToTalk,
|
|
11264
11250
|
seenRef: hintSeenRef,
|
|
11265
11251
|
suppressed: hintSuppressed,
|
|
11266
|
-
children: /* @__PURE__ */
|
|
11252
|
+
children: /* @__PURE__ */ jsxs38("button", {
|
|
11267
11253
|
type: "button",
|
|
11268
11254
|
"data-skippr-no-drag": "",
|
|
11269
11255
|
style: {
|
|
@@ -11282,7 +11268,7 @@ function VoiceBarFrame({
|
|
|
11282
11268
|
"aria-label": requestLabel,
|
|
11283
11269
|
className: cn(PILL, "skippr:cursor-pointer skippr:transition-[filter] skippr:hover:brightness-[1.04] skippr:active:scale-[0.98]", isCapturingSpeech && "skippr:animate-skippr-ptt-transmit skippr:motion-reduce:animate-none"),
|
|
11284
11270
|
children: [
|
|
11285
|
-
agentActive ? /* @__PURE__ */
|
|
11271
|
+
agentActive ? /* @__PURE__ */ jsx46(AgentDots, {}) : isCapturingSpeech ? /* @__PURE__ */ jsx46(SpeakingBars, {}) : /* @__PURE__ */ jsx46(AudioLines, {
|
|
11286
11272
|
className: "skippr:size-[17px]",
|
|
11287
11273
|
strokeWidth: 2
|
|
11288
11274
|
}),
|
|
@@ -11290,90 +11276,47 @@ function VoiceBarFrame({
|
|
|
11290
11276
|
]
|
|
11291
11277
|
})
|
|
11292
11278
|
}),
|
|
11293
|
-
|
|
11279
|
+
showLivePill && /* @__PURE__ */ jsxs38("div", {
|
|
11294
11280
|
style: { background: livePillBg, color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
11295
|
-
className: cn(PILL, "skippr:gap-[
|
|
11281
|
+
className: cn(PILL, "skippr:min-w-0 skippr:gap-[10px] skippr:px-[5px]"),
|
|
11296
11282
|
children: [
|
|
11297
|
-
/* @__PURE__ */
|
|
11283
|
+
!isHeld && /* @__PURE__ */ jsx46("button", {
|
|
11284
|
+
type: "button",
|
|
11285
|
+
onClick: ifNotDragged(() => void toggleMute()),
|
|
11286
|
+
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
11287
|
+
className: "skippr:flex skippr:size-[26px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:opacity-85 skippr:cursor-pointer skippr:transition-[opacity,color] skippr:hover:opacity-100 skippr:hover:text-destructive",
|
|
11288
|
+
children: /* @__PURE__ */ jsx46(MicLevelGlyph, {
|
|
11289
|
+
muted: isMuted
|
|
11290
|
+
})
|
|
11291
|
+
}),
|
|
11292
|
+
/* @__PURE__ */ jsx46("button", {
|
|
11298
11293
|
type: "button",
|
|
11299
11294
|
onClick: ifNotDragged(togglePause),
|
|
11300
|
-
"aria-label": isHeld ? "Resume" : "
|
|
11301
|
-
className: "skippr:flex skippr:size-[26px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:cursor-pointer skippr:transition-colors skippr:hover:
|
|
11302
|
-
children: isHeld ? /* @__PURE__ */
|
|
11295
|
+
"aria-label": isHeld ? "Resume" : "Stop",
|
|
11296
|
+
className: cn("skippr:flex skippr:size-[26px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:cursor-pointer skippr:transition-colors", !isHeld && "skippr:hover:text-destructive"),
|
|
11297
|
+
children: isHeld ? /* @__PURE__ */ jsx46(Play, {
|
|
11303
11298
|
className: "skippr:size-[13px]",
|
|
11304
11299
|
fill: "currentColor",
|
|
11305
11300
|
strokeWidth: 0
|
|
11306
|
-
}) : /* @__PURE__ */
|
|
11307
|
-
className: "skippr:size-[
|
|
11301
|
+
}) : /* @__PURE__ */ jsx46(Square, {
|
|
11302
|
+
className: "skippr:size-[12px]",
|
|
11308
11303
|
fill: "currentColor",
|
|
11309
11304
|
strokeWidth: 0
|
|
11310
11305
|
})
|
|
11311
|
-
}),
|
|
11312
|
-
!isHeld && /* @__PURE__ */ jsxs37(Fragment5, {
|
|
11313
|
-
children: [
|
|
11314
|
-
/* @__PURE__ */ jsxs37("span", {
|
|
11315
|
-
className: "skippr:relative skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center",
|
|
11316
|
-
children: [
|
|
11317
|
-
/* @__PURE__ */ jsx45(MicLevelHalo, {
|
|
11318
|
-
enabled: !isMuted
|
|
11319
|
-
}),
|
|
11320
|
-
/* @__PURE__ */ jsx45("button", {
|
|
11321
|
-
type: "button",
|
|
11322
|
-
onClick: ifNotDragged(() => void toggleMute()),
|
|
11323
|
-
style: { background: "#fff", color: "var(--skippr-brand-deep)" },
|
|
11324
|
-
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
11325
|
-
className: "skippr:relative skippr:flex skippr:size-[30px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:cursor-pointer skippr:transition-[filter] skippr:hover:brightness-[1.06]",
|
|
11326
|
-
children: isMuted ? /* @__PURE__ */ jsx45(MicOff, {
|
|
11327
|
-
className: "skippr:size-[15px]",
|
|
11328
|
-
strokeWidth: 2
|
|
11329
|
-
}) : /* @__PURE__ */ jsx45(Mic, {
|
|
11330
|
-
className: "skippr:size-[15px]",
|
|
11331
|
-
strokeWidth: 2
|
|
11332
|
-
})
|
|
11333
|
-
})
|
|
11334
|
-
]
|
|
11335
|
-
}),
|
|
11336
|
-
/* @__PURE__ */ jsxs37("span", {
|
|
11337
|
-
className: "skippr:relative skippr:inline-flex",
|
|
11338
|
-
children: [
|
|
11339
|
-
/* @__PURE__ */ jsx45("button", {
|
|
11340
|
-
type: "button",
|
|
11341
|
-
onClick: ifNotDragged(() => {
|
|
11342
|
-
stopActions2();
|
|
11343
|
-
if (highlightActive2)
|
|
11344
|
-
clearHighlight2();
|
|
11345
|
-
}),
|
|
11346
|
-
...stopHintProps,
|
|
11347
|
-
"aria-label": "Stop live action",
|
|
11348
|
-
className: "skippr:flex skippr:size-[26px] skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:transition-colors skippr:hover:bg-white/20",
|
|
11349
|
-
children: /* @__PURE__ */ jsx45(Square, {
|
|
11350
|
-
className: "skippr:size-[11px]",
|
|
11351
|
-
fill: "currentColor",
|
|
11352
|
-
strokeWidth: 0
|
|
11353
|
-
})
|
|
11354
|
-
}),
|
|
11355
|
-
stopHintVisible && /* @__PURE__ */ jsx45("span", {
|
|
11356
|
-
className: "skippr:pointer-events-none skippr:absolute skippr:bottom-full skippr:left-1/2 skippr:z-10 skippr:mb-1.5 skippr:-translate-x-1/2 skippr:whitespace-nowrap skippr:rounded skippr:bg-foreground skippr:px-1.5 skippr:py-0.5 skippr:text-[10px] skippr:font-medium skippr:text-background",
|
|
11357
|
-
"aria-hidden": "true",
|
|
11358
|
-
children: "Stop live action"
|
|
11359
|
-
})
|
|
11360
|
-
]
|
|
11361
|
-
})
|
|
11362
|
-
]
|
|
11363
11306
|
})
|
|
11364
11307
|
]
|
|
11365
11308
|
}),
|
|
11366
|
-
!isLoading && isConnected && textMode && /* @__PURE__ */
|
|
11309
|
+
!isLoading && isConnected && textMode && /* @__PURE__ */ jsxs38("div", {
|
|
11367
11310
|
className: cn(PILL, "skippr:gap-[7px] skippr:bg-[#F1EFEA] skippr:text-[#5a5650] skippr:[animation:skippr-fade-in_0.25s_ease]"),
|
|
11368
11311
|
children: [
|
|
11369
|
-
/* @__PURE__ */
|
|
11312
|
+
/* @__PURE__ */ jsx46(MessageSquare, {
|
|
11370
11313
|
className: "skippr:size-[15px] skippr:text-[#8b877f]",
|
|
11371
11314
|
strokeWidth: 2
|
|
11372
11315
|
}),
|
|
11373
11316
|
"Text mode"
|
|
11374
11317
|
]
|
|
11375
11318
|
}),
|
|
11376
|
-
!sessionLive && /* @__PURE__ */
|
|
11319
|
+
!sessionLive && /* @__PURE__ */ jsxs38("button", {
|
|
11377
11320
|
type: "button",
|
|
11378
11321
|
onClick: ifNotDragged(() => {
|
|
11379
11322
|
if (canStart) {
|
|
@@ -11388,48 +11331,48 @@ function VoiceBarFrame({
|
|
|
11388
11331
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
11389
11332
|
className: cn(PILL, "skippr:cursor-pointer skippr:bg-brand skippr:px-[12px] skippr:transition-[filter] skippr:hover:brightness-[1.04] skippr:active:scale-[0.98] skippr:disabled:cursor-not-allowed skippr:disabled:opacity-60"),
|
|
11390
11333
|
children: [
|
|
11391
|
-
/* @__PURE__ */
|
|
11334
|
+
/* @__PURE__ */ jsx46("span", {
|
|
11392
11335
|
className: "skippr:size-[22px] skippr:shrink-0 skippr:overflow-hidden skippr:rounded-full skippr:shadow-[0_0_0_1.5px_rgba(255,255,255,0.85)]",
|
|
11393
|
-
children: logoUrl ? /* @__PURE__ */
|
|
11336
|
+
children: logoUrl ? /* @__PURE__ */ jsx46("img", {
|
|
11394
11337
|
src: logoUrl,
|
|
11395
11338
|
alt: "",
|
|
11396
11339
|
className: "skippr:block skippr:size-full skippr:object-cover"
|
|
11397
|
-
}) : /* @__PURE__ */
|
|
11340
|
+
}) : /* @__PURE__ */ jsx46("span", {
|
|
11398
11341
|
className: "skippr:block skippr:size-full skippr:bg-launcher"
|
|
11399
11342
|
})
|
|
11400
11343
|
}),
|
|
11401
11344
|
"Talk to AI Agent"
|
|
11402
11345
|
]
|
|
11403
11346
|
}),
|
|
11404
|
-
(sessionLive || isRoomChat) && /* @__PURE__ */
|
|
11347
|
+
(sessionLive || isRoomChat) && /* @__PURE__ */ jsx46("button", {
|
|
11405
11348
|
type: "button",
|
|
11406
11349
|
onClick: ifNotDragged(toggleChat),
|
|
11407
11350
|
disabled: isLoading,
|
|
11408
11351
|
"aria-label": "Open chat",
|
|
11409
|
-
className: cn(EDGE_BUTTON, "skippr:size-[30px]
|
|
11410
|
-
children: /* @__PURE__ */
|
|
11411
|
-
className: "skippr:size-[
|
|
11352
|
+
className: cn(EDGE_BUTTON, "skippr:size-[30px]", isLoading && "skippr:cursor-not-allowed skippr:opacity-40 skippr:hover:bg-transparent"),
|
|
11353
|
+
children: /* @__PURE__ */ jsx46(MessageSquare, {
|
|
11354
|
+
className: "skippr:size-[18px]",
|
|
11412
11355
|
strokeWidth: 2
|
|
11413
11356
|
})
|
|
11414
11357
|
})
|
|
11415
11358
|
]
|
|
11416
11359
|
}),
|
|
11417
|
-
lineBlockOpen && /* @__PURE__ */
|
|
11360
|
+
lineBlockOpen && /* @__PURE__ */ jsxs38("div", {
|
|
11418
11361
|
style: chatBlockStyle,
|
|
11419
11362
|
"data-skippr-no-drag": "",
|
|
11420
11363
|
onPointerDown: (event) => event.stopPropagation(),
|
|
11421
11364
|
className: cn("skippr:z-[6] skippr:overflow-hidden skippr:rounded-[14px] 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)]", chatLineClosing ? "skippr:[animation:skippr-fade-out_0.18s_ease-in_forwards]" : "skippr:[animation:skippr-fade-in_0.24s_cubic-bezier(0.22,1,0.36,1)]"),
|
|
11422
11365
|
children: [
|
|
11423
|
-
planInLineBlock && activePlan && /* @__PURE__ */
|
|
11366
|
+
planInLineBlock && activePlan && /* @__PURE__ */ jsx46("div", {
|
|
11424
11367
|
className: "skippr:overflow-hidden skippr:border-b skippr:border-[rgba(45,45,63,0.08)] skippr:[animation:skippr-block-reveal_320ms_cubic-bezier(0.22,1,0.36,1)]",
|
|
11425
|
-
children: /* @__PURE__ */
|
|
11368
|
+
children: /* @__PURE__ */ jsx46(VoiceBarPlanCard, {
|
|
11426
11369
|
embedded: true,
|
|
11427
11370
|
plan: activePlan,
|
|
11428
11371
|
sendChatMessage,
|
|
11429
11372
|
onDismiss: () => setDismissedBlockPlanId(activePlan.planId)
|
|
11430
11373
|
}, activePlan.planId)
|
|
11431
11374
|
}),
|
|
11432
|
-
/* @__PURE__ */
|
|
11375
|
+
/* @__PURE__ */ jsx46(VoiceBarChatLine, {
|
|
11433
11376
|
embedded: true,
|
|
11434
11377
|
popsDown,
|
|
11435
11378
|
canSend: isConnected,
|
|
@@ -11442,21 +11385,21 @@ function VoiceBarFrame({
|
|
|
11442
11385
|
}
|
|
11443
11386
|
|
|
11444
11387
|
// src/components/VoiceBarLauncher.tsx
|
|
11445
|
-
import { useCallback as
|
|
11388
|
+
import { useCallback as useCallback30, useEffect as useEffect47, useRef as useRef41, useState as useState36 } from "react";
|
|
11446
11389
|
|
|
11447
11390
|
// src/components/LauncherNotification.tsx
|
|
11448
|
-
import { useEffect as
|
|
11449
|
-
import { jsx as
|
|
11391
|
+
import { useEffect as useEffect46, useRef as useRef40, useState as useState35 } from "react";
|
|
11392
|
+
import { jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
11450
11393
|
function LauncherNotification({
|
|
11451
11394
|
notifications,
|
|
11452
11395
|
dock,
|
|
11453
11396
|
mode,
|
|
11454
11397
|
onDismiss
|
|
11455
11398
|
}) {
|
|
11456
|
-
const [index2, setIndex] =
|
|
11457
|
-
const [paused, setPaused] =
|
|
11399
|
+
const [index2, setIndex] = useState35(0);
|
|
11400
|
+
const [paused, setPaused] = useState35(false);
|
|
11458
11401
|
const cardRef = useRef40(null);
|
|
11459
|
-
|
|
11402
|
+
useEffect46(() => {
|
|
11460
11403
|
const el = cardRef.current;
|
|
11461
11404
|
if (!el)
|
|
11462
11405
|
return;
|
|
@@ -11469,7 +11412,7 @@ function LauncherNotification({
|
|
|
11469
11412
|
el.removeEventListener("mouseleave", leave);
|
|
11470
11413
|
};
|
|
11471
11414
|
}, []);
|
|
11472
|
-
|
|
11415
|
+
useEffect46(() => {
|
|
11473
11416
|
if (paused)
|
|
11474
11417
|
return;
|
|
11475
11418
|
const rotate = setInterval(() => setIndex((current) => (current + 1) % notifications.length), TIP_ROTATE_MS);
|
|
@@ -11498,21 +11441,21 @@ function LauncherNotification({
|
|
|
11498
11441
|
...dock.edge === "left" ? { left: 0 } : { right: 0 },
|
|
11499
11442
|
bottom: "calc(100% + 8px)"
|
|
11500
11443
|
};
|
|
11501
|
-
return /* @__PURE__ */
|
|
11444
|
+
return /* @__PURE__ */ jsx47("div", {
|
|
11502
11445
|
style: wrapperStyle,
|
|
11503
11446
|
"data-skippr-no-drag": "",
|
|
11504
|
-
children: /* @__PURE__ */
|
|
11447
|
+
children: /* @__PURE__ */ jsxs39("div", {
|
|
11505
11448
|
ref: cardRef,
|
|
11506
11449
|
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)]",
|
|
11507
11450
|
children: [
|
|
11508
|
-
/* @__PURE__ */
|
|
11451
|
+
/* @__PURE__ */ jsx47("span", {
|
|
11509
11452
|
className: "skippr:flex skippr:min-h-[16px] skippr:min-w-0 skippr:flex-1 skippr:items-center skippr:text-[9px] skippr:font-medium skippr:leading-[1.25] skippr:text-[#5a5650]",
|
|
11510
|
-
children: /* @__PURE__ */
|
|
11453
|
+
children: /* @__PURE__ */ jsx47("span", {
|
|
11511
11454
|
className: "skippr:line-clamp-2",
|
|
11512
11455
|
children: notification.message
|
|
11513
11456
|
})
|
|
11514
11457
|
}),
|
|
11515
|
-
/* @__PURE__ */
|
|
11458
|
+
/* @__PURE__ */ jsx47("button", {
|
|
11516
11459
|
type: "button",
|
|
11517
11460
|
onClick: () => {
|
|
11518
11461
|
notification.activate();
|
|
@@ -11521,18 +11464,18 @@ function LauncherNotification({
|
|
|
11521
11464
|
"aria-label": "Start",
|
|
11522
11465
|
title: "Start",
|
|
11523
11466
|
className: "skippr:flex skippr:size-[17px] skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-[#2D2D3F] skippr:text-white skippr:transition-colors skippr:hover:bg-[#3d3d52]",
|
|
11524
|
-
children: /* @__PURE__ */
|
|
11467
|
+
children: /* @__PURE__ */ jsx47(Play, {
|
|
11525
11468
|
className: "skippr:size-[8px] skippr:fill-current",
|
|
11526
11469
|
strokeWidth: 2
|
|
11527
11470
|
})
|
|
11528
11471
|
}),
|
|
11529
|
-
hasMultiple && /* @__PURE__ */
|
|
11472
|
+
hasMultiple && /* @__PURE__ */ jsx47("button", {
|
|
11530
11473
|
type: "button",
|
|
11531
11474
|
onClick: () => setIndex((current) => (current + 1) % notifications.length),
|
|
11532
11475
|
"aria-label": "Next",
|
|
11533
11476
|
title: "Next",
|
|
11534
11477
|
className: "skippr:-ml-[2px] skippr:flex skippr:size-[16px] skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:text-[#8b877f] skippr:transition-colors skippr:hover:bg-[#f2f0eb] skippr:hover:text-[#5a5650]",
|
|
11535
|
-
children: /* @__PURE__ */
|
|
11478
|
+
children: /* @__PURE__ */ jsx47(ChevronRight, {
|
|
11536
11479
|
className: "skippr:size-[12px]",
|
|
11537
11480
|
strokeWidth: 2.5
|
|
11538
11481
|
})
|
|
@@ -11543,14 +11486,14 @@ function LauncherNotification({
|
|
|
11543
11486
|
}
|
|
11544
11487
|
|
|
11545
11488
|
// src/components/VoiceBarLauncher.tsx
|
|
11546
|
-
import { jsx as
|
|
11489
|
+
import { jsx as jsx48, jsxs as jsxs40, Fragment as Fragment5 } from "react/jsx-runtime";
|
|
11547
11490
|
function SkipprMark2() {
|
|
11548
|
-
return /* @__PURE__ */
|
|
11491
|
+
return /* @__PURE__ */ jsx48("svg", {
|
|
11549
11492
|
viewBox: "0 0 15.4044 18.4853",
|
|
11550
11493
|
className: "skippr:h-[18px] skippr:w-[15px]",
|
|
11551
11494
|
fill: "none",
|
|
11552
11495
|
"aria-hidden": "true",
|
|
11553
|
-
children: /* @__PURE__ */
|
|
11496
|
+
children: /* @__PURE__ */ jsx48("path", {
|
|
11554
11497
|
d: "M2.25789 0.295419C1.33925 -0.413932 0 0.234459 0 1.38715V17.0972C0 18.4106 1.67407 18.987 2.49664 17.9562L6.40435 13.061C6.54853 12.8805 6.73209 12.7348 6.94126 12.6347C7.15043 12.5345 7.37978 12.4826 7.6121 12.4828H14.0025C15.3343 12.4828 15.9134 10.8128 14.8614 10.0037L2.25789 0.295419Z",
|
|
11555
11498
|
className: "skippr:fill-white"
|
|
11556
11499
|
})
|
|
@@ -11629,7 +11572,7 @@ function LauncherChat({
|
|
|
11629
11572
|
onClick
|
|
11630
11573
|
}) {
|
|
11631
11574
|
const vertical = isHorizontalEdge(edge);
|
|
11632
|
-
return /* @__PURE__ */
|
|
11575
|
+
return /* @__PURE__ */ jsxs40("div", {
|
|
11633
11576
|
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]),
|
|
11634
11577
|
style: {
|
|
11635
11578
|
width: vertical ? 46 : revealed ? 52 : 0,
|
|
@@ -11637,18 +11580,18 @@ function LauncherChat({
|
|
|
11637
11580
|
opacity: revealed ? 1 : 0
|
|
11638
11581
|
},
|
|
11639
11582
|
children: [
|
|
11640
|
-
/* @__PURE__ */
|
|
11583
|
+
/* @__PURE__ */ jsx48("button", {
|
|
11641
11584
|
type: "button",
|
|
11642
11585
|
onClick,
|
|
11643
11586
|
"aria-label": "Open chat",
|
|
11644
11587
|
tabIndex: revealed ? 0 : -1,
|
|
11645
11588
|
className: "skippr:flex skippr:size-[46px] skippr:shrink-0 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:p-0 skippr:text-foreground skippr:transition-colors skippr:hover:bg-foreground/8",
|
|
11646
|
-
children: /* @__PURE__ */
|
|
11589
|
+
children: /* @__PURE__ */ jsx48(MessageSquare, {
|
|
11647
11590
|
className: "skippr:size-[18px] skippr:shrink-0",
|
|
11648
11591
|
strokeWidth: 2
|
|
11649
11592
|
})
|
|
11650
11593
|
}),
|
|
11651
|
-
/* @__PURE__ */
|
|
11594
|
+
/* @__PURE__ */ jsx48("span", {
|
|
11652
11595
|
className: cn("skippr:shrink-0 skippr:bg-foreground/10", vertical ? "skippr:h-px skippr:w-[22px]" : "skippr:h-[22px] skippr:w-px")
|
|
11653
11596
|
})
|
|
11654
11597
|
]
|
|
@@ -11685,7 +11628,7 @@ function VoiceBarLauncher({
|
|
|
11685
11628
|
}) {
|
|
11686
11629
|
const containerRef = useRef41(null);
|
|
11687
11630
|
const closeTimerRef = useRef41(null);
|
|
11688
|
-
const onDropPos =
|
|
11631
|
+
const onDropPos = useCallback30((pos) => {
|
|
11689
11632
|
const el = containerRef.current;
|
|
11690
11633
|
if (!el)
|
|
11691
11634
|
return;
|
|
@@ -11694,16 +11637,16 @@ function VoiceBarLauncher({
|
|
|
11694
11637
|
}, [onDrop]);
|
|
11695
11638
|
const { wasDraggedRef } = useVoiceBarDrag(containerRef, onDropPos, null, setDragging);
|
|
11696
11639
|
const horizontal = isHorizontalEdge(dock.edge);
|
|
11697
|
-
const [cardOpen, setCardOpen] =
|
|
11698
|
-
const [loginOpen, setLoginOpen] =
|
|
11699
|
-
const [hovered, setHovered] =
|
|
11700
|
-
|
|
11640
|
+
const [cardOpen, setCardOpen] = useState36(false);
|
|
11641
|
+
const [loginOpen, setLoginOpen] = useState36(false);
|
|
11642
|
+
const [hovered, setHovered] = useState36(false);
|
|
11643
|
+
useEffect47(() => {
|
|
11701
11644
|
if (!needsLogin)
|
|
11702
11645
|
setLoginOpen(false);
|
|
11703
11646
|
}, [needsLogin]);
|
|
11704
11647
|
const hasNotif = notifications.length > 0;
|
|
11705
11648
|
const dotColor = notifications.find((item) => item.kind === NOTIFICATION_KIND.Module)?.accentColor ?? notifications[0]?.accentColor ?? NOTIF_ACCENT_COLOR;
|
|
11706
|
-
|
|
11649
|
+
useEffect47(() => {
|
|
11707
11650
|
const el = containerRef.current;
|
|
11708
11651
|
if (!el)
|
|
11709
11652
|
return;
|
|
@@ -11749,15 +11692,15 @@ function VoiceBarLauncher({
|
|
|
11749
11692
|
}
|
|
11750
11693
|
onChat?.();
|
|
11751
11694
|
};
|
|
11752
|
-
const closeLogin =
|
|
11695
|
+
const closeLogin = useCallback30(() => {
|
|
11753
11696
|
setLoginOpen(false);
|
|
11754
11697
|
onLoginDismiss();
|
|
11755
11698
|
}, [onLoginDismiss]);
|
|
11756
|
-
const loginCard = loginOpen && needsLogin && /* @__PURE__ */
|
|
11699
|
+
const loginCard = loginOpen && needsLogin && /* @__PURE__ */ jsx48("div", {
|
|
11757
11700
|
style: loginCardWrapperStyle2(dock.edge),
|
|
11758
11701
|
"data-skippr-no-drag": "",
|
|
11759
11702
|
onPointerDown: (event) => event.stopPropagation(),
|
|
11760
|
-
children: /* @__PURE__ */
|
|
11703
|
+
children: /* @__PURE__ */ jsx48(VoiceBarLoginCard, {
|
|
11761
11704
|
onDismiss: closeLogin
|
|
11762
11705
|
})
|
|
11763
11706
|
});
|
|
@@ -11767,53 +11710,53 @@ function VoiceBarLauncher({
|
|
|
11767
11710
|
return;
|
|
11768
11711
|
setCardOpen((open2) => !open2);
|
|
11769
11712
|
};
|
|
11770
|
-
const closeCard =
|
|
11713
|
+
const closeCard = useCallback30(() => setCardOpen(false), []);
|
|
11771
11714
|
if (mode === "strip") {
|
|
11772
11715
|
const expanded = hovered && !!onChat;
|
|
11773
11716
|
const length = expanded ? 84 : 40;
|
|
11774
11717
|
const thickness = expanded ? 36 : 10;
|
|
11775
|
-
return /* @__PURE__ */
|
|
11718
|
+
return /* @__PURE__ */ jsxs40("div", {
|
|
11776
11719
|
ref: containerRef,
|
|
11777
11720
|
style: dockStyleFlush(dock),
|
|
11778
11721
|
className: "skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab",
|
|
11779
11722
|
children: [
|
|
11780
|
-
/* @__PURE__ */
|
|
11723
|
+
/* @__PURE__ */ jsx48("div", {
|
|
11781
11724
|
style: horizontal ? { width: length, height: thickness } : { width: thickness, height: length },
|
|
11782
11725
|
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]),
|
|
11783
|
-
children: expanded ? /* @__PURE__ */
|
|
11726
|
+
children: expanded ? /* @__PURE__ */ jsxs40(Fragment5, {
|
|
11784
11727
|
children: [
|
|
11785
|
-
/* @__PURE__ */
|
|
11728
|
+
/* @__PURE__ */ jsx48("button", {
|
|
11786
11729
|
type: "button",
|
|
11787
11730
|
onClick: open,
|
|
11788
11731
|
"aria-label": "Open Agent",
|
|
11789
11732
|
className: STRIP_ICON_BUTTON,
|
|
11790
|
-
children: /* @__PURE__ */
|
|
11733
|
+
children: /* @__PURE__ */ jsx48(Play, {
|
|
11791
11734
|
className: "skippr:size-[13px] skippr:fill-current",
|
|
11792
11735
|
strokeWidth: 2
|
|
11793
11736
|
})
|
|
11794
11737
|
}),
|
|
11795
|
-
/* @__PURE__ */
|
|
11738
|
+
/* @__PURE__ */ jsx48("span", {
|
|
11796
11739
|
className: cn("skippr:shrink-0 skippr:bg-foreground/10", horizontal ? "skippr:h-[16px] skippr:w-px" : "skippr:h-px skippr:w-[16px]")
|
|
11797
11740
|
}),
|
|
11798
|
-
/* @__PURE__ */
|
|
11741
|
+
/* @__PURE__ */ jsx48("button", {
|
|
11799
11742
|
type: "button",
|
|
11800
11743
|
onClick: openChat,
|
|
11801
11744
|
"aria-label": "Open chat",
|
|
11802
11745
|
className: STRIP_ICON_BUTTON,
|
|
11803
|
-
children: /* @__PURE__ */
|
|
11746
|
+
children: /* @__PURE__ */ jsx48(MessageSquare, {
|
|
11804
11747
|
className: "skippr:size-[14px]",
|
|
11805
11748
|
strokeWidth: 2
|
|
11806
11749
|
})
|
|
11807
11750
|
})
|
|
11808
11751
|
]
|
|
11809
|
-
}) : /* @__PURE__ */
|
|
11752
|
+
}) : /* @__PURE__ */ jsx48("button", {
|
|
11810
11753
|
type: "button",
|
|
11811
11754
|
onClick: open,
|
|
11812
11755
|
"aria-label": "Open Agent",
|
|
11813
11756
|
className: "skippr:absolute skippr:inset-0 skippr:cursor-grab skippr:bg-transparent skippr:p-0"
|
|
11814
11757
|
})
|
|
11815
11758
|
}),
|
|
11816
|
-
hasNotif && (expanded ? /* @__PURE__ */
|
|
11759
|
+
hasNotif && (expanded ? /* @__PURE__ */ jsx48("button", {
|
|
11817
11760
|
type: "button",
|
|
11818
11761
|
onClick: toggleCard,
|
|
11819
11762
|
"aria-label": "Show notifications",
|
|
@@ -11822,7 +11765,7 @@ function VoiceBarLauncher({
|
|
|
11822
11765
|
"--skippr-pulse-color": dotColor
|
|
11823
11766
|
},
|
|
11824
11767
|
className: cn("skippr:absolute skippr:z-[2] skippr:size-[13px] skippr:cursor-pointer skippr:rounded-full skippr:border-[2.5px] skippr:border-white skippr:animate-skippr-voice-pulse skippr:motion-reduce:animate-none", STRIP_DOT_POS[dock.edge])
|
|
11825
|
-
}) : /* @__PURE__ */
|
|
11768
|
+
}) : /* @__PURE__ */ jsx48("button", {
|
|
11826
11769
|
type: "button",
|
|
11827
11770
|
onClick: toggleCard,
|
|
11828
11771
|
"aria-label": "Show notifications",
|
|
@@ -11832,7 +11775,7 @@ function VoiceBarLauncher({
|
|
|
11832
11775
|
},
|
|
11833
11776
|
className: cn("skippr:absolute skippr:z-[1] skippr:cursor-pointer skippr:animate-skippr-voice-pulse skippr:motion-reduce:animate-none", STRIP_NOTIF_CAP[dock.edge], STRIP_CAP_ROUNDING[dock.edge])
|
|
11834
11777
|
})),
|
|
11835
|
-
hasNotif && cardOpen && /* @__PURE__ */
|
|
11778
|
+
hasNotif && cardOpen && /* @__PURE__ */ jsx48(LauncherNotification, {
|
|
11836
11779
|
notifications,
|
|
11837
11780
|
dock,
|
|
11838
11781
|
mode,
|
|
@@ -11842,37 +11785,37 @@ function VoiceBarLauncher({
|
|
|
11842
11785
|
]
|
|
11843
11786
|
});
|
|
11844
11787
|
}
|
|
11845
|
-
return /* @__PURE__ */
|
|
11788
|
+
return /* @__PURE__ */ jsxs40("div", {
|
|
11846
11789
|
ref: containerRef,
|
|
11847
11790
|
style: dockStyleFlush(dock),
|
|
11848
11791
|
className: "skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab",
|
|
11849
11792
|
children: [
|
|
11850
|
-
/* @__PURE__ */
|
|
11793
|
+
/* @__PURE__ */ jsxs40("div", {
|
|
11851
11794
|
style: { gap: onChat && hovered ? 2 : 0 },
|
|
11852
11795
|
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]),
|
|
11853
11796
|
children: [
|
|
11854
|
-
onChat && /* @__PURE__ */
|
|
11797
|
+
onChat && /* @__PURE__ */ jsx48(LauncherChat, {
|
|
11855
11798
|
revealed: hovered,
|
|
11856
11799
|
edge: dock.edge,
|
|
11857
11800
|
onClick: openChat
|
|
11858
11801
|
}),
|
|
11859
|
-
/* @__PURE__ */
|
|
11802
|
+
/* @__PURE__ */ jsx48("button", {
|
|
11860
11803
|
type: "button",
|
|
11861
11804
|
onClick: open,
|
|
11862
11805
|
"aria-label": "Open Agent",
|
|
11863
11806
|
className: "skippr:block skippr:shrink-0 skippr:cursor-grab skippr:rounded-full skippr:bg-transparent skippr:p-0 skippr:transition-transform skippr:duration-200 skippr:hover:scale-105",
|
|
11864
|
-
children: logoUrl ? /* @__PURE__ */
|
|
11807
|
+
children: logoUrl ? /* @__PURE__ */ jsx48("img", {
|
|
11865
11808
|
src: logoUrl,
|
|
11866
11809
|
alt: "",
|
|
11867
11810
|
className: "skippr:block skippr:size-[46px] skippr:rounded-full skippr:object-cover"
|
|
11868
|
-
}) : /* @__PURE__ */
|
|
11811
|
+
}) : /* @__PURE__ */ jsx48("span", {
|
|
11869
11812
|
className: "skippr:flex skippr:size-[46px] skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-launcher",
|
|
11870
|
-
children: /* @__PURE__ */
|
|
11813
|
+
children: /* @__PURE__ */ jsx48(SkipprMark2, {})
|
|
11871
11814
|
})
|
|
11872
11815
|
})
|
|
11873
11816
|
]
|
|
11874
11817
|
}),
|
|
11875
|
-
hasNotif && /* @__PURE__ */
|
|
11818
|
+
hasNotif && /* @__PURE__ */ jsx48("button", {
|
|
11876
11819
|
type: "button",
|
|
11877
11820
|
onClick: toggleCard,
|
|
11878
11821
|
"aria-label": "Show notifications",
|
|
@@ -11883,7 +11826,7 @@ function VoiceBarLauncher({
|
|
|
11883
11826
|
},
|
|
11884
11827
|
className: cn("skippr:absolute skippr:z-[2] skippr:size-[13px] skippr:cursor-pointer skippr:rounded-full skippr:border-[2.5px] skippr:border-white skippr:transition-[left] skippr:duration-300 skippr:ease-[cubic-bezier(0.34,1.3,0.64,1)] skippr:animate-skippr-voice-pulse skippr:motion-reduce:animate-none", dock.edge === "top" ? "skippr:-bottom-[2px]" : "skippr:-top-[2px]")
|
|
11885
11828
|
}),
|
|
11886
|
-
hasNotif && cardOpen && /* @__PURE__ */
|
|
11829
|
+
hasNotif && cardOpen && /* @__PURE__ */ jsx48(LauncherNotification, {
|
|
11887
11830
|
notifications,
|
|
11888
11831
|
dock,
|
|
11889
11832
|
mode,
|
|
@@ -11895,7 +11838,7 @@ function VoiceBarLauncher({
|
|
|
11895
11838
|
}
|
|
11896
11839
|
|
|
11897
11840
|
// src/components/VoiceBar.tsx
|
|
11898
|
-
import { jsx as
|
|
11841
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
11899
11842
|
function VoiceBar({ revealed }) {
|
|
11900
11843
|
const ctx = useContext24(LiveAgentContext);
|
|
11901
11844
|
if (!ctx) {
|
|
@@ -11914,8 +11857,8 @@ function VoiceBar({ revealed }) {
|
|
|
11914
11857
|
setBarPos,
|
|
11915
11858
|
setAutoStartAfterLogin
|
|
11916
11859
|
} = ctx;
|
|
11917
|
-
const [launcherDock, setLauncherDock] =
|
|
11918
|
-
const onLauncherDrop =
|
|
11860
|
+
const [launcherDock, setLauncherDock] = useState37(() => readSavedDock("launcher"));
|
|
11861
|
+
const onLauncherDrop = useCallback31((next) => {
|
|
11919
11862
|
setLauncherDock(next);
|
|
11920
11863
|
persistDock("launcher", next);
|
|
11921
11864
|
}, []);
|
|
@@ -11937,7 +11880,7 @@ function VoiceBar({ revealed }) {
|
|
|
11937
11880
|
return null;
|
|
11938
11881
|
}
|
|
11939
11882
|
if (launcherMode !== LAUNCHER_MODE.None && !sessionLive && isMinimized) {
|
|
11940
|
-
return /* @__PURE__ */
|
|
11883
|
+
return /* @__PURE__ */ jsx49(VoiceBarLauncher, {
|
|
11941
11884
|
dock: effectiveLauncherDock,
|
|
11942
11885
|
mode: launcherMode,
|
|
11943
11886
|
logoUrl: appearance?.logoUrl ?? null,
|
|
@@ -11952,7 +11895,7 @@ function VoiceBar({ revealed }) {
|
|
|
11952
11895
|
});
|
|
11953
11896
|
}
|
|
11954
11897
|
const effectiveBarPos = barPos ?? defaultBarPos();
|
|
11955
|
-
return /* @__PURE__ */
|
|
11898
|
+
return /* @__PURE__ */ jsx49(VoiceBarFrame, {
|
|
11956
11899
|
pos: effectiveBarPos,
|
|
11957
11900
|
canFold,
|
|
11958
11901
|
notifications,
|
|
@@ -11962,7 +11905,7 @@ function VoiceBar({ revealed }) {
|
|
|
11962
11905
|
}
|
|
11963
11906
|
|
|
11964
11907
|
// src/components/LiveAgent.tsx
|
|
11965
|
-
import { jsx as
|
|
11908
|
+
import { jsx as jsx50, jsxs as jsxs41, Fragment as Fragment7 } from "react/jsx-runtime";
|
|
11966
11909
|
var SPLASH_NOT_PLACED_WARNING = "[Skippr] The splash screen is enabled but no <SplashScreen> is rendered, so end users cannot start a session. Import SplashScreen from @skippr/live-agent-sdk and place it inside <LiveAgent>.";
|
|
11967
11910
|
var SPLASH_MULTI_MOUNT_WARNING = "[Skippr] More than one <SplashScreen> is mounted. Render exactly one — each instance keeps its own microphone, screen and dismissal state.";
|
|
11968
11911
|
function readSavedPosition() {
|
|
@@ -11982,7 +11925,7 @@ function readSavedLauncherBottom() {
|
|
|
11982
11925
|
}
|
|
11983
11926
|
}
|
|
11984
11927
|
function AgentCursorMount({ animated }) {
|
|
11985
|
-
return /* @__PURE__ */
|
|
11928
|
+
return /* @__PURE__ */ jsx50(AgentCursor, {
|
|
11986
11929
|
target: useAgentCursor(),
|
|
11987
11930
|
animated
|
|
11988
11931
|
});
|
|
@@ -11991,7 +11934,7 @@ function PlanPanelOpener() {
|
|
|
11991
11934
|
const plan = usePlanUpdates();
|
|
11992
11935
|
const { expandPanel } = useLiveAgent();
|
|
11993
11936
|
const surfacedPlanIdRef = useRef42(null);
|
|
11994
|
-
|
|
11937
|
+
useEffect48(() => {
|
|
11995
11938
|
if (plan?.state !== "proposed" || surfacedPlanIdRef.current === plan.planId)
|
|
11996
11939
|
return;
|
|
11997
11940
|
surfacedPlanIdRef.current = plan.planId;
|
|
@@ -12031,21 +11974,21 @@ function LiveAgent(props) {
|
|
|
12031
11974
|
const auth = useAuth({ appKey });
|
|
12032
11975
|
const usesHostAuth = !!getUserToken || !!userToken || !!authTokenProp;
|
|
12033
11976
|
const effectiveAuthToken = usesHostAuth ? authTokenProp : auth.authToken ?? undefined;
|
|
12034
|
-
const [activeModule, setActiveModule] =
|
|
12035
|
-
const [sessionAgentMode, setSessionAgentMode] =
|
|
12036
|
-
const [isExchanging, setIsExchanging] =
|
|
12037
|
-
const minimizeOnSessionStart =
|
|
11977
|
+
const [activeModule, setActiveModule] = useState38(null);
|
|
11978
|
+
const [sessionAgentMode, setSessionAgentMode] = useState38(null);
|
|
11979
|
+
const [isExchanging, setIsExchanging] = useState38(false);
|
|
11980
|
+
const minimizeOnSessionStart = useCallback32(() => {
|
|
12038
11981
|
if (minimizable) {
|
|
12039
11982
|
setIsMinimized(true);
|
|
12040
11983
|
setIsPanelOpen(false);
|
|
12041
11984
|
}
|
|
12042
11985
|
}, [minimizable]);
|
|
12043
|
-
const expandOnSessionStartError =
|
|
11986
|
+
const expandOnSessionStartError = useCallback32(() => {
|
|
12044
11987
|
setIsMinimized(false);
|
|
12045
11988
|
setIsPanelOpen(true);
|
|
12046
11989
|
}, []);
|
|
12047
11990
|
const isExchangeDisconnectingRef = useRef42(false);
|
|
12048
|
-
const minimizeOnSessionDisconnect =
|
|
11991
|
+
const minimizeOnSessionDisconnect = useCallback32(() => {
|
|
12049
11992
|
if (isExchangeDisconnectingRef.current)
|
|
12050
11993
|
return;
|
|
12051
11994
|
setActiveModule(null);
|
|
@@ -12095,29 +12038,29 @@ function LiveAgent(props) {
|
|
|
12095
12038
|
});
|
|
12096
12039
|
const isRoomReleasedRef = useRef42(false);
|
|
12097
12040
|
isRoomReleasedRef.current = !isConnected || isPausing || isDisconnecting;
|
|
12098
|
-
const handleRoomDisconnected =
|
|
12041
|
+
const handleRoomDisconnected = useCallback32(() => {
|
|
12099
12042
|
if (isExchangeDisconnectingRef.current || isRoomReleasedRef.current)
|
|
12100
12043
|
return;
|
|
12101
12044
|
disconnect();
|
|
12102
12045
|
}, [disconnect]);
|
|
12103
|
-
const [isPanelOpen, setIsPanelOpen] =
|
|
12104
|
-
const [isMinimized, setIsMinimized] =
|
|
12105
|
-
const [pendingStart, setPendingStart] =
|
|
12106
|
-
const [sidebarTab, setSidebarTab] =
|
|
12107
|
-
const [phasesSnapshot, setPhasesSnapshot] =
|
|
12108
|
-
const [startMuted, setStartMuted] =
|
|
12109
|
-
const [textMode, setTextMode] =
|
|
12110
|
-
const [panelExpanded, setPanelExpanded] =
|
|
12111
|
-
const togglePanelExpanded =
|
|
12046
|
+
const [isPanelOpen, setIsPanelOpen] = useState38(defaultOpen);
|
|
12047
|
+
const [isMinimized, setIsMinimized] = useState38(minimizable && !defaultOpen);
|
|
12048
|
+
const [pendingStart, setPendingStart] = useState38(null);
|
|
12049
|
+
const [sidebarTab, setSidebarTab] = useState38("agenda");
|
|
12050
|
+
const [phasesSnapshot, setPhasesSnapshot] = useState38([]);
|
|
12051
|
+
const [startMuted, setStartMuted] = useState38(false);
|
|
12052
|
+
const [textMode, setTextMode] = useState38(false);
|
|
12053
|
+
const [panelExpanded, setPanelExpanded] = useState38(false);
|
|
12054
|
+
const togglePanelExpanded = useCallback32(() => setPanelExpanded((prev) => !prev), []);
|
|
12112
12055
|
const panelRef = useRef42(null);
|
|
12113
12056
|
const controlBarRef = useRef42(null);
|
|
12114
12057
|
const voiceBarRef = useRef42(null);
|
|
12115
|
-
const [isDragging, setIsDragging] =
|
|
12116
|
-
const setTextModeState =
|
|
12058
|
+
const [isDragging, setIsDragging] = useState38(false);
|
|
12059
|
+
const setTextModeState = useCallback32((enabled) => {
|
|
12117
12060
|
setTextMode(enabled);
|
|
12118
12061
|
}, []);
|
|
12119
12062
|
const showControlBar = isConnected || isStarting || isPausing;
|
|
12120
|
-
|
|
12063
|
+
useEffect48(() => {
|
|
12121
12064
|
if (!isConnected)
|
|
12122
12065
|
setTextModeState(false);
|
|
12123
12066
|
}, [isConnected, setTextModeState]);
|
|
@@ -12140,7 +12083,11 @@ function LiveAgent(props) {
|
|
|
12140
12083
|
const isBootAuthPending = usesHostAuth ? !!appKey && !isAuthenticated && !authFailed : !!appKey && !auth.hasResolvedStoredToken;
|
|
12141
12084
|
const isAwaitingModules = isAuthenticated ? !hasResolvedModules : isBootAuthPending;
|
|
12142
12085
|
const isLauncherRevealed = useOnceTrue(!isAwaitingModules);
|
|
12143
|
-
const {
|
|
12086
|
+
const {
|
|
12087
|
+
goals: adoptionGoals,
|
|
12088
|
+
hasResolved: hasResolvedAdoptionGoals,
|
|
12089
|
+
attendGoal
|
|
12090
|
+
} = useAdoptionGoals({
|
|
12144
12091
|
enabled: !isSessionLive || activeModule?.mode === AGENT_MODE.AlwaysOn || sessionAgentMode === AGENT_MODE.AlwaysOn,
|
|
12145
12092
|
bearerToken,
|
|
12146
12093
|
authedFetch
|
|
@@ -12148,7 +12095,7 @@ function LiveAgent(props) {
|
|
|
12148
12095
|
const buddyActive = isBuddyActive(appearance) && variant !== "sidebar" && !hostAgentId;
|
|
12149
12096
|
const buddyShape = appearance?.buddy?.shape ?? DEFAULT_BUDDY_SHAPE;
|
|
12150
12097
|
const effectiveHostAgentId = buddyActive ? undefined : hostAgentId;
|
|
12151
|
-
const startSession =
|
|
12098
|
+
const startSession = useCallback32((opts) => startSessionRaw(buddyActive ? { ...opts, agentControls: buddyEffectiveControls(opts.agentControls) } : opts), [startSessionRaw, buddyActive]);
|
|
12152
12099
|
const defaultAgentId = buddyActive ? defaultSelection.agentId : hostAgentId ?? defaultSelection.agentId;
|
|
12153
12100
|
const defaultModule = availableModules.find((m) => m.id === defaultAgentId) ?? null;
|
|
12154
12101
|
const operatingModule = buddyActive ? defaultModule : activeModule ?? (effectiveHostAgentId ? availableModules[0] ?? null : null);
|
|
@@ -12159,7 +12106,7 @@ function LiveAgent(props) {
|
|
|
12159
12106
|
const shouldAnimateCursor = operatingModule?.uiPreferences?.animateCursor ?? animateAgentCursor;
|
|
12160
12107
|
const buddyDefaultMissing = buddyActive && hasResolvedModules && !modulesError && !defaultModule && !isSessionLive;
|
|
12161
12108
|
const resumableSession = useMemo8(() => getResumableSession(operatingModule), [operatingModule]);
|
|
12162
|
-
const resumeSession =
|
|
12109
|
+
const resumeSession = useCallback32(async () => {
|
|
12163
12110
|
if (!resumableSession)
|
|
12164
12111
|
return;
|
|
12165
12112
|
if (operatingModule) {
|
|
@@ -12172,7 +12119,7 @@ function LiveAgent(props) {
|
|
|
12172
12119
|
existingSessionId: resumableSession.id
|
|
12173
12120
|
});
|
|
12174
12121
|
}, [resumableSession, operatingModule, startSession, baseAgentControls]);
|
|
12175
|
-
const selectModule =
|
|
12122
|
+
const selectModule = useCallback32(async (moduleId, opts) => {
|
|
12176
12123
|
if (isExchangeDisconnectingRef.current)
|
|
12177
12124
|
return;
|
|
12178
12125
|
const found = availableModules.find((m) => m.id === moduleId);
|
|
@@ -12206,7 +12153,7 @@ function LiveAgent(props) {
|
|
|
12206
12153
|
autoStarted: opts?.autoStarted
|
|
12207
12154
|
});
|
|
12208
12155
|
}, [availableModules, startSession, isSessionLive, operatingModule, disconnect]);
|
|
12209
|
-
const startAdoptionSession =
|
|
12156
|
+
const startAdoptionSession = useCallback32((goal) => {
|
|
12210
12157
|
attendGoal(goal.goalId);
|
|
12211
12158
|
const found = availableModules.find((m) => m.id === goal.agentId);
|
|
12212
12159
|
if (found)
|
|
@@ -12218,16 +12165,16 @@ function LiveAgent(props) {
|
|
|
12218
12165
|
adoptionGoalId: goal.goalId
|
|
12219
12166
|
});
|
|
12220
12167
|
}, [attendGoal, availableModules, startSession]);
|
|
12221
|
-
const previewStart =
|
|
12168
|
+
const previewStart = useCallback32((pending) => {
|
|
12222
12169
|
setPendingStart(pending);
|
|
12223
12170
|
setIsMinimized(false);
|
|
12224
12171
|
}, []);
|
|
12225
|
-
const [welcomeDismissed, setWelcomeDismissed] =
|
|
12226
|
-
const dismissWelcome =
|
|
12227
|
-
const [savedPosition] =
|
|
12228
|
-
const [currentPosition, setCurrentPosition] =
|
|
12172
|
+
const [welcomeDismissed, setWelcomeDismissed] = useState38(false);
|
|
12173
|
+
const dismissWelcome = useCallback32(() => setWelcomeDismissed(true), []);
|
|
12174
|
+
const [savedPosition] = useState38(readSavedPosition);
|
|
12175
|
+
const [currentPosition, setCurrentPosition] = useState38(savedPosition ?? "right");
|
|
12229
12176
|
const positionLockedRef = useRef42(savedPosition !== null);
|
|
12230
|
-
const setPositionWithPersist =
|
|
12177
|
+
const setPositionWithPersist = useCallback32((pos) => {
|
|
12231
12178
|
positionLockedRef.current = true;
|
|
12232
12179
|
setCurrentPosition(pos);
|
|
12233
12180
|
try {
|
|
@@ -12235,18 +12182,18 @@ function LiveAgent(props) {
|
|
|
12235
12182
|
} catch {}
|
|
12236
12183
|
}, []);
|
|
12237
12184
|
const serverPosition = appearance?.position ?? null;
|
|
12238
|
-
|
|
12185
|
+
useEffect48(() => {
|
|
12239
12186
|
if (!serverPosition || positionLockedRef.current)
|
|
12240
12187
|
return;
|
|
12241
12188
|
setCurrentPosition(serverPosition);
|
|
12242
12189
|
}, [serverPosition]);
|
|
12243
|
-
const [savedLauncherBottom] =
|
|
12190
|
+
const [savedLauncherBottom] = useState38(readSavedLauncherBottom);
|
|
12244
12191
|
const hasDraggedRef = useRef42(savedLauncherBottom !== null);
|
|
12245
12192
|
const verticalAlignRef = useRef42(hostVerticalAlign ?? "bottom");
|
|
12246
|
-
const [launcherBottomPx, setLauncherBottomPxState] =
|
|
12247
|
-
const [popsDown, setPopsDown] =
|
|
12193
|
+
const [launcherBottomPx, setLauncherBottomPxState] = useState38(() => savedLauncherBottom !== null ? clampLauncherBottom(savedLauncherBottom) : verticalAlignToBottomPx(verticalAlignRef.current));
|
|
12194
|
+
const [popsDown, setPopsDown] = useState38(() => launcherPopsDown(launcherBottomPx));
|
|
12248
12195
|
const serverVerticalAlign = appearance?.verticalAlign ?? null;
|
|
12249
|
-
|
|
12196
|
+
useEffect48(() => {
|
|
12250
12197
|
if (!serverVerticalAlign || hostVerticalAlign !== undefined || hasDraggedRef.current)
|
|
12251
12198
|
return;
|
|
12252
12199
|
verticalAlignRef.current = serverVerticalAlign;
|
|
@@ -12254,7 +12201,7 @@ function LiveAgent(props) {
|
|
|
12254
12201
|
setLauncherBottomPxState(next);
|
|
12255
12202
|
setPopsDown(launcherPopsDown(next));
|
|
12256
12203
|
}, [serverVerticalAlign, hostVerticalAlign]);
|
|
12257
|
-
const setLauncherBottomPx =
|
|
12204
|
+
const setLauncherBottomPx = useCallback32((px) => {
|
|
12258
12205
|
hasDraggedRef.current = true;
|
|
12259
12206
|
setLauncherBottomPxState(px);
|
|
12260
12207
|
setPopsDown(launcherPopsDown(px));
|
|
@@ -12264,18 +12211,18 @@ function LiveAgent(props) {
|
|
|
12264
12211
|
}, []);
|
|
12265
12212
|
const launcherBottomPxRef = useRef42(launcherBottomPx);
|
|
12266
12213
|
launcherBottomPxRef.current = launcherBottomPx;
|
|
12267
|
-
const [chatActivityAt, setChatActivityAt] =
|
|
12268
|
-
const reportChatActivity =
|
|
12214
|
+
const [chatActivityAt, setChatActivityAt] = useState38(0);
|
|
12215
|
+
const reportChatActivity = useCallback32(() => {
|
|
12269
12216
|
const now = Date.now();
|
|
12270
12217
|
setChatActivityAt((last) => now - last < CHAT_ACTIVITY_THROTTLE_MS ? last : now);
|
|
12271
12218
|
}, []);
|
|
12272
|
-
const [chatDraft, setChatDraft] =
|
|
12273
|
-
const [autoStartAfterLogin, setAutoStartAfterLogin] =
|
|
12274
|
-
const commitLauncherDrop =
|
|
12219
|
+
const [chatDraft, setChatDraft] = useState38("");
|
|
12220
|
+
const [autoStartAfterLogin, setAutoStartAfterLogin] = useState38(false);
|
|
12221
|
+
const commitLauncherDrop = useCallback32(({ side, bottomPx }) => {
|
|
12275
12222
|
setPositionWithPersist(side);
|
|
12276
12223
|
setLauncherBottomPx(bottomPx);
|
|
12277
12224
|
}, [setPositionWithPersist, setLauncherBottomPx]);
|
|
12278
|
-
const [barPos, setBarPosState] =
|
|
12225
|
+
const [barPos, setBarPosState] = useState38(() => readSavedBarPos());
|
|
12279
12226
|
const barPosRatioRef = useRef42(null);
|
|
12280
12227
|
if (barPos !== null) {
|
|
12281
12228
|
barPosRatioRef.current = {
|
|
@@ -12289,7 +12236,7 @@ function LiveAgent(props) {
|
|
|
12289
12236
|
yRatio: def.y / window.innerHeight
|
|
12290
12237
|
};
|
|
12291
12238
|
}
|
|
12292
|
-
const setBarPos =
|
|
12239
|
+
const setBarPos = useCallback32((next) => {
|
|
12293
12240
|
setBarPosState(next);
|
|
12294
12241
|
persistBarPos(next);
|
|
12295
12242
|
barPosRatioRef.current = {
|
|
@@ -12297,7 +12244,7 @@ function LiveAgent(props) {
|
|
|
12297
12244
|
yRatio: next.y / window.innerHeight
|
|
12298
12245
|
};
|
|
12299
12246
|
}, []);
|
|
12300
|
-
|
|
12247
|
+
useEffect48(() => {
|
|
12301
12248
|
const syncToViewport = () => {
|
|
12302
12249
|
const next = hasDraggedRef.current ? clampLauncherBottom(launcherBottomPxRef.current) : verticalAlignToBottomPx(verticalAlignRef.current);
|
|
12303
12250
|
setLauncherBottomPxState(next);
|
|
@@ -12307,7 +12254,7 @@ function LiveAgent(props) {
|
|
|
12307
12254
|
window.addEventListener("resize", syncToViewport);
|
|
12308
12255
|
return () => window.removeEventListener("resize", syncToViewport);
|
|
12309
12256
|
}, []);
|
|
12310
|
-
|
|
12257
|
+
useEffect48(() => {
|
|
12311
12258
|
const syncBarToViewport = () => {
|
|
12312
12259
|
const ratios = barPosRatioRef.current;
|
|
12313
12260
|
if (!ratios)
|
|
@@ -12320,28 +12267,28 @@ function LiveAgent(props) {
|
|
|
12320
12267
|
window.addEventListener("resize", syncBarToViewport);
|
|
12321
12268
|
return () => window.removeEventListener("resize", syncBarToViewport);
|
|
12322
12269
|
}, []);
|
|
12323
|
-
const openPanel =
|
|
12324
|
-
const closePanel =
|
|
12325
|
-
const togglePanel =
|
|
12326
|
-
const expandPanel =
|
|
12270
|
+
const openPanel = useCallback32(() => setIsPanelOpen(true), []);
|
|
12271
|
+
const closePanel = useCallback32(() => setIsPanelOpen(false), []);
|
|
12272
|
+
const togglePanel = useCallback32(() => setIsPanelOpen((prev) => !prev), []);
|
|
12273
|
+
const expandPanel = useCallback32(() => {
|
|
12327
12274
|
setIsMinimized(false);
|
|
12328
12275
|
setIsPanelOpen(true);
|
|
12329
12276
|
}, []);
|
|
12330
|
-
const minimizePanel =
|
|
12277
|
+
const minimizePanel = useCallback32(() => {
|
|
12331
12278
|
if (!minimizable)
|
|
12332
12279
|
return;
|
|
12333
12280
|
setIsMinimized(true);
|
|
12334
12281
|
setIsPanelOpen(false);
|
|
12335
12282
|
}, [minimizable]);
|
|
12336
|
-
const revealBar =
|
|
12283
|
+
const revealBar = useCallback32(() => {
|
|
12337
12284
|
setPendingStart(null);
|
|
12338
12285
|
setIsMinimized(false);
|
|
12339
12286
|
}, []);
|
|
12340
|
-
const pauseSessionAndMinimize =
|
|
12287
|
+
const pauseSessionAndMinimize = useCallback32(async () => {
|
|
12341
12288
|
await pauseSession();
|
|
12342
12289
|
minimizePanel();
|
|
12343
12290
|
}, [pauseSession, minimizePanel]);
|
|
12344
|
-
const startDefaultSession =
|
|
12291
|
+
const startDefaultSession = useCallback32(() => {
|
|
12345
12292
|
const target = availableModules.find((m) => m.id === defaultAgentId);
|
|
12346
12293
|
if (!target)
|
|
12347
12294
|
return;
|
|
@@ -12353,7 +12300,7 @@ function LiveAgent(props) {
|
|
|
12353
12300
|
existingSessionId: defaultSelection.sessionId ?? undefined
|
|
12354
12301
|
});
|
|
12355
12302
|
}, [defaultAgentId, availableModules, defaultSelection.sessionId, startSession]);
|
|
12356
|
-
const startPrimarySession =
|
|
12303
|
+
const startPrimarySession = useCallback32(() => {
|
|
12357
12304
|
if (pendingStart) {
|
|
12358
12305
|
const pending = pendingStart;
|
|
12359
12306
|
setPendingStart(null);
|
|
@@ -12371,7 +12318,7 @@ function LiveAgent(props) {
|
|
|
12371
12318
|
bearerToken,
|
|
12372
12319
|
selectModule
|
|
12373
12320
|
});
|
|
12374
|
-
|
|
12321
|
+
useEffect48(() => {
|
|
12375
12322
|
if (!autoStartAfterLogin)
|
|
12376
12323
|
return;
|
|
12377
12324
|
if (bearerToken === null || !hasResolvedModules || isSessionLive)
|
|
@@ -12389,7 +12336,7 @@ function LiveAgent(props) {
|
|
|
12389
12336
|
startPrimarySession
|
|
12390
12337
|
]);
|
|
12391
12338
|
const isSplashConfigured = appearance?.launcherMode === LAUNCHER_MODE.Template && appearance.splash?.enabled === true;
|
|
12392
|
-
const idleHistoryEnabled = !isSessionLive &&
|
|
12339
|
+
const idleHistoryEnabled = !isSessionLive && (isSplashConfigured || isPanelOpen && !isPaused) && isAuthenticated;
|
|
12393
12340
|
const {
|
|
12394
12341
|
messages: idleHistoryMessages,
|
|
12395
12342
|
phases: idleHistoryPhases,
|
|
@@ -12404,11 +12351,11 @@ function LiveAgent(props) {
|
|
|
12404
12351
|
phases: idleHistoryPhases,
|
|
12405
12352
|
isLoading: isLoadingHistory
|
|
12406
12353
|
}), [idleHistoryMessages, idleHistoryPhases, isLoadingHistory]);
|
|
12407
|
-
const [splashDismissed, setSplashDismissed] =
|
|
12408
|
-
const dismissSplash =
|
|
12409
|
-
const reopenSplash =
|
|
12354
|
+
const [splashDismissed, setSplashDismissed] = useState38(false);
|
|
12355
|
+
const dismissSplash = useCallback32(() => setSplashDismissed(true), []);
|
|
12356
|
+
const reopenSplash = useCallback32(() => setSplashDismissed(false), []);
|
|
12410
12357
|
const splashMountCountRef = useRef42(0);
|
|
12411
|
-
const notifySplashMount =
|
|
12358
|
+
const notifySplashMount = useCallback32(() => {
|
|
12412
12359
|
splashMountCountRef.current += 1;
|
|
12413
12360
|
if (splashMountCountRef.current > 1)
|
|
12414
12361
|
console.warn(SPLASH_MULTI_MOUNT_WARNING);
|
|
@@ -12416,7 +12363,7 @@ function LiveAgent(props) {
|
|
|
12416
12363
|
splashMountCountRef.current -= 1;
|
|
12417
12364
|
};
|
|
12418
12365
|
}, []);
|
|
12419
|
-
|
|
12366
|
+
useEffect48(() => {
|
|
12420
12367
|
if (!isSplashConfigured)
|
|
12421
12368
|
return;
|
|
12422
12369
|
queueMicrotask(() => {
|
|
@@ -12515,6 +12462,7 @@ function LiveAgent(props) {
|
|
|
12515
12462
|
hasResolvedModules,
|
|
12516
12463
|
appearance,
|
|
12517
12464
|
adoptionGoals,
|
|
12465
|
+
hasResolvedAdoptionGoals,
|
|
12518
12466
|
startAdoptionSession,
|
|
12519
12467
|
attendGoal,
|
|
12520
12468
|
buddyActive,
|
|
@@ -12603,76 +12551,77 @@ function LiveAgent(props) {
|
|
|
12603
12551
|
hasResolvedModules,
|
|
12604
12552
|
appearance,
|
|
12605
12553
|
adoptionGoals,
|
|
12554
|
+
hasResolvedAdoptionGoals,
|
|
12606
12555
|
startAdoptionSession,
|
|
12607
12556
|
attendGoal,
|
|
12608
12557
|
buddyActive,
|
|
12609
12558
|
buddyShape
|
|
12610
12559
|
]);
|
|
12611
12560
|
if (noModulesAvailable || buddyDefaultMissing) {
|
|
12612
|
-
return /* @__PURE__ */
|
|
12561
|
+
return /* @__PURE__ */ jsx50(LiveAgentContext.Provider, {
|
|
12613
12562
|
value: ctx,
|
|
12614
12563
|
children
|
|
12615
12564
|
});
|
|
12616
12565
|
}
|
|
12617
|
-
return /* @__PURE__ */
|
|
12566
|
+
return /* @__PURE__ */ jsx50(LiveAgentContext.Provider, {
|
|
12618
12567
|
value: ctx,
|
|
12619
|
-
children: /* @__PURE__ */
|
|
12568
|
+
children: /* @__PURE__ */ jsxs41(LiveKitRoom, {
|
|
12620
12569
|
serverUrl: connection?.livekitUrl,
|
|
12621
12570
|
token: connection?.token,
|
|
12622
12571
|
connect: shouldConnect,
|
|
12623
12572
|
audio: !startMuted,
|
|
12624
12573
|
onDisconnected: handleRoomDisconnected,
|
|
12625
12574
|
children: [
|
|
12626
|
-
/* @__PURE__ */
|
|
12575
|
+
/* @__PURE__ */ jsxs41(Fragment6, {
|
|
12627
12576
|
children: [
|
|
12628
|
-
connection && !textMode && /* @__PURE__ */
|
|
12629
|
-
/* @__PURE__ */
|
|
12577
|
+
connection && !textMode && /* @__PURE__ */ jsx50(RoomAudioRenderer, {}),
|
|
12578
|
+
/* @__PURE__ */ jsxs41(SessionHoldProvider, {
|
|
12630
12579
|
children: [
|
|
12631
|
-
connection && captureMode === CAPTURE_MODE.Screenshare && /* @__PURE__ */
|
|
12580
|
+
connection && captureMode === CAPTURE_MODE.Screenshare && /* @__PURE__ */ jsx50(AutoStartMedia, {
|
|
12632
12581
|
pendingScreenStream,
|
|
12633
12582
|
pushOrTapMicMode: isRequestResponseMicMode(agentControls?.micMode),
|
|
12634
12583
|
startMuted
|
|
12635
12584
|
}),
|
|
12636
|
-
connection && captureMode === CAPTURE_MODE.Auto && /* @__PURE__ */
|
|
12585
|
+
connection && captureMode === CAPTURE_MODE.Auto && /* @__PURE__ */ jsx50(DomCapture, {
|
|
12637
12586
|
pushOrTapMicMode: isRequestResponseMicMode(agentControls?.micMode),
|
|
12638
12587
|
startMuted
|
|
12639
12588
|
}),
|
|
12640
|
-
/* @__PURE__ */
|
|
12589
|
+
/* @__PURE__ */ jsxs41(ShadowHost, {
|
|
12641
12590
|
accentColor: appearance?.accentColor ?? null,
|
|
12642
12591
|
children: [
|
|
12643
|
-
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.highlight && /* @__PURE__ */
|
|
12644
|
-
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */
|
|
12645
|
-
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */
|
|
12646
|
-
connection && captureMode === CAPTURE_MODE.Auto && (agentControls?.highlight || agentControls?.actions) && /* @__PURE__ */
|
|
12592
|
+
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.highlight && /* @__PURE__ */ jsx50(HighlightOverlay, {}),
|
|
12593
|
+
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */ jsx50(PageActionHandler, {}),
|
|
12594
|
+
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */ jsx50(PlanPanelOpener, {}),
|
|
12595
|
+
connection && captureMode === CAPTURE_MODE.Auto && (agentControls?.highlight || agentControls?.actions) && /* @__PURE__ */ jsx50(AgentCursorMount, {
|
|
12647
12596
|
animated: shouldAnimateCursor
|
|
12648
12597
|
}),
|
|
12649
|
-
/* @__PURE__ */
|
|
12650
|
-
children: /* @__PURE__ */
|
|
12651
|
-
children: /* @__PURE__ */
|
|
12598
|
+
/* @__PURE__ */ jsx50(VoiceTurnProvider, {
|
|
12599
|
+
children: /* @__PURE__ */ jsx50(TranscriptionsProvider, {
|
|
12600
|
+
children: /* @__PURE__ */ jsx50("div", {
|
|
12652
12601
|
id: WIDGET_ROOT_ID,
|
|
12653
|
-
children: variant === "sidebar" ? /* @__PURE__ */
|
|
12602
|
+
children: variant === "sidebar" ? /* @__PURE__ */ jsxs41(Fragment7, {
|
|
12654
12603
|
children: [
|
|
12655
|
-
isMinimized && !showControlBar && isLauncherRevealed && /* @__PURE__ */
|
|
12604
|
+
isMinimized && !showControlBar && isLauncherRevealed && /* @__PURE__ */ jsx50(MinimizedBubble, {
|
|
12656
12605
|
welcomeMessage,
|
|
12657
12606
|
welcomeDismissed,
|
|
12658
12607
|
onDismissWelcome: dismissWelcome
|
|
12659
12608
|
}),
|
|
12660
|
-
showControlBar && !hideControls && /* @__PURE__ */
|
|
12661
|
-
/* @__PURE__ */
|
|
12662
|
-
/* @__PURE__ */
|
|
12609
|
+
showControlBar && !hideControls && /* @__PURE__ */ jsx50(SessionControlBar, {}),
|
|
12610
|
+
/* @__PURE__ */ jsx50(SidebarTrigger, {}),
|
|
12611
|
+
/* @__PURE__ */ jsx50(Sidebar, {
|
|
12663
12612
|
hideControls,
|
|
12664
12613
|
hideHeader,
|
|
12665
12614
|
startSessionLabel
|
|
12666
12615
|
})
|
|
12667
12616
|
]
|
|
12668
|
-
}) : !isLauncherRevealed ? null : buddyActive ? /* @__PURE__ */
|
|
12617
|
+
}) : !isLauncherRevealed ? null : buddyActive ? /* @__PURE__ */ jsx50(BuddyVoiceBar, {
|
|
12669
12618
|
revealed: isLauncherRevealed
|
|
12670
|
-
}) : /* @__PURE__ */
|
|
12619
|
+
}) : /* @__PURE__ */ jsxs41(Fragment7, {
|
|
12671
12620
|
children: [
|
|
12672
|
-
/* @__PURE__ */
|
|
12621
|
+
/* @__PURE__ */ jsx50(VoiceBar, {
|
|
12673
12622
|
revealed: isLauncherRevealed
|
|
12674
12623
|
}),
|
|
12675
|
-
(agentControls?.chat ?? DEFAULT_CHAT_SURFACE) === CHAT_SURFACE.Room && /* @__PURE__ */
|
|
12624
|
+
(agentControls?.chat ?? DEFAULT_CHAT_SURFACE) === CHAT_SURFACE.Room && /* @__PURE__ */ jsx50(Sidebar, {
|
|
12676
12625
|
hideControls,
|
|
12677
12626
|
hideHeader,
|
|
12678
12627
|
startSessionLabel
|
|
@@ -12697,7 +12646,7 @@ function LiveAgent(props) {
|
|
|
12697
12646
|
import { useContext as useContext26 } from "react";
|
|
12698
12647
|
|
|
12699
12648
|
// src/hooks/useSplash.ts
|
|
12700
|
-
import { useCallback as
|
|
12649
|
+
import { useCallback as useCallback33, useContext as useContext25, useEffect as useEffect49, useMemo as useMemo9, useRef as useRef43, useState as useState39 } from "react";
|
|
12701
12650
|
|
|
12702
12651
|
// src/lib/splashPresentation.ts
|
|
12703
12652
|
function resolveSplashSections(sections, iconUrls) {
|
|
@@ -12733,7 +12682,6 @@ function resolveSplashPresentation(splash) {
|
|
|
12733
12682
|
}
|
|
12734
12683
|
|
|
12735
12684
|
// src/hooks/useSplash.ts
|
|
12736
|
-
var NO_PHASES = [];
|
|
12737
12685
|
var SPLASH_DISABLED_WARNING = "[Skippr] <SplashScreen> is mounted but the splash screen is turned off for this workspace, so it will never render. Enable it under Appearance in the Skippr platform.";
|
|
12738
12686
|
var LAUNCHER_MODE_WARNING = '[Skippr] <SplashScreen> is mounted but the launcher mode is not "template", so it will never render. Set the launcher to Template under Appearance in the Skippr platform.';
|
|
12739
12687
|
function useSplash(onDismiss) {
|
|
@@ -12750,6 +12698,8 @@ function useSplash(onDismiss) {
|
|
|
12750
12698
|
isMinimized,
|
|
12751
12699
|
isAuthenticated,
|
|
12752
12700
|
startPrimarySession,
|
|
12701
|
+
startAdoptionSession,
|
|
12702
|
+
hasResolvedAdoptionGoals,
|
|
12753
12703
|
armScreenStream,
|
|
12754
12704
|
startMuted,
|
|
12755
12705
|
setStartMuted,
|
|
@@ -12762,13 +12712,13 @@ function useSplash(onDismiss) {
|
|
|
12762
12712
|
const defaultModule = useMemo9(() => displayModules.find((module) => module.id === defaultAgentId) ?? null, [displayModules, defaultAgentId]);
|
|
12763
12713
|
const splash = appearance?.splash ?? null;
|
|
12764
12714
|
const launcherMode = appearance?.launcherMode ?? DEFAULT_LAUNCHER_MODE;
|
|
12765
|
-
const [micEnabled, setMicEnabled] =
|
|
12766
|
-
const [screenEnabled, setScreenEnabled] =
|
|
12715
|
+
const [micEnabled, setMicEnabled] = useState39(false);
|
|
12716
|
+
const [screenEnabled, setScreenEnabled] = useState39(false);
|
|
12767
12717
|
const heldScreenStreamRef = useRef43(null);
|
|
12768
12718
|
const screenRequestInFlightRef = useRef43(false);
|
|
12769
12719
|
const splashHandedOffRef = useRef43(false);
|
|
12770
12720
|
const splashInactiveRef = useRef43(false);
|
|
12771
|
-
const enableMic =
|
|
12721
|
+
const enableMic = useCallback33(() => {
|
|
12772
12722
|
(async () => {
|
|
12773
12723
|
let stream;
|
|
12774
12724
|
try {
|
|
@@ -12782,7 +12732,7 @@ function useSplash(onDismiss) {
|
|
|
12782
12732
|
setMicEnabled(true);
|
|
12783
12733
|
})();
|
|
12784
12734
|
}, []);
|
|
12785
|
-
|
|
12735
|
+
useEffect49(() => {
|
|
12786
12736
|
let cancelled = false;
|
|
12787
12737
|
(async () => {
|
|
12788
12738
|
if (!navigator.permissions?.query)
|
|
@@ -12799,8 +12749,8 @@ function useSplash(onDismiss) {
|
|
|
12799
12749
|
cancelled = true;
|
|
12800
12750
|
};
|
|
12801
12751
|
}, []);
|
|
12802
|
-
const toggleStartMuted =
|
|
12803
|
-
const releaseScreen =
|
|
12752
|
+
const toggleStartMuted = useCallback33(() => setStartMuted(!startMuted), [setStartMuted, startMuted]);
|
|
12753
|
+
const releaseScreen = useCallback33(() => {
|
|
12804
12754
|
const stream = heldScreenStreamRef.current;
|
|
12805
12755
|
if (!stream)
|
|
12806
12756
|
return;
|
|
@@ -12809,7 +12759,7 @@ function useSplash(onDismiss) {
|
|
|
12809
12759
|
for (const track of stream.getTracks())
|
|
12810
12760
|
track.stop();
|
|
12811
12761
|
}, [armScreenStream]);
|
|
12812
|
-
const enableScreen =
|
|
12762
|
+
const enableScreen = useCallback33(() => {
|
|
12813
12763
|
if (screenRequestInFlightRef.current)
|
|
12814
12764
|
return;
|
|
12815
12765
|
screenRequestInFlightRef.current = true;
|
|
@@ -12837,22 +12787,22 @@ function useSplash(onDismiss) {
|
|
|
12837
12787
|
}
|
|
12838
12788
|
})();
|
|
12839
12789
|
}, [armScreenStream, releaseScreen]);
|
|
12840
|
-
|
|
12790
|
+
useEffect49(() => () => {
|
|
12841
12791
|
if (!splashHandedOffRef.current)
|
|
12842
12792
|
releaseScreen();
|
|
12843
12793
|
}, [releaseScreen]);
|
|
12844
12794
|
const isLive = hasLiveSession(ctx);
|
|
12845
|
-
|
|
12795
|
+
useEffect49(() => {
|
|
12846
12796
|
if (isLive)
|
|
12847
12797
|
heldScreenStreamRef.current = null;
|
|
12848
12798
|
}, [isLive]);
|
|
12849
12799
|
const splashInactive = splashDismissed || isLive;
|
|
12850
|
-
|
|
12800
|
+
useEffect49(() => {
|
|
12851
12801
|
splashInactiveRef.current = splashInactive;
|
|
12852
12802
|
}, [splashInactive]);
|
|
12853
|
-
|
|
12803
|
+
useEffect49(() => notifySplashMount(), [notifySplashMount]);
|
|
12854
12804
|
const misconfigurationWarnedRef = useRef43(false);
|
|
12855
|
-
|
|
12805
|
+
useEffect49(() => {
|
|
12856
12806
|
if (!hasResolvedModules || misconfigurationWarnedRef.current)
|
|
12857
12807
|
return;
|
|
12858
12808
|
if (!splash?.enabled) {
|
|
@@ -12865,33 +12815,66 @@ function useSplash(onDismiss) {
|
|
|
12865
12815
|
console.warn(LAUNCHER_MODE_WARNING);
|
|
12866
12816
|
}
|
|
12867
12817
|
}, [hasResolvedModules, splash?.enabled, launcherMode]);
|
|
12868
|
-
const dismiss =
|
|
12818
|
+
const dismiss = useCallback33(() => {
|
|
12869
12819
|
releaseScreen();
|
|
12870
12820
|
dismissSplash();
|
|
12871
12821
|
onDismiss?.();
|
|
12872
12822
|
}, [releaseScreen, dismissSplash, onDismiss]);
|
|
12873
|
-
const start =
|
|
12823
|
+
const start = useCallback33(() => {
|
|
12874
12824
|
splashHandedOffRef.current = true;
|
|
12875
12825
|
startPrimarySession();
|
|
12876
12826
|
}, [startPrimarySession]);
|
|
12827
|
+
const startTip = useCallback33((goal) => {
|
|
12828
|
+
splashHandedOffRef.current = true;
|
|
12829
|
+
startAdoptionSession(goal);
|
|
12830
|
+
}, [startAdoptionSession]);
|
|
12831
|
+
const tips = useAdoptionTips();
|
|
12877
12832
|
const presentation = useMemo9(() => resolveSplashPresentation(splash), [splash]);
|
|
12878
12833
|
const iconUrls = appearance?.splashIconUrls ?? null;
|
|
12879
12834
|
const sections = useMemo9(() => resolveSplashSections(splash?.sections ?? null, iconUrls), [splash?.sections, iconUrls]);
|
|
12880
|
-
const phases =
|
|
12835
|
+
const phases = idleHistory.phases;
|
|
12881
12836
|
const lastCompletedPhase = useMemo9(() => phases.findLast((phase) => phase.status === "completed") ?? null, [phases]);
|
|
12882
12837
|
const upcomingPhases = useMemo9(() => phases.filter((phase) => phase.status !== "completed"), [phases]);
|
|
12883
12838
|
if (!isSplashConfigured || isLive || !isMinimized || !isAuthenticated || !defaultModule || splashDismissed) {
|
|
12884
12839
|
return null;
|
|
12885
12840
|
}
|
|
12841
|
+
const isAlwaysOn = defaultModule.mode === AGENT_MODE.AlwaysOn;
|
|
12842
|
+
if (isAlwaysOn && !hasResolvedAdoptionGoals) {
|
|
12843
|
+
return null;
|
|
12844
|
+
}
|
|
12845
|
+
if (!isAlwaysOn && idleHistory.isLoading) {
|
|
12846
|
+
return null;
|
|
12847
|
+
}
|
|
12886
12848
|
const effectiveScreenEnabled = captureMode === CAPTURE_MODE.Screenshare ? screenEnabled : null;
|
|
12849
|
+
if (isAlwaysOn) {
|
|
12850
|
+
return {
|
|
12851
|
+
layout: SPLASH_LAYOUT.AlwaysOn,
|
|
12852
|
+
agentName: defaultModule.name,
|
|
12853
|
+
presentation,
|
|
12854
|
+
headerIconUrl: iconUrls?.[SPLASH_HEADER_ICON_SLOT] ?? null,
|
|
12855
|
+
attributionVisible: splash?.attributionVisible ?? DEFAULT_SPLASH_ATTRIBUTION_VISIBLE,
|
|
12856
|
+
tips,
|
|
12857
|
+
micEnabled,
|
|
12858
|
+
startMuted,
|
|
12859
|
+
screenEnabled: effectiveScreenEnabled,
|
|
12860
|
+
enableMic,
|
|
12861
|
+
toggleStartMuted,
|
|
12862
|
+
enableScreen,
|
|
12863
|
+
startTip,
|
|
12864
|
+
start,
|
|
12865
|
+
dismiss
|
|
12866
|
+
};
|
|
12867
|
+
}
|
|
12868
|
+
const intent = getModuleSessionState(defaultModule.currentSession, defaultModule.mode) === "resume" ? SPLASH_INTENT.Continue : SPLASH_INTENT.Start;
|
|
12887
12869
|
return {
|
|
12870
|
+
layout: SPLASH_LAYOUT.Primary,
|
|
12888
12871
|
agentName: defaultModule.name,
|
|
12889
12872
|
presentation,
|
|
12890
12873
|
headerIconUrl: iconUrls?.[SPLASH_HEADER_ICON_SLOT] ?? null,
|
|
12891
12874
|
sections,
|
|
12892
12875
|
attributionVisible: splash?.attributionVisible ?? DEFAULT_SPLASH_ATTRIBUTION_VISIBLE,
|
|
12893
|
-
skipButtonVisible: splash?.
|
|
12894
|
-
intent
|
|
12876
|
+
skipButtonVisible: (intent === SPLASH_INTENT.Continue ? splash?.continueSkipButtonVisible : splash?.startSkipButtonVisible) ?? DEFAULT_SPLASH_SKIP_BUTTON_VISIBLE,
|
|
12877
|
+
intent,
|
|
12895
12878
|
lastCompletedPhase,
|
|
12896
12879
|
upcomingPhases,
|
|
12897
12880
|
micEnabled,
|
|
@@ -12905,81 +12888,49 @@ function useSplash(onDismiss) {
|
|
|
12905
12888
|
};
|
|
12906
12889
|
}
|
|
12907
12890
|
|
|
12908
|
-
// src/
|
|
12909
|
-
import { jsx as jsx50, jsxs as jsxs41, Fragment as Fragment9 } from "react/jsx-runtime";
|
|
12910
|
-
var ATTRIBUTION_PREFIX2 = "Powered by";
|
|
12911
|
-
var ATTRIBUTION_BRAND2 = "Skippr";
|
|
12912
|
-
var ATTRIBUTION_URL2 = "https://www.skippr.ai/";
|
|
12913
|
-
var CLOSE_LABEL = "Close";
|
|
12914
|
-
var SCREEN_NOTICE = "Required";
|
|
12915
|
-
var ENABLE_ACTION = "Enable";
|
|
12916
|
-
var MEDIA_ENABLED_STATUS = "Enabled";
|
|
12917
|
-
var MIC_MUTED_STATUS = "Muted";
|
|
12918
|
-
var MUTE_MIC_ACTION = "Mute microphone";
|
|
12919
|
-
var UNMUTE_MIC_ACTION = "Unmute microphone";
|
|
12920
|
-
var CONSENT_LEAD_IN = "By starting a session";
|
|
12891
|
+
// src/lib/splashStyles.ts
|
|
12921
12892
|
var SECTION_HEADING = "skippr:text-[11px] skippr:font-semibold skippr:uppercase skippr:tracking-[0.05em] skippr:text-[#6b6875]";
|
|
12922
12893
|
var SECTION_BLOCK = "skippr:mt-[6px] skippr:flex skippr:flex-col skippr:gap-[14px] skippr:first:mt-0";
|
|
12923
|
-
var
|
|
12894
|
+
var ICON_TILE_SHAPE = "skippr:flex skippr:size-[38px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-[11px]";
|
|
12895
|
+
var ICON_TILE = `${ICON_TILE_SHAPE} skippr:bg-[#f2f0eb] skippr:text-[#2D2D3F]`;
|
|
12896
|
+
var ICON_TILE_BRAND = `${ICON_TILE_SHAPE} skippr:bg-primary skippr:text-primary-foreground`;
|
|
12924
12897
|
var ROW_TEXT = "skippr:flex skippr:min-w-0 skippr:flex-col skippr:gap-px";
|
|
12925
12898
|
var ROW_TITLE = "skippr:text-[14px] skippr:font-medium skippr:text-[#2D2D3F]";
|
|
12926
12899
|
var ROW_SUBTEXT = "skippr:text-[12px] skippr:text-[#6b6875]";
|
|
12927
12900
|
var ROW_ICON = "skippr:size-[17px]";
|
|
12928
12901
|
var ROW_ICON_STROKE = 1.8;
|
|
12929
12902
|
var FOCUS_RING3 = "skippr:focus-visible:outline-2 skippr:focus-visible:outline-offset-2 skippr:focus-visible:outline-[var(--skippr-brand)]";
|
|
12930
|
-
|
|
12931
|
-
|
|
12932
|
-
|
|
12933
|
-
|
|
12934
|
-
|
|
12935
|
-
|
|
12936
|
-
|
|
12937
|
-
|
|
12938
|
-
|
|
12939
|
-
|
|
12940
|
-
|
|
12941
|
-
|
|
12942
|
-
|
|
12943
|
-
|
|
12944
|
-
|
|
12945
|
-
className: `skippr:object-contain ${ROW_ICON}`
|
|
12946
|
-
}) : /* @__PURE__ */ jsx50(Glyph, {
|
|
12947
|
-
className: ROW_ICON,
|
|
12948
|
-
strokeWidth: ROW_ICON_STROKE
|
|
12949
|
-
})
|
|
12950
|
-
}),
|
|
12951
|
-
/* @__PURE__ */ jsxs41("span", {
|
|
12952
|
-
className: ROW_TEXT,
|
|
12953
|
-
children: [
|
|
12954
|
-
/* @__PURE__ */ jsx50("span", {
|
|
12955
|
-
className: ROW_TITLE,
|
|
12956
|
-
children: title
|
|
12957
|
-
}),
|
|
12958
|
-
/* @__PURE__ */ jsx50("span", {
|
|
12959
|
-
className: ROW_SUBTEXT,
|
|
12960
|
-
children: description
|
|
12961
|
-
})
|
|
12962
|
-
]
|
|
12963
|
-
})
|
|
12964
|
-
]
|
|
12965
|
-
});
|
|
12966
|
-
}
|
|
12903
|
+
|
|
12904
|
+
// src/components/SplashMediaSection.tsx
|
|
12905
|
+
import { jsx as jsx51, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
12906
|
+
var SCREEN_NOTICE = "Required";
|
|
12907
|
+
var ENABLE_ACTION = "Enable";
|
|
12908
|
+
var MEDIA_ENABLED_STATUS = "Enabled";
|
|
12909
|
+
var MIC_MUTED_STATUS = "Muted";
|
|
12910
|
+
var MUTE_MIC_ACTION = "Mute microphone";
|
|
12911
|
+
var UNMUTE_MIC_ACTION = "Unmute microphone";
|
|
12912
|
+
var MEDIA_TRAILING_BOX = "skippr:shrink-0 skippr:rounded-full skippr:border skippr:px-[18px] skippr:py-[7px] skippr:text-[14px]";
|
|
12913
|
+
var MEDIA_PILL = `${MEDIA_TRAILING_BOX} skippr:cursor-pointer skippr:border-[rgba(45,45,63,0.12)] skippr:font-medium skippr:transition-colors`;
|
|
12914
|
+
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`;
|
|
12915
|
+
var MEDIA_STATUS_SHAPE = "skippr:shrink-0 skippr:text-[14px]";
|
|
12916
|
+
var MEDIA_STATUS_MUTED = `${MEDIA_STATUS_SHAPE} skippr:text-[#6b6875]`;
|
|
12917
|
+
var MEDIA_STATUS_BRAND = `${MEDIA_STATUS_SHAPE} skippr:font-medium skippr:text-brand-on-white`;
|
|
12967
12918
|
function MediaRow({ icon, label, subtext, trailing }) {
|
|
12968
|
-
return /* @__PURE__ */
|
|
12919
|
+
return /* @__PURE__ */ jsxs42("li", {
|
|
12969
12920
|
className: "skippr:flex skippr:items-center skippr:gap-3",
|
|
12970
12921
|
children: [
|
|
12971
|
-
/* @__PURE__ */
|
|
12922
|
+
/* @__PURE__ */ jsx51("span", {
|
|
12972
12923
|
className: ICON_TILE,
|
|
12973
12924
|
children: icon
|
|
12974
12925
|
}),
|
|
12975
|
-
/* @__PURE__ */
|
|
12926
|
+
/* @__PURE__ */ jsxs42("span", {
|
|
12976
12927
|
className: `skippr:flex-1 ${ROW_TEXT}`,
|
|
12977
12928
|
children: [
|
|
12978
|
-
/* @__PURE__ */
|
|
12929
|
+
/* @__PURE__ */ jsx51("span", {
|
|
12979
12930
|
className: ROW_TITLE,
|
|
12980
12931
|
children: label
|
|
12981
12932
|
}),
|
|
12982
|
-
/* @__PURE__ */
|
|
12933
|
+
/* @__PURE__ */ jsx51("span", {
|
|
12983
12934
|
className: ROW_SUBTEXT,
|
|
12984
12935
|
children: subtext
|
|
12985
12936
|
})
|
|
@@ -12989,35 +12940,31 @@ function MediaRow({ icon, label, subtext, trailing }) {
|
|
|
12989
12940
|
]
|
|
12990
12941
|
});
|
|
12991
12942
|
}
|
|
12992
|
-
var MEDIA_TRAILING_BOX = "skippr:shrink-0 skippr:rounded-full skippr:border skippr:px-[18px] skippr:py-[7px] skippr:text-[14px]";
|
|
12993
|
-
var MEDIA_PILL = `${MEDIA_TRAILING_BOX} skippr:cursor-pointer skippr:border-[rgba(45,45,63,0.12)] skippr:font-medium skippr:transition-colors`;
|
|
12994
|
-
var MEDIA_LINK = `${FOCUS_RING3} skippr:shrink-0 skippr:cursor-pointer skippr:rounded-[4px] skippr:text-[14px] skippr:font-medium skippr:text-[var(--skippr-brand-on-white,#2d2b3d)] skippr:underline-offset-2 skippr:hover:underline`;
|
|
12995
|
-
var MEDIA_STATUS = "skippr:shrink-0 skippr:text-[14px] skippr:text-[#6b6875]";
|
|
12996
12943
|
function EnableButton({ onEnable }) {
|
|
12997
|
-
return /* @__PURE__ */
|
|
12944
|
+
return /* @__PURE__ */ jsx51("button", {
|
|
12998
12945
|
type: "button",
|
|
12999
12946
|
onClick: onEnable,
|
|
13000
12947
|
className: MEDIA_LINK,
|
|
13001
12948
|
children: ENABLE_ACTION
|
|
13002
12949
|
});
|
|
13003
12950
|
}
|
|
13004
|
-
function MediaStatus({ label }) {
|
|
13005
|
-
return /* @__PURE__ */
|
|
13006
|
-
className
|
|
12951
|
+
function MediaStatus({ label, className }) {
|
|
12952
|
+
return /* @__PURE__ */ jsx51("span", {
|
|
12953
|
+
className,
|
|
13007
12954
|
children: label
|
|
13008
12955
|
});
|
|
13009
12956
|
}
|
|
13010
12957
|
function MicToggle({ muted, onToggle }) {
|
|
13011
|
-
return /* @__PURE__ */
|
|
12958
|
+
return /* @__PURE__ */ jsx51("button", {
|
|
13012
12959
|
type: "button",
|
|
13013
12960
|
onClick: onToggle,
|
|
13014
12961
|
"aria-pressed": muted,
|
|
13015
12962
|
"aria-label": muted ? UNMUTE_MIC_ACTION : MUTE_MIC_ACTION,
|
|
13016
12963
|
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]"}`,
|
|
13017
|
-
children: muted ? /* @__PURE__ */
|
|
12964
|
+
children: muted ? /* @__PURE__ */ jsx51(MicOff, {
|
|
13018
12965
|
className: ROW_ICON,
|
|
13019
12966
|
strokeWidth: ROW_ICON_STROKE
|
|
13020
|
-
}) : /* @__PURE__ */
|
|
12967
|
+
}) : /* @__PURE__ */ jsx51(Mic, {
|
|
13021
12968
|
className: ROW_ICON,
|
|
13022
12969
|
strokeWidth: ROW_ICON_STROKE
|
|
13023
12970
|
})
|
|
@@ -13025,18 +12972,305 @@ function MicToggle({ muted, onToggle }) {
|
|
|
13025
12972
|
}
|
|
13026
12973
|
function ScreenTrailing({ enabled, onEnable }) {
|
|
13027
12974
|
if (enabled === null)
|
|
13028
|
-
return /* @__PURE__ */
|
|
13029
|
-
label: SCREEN_NOTICE
|
|
12975
|
+
return /* @__PURE__ */ jsx51(MediaStatus, {
|
|
12976
|
+
label: SCREEN_NOTICE,
|
|
12977
|
+
className: MEDIA_STATUS_BRAND
|
|
13030
12978
|
});
|
|
13031
12979
|
if (enabled)
|
|
13032
|
-
return /* @__PURE__ */
|
|
13033
|
-
label: MEDIA_ENABLED_STATUS
|
|
12980
|
+
return /* @__PURE__ */ jsx51(MediaStatus, {
|
|
12981
|
+
label: MEDIA_ENABLED_STATUS,
|
|
12982
|
+
className: MEDIA_STATUS_BRAND
|
|
13034
12983
|
});
|
|
13035
|
-
return /* @__PURE__ */
|
|
12984
|
+
return /* @__PURE__ */ jsx51(EnableButton, {
|
|
13036
12985
|
onEnable
|
|
13037
12986
|
});
|
|
13038
12987
|
}
|
|
13039
|
-
function
|
|
12988
|
+
function SplashMediaSection({
|
|
12989
|
+
copy,
|
|
12990
|
+
micEnabled,
|
|
12991
|
+
startMuted,
|
|
12992
|
+
screenEnabled,
|
|
12993
|
+
enableMic,
|
|
12994
|
+
toggleStartMuted,
|
|
12995
|
+
enableScreen
|
|
12996
|
+
}) {
|
|
12997
|
+
return /* @__PURE__ */ jsxs42("section", {
|
|
12998
|
+
className: SECTION_BLOCK,
|
|
12999
|
+
children: [
|
|
13000
|
+
/* @__PURE__ */ jsx51("h3", {
|
|
13001
|
+
className: SECTION_HEADING,
|
|
13002
|
+
children: copy.mediaHeading
|
|
13003
|
+
}),
|
|
13004
|
+
/* @__PURE__ */ jsxs42("ul", {
|
|
13005
|
+
className: "skippr:flex skippr:flex-col skippr:gap-[14px]",
|
|
13006
|
+
children: [
|
|
13007
|
+
/* @__PURE__ */ jsx51(MediaRow, {
|
|
13008
|
+
icon: /* @__PURE__ */ jsx51(Mic, {
|
|
13009
|
+
className: ROW_ICON,
|
|
13010
|
+
strokeWidth: ROW_ICON_STROKE
|
|
13011
|
+
}),
|
|
13012
|
+
label: copy.micLabel,
|
|
13013
|
+
subtext: copy.micSubtext,
|
|
13014
|
+
trailing: micEnabled ? /* @__PURE__ */ jsxs42("span", {
|
|
13015
|
+
className: "skippr:flex skippr:shrink-0 skippr:items-center skippr:gap-2",
|
|
13016
|
+
children: [
|
|
13017
|
+
/* @__PURE__ */ jsx51(MicToggle, {
|
|
13018
|
+
muted: startMuted,
|
|
13019
|
+
onToggle: toggleStartMuted
|
|
13020
|
+
}),
|
|
13021
|
+
/* @__PURE__ */ jsx51(MediaStatus, {
|
|
13022
|
+
label: startMuted ? MIC_MUTED_STATUS : MEDIA_ENABLED_STATUS,
|
|
13023
|
+
className: startMuted ? MEDIA_STATUS_MUTED : MEDIA_STATUS_BRAND
|
|
13024
|
+
})
|
|
13025
|
+
]
|
|
13026
|
+
}) : /* @__PURE__ */ jsx51(EnableButton, {
|
|
13027
|
+
onEnable: enableMic
|
|
13028
|
+
})
|
|
13029
|
+
}),
|
|
13030
|
+
/* @__PURE__ */ jsx51(MediaRow, {
|
|
13031
|
+
icon: /* @__PURE__ */ jsx51(MonitorUp, {
|
|
13032
|
+
className: ROW_ICON,
|
|
13033
|
+
strokeWidth: ROW_ICON_STROKE
|
|
13034
|
+
}),
|
|
13035
|
+
label: copy.screenLabel,
|
|
13036
|
+
subtext: copy.screenSubtext,
|
|
13037
|
+
trailing: /* @__PURE__ */ jsx51(ScreenTrailing, {
|
|
13038
|
+
enabled: screenEnabled,
|
|
13039
|
+
onEnable: enableScreen
|
|
13040
|
+
})
|
|
13041
|
+
})
|
|
13042
|
+
]
|
|
13043
|
+
})
|
|
13044
|
+
]
|
|
13045
|
+
});
|
|
13046
|
+
}
|
|
13047
|
+
|
|
13048
|
+
// src/components/SplashAlwaysOn.tsx
|
|
13049
|
+
import { jsx as jsx52, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
13050
|
+
var ATTRIBUTION_PREFIX2 = "AI Agent Powered by";
|
|
13051
|
+
var ATTRIBUTION_BRAND2 = "Skippr";
|
|
13052
|
+
var ATTRIBUTION_URL2 = "https://www.skippr.ai/";
|
|
13053
|
+
var CLOSE_LABEL = "Close";
|
|
13054
|
+
var CONSENT_LEAD_IN = "By starting a session";
|
|
13055
|
+
function TipRow({
|
|
13056
|
+
title,
|
|
13057
|
+
subtext,
|
|
13058
|
+
onStart
|
|
13059
|
+
}) {
|
|
13060
|
+
return /* @__PURE__ */ jsx52("li", {
|
|
13061
|
+
children: /* @__PURE__ */ jsxs43("button", {
|
|
13062
|
+
type: "button",
|
|
13063
|
+
onClick: onStart,
|
|
13064
|
+
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)]`,
|
|
13065
|
+
children: [
|
|
13066
|
+
/* @__PURE__ */ jsx52("span", {
|
|
13067
|
+
className: ICON_TILE_BRAND,
|
|
13068
|
+
children: /* @__PURE__ */ jsx52(Lightbulb, {
|
|
13069
|
+
className: ROW_ICON,
|
|
13070
|
+
strokeWidth: ROW_ICON_STROKE
|
|
13071
|
+
})
|
|
13072
|
+
}),
|
|
13073
|
+
/* @__PURE__ */ jsxs43("span", {
|
|
13074
|
+
className: ROW_TEXT,
|
|
13075
|
+
children: [
|
|
13076
|
+
/* @__PURE__ */ jsx52("span", {
|
|
13077
|
+
className: ROW_TITLE,
|
|
13078
|
+
children: title
|
|
13079
|
+
}),
|
|
13080
|
+
/* @__PURE__ */ jsx52("span", {
|
|
13081
|
+
className: ROW_SUBTEXT,
|
|
13082
|
+
children: subtext
|
|
13083
|
+
})
|
|
13084
|
+
]
|
|
13085
|
+
})
|
|
13086
|
+
]
|
|
13087
|
+
})
|
|
13088
|
+
});
|
|
13089
|
+
}
|
|
13090
|
+
function SplashAlwaysOn({
|
|
13091
|
+
agentName,
|
|
13092
|
+
presentation,
|
|
13093
|
+
headerIconUrl,
|
|
13094
|
+
attributionVisible,
|
|
13095
|
+
tips,
|
|
13096
|
+
micEnabled,
|
|
13097
|
+
startMuted,
|
|
13098
|
+
screenEnabled,
|
|
13099
|
+
enableMic,
|
|
13100
|
+
toggleStartMuted,
|
|
13101
|
+
enableScreen,
|
|
13102
|
+
startTip,
|
|
13103
|
+
start,
|
|
13104
|
+
dismiss
|
|
13105
|
+
}) {
|
|
13106
|
+
const { copy, card } = presentation;
|
|
13107
|
+
return /* @__PURE__ */ jsxs43("section", {
|
|
13108
|
+
"aria-label": agentName,
|
|
13109
|
+
style: { maxWidth: card.width, maxHeight: `${card.maxHeight}vh` },
|
|
13110
|
+
className: "skippr:flex skippr:w-full skippr:flex-col skippr:overflow-hidden skippr:rounded-[16px] skippr:bg-white skippr:shadow-[0_0_0_1px_rgba(45,45,63,0.10),0_1px_2px_rgba(45,45,63,0.04)]",
|
|
13111
|
+
children: [
|
|
13112
|
+
/* @__PURE__ */ jsxs43("div", {
|
|
13113
|
+
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",
|
|
13114
|
+
children: [
|
|
13115
|
+
/* @__PURE__ */ jsxs43("div", {
|
|
13116
|
+
className: "skippr:flex skippr:min-w-0 skippr:flex-col skippr:gap-1",
|
|
13117
|
+
children: [
|
|
13118
|
+
/* @__PURE__ */ jsxs43("span", {
|
|
13119
|
+
className: "skippr:flex skippr:min-w-0 skippr:items-center skippr:gap-1.5 skippr:text-[#2D2D3F]",
|
|
13120
|
+
children: [
|
|
13121
|
+
headerIconUrl ? /* @__PURE__ */ jsx52("img", {
|
|
13122
|
+
src: headerIconUrl,
|
|
13123
|
+
alt: "",
|
|
13124
|
+
className: `skippr:shrink-0 skippr:object-contain ${ROW_ICON}`
|
|
13125
|
+
}) : /* @__PURE__ */ jsx52(Sparkles, {
|
|
13126
|
+
className: `skippr:shrink-0 ${ROW_ICON}`,
|
|
13127
|
+
strokeWidth: ROW_ICON_STROKE,
|
|
13128
|
+
"aria-hidden": true
|
|
13129
|
+
}),
|
|
13130
|
+
/* @__PURE__ */ jsx52("span", {
|
|
13131
|
+
className: "skippr:truncate skippr:text-[18px] skippr:font-semibold skippr:tracking-[-0.0125em]",
|
|
13132
|
+
children: agentName
|
|
13133
|
+
})
|
|
13134
|
+
]
|
|
13135
|
+
}),
|
|
13136
|
+
attributionVisible && /* @__PURE__ */ jsxs43("a", {
|
|
13137
|
+
href: ATTRIBUTION_URL2,
|
|
13138
|
+
target: "_blank",
|
|
13139
|
+
rel: "noopener noreferrer",
|
|
13140
|
+
className: `${FOCUS_RING3} skippr:flex skippr:w-fit skippr:cursor-pointer skippr:items-center skippr:gap-1.5 skippr:rounded-[4px] skippr:text-[14px] skippr:text-[#6b6875] skippr:transition-colors skippr:hover:text-[#2D2D3F]`,
|
|
13141
|
+
children: [
|
|
13142
|
+
/* @__PURE__ */ jsx52(LogoMark, {
|
|
13143
|
+
decorative: true,
|
|
13144
|
+
className: "skippr:size-[13px]"
|
|
13145
|
+
}),
|
|
13146
|
+
ATTRIBUTION_PREFIX2,
|
|
13147
|
+
" ",
|
|
13148
|
+
/* @__PURE__ */ jsx52("span", {
|
|
13149
|
+
className: "skippr:font-medium skippr:text-[#2D2D3F] skippr:underline skippr:underline-offset-2",
|
|
13150
|
+
children: ATTRIBUTION_BRAND2
|
|
13151
|
+
})
|
|
13152
|
+
]
|
|
13153
|
+
})
|
|
13154
|
+
]
|
|
13155
|
+
}),
|
|
13156
|
+
/* @__PURE__ */ jsx52("button", {
|
|
13157
|
+
type: "button",
|
|
13158
|
+
onClick: dismiss,
|
|
13159
|
+
"aria-label": CLOSE_LABEL,
|
|
13160
|
+
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]`,
|
|
13161
|
+
children: /* @__PURE__ */ jsx52(X, {
|
|
13162
|
+
className: "skippr:size-4",
|
|
13163
|
+
strokeWidth: 2
|
|
13164
|
+
})
|
|
13165
|
+
})
|
|
13166
|
+
]
|
|
13167
|
+
}),
|
|
13168
|
+
/* @__PURE__ */ jsxs43("div", {
|
|
13169
|
+
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]",
|
|
13170
|
+
children: [
|
|
13171
|
+
/* @__PURE__ */ jsxs43("section", {
|
|
13172
|
+
className: SECTION_BLOCK,
|
|
13173
|
+
children: [
|
|
13174
|
+
/* @__PURE__ */ jsx52("h3", {
|
|
13175
|
+
className: SECTION_HEADING,
|
|
13176
|
+
children: copy.tipsHeading
|
|
13177
|
+
}),
|
|
13178
|
+
/* @__PURE__ */ jsx52("ul", {
|
|
13179
|
+
className: "skippr:flex skippr:flex-col skippr:gap-[14px]",
|
|
13180
|
+
children: tips.length > 0 ? tips.map((tip) => /* @__PURE__ */ jsx52(TipRow, {
|
|
13181
|
+
title: tip.displayMessage,
|
|
13182
|
+
subtext: tip.objective,
|
|
13183
|
+
onStart: () => startTip(tip)
|
|
13184
|
+
}, tip.goalId)) : /* @__PURE__ */ jsx52(TipRow, {
|
|
13185
|
+
title: copy.tipsEmptyTitle,
|
|
13186
|
+
subtext: copy.tipsEmptyDescription,
|
|
13187
|
+
onStart: start
|
|
13188
|
+
})
|
|
13189
|
+
})
|
|
13190
|
+
]
|
|
13191
|
+
}),
|
|
13192
|
+
/* @__PURE__ */ jsx52(SplashMediaSection, {
|
|
13193
|
+
copy,
|
|
13194
|
+
micEnabled,
|
|
13195
|
+
startMuted,
|
|
13196
|
+
screenEnabled,
|
|
13197
|
+
enableMic,
|
|
13198
|
+
toggleStartMuted,
|
|
13199
|
+
enableScreen
|
|
13200
|
+
})
|
|
13201
|
+
]
|
|
13202
|
+
}),
|
|
13203
|
+
/* @__PURE__ */ jsxs43("div", {
|
|
13204
|
+
className: "skippr:shrink-0 skippr:px-[22px] skippr:pt-[22px] skippr:pb-[22px]",
|
|
13205
|
+
children: [
|
|
13206
|
+
/* @__PURE__ */ jsxs43("button", {
|
|
13207
|
+
type: "button",
|
|
13208
|
+
onClick: start,
|
|
13209
|
+
className: `${FOCUS_RING3} skippr:flex skippr:w-full skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-2 skippr:rounded-full skippr:bg-primary skippr:px-5 skippr:py-[13px] skippr:text-[16px] skippr:font-semibold skippr:text-primary-foreground skippr:transition-all skippr:hover:bg-primary/90`,
|
|
13210
|
+
children: [
|
|
13211
|
+
/* @__PURE__ */ jsx52(Sparkles, {
|
|
13212
|
+
className: "skippr:size-4",
|
|
13213
|
+
strokeWidth: ROW_ICON_STROKE,
|
|
13214
|
+
"aria-hidden": true
|
|
13215
|
+
}),
|
|
13216
|
+
copy.tipsCta
|
|
13217
|
+
]
|
|
13218
|
+
}),
|
|
13219
|
+
/* @__PURE__ */ jsx52(ConsentNotice, {
|
|
13220
|
+
leadIn: CONSENT_LEAD_IN,
|
|
13221
|
+
className: "skippr:mt-3"
|
|
13222
|
+
})
|
|
13223
|
+
]
|
|
13224
|
+
})
|
|
13225
|
+
]
|
|
13226
|
+
});
|
|
13227
|
+
}
|
|
13228
|
+
|
|
13229
|
+
// src/components/SplashPrimary.tsx
|
|
13230
|
+
import { jsx as jsx53, jsxs as jsxs44, Fragment as Fragment8 } from "react/jsx-runtime";
|
|
13231
|
+
var ATTRIBUTION_PREFIX3 = "AI Agent Powered by";
|
|
13232
|
+
var ATTRIBUTION_BRAND3 = "Skippr";
|
|
13233
|
+
var ATTRIBUTION_URL3 = "https://www.skippr.ai/";
|
|
13234
|
+
var CLOSE_LABEL2 = "Close";
|
|
13235
|
+
var CONSENT_LEAD_IN2 = "By starting a session";
|
|
13236
|
+
var GLYPH_COMPONENT = {
|
|
13237
|
+
[SPLASH_SECTION_GLYPH.Route]: Route,
|
|
13238
|
+
[SPLASH_SECTION_GLYPH.Messages]: MessagesSquare,
|
|
13239
|
+
[SPLASH_SECTION_GLYPH.Pointer]: MousePointerClick
|
|
13240
|
+
};
|
|
13241
|
+
function SectionRow({ iconUrl, glyph, title, description }) {
|
|
13242
|
+
const Glyph = glyph ? GLYPH_COMPONENT[glyph] : Sparkles;
|
|
13243
|
+
return /* @__PURE__ */ jsxs44("li", {
|
|
13244
|
+
className: "skippr:flex skippr:items-start skippr:gap-3",
|
|
13245
|
+
children: [
|
|
13246
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13247
|
+
className: ICON_TILE,
|
|
13248
|
+
children: iconUrl ? /* @__PURE__ */ jsx53("img", {
|
|
13249
|
+
src: iconUrl,
|
|
13250
|
+
alt: "",
|
|
13251
|
+
className: `skippr:object-contain ${ROW_ICON}`
|
|
13252
|
+
}) : /* @__PURE__ */ jsx53(Glyph, {
|
|
13253
|
+
className: ROW_ICON,
|
|
13254
|
+
strokeWidth: ROW_ICON_STROKE
|
|
13255
|
+
})
|
|
13256
|
+
}),
|
|
13257
|
+
/* @__PURE__ */ jsxs44("span", {
|
|
13258
|
+
className: ROW_TEXT,
|
|
13259
|
+
children: [
|
|
13260
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13261
|
+
className: ROW_TITLE,
|
|
13262
|
+
children: title
|
|
13263
|
+
}),
|
|
13264
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13265
|
+
className: ROW_SUBTEXT,
|
|
13266
|
+
children: description
|
|
13267
|
+
})
|
|
13268
|
+
]
|
|
13269
|
+
})
|
|
13270
|
+
]
|
|
13271
|
+
});
|
|
13272
|
+
}
|
|
13273
|
+
function SplashPrimary({
|
|
13040
13274
|
agentName,
|
|
13041
13275
|
presentation,
|
|
13042
13276
|
headerIconUrl,
|
|
@@ -13056,111 +13290,111 @@ function SplashDefault({
|
|
|
13056
13290
|
dismiss
|
|
13057
13291
|
}) {
|
|
13058
13292
|
const { copy, card } = presentation;
|
|
13059
|
-
return /* @__PURE__ */
|
|
13293
|
+
return /* @__PURE__ */ jsxs44("section", {
|
|
13060
13294
|
"aria-label": agentName,
|
|
13061
13295
|
style: { maxWidth: card.width, maxHeight: `${card.maxHeight}vh` },
|
|
13062
13296
|
className: "skippr:flex skippr:w-full skippr:flex-col skippr:overflow-hidden skippr:rounded-[16px] skippr:bg-white skippr:shadow-[0_0_0_1px_rgba(45,45,63,0.10),0_1px_2px_rgba(45,45,63,0.04)]",
|
|
13063
13297
|
children: [
|
|
13064
|
-
/* @__PURE__ */
|
|
13298
|
+
/* @__PURE__ */ jsxs44("div", {
|
|
13065
13299
|
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",
|
|
13066
13300
|
children: [
|
|
13067
|
-
/* @__PURE__ */
|
|
13301
|
+
/* @__PURE__ */ jsxs44("div", {
|
|
13068
13302
|
className: "skippr:flex skippr:min-w-0 skippr:flex-col skippr:gap-1",
|
|
13069
13303
|
children: [
|
|
13070
|
-
/* @__PURE__ */
|
|
13304
|
+
/* @__PURE__ */ jsxs44("span", {
|
|
13071
13305
|
className: "skippr:flex skippr:min-w-0 skippr:items-center skippr:gap-1.5 skippr:text-[#2D2D3F]",
|
|
13072
13306
|
children: [
|
|
13073
|
-
headerIconUrl ? /* @__PURE__ */
|
|
13307
|
+
headerIconUrl ? /* @__PURE__ */ jsx53("img", {
|
|
13074
13308
|
src: headerIconUrl,
|
|
13075
13309
|
alt: "",
|
|
13076
13310
|
className: `skippr:shrink-0 skippr:object-contain ${ROW_ICON}`
|
|
13077
|
-
}) : /* @__PURE__ */
|
|
13311
|
+
}) : /* @__PURE__ */ jsx53(Sparkles, {
|
|
13078
13312
|
className: `skippr:shrink-0 ${ROW_ICON}`,
|
|
13079
13313
|
strokeWidth: ROW_ICON_STROKE,
|
|
13080
13314
|
"aria-hidden": true
|
|
13081
13315
|
}),
|
|
13082
|
-
/* @__PURE__ */
|
|
13316
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13083
13317
|
className: "skippr:truncate skippr:text-[18px] skippr:font-semibold skippr:tracking-[-0.0125em]",
|
|
13084
13318
|
children: agentName
|
|
13085
13319
|
})
|
|
13086
13320
|
]
|
|
13087
13321
|
}),
|
|
13088
|
-
attributionVisible && /* @__PURE__ */
|
|
13089
|
-
href:
|
|
13322
|
+
attributionVisible && /* @__PURE__ */ jsxs44("a", {
|
|
13323
|
+
href: ATTRIBUTION_URL3,
|
|
13090
13324
|
target: "_blank",
|
|
13091
13325
|
rel: "noopener noreferrer",
|
|
13092
13326
|
className: `${FOCUS_RING3} skippr:flex skippr:w-fit skippr:cursor-pointer skippr:items-center skippr:gap-1.5 skippr:rounded-[4px] skippr:text-[14px] skippr:text-[#6b6875] skippr:transition-colors skippr:hover:text-[#2D2D3F]`,
|
|
13093
13327
|
children: [
|
|
13094
|
-
/* @__PURE__ */
|
|
13328
|
+
/* @__PURE__ */ jsx53(LogoMark, {
|
|
13095
13329
|
decorative: true,
|
|
13096
13330
|
className: "skippr:size-[13px]"
|
|
13097
13331
|
}),
|
|
13098
|
-
|
|
13332
|
+
ATTRIBUTION_PREFIX3,
|
|
13099
13333
|
" ",
|
|
13100
|
-
/* @__PURE__ */
|
|
13334
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13101
13335
|
className: "skippr:font-medium skippr:text-[#2D2D3F] skippr:underline skippr:underline-offset-2",
|
|
13102
|
-
children:
|
|
13336
|
+
children: ATTRIBUTION_BRAND3
|
|
13103
13337
|
})
|
|
13104
13338
|
]
|
|
13105
13339
|
})
|
|
13106
13340
|
]
|
|
13107
13341
|
}),
|
|
13108
|
-
/* @__PURE__ */
|
|
13342
|
+
/* @__PURE__ */ jsx53("button", {
|
|
13109
13343
|
type: "button",
|
|
13110
13344
|
onClick: dismiss,
|
|
13111
|
-
"aria-label":
|
|
13345
|
+
"aria-label": CLOSE_LABEL2,
|
|
13112
13346
|
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]`,
|
|
13113
|
-
children: /* @__PURE__ */
|
|
13347
|
+
children: /* @__PURE__ */ jsx53(X, {
|
|
13114
13348
|
className: "skippr:size-4",
|
|
13115
13349
|
strokeWidth: 2
|
|
13116
13350
|
})
|
|
13117
13351
|
})
|
|
13118
13352
|
]
|
|
13119
13353
|
}),
|
|
13120
|
-
/* @__PURE__ */
|
|
13354
|
+
/* @__PURE__ */ jsxs44("div", {
|
|
13121
13355
|
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]",
|
|
13122
13356
|
children: [
|
|
13123
|
-
intent === SPLASH_INTENT.Start ? sections.length > 0 && /* @__PURE__ */
|
|
13357
|
+
intent === SPLASH_INTENT.Start ? sections.length > 0 && /* @__PURE__ */ jsxs44("section", {
|
|
13124
13358
|
className: SECTION_BLOCK,
|
|
13125
13359
|
children: [
|
|
13126
|
-
/* @__PURE__ */
|
|
13360
|
+
/* @__PURE__ */ jsx53("h3", {
|
|
13127
13361
|
className: SECTION_HEADING,
|
|
13128
13362
|
children: copy.howItWorksHeading
|
|
13129
13363
|
}),
|
|
13130
|
-
/* @__PURE__ */
|
|
13364
|
+
/* @__PURE__ */ jsx53("ul", {
|
|
13131
13365
|
className: "skippr:flex skippr:flex-col skippr:gap-[14px]",
|
|
13132
|
-
children: sections.map((section) => /* @__PURE__ */
|
|
13366
|
+
children: sections.map((section) => /* @__PURE__ */ jsx53(SectionRow, {
|
|
13133
13367
|
...section
|
|
13134
13368
|
}, section.id))
|
|
13135
13369
|
})
|
|
13136
13370
|
]
|
|
13137
|
-
}) : /* @__PURE__ */
|
|
13371
|
+
}) : /* @__PURE__ */ jsxs44(Fragment8, {
|
|
13138
13372
|
children: [
|
|
13139
|
-
lastCompletedPhase && /* @__PURE__ */
|
|
13373
|
+
lastCompletedPhase && /* @__PURE__ */ jsxs44("section", {
|
|
13140
13374
|
className: SECTION_BLOCK,
|
|
13141
13375
|
children: [
|
|
13142
|
-
/* @__PURE__ */
|
|
13376
|
+
/* @__PURE__ */ jsx53("h3", {
|
|
13143
13377
|
className: SECTION_HEADING,
|
|
13144
13378
|
children: copy.lastAccomplishmentHeading
|
|
13145
13379
|
}),
|
|
13146
|
-
/* @__PURE__ */
|
|
13380
|
+
/* @__PURE__ */ jsxs44("div", {
|
|
13147
13381
|
className: "skippr:flex skippr:items-start skippr:gap-3",
|
|
13148
13382
|
children: [
|
|
13149
|
-
/* @__PURE__ */
|
|
13150
|
-
className:
|
|
13151
|
-
children: /* @__PURE__ */
|
|
13383
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13384
|
+
className: ICON_TILE_BRAND,
|
|
13385
|
+
children: /* @__PURE__ */ jsx53(Check, {
|
|
13152
13386
|
className: ROW_ICON,
|
|
13153
13387
|
strokeWidth: 2.2
|
|
13154
13388
|
})
|
|
13155
13389
|
}),
|
|
13156
|
-
/* @__PURE__ */
|
|
13390
|
+
/* @__PURE__ */ jsxs44("span", {
|
|
13157
13391
|
className: ROW_TEXT,
|
|
13158
13392
|
children: [
|
|
13159
|
-
/* @__PURE__ */
|
|
13393
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13160
13394
|
className: ROW_TITLE,
|
|
13161
13395
|
children: lastCompletedPhase.name
|
|
13162
13396
|
}),
|
|
13163
|
-
/* @__PURE__ */
|
|
13397
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13164
13398
|
className: ROW_SUBTEXT,
|
|
13165
13399
|
children: lastCompletedPhase.description
|
|
13166
13400
|
})
|
|
@@ -13170,30 +13404,30 @@ function SplashDefault({
|
|
|
13170
13404
|
})
|
|
13171
13405
|
]
|
|
13172
13406
|
}),
|
|
13173
|
-
upcomingPhases.length > 0 && /* @__PURE__ */
|
|
13407
|
+
upcomingPhases.length > 0 && /* @__PURE__ */ jsxs44("section", {
|
|
13174
13408
|
className: SECTION_BLOCK,
|
|
13175
13409
|
children: [
|
|
13176
|
-
/* @__PURE__ */
|
|
13410
|
+
/* @__PURE__ */ jsx53("h3", {
|
|
13177
13411
|
className: SECTION_HEADING,
|
|
13178
13412
|
children: copy.upNextHeading
|
|
13179
13413
|
}),
|
|
13180
|
-
/* @__PURE__ */
|
|
13414
|
+
/* @__PURE__ */ jsx53("ol", {
|
|
13181
13415
|
className: "skippr:flex skippr:flex-col skippr:gap-3",
|
|
13182
|
-
children: upcomingPhases.map((phase, index2) => /* @__PURE__ */
|
|
13416
|
+
children: upcomingPhases.map((phase, index2) => /* @__PURE__ */ jsxs44("li", {
|
|
13183
13417
|
className: "skippr:flex skippr:items-start skippr:gap-3",
|
|
13184
13418
|
children: [
|
|
13185
|
-
/* @__PURE__ */
|
|
13419
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13186
13420
|
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]",
|
|
13187
13421
|
children: index2 + 1
|
|
13188
13422
|
}),
|
|
13189
|
-
/* @__PURE__ */
|
|
13423
|
+
/* @__PURE__ */ jsxs44("span", {
|
|
13190
13424
|
className: ROW_TEXT,
|
|
13191
13425
|
children: [
|
|
13192
|
-
/* @__PURE__ */
|
|
13426
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13193
13427
|
className: `skippr:truncate ${ROW_TITLE}`,
|
|
13194
13428
|
children: phase.name
|
|
13195
13429
|
}),
|
|
13196
|
-
/* @__PURE__ */
|
|
13430
|
+
/* @__PURE__ */ jsx53("span", {
|
|
13197
13431
|
className: ROW_SUBTEXT,
|
|
13198
13432
|
children: phase.description
|
|
13199
13433
|
})
|
|
@@ -13206,65 +13440,26 @@ function SplashDefault({
|
|
|
13206
13440
|
})
|
|
13207
13441
|
]
|
|
13208
13442
|
}),
|
|
13209
|
-
/* @__PURE__ */
|
|
13210
|
-
|
|
13211
|
-
|
|
13212
|
-
|
|
13213
|
-
|
|
13214
|
-
|
|
13215
|
-
|
|
13216
|
-
|
|
13217
|
-
className: "skippr:flex skippr:flex-col skippr:gap-[14px]",
|
|
13218
|
-
children: [
|
|
13219
|
-
/* @__PURE__ */ jsx50(MediaRow, {
|
|
13220
|
-
icon: /* @__PURE__ */ jsx50(Mic, {
|
|
13221
|
-
className: ROW_ICON,
|
|
13222
|
-
strokeWidth: ROW_ICON_STROKE
|
|
13223
|
-
}),
|
|
13224
|
-
label: copy.micLabel,
|
|
13225
|
-
subtext: copy.micSubtext,
|
|
13226
|
-
trailing: micEnabled ? /* @__PURE__ */ jsxs41("span", {
|
|
13227
|
-
className: "skippr:flex skippr:shrink-0 skippr:items-center skippr:gap-2",
|
|
13228
|
-
children: [
|
|
13229
|
-
/* @__PURE__ */ jsx50(MediaStatus, {
|
|
13230
|
-
label: startMuted ? MIC_MUTED_STATUS : MEDIA_ENABLED_STATUS
|
|
13231
|
-
}),
|
|
13232
|
-
/* @__PURE__ */ jsx50(MicToggle, {
|
|
13233
|
-
muted: startMuted,
|
|
13234
|
-
onToggle: toggleStartMuted
|
|
13235
|
-
})
|
|
13236
|
-
]
|
|
13237
|
-
}) : /* @__PURE__ */ jsx50(EnableButton, {
|
|
13238
|
-
onEnable: enableMic
|
|
13239
|
-
})
|
|
13240
|
-
}),
|
|
13241
|
-
/* @__PURE__ */ jsx50(MediaRow, {
|
|
13242
|
-
icon: /* @__PURE__ */ jsx50(MonitorUp, {
|
|
13243
|
-
className: ROW_ICON,
|
|
13244
|
-
strokeWidth: ROW_ICON_STROKE
|
|
13245
|
-
}),
|
|
13246
|
-
label: copy.screenLabel,
|
|
13247
|
-
subtext: copy.screenSubtext,
|
|
13248
|
-
trailing: /* @__PURE__ */ jsx50(ScreenTrailing, {
|
|
13249
|
-
enabled: screenEnabled,
|
|
13250
|
-
onEnable: enableScreen
|
|
13251
|
-
})
|
|
13252
|
-
})
|
|
13253
|
-
]
|
|
13254
|
-
})
|
|
13255
|
-
]
|
|
13443
|
+
/* @__PURE__ */ jsx53(SplashMediaSection, {
|
|
13444
|
+
copy,
|
|
13445
|
+
micEnabled,
|
|
13446
|
+
startMuted,
|
|
13447
|
+
screenEnabled,
|
|
13448
|
+
enableMic,
|
|
13449
|
+
toggleStartMuted,
|
|
13450
|
+
enableScreen
|
|
13256
13451
|
})
|
|
13257
13452
|
]
|
|
13258
13453
|
}),
|
|
13259
|
-
/* @__PURE__ */
|
|
13454
|
+
/* @__PURE__ */ jsxs44("div", {
|
|
13260
13455
|
className: "skippr:shrink-0 skippr:px-[22px] skippr:pt-[22px] skippr:pb-[22px]",
|
|
13261
13456
|
children: [
|
|
13262
|
-
/* @__PURE__ */
|
|
13457
|
+
/* @__PURE__ */ jsxs44("button", {
|
|
13263
13458
|
type: "button",
|
|
13264
13459
|
onClick: start,
|
|
13265
13460
|
className: `${FOCUS_RING3} skippr:flex skippr:w-full skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:gap-2 skippr:rounded-full skippr:bg-primary skippr:px-5 skippr:py-[13px] skippr:text-[16px] skippr:font-semibold skippr:text-primary-foreground skippr:transition-all skippr:hover:bg-primary/90`,
|
|
13266
13461
|
children: [
|
|
13267
|
-
/* @__PURE__ */
|
|
13462
|
+
/* @__PURE__ */ jsx53(Sparkles, {
|
|
13268
13463
|
className: "skippr:size-4",
|
|
13269
13464
|
strokeWidth: ROW_ICON_STROKE,
|
|
13270
13465
|
"aria-hidden": true
|
|
@@ -13272,14 +13467,14 @@ function SplashDefault({
|
|
|
13272
13467
|
intent === SPLASH_INTENT.Start ? copy.startCta : copy.continueCta
|
|
13273
13468
|
]
|
|
13274
13469
|
}),
|
|
13275
|
-
skipButtonVisible && /* @__PURE__ */
|
|
13470
|
+
skipButtonVisible && /* @__PURE__ */ jsx53("button", {
|
|
13276
13471
|
type: "button",
|
|
13277
13472
|
onClick: dismiss,
|
|
13278
13473
|
className: `${ROW_SUBTEXT} ${FOCUS_RING3} skippr:mt-2 skippr:block skippr:w-full skippr:cursor-pointer skippr:py-1 skippr:text-center skippr:transition-colors skippr:hover:text-[#2D2D3F]`,
|
|
13279
13474
|
children: copy.dismissLabel
|
|
13280
13475
|
}),
|
|
13281
|
-
/* @__PURE__ */
|
|
13282
|
-
leadIn:
|
|
13476
|
+
/* @__PURE__ */ jsx53(ConsentNotice, {
|
|
13477
|
+
leadIn: CONSENT_LEAD_IN2,
|
|
13283
13478
|
className: "skippr:mt-3"
|
|
13284
13479
|
})
|
|
13285
13480
|
]
|
|
@@ -13289,7 +13484,7 @@ function SplashDefault({
|
|
|
13289
13484
|
}
|
|
13290
13485
|
|
|
13291
13486
|
// src/components/SplashOverlay.tsx
|
|
13292
|
-
import { jsx as
|
|
13487
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
13293
13488
|
var SPLASH_OVERLAY_BACKDROP = "rgba(45, 45, 63, 0.45)";
|
|
13294
13489
|
var SPLASH_OVERLAY_Z_INDEX = 9999;
|
|
13295
13490
|
var BACKDROP_STYLE = {
|
|
@@ -13310,7 +13505,7 @@ function SplashOverlay({ width, maxHeight }) {
|
|
|
13310
13505
|
}
|
|
13311
13506
|
if (!ctx.isSplashConfigured)
|
|
13312
13507
|
return null;
|
|
13313
|
-
return /* @__PURE__ */
|
|
13508
|
+
return /* @__PURE__ */ jsx54(SplashOverlayCard, {
|
|
13314
13509
|
accentColor: ctx.appearance?.accentColor ?? null,
|
|
13315
13510
|
width,
|
|
13316
13511
|
maxHeight
|
|
@@ -13328,15 +13523,19 @@ function SplashOverlayCard({
|
|
|
13328
13523
|
width: width === undefined ? state.presentation.card.width : clampSplashWidth(width),
|
|
13329
13524
|
maxHeight: maxHeight === undefined ? state.presentation.card.maxHeight : clampSplashMaxHeight(maxHeight)
|
|
13330
13525
|
};
|
|
13331
|
-
|
|
13526
|
+
const presentation = { ...state.presentation, card };
|
|
13527
|
+
return /* @__PURE__ */ jsx54("div", {
|
|
13332
13528
|
style: BACKDROP_STYLE,
|
|
13333
|
-
children: /* @__PURE__ */
|
|
13529
|
+
children: /* @__PURE__ */ jsx54("div", {
|
|
13334
13530
|
style: { ...CARD_STYLE, maxWidth: card.width },
|
|
13335
|
-
children: /* @__PURE__ */
|
|
13531
|
+
children: /* @__PURE__ */ jsx54(ShadowHost, {
|
|
13336
13532
|
accentColor,
|
|
13337
|
-
children: /* @__PURE__ */
|
|
13533
|
+
children: state.layout === SPLASH_LAYOUT.AlwaysOn ? /* @__PURE__ */ jsx54(SplashAlwaysOn, {
|
|
13338
13534
|
...state,
|
|
13339
|
-
presentation
|
|
13535
|
+
presentation
|
|
13536
|
+
}) : /* @__PURE__ */ jsx54(SplashPrimary, {
|
|
13537
|
+
...state,
|
|
13538
|
+
presentation
|
|
13340
13539
|
})
|
|
13341
13540
|
})
|
|
13342
13541
|
})
|
|
@@ -13344,7 +13543,7 @@ function SplashOverlayCard({
|
|
|
13344
13543
|
}
|
|
13345
13544
|
// src/components/SplashScreen.tsx
|
|
13346
13545
|
import { useContext as useContext27 } from "react";
|
|
13347
|
-
import { jsx as
|
|
13546
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
13348
13547
|
function SplashScreen({ className, onDismiss }) {
|
|
13349
13548
|
const ctx = useContext27(LiveAgentContext);
|
|
13350
13549
|
if (!ctx) {
|
|
@@ -13353,18 +13552,20 @@ function SplashScreen({ className, onDismiss }) {
|
|
|
13353
13552
|
const state = useSplash(onDismiss);
|
|
13354
13553
|
if (!state)
|
|
13355
13554
|
return null;
|
|
13356
|
-
return /* @__PURE__ */
|
|
13555
|
+
return /* @__PURE__ */ jsx55(ShadowHost, {
|
|
13357
13556
|
className,
|
|
13358
13557
|
accentColor: ctx.appearance?.accentColor ?? null,
|
|
13359
|
-
children: /* @__PURE__ */
|
|
13558
|
+
children: state.layout === SPLASH_LAYOUT.AlwaysOn ? /* @__PURE__ */ jsx55(SplashAlwaysOn, {
|
|
13559
|
+
...state
|
|
13560
|
+
}) : /* @__PURE__ */ jsx55(SplashPrimary, {
|
|
13360
13561
|
...state
|
|
13361
13562
|
})
|
|
13362
13563
|
});
|
|
13363
13564
|
}
|
|
13364
13565
|
// src/hooks/useIsLocalSpeaking.ts
|
|
13365
|
-
import { useIsSpeaking as useIsSpeaking2, useLocalParticipant as
|
|
13566
|
+
import { useIsSpeaking as useIsSpeaking2, useLocalParticipant as useLocalParticipant13 } from "@livekit/components-react/hooks";
|
|
13366
13567
|
function useIsLocalSpeaking() {
|
|
13367
|
-
const { localParticipant } =
|
|
13568
|
+
const { localParticipant } = useLocalParticipant13();
|
|
13368
13569
|
return useIsSpeaking2(localParticipant);
|
|
13369
13570
|
}
|
|
13370
13571
|
// src/hooks/useIsSessionHeld.ts
|