@skippr/live-agent-sdk 0.89.0 → 0.90.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 +1 -0
- package/dist/esm/lib-exports.js +757 -492
- package/dist/skippr-sdk.css +1 -1
- package/dist/skippr-sdk.js +142 -142
- package/dist/types/components/LinkCard.d.ts +7 -0
- package/dist/types/components/LiveAgent.d.ts +2 -1
- package/dist/types/components/MessageList.d.ts +3 -1
- package/dist/types/components/VoiceBarLinkCard.d.ts +7 -0
- package/dist/types/context/LiveAgentContext.d.ts +1 -0
- package/dist/types/hooks/useLinkCard.d.ts +7 -0
- package/dist/types/hooks/useSession.d.ts +3 -2
- package/dist/types/lib/clipboard.d.ts +1 -0
- package/dist/types/lib/constants.d.ts +1 -0
- package/dist/types/lib-exports.d.ts +1 -1
- package/package.json +1 -1
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 { useCallback as
|
|
11
|
+
import { useCallback as useCallback30, useEffect as useEffect47, useMemo as useMemo7, useRef as useRef41, useState as useState37 } 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
|
|
|
@@ -149,8 +149,21 @@ var ChevronRight = createLucideIcon("chevron-right", __iconNode9);
|
|
|
149
149
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/circle.js
|
|
150
150
|
var __iconNode10 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
151
151
|
var Circle = createLucideIcon("circle", __iconNode10);
|
|
152
|
-
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/
|
|
152
|
+
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/copy.js
|
|
153
153
|
var __iconNode11 = [
|
|
154
|
+
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
155
|
+
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
156
|
+
];
|
|
157
|
+
var Copy = createLucideIcon("copy", __iconNode11);
|
|
158
|
+
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/external-link.js
|
|
159
|
+
var __iconNode12 = [
|
|
160
|
+
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
161
|
+
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
162
|
+
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
163
|
+
];
|
|
164
|
+
var ExternalLink = createLucideIcon("external-link", __iconNode12);
|
|
165
|
+
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/keyboard.js
|
|
166
|
+
var __iconNode13 = [
|
|
154
167
|
["path", { d: "M10 8h.01", key: "1r9ogq" }],
|
|
155
168
|
["path", { d: "M12 12h.01", key: "1mp3jc" }],
|
|
156
169
|
["path", { d: "M14 8h.01", key: "1primd" }],
|
|
@@ -161,9 +174,9 @@ var __iconNode11 = [
|
|
|
161
174
|
["path", { d: "M8 12h.01", key: "czm47f" }],
|
|
162
175
|
["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }]
|
|
163
176
|
];
|
|
164
|
-
var Keyboard = createLucideIcon("keyboard",
|
|
177
|
+
var Keyboard = createLucideIcon("keyboard", __iconNode13);
|
|
165
178
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/lightbulb.js
|
|
166
|
-
var
|
|
179
|
+
var __iconNode14 = [
|
|
167
180
|
[
|
|
168
181
|
"path",
|
|
169
182
|
{
|
|
@@ -174,15 +187,15 @@ var __iconNode12 = [
|
|
|
174
187
|
["path", { d: "M9 18h6", key: "x1upvd" }],
|
|
175
188
|
["path", { d: "M10 22h4", key: "ceow96" }]
|
|
176
189
|
];
|
|
177
|
-
var Lightbulb = createLucideIcon("lightbulb",
|
|
190
|
+
var Lightbulb = createLucideIcon("lightbulb", __iconNode14);
|
|
178
191
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mail.js
|
|
179
|
-
var
|
|
192
|
+
var __iconNode15 = [
|
|
180
193
|
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
181
194
|
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
182
195
|
];
|
|
183
|
-
var Mail = createLucideIcon("mail",
|
|
196
|
+
var Mail = createLucideIcon("mail", __iconNode15);
|
|
184
197
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/message-square.js
|
|
185
|
-
var
|
|
198
|
+
var __iconNode16 = [
|
|
186
199
|
[
|
|
187
200
|
"path",
|
|
188
201
|
{
|
|
@@ -191,9 +204,9 @@ var __iconNode14 = [
|
|
|
191
204
|
}
|
|
192
205
|
]
|
|
193
206
|
];
|
|
194
|
-
var MessageSquare = createLucideIcon("message-square",
|
|
207
|
+
var MessageSquare = createLucideIcon("message-square", __iconNode16);
|
|
195
208
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mic-off.js
|
|
196
|
-
var
|
|
209
|
+
var __iconNode17 = [
|
|
197
210
|
["path", { d: "M12 19v3", key: "npa21l" }],
|
|
198
211
|
["path", { d: "M15 9.34V5a3 3 0 0 0-5.68-1.33", key: "1gzdoj" }],
|
|
199
212
|
["path", { d: "M16.95 16.95A7 7 0 0 1 5 12v-2", key: "cqa7eg" }],
|
|
@@ -201,32 +214,32 @@ var __iconNode15 = [
|
|
|
201
214
|
["path", { d: "m2 2 20 20", key: "1ooewy" }],
|
|
202
215
|
["path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12", key: "r2i35w" }]
|
|
203
216
|
];
|
|
204
|
-
var MicOff = createLucideIcon("mic-off",
|
|
217
|
+
var MicOff = createLucideIcon("mic-off", __iconNode17);
|
|
205
218
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mic.js
|
|
206
|
-
var
|
|
219
|
+
var __iconNode18 = [
|
|
207
220
|
["path", { d: "M12 19v3", key: "npa21l" }],
|
|
208
221
|
["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }],
|
|
209
222
|
["rect", { x: "9", y: "2", width: "6", height: "13", rx: "3", key: "s6n7sd" }]
|
|
210
223
|
];
|
|
211
|
-
var Mic = createLucideIcon("mic",
|
|
224
|
+
var Mic = createLucideIcon("mic", __iconNode18);
|
|
212
225
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/monitor-off.js
|
|
213
|
-
var
|
|
226
|
+
var __iconNode19 = [
|
|
214
227
|
["path", { d: "M12 17v4", key: "1riwvh" }],
|
|
215
228
|
["path", { d: "M17 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 1.184-1.826", key: "cv7jms" }],
|
|
216
229
|
["path", { d: "m2 2 20 20", key: "1ooewy" }],
|
|
217
230
|
["path", { d: "M8 21h8", key: "1ev6f3" }],
|
|
218
231
|
["path", { d: "M8.656 3H20a2 2 0 0 1 2 2v10a2 2 0 0 1-.293 1.042", key: "z8ni2w" }]
|
|
219
232
|
];
|
|
220
|
-
var MonitorOff = createLucideIcon("monitor-off",
|
|
233
|
+
var MonitorOff = createLucideIcon("monitor-off", __iconNode19);
|
|
221
234
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/monitor.js
|
|
222
|
-
var
|
|
235
|
+
var __iconNode20 = [
|
|
223
236
|
["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
|
|
224
237
|
["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
|
|
225
238
|
["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
|
|
226
239
|
];
|
|
227
|
-
var Monitor = createLucideIcon("monitor",
|
|
240
|
+
var Monitor = createLucideIcon("monitor", __iconNode20);
|
|
228
241
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mouse-pointer-2.js
|
|
229
|
-
var
|
|
242
|
+
var __iconNode21 = [
|
|
230
243
|
[
|
|
231
244
|
"path",
|
|
232
245
|
{
|
|
@@ -235,9 +248,9 @@ var __iconNode19 = [
|
|
|
235
248
|
}
|
|
236
249
|
]
|
|
237
250
|
];
|
|
238
|
-
var MousePointer2 = createLucideIcon("mouse-pointer-2",
|
|
251
|
+
var MousePointer2 = createLucideIcon("mouse-pointer-2", __iconNode21);
|
|
239
252
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js
|
|
240
|
-
var
|
|
253
|
+
var __iconNode22 = [
|
|
241
254
|
["path", { d: "M14 4.1 12 6", key: "ita8i4" }],
|
|
242
255
|
["path", { d: "m5.1 8-2.9-.8", key: "1go3kf" }],
|
|
243
256
|
["path", { d: "m6 12-1.9 2", key: "mnht97" }],
|
|
@@ -250,15 +263,15 @@ var __iconNode20 = [
|
|
|
250
263
|
}
|
|
251
264
|
]
|
|
252
265
|
];
|
|
253
|
-
var MousePointerClick = createLucideIcon("mouse-pointer-click",
|
|
266
|
+
var MousePointerClick = createLucideIcon("mouse-pointer-click", __iconNode22);
|
|
254
267
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/pause.js
|
|
255
|
-
var
|
|
268
|
+
var __iconNode23 = [
|
|
256
269
|
["rect", { x: "14", y: "3", width: "5", height: "18", rx: "1", key: "kaeet6" }],
|
|
257
270
|
["rect", { x: "5", y: "3", width: "5", height: "18", rx: "1", key: "1wsw3u" }]
|
|
258
271
|
];
|
|
259
|
-
var Pause = createLucideIcon("pause",
|
|
272
|
+
var Pause = createLucideIcon("pause", __iconNode23);
|
|
260
273
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/play.js
|
|
261
|
-
var
|
|
274
|
+
var __iconNode24 = [
|
|
262
275
|
[
|
|
263
276
|
"path",
|
|
264
277
|
{
|
|
@@ -267,18 +280,18 @@ var __iconNode22 = [
|
|
|
267
280
|
}
|
|
268
281
|
]
|
|
269
282
|
];
|
|
270
|
-
var Play = createLucideIcon("play",
|
|
283
|
+
var Play = createLucideIcon("play", __iconNode24);
|
|
271
284
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/radio.js
|
|
272
|
-
var
|
|
285
|
+
var __iconNode25 = [
|
|
273
286
|
["path", { d: "M16.247 7.761a6 6 0 0 1 0 8.478", key: "1fwjs5" }],
|
|
274
287
|
["path", { d: "M19.075 4.933a10 10 0 0 1 0 14.134", key: "ehdyv1" }],
|
|
275
288
|
["path", { d: "M4.925 19.067a10 10 0 0 1 0-14.134", key: "1q22gi" }],
|
|
276
289
|
["path", { d: "M7.753 16.239a6 6 0 0 1 0-8.478", key: "r2q7qm" }],
|
|
277
290
|
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }]
|
|
278
291
|
];
|
|
279
|
-
var Radio = createLucideIcon("radio",
|
|
292
|
+
var Radio = createLucideIcon("radio", __iconNode25);
|
|
280
293
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/send.js
|
|
281
|
-
var
|
|
294
|
+
var __iconNode26 = [
|
|
282
295
|
[
|
|
283
296
|
"path",
|
|
284
297
|
{
|
|
@@ -288,18 +301,18 @@ var __iconNode24 = [
|
|
|
288
301
|
],
|
|
289
302
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
290
303
|
];
|
|
291
|
-
var Send = createLucideIcon("send",
|
|
304
|
+
var Send = createLucideIcon("send", __iconNode26);
|
|
292
305
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/square.js
|
|
293
|
-
var
|
|
306
|
+
var __iconNode27 = [
|
|
294
307
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
|
|
295
308
|
];
|
|
296
|
-
var Square = createLucideIcon("square",
|
|
309
|
+
var Square = createLucideIcon("square", __iconNode27);
|
|
297
310
|
// ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/x.js
|
|
298
|
-
var
|
|
311
|
+
var __iconNode28 = [
|
|
299
312
|
["path", { d: "M18 6 6 18", key: "1bl5f8" }],
|
|
300
313
|
["path", { d: "m6 6 12 12", key: "d8bk6v" }]
|
|
301
314
|
];
|
|
302
|
-
var X = createLucideIcon("x",
|
|
315
|
+
var X = createLucideIcon("x", __iconNode28);
|
|
303
316
|
// src/buddy/BuddyVoiceBar.tsx
|
|
304
317
|
import { useCallback as useCallback6, useContext as useContext2, useEffect as useEffect7, useRef as useRef8, useState as useState5 } from "react";
|
|
305
318
|
|
|
@@ -404,6 +417,7 @@ var NOTIFICATION_KIND = {
|
|
|
404
417
|
Module: "module"
|
|
405
418
|
};
|
|
406
419
|
var PLAN_ATTR = "skippr.action-plan";
|
|
420
|
+
var LINK_CARD_ATTR = "skippr.link-card";
|
|
407
421
|
var NAME_MAX_CHARS = 80;
|
|
408
422
|
|
|
409
423
|
// src/context/LiveAgentContext.tsx
|
|
@@ -3090,6 +3104,7 @@ function useSession({
|
|
|
3090
3104
|
appKey,
|
|
3091
3105
|
getUserToken,
|
|
3092
3106
|
userToken,
|
|
3107
|
+
userContext,
|
|
3093
3108
|
onStart,
|
|
3094
3109
|
onStartError,
|
|
3095
3110
|
onDisconnect
|
|
@@ -3260,6 +3275,8 @@ function useSession({
|
|
|
3260
3275
|
if (isRequestResponseMicMode(micMode))
|
|
3261
3276
|
enabledControls.micMode = micMode;
|
|
3262
3277
|
const requestAgentControls = Object.keys(enabledControls).length > 0 ? enabledControls : undefined;
|
|
3278
|
+
const primitiveContextEntries = Object.entries(userContext ?? {}).filter(([, value]) => typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value));
|
|
3279
|
+
const requestUserContext = primitiveContextEntries.length > 0 ? Object.fromEntries(primitiveContextEntries) : undefined;
|
|
3263
3280
|
try {
|
|
3264
3281
|
let resolvedSessionId = existingSessionId;
|
|
3265
3282
|
if (!resolvedSessionId) {
|
|
@@ -3287,7 +3304,8 @@ function useSession({
|
|
|
3287
3304
|
captureMode,
|
|
3288
3305
|
agentControls: requestAgentControls,
|
|
3289
3306
|
adoptionGoalId,
|
|
3290
|
-
autoStarted
|
|
3307
|
+
autoStarted,
|
|
3308
|
+
userContext: requestUserContext
|
|
3291
3309
|
})
|
|
3292
3310
|
});
|
|
3293
3311
|
if (!startResp.ok) {
|
|
@@ -3319,7 +3337,7 @@ function useSession({
|
|
|
3319
3337
|
isStartingRef.current = false;
|
|
3320
3338
|
setIsStarting(false);
|
|
3321
3339
|
}
|
|
3322
|
-
}, [captureMode, bearerToken, authedFetch, onStart, onStartError]);
|
|
3340
|
+
}, [captureMode, bearerToken, authedFetch, onStart, onStartError, userContext]);
|
|
3323
3341
|
const pauseSession = useCallback13(async () => {
|
|
3324
3342
|
if (!sessionId || !bearerToken)
|
|
3325
3343
|
return;
|
|
@@ -6837,7 +6855,7 @@ function ShadowHost({
|
|
|
6837
6855
|
const hostRef = useRef23(null);
|
|
6838
6856
|
const [shadowRoot, setShadowRoot] = useState20(null);
|
|
6839
6857
|
const css = `/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
6840
|
-
@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-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-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\\:-bottom-1{bottom:calc(var(--skippr-spacing)*-1)}.skippr\\:-bottom-\\[2px\\]{bottom:-2px}.skippr\\:bottom-3{bottom:calc(var(--skippr-spacing)*3)}.skippr\\:bottom-20{bottom:calc(var(--skippr-spacing)*20)}.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-\\[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-\\[8px\\]{margin-top:8px}.skippr\\:mt-\\[9px\\]{margin-top:9px}.skippr\\:mr-7{margin-right:calc(var(--skippr-spacing)*7)}.skippr\\:-mb-\\[5px\\]{margin-bottom:-5px}.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-\\[255px\\]{width:255px}.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}: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-\\[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-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\\/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-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-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\\: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\\:pt-1\\.5{padding-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:pt-\\[8px\\]{padding-top:8px}.skippr\\:pt-\\[9px\\]{padding-top:9px}.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-2{padding-bottom:calc(var(--skippr-spacing)*2)}.skippr\\:pb-\\[8px\\]{padding-bottom:8px}.skippr\\:pb-\\[10px\\]{padding-bottom:10px}.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\\:leading-5{--tw-leading:calc(var(--skippr-spacing)*5);line-height:calc(var(--skippr-spacing)*5)}.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\\.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-\\[\\#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-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\\: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_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\\:\\[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}@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\\: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-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%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.05)}}@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%)}}.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}@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){[style*=skippr-blink],[style*=skippr-buddy-bob],[style*=skippr-buddy-breathe],[style*=skippr-buddy-pop],[style*=skippr-buddy-sleep],[style*=skippr-buddy-zfloat],.skippr-peek-left,.skippr-peek-right{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}}`;
|
|
6858
|
+
@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-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-1{bottom:calc(var(--skippr-spacing)*-1)}.skippr\\:-bottom-\\[2px\\]{bottom:-2px}.skippr\\:bottom-3{bottom:calc(var(--skippr-spacing)*3)}.skippr\\:bottom-20{bottom:calc(var(--skippr-spacing)*20)}.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-\\[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-\\[225px\\]{width:225px}.skippr\\:w-\\[255px\\]{width:255px}.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}: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-\\[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-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\\/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-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-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\\: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\\:pt-1\\.5{padding-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:pt-\\[8px\\]{padding-top:8px}.skippr\\:pt-\\[9px\\]{padding-top:9px}.skippr\\:pt-\\[10px\\]{padding-top:10px}.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-2{padding-bottom:calc(var(--skippr-spacing)*2)}.skippr\\:pb-\\[8px\\]{padding-bottom:8px}.skippr\\:pb-\\[10px\\]{padding-bottom:10px}.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\\:leading-5{--tw-leading:calc(var(--skippr-spacing)*5);line-height:calc(var(--skippr-spacing)*5)}.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\\.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-\\[\\#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-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\\: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_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\\:\\[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}@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\\: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-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%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.05)}}@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%)}}.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}@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){[style*=skippr-blink],[style*=skippr-buddy-bob],[style*=skippr-buddy-breathe],[style*=skippr-buddy-pop],[style*=skippr-buddy-sleep],[style*=skippr-buddy-zfloat],.skippr-peek-left,.skippr-peek-right{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}}`;
|
|
6841
6859
|
const hostStyle = accentColor && isHexColor(accentColor) ? {
|
|
6842
6860
|
"--skippr-brand": accentColor,
|
|
6843
6861
|
"--skippr-brand-foreground": brandForeground(accentColor)
|
|
@@ -6867,7 +6885,7 @@ function ShadowHost({
|
|
|
6867
6885
|
}
|
|
6868
6886
|
|
|
6869
6887
|
// src/components/Sidebar.tsx
|
|
6870
|
-
import { useContext as useContext16, useEffect as
|
|
6888
|
+
import { useContext as useContext16, useEffect as useEffect35 } from "react";
|
|
6871
6889
|
|
|
6872
6890
|
// src/hooks/useCombinedMessages.ts
|
|
6873
6891
|
import { useContext as useContext10, useMemo as useMemo6 } from "react";
|
|
@@ -6969,8 +6987,38 @@ function useCombinedMessages() {
|
|
|
6969
6987
|
return { allMessages, agentState, sendChatMessage, isSendingChat };
|
|
6970
6988
|
}
|
|
6971
6989
|
|
|
6990
|
+
// src/hooks/useLinkCard.ts
|
|
6991
|
+
import { useRemoteParticipants as useRemoteParticipants3 } from "@livekit/components-react/hooks";
|
|
6992
|
+
import { useCallback as useCallback19 } from "react";
|
|
6993
|
+
function isHttpUrl(url) {
|
|
6994
|
+
try {
|
|
6995
|
+
const { protocol } = new URL(url);
|
|
6996
|
+
return protocol === "http:" || protocol === "https:";
|
|
6997
|
+
} catch {
|
|
6998
|
+
return false;
|
|
6999
|
+
}
|
|
7000
|
+
}
|
|
7001
|
+
function parseLinkCard(json) {
|
|
7002
|
+
try {
|
|
7003
|
+
const data = JSON.parse(json);
|
|
7004
|
+
if (data.type === "link_card" && typeof data.cardId === "string" && typeof data.url === "string" && isHttpUrl(data.url)) {
|
|
7005
|
+
return { cardId: data.cardId, title: data.title ?? "", url: data.url };
|
|
7006
|
+
}
|
|
7007
|
+
} catch {
|
|
7008
|
+
return null;
|
|
7009
|
+
}
|
|
7010
|
+
return null;
|
|
7011
|
+
}
|
|
7012
|
+
function useLinkCard() {
|
|
7013
|
+
const parse = useCallback19(parseLinkCard, []);
|
|
7014
|
+
const card = useAgentState(LINK_CARD_ATTR, parse, null);
|
|
7015
|
+
const remoteParticipants = useRemoteParticipants3();
|
|
7016
|
+
const attrPresent = remoteParticipants.some((p) => p.attributes?.[LINK_CARD_ATTR]);
|
|
7017
|
+
return attrPresent ? card : null;
|
|
7018
|
+
}
|
|
7019
|
+
|
|
6972
7020
|
// src/hooks/usePhaseUpdates.ts
|
|
6973
|
-
import { useCallback as
|
|
7021
|
+
import { useCallback as useCallback20, useContext as useContext11, useEffect as useEffect29 } from "react";
|
|
6974
7022
|
function parsePhases(json) {
|
|
6975
7023
|
try {
|
|
6976
7024
|
const data = JSON.parse(json);
|
|
@@ -6981,7 +7029,7 @@ function parsePhases(json) {
|
|
|
6981
7029
|
return null;
|
|
6982
7030
|
}
|
|
6983
7031
|
function usePhaseUpdates() {
|
|
6984
|
-
const parse =
|
|
7032
|
+
const parse = useCallback20(parsePhases, []);
|
|
6985
7033
|
const livePhases = useAgentState("phases", parse, []);
|
|
6986
7034
|
const ctx = useContext11(LiveAgentContext);
|
|
6987
7035
|
useEffect29(() => {
|
|
@@ -7032,7 +7080,7 @@ import { useContext as useContext13, useRef as useRef27 } from "react";
|
|
|
7032
7080
|
|
|
7033
7081
|
// src/hooks/useTextMode.ts
|
|
7034
7082
|
import { useLocalParticipant as useLocalParticipant11 } from "@livekit/components-react/hooks";
|
|
7035
|
-
import { useCallback as
|
|
7083
|
+
import { useCallback as useCallback21, useContext as useContext12, useRef as useRef26 } from "react";
|
|
7036
7084
|
var textEncoder6 = new TextEncoder;
|
|
7037
7085
|
function useTextMode() {
|
|
7038
7086
|
const ctx = useContext12(LiveAgentContext);
|
|
@@ -7042,7 +7090,7 @@ function useTextMode() {
|
|
|
7042
7090
|
const { textMode, setTextModeState, sidebarTab, setSidebarTab } = ctx;
|
|
7043
7091
|
const { localParticipant } = useLocalParticipant11();
|
|
7044
7092
|
const confirmedTextModeRef = useRef26(false);
|
|
7045
|
-
const toggleTextMode =
|
|
7093
|
+
const toggleTextMode = useCallback21(async () => {
|
|
7046
7094
|
const next = !textMode;
|
|
7047
7095
|
setTextModeState(next);
|
|
7048
7096
|
if (next && sidebarTab === "agenda") {
|
|
@@ -7196,7 +7244,7 @@ function LoadingDots({ label }) {
|
|
|
7196
7244
|
}
|
|
7197
7245
|
|
|
7198
7246
|
// src/components/LoginFlow.tsx
|
|
7199
|
-
import { useCallback as
|
|
7247
|
+
import { useCallback as useCallback22, useEffect as useEffect31, useRef as useRef28, useState as useState22 } from "react";
|
|
7200
7248
|
|
|
7201
7249
|
// src/components/ui/button.tsx
|
|
7202
7250
|
import { forwardRef as forwardRef3 } from "react";
|
|
@@ -7234,18 +7282,18 @@ var DIGIT_KEYS = ["d0", "d1", "d2", "d3", "d4", "d5"];
|
|
|
7234
7282
|
function LoginFlow({ requestOtp, verifyOtp, error, isSubmitting }) {
|
|
7235
7283
|
const [step, setStep] = useState22("email");
|
|
7236
7284
|
const [email, setEmail] = useState22("");
|
|
7237
|
-
const handleRequestOtp =
|
|
7285
|
+
const handleRequestOtp = useCallback22(async (emailValue) => {
|
|
7238
7286
|
const success = await requestOtp(emailValue);
|
|
7239
7287
|
if (success)
|
|
7240
7288
|
setStep("otp");
|
|
7241
7289
|
}, [requestOtp]);
|
|
7242
|
-
const handleVerifyOtp =
|
|
7290
|
+
const handleVerifyOtp = useCallback22(async (code) => {
|
|
7243
7291
|
await verifyOtp(email, code);
|
|
7244
7292
|
}, [verifyOtp, email]);
|
|
7245
|
-
const handleBack =
|
|
7293
|
+
const handleBack = useCallback22(() => {
|
|
7246
7294
|
setStep("email");
|
|
7247
7295
|
}, []);
|
|
7248
|
-
const handleResend =
|
|
7296
|
+
const handleResend = useCallback22(async () => {
|
|
7249
7297
|
await requestOtp(email);
|
|
7250
7298
|
}, [requestOtp, email]);
|
|
7251
7299
|
if (step === "otp") {
|
|
@@ -7341,13 +7389,13 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
7341
7389
|
const timer = setTimeout(() => setResendCooldown((c) => c - 1), 1000);
|
|
7342
7390
|
return () => clearTimeout(timer);
|
|
7343
7391
|
}, [resendCooldown]);
|
|
7344
|
-
const submitCode =
|
|
7392
|
+
const submitCode = useCallback22((code) => {
|
|
7345
7393
|
if (submittedRef.current || isSubmitting)
|
|
7346
7394
|
return;
|
|
7347
7395
|
submittedRef.current = true;
|
|
7348
7396
|
onSubmit(code);
|
|
7349
7397
|
}, [onSubmit, isSubmitting]);
|
|
7350
|
-
const handleDigitChange =
|
|
7398
|
+
const handleDigitChange = useCallback22((index2, value) => {
|
|
7351
7399
|
const digit = value.replace(/\D/g, "").slice(-1);
|
|
7352
7400
|
const newDigits = [...digits];
|
|
7353
7401
|
newDigits[index2] = digit;
|
|
@@ -7361,12 +7409,12 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
7361
7409
|
submitCode(code);
|
|
7362
7410
|
}
|
|
7363
7411
|
}, [digits, submitCode]);
|
|
7364
|
-
const handleKeyDown =
|
|
7412
|
+
const handleKeyDown = useCallback22((index2, e) => {
|
|
7365
7413
|
if (e.key === "Backspace" && !digits[index2] && index2 > 0) {
|
|
7366
7414
|
inputRefs.current[index2 - 1]?.focus();
|
|
7367
7415
|
}
|
|
7368
7416
|
}, [digits]);
|
|
7369
|
-
const handlePaste =
|
|
7417
|
+
const handlePaste = useCallback22((e) => {
|
|
7370
7418
|
e.preventDefault();
|
|
7371
7419
|
const pasted = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, OTP_LENGTH);
|
|
7372
7420
|
if (pasted.length > 0) {
|
|
@@ -7478,7 +7526,7 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
|
|
|
7478
7526
|
}
|
|
7479
7527
|
|
|
7480
7528
|
// src/components/MessageList.tsx
|
|
7481
|
-
import { useCallback as
|
|
7529
|
+
import { useCallback as useCallback24, useLayoutEffect as useLayoutEffect3, useRef as useRef31, useState as useState26 } from "react";
|
|
7482
7530
|
|
|
7483
7531
|
// src/components/ChatInput.tsx
|
|
7484
7532
|
import { useContext as useContext14, useEffect as useEffect32, useRef as useRef29, useState as useState23 } from "react";
|
|
@@ -7586,37 +7634,137 @@ function ChatMessage({ message }) {
|
|
|
7586
7634
|
});
|
|
7587
7635
|
}
|
|
7588
7636
|
|
|
7589
|
-
// src/components/
|
|
7590
|
-
import { useEffect as useEffect33, useState as useState24 } from "react";
|
|
7637
|
+
// src/components/LinkCard.tsx
|
|
7638
|
+
import { useCallback as useCallback23, useEffect as useEffect33, useRef as useRef30, useState as useState24 } from "react";
|
|
7639
|
+
|
|
7640
|
+
// src/lib/clipboard.ts
|
|
7641
|
+
async function copyToClipboard(text) {
|
|
7642
|
+
try {
|
|
7643
|
+
await navigator.clipboard.writeText(text);
|
|
7644
|
+
return true;
|
|
7645
|
+
} catch {
|
|
7646
|
+
return false;
|
|
7647
|
+
}
|
|
7648
|
+
}
|
|
7649
|
+
|
|
7650
|
+
// src/components/LinkCard.tsx
|
|
7591
7651
|
import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
7652
|
+
var COPIED_RESET_MS = 2000;
|
|
7653
|
+
var DISMISS_AFTER_COPY_MS = 3000;
|
|
7654
|
+
function LinkCard({ card, onDismiss }) {
|
|
7655
|
+
const [copied, setCopied] = useState24(false);
|
|
7656
|
+
const dismissTimerRef = useRef30(null);
|
|
7657
|
+
useEffect33(() => {
|
|
7658
|
+
if (!copied)
|
|
7659
|
+
return;
|
|
7660
|
+
const timer = setTimeout(() => setCopied(false), COPIED_RESET_MS);
|
|
7661
|
+
return () => clearTimeout(timer);
|
|
7662
|
+
}, [copied]);
|
|
7663
|
+
useEffect33(() => {
|
|
7664
|
+
return () => {
|
|
7665
|
+
if (dismissTimerRef.current)
|
|
7666
|
+
clearTimeout(dismissTimerRef.current);
|
|
7667
|
+
};
|
|
7668
|
+
}, []);
|
|
7669
|
+
const handleCopy = useCallback23(async () => {
|
|
7670
|
+
const ok = await copyToClipboard(card.url);
|
|
7671
|
+
if (!ok)
|
|
7672
|
+
return;
|
|
7673
|
+
setCopied(true);
|
|
7674
|
+
dismissTimerRef.current = setTimeout(onDismiss, DISMISS_AFTER_COPY_MS);
|
|
7675
|
+
}, [card.url, onDismiss]);
|
|
7676
|
+
return /* @__PURE__ */ jsxs23("div", {
|
|
7677
|
+
className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
|
|
7678
|
+
children: [
|
|
7679
|
+
/* @__PURE__ */ jsxs23("div", {
|
|
7680
|
+
className: "skippr:mb-1 skippr:flex skippr:items-start skippr:justify-between skippr:gap-2",
|
|
7681
|
+
children: [
|
|
7682
|
+
card.title && /* @__PURE__ */ jsx28("p", {
|
|
7683
|
+
className: "skippr:text-sm skippr:font-semibold skippr:leading-snug skippr:text-foreground",
|
|
7684
|
+
children: card.title
|
|
7685
|
+
}),
|
|
7686
|
+
/* @__PURE__ */ jsx28("button", {
|
|
7687
|
+
type: "button",
|
|
7688
|
+
onClick: onDismiss,
|
|
7689
|
+
"aria-label": "Dismiss link",
|
|
7690
|
+
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",
|
|
7691
|
+
children: /* @__PURE__ */ jsx28(X, {
|
|
7692
|
+
className: "skippr:size-3.5",
|
|
7693
|
+
strokeWidth: 2.5
|
|
7694
|
+
})
|
|
7695
|
+
})
|
|
7696
|
+
]
|
|
7697
|
+
}),
|
|
7698
|
+
/* @__PURE__ */ jsx28("p", {
|
|
7699
|
+
className: "skippr:mb-3 skippr:truncate skippr:text-xs skippr:text-muted-foreground",
|
|
7700
|
+
children: card.url
|
|
7701
|
+
}),
|
|
7702
|
+
/* @__PURE__ */ jsxs23("div", {
|
|
7703
|
+
className: "skippr:flex skippr:gap-2",
|
|
7704
|
+
children: [
|
|
7705
|
+
/* @__PURE__ */ jsxs23("a", {
|
|
7706
|
+
href: card.url,
|
|
7707
|
+
target: "_blank",
|
|
7708
|
+
rel: "noopener noreferrer",
|
|
7709
|
+
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",
|
|
7710
|
+
children: [
|
|
7711
|
+
/* @__PURE__ */ jsx28(ExternalLink, {
|
|
7712
|
+
className: "skippr:size-4"
|
|
7713
|
+
}),
|
|
7714
|
+
"Open"
|
|
7715
|
+
]
|
|
7716
|
+
}),
|
|
7717
|
+
/* @__PURE__ */ jsxs23(Button, {
|
|
7718
|
+
variant: "outline",
|
|
7719
|
+
className: "skippr:flex-1 skippr:py-2",
|
|
7720
|
+
onClick: handleCopy,
|
|
7721
|
+
"aria-label": "Copy link",
|
|
7722
|
+
children: [
|
|
7723
|
+
copied ? /* @__PURE__ */ jsx28(Check, {
|
|
7724
|
+
className: "skippr:size-4"
|
|
7725
|
+
}) : /* @__PURE__ */ jsx28(Copy, {
|
|
7726
|
+
className: "skippr:size-4"
|
|
7727
|
+
}),
|
|
7728
|
+
copied ? "Copied" : "Copy link"
|
|
7729
|
+
]
|
|
7730
|
+
})
|
|
7731
|
+
]
|
|
7732
|
+
})
|
|
7733
|
+
]
|
|
7734
|
+
});
|
|
7735
|
+
}
|
|
7736
|
+
|
|
7737
|
+
// src/components/PlanCard.tsx
|
|
7738
|
+
import { useEffect as useEffect34, useState as useState25 } from "react";
|
|
7739
|
+
import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
7592
7740
|
var APPROVE_MESSAGE = "Yes, go ahead.";
|
|
7593
7741
|
var CANCEL_MESSAGE = "No, cancel that.";
|
|
7594
7742
|
var COMPLETED_CARD_VISIBLE_MS = 2500;
|
|
7595
7743
|
var APPROVING_RESET_MS = 8000;
|
|
7596
7744
|
function StepIcon({ status }) {
|
|
7597
7745
|
if (status === "done") {
|
|
7598
|
-
return /* @__PURE__ */
|
|
7746
|
+
return /* @__PURE__ */ jsx29(CircleCheck, {
|
|
7599
7747
|
className: "skippr:size-4 skippr:text-chart-3"
|
|
7600
7748
|
});
|
|
7601
7749
|
}
|
|
7602
7750
|
if (status === "failed") {
|
|
7603
|
-
return /* @__PURE__ */
|
|
7751
|
+
return /* @__PURE__ */ jsx29(CircleX, {
|
|
7604
7752
|
className: "skippr:size-4 skippr:text-destructive"
|
|
7605
7753
|
});
|
|
7606
7754
|
}
|
|
7607
7755
|
if (status === "active") {
|
|
7608
|
-
return /* @__PURE__ */
|
|
7756
|
+
return /* @__PURE__ */ jsx29(Circle, {
|
|
7609
7757
|
className: "skippr:size-4 skippr:fill-primary/30 skippr:text-primary"
|
|
7610
7758
|
});
|
|
7611
7759
|
}
|
|
7612
|
-
return /* @__PURE__ */
|
|
7760
|
+
return /* @__PURE__ */ jsx29(Circle, {
|
|
7613
7761
|
className: "skippr:size-4 skippr:text-muted-foreground/30"
|
|
7614
7762
|
});
|
|
7615
7763
|
}
|
|
7616
7764
|
function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
7617
7765
|
const awaitingApproval = plan.state === "proposed";
|
|
7618
|
-
const [isApproving, setIsApproving] =
|
|
7619
|
-
const [lastPlanId, setLastPlanId] =
|
|
7766
|
+
const [isApproving, setIsApproving] = useState25(false);
|
|
7767
|
+
const [lastPlanId, setLastPlanId] = useState25(plan.planId);
|
|
7620
7768
|
if (plan.planId !== lastPlanId) {
|
|
7621
7769
|
setLastPlanId(plan.planId);
|
|
7622
7770
|
setIsApproving(false);
|
|
@@ -7628,55 +7776,55 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
7628
7776
|
setIsApproving(false);
|
|
7629
7777
|
});
|
|
7630
7778
|
};
|
|
7631
|
-
|
|
7779
|
+
useEffect34(() => {
|
|
7632
7780
|
if (!isApproving)
|
|
7633
7781
|
return;
|
|
7634
7782
|
const timer = setTimeout(() => setIsApproving(false), APPROVING_RESET_MS);
|
|
7635
7783
|
return () => clearTimeout(timer);
|
|
7636
7784
|
}, [isApproving]);
|
|
7637
|
-
|
|
7785
|
+
useEffect34(() => {
|
|
7638
7786
|
if (plan.state !== "completed")
|
|
7639
7787
|
return;
|
|
7640
7788
|
const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
|
|
7641
7789
|
return () => clearTimeout(timer);
|
|
7642
7790
|
}, [plan.state, onDismiss]);
|
|
7643
|
-
return /* @__PURE__ */
|
|
7791
|
+
return /* @__PURE__ */ jsxs24("div", {
|
|
7644
7792
|
className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
|
|
7645
7793
|
children: [
|
|
7646
|
-
/* @__PURE__ */
|
|
7794
|
+
/* @__PURE__ */ jsx29("p", {
|
|
7647
7795
|
className: "skippr:mb-3 skippr:text-sm skippr:font-semibold skippr:leading-snug skippr:text-foreground",
|
|
7648
7796
|
children: "Plan"
|
|
7649
7797
|
}),
|
|
7650
|
-
/* @__PURE__ */
|
|
7798
|
+
/* @__PURE__ */ jsx29("div", {
|
|
7651
7799
|
className: "skippr:space-y-2",
|
|
7652
|
-
children: plan.steps.map((step) => /* @__PURE__ */
|
|
7800
|
+
children: plan.steps.map((step) => /* @__PURE__ */ jsxs24("div", {
|
|
7653
7801
|
className: "skippr:flex skippr:items-center skippr:gap-2",
|
|
7654
7802
|
children: [
|
|
7655
|
-
/* @__PURE__ */
|
|
7803
|
+
/* @__PURE__ */ jsx29(StepIcon, {
|
|
7656
7804
|
status: step.status
|
|
7657
7805
|
}),
|
|
7658
|
-
/* @__PURE__ */
|
|
7806
|
+
/* @__PURE__ */ jsx29("p", {
|
|
7659
7807
|
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"),
|
|
7660
7808
|
children: step.label
|
|
7661
7809
|
})
|
|
7662
7810
|
]
|
|
7663
7811
|
}, step.index))
|
|
7664
7812
|
}),
|
|
7665
|
-
awaitingApproval && /* @__PURE__ */
|
|
7813
|
+
awaitingApproval && /* @__PURE__ */ jsxs24("div", {
|
|
7666
7814
|
className: "skippr:mt-3.5 skippr:flex skippr:gap-2",
|
|
7667
7815
|
children: [
|
|
7668
|
-
/* @__PURE__ */
|
|
7816
|
+
/* @__PURE__ */ jsxs24(Button, {
|
|
7669
7817
|
className: "skippr:flex-1 skippr:gap-1.5 skippr:py-2",
|
|
7670
7818
|
disabled: isApproving,
|
|
7671
7819
|
onClick: approve,
|
|
7672
7820
|
children: [
|
|
7673
|
-
isApproving && /* @__PURE__ */
|
|
7821
|
+
isApproving && /* @__PURE__ */ jsx29("span", {
|
|
7674
7822
|
className: "skippr:size-3 skippr:shrink-0 skippr:animate-spin skippr:rounded-full skippr:border-2 skippr:border-white/30 skippr:border-t-white"
|
|
7675
7823
|
}),
|
|
7676
7824
|
isApproving ? "Approving…" : "Approve"
|
|
7677
7825
|
]
|
|
7678
7826
|
}),
|
|
7679
|
-
/* @__PURE__ */
|
|
7827
|
+
/* @__PURE__ */ jsx29(Button, {
|
|
7680
7828
|
variant: "outline",
|
|
7681
7829
|
className: "skippr:flex-1 skippr:py-2",
|
|
7682
7830
|
disabled: isApproving,
|
|
@@ -7690,26 +7838,26 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
|
|
|
7690
7838
|
}
|
|
7691
7839
|
|
|
7692
7840
|
// src/components/TypingIndicator.tsx
|
|
7693
|
-
import { jsx as
|
|
7841
|
+
import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
7694
7842
|
function TypingIndicator() {
|
|
7695
|
-
return /* @__PURE__ */
|
|
7843
|
+
return /* @__PURE__ */ jsx30("div", {
|
|
7696
7844
|
className: "skippr:flex skippr:items-start skippr:gap-2 skippr:animate-skippr-tab-fade",
|
|
7697
|
-
children: /* @__PURE__ */
|
|
7845
|
+
children: /* @__PURE__ */ jsxs25("div", {
|
|
7698
7846
|
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",
|
|
7699
7847
|
children: [
|
|
7700
|
-
/* @__PURE__ */
|
|
7848
|
+
/* @__PURE__ */ jsx30("span", {
|
|
7701
7849
|
children: "Agent is analyzing your screen"
|
|
7702
7850
|
}),
|
|
7703
|
-
/* @__PURE__ */
|
|
7851
|
+
/* @__PURE__ */ jsxs25("span", {
|
|
7704
7852
|
className: "skippr:inline-flex skippr:items-center skippr:gap-[2px]",
|
|
7705
7853
|
children: [
|
|
7706
|
-
/* @__PURE__ */
|
|
7854
|
+
/* @__PURE__ */ jsx30("span", {
|
|
7707
7855
|
className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:0ms]"
|
|
7708
7856
|
}),
|
|
7709
|
-
/* @__PURE__ */
|
|
7857
|
+
/* @__PURE__ */ jsx30("span", {
|
|
7710
7858
|
className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:200ms]"
|
|
7711
7859
|
}),
|
|
7712
|
-
/* @__PURE__ */
|
|
7860
|
+
/* @__PURE__ */ jsx30("span", {
|
|
7713
7861
|
className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:400ms]"
|
|
7714
7862
|
})
|
|
7715
7863
|
]
|
|
@@ -7720,7 +7868,7 @@ function TypingIndicator() {
|
|
|
7720
7868
|
}
|
|
7721
7869
|
|
|
7722
7870
|
// src/components/MessageList.tsx
|
|
7723
|
-
import { jsx as
|
|
7871
|
+
import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
7724
7872
|
var BOTTOM_THRESHOLD_PX = 32;
|
|
7725
7873
|
function MessageList({
|
|
7726
7874
|
messages,
|
|
@@ -7728,20 +7876,26 @@ function MessageList({
|
|
|
7728
7876
|
sendChatMessage,
|
|
7729
7877
|
isSendingChat = false,
|
|
7730
7878
|
plan,
|
|
7879
|
+
linkCard,
|
|
7731
7880
|
autoFocus = false,
|
|
7732
7881
|
readOnly = false
|
|
7733
7882
|
}) {
|
|
7734
|
-
const containerRef =
|
|
7735
|
-
const isPinnedToBottom =
|
|
7736
|
-
const lastSeenMessageId =
|
|
7737
|
-
const [showJumpToLatest, setShowJumpToLatest] =
|
|
7883
|
+
const containerRef = useRef31(null);
|
|
7884
|
+
const isPinnedToBottom = useRef31(true);
|
|
7885
|
+
const lastSeenMessageId = useRef31(undefined);
|
|
7886
|
+
const [showJumpToLatest, setShowJumpToLatest] = useState26(false);
|
|
7738
7887
|
const lastMessage = messages.length > 0 ? messages[messages.length - 1] : undefined;
|
|
7739
|
-
const [dismissedPlanId, setDismissedPlanId] =
|
|
7740
|
-
const dismissPlan =
|
|
7888
|
+
const [dismissedPlanId, setDismissedPlanId] = useState26(null);
|
|
7889
|
+
const dismissPlan = useCallback24(() => {
|
|
7741
7890
|
if (plan)
|
|
7742
7891
|
setDismissedPlanId(plan.planId);
|
|
7743
7892
|
}, [plan]);
|
|
7744
|
-
const
|
|
7893
|
+
const [dismissedLinkCardId, setDismissedLinkCardId] = useState26(null);
|
|
7894
|
+
const dismissLinkCard = useCallback24(() => {
|
|
7895
|
+
if (linkCard)
|
|
7896
|
+
setDismissedLinkCardId(linkCard.cardId);
|
|
7897
|
+
}, [linkCard]);
|
|
7898
|
+
const handleScroll = useCallback24(() => {
|
|
7745
7899
|
const container = containerRef.current;
|
|
7746
7900
|
if (!container)
|
|
7747
7901
|
return;
|
|
@@ -7750,7 +7904,7 @@ function MessageList({
|
|
|
7750
7904
|
isPinnedToBottom.current = pinned;
|
|
7751
7905
|
setShowJumpToLatest(!pinned);
|
|
7752
7906
|
}, []);
|
|
7753
|
-
const jumpToLatest =
|
|
7907
|
+
const jumpToLatest = useCallback24(() => {
|
|
7754
7908
|
const container = containerRef.current;
|
|
7755
7909
|
if (!container)
|
|
7756
7910
|
return;
|
|
@@ -7773,49 +7927,56 @@ function MessageList({
|
|
|
7773
7927
|
container.scrollTop = container.scrollHeight;
|
|
7774
7928
|
}, [messages.length, lastMessage?.content]);
|
|
7775
7929
|
const showTyping = isStreaming && lastMessage?.role === "assistant" && lastMessage.content === "";
|
|
7776
|
-
return /* @__PURE__ */
|
|
7930
|
+
return /* @__PURE__ */ jsxs26("div", {
|
|
7777
7931
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
7778
7932
|
children: [
|
|
7779
|
-
/* @__PURE__ */
|
|
7933
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
7780
7934
|
className: "skippr:relative skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
7781
7935
|
children: [
|
|
7782
|
-
/* @__PURE__ */
|
|
7936
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
7783
7937
|
ref: containerRef,
|
|
7784
7938
|
onScroll: handleScroll,
|
|
7785
7939
|
className: "skippr:min-h-0 skippr:flex-1 skippr:space-y-4 skippr:overflow-y-auto skippr:p-4 skippr:[overflow-anchor:none]",
|
|
7786
7940
|
children: [
|
|
7787
|
-
messages.length === 0 && !showTyping && (readOnly ? /* @__PURE__ */
|
|
7941
|
+
messages.length === 0 && !showTyping && (readOnly ? /* @__PURE__ */ jsx31("p", {
|
|
7788
7942
|
className: "skippr:px-2 skippr:py-6 skippr:text-center skippr:text-sm skippr:text-muted-foreground",
|
|
7789
7943
|
children: "No messages in this conversation yet."
|
|
7790
|
-
}) : /* @__PURE__ */
|
|
7944
|
+
}) : /* @__PURE__ */ jsx31(LoadingDots, {
|
|
7791
7945
|
label: "Waiting for conversation to begin..."
|
|
7792
7946
|
})),
|
|
7793
|
-
messages.map((message) => /* @__PURE__ */
|
|
7947
|
+
messages.map((message) => /* @__PURE__ */ jsx31(ChatMessage, {
|
|
7794
7948
|
message
|
|
7795
7949
|
}, message.id)),
|
|
7796
|
-
showTyping && /* @__PURE__ */
|
|
7950
|
+
showTyping && /* @__PURE__ */ jsx31(TypingIndicator, {})
|
|
7797
7951
|
]
|
|
7798
7952
|
}),
|
|
7799
|
-
showJumpToLatest && /* @__PURE__ */
|
|
7953
|
+
showJumpToLatest && /* @__PURE__ */ jsx31("button", {
|
|
7800
7954
|
type: "button",
|
|
7801
7955
|
onClick: jumpToLatest,
|
|
7802
7956
|
"aria-label": "Jump to latest message",
|
|
7803
7957
|
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",
|
|
7804
|
-
children: /* @__PURE__ */
|
|
7958
|
+
children: /* @__PURE__ */ jsx31(ChevronDown, {
|
|
7805
7959
|
className: "skippr:size-4"
|
|
7806
7960
|
})
|
|
7807
7961
|
})
|
|
7808
7962
|
]
|
|
7809
7963
|
}),
|
|
7810
|
-
sendChatMessage && isPlanVisible(plan) && plan.planId !== dismissedPlanId && /* @__PURE__ */
|
|
7964
|
+
sendChatMessage && isPlanVisible(plan) && plan.planId !== dismissedPlanId && /* @__PURE__ */ jsx31("div", {
|
|
7811
7965
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
7812
|
-
children: /* @__PURE__ */
|
|
7966
|
+
children: /* @__PURE__ */ jsx31(PlanCard, {
|
|
7813
7967
|
plan,
|
|
7814
7968
|
sendChatMessage,
|
|
7815
7969
|
onDismiss: dismissPlan
|
|
7816
7970
|
}, plan.planId)
|
|
7817
7971
|
}),
|
|
7818
|
-
|
|
7972
|
+
linkCard && linkCard.cardId !== dismissedLinkCardId && /* @__PURE__ */ jsx31("div", {
|
|
7973
|
+
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
7974
|
+
children: /* @__PURE__ */ jsx31(LinkCard, {
|
|
7975
|
+
card: linkCard,
|
|
7976
|
+
onDismiss: dismissLinkCard
|
|
7977
|
+
}, linkCard.cardId)
|
|
7978
|
+
}),
|
|
7979
|
+
!readOnly && sendChatMessage && /* @__PURE__ */ jsx31(ChatInput, {
|
|
7819
7980
|
sendChatMessage,
|
|
7820
7981
|
isSendingChat,
|
|
7821
7982
|
autoFocus
|
|
@@ -7826,14 +7987,14 @@ function MessageList({
|
|
|
7826
7987
|
|
|
7827
7988
|
// src/components/SessionAgenda.tsx
|
|
7828
7989
|
import { useContext as useContext15 } from "react";
|
|
7829
|
-
import { jsx as
|
|
7990
|
+
import { jsx as jsx32, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
7830
7991
|
function SessionAgenda({ phases, hasStarted }) {
|
|
7831
7992
|
const ctx = useContext15(LiveAgentContext);
|
|
7832
7993
|
const title = ctx?.activeModule?.name ?? "Agenda";
|
|
7833
7994
|
if (phases.length === 0 || !hasStarted) {
|
|
7834
|
-
return /* @__PURE__ */
|
|
7995
|
+
return /* @__PURE__ */ jsx32("div", {
|
|
7835
7996
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
7836
|
-
children: /* @__PURE__ */
|
|
7997
|
+
children: /* @__PURE__ */ jsx32(LoadingDots, {
|
|
7837
7998
|
label: "Waiting for agenda to load..."
|
|
7838
7999
|
})
|
|
7839
8000
|
});
|
|
@@ -7843,17 +8004,17 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
7843
8004
|
const activeIndex = phases.findIndex((p) => p.status === "active");
|
|
7844
8005
|
const currentStep = activeIndex >= 0 ? activeIndex + 1 : Math.min(completedCount + 1, total);
|
|
7845
8006
|
const progressPct = Math.round(completedCount / total * 100);
|
|
7846
|
-
return /* @__PURE__ */
|
|
8007
|
+
return /* @__PURE__ */ jsxs27("div", {
|
|
7847
8008
|
className: "skippr:flex-1 skippr:overflow-y-auto skippr:p-[14px]",
|
|
7848
8009
|
children: [
|
|
7849
|
-
/* @__PURE__ */
|
|
8010
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
7850
8011
|
className: "skippr:mb-2 skippr:flex skippr:items-baseline skippr:justify-between",
|
|
7851
8012
|
children: [
|
|
7852
|
-
/* @__PURE__ */
|
|
8013
|
+
/* @__PURE__ */ jsx32("span", {
|
|
7853
8014
|
className: "skippr:text-[12.5px] skippr:font-semibold skippr:text-[#2D2D3F]",
|
|
7854
8015
|
children: title
|
|
7855
8016
|
}),
|
|
7856
|
-
/* @__PURE__ */
|
|
8017
|
+
/* @__PURE__ */ jsxs27("span", {
|
|
7857
8018
|
className: "skippr:text-[11px] skippr:font-semibold skippr:text-[var(--skippr-brand-deep)]",
|
|
7858
8019
|
children: [
|
|
7859
8020
|
"step ",
|
|
@@ -7864,14 +8025,14 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
7864
8025
|
})
|
|
7865
8026
|
]
|
|
7866
8027
|
}),
|
|
7867
|
-
/* @__PURE__ */
|
|
8028
|
+
/* @__PURE__ */ jsx32("div", {
|
|
7868
8029
|
role: "progressbar",
|
|
7869
8030
|
"aria-label": "Agenda progress",
|
|
7870
8031
|
"aria-valuenow": Math.round(progressPct),
|
|
7871
8032
|
"aria-valuemin": 0,
|
|
7872
8033
|
"aria-valuemax": 100,
|
|
7873
8034
|
className: "skippr:mb-[14px] skippr:h-[5px] skippr:overflow-hidden skippr:rounded-full skippr:bg-[#eeeae4]",
|
|
7874
|
-
children: /* @__PURE__ */
|
|
8035
|
+
children: /* @__PURE__ */ jsx32("div", {
|
|
7875
8036
|
className: "skippr:h-full skippr:rounded-full skippr:bg-brand",
|
|
7876
8037
|
style: { width: `${progressPct}%` }
|
|
7877
8038
|
})
|
|
@@ -7879,29 +8040,29 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
7879
8040
|
phases.map((phase) => {
|
|
7880
8041
|
const isActive = phase.status === "active";
|
|
7881
8042
|
const isCompleted = phase.status === "completed";
|
|
7882
|
-
return /* @__PURE__ */
|
|
8043
|
+
return /* @__PURE__ */ jsxs27("div", {
|
|
7883
8044
|
className: "skippr:flex skippr:items-center skippr:gap-[9px] skippr:py-[5px]",
|
|
7884
8045
|
children: [
|
|
7885
|
-
isCompleted ? /* @__PURE__ */
|
|
8046
|
+
isCompleted ? /* @__PURE__ */ jsx32("span", {
|
|
7886
8047
|
className: "skippr:flex skippr:size-[19px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-brand",
|
|
7887
|
-
children: /* @__PURE__ */
|
|
8048
|
+
children: /* @__PURE__ */ jsx32(Check, {
|
|
7888
8049
|
className: "skippr:size-[11px]",
|
|
7889
8050
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
7890
8051
|
strokeWidth: 3
|
|
7891
8052
|
})
|
|
7892
|
-
}) : isActive ? /* @__PURE__ */
|
|
8053
|
+
}) : isActive ? /* @__PURE__ */ jsx32("span", {
|
|
7893
8054
|
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)]",
|
|
7894
|
-
children: /* @__PURE__ */
|
|
8055
|
+
children: /* @__PURE__ */ jsx32("span", {
|
|
7895
8056
|
className: "skippr:size-[6px] skippr:rounded-full skippr:bg-white"
|
|
7896
8057
|
})
|
|
7897
|
-
}) : /* @__PURE__ */
|
|
8058
|
+
}) : /* @__PURE__ */ jsx32("span", {
|
|
7898
8059
|
className: "skippr:size-[19px] skippr:shrink-0 skippr:rounded-full skippr:border-2 skippr:border-[#d8d3ca] skippr:bg-white"
|
|
7899
8060
|
}),
|
|
7900
|
-
/* @__PURE__ */
|
|
8061
|
+
/* @__PURE__ */ jsx32("span", {
|
|
7901
8062
|
className: cn("skippr:text-[12.5px]", isActive || isCompleted ? "skippr:font-semibold skippr:text-[#2D2D3F]" : "skippr:font-medium skippr:text-[#a8a49c]"),
|
|
7902
8063
|
children: phase.name
|
|
7903
8064
|
}),
|
|
7904
|
-
isActive && /* @__PURE__ */
|
|
8065
|
+
isActive && /* @__PURE__ */ jsx32("span", {
|
|
7905
8066
|
className: "skippr:ml-auto skippr:text-[9.5px] skippr:font-bold skippr:uppercase skippr:tracking-[0.05em] skippr:text-[var(--skippr-brand-deep)]",
|
|
7906
8067
|
children: "now"
|
|
7907
8068
|
})
|
|
@@ -7913,12 +8074,12 @@ function SessionAgenda({ phases, hasStarted }) {
|
|
|
7913
8074
|
}
|
|
7914
8075
|
|
|
7915
8076
|
// src/components/SessionWarningBanner.tsx
|
|
7916
|
-
import { jsx as
|
|
8077
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
7917
8078
|
var SESSION_WARNING_THRESHOLD_SECS = 60;
|
|
7918
8079
|
function SessionWarningBanner({ remaining }) {
|
|
7919
8080
|
if (remaining === null || remaining <= 0 || remaining > SESSION_WARNING_THRESHOLD_SECS)
|
|
7920
8081
|
return null;
|
|
7921
|
-
return /* @__PURE__ */
|
|
8082
|
+
return /* @__PURE__ */ jsx33("div", {
|
|
7922
8083
|
"data-testid": "session-warning-banner",
|
|
7923
8084
|
role: "alert",
|
|
7924
8085
|
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",
|
|
@@ -7927,7 +8088,7 @@ function SessionWarningBanner({ remaining }) {
|
|
|
7927
8088
|
}
|
|
7928
8089
|
|
|
7929
8090
|
// src/components/Sidebar.tsx
|
|
7930
|
-
import { jsx as
|
|
8091
|
+
import { jsx as jsx34, jsxs as jsxs28, Fragment as Fragment4 } from "react/jsx-runtime";
|
|
7931
8092
|
var PANEL_GAP_PX = 12;
|
|
7932
8093
|
var PANEL_VIEWPORT_MARGIN_PX = 24;
|
|
7933
8094
|
var PANEL_MAX_HEIGHT_PX = 460;
|
|
@@ -8003,7 +8164,7 @@ function Sidebar({
|
|
|
8003
8164
|
};
|
|
8004
8165
|
}
|
|
8005
8166
|
}
|
|
8006
|
-
|
|
8167
|
+
useEffect35(() => {
|
|
8007
8168
|
if (!isSidebar)
|
|
8008
8169
|
return;
|
|
8009
8170
|
const prop = position === "right" ? "marginRight" : "marginLeft";
|
|
@@ -8017,13 +8178,13 @@ function Sidebar({
|
|
|
8017
8178
|
document.body.style.transition = "";
|
|
8018
8179
|
};
|
|
8019
8180
|
}, [isSidebar, isPanelOpen, position]);
|
|
8020
|
-
return /* @__PURE__ */
|
|
8181
|
+
return /* @__PURE__ */ jsxs28("div", {
|
|
8021
8182
|
ref: internalCtx?.panelRef,
|
|
8022
8183
|
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 && (barIsTopBottom ? popsDown ? "skippr:origin-top" : "skippr:origin-bottom" : popsDown ? barEdge === "left" ? "skippr:origin-top-left" : "skippr:origin-top-right" : barEdge === "left" ? "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", 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"),
|
|
8023
8184
|
style: { width: isPanelOpen ? SIDEBAR_WIDTH : undefined, ...floatingStyle },
|
|
8024
8185
|
children: [
|
|
8025
|
-
!hideHeader && /* @__PURE__ */
|
|
8026
|
-
authFailed ? /* @__PURE__ */
|
|
8186
|
+
!hideHeader && /* @__PURE__ */ jsx34(ChatHeader, {}),
|
|
8187
|
+
authFailed ? /* @__PURE__ */ jsx34(AuthError, {}) : isAuthenticated && hasResolvedModules ? /* @__PURE__ */ jsx34(AuthenticatedContent, {
|
|
8027
8188
|
isConnected,
|
|
8028
8189
|
isPaused,
|
|
8029
8190
|
isPausing,
|
|
@@ -8039,12 +8200,12 @@ function Sidebar({
|
|
|
8039
8200
|
talkLabel: startSessionLabel,
|
|
8040
8201
|
talkDisabled,
|
|
8041
8202
|
showTalk: !isFloating
|
|
8042
|
-
}) : usesHostAuth || isValidating || isAuthenticated ? /* @__PURE__ */
|
|
8203
|
+
}) : usesHostAuth || isValidating || isAuthenticated ? /* @__PURE__ */ jsx34("div", {
|
|
8043
8204
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
8044
|
-
children: /* @__PURE__ */
|
|
8205
|
+
children: /* @__PURE__ */ jsx34(LoadingDots, {
|
|
8045
8206
|
label: "Loading..."
|
|
8046
8207
|
})
|
|
8047
|
-
}) : /* @__PURE__ */
|
|
8208
|
+
}) : /* @__PURE__ */ jsx34(LoginFlow, {
|
|
8048
8209
|
requestOtp,
|
|
8049
8210
|
verifyOtp,
|
|
8050
8211
|
error: authError,
|
|
@@ -8072,20 +8233,20 @@ function AuthenticatedContent({
|
|
|
8072
8233
|
}) {
|
|
8073
8234
|
const inSession = isConnected || isStarting || isPaused || isPausing;
|
|
8074
8235
|
const effectiveTab = showAgenda ? activeTab : "chat";
|
|
8075
|
-
return /* @__PURE__ */
|
|
8236
|
+
return /* @__PURE__ */ jsxs28(Fragment4, {
|
|
8076
8237
|
children: [
|
|
8077
|
-
isConnected && /* @__PURE__ */
|
|
8078
|
-
/* @__PURE__ */
|
|
8238
|
+
isConnected && /* @__PURE__ */ jsx34(ConnectedBanner, {}),
|
|
8239
|
+
/* @__PURE__ */ jsx34("div", {
|
|
8079
8240
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
8080
|
-
children: isDisconnecting ? /* @__PURE__ */
|
|
8241
|
+
children: isDisconnecting ? /* @__PURE__ */ jsx34("div", {
|
|
8081
8242
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
8082
|
-
children: /* @__PURE__ */
|
|
8243
|
+
children: /* @__PURE__ */ jsx34(LoadingDots, {
|
|
8083
8244
|
label: "Ending session..."
|
|
8084
8245
|
})
|
|
8085
|
-
}) : inSession ? /* @__PURE__ */
|
|
8246
|
+
}) : inSession ? /* @__PURE__ */ jsx34(ConnectedBody, {
|
|
8086
8247
|
activeTab: effectiveTab,
|
|
8087
8248
|
autoFocusChat
|
|
8088
|
-
}) : /* @__PURE__ */
|
|
8249
|
+
}) : /* @__PURE__ */ jsx34(IdleHistory, {
|
|
8089
8250
|
activeTab: effectiveTab,
|
|
8090
8251
|
history: idleHistory,
|
|
8091
8252
|
onTalk,
|
|
@@ -8095,22 +8256,22 @@ function AuthenticatedContent({
|
|
|
8095
8256
|
error
|
|
8096
8257
|
})
|
|
8097
8258
|
}),
|
|
8098
|
-
!hideControls && /* @__PURE__ */
|
|
8259
|
+
!hideControls && /* @__PURE__ */ jsx34("div", {
|
|
8099
8260
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border",
|
|
8100
|
-
children: /* @__PURE__ */
|
|
8261
|
+
children: /* @__PURE__ */ jsxs28("div", {
|
|
8101
8262
|
className: "skippr:flex skippr:items-center skippr:justify-center skippr:gap-1 skippr:px-4 skippr:pt-1.5 skippr:pb-2 skippr:text-[10px] skippr:text-muted-foreground",
|
|
8102
8263
|
children: [
|
|
8103
|
-
/* @__PURE__ */
|
|
8264
|
+
/* @__PURE__ */ jsxs28("svg", {
|
|
8104
8265
|
viewBox: "21 21 109 109",
|
|
8105
8266
|
className: "skippr:size-3",
|
|
8106
8267
|
fill: "none",
|
|
8107
8268
|
"aria-hidden": "true",
|
|
8108
8269
|
children: [
|
|
8109
|
-
/* @__PURE__ */
|
|
8270
|
+
/* @__PURE__ */ jsx34("path", {
|
|
8110
8271
|
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",
|
|
8111
8272
|
fill: "currentColor"
|
|
8112
8273
|
}),
|
|
8113
|
-
/* @__PURE__ */
|
|
8274
|
+
/* @__PURE__ */ jsx34("path", {
|
|
8114
8275
|
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",
|
|
8115
8276
|
className: "skippr:fill-brand"
|
|
8116
8277
|
})
|
|
@@ -8124,17 +8285,17 @@ function AuthenticatedContent({
|
|
|
8124
8285
|
});
|
|
8125
8286
|
}
|
|
8126
8287
|
function AuthError() {
|
|
8127
|
-
return /* @__PURE__ */
|
|
8288
|
+
return /* @__PURE__ */ jsxs28("div", {
|
|
8128
8289
|
className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:items-center skippr:justify-center skippr:px-6 skippr:py-4 skippr:text-center",
|
|
8129
8290
|
children: [
|
|
8130
|
-
/* @__PURE__ */
|
|
8291
|
+
/* @__PURE__ */ jsx34(CircleAlert, {
|
|
8131
8292
|
className: "skippr:mb-3 skippr:size-7 skippr:text-destructive"
|
|
8132
8293
|
}),
|
|
8133
|
-
/* @__PURE__ */
|
|
8294
|
+
/* @__PURE__ */ jsx34("p", {
|
|
8134
8295
|
className: "skippr:text-sm skippr:font-medium skippr:text-foreground",
|
|
8135
8296
|
children: "We couldn't verify your session"
|
|
8136
8297
|
}),
|
|
8137
|
-
/* @__PURE__ */
|
|
8298
|
+
/* @__PURE__ */ jsx34("p", {
|
|
8138
8299
|
className: "skippr:mt-1 skippr:text-xs skippr:text-muted-foreground",
|
|
8139
8300
|
children: "Please contact administrator."
|
|
8140
8301
|
})
|
|
@@ -8143,7 +8304,7 @@ function AuthError() {
|
|
|
8143
8304
|
}
|
|
8144
8305
|
function ConnectedBanner() {
|
|
8145
8306
|
const remaining = useSessionRemaining();
|
|
8146
|
-
return /* @__PURE__ */
|
|
8307
|
+
return /* @__PURE__ */ jsx34(SessionWarningBanner, {
|
|
8147
8308
|
remaining
|
|
8148
8309
|
});
|
|
8149
8310
|
}
|
|
@@ -8157,43 +8318,43 @@ function IdleHistory({
|
|
|
8157
8318
|
error
|
|
8158
8319
|
}) {
|
|
8159
8320
|
if (history2.isLoading) {
|
|
8160
|
-
return /* @__PURE__ */
|
|
8321
|
+
return /* @__PURE__ */ jsx34("div", {
|
|
8161
8322
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
8162
|
-
children: /* @__PURE__ */
|
|
8323
|
+
children: /* @__PURE__ */ jsx34(LoadingDots, {
|
|
8163
8324
|
label: "Loading conversation..."
|
|
8164
8325
|
})
|
|
8165
8326
|
});
|
|
8166
8327
|
}
|
|
8167
|
-
return /* @__PURE__ */
|
|
8328
|
+
return /* @__PURE__ */ jsxs28("div", {
|
|
8168
8329
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:animate-skippr-tab-fade",
|
|
8169
8330
|
children: [
|
|
8170
|
-
activeTab === "agenda" ? /* @__PURE__ */
|
|
8331
|
+
activeTab === "agenda" ? /* @__PURE__ */ jsx34("div", {
|
|
8171
8332
|
className: "skippr:min-h-0 skippr:flex-1 skippr:overflow-y-auto",
|
|
8172
|
-
children: /* @__PURE__ */
|
|
8333
|
+
children: /* @__PURE__ */ jsx34(SessionAgenda, {
|
|
8173
8334
|
phases: history2.phases,
|
|
8174
8335
|
hasStarted: history2.phases.length > 0
|
|
8175
8336
|
})
|
|
8176
|
-
}) : /* @__PURE__ */
|
|
8337
|
+
}) : /* @__PURE__ */ jsx34(MessageList, {
|
|
8177
8338
|
messages: history2.messages,
|
|
8178
8339
|
isStreaming: false,
|
|
8179
8340
|
readOnly: true
|
|
8180
8341
|
}),
|
|
8181
|
-
(showTalk || error) && /* @__PURE__ */
|
|
8342
|
+
(showTalk || error) && /* @__PURE__ */ jsxs28("div", {
|
|
8182
8343
|
className: "skippr:shrink-0 skippr:border-t skippr:border-border skippr:p-3",
|
|
8183
8344
|
children: [
|
|
8184
|
-
showTalk && /* @__PURE__ */
|
|
8345
|
+
showTalk && /* @__PURE__ */ jsxs28("button", {
|
|
8185
8346
|
type: "button",
|
|
8186
8347
|
onClick: onTalk,
|
|
8187
8348
|
disabled: talkDisabled,
|
|
8188
8349
|
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",
|
|
8189
8350
|
children: [
|
|
8190
|
-
/* @__PURE__ */
|
|
8351
|
+
/* @__PURE__ */ jsx34(Mic, {
|
|
8191
8352
|
className: "skippr:size-4"
|
|
8192
8353
|
}),
|
|
8193
8354
|
talkLabel
|
|
8194
8355
|
]
|
|
8195
8356
|
}),
|
|
8196
|
-
error && /* @__PURE__ */
|
|
8357
|
+
error && /* @__PURE__ */ jsx34("p", {
|
|
8197
8358
|
role: "alert",
|
|
8198
8359
|
className: cn("skippr:text-center skippr:text-xs skippr:text-destructive", showTalk && "skippr:mt-2"),
|
|
8199
8360
|
children: error
|
|
@@ -8210,25 +8371,27 @@ function ConnectedBody({
|
|
|
8210
8371
|
const { allMessages, agentState, sendChatMessage, isSendingChat } = useCombinedMessages();
|
|
8211
8372
|
const { phases } = usePhaseUpdates();
|
|
8212
8373
|
const plan = usePlanUpdates();
|
|
8374
|
+
const linkCard = useLinkCard();
|
|
8213
8375
|
const { agentControls, isPaused } = useLiveAgent();
|
|
8214
8376
|
const { isHeld } = useSessionHoldContext();
|
|
8215
8377
|
if (activeTab === "agenda") {
|
|
8216
|
-
return /* @__PURE__ */
|
|
8378
|
+
return /* @__PURE__ */ jsx34("div", {
|
|
8217
8379
|
className: "skippr:min-h-0 skippr:flex-1 skippr:overflow-y-auto skippr:animate-skippr-tab-fade",
|
|
8218
|
-
children: /* @__PURE__ */
|
|
8380
|
+
children: /* @__PURE__ */ jsx34(SessionAgenda, {
|
|
8219
8381
|
phases,
|
|
8220
8382
|
hasStarted: allMessages.length > 0 || agentState === "speaking"
|
|
8221
8383
|
})
|
|
8222
8384
|
}, "agenda");
|
|
8223
8385
|
}
|
|
8224
|
-
return /* @__PURE__ */
|
|
8386
|
+
return /* @__PURE__ */ jsx34("div", {
|
|
8225
8387
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col skippr:animate-skippr-tab-fade",
|
|
8226
|
-
children: /* @__PURE__ */
|
|
8388
|
+
children: /* @__PURE__ */ jsx34(MessageList, {
|
|
8227
8389
|
messages: allMessages,
|
|
8228
8390
|
isStreaming: agentState === "speaking",
|
|
8229
8391
|
sendChatMessage,
|
|
8230
8392
|
isSendingChat,
|
|
8231
8393
|
plan: agentControls?.actions ? plan : null,
|
|
8394
|
+
linkCard,
|
|
8232
8395
|
autoFocus: autoFocusChat,
|
|
8233
8396
|
readOnly: isPaused || isHeld
|
|
8234
8397
|
})
|
|
@@ -8239,9 +8402,9 @@ function ConnectedBody({
|
|
|
8239
8402
|
import { useContext as useContext17 } from "react";
|
|
8240
8403
|
|
|
8241
8404
|
// src/components/Logo.tsx
|
|
8242
|
-
import { jsx as
|
|
8405
|
+
import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
8243
8406
|
function Logo({ className }) {
|
|
8244
|
-
return /* @__PURE__ */
|
|
8407
|
+
return /* @__PURE__ */ jsxs29("svg", {
|
|
8245
8408
|
width: "1em",
|
|
8246
8409
|
height: "1em",
|
|
8247
8410
|
viewBox: "0 0 200 200",
|
|
@@ -8251,20 +8414,20 @@ function Logo({ className }) {
|
|
|
8251
8414
|
"aria-label": "Skippr",
|
|
8252
8415
|
className,
|
|
8253
8416
|
children: [
|
|
8254
|
-
/* @__PURE__ */
|
|
8417
|
+
/* @__PURE__ */ jsx35("rect", {
|
|
8255
8418
|
width: "200",
|
|
8256
8419
|
height: "200",
|
|
8257
8420
|
rx: "40",
|
|
8258
8421
|
fill: "#2D2D3F"
|
|
8259
8422
|
}),
|
|
8260
|
-
/* @__PURE__ */
|
|
8423
|
+
/* @__PURE__ */ jsxs29("g", {
|
|
8261
8424
|
transform: "translate(100 100) scale(0.8) translate(-100 -100)",
|
|
8262
8425
|
children: [
|
|
8263
|
-
/* @__PURE__ */
|
|
8426
|
+
/* @__PURE__ */ jsx35("path", {
|
|
8264
8427
|
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",
|
|
8265
8428
|
fill: "white"
|
|
8266
8429
|
}),
|
|
8267
|
-
/* @__PURE__ */
|
|
8430
|
+
/* @__PURE__ */ jsx35("path", {
|
|
8268
8431
|
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",
|
|
8269
8432
|
className: "skippr:fill-brand"
|
|
8270
8433
|
})
|
|
@@ -8275,7 +8438,7 @@ function Logo({ className }) {
|
|
|
8275
8438
|
}
|
|
8276
8439
|
|
|
8277
8440
|
// src/components/SidebarTrigger.tsx
|
|
8278
|
-
import { jsx as
|
|
8441
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
8279
8442
|
function SidebarTrigger() {
|
|
8280
8443
|
const {
|
|
8281
8444
|
isPanelOpen,
|
|
@@ -8295,27 +8458,27 @@ function SidebarTrigger() {
|
|
|
8295
8458
|
if (isMinimized || isConnected || isStarting || isPausing)
|
|
8296
8459
|
return null;
|
|
8297
8460
|
const handleClick = isPanelOpen && minimizable ? minimizePanel : togglePanel;
|
|
8298
|
-
return /* @__PURE__ */
|
|
8461
|
+
return /* @__PURE__ */ jsx36("button", {
|
|
8299
8462
|
type: "button",
|
|
8300
8463
|
onClick: handleClick,
|
|
8301
8464
|
title: isPanelOpen ? "Close chat" : "Open chat",
|
|
8302
8465
|
"aria-label": isPanelOpen ? "Close chat" : "Open chat",
|
|
8303
8466
|
style: { bottom: triggerBottomPx(launcherBottomPx, popsDown) },
|
|
8304
8467
|
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"),
|
|
8305
|
-
children: isPanelOpen ? /* @__PURE__ */
|
|
8468
|
+
children: isPanelOpen ? /* @__PURE__ */ jsx36(ChevronDown, {
|
|
8306
8469
|
className: "skippr:size-5"
|
|
8307
|
-
}) : logoUrl ? /* @__PURE__ */
|
|
8470
|
+
}) : logoUrl ? /* @__PURE__ */ jsx36("img", {
|
|
8308
8471
|
src: logoUrl,
|
|
8309
8472
|
alt: "",
|
|
8310
8473
|
className: "skippr:size-12 skippr:object-cover"
|
|
8311
|
-
}) : /* @__PURE__ */
|
|
8474
|
+
}) : /* @__PURE__ */ jsx36(Logo, {
|
|
8312
8475
|
className: "skippr:size-12"
|
|
8313
8476
|
})
|
|
8314
8477
|
});
|
|
8315
8478
|
}
|
|
8316
8479
|
|
|
8317
8480
|
// src/components/VoiceBar.tsx
|
|
8318
|
-
import { useCallback as
|
|
8481
|
+
import { useCallback as useCallback29, useContext as useContext22, useState as useState36 } from "react";
|
|
8319
8482
|
|
|
8320
8483
|
// src/hooks/useBarNotifications.ts
|
|
8321
8484
|
import { useContext as useContext19 } from "react";
|
|
@@ -8388,14 +8551,14 @@ function useBarNotifications() {
|
|
|
8388
8551
|
|
|
8389
8552
|
// src/components/VoiceBarFrame.tsx
|
|
8390
8553
|
import { useIsSpeaking, useLocalParticipant as useLocalParticipant12 } from "@livekit/components-react/hooks";
|
|
8391
|
-
import { useCallback as
|
|
8554
|
+
import { useCallback as useCallback27, useContext as useContext21, useEffect as useEffect44, useRef as useRef38, useState as useState33 } from "react";
|
|
8392
8555
|
|
|
8393
8556
|
// src/hooks/useKeyboardStop.ts
|
|
8394
|
-
import { useEffect as
|
|
8557
|
+
import { useEffect as useEffect36, useRef as useRef32 } from "react";
|
|
8395
8558
|
function useKeyboardStop({ enabled, onStop }) {
|
|
8396
|
-
const handler =
|
|
8559
|
+
const handler = useRef32(onStop);
|
|
8397
8560
|
handler.current = onStop;
|
|
8398
|
-
|
|
8561
|
+
useEffect36(() => {
|
|
8399
8562
|
if (!enabled)
|
|
8400
8563
|
return;
|
|
8401
8564
|
const onKeyDown = (event) => {
|
|
@@ -8412,18 +8575,18 @@ function useKeyboardStop({ enabled, onStop }) {
|
|
|
8412
8575
|
}
|
|
8413
8576
|
|
|
8414
8577
|
// src/hooks/useSessionTimer.ts
|
|
8415
|
-
import { useEffect as
|
|
8578
|
+
import { useEffect as useEffect38, useState as useState28 } from "react";
|
|
8416
8579
|
|
|
8417
8580
|
// src/hooks/useElapsedSeconds.ts
|
|
8418
|
-
import { useEffect as
|
|
8581
|
+
import { useEffect as useEffect37, useRef as useRef33, useState as useState27 } from "react";
|
|
8419
8582
|
function useElapsedSeconds(isRunning, resetSignal) {
|
|
8420
|
-
const [elapsed, setElapsed] =
|
|
8421
|
-
const accumulatedSecondsRef =
|
|
8422
|
-
|
|
8583
|
+
const [elapsed, setElapsed] = useState27(0);
|
|
8584
|
+
const accumulatedSecondsRef = useRef33(0);
|
|
8585
|
+
useEffect37(() => {
|
|
8423
8586
|
accumulatedSecondsRef.current = 0;
|
|
8424
8587
|
setElapsed(0);
|
|
8425
8588
|
}, [resetSignal]);
|
|
8426
|
-
|
|
8589
|
+
useEffect37(() => {
|
|
8427
8590
|
if (!isRunning)
|
|
8428
8591
|
return;
|
|
8429
8592
|
const resumedAt = Date.now();
|
|
@@ -8448,8 +8611,8 @@ function useSessionTimer(isRunning, resetSignal) {
|
|
|
8448
8611
|
const active = isRunning && remaining !== null;
|
|
8449
8612
|
const warning = active && remaining !== null && remaining <= SESSION_TIMER_WARNING_S;
|
|
8450
8613
|
const revealCycle = !active ? null : warning ? "warning" : "normal";
|
|
8451
|
-
const [revealed, setRevealed] =
|
|
8452
|
-
|
|
8614
|
+
const [revealed, setRevealed] = useState28(false);
|
|
8615
|
+
useEffect38(() => {
|
|
8453
8616
|
if (!revealCycle) {
|
|
8454
8617
|
setRevealed(false);
|
|
8455
8618
|
return;
|
|
@@ -8477,18 +8640,18 @@ function useSessionTimer(isRunning, resetSignal) {
|
|
|
8477
8640
|
}
|
|
8478
8641
|
|
|
8479
8642
|
// src/hooks/useVoiceBarDrag.ts
|
|
8480
|
-
import { useEffect as
|
|
8643
|
+
import { useEffect as useEffect39, useRef as useRef34 } from "react";
|
|
8481
8644
|
import { flushSync as flushSync2 } from "react-dom";
|
|
8482
8645
|
var DRAG_THRESHOLD_PX2 = 5;
|
|
8483
8646
|
function useVoiceBarDrag(containerRef, onDrop, followRefs, reportDragging) {
|
|
8484
|
-
const wasDraggedRef =
|
|
8485
|
-
const onDropRef =
|
|
8647
|
+
const wasDraggedRef = useRef34(false);
|
|
8648
|
+
const onDropRef = useRef34(onDrop);
|
|
8486
8649
|
onDropRef.current = onDrop;
|
|
8487
|
-
const followTargetsRef =
|
|
8650
|
+
const followTargetsRef = useRef34(followRefs);
|
|
8488
8651
|
followTargetsRef.current = followRefs;
|
|
8489
|
-
const reportDraggingRef =
|
|
8652
|
+
const reportDraggingRef = useRef34(reportDragging);
|
|
8490
8653
|
reportDraggingRef.current = reportDragging;
|
|
8491
|
-
|
|
8654
|
+
useEffect39(() => {
|
|
8492
8655
|
const el = containerRef.current;
|
|
8493
8656
|
if (!el)
|
|
8494
8657
|
return;
|
|
@@ -8640,8 +8803,8 @@ function useVoiceBarDrag(containerRef, onDrop, followRefs, reportDragging) {
|
|
|
8640
8803
|
}
|
|
8641
8804
|
|
|
8642
8805
|
// src/components/VoiceBarChatLine.tsx
|
|
8643
|
-
import { useCallback as
|
|
8644
|
-
import { jsx as
|
|
8806
|
+
import { useCallback as useCallback25, useContext as useContext20, useEffect as useEffect40, useRef as useRef35, useState as useState29 } from "react";
|
|
8807
|
+
import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
8645
8808
|
var IDLE_HIDE_MS = 6000;
|
|
8646
8809
|
function VoiceBarChatLine({
|
|
8647
8810
|
dock,
|
|
@@ -8652,19 +8815,19 @@ function VoiceBarChatLine({
|
|
|
8652
8815
|
const { sendChatMessage, isSendingChat } = useChatMessages();
|
|
8653
8816
|
const ctx = useContext20(LiveAgentContext);
|
|
8654
8817
|
const reportChatActivity = ctx?.reportChatActivity;
|
|
8655
|
-
const [localDraft, setLocalDraft] =
|
|
8818
|
+
const [localDraft, setLocalDraft] = useState29("");
|
|
8656
8819
|
const text = ctx?.chatDraft ?? localDraft;
|
|
8657
8820
|
const setText = ctx?.setChatDraft ?? setLocalDraft;
|
|
8658
|
-
const inputRef =
|
|
8659
|
-
const idleTimerRef =
|
|
8660
|
-
const onCloseRef =
|
|
8821
|
+
const inputRef = useRef35(null);
|
|
8822
|
+
const idleTimerRef = useRef35(null);
|
|
8823
|
+
const onCloseRef = useRef35(onClose);
|
|
8661
8824
|
onCloseRef.current = onClose;
|
|
8662
|
-
const armIdle =
|
|
8825
|
+
const armIdle = useCallback25(() => {
|
|
8663
8826
|
if (idleTimerRef.current)
|
|
8664
8827
|
clearTimeout(idleTimerRef.current);
|
|
8665
8828
|
idleTimerRef.current = setTimeout(() => onCloseRef.current(), IDLE_HIDE_MS);
|
|
8666
8829
|
}, []);
|
|
8667
|
-
|
|
8830
|
+
useEffect40(() => {
|
|
8668
8831
|
inputRef.current?.focus();
|
|
8669
8832
|
armIdle();
|
|
8670
8833
|
return () => {
|
|
@@ -8690,12 +8853,12 @@ function VoiceBarChatLine({
|
|
|
8690
8853
|
width: 255,
|
|
8691
8854
|
...dock.edge === "top" ? { top: "calc(100% + 12px)" } : { bottom: "calc(100% + 12px)" }
|
|
8692
8855
|
};
|
|
8693
|
-
return /* @__PURE__ */
|
|
8856
|
+
return /* @__PURE__ */ jsxs30("div", {
|
|
8694
8857
|
style: embedded ? undefined : style,
|
|
8695
8858
|
onPointerDown: (event) => event.stopPropagation(),
|
|
8696
8859
|
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]"),
|
|
8697
8860
|
children: [
|
|
8698
|
-
/* @__PURE__ */
|
|
8861
|
+
/* @__PURE__ */ jsx37("input", {
|
|
8699
8862
|
ref: inputRef,
|
|
8700
8863
|
value: text,
|
|
8701
8864
|
onChange: (event) => {
|
|
@@ -8713,7 +8876,7 @@ function VoiceBarChatLine({
|
|
|
8713
8876
|
"aria-label": "Message",
|
|
8714
8877
|
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]"
|
|
8715
8878
|
}),
|
|
8716
|
-
/* @__PURE__ */
|
|
8879
|
+
/* @__PURE__ */ jsx37("button", {
|
|
8717
8880
|
type: "button",
|
|
8718
8881
|
onClick: submit,
|
|
8719
8882
|
disabled: !sendReady,
|
|
@@ -8723,7 +8886,7 @@ function VoiceBarChatLine({
|
|
|
8723
8886
|
},
|
|
8724
8887
|
"aria-label": "Send",
|
|
8725
8888
|
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",
|
|
8726
|
-
children: /* @__PURE__ */
|
|
8889
|
+
children: /* @__PURE__ */ jsx37(Send, {
|
|
8727
8890
|
className: "skippr:size-[15px]",
|
|
8728
8891
|
strokeWidth: 2
|
|
8729
8892
|
})
|
|
@@ -8732,18 +8895,105 @@ function VoiceBarChatLine({
|
|
|
8732
8895
|
});
|
|
8733
8896
|
}
|
|
8734
8897
|
|
|
8898
|
+
// src/components/VoiceBarLinkCard.tsx
|
|
8899
|
+
import { useCallback as useCallback26, useEffect as useEffect41, useRef as useRef36, useState as useState30 } from "react";
|
|
8900
|
+
import { jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
8901
|
+
var COPIED_RESET_MS2 = 2000;
|
|
8902
|
+
var DISMISS_AFTER_COPY_MS2 = 3000;
|
|
8903
|
+
function VoiceBarLinkCard({ card, onDismiss }) {
|
|
8904
|
+
const [copied, setCopied] = useState30(false);
|
|
8905
|
+
const dismissTimerRef = useRef36(null);
|
|
8906
|
+
useEffect41(() => {
|
|
8907
|
+
if (!copied)
|
|
8908
|
+
return;
|
|
8909
|
+
const timer = setTimeout(() => setCopied(false), COPIED_RESET_MS2);
|
|
8910
|
+
return () => clearTimeout(timer);
|
|
8911
|
+
}, [copied]);
|
|
8912
|
+
useEffect41(() => {
|
|
8913
|
+
return () => {
|
|
8914
|
+
if (dismissTimerRef.current)
|
|
8915
|
+
clearTimeout(dismissTimerRef.current);
|
|
8916
|
+
};
|
|
8917
|
+
}, []);
|
|
8918
|
+
const handleCopy = useCallback26(async () => {
|
|
8919
|
+
const ok = await copyToClipboard(card.url);
|
|
8920
|
+
if (!ok)
|
|
8921
|
+
return;
|
|
8922
|
+
setCopied(true);
|
|
8923
|
+
dismissTimerRef.current = setTimeout(onDismiss, DISMISS_AFTER_COPY_MS2);
|
|
8924
|
+
}, [card.url, onDismiss]);
|
|
8925
|
+
return /* @__PURE__ */ jsxs31("div", {
|
|
8926
|
+
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)]",
|
|
8927
|
+
children: [
|
|
8928
|
+
/* @__PURE__ */ jsx38("button", {
|
|
8929
|
+
type: "button",
|
|
8930
|
+
onClick: onDismiss,
|
|
8931
|
+
"aria-label": "Dismiss link",
|
|
8932
|
+
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]",
|
|
8933
|
+
children: /* @__PURE__ */ jsx38(X, {
|
|
8934
|
+
className: "skippr:size-[12px]",
|
|
8935
|
+
strokeWidth: 2.5
|
|
8936
|
+
})
|
|
8937
|
+
}),
|
|
8938
|
+
/* @__PURE__ */ jsxs31("div", {
|
|
8939
|
+
className: "skippr:px-[12px] skippr:pb-[10px] skippr:pt-[10px]",
|
|
8940
|
+
children: [
|
|
8941
|
+
/* @__PURE__ */ jsx38("p", {
|
|
8942
|
+
className: "skippr:mr-[22px] skippr:truncate skippr:text-[10px] skippr:text-[#8b877f]",
|
|
8943
|
+
children: card.url
|
|
8944
|
+
}),
|
|
8945
|
+
/* @__PURE__ */ jsxs31("div", {
|
|
8946
|
+
className: "skippr:mt-[9px] skippr:flex skippr:gap-[8px]",
|
|
8947
|
+
children: [
|
|
8948
|
+
/* @__PURE__ */ jsxs31("a", {
|
|
8949
|
+
href: card.url,
|
|
8950
|
+
target: "_blank",
|
|
8951
|
+
rel: "noopener noreferrer",
|
|
8952
|
+
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]",
|
|
8953
|
+
children: [
|
|
8954
|
+
/* @__PURE__ */ jsx38(ExternalLink, {
|
|
8955
|
+
className: "skippr:size-[11px]",
|
|
8956
|
+
strokeWidth: 2.5
|
|
8957
|
+
}),
|
|
8958
|
+
"open"
|
|
8959
|
+
]
|
|
8960
|
+
}),
|
|
8961
|
+
/* @__PURE__ */ jsxs31("button", {
|
|
8962
|
+
type: "button",
|
|
8963
|
+
onClick: handleCopy,
|
|
8964
|
+
"aria-label": "Copy link",
|
|
8965
|
+
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]",
|
|
8966
|
+
children: [
|
|
8967
|
+
copied ? /* @__PURE__ */ jsx38(Check, {
|
|
8968
|
+
className: "skippr:size-[11px]",
|
|
8969
|
+
strokeWidth: 3
|
|
8970
|
+
}) : /* @__PURE__ */ jsx38(Copy, {
|
|
8971
|
+
className: "skippr:size-[11px]",
|
|
8972
|
+
strokeWidth: 2.5
|
|
8973
|
+
}),
|
|
8974
|
+
copied ? "copied" : "copy"
|
|
8975
|
+
]
|
|
8976
|
+
})
|
|
8977
|
+
]
|
|
8978
|
+
})
|
|
8979
|
+
]
|
|
8980
|
+
})
|
|
8981
|
+
]
|
|
8982
|
+
});
|
|
8983
|
+
}
|
|
8984
|
+
|
|
8735
8985
|
// src/components/VoiceBarNotification.tsx
|
|
8736
|
-
import { useEffect as
|
|
8737
|
-
import { jsx as
|
|
8986
|
+
import { useEffect as useEffect42, useRef as useRef37, useState as useState31 } from "react";
|
|
8987
|
+
import { jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
8738
8988
|
function VoiceBarNotification({
|
|
8739
8989
|
notifications,
|
|
8740
8990
|
dock,
|
|
8741
8991
|
onDismiss
|
|
8742
8992
|
}) {
|
|
8743
|
-
const [index2, setIndex] =
|
|
8744
|
-
const [paused, setPaused] =
|
|
8745
|
-
const cardRef =
|
|
8746
|
-
|
|
8993
|
+
const [index2, setIndex] = useState31(0);
|
|
8994
|
+
const [paused, setPaused] = useState31(false);
|
|
8995
|
+
const cardRef = useRef37(null);
|
|
8996
|
+
useEffect42(() => {
|
|
8747
8997
|
const el = cardRef.current;
|
|
8748
8998
|
if (!el)
|
|
8749
8999
|
return;
|
|
@@ -8756,7 +9006,7 @@ function VoiceBarNotification({
|
|
|
8756
9006
|
el.removeEventListener("mouseleave", leave);
|
|
8757
9007
|
};
|
|
8758
9008
|
}, []);
|
|
8759
|
-
|
|
9009
|
+
useEffect42(() => {
|
|
8760
9010
|
if (paused)
|
|
8761
9011
|
return;
|
|
8762
9012
|
const rotate = setInterval(() => setIndex((current) => (current + 1) % notifications.length), TIP_ROTATE_MS);
|
|
@@ -8790,21 +9040,21 @@ function VoiceBarNotification({
|
|
|
8790
9040
|
zIndex: 6,
|
|
8791
9041
|
...dock.edge === "left" ? { left: "calc(100% + 10px)" } : { right: "calc(100% + 10px)" }
|
|
8792
9042
|
};
|
|
8793
|
-
return /* @__PURE__ */
|
|
9043
|
+
return /* @__PURE__ */ jsx39("div", {
|
|
8794
9044
|
style: wrapperStyle,
|
|
8795
9045
|
"data-skippr-no-drag": "",
|
|
8796
|
-
children: /* @__PURE__ */
|
|
9046
|
+
children: /* @__PURE__ */ jsxs32("div", {
|
|
8797
9047
|
ref: cardRef,
|
|
8798
9048
|
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)]",
|
|
8799
9049
|
children: [
|
|
8800
|
-
/* @__PURE__ */
|
|
9050
|
+
/* @__PURE__ */ jsx39("span", {
|
|
8801
9051
|
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]",
|
|
8802
|
-
children: /* @__PURE__ */
|
|
9052
|
+
children: /* @__PURE__ */ jsx39("span", {
|
|
8803
9053
|
className: "skippr:line-clamp-2",
|
|
8804
9054
|
children: notification.message
|
|
8805
9055
|
})
|
|
8806
9056
|
}),
|
|
8807
|
-
/* @__PURE__ */
|
|
9057
|
+
/* @__PURE__ */ jsx39("button", {
|
|
8808
9058
|
type: "button",
|
|
8809
9059
|
onClick: () => {
|
|
8810
9060
|
notification.activate();
|
|
@@ -8813,7 +9063,7 @@ function VoiceBarNotification({
|
|
|
8813
9063
|
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]",
|
|
8814
9064
|
children: "start"
|
|
8815
9065
|
}),
|
|
8816
|
-
hasMultiple && /* @__PURE__ */
|
|
9066
|
+
hasMultiple && /* @__PURE__ */ jsxs32("button", {
|
|
8817
9067
|
type: "button",
|
|
8818
9068
|
onClick: () => setIndex((current) => (current + 1) % notifications.length),
|
|
8819
9069
|
"aria-label": "Next",
|
|
@@ -8823,7 +9073,7 @@ function VoiceBarNotification({
|
|
|
8823
9073
|
safeIndex + 1,
|
|
8824
9074
|
"/",
|
|
8825
9075
|
notifications.length,
|
|
8826
|
-
/* @__PURE__ */
|
|
9076
|
+
/* @__PURE__ */ jsx39(ChevronRight, {
|
|
8827
9077
|
className: "skippr:size-[11px]",
|
|
8828
9078
|
strokeWidth: 2.5
|
|
8829
9079
|
})
|
|
@@ -8835,14 +9085,14 @@ function VoiceBarNotification({
|
|
|
8835
9085
|
}
|
|
8836
9086
|
|
|
8837
9087
|
// src/components/VoiceBarPlanCard.tsx
|
|
8838
|
-
import { useEffect as
|
|
8839
|
-
import { jsx as
|
|
9088
|
+
import { useEffect as useEffect43, useState as useState32 } from "react";
|
|
9089
|
+
import { jsx as jsx40, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
8840
9090
|
var APPROVING_RESET_MS2 = 8000;
|
|
8841
9091
|
function StepIndicator({ step }) {
|
|
8842
9092
|
if (step.status === "done") {
|
|
8843
|
-
return /* @__PURE__ */
|
|
9093
|
+
return /* @__PURE__ */ jsx40("span", {
|
|
8844
9094
|
className: "skippr:flex skippr:size-[16px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-brand",
|
|
8845
|
-
children: /* @__PURE__ */
|
|
9095
|
+
children: /* @__PURE__ */ jsx40(Check, {
|
|
8846
9096
|
className: "skippr:size-[10px]",
|
|
8847
9097
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
8848
9098
|
strokeWidth: 3
|
|
@@ -8850,15 +9100,15 @@ function StepIndicator({ step }) {
|
|
|
8850
9100
|
});
|
|
8851
9101
|
}
|
|
8852
9102
|
if (step.status === "failed") {
|
|
8853
|
-
return /* @__PURE__ */
|
|
9103
|
+
return /* @__PURE__ */ jsx40("span", {
|
|
8854
9104
|
className: "skippr:flex skippr:size-[16px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-[#dc2626]",
|
|
8855
|
-
children: /* @__PURE__ */
|
|
9105
|
+
children: /* @__PURE__ */ jsx40(X, {
|
|
8856
9106
|
className: "skippr:size-[10px] skippr:text-white",
|
|
8857
9107
|
strokeWidth: 3
|
|
8858
9108
|
})
|
|
8859
9109
|
});
|
|
8860
9110
|
}
|
|
8861
|
-
return /* @__PURE__ */
|
|
9111
|
+
return /* @__PURE__ */ jsx40("span", {
|
|
8862
9112
|
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)]"),
|
|
8863
9113
|
children: step.index + 1
|
|
8864
9114
|
});
|
|
@@ -8870,8 +9120,8 @@ function VoiceBarPlanCard({
|
|
|
8870
9120
|
embedded = false
|
|
8871
9121
|
}) {
|
|
8872
9122
|
const awaitingApproval = plan.state === "proposed";
|
|
8873
|
-
const [isApproving, setIsApproving] =
|
|
8874
|
-
const [lastPlanId, setLastPlanId] =
|
|
9123
|
+
const [isApproving, setIsApproving] = useState32(false);
|
|
9124
|
+
const [lastPlanId, setLastPlanId] = useState32(plan.planId);
|
|
8875
9125
|
if (plan.planId !== lastPlanId) {
|
|
8876
9126
|
setLastPlanId(plan.planId);
|
|
8877
9127
|
setIsApproving(false);
|
|
@@ -8886,87 +9136,87 @@ function VoiceBarPlanCard({
|
|
|
8886
9136
|
const cancel = () => {
|
|
8887
9137
|
sendChatMessage(CANCEL_MESSAGE).catch((e) => console.warn("[Skippr] plan reply failed", e));
|
|
8888
9138
|
};
|
|
8889
|
-
|
|
9139
|
+
useEffect43(() => {
|
|
8890
9140
|
if (!isApproving)
|
|
8891
9141
|
return;
|
|
8892
9142
|
const timer = setTimeout(() => setIsApproving(false), APPROVING_RESET_MS2);
|
|
8893
9143
|
return () => clearTimeout(timer);
|
|
8894
9144
|
}, [isApproving]);
|
|
8895
|
-
|
|
9145
|
+
useEffect43(() => {
|
|
8896
9146
|
if (plan.state !== "completed")
|
|
8897
9147
|
return;
|
|
8898
9148
|
const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
|
|
8899
9149
|
return () => clearTimeout(timer);
|
|
8900
9150
|
}, [plan.state, onDismiss]);
|
|
8901
|
-
return /* @__PURE__ */
|
|
9151
|
+
return /* @__PURE__ */ jsxs33("div", {
|
|
8902
9152
|
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)]"),
|
|
8903
9153
|
children: [
|
|
8904
|
-
/* @__PURE__ */
|
|
9154
|
+
/* @__PURE__ */ jsxs33("div", {
|
|
8905
9155
|
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]",
|
|
8906
9156
|
children: [
|
|
8907
|
-
/* @__PURE__ */
|
|
9157
|
+
/* @__PURE__ */ jsx40("span", {
|
|
8908
9158
|
className: "skippr:text-[11px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#2D2D3F]",
|
|
8909
9159
|
children: "Plan"
|
|
8910
9160
|
}),
|
|
8911
|
-
/* @__PURE__ */
|
|
9161
|
+
/* @__PURE__ */ jsx40("button", {
|
|
8912
9162
|
type: "button",
|
|
8913
9163
|
onClick: onDismiss,
|
|
8914
9164
|
"aria-label": "Dismiss plan",
|
|
8915
9165
|
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]",
|
|
8916
|
-
children: /* @__PURE__ */
|
|
9166
|
+
children: /* @__PURE__ */ jsx40(X, {
|
|
8917
9167
|
className: "skippr:size-[12px]",
|
|
8918
9168
|
strokeWidth: 2.5
|
|
8919
9169
|
})
|
|
8920
9170
|
})
|
|
8921
9171
|
]
|
|
8922
9172
|
}),
|
|
8923
|
-
/* @__PURE__ */
|
|
9173
|
+
/* @__PURE__ */ jsxs33("div", {
|
|
8924
9174
|
className: "skippr:px-[12px] skippr:pb-[10px] skippr:pt-[8px]",
|
|
8925
9175
|
children: [
|
|
8926
|
-
/* @__PURE__ */
|
|
9176
|
+
/* @__PURE__ */ jsx40("p", {
|
|
8927
9177
|
className: "skippr:text-[11.5px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#2D2D3F]",
|
|
8928
9178
|
children: "Here's my plan"
|
|
8929
9179
|
}),
|
|
8930
|
-
awaitingApproval && /* @__PURE__ */
|
|
9180
|
+
awaitingApproval && /* @__PURE__ */ jsxs33("p", {
|
|
8931
9181
|
className: "skippr:mt-[1px] skippr:text-[10px] skippr:text-[#8b877f]",
|
|
8932
9182
|
children: [
|
|
8933
9183
|
plan.steps.length,
|
|
8934
9184
|
" steps · review and approve to run"
|
|
8935
9185
|
]
|
|
8936
9186
|
}),
|
|
8937
|
-
/* @__PURE__ */
|
|
9187
|
+
/* @__PURE__ */ jsx40("div", {
|
|
8938
9188
|
className: "skippr:mt-[8px] skippr:max-h-[132px] skippr:space-y-[6px] skippr:overflow-y-auto skippr:overscroll-contain",
|
|
8939
|
-
children: plan.steps.map((step) => /* @__PURE__ */
|
|
9189
|
+
children: plan.steps.map((step) => /* @__PURE__ */ jsxs33("div", {
|
|
8940
9190
|
className: "skippr:flex skippr:items-center skippr:gap-[7px]",
|
|
8941
9191
|
children: [
|
|
8942
|
-
/* @__PURE__ */
|
|
9192
|
+
/* @__PURE__ */ jsx40(StepIndicator, {
|
|
8943
9193
|
step
|
|
8944
9194
|
}),
|
|
8945
|
-
/* @__PURE__ */
|
|
9195
|
+
/* @__PURE__ */ jsx40("p", {
|
|
8946
9196
|
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]"),
|
|
8947
9197
|
children: step.label
|
|
8948
9198
|
})
|
|
8949
9199
|
]
|
|
8950
9200
|
}, step.index))
|
|
8951
9201
|
}),
|
|
8952
|
-
/* @__PURE__ */
|
|
9202
|
+
/* @__PURE__ */ jsx40("div", {
|
|
8953
9203
|
className: "skippr:mt-[9px]",
|
|
8954
|
-
children: awaitingApproval ? /* @__PURE__ */
|
|
9204
|
+
children: awaitingApproval ? /* @__PURE__ */ jsxs33("div", {
|
|
8955
9205
|
className: "skippr:flex skippr:gap-[8px]",
|
|
8956
9206
|
children: [
|
|
8957
|
-
/* @__PURE__ */
|
|
9207
|
+
/* @__PURE__ */ jsxs33("button", {
|
|
8958
9208
|
type: "button",
|
|
8959
9209
|
disabled: isApproving,
|
|
8960
9210
|
onClick: approve,
|
|
8961
9211
|
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]",
|
|
8962
9212
|
children: [
|
|
8963
|
-
isApproving && /* @__PURE__ */
|
|
9213
|
+
isApproving && /* @__PURE__ */ jsx40("span", {
|
|
8964
9214
|
className: "skippr:size-[10px] skippr:shrink-0 skippr:animate-spin skippr:rounded-full skippr:border-2 skippr:border-white/30 skippr:border-t-white"
|
|
8965
9215
|
}),
|
|
8966
9216
|
isApproving ? "approving…" : "approve plan"
|
|
8967
9217
|
]
|
|
8968
9218
|
}),
|
|
8969
|
-
/* @__PURE__ */
|
|
9219
|
+
/* @__PURE__ */ jsx40("button", {
|
|
8970
9220
|
type: "button",
|
|
8971
9221
|
disabled: isApproving,
|
|
8972
9222
|
onClick: cancel,
|
|
@@ -8974,11 +9224,11 @@ function VoiceBarPlanCard({
|
|
|
8974
9224
|
children: "cancel"
|
|
8975
9225
|
})
|
|
8976
9226
|
]
|
|
8977
|
-
}) : /* @__PURE__ */
|
|
9227
|
+
}) : /* @__PURE__ */ jsxs33("span", {
|
|
8978
9228
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
8979
9229
|
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",
|
|
8980
9230
|
children: [
|
|
8981
|
-
/* @__PURE__ */
|
|
9231
|
+
/* @__PURE__ */ jsx40(Check, {
|
|
8982
9232
|
className: "skippr:size-[11px]",
|
|
8983
9233
|
strokeWidth: 3
|
|
8984
9234
|
}),
|
|
@@ -8993,7 +9243,7 @@ function VoiceBarPlanCard({
|
|
|
8993
9243
|
}
|
|
8994
9244
|
|
|
8995
9245
|
// src/components/VoiceBarFrame.tsx
|
|
8996
|
-
import { jsx as
|
|
9246
|
+
import { jsx as jsx41, jsxs as jsxs34, Fragment as Fragment5 } from "react/jsx-runtime";
|
|
8997
9247
|
var AUTO_OFF_MOTES = [
|
|
8998
9248
|
{ left: "13%", delay: "0s", size: 4 },
|
|
8999
9249
|
{ left: "27%", delay: "0.4s", size: 3 },
|
|
@@ -9006,19 +9256,19 @@ var AUTO_OFF_MOTES = [
|
|
|
9006
9256
|
var EDGE_BUTTON = "skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-transparent skippr:text-[#b8b4ac] skippr:cursor-pointer skippr:transition-colors skippr:hover:bg-[#f2f0eb] skippr:hover:text-[#2D2D3F]";
|
|
9007
9257
|
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";
|
|
9008
9258
|
function LoadingAvatar({ logoUrl }) {
|
|
9009
|
-
return /* @__PURE__ */
|
|
9259
|
+
return /* @__PURE__ */ jsxs34("span", {
|
|
9010
9260
|
className: "skippr:relative skippr:size-[22px] skippr:shrink-0",
|
|
9011
9261
|
children: [
|
|
9012
|
-
/* @__PURE__ */
|
|
9262
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9013
9263
|
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"
|
|
9014
9264
|
}),
|
|
9015
|
-
/* @__PURE__ */
|
|
9265
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9016
9266
|
className: "skippr:absolute skippr:inset-0 skippr:overflow-hidden skippr:rounded-full",
|
|
9017
|
-
children: logoUrl ? /* @__PURE__ */
|
|
9267
|
+
children: logoUrl ? /* @__PURE__ */ jsx41("img", {
|
|
9018
9268
|
src: logoUrl,
|
|
9019
9269
|
alt: "",
|
|
9020
9270
|
className: "skippr:block skippr:size-full skippr:object-cover"
|
|
9021
|
-
}) : /* @__PURE__ */
|
|
9271
|
+
}) : /* @__PURE__ */ jsx41("span", {
|
|
9022
9272
|
className: "skippr:block skippr:size-full skippr:bg-launcher"
|
|
9023
9273
|
})
|
|
9024
9274
|
})
|
|
@@ -9026,21 +9276,21 @@ function LoadingAvatar({ logoUrl }) {
|
|
|
9026
9276
|
});
|
|
9027
9277
|
}
|
|
9028
9278
|
function BusyRing({ tone }) {
|
|
9029
|
-
return /* @__PURE__ */
|
|
9279
|
+
return /* @__PURE__ */ jsx41("span", {
|
|
9030
9280
|
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")
|
|
9031
9281
|
});
|
|
9032
9282
|
}
|
|
9033
9283
|
function AgentDots() {
|
|
9034
|
-
return /* @__PURE__ */
|
|
9284
|
+
return /* @__PURE__ */ jsxs34("span", {
|
|
9035
9285
|
className: "skippr:flex skippr:items-center skippr:gap-[4px]",
|
|
9036
9286
|
children: [
|
|
9037
|
-
/* @__PURE__ */
|
|
9287
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9038
9288
|
className: "skippr:size-[4px] skippr:rounded-full skippr:bg-current skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
9039
9289
|
}),
|
|
9040
|
-
/* @__PURE__ */
|
|
9290
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9041
9291
|
className: "skippr:size-[4px] skippr:rounded-full skippr:bg-current skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.18s_infinite]"
|
|
9042
9292
|
}),
|
|
9043
|
-
/* @__PURE__ */
|
|
9293
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9044
9294
|
className: "skippr:size-[4px] skippr:rounded-full skippr:bg-current skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.36s_infinite]"
|
|
9045
9295
|
})
|
|
9046
9296
|
]
|
|
@@ -9048,9 +9298,9 @@ function AgentDots() {
|
|
|
9048
9298
|
}
|
|
9049
9299
|
function SpeakingBars() {
|
|
9050
9300
|
const { barRefs } = useMicLevel(true);
|
|
9051
|
-
return /* @__PURE__ */
|
|
9301
|
+
return /* @__PURE__ */ jsx41("span", {
|
|
9052
9302
|
className: "skippr:flex skippr:h-[22px] skippr:items-center skippr:gap-[3px]",
|
|
9053
|
-
children: Array.from({ length: MIC_BARS }).map((_, index2) => /* @__PURE__ */
|
|
9303
|
+
children: Array.from({ length: MIC_BARS }).map((_, index2) => /* @__PURE__ */ jsx41("span", {
|
|
9054
9304
|
ref: (el) => {
|
|
9055
9305
|
barRefs.current[index2] = el;
|
|
9056
9306
|
},
|
|
@@ -9070,7 +9320,7 @@ function MicLevelHalo({ enabled }) {
|
|
|
9070
9320
|
maxGrowthPx: MIC_HALO_GROWTH_PX,
|
|
9071
9321
|
noiseGate: MIC_HALO_NOISE_GATE
|
|
9072
9322
|
});
|
|
9073
|
-
return /* @__PURE__ */
|
|
9323
|
+
return /* @__PURE__ */ jsx41("span", {
|
|
9074
9324
|
ref: (el) => {
|
|
9075
9325
|
barRefs.current[0] = el;
|
|
9076
9326
|
},
|
|
@@ -9079,7 +9329,7 @@ function MicLevelHalo({ enabled }) {
|
|
|
9079
9329
|
});
|
|
9080
9330
|
}
|
|
9081
9331
|
function ShortcutChip({ children }) {
|
|
9082
|
-
return /* @__PURE__ */
|
|
9332
|
+
return /* @__PURE__ */ jsx41("span", {
|
|
9083
9333
|
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]",
|
|
9084
9334
|
children
|
|
9085
9335
|
});
|
|
@@ -9090,9 +9340,9 @@ function ShortcutHint({
|
|
|
9090
9340
|
suppressed,
|
|
9091
9341
|
children
|
|
9092
9342
|
}) {
|
|
9093
|
-
const ref =
|
|
9094
|
-
const [visible, setVisible] =
|
|
9095
|
-
|
|
9343
|
+
const ref = useRef38(null);
|
|
9344
|
+
const [visible, setVisible] = useState33(false);
|
|
9345
|
+
useEffect44(() => {
|
|
9096
9346
|
if (!enabled)
|
|
9097
9347
|
return;
|
|
9098
9348
|
const el = ref.current;
|
|
@@ -9115,56 +9365,56 @@ function ShortcutHint({
|
|
|
9115
9365
|
el.removeEventListener("mouseleave", leave);
|
|
9116
9366
|
};
|
|
9117
9367
|
}, [enabled, seenRef]);
|
|
9118
|
-
return /* @__PURE__ */
|
|
9368
|
+
return /* @__PURE__ */ jsxs34("div", {
|
|
9119
9369
|
ref,
|
|
9120
9370
|
className: "skippr:relative skippr:flex skippr:min-w-[96px] skippr:flex-1",
|
|
9121
9371
|
children: [
|
|
9122
|
-
enabled && visible && !suppressed && /* @__PURE__ */
|
|
9372
|
+
enabled && visible && !suppressed && /* @__PURE__ */ jsxs34("div", {
|
|
9123
9373
|
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]",
|
|
9124
9374
|
children: [
|
|
9125
|
-
/* @__PURE__ */
|
|
9375
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
9126
9376
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
9127
9377
|
children: [
|
|
9128
|
-
/* @__PURE__ */
|
|
9378
|
+
/* @__PURE__ */ jsx41(ShortcutChip, {
|
|
9129
9379
|
children: "Ctrl"
|
|
9130
9380
|
}),
|
|
9131
|
-
/* @__PURE__ */
|
|
9381
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9132
9382
|
className: "skippr:text-[9px] skippr:text-[#c9c5bd]",
|
|
9133
9383
|
children: "+"
|
|
9134
9384
|
}),
|
|
9135
|
-
/* @__PURE__ */
|
|
9385
|
+
/* @__PURE__ */ jsx41(ShortcutChip, {
|
|
9136
9386
|
children: "Space"
|
|
9137
9387
|
})
|
|
9138
9388
|
]
|
|
9139
9389
|
}),
|
|
9140
|
-
/* @__PURE__ */
|
|
9390
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9141
9391
|
className: "skippr:text-[10.5px] skippr:font-medium skippr:text-[#8b877f]",
|
|
9142
9392
|
children: "talk"
|
|
9143
9393
|
}),
|
|
9144
|
-
/* @__PURE__ */
|
|
9394
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9145
9395
|
className: "skippr:text-[10px] skippr:text-[#cbc7bf]",
|
|
9146
9396
|
children: "·"
|
|
9147
9397
|
}),
|
|
9148
|
-
/* @__PURE__ */
|
|
9398
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
9149
9399
|
className: "skippr:flex skippr:items-center skippr:gap-[3px]",
|
|
9150
9400
|
children: [
|
|
9151
|
-
/* @__PURE__ */
|
|
9401
|
+
/* @__PURE__ */ jsx41(ShortcutChip, {
|
|
9152
9402
|
children: "Ctrl"
|
|
9153
9403
|
}),
|
|
9154
|
-
/* @__PURE__ */
|
|
9404
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9155
9405
|
className: "skippr:text-[9px] skippr:text-[#c9c5bd]",
|
|
9156
9406
|
children: "+"
|
|
9157
9407
|
}),
|
|
9158
|
-
/* @__PURE__ */
|
|
9408
|
+
/* @__PURE__ */ jsx41(ShortcutChip, {
|
|
9159
9409
|
children: "X"
|
|
9160
9410
|
})
|
|
9161
9411
|
]
|
|
9162
9412
|
}),
|
|
9163
|
-
/* @__PURE__ */
|
|
9413
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9164
9414
|
className: "skippr:text-[10.5px] skippr:font-medium skippr:text-[#8b877f]",
|
|
9165
9415
|
children: "stop"
|
|
9166
9416
|
}),
|
|
9167
|
-
/* @__PURE__ */
|
|
9417
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9168
9418
|
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"
|
|
9169
9419
|
})
|
|
9170
9420
|
]
|
|
@@ -9205,11 +9455,11 @@ function VoiceBarFrame({
|
|
|
9205
9455
|
captureMode,
|
|
9206
9456
|
chatActivityAt
|
|
9207
9457
|
} = ctx;
|
|
9208
|
-
const [bannerOpen, setBannerOpen] =
|
|
9458
|
+
const [bannerOpen, setBannerOpen] = useState33(false);
|
|
9209
9459
|
const hasNotifications = notifications.length > 0;
|
|
9210
9460
|
const notifAccent = notifications[0]?.accentColor;
|
|
9211
|
-
const closeBanner =
|
|
9212
|
-
const containerRef =
|
|
9461
|
+
const closeBanner = useCallback27(() => setBannerOpen(false), []);
|
|
9462
|
+
const containerRef = useRef38(null);
|
|
9213
9463
|
const dragFollowers = isPanelOpen ? [panelRef] : null;
|
|
9214
9464
|
const { wasDraggedRef } = useVoiceBarDrag(containerRef, onDrop, dragFollowers, setDragging);
|
|
9215
9465
|
const { isMuted, toggleMute } = useMediaControls();
|
|
@@ -9220,9 +9470,11 @@ function VoiceBarFrame({
|
|
|
9220
9470
|
const holdPushToTalk = usePointerHold(start, commit);
|
|
9221
9471
|
const { isHeld, countdown: holdCountdown, toggle: togglePause } = useSessionHoldContext();
|
|
9222
9472
|
const plan = usePlanUpdates();
|
|
9473
|
+
const linkCard = useLinkCard();
|
|
9223
9474
|
const { sendChatMessage } = useChatMessages();
|
|
9224
|
-
const [dismissedFloatingPlanId, setDismissedFloatingPlanId] =
|
|
9225
|
-
const [dismissedBlockPlanId, setDismissedBlockPlanId] =
|
|
9475
|
+
const [dismissedFloatingPlanId, setDismissedFloatingPlanId] = useState33(null);
|
|
9476
|
+
const [dismissedBlockPlanId, setDismissedBlockPlanId] = useState33(null);
|
|
9477
|
+
const [dismissedLinkCardId, setDismissedLinkCardId] = useState33(null);
|
|
9226
9478
|
const micMode = agentControls?.micMode;
|
|
9227
9479
|
const pushOrTap = isRequestResponseMicMode(micMode);
|
|
9228
9480
|
const isPushToTalk = micMode === MIC_MODE.PushToTalk;
|
|
@@ -9231,9 +9483,9 @@ function VoiceBarFrame({
|
|
|
9231
9483
|
const showActionControl = isConnected && captureMode === CAPTURE_MODE.Auto && actionsActive;
|
|
9232
9484
|
const chatSurface = agentControls?.chat ?? DEFAULT_CHAT_SURFACE;
|
|
9233
9485
|
const isRoomChat = chatSurface === CHAT_SURFACE.Room;
|
|
9234
|
-
const [chatLineOpen, setChatLineOpen] =
|
|
9235
|
-
const [chatLineMounted, setChatLineMounted] =
|
|
9236
|
-
const [chatLineClosing, setChatLineClosing] =
|
|
9486
|
+
const [chatLineOpen, setChatLineOpen] = useState33(false);
|
|
9487
|
+
const [chatLineMounted, setChatLineMounted] = useState33(false);
|
|
9488
|
+
const [chatLineClosing, setChatLineClosing] = useState33(false);
|
|
9237
9489
|
const chatOpen = isRoomChat ? isPanelOpen : chatLineOpen;
|
|
9238
9490
|
const lineBlockOpen = !isRoomChat && chatLineMounted;
|
|
9239
9491
|
const toggleChat = () => {
|
|
@@ -9243,7 +9495,7 @@ function VoiceBarFrame({
|
|
|
9243
9495
|
setChatLineOpen((open) => !open);
|
|
9244
9496
|
}
|
|
9245
9497
|
};
|
|
9246
|
-
|
|
9498
|
+
useEffect44(() => {
|
|
9247
9499
|
if (chatLineOpen) {
|
|
9248
9500
|
setChatLineMounted(true);
|
|
9249
9501
|
setChatLineClosing(false);
|
|
@@ -9274,7 +9526,7 @@ function VoiceBarFrame({
|
|
|
9274
9526
|
return;
|
|
9275
9527
|
action();
|
|
9276
9528
|
};
|
|
9277
|
-
const [pauseSource, setPauseSource] =
|
|
9529
|
+
const [pauseSource, setPauseSource] = useState33(null);
|
|
9278
9530
|
const closeBar = (source) => {
|
|
9279
9531
|
if (sessionLive) {
|
|
9280
9532
|
setPauseSource(source);
|
|
@@ -9284,24 +9536,24 @@ function VoiceBarFrame({
|
|
|
9284
9536
|
}
|
|
9285
9537
|
};
|
|
9286
9538
|
useKeyboardStop({ enabled: sessionLive, onStop: () => closeBar("stop") });
|
|
9287
|
-
const hintSeenRef =
|
|
9539
|
+
const hintSeenRef = useRef38(false);
|
|
9288
9540
|
const requestPillBg = isCapturingSpeech ? "var(--skippr-brand-active)" : "var(--skippr-brand, #2bc0ae)";
|
|
9289
9541
|
const agentStateLabel = state === "thinking" ? "thinking…" : state === "speaking" ? "talking…" : null;
|
|
9290
9542
|
const idleRequestLabel = isPushToTalk ? "push to talk" : "tap to talk";
|
|
9291
9543
|
const requestLabel = agentStateLabel ?? (isCapturingSpeech ? "listening…" : idleRequestLabel);
|
|
9292
9544
|
const livePillBg = agentActive && !isHeld ? "var(--skippr-brand-active)" : "var(--skippr-brand, #2bc0ae)";
|
|
9293
9545
|
const glow = isConnected && !isHeld && agentActive;
|
|
9294
|
-
const [autoOffClosing, setAutoOffClosing] =
|
|
9546
|
+
const [autoOffClosing, setAutoOffClosing] = useState33(false);
|
|
9295
9547
|
const { reportActivity } = useIdleAutoOff({
|
|
9296
9548
|
enabled: isConnected && !autoOffClosing,
|
|
9297
9549
|
active: agentActive || isCapturingSpeech || isUserSpeaking,
|
|
9298
9550
|
onExpire: () => setAutoOffClosing(true)
|
|
9299
9551
|
});
|
|
9300
|
-
|
|
9552
|
+
useEffect44(() => {
|
|
9301
9553
|
if (chatActivityAt)
|
|
9302
9554
|
reportActivity();
|
|
9303
9555
|
}, [chatActivityAt, reportActivity]);
|
|
9304
|
-
|
|
9556
|
+
useEffect44(() => {
|
|
9305
9557
|
if (!autoOffClosing)
|
|
9306
9558
|
return;
|
|
9307
9559
|
if (!isConnected) {
|
|
@@ -9317,12 +9569,12 @@ function VoiceBarFrame({
|
|
|
9317
9569
|
const floatingPlanActive = planEnabled && !isRoomChat && !lineBlockOpen && activePlan.planId !== dismissedFloatingPlanId;
|
|
9318
9570
|
const planInLineBlock = planEnabled && lineBlockOpen && activePlan.planId !== dismissedBlockPlanId;
|
|
9319
9571
|
const planCardActive = floatingPlanActive || planInLineBlock;
|
|
9320
|
-
|
|
9572
|
+
useEffect44(() => {
|
|
9321
9573
|
if (lineBlockOpen)
|
|
9322
9574
|
setDismissedBlockPlanId(null);
|
|
9323
9575
|
}, [lineBlockOpen]);
|
|
9324
|
-
const [autoOpenedPlanId, setAutoOpenedPlanId] =
|
|
9325
|
-
|
|
9576
|
+
const [autoOpenedPlanId, setAutoOpenedPlanId] = useState33(null);
|
|
9577
|
+
useEffect44(() => {
|
|
9326
9578
|
if (!isRoomChat || !planEnabled || !activePlan)
|
|
9327
9579
|
return;
|
|
9328
9580
|
if (activePlan.planId === autoOpenedPlanId)
|
|
@@ -9331,6 +9583,8 @@ function VoiceBarFrame({
|
|
|
9331
9583
|
if (!isPanelOpen)
|
|
9332
9584
|
openPanel();
|
|
9333
9585
|
}, [isRoomChat, planEnabled, activePlan, autoOpenedPlanId, isPanelOpen, openPanel]);
|
|
9586
|
+
const visibleLinkCard = linkCard && linkCard.cardId !== dismissedLinkCardId ? linkCard : null;
|
|
9587
|
+
const linkCardActive = !!visibleLinkCard && isConnected && !planCardActive && !(isRoomChat && chatOpen) && !isCapturingSpeech && !isHeld && !autoOffClosing;
|
|
9334
9588
|
const bannerActive = hasNotifications && bannerOpen;
|
|
9335
9589
|
const slotClaimed = chatOpen || bannerActive || lineBlockOpen;
|
|
9336
9590
|
const autoBase = !isStarting && isConnected && !textMode && !pushOrTap && !autoOffClosing;
|
|
@@ -9361,12 +9615,12 @@ function VoiceBarFrame({
|
|
|
9361
9615
|
...dock.edge === "top" ? { top: "calc(100% + 12px)" } : { bottom: "calc(100% + 12px)" }
|
|
9362
9616
|
};
|
|
9363
9617
|
const pillEvaporate = autoOffClosing ? "skippr:[animation:skippr-evaporate_3.2s_ease-in_forwards] skippr:motion-reduce:animate-none" : "";
|
|
9364
|
-
return /* @__PURE__ */
|
|
9618
|
+
return /* @__PURE__ */ jsxs34("div", {
|
|
9365
9619
|
ref: containerRef,
|
|
9366
9620
|
style: dockStyle(dock),
|
|
9367
9621
|
className: "skippr:fixed skippr:z-[9999] skippr:flex skippr:w-[255px] skippr:touch-none skippr:cursor-grab skippr:items-center",
|
|
9368
9622
|
children: [
|
|
9369
|
-
glow && /* @__PURE__ */
|
|
9623
|
+
glow && /* @__PURE__ */ jsx41("span", {
|
|
9370
9624
|
"aria-hidden": true,
|
|
9371
9625
|
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",
|
|
9372
9626
|
style: {
|
|
@@ -9376,13 +9630,13 @@ function VoiceBarFrame({
|
|
|
9376
9630
|
backgroundSize: "300% 100%"
|
|
9377
9631
|
}
|
|
9378
9632
|
}),
|
|
9379
|
-
/* @__PURE__ */
|
|
9633
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9380
9634
|
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)
|
|
9381
9635
|
}),
|
|
9382
|
-
autoOffClosing && /* @__PURE__ */
|
|
9636
|
+
autoOffClosing && /* @__PURE__ */ jsx41("span", {
|
|
9383
9637
|
"aria-hidden": true,
|
|
9384
9638
|
className: "skippr:pointer-events-none skippr:absolute skippr:inset-0 skippr:z-[4] skippr:overflow-visible",
|
|
9385
|
-
children: AUTO_OFF_MOTES.map((mote) => /* @__PURE__ */
|
|
9639
|
+
children: AUTO_OFF_MOTES.map((mote) => /* @__PURE__ */ jsx41("span", {
|
|
9386
9640
|
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",
|
|
9387
9641
|
style: {
|
|
9388
9642
|
left: mote.left,
|
|
@@ -9392,39 +9646,39 @@ function VoiceBarFrame({
|
|
|
9392
9646
|
}
|
|
9393
9647
|
}, mote.left))
|
|
9394
9648
|
}),
|
|
9395
|
-
showLiveStrip && /* @__PURE__ */
|
|
9649
|
+
showLiveStrip && /* @__PURE__ */ jsx41("div", {
|
|
9396
9650
|
style: stripStyle,
|
|
9397
9651
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
9398
|
-
children: /* @__PURE__ */
|
|
9652
|
+
children: /* @__PURE__ */ jsxs34("div", {
|
|
9399
9653
|
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]",
|
|
9400
9654
|
children: [
|
|
9401
|
-
/* @__PURE__ */
|
|
9655
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9402
9656
|
style: { background: livePillBg },
|
|
9403
9657
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
9404
9658
|
}),
|
|
9405
|
-
/* @__PURE__ */
|
|
9659
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9406
9660
|
className: "skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#5a5650]",
|
|
9407
9661
|
children: liveStripLabel
|
|
9408
9662
|
})
|
|
9409
9663
|
]
|
|
9410
9664
|
})
|
|
9411
9665
|
}),
|
|
9412
|
-
showHeldStrip && /* @__PURE__ */
|
|
9666
|
+
showHeldStrip && /* @__PURE__ */ jsx41("div", {
|
|
9413
9667
|
style: stripStyle,
|
|
9414
9668
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
9415
|
-
children: /* @__PURE__ */
|
|
9669
|
+
children: /* @__PURE__ */ jsxs34("div", {
|
|
9416
9670
|
role: "timer",
|
|
9417
9671
|
"aria-label": `Agent closes in ${holdCountdown} seconds`,
|
|
9418
9672
|
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]",
|
|
9419
9673
|
children: [
|
|
9420
|
-
/* @__PURE__ */
|
|
9674
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9421
9675
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full skippr:bg-[#b9b4ab]"
|
|
9422
9676
|
}),
|
|
9423
|
-
/* @__PURE__ */
|
|
9677
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
9424
9678
|
className: "skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#5a5650]",
|
|
9425
9679
|
children: [
|
|
9426
9680
|
"Agent closes in",
|
|
9427
|
-
/* @__PURE__ */
|
|
9681
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
9428
9682
|
className: "skippr:ml-1 skippr:tabular-nums",
|
|
9429
9683
|
children: [
|
|
9430
9684
|
heldMinutes,
|
|
@@ -9437,51 +9691,60 @@ function VoiceBarFrame({
|
|
|
9437
9691
|
]
|
|
9438
9692
|
})
|
|
9439
9693
|
}),
|
|
9440
|
-
showTimerStrip && sessionTimer && /* @__PURE__ */
|
|
9694
|
+
showTimerStrip && sessionTimer && /* @__PURE__ */ jsx41("div", {
|
|
9441
9695
|
style: stripStyle,
|
|
9442
9696
|
className: "skippr:pointer-events-none skippr:z-[5]",
|
|
9443
|
-
children: /* @__PURE__ */
|
|
9697
|
+
children: /* @__PURE__ */ jsxs34("div", {
|
|
9444
9698
|
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]",
|
|
9445
9699
|
children: [
|
|
9446
|
-
/* @__PURE__ */
|
|
9700
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9447
9701
|
style: { background: sessionTimer.warning ? "#f59e0b" : "#b9b4ab" },
|
|
9448
9702
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full"
|
|
9449
9703
|
}),
|
|
9450
|
-
/* @__PURE__ */
|
|
9704
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9451
9705
|
className: cn("skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em]", sessionTimer.warning ? "skippr:text-[#92400e]" : "skippr:text-[#5a5650]"),
|
|
9452
9706
|
children: sessionTimer.label
|
|
9453
9707
|
})
|
|
9454
9708
|
]
|
|
9455
9709
|
})
|
|
9456
9710
|
}),
|
|
9457
|
-
showAutoOffStrip && /* @__PURE__ */
|
|
9711
|
+
showAutoOffStrip && /* @__PURE__ */ jsx41("div", {
|
|
9458
9712
|
role: "status",
|
|
9459
9713
|
style: stripStyle,
|
|
9460
9714
|
className: "skippr:pointer-events-none skippr:z-[6]",
|
|
9461
|
-
children: /* @__PURE__ */
|
|
9715
|
+
children: /* @__PURE__ */ jsxs34("div", {
|
|
9462
9716
|
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]",
|
|
9463
9717
|
children: [
|
|
9464
|
-
/* @__PURE__ */
|
|
9718
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9465
9719
|
className: "skippr:size-[7px] skippr:shrink-0 skippr:rounded-full skippr:bg-[#b9b4ab] skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
9466
9720
|
}),
|
|
9467
|
-
/* @__PURE__ */
|
|
9721
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9468
9722
|
className: "skippr:whitespace-nowrap skippr:text-[12px] skippr:font-semibold skippr:tracking-[-0.01em] skippr:text-[#5a5650]",
|
|
9469
9723
|
children: "No activity — closing…"
|
|
9470
9724
|
})
|
|
9471
9725
|
]
|
|
9472
9726
|
})
|
|
9473
9727
|
}),
|
|
9474
|
-
floatingPlanActive && activePlan && /* @__PURE__ */
|
|
9728
|
+
floatingPlanActive && activePlan && /* @__PURE__ */ jsx41("div", {
|
|
9475
9729
|
style: planCardStyle,
|
|
9476
9730
|
className: "skippr:z-[6]",
|
|
9477
9731
|
"data-skippr-no-drag": "",
|
|
9478
|
-
children: /* @__PURE__ */
|
|
9732
|
+
children: /* @__PURE__ */ jsx41(VoiceBarPlanCard, {
|
|
9479
9733
|
plan: activePlan,
|
|
9480
9734
|
sendChatMessage,
|
|
9481
9735
|
onDismiss: () => setDismissedFloatingPlanId(activePlan.planId)
|
|
9482
9736
|
}, activePlan.planId)
|
|
9483
9737
|
}),
|
|
9484
|
-
|
|
9738
|
+
linkCardActive && visibleLinkCard && /* @__PURE__ */ jsx41("div", {
|
|
9739
|
+
style: planCardStyle,
|
|
9740
|
+
className: "skippr:z-[6]",
|
|
9741
|
+
"data-skippr-no-drag": "",
|
|
9742
|
+
children: /* @__PURE__ */ jsx41(VoiceBarLinkCard, {
|
|
9743
|
+
card: visibleLinkCard,
|
|
9744
|
+
onDismiss: () => setDismissedLinkCardId(visibleLinkCard.cardId)
|
|
9745
|
+
}, visibleLinkCard.cardId)
|
|
9746
|
+
}),
|
|
9747
|
+
hasNotifications && !bannerOpen && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */ jsx41("button", {
|
|
9485
9748
|
type: "button",
|
|
9486
9749
|
onClick: ifNotDragged(() => setBannerOpen(true)),
|
|
9487
9750
|
"aria-label": "Show notifications",
|
|
@@ -9491,61 +9754,61 @@ function VoiceBarFrame({
|
|
|
9491
9754
|
},
|
|
9492
9755
|
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"
|
|
9493
9756
|
}),
|
|
9494
|
-
bannerActive && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */
|
|
9757
|
+
bannerActive && !chatOpen && !isCapturingSpeech && !planCardActive && /* @__PURE__ */ jsx41(VoiceBarNotification, {
|
|
9495
9758
|
notifications,
|
|
9496
9759
|
dock,
|
|
9497
9760
|
onDismiss: closeBanner
|
|
9498
9761
|
}),
|
|
9499
|
-
/* @__PURE__ */
|
|
9762
|
+
/* @__PURE__ */ jsxs34("div", {
|
|
9500
9763
|
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),
|
|
9501
9764
|
children: [
|
|
9502
|
-
showClose && /* @__PURE__ */
|
|
9765
|
+
showClose && /* @__PURE__ */ jsxs34("button", {
|
|
9503
9766
|
type: "button",
|
|
9504
9767
|
onClick: ifNotDragged(() => closeBar("close")),
|
|
9505
9768
|
disabled: isPausing || isStarting,
|
|
9506
9769
|
"aria-label": sessionLive ? "End session" : "Close",
|
|
9507
9770
|
className: cn(EDGE_BUTTON, "skippr:relative skippr:size-[26px]", isStarting && "skippr:cursor-not-allowed skippr:opacity-40 skippr:hover:bg-transparent skippr:hover:text-[#b8b4ac]"),
|
|
9508
9771
|
children: [
|
|
9509
|
-
isPausing && pauseSource === "close" && /* @__PURE__ */
|
|
9772
|
+
isPausing && pauseSource === "close" && /* @__PURE__ */ jsx41(BusyRing, {
|
|
9510
9773
|
tone: "brand"
|
|
9511
9774
|
}),
|
|
9512
|
-
/* @__PURE__ */
|
|
9775
|
+
/* @__PURE__ */ jsx41(X, {
|
|
9513
9776
|
className: "skippr:size-[14px]",
|
|
9514
9777
|
strokeWidth: 2
|
|
9515
9778
|
})
|
|
9516
9779
|
]
|
|
9517
9780
|
}),
|
|
9518
|
-
isStarting && /* @__PURE__ */
|
|
9781
|
+
isStarting && /* @__PURE__ */ jsxs34("div", {
|
|
9519
9782
|
className: cn(PILL, "skippr:bg-[#F1EFEA] skippr:overflow-hidden skippr:[animation:skippr-fade-in_0.25s_ease]"),
|
|
9520
9783
|
children: [
|
|
9521
|
-
/* @__PURE__ */
|
|
9784
|
+
/* @__PURE__ */ jsx41(LoadingAvatar, {
|
|
9522
9785
|
logoUrl
|
|
9523
9786
|
}),
|
|
9524
|
-
/* @__PURE__ */
|
|
9787
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9525
9788
|
className: "skippr:whitespace-nowrap skippr:text-[12.5px] skippr:font-semibold skippr:text-[#5a5650]",
|
|
9526
9789
|
children: "Agent is loading"
|
|
9527
9790
|
}),
|
|
9528
|
-
/* @__PURE__ */
|
|
9791
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
9529
9792
|
className: "skippr:flex skippr:items-end skippr:gap-[3px]",
|
|
9530
9793
|
children: [
|
|
9531
|
-
/* @__PURE__ */
|
|
9794
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9532
9795
|
className: "skippr:size-[3px] skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-breathe_1.1s_ease-in-out_0s_infinite]"
|
|
9533
9796
|
}),
|
|
9534
|
-
/* @__PURE__ */
|
|
9797
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9535
9798
|
className: "skippr:size-[3px] skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.18s_infinite]"
|
|
9536
9799
|
}),
|
|
9537
|
-
/* @__PURE__ */
|
|
9800
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9538
9801
|
className: "skippr:size-[3px] skippr:rounded-full skippr:bg-brand skippr:[animation:skippr-breathe_1.1s_ease-in-out_0.36s_infinite]"
|
|
9539
9802
|
})
|
|
9540
9803
|
]
|
|
9541
9804
|
})
|
|
9542
9805
|
]
|
|
9543
9806
|
}),
|
|
9544
|
-
!isStarting && isConnected && !textMode && pushOrTap && /* @__PURE__ */
|
|
9807
|
+
!isStarting && isConnected && !textMode && pushOrTap && /* @__PURE__ */ jsx41(ShortcutHint, {
|
|
9545
9808
|
enabled: isPushToTalk,
|
|
9546
9809
|
seenRef: hintSeenRef,
|
|
9547
9810
|
suppressed: hintSuppressed,
|
|
9548
|
-
children: /* @__PURE__ */
|
|
9811
|
+
children: /* @__PURE__ */ jsxs34("button", {
|
|
9549
9812
|
type: "button",
|
|
9550
9813
|
"data-skippr-no-drag": "",
|
|
9551
9814
|
style: {
|
|
@@ -9564,7 +9827,7 @@ function VoiceBarFrame({
|
|
|
9564
9827
|
"aria-label": requestLabel,
|
|
9565
9828
|
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"),
|
|
9566
9829
|
children: [
|
|
9567
|
-
agentActive ? /* @__PURE__ */
|
|
9830
|
+
agentActive ? /* @__PURE__ */ jsx41(AgentDots, {}) : isCapturingSpeech ? /* @__PURE__ */ jsx41(SpeakingBars, {}) : /* @__PURE__ */ jsx41(AudioLines, {
|
|
9568
9831
|
className: "skippr:size-[17px]",
|
|
9569
9832
|
strokeWidth: 2
|
|
9570
9833
|
}),
|
|
@@ -9572,60 +9835,60 @@ function VoiceBarFrame({
|
|
|
9572
9835
|
]
|
|
9573
9836
|
})
|
|
9574
9837
|
}),
|
|
9575
|
-
!isStarting && isConnected && !textMode && !pushOrTap && /* @__PURE__ */
|
|
9838
|
+
!isStarting && isConnected && !textMode && !pushOrTap && /* @__PURE__ */ jsxs34("div", {
|
|
9576
9839
|
style: { background: livePillBg, color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
9577
9840
|
className: cn(PILL, "skippr:gap-[9px] skippr:px-[8px]"),
|
|
9578
9841
|
children: [
|
|
9579
|
-
/* @__PURE__ */
|
|
9842
|
+
/* @__PURE__ */ jsx41("button", {
|
|
9580
9843
|
type: "button",
|
|
9581
9844
|
onClick: ifNotDragged(togglePause),
|
|
9582
9845
|
"aria-label": isHeld ? "Resume" : "Pause",
|
|
9583
9846
|
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:bg-white/20",
|
|
9584
|
-
children: isHeld ? /* @__PURE__ */
|
|
9847
|
+
children: isHeld ? /* @__PURE__ */ jsx41(Play, {
|
|
9585
9848
|
className: "skippr:size-[13px]",
|
|
9586
9849
|
fill: "currentColor",
|
|
9587
9850
|
strokeWidth: 0
|
|
9588
|
-
}) : /* @__PURE__ */
|
|
9851
|
+
}) : /* @__PURE__ */ jsx41(Pause, {
|
|
9589
9852
|
className: "skippr:size-[13px]",
|
|
9590
9853
|
fill: "currentColor",
|
|
9591
9854
|
strokeWidth: 0
|
|
9592
9855
|
})
|
|
9593
9856
|
}),
|
|
9594
|
-
!isHeld && /* @__PURE__ */
|
|
9857
|
+
!isHeld && /* @__PURE__ */ jsxs34(Fragment5, {
|
|
9595
9858
|
children: [
|
|
9596
|
-
/* @__PURE__ */
|
|
9859
|
+
/* @__PURE__ */ jsxs34("span", {
|
|
9597
9860
|
className: "skippr:relative skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center",
|
|
9598
9861
|
children: [
|
|
9599
|
-
/* @__PURE__ */
|
|
9862
|
+
/* @__PURE__ */ jsx41(MicLevelHalo, {
|
|
9600
9863
|
enabled: !isMuted
|
|
9601
9864
|
}),
|
|
9602
|
-
/* @__PURE__ */
|
|
9865
|
+
/* @__PURE__ */ jsx41("button", {
|
|
9603
9866
|
type: "button",
|
|
9604
9867
|
onClick: ifNotDragged(() => void toggleMute()),
|
|
9605
9868
|
style: { background: "#fff", color: "var(--skippr-brand-deep)" },
|
|
9606
9869
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
9607
9870
|
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]",
|
|
9608
|
-
children: isMuted ? /* @__PURE__ */
|
|
9871
|
+
children: isMuted ? /* @__PURE__ */ jsx41(MicOff, {
|
|
9609
9872
|
className: "skippr:size-[15px]",
|
|
9610
9873
|
strokeWidth: 2
|
|
9611
|
-
}) : /* @__PURE__ */
|
|
9874
|
+
}) : /* @__PURE__ */ jsx41(Mic, {
|
|
9612
9875
|
className: "skippr:size-[15px]",
|
|
9613
9876
|
strokeWidth: 2
|
|
9614
9877
|
})
|
|
9615
9878
|
})
|
|
9616
9879
|
]
|
|
9617
9880
|
}),
|
|
9618
|
-
/* @__PURE__ */
|
|
9881
|
+
/* @__PURE__ */ jsxs34("button", {
|
|
9619
9882
|
type: "button",
|
|
9620
9883
|
onClick: ifNotDragged(() => closeBar("stop")),
|
|
9621
9884
|
disabled: isPausing,
|
|
9622
9885
|
"aria-label": "End session",
|
|
9623
9886
|
className: "skippr:relative 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:bg-white/20 skippr:disabled:cursor-not-allowed",
|
|
9624
9887
|
children: [
|
|
9625
|
-
isPausing && pauseSource === "stop" && /* @__PURE__ */
|
|
9888
|
+
isPausing && pauseSource === "stop" && /* @__PURE__ */ jsx41(BusyRing, {
|
|
9626
9889
|
tone: "white"
|
|
9627
9890
|
}),
|
|
9628
|
-
/* @__PURE__ */
|
|
9891
|
+
/* @__PURE__ */ jsx41(Square, {
|
|
9629
9892
|
className: "skippr:size-[11px]",
|
|
9630
9893
|
fill: "currentColor",
|
|
9631
9894
|
strokeWidth: 0
|
|
@@ -9636,17 +9899,17 @@ function VoiceBarFrame({
|
|
|
9636
9899
|
})
|
|
9637
9900
|
]
|
|
9638
9901
|
}),
|
|
9639
|
-
!isStarting && isConnected && textMode && /* @__PURE__ */
|
|
9902
|
+
!isStarting && isConnected && textMode && /* @__PURE__ */ jsxs34("div", {
|
|
9640
9903
|
className: cn(PILL, "skippr:gap-[7px] skippr:bg-[#F1EFEA] skippr:text-[#5a5650] skippr:[animation:skippr-fade-in_0.25s_ease]"),
|
|
9641
9904
|
children: [
|
|
9642
|
-
/* @__PURE__ */
|
|
9905
|
+
/* @__PURE__ */ jsx41(MessageSquare, {
|
|
9643
9906
|
className: "skippr:size-[15px] skippr:text-[#8b877f]",
|
|
9644
9907
|
strokeWidth: 2
|
|
9645
9908
|
}),
|
|
9646
9909
|
"Text mode"
|
|
9647
9910
|
]
|
|
9648
9911
|
}),
|
|
9649
|
-
!sessionLive && /* @__PURE__ */
|
|
9912
|
+
!sessionLive && /* @__PURE__ */ jsxs34("button", {
|
|
9650
9913
|
type: "button",
|
|
9651
9914
|
onClick: ifNotDragged(() => {
|
|
9652
9915
|
if (canStart)
|
|
@@ -9657,48 +9920,48 @@ function VoiceBarFrame({
|
|
|
9657
9920
|
style: { color: "var(--skippr-brand-foreground, #2d2b3d)" },
|
|
9658
9921
|
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"),
|
|
9659
9922
|
children: [
|
|
9660
|
-
/* @__PURE__ */
|
|
9923
|
+
/* @__PURE__ */ jsx41("span", {
|
|
9661
9924
|
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)]",
|
|
9662
|
-
children: logoUrl ? /* @__PURE__ */
|
|
9925
|
+
children: logoUrl ? /* @__PURE__ */ jsx41("img", {
|
|
9663
9926
|
src: logoUrl,
|
|
9664
9927
|
alt: "",
|
|
9665
9928
|
className: "skippr:block skippr:size-full skippr:object-cover"
|
|
9666
|
-
}) : /* @__PURE__ */
|
|
9929
|
+
}) : /* @__PURE__ */ jsx41("span", {
|
|
9667
9930
|
className: "skippr:block skippr:size-full skippr:bg-launcher"
|
|
9668
9931
|
})
|
|
9669
9932
|
}),
|
|
9670
9933
|
"Talk to Agent"
|
|
9671
9934
|
]
|
|
9672
9935
|
}),
|
|
9673
|
-
(sessionLive || isRoomChat) && /* @__PURE__ */
|
|
9936
|
+
(sessionLive || isRoomChat) && /* @__PURE__ */ jsx41("button", {
|
|
9674
9937
|
type: "button",
|
|
9675
9938
|
onClick: ifNotDragged(toggleChat),
|
|
9676
9939
|
disabled: isStarting,
|
|
9677
9940
|
"aria-label": "Open chat",
|
|
9678
9941
|
className: cn(EDGE_BUTTON, "skippr:size-[30px] skippr:text-[#8b877f]", isStarting && "skippr:cursor-not-allowed skippr:opacity-40 skippr:hover:bg-transparent skippr:hover:text-[#8b877f]"),
|
|
9679
|
-
children: /* @__PURE__ */
|
|
9942
|
+
children: /* @__PURE__ */ jsx41(MessageSquare, {
|
|
9680
9943
|
className: "skippr:size-[15px]",
|
|
9681
9944
|
strokeWidth: 2
|
|
9682
9945
|
})
|
|
9683
9946
|
})
|
|
9684
9947
|
]
|
|
9685
9948
|
}),
|
|
9686
|
-
lineBlockOpen && /* @__PURE__ */
|
|
9949
|
+
lineBlockOpen && /* @__PURE__ */ jsxs34("div", {
|
|
9687
9950
|
style: chatBlockStyle,
|
|
9688
9951
|
"data-skippr-no-drag": "",
|
|
9689
9952
|
onPointerDown: (event) => event.stopPropagation(),
|
|
9690
9953
|
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)]"),
|
|
9691
9954
|
children: [
|
|
9692
|
-
planInLineBlock && activePlan && /* @__PURE__ */
|
|
9955
|
+
planInLineBlock && activePlan && /* @__PURE__ */ jsx41("div", {
|
|
9693
9956
|
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)]",
|
|
9694
|
-
children: /* @__PURE__ */
|
|
9957
|
+
children: /* @__PURE__ */ jsx41(VoiceBarPlanCard, {
|
|
9695
9958
|
embedded: true,
|
|
9696
9959
|
plan: activePlan,
|
|
9697
9960
|
sendChatMessage,
|
|
9698
9961
|
onDismiss: () => setDismissedBlockPlanId(activePlan.planId)
|
|
9699
9962
|
}, activePlan.planId)
|
|
9700
9963
|
}),
|
|
9701
|
-
/* @__PURE__ */
|
|
9964
|
+
/* @__PURE__ */ jsx41(VoiceBarChatLine, {
|
|
9702
9965
|
embedded: true,
|
|
9703
9966
|
dock,
|
|
9704
9967
|
canSend: isConnected,
|
|
@@ -9711,21 +9974,21 @@ function VoiceBarFrame({
|
|
|
9711
9974
|
}
|
|
9712
9975
|
|
|
9713
9976
|
// src/components/VoiceBarLauncher.tsx
|
|
9714
|
-
import { useCallback as
|
|
9977
|
+
import { useCallback as useCallback28, useEffect as useEffect46, useRef as useRef40, useState as useState35 } from "react";
|
|
9715
9978
|
|
|
9716
9979
|
// src/components/LauncherNotification.tsx
|
|
9717
|
-
import { useEffect as
|
|
9718
|
-
import { jsx as
|
|
9980
|
+
import { useEffect as useEffect45, useRef as useRef39, useState as useState34 } from "react";
|
|
9981
|
+
import { jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
9719
9982
|
function LauncherNotification({
|
|
9720
9983
|
notifications,
|
|
9721
9984
|
dock,
|
|
9722
9985
|
mode,
|
|
9723
9986
|
onDismiss
|
|
9724
9987
|
}) {
|
|
9725
|
-
const [index2, setIndex] =
|
|
9726
|
-
const [paused, setPaused] =
|
|
9727
|
-
const cardRef =
|
|
9728
|
-
|
|
9988
|
+
const [index2, setIndex] = useState34(0);
|
|
9989
|
+
const [paused, setPaused] = useState34(false);
|
|
9990
|
+
const cardRef = useRef39(null);
|
|
9991
|
+
useEffect45(() => {
|
|
9729
9992
|
const el = cardRef.current;
|
|
9730
9993
|
if (!el)
|
|
9731
9994
|
return;
|
|
@@ -9738,7 +10001,7 @@ function LauncherNotification({
|
|
|
9738
10001
|
el.removeEventListener("mouseleave", leave);
|
|
9739
10002
|
};
|
|
9740
10003
|
}, []);
|
|
9741
|
-
|
|
10004
|
+
useEffect45(() => {
|
|
9742
10005
|
if (paused)
|
|
9743
10006
|
return;
|
|
9744
10007
|
const rotate = setInterval(() => setIndex((current) => (current + 1) % notifications.length), TIP_ROTATE_MS);
|
|
@@ -9767,21 +10030,21 @@ function LauncherNotification({
|
|
|
9767
10030
|
...dock.edge === "left" ? { left: 0 } : { right: 0 },
|
|
9768
10031
|
bottom: "calc(100% + 8px)"
|
|
9769
10032
|
};
|
|
9770
|
-
return /* @__PURE__ */
|
|
10033
|
+
return /* @__PURE__ */ jsx42("div", {
|
|
9771
10034
|
style: wrapperStyle,
|
|
9772
10035
|
"data-skippr-no-drag": "",
|
|
9773
|
-
children: /* @__PURE__ */
|
|
10036
|
+
children: /* @__PURE__ */ jsxs35("div", {
|
|
9774
10037
|
ref: cardRef,
|
|
9775
10038
|
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)]",
|
|
9776
10039
|
children: [
|
|
9777
|
-
/* @__PURE__ */
|
|
10040
|
+
/* @__PURE__ */ jsx42("span", {
|
|
9778
10041
|
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]",
|
|
9779
|
-
children: /* @__PURE__ */
|
|
10042
|
+
children: /* @__PURE__ */ jsx42("span", {
|
|
9780
10043
|
className: "skippr:line-clamp-2",
|
|
9781
10044
|
children: notification.message
|
|
9782
10045
|
})
|
|
9783
10046
|
}),
|
|
9784
|
-
/* @__PURE__ */
|
|
10047
|
+
/* @__PURE__ */ jsx42("button", {
|
|
9785
10048
|
type: "button",
|
|
9786
10049
|
onClick: () => {
|
|
9787
10050
|
notification.activate();
|
|
@@ -9790,18 +10053,18 @@ function LauncherNotification({
|
|
|
9790
10053
|
"aria-label": "Start",
|
|
9791
10054
|
title: "Start",
|
|
9792
10055
|
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]",
|
|
9793
|
-
children: /* @__PURE__ */
|
|
10056
|
+
children: /* @__PURE__ */ jsx42(Play, {
|
|
9794
10057
|
className: "skippr:size-[8px] skippr:fill-current",
|
|
9795
10058
|
strokeWidth: 2
|
|
9796
10059
|
})
|
|
9797
10060
|
}),
|
|
9798
|
-
hasMultiple && /* @__PURE__ */
|
|
10061
|
+
hasMultiple && /* @__PURE__ */ jsx42("button", {
|
|
9799
10062
|
type: "button",
|
|
9800
10063
|
onClick: () => setIndex((current) => (current + 1) % notifications.length),
|
|
9801
10064
|
"aria-label": "Next",
|
|
9802
10065
|
title: "Next",
|
|
9803
10066
|
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]",
|
|
9804
|
-
children: /* @__PURE__ */
|
|
10067
|
+
children: /* @__PURE__ */ jsx42(ChevronRight, {
|
|
9805
10068
|
className: "skippr:size-[12px]",
|
|
9806
10069
|
strokeWidth: 2.5
|
|
9807
10070
|
})
|
|
@@ -9812,14 +10075,14 @@ function LauncherNotification({
|
|
|
9812
10075
|
}
|
|
9813
10076
|
|
|
9814
10077
|
// src/components/VoiceBarLauncher.tsx
|
|
9815
|
-
import { jsx as
|
|
10078
|
+
import { jsx as jsx43, jsxs as jsxs36, Fragment as Fragment6 } from "react/jsx-runtime";
|
|
9816
10079
|
function SkipprMark2() {
|
|
9817
|
-
return /* @__PURE__ */
|
|
10080
|
+
return /* @__PURE__ */ jsx43("svg", {
|
|
9818
10081
|
viewBox: "0 0 15.4044 18.4853",
|
|
9819
10082
|
className: "skippr:h-[18px] skippr:w-[15px]",
|
|
9820
10083
|
fill: "none",
|
|
9821
10084
|
"aria-hidden": "true",
|
|
9822
|
-
children: /* @__PURE__ */
|
|
10085
|
+
children: /* @__PURE__ */ jsx43("path", {
|
|
9823
10086
|
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",
|
|
9824
10087
|
className: "skippr:fill-white"
|
|
9825
10088
|
})
|
|
@@ -9898,7 +10161,7 @@ function LauncherChat({
|
|
|
9898
10161
|
onClick
|
|
9899
10162
|
}) {
|
|
9900
10163
|
const vertical = isHorizontalEdge(edge);
|
|
9901
|
-
return /* @__PURE__ */
|
|
10164
|
+
return /* @__PURE__ */ jsxs36("div", {
|
|
9902
10165
|
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]),
|
|
9903
10166
|
style: {
|
|
9904
10167
|
width: vertical ? 46 : revealed ? 52 : 0,
|
|
@@ -9906,18 +10169,18 @@ function LauncherChat({
|
|
|
9906
10169
|
opacity: revealed ? 1 : 0
|
|
9907
10170
|
},
|
|
9908
10171
|
children: [
|
|
9909
|
-
/* @__PURE__ */
|
|
10172
|
+
/* @__PURE__ */ jsx43("button", {
|
|
9910
10173
|
type: "button",
|
|
9911
10174
|
onClick,
|
|
9912
10175
|
"aria-label": "Open chat",
|
|
9913
10176
|
tabIndex: revealed ? 0 : -1,
|
|
9914
10177
|
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",
|
|
9915
|
-
children: /* @__PURE__ */
|
|
10178
|
+
children: /* @__PURE__ */ jsx43(MessageSquare, {
|
|
9916
10179
|
className: "skippr:size-[18px] skippr:shrink-0",
|
|
9917
10180
|
strokeWidth: 2
|
|
9918
10181
|
})
|
|
9919
10182
|
}),
|
|
9920
|
-
/* @__PURE__ */
|
|
10183
|
+
/* @__PURE__ */ jsx43("span", {
|
|
9921
10184
|
className: cn("skippr:shrink-0 skippr:bg-foreground/10", vertical ? "skippr:h-px skippr:w-[22px]" : "skippr:h-[22px] skippr:w-px")
|
|
9922
10185
|
})
|
|
9923
10186
|
]
|
|
@@ -9933,14 +10196,14 @@ function VoiceBarLauncher({
|
|
|
9933
10196
|
onDrop,
|
|
9934
10197
|
setDragging
|
|
9935
10198
|
}) {
|
|
9936
|
-
const containerRef =
|
|
10199
|
+
const containerRef = useRef40(null);
|
|
9937
10200
|
const { wasDraggedRef } = useVoiceBarDrag(containerRef, onDrop, null, setDragging);
|
|
9938
10201
|
const horizontal = isHorizontalEdge(dock.edge);
|
|
9939
|
-
const [cardOpen, setCardOpen] =
|
|
9940
|
-
const [hovered, setHovered] =
|
|
10202
|
+
const [cardOpen, setCardOpen] = useState35(false);
|
|
10203
|
+
const [hovered, setHovered] = useState35(false);
|
|
9941
10204
|
const hasNotif = notifications.length > 0;
|
|
9942
10205
|
const dotColor = notifications.find((item) => item.kind === NOTIFICATION_KIND.Module)?.accentColor ?? notifications[0]?.accentColor ?? NOTIF_ACCENT_COLOR;
|
|
9943
|
-
|
|
10206
|
+
useEffect46(() => {
|
|
9944
10207
|
const el = containerRef.current;
|
|
9945
10208
|
if (!el)
|
|
9946
10209
|
return;
|
|
@@ -9970,53 +10233,53 @@ function VoiceBarLauncher({
|
|
|
9970
10233
|
return;
|
|
9971
10234
|
setCardOpen((open2) => !open2);
|
|
9972
10235
|
};
|
|
9973
|
-
const closeCard =
|
|
10236
|
+
const closeCard = useCallback28(() => setCardOpen(false), []);
|
|
9974
10237
|
if (mode === "strip") {
|
|
9975
10238
|
const expanded = hovered && !!onChat;
|
|
9976
10239
|
const length = expanded ? 84 : 40;
|
|
9977
10240
|
const thickness = expanded ? 36 : 10;
|
|
9978
|
-
return /* @__PURE__ */
|
|
10241
|
+
return /* @__PURE__ */ jsxs36("div", {
|
|
9979
10242
|
ref: containerRef,
|
|
9980
10243
|
style: dockStyleFlush(dock),
|
|
9981
10244
|
className: "skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab",
|
|
9982
10245
|
children: [
|
|
9983
|
-
/* @__PURE__ */
|
|
10246
|
+
/* @__PURE__ */ jsx43("div", {
|
|
9984
10247
|
style: horizontal ? { width: length, height: thickness } : { width: thickness, height: length },
|
|
9985
10248
|
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]),
|
|
9986
|
-
children: expanded ? /* @__PURE__ */
|
|
10249
|
+
children: expanded ? /* @__PURE__ */ jsxs36(Fragment6, {
|
|
9987
10250
|
children: [
|
|
9988
|
-
/* @__PURE__ */
|
|
10251
|
+
/* @__PURE__ */ jsx43("button", {
|
|
9989
10252
|
type: "button",
|
|
9990
10253
|
onClick: open,
|
|
9991
10254
|
"aria-label": "Open Agent",
|
|
9992
10255
|
className: STRIP_ICON_BUTTON,
|
|
9993
|
-
children: /* @__PURE__ */
|
|
10256
|
+
children: /* @__PURE__ */ jsx43(Play, {
|
|
9994
10257
|
className: "skippr:size-[13px] skippr:fill-current",
|
|
9995
10258
|
strokeWidth: 2
|
|
9996
10259
|
})
|
|
9997
10260
|
}),
|
|
9998
|
-
/* @__PURE__ */
|
|
10261
|
+
/* @__PURE__ */ jsx43("span", {
|
|
9999
10262
|
className: cn("skippr:shrink-0 skippr:bg-foreground/10", horizontal ? "skippr:h-[16px] skippr:w-px" : "skippr:h-px skippr:w-[16px]")
|
|
10000
10263
|
}),
|
|
10001
|
-
/* @__PURE__ */
|
|
10264
|
+
/* @__PURE__ */ jsx43("button", {
|
|
10002
10265
|
type: "button",
|
|
10003
10266
|
onClick: openChat,
|
|
10004
10267
|
"aria-label": "Open chat",
|
|
10005
10268
|
className: STRIP_ICON_BUTTON,
|
|
10006
|
-
children: /* @__PURE__ */
|
|
10269
|
+
children: /* @__PURE__ */ jsx43(MessageSquare, {
|
|
10007
10270
|
className: "skippr:size-[14px]",
|
|
10008
10271
|
strokeWidth: 2
|
|
10009
10272
|
})
|
|
10010
10273
|
})
|
|
10011
10274
|
]
|
|
10012
|
-
}) : /* @__PURE__ */
|
|
10275
|
+
}) : /* @__PURE__ */ jsx43("button", {
|
|
10013
10276
|
type: "button",
|
|
10014
10277
|
onClick: open,
|
|
10015
10278
|
"aria-label": "Open Agent",
|
|
10016
10279
|
className: "skippr:absolute skippr:inset-0 skippr:cursor-grab skippr:bg-transparent skippr:p-0"
|
|
10017
10280
|
})
|
|
10018
10281
|
}),
|
|
10019
|
-
hasNotif && (expanded ? /* @__PURE__ */
|
|
10282
|
+
hasNotif && (expanded ? /* @__PURE__ */ jsx43("button", {
|
|
10020
10283
|
type: "button",
|
|
10021
10284
|
onClick: toggleCard,
|
|
10022
10285
|
"aria-label": "Show notifications",
|
|
@@ -10025,7 +10288,7 @@ function VoiceBarLauncher({
|
|
|
10025
10288
|
"--skippr-pulse-color": dotColor
|
|
10026
10289
|
},
|
|
10027
10290
|
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])
|
|
10028
|
-
}) : /* @__PURE__ */
|
|
10291
|
+
}) : /* @__PURE__ */ jsx43("button", {
|
|
10029
10292
|
type: "button",
|
|
10030
10293
|
onClick: toggleCard,
|
|
10031
10294
|
"aria-label": "Show notifications",
|
|
@@ -10035,7 +10298,7 @@ function VoiceBarLauncher({
|
|
|
10035
10298
|
},
|
|
10036
10299
|
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])
|
|
10037
10300
|
})),
|
|
10038
|
-
hasNotif && cardOpen && /* @__PURE__ */
|
|
10301
|
+
hasNotif && cardOpen && /* @__PURE__ */ jsx43(LauncherNotification, {
|
|
10039
10302
|
notifications,
|
|
10040
10303
|
dock,
|
|
10041
10304
|
mode,
|
|
@@ -10044,37 +10307,37 @@ function VoiceBarLauncher({
|
|
|
10044
10307
|
]
|
|
10045
10308
|
});
|
|
10046
10309
|
}
|
|
10047
|
-
return /* @__PURE__ */
|
|
10310
|
+
return /* @__PURE__ */ jsxs36("div", {
|
|
10048
10311
|
ref: containerRef,
|
|
10049
10312
|
style: dockStyleFlush(dock),
|
|
10050
10313
|
className: "skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab",
|
|
10051
10314
|
children: [
|
|
10052
|
-
/* @__PURE__ */
|
|
10315
|
+
/* @__PURE__ */ jsxs36("div", {
|
|
10053
10316
|
style: { gap: onChat && hovered ? 2 : 0 },
|
|
10054
10317
|
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]),
|
|
10055
10318
|
children: [
|
|
10056
|
-
onChat && /* @__PURE__ */
|
|
10319
|
+
onChat && /* @__PURE__ */ jsx43(LauncherChat, {
|
|
10057
10320
|
revealed: hovered,
|
|
10058
10321
|
edge: dock.edge,
|
|
10059
10322
|
onClick: openChat
|
|
10060
10323
|
}),
|
|
10061
|
-
/* @__PURE__ */
|
|
10324
|
+
/* @__PURE__ */ jsx43("button", {
|
|
10062
10325
|
type: "button",
|
|
10063
10326
|
onClick: open,
|
|
10064
10327
|
"aria-label": "Open Agent",
|
|
10065
10328
|
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",
|
|
10066
|
-
children: logoUrl ? /* @__PURE__ */
|
|
10329
|
+
children: logoUrl ? /* @__PURE__ */ jsx43("img", {
|
|
10067
10330
|
src: logoUrl,
|
|
10068
10331
|
alt: "",
|
|
10069
10332
|
className: "skippr:block skippr:size-[46px] skippr:rounded-full skippr:object-cover"
|
|
10070
|
-
}) : /* @__PURE__ */
|
|
10333
|
+
}) : /* @__PURE__ */ jsx43("span", {
|
|
10071
10334
|
className: "skippr:flex skippr:size-[46px] skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-launcher",
|
|
10072
|
-
children: /* @__PURE__ */
|
|
10335
|
+
children: /* @__PURE__ */ jsx43(SkipprMark2, {})
|
|
10073
10336
|
})
|
|
10074
10337
|
})
|
|
10075
10338
|
]
|
|
10076
10339
|
}),
|
|
10077
|
-
hasNotif && /* @__PURE__ */
|
|
10340
|
+
hasNotif && /* @__PURE__ */ jsx43("button", {
|
|
10078
10341
|
type: "button",
|
|
10079
10342
|
onClick: toggleCard,
|
|
10080
10343
|
"aria-label": "Show notifications",
|
|
@@ -10085,7 +10348,7 @@ function VoiceBarLauncher({
|
|
|
10085
10348
|
},
|
|
10086
10349
|
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]")
|
|
10087
10350
|
}),
|
|
10088
|
-
hasNotif && cardOpen && /* @__PURE__ */
|
|
10351
|
+
hasNotif && cardOpen && /* @__PURE__ */ jsx43(LauncherNotification, {
|
|
10089
10352
|
notifications,
|
|
10090
10353
|
dock,
|
|
10091
10354
|
mode,
|
|
@@ -10096,7 +10359,7 @@ function VoiceBarLauncher({
|
|
|
10096
10359
|
}
|
|
10097
10360
|
|
|
10098
10361
|
// src/components/VoiceBar.tsx
|
|
10099
|
-
import { jsx as
|
|
10362
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
10100
10363
|
function VoiceBar({ revealed }) {
|
|
10101
10364
|
const ctx = useContext22(LiveAgentContext);
|
|
10102
10365
|
if (!ctx) {
|
|
@@ -10118,8 +10381,8 @@ function VoiceBar({ revealed }) {
|
|
|
10118
10381
|
barDock,
|
|
10119
10382
|
setBarDock
|
|
10120
10383
|
} = ctx;
|
|
10121
|
-
const [launcherDock, setLauncherDock] =
|
|
10122
|
-
const onLauncherDrop =
|
|
10384
|
+
const [launcherDock, setLauncherDock] = useState36(() => readSavedDock("launcher"));
|
|
10385
|
+
const onLauncherDrop = useCallback29((next) => {
|
|
10123
10386
|
setLauncherDock(next);
|
|
10124
10387
|
persistDock("launcher", next);
|
|
10125
10388
|
}, []);
|
|
@@ -10141,7 +10404,7 @@ function VoiceBar({ revealed }) {
|
|
|
10141
10404
|
return null;
|
|
10142
10405
|
}
|
|
10143
10406
|
if (launcherMode !== LAUNCHER_MODE.None && !sessionLive && isMinimized) {
|
|
10144
|
-
return /* @__PURE__ */
|
|
10407
|
+
return /* @__PURE__ */ jsx44(VoiceBarLauncher, {
|
|
10145
10408
|
dock: effectiveLauncherDock,
|
|
10146
10409
|
mode: launcherMode,
|
|
10147
10410
|
logoUrl: appearance?.logoUrl ?? null,
|
|
@@ -10152,7 +10415,7 @@ function VoiceBar({ revealed }) {
|
|
|
10152
10415
|
setDragging: setIsDragging
|
|
10153
10416
|
});
|
|
10154
10417
|
}
|
|
10155
|
-
return /* @__PURE__ */
|
|
10418
|
+
return /* @__PURE__ */ jsx44(VoiceBarFrame, {
|
|
10156
10419
|
dock: effectiveBarDock,
|
|
10157
10420
|
canFold,
|
|
10158
10421
|
notifications,
|
|
@@ -10162,7 +10425,7 @@ function VoiceBar({ revealed }) {
|
|
|
10162
10425
|
}
|
|
10163
10426
|
|
|
10164
10427
|
// src/components/LiveAgent.tsx
|
|
10165
|
-
import { jsx as
|
|
10428
|
+
import { jsx as jsx45, jsxs as jsxs37, Fragment as Fragment7 } from "react/jsx-runtime";
|
|
10166
10429
|
function readSavedPosition() {
|
|
10167
10430
|
try {
|
|
10168
10431
|
const saved = localStorage.getItem("skippr_widget_position");
|
|
@@ -10180,7 +10443,7 @@ function readSavedLauncherBottom() {
|
|
|
10180
10443
|
}
|
|
10181
10444
|
}
|
|
10182
10445
|
function AgentCursorMount({ animated }) {
|
|
10183
|
-
return /* @__PURE__ */
|
|
10446
|
+
return /* @__PURE__ */ jsx45(AgentCursor, {
|
|
10184
10447
|
target: useAgentCursor(),
|
|
10185
10448
|
animated
|
|
10186
10449
|
});
|
|
@@ -10188,8 +10451,8 @@ function AgentCursorMount({ animated }) {
|
|
|
10188
10451
|
function PlanPanelOpener() {
|
|
10189
10452
|
const plan = usePlanUpdates();
|
|
10190
10453
|
const { expandPanel } = useLiveAgent();
|
|
10191
|
-
const surfacedPlanIdRef =
|
|
10192
|
-
|
|
10454
|
+
const surfacedPlanIdRef = useRef41(null);
|
|
10455
|
+
useEffect47(() => {
|
|
10193
10456
|
if (plan?.state !== "proposed" || surfacedPlanIdRef.current === plan.planId)
|
|
10194
10457
|
return;
|
|
10195
10458
|
surfacedPlanIdRef.current = plan.planId;
|
|
@@ -10204,6 +10467,7 @@ function LiveAgent(props) {
|
|
|
10204
10467
|
appKey,
|
|
10205
10468
|
getUserToken,
|
|
10206
10469
|
userToken,
|
|
10470
|
+
userContext,
|
|
10207
10471
|
verticalAlign: hostVerticalAlign,
|
|
10208
10472
|
variant = "floating",
|
|
10209
10473
|
minimizable = true,
|
|
@@ -10228,19 +10492,19 @@ function LiveAgent(props) {
|
|
|
10228
10492
|
const auth = useAuth({ appKey });
|
|
10229
10493
|
const usesHostAuth = !!getUserToken || !!userToken || !!authTokenProp;
|
|
10230
10494
|
const effectiveAuthToken = usesHostAuth ? authTokenProp : auth.authToken ?? undefined;
|
|
10231
|
-
const [activeModule, setActiveModule] =
|
|
10232
|
-
const [sessionAgentMode, setSessionAgentMode] =
|
|
10233
|
-
const minimizeOnSessionStart =
|
|
10495
|
+
const [activeModule, setActiveModule] = useState37(null);
|
|
10496
|
+
const [sessionAgentMode, setSessionAgentMode] = useState37(null);
|
|
10497
|
+
const minimizeOnSessionStart = useCallback30(() => {
|
|
10234
10498
|
if (minimizable) {
|
|
10235
10499
|
setIsMinimized(true);
|
|
10236
10500
|
setIsPanelOpen(false);
|
|
10237
10501
|
}
|
|
10238
10502
|
}, [minimizable]);
|
|
10239
|
-
const expandOnSessionStartError =
|
|
10503
|
+
const expandOnSessionStartError = useCallback30(() => {
|
|
10240
10504
|
setIsMinimized(false);
|
|
10241
10505
|
setIsPanelOpen(true);
|
|
10242
10506
|
}, []);
|
|
10243
|
-
const minimizeOnSessionDisconnect =
|
|
10507
|
+
const minimizeOnSessionDisconnect = useCallback30(() => {
|
|
10244
10508
|
setActiveModule(null);
|
|
10245
10509
|
setSessionAgentMode(null);
|
|
10246
10510
|
if (minimizable) {
|
|
@@ -10272,34 +10536,35 @@ function LiveAgent(props) {
|
|
|
10272
10536
|
appKey,
|
|
10273
10537
|
getUserToken,
|
|
10274
10538
|
userToken,
|
|
10539
|
+
userContext,
|
|
10275
10540
|
onStart: minimizeOnSessionStart,
|
|
10276
10541
|
onStartError: expandOnSessionStartError,
|
|
10277
10542
|
onDisconnect: minimizeOnSessionDisconnect
|
|
10278
10543
|
});
|
|
10279
|
-
const teardownInFlightRef =
|
|
10544
|
+
const teardownInFlightRef = useRef41(false);
|
|
10280
10545
|
teardownInFlightRef.current = isPaused || isPausing || isDisconnecting;
|
|
10281
|
-
const handleRoomDisconnected =
|
|
10546
|
+
const handleRoomDisconnected = useCallback30(() => {
|
|
10282
10547
|
if (teardownInFlightRef.current)
|
|
10283
10548
|
return;
|
|
10284
10549
|
disconnect();
|
|
10285
10550
|
}, [disconnect]);
|
|
10286
10551
|
const isSessionLive = connection !== null || isStarting || isPausing || isDisconnecting;
|
|
10287
|
-
const [isPanelOpen, setIsPanelOpen] =
|
|
10288
|
-
const [isMinimized, setIsMinimized] =
|
|
10289
|
-
const [sidebarTab, setSidebarTab] =
|
|
10290
|
-
const [phasesSnapshot, setPhasesSnapshot] =
|
|
10291
|
-
const [textMode, setTextMode] =
|
|
10292
|
-
const [panelExpanded, setPanelExpanded] =
|
|
10293
|
-
const togglePanelExpanded =
|
|
10294
|
-
const panelRef =
|
|
10295
|
-
const controlBarRef =
|
|
10296
|
-
const [isDragging, setIsDragging] =
|
|
10297
|
-
const setTextModeState =
|
|
10552
|
+
const [isPanelOpen, setIsPanelOpen] = useState37(defaultOpen);
|
|
10553
|
+
const [isMinimized, setIsMinimized] = useState37(minimizable && !defaultOpen);
|
|
10554
|
+
const [sidebarTab, setSidebarTab] = useState37("agenda");
|
|
10555
|
+
const [phasesSnapshot, setPhasesSnapshot] = useState37([]);
|
|
10556
|
+
const [textMode, setTextMode] = useState37(false);
|
|
10557
|
+
const [panelExpanded, setPanelExpanded] = useState37(false);
|
|
10558
|
+
const togglePanelExpanded = useCallback30(() => setPanelExpanded((prev) => !prev), []);
|
|
10559
|
+
const panelRef = useRef41(null);
|
|
10560
|
+
const controlBarRef = useRef41(null);
|
|
10561
|
+
const [isDragging, setIsDragging] = useState37(false);
|
|
10562
|
+
const setTextModeState = useCallback30((enabled) => {
|
|
10298
10563
|
setTextMode(enabled);
|
|
10299
10564
|
}, []);
|
|
10300
10565
|
const isConnected = connection !== null;
|
|
10301
10566
|
const showControlBar = isConnected || isStarting || isPausing;
|
|
10302
|
-
|
|
10567
|
+
useEffect47(() => {
|
|
10303
10568
|
if (!isConnected)
|
|
10304
10569
|
setTextModeState(false);
|
|
10305
10570
|
}, [isConnected, setTextModeState]);
|
|
@@ -10330,7 +10595,7 @@ function LiveAgent(props) {
|
|
|
10330
10595
|
const buddyActive = isBuddyActive(appearance) && variant !== "sidebar" && !hostAgentId;
|
|
10331
10596
|
const buddyShape = appearance?.buddy?.shape ?? DEFAULT_BUDDY_SHAPE;
|
|
10332
10597
|
const effectiveHostAgentId = buddyActive ? undefined : hostAgentId;
|
|
10333
|
-
const startSession =
|
|
10598
|
+
const startSession = useCallback30((opts) => startSessionRaw(buddyActive ? { ...opts, agentControls: buddyEffectiveControls(opts.agentControls) } : opts), [startSessionRaw, buddyActive]);
|
|
10334
10599
|
const defaultAgentId = buddyActive ? defaultSelection.agentId : hostAgentId ?? defaultSelection.agentId;
|
|
10335
10600
|
const defaultModule = availableModules.find((m) => m.id === defaultAgentId) ?? null;
|
|
10336
10601
|
const operatingModule = buddyActive ? defaultModule : activeModule ?? (effectiveHostAgentId ? availableModules[0] ?? null : null);
|
|
@@ -10341,7 +10606,7 @@ function LiveAgent(props) {
|
|
|
10341
10606
|
const shouldAnimateCursor = operatingModule?.uiPreferences?.animateCursor ?? animateAgentCursor;
|
|
10342
10607
|
const buddyDefaultMissing = buddyActive && hasResolvedModules && !modulesError && !defaultModule && !isSessionLive;
|
|
10343
10608
|
const resumableSession = useMemo7(() => getResumableSession(operatingModule), [operatingModule]);
|
|
10344
|
-
const resumeSession =
|
|
10609
|
+
const resumeSession = useCallback30(async () => {
|
|
10345
10610
|
if (!resumableSession)
|
|
10346
10611
|
return;
|
|
10347
10612
|
if (operatingModule) {
|
|
@@ -10354,7 +10619,7 @@ function LiveAgent(props) {
|
|
|
10354
10619
|
existingSessionId: resumableSession.id
|
|
10355
10620
|
});
|
|
10356
10621
|
}, [resumableSession, operatingModule, startSession, baseAgentControls]);
|
|
10357
|
-
const selectModule =
|
|
10622
|
+
const selectModule = useCallback30((moduleId, opts) => {
|
|
10358
10623
|
const found = availableModules.find((m) => m.id === moduleId);
|
|
10359
10624
|
if (!found)
|
|
10360
10625
|
return;
|
|
@@ -10367,7 +10632,7 @@ function LiveAgent(props) {
|
|
|
10367
10632
|
autoStarted: opts?.autoStarted
|
|
10368
10633
|
});
|
|
10369
10634
|
}, [availableModules, startSession]);
|
|
10370
|
-
const startAdoptionSession =
|
|
10635
|
+
const startAdoptionSession = useCallback30((goal) => {
|
|
10371
10636
|
attendGoal(goal.goalId);
|
|
10372
10637
|
const found = availableModules.find((m) => m.id === goal.agentId);
|
|
10373
10638
|
if (found)
|
|
@@ -10379,12 +10644,12 @@ function LiveAgent(props) {
|
|
|
10379
10644
|
adoptionGoalId: goal.goalId
|
|
10380
10645
|
});
|
|
10381
10646
|
}, [attendGoal, availableModules, startSession]);
|
|
10382
|
-
const [welcomeDismissed, setWelcomeDismissed] =
|
|
10383
|
-
const dismissWelcome =
|
|
10384
|
-
const [savedPosition] =
|
|
10385
|
-
const [currentPosition, setCurrentPosition] =
|
|
10386
|
-
const positionLockedRef =
|
|
10387
|
-
const setPositionWithPersist =
|
|
10647
|
+
const [welcomeDismissed, setWelcomeDismissed] = useState37(false);
|
|
10648
|
+
const dismissWelcome = useCallback30(() => setWelcomeDismissed(true), []);
|
|
10649
|
+
const [savedPosition] = useState37(readSavedPosition);
|
|
10650
|
+
const [currentPosition, setCurrentPosition] = useState37(savedPosition ?? "right");
|
|
10651
|
+
const positionLockedRef = useRef41(savedPosition !== null);
|
|
10652
|
+
const setPositionWithPersist = useCallback30((pos) => {
|
|
10388
10653
|
positionLockedRef.current = true;
|
|
10389
10654
|
setCurrentPosition(pos);
|
|
10390
10655
|
try {
|
|
@@ -10392,18 +10657,18 @@ function LiveAgent(props) {
|
|
|
10392
10657
|
} catch {}
|
|
10393
10658
|
}, []);
|
|
10394
10659
|
const serverPosition = appearance?.position ?? null;
|
|
10395
|
-
|
|
10660
|
+
useEffect47(() => {
|
|
10396
10661
|
if (!serverPosition || positionLockedRef.current)
|
|
10397
10662
|
return;
|
|
10398
10663
|
setCurrentPosition(serverPosition);
|
|
10399
10664
|
}, [serverPosition]);
|
|
10400
|
-
const [savedLauncherBottom] =
|
|
10401
|
-
const hasDraggedRef =
|
|
10402
|
-
const verticalAlignRef =
|
|
10403
|
-
const [launcherBottomPx, setLauncherBottomPxState] =
|
|
10404
|
-
const [popsDown, setPopsDown] =
|
|
10665
|
+
const [savedLauncherBottom] = useState37(readSavedLauncherBottom);
|
|
10666
|
+
const hasDraggedRef = useRef41(savedLauncherBottom !== null);
|
|
10667
|
+
const verticalAlignRef = useRef41(hostVerticalAlign ?? "bottom");
|
|
10668
|
+
const [launcherBottomPx, setLauncherBottomPxState] = useState37(() => savedLauncherBottom !== null ? clampLauncherBottom(savedLauncherBottom) : verticalAlignToBottomPx(verticalAlignRef.current));
|
|
10669
|
+
const [popsDown, setPopsDown] = useState37(() => launcherPopsDown(launcherBottomPx));
|
|
10405
10670
|
const serverVerticalAlign = appearance?.verticalAlign ?? null;
|
|
10406
|
-
|
|
10671
|
+
useEffect47(() => {
|
|
10407
10672
|
if (!serverVerticalAlign || hostVerticalAlign !== undefined || hasDraggedRef.current)
|
|
10408
10673
|
return;
|
|
10409
10674
|
verticalAlignRef.current = serverVerticalAlign;
|
|
@@ -10411,7 +10676,7 @@ function LiveAgent(props) {
|
|
|
10411
10676
|
setLauncherBottomPxState(next);
|
|
10412
10677
|
setPopsDown(launcherPopsDown(next));
|
|
10413
10678
|
}, [serverVerticalAlign, hostVerticalAlign]);
|
|
10414
|
-
const setLauncherBottomPx =
|
|
10679
|
+
const setLauncherBottomPx = useCallback30((px) => {
|
|
10415
10680
|
hasDraggedRef.current = true;
|
|
10416
10681
|
setLauncherBottomPxState(px);
|
|
10417
10682
|
setPopsDown(launcherPopsDown(px));
|
|
@@ -10419,24 +10684,24 @@ function LiveAgent(props) {
|
|
|
10419
10684
|
localStorage.setItem("skippr_widget_bottom", String(px));
|
|
10420
10685
|
} catch {}
|
|
10421
10686
|
}, []);
|
|
10422
|
-
const launcherBottomPxRef =
|
|
10687
|
+
const launcherBottomPxRef = useRef41(launcherBottomPx);
|
|
10423
10688
|
launcherBottomPxRef.current = launcherBottomPx;
|
|
10424
|
-
const [chatActivityAt, setChatActivityAt] =
|
|
10425
|
-
const reportChatActivity =
|
|
10689
|
+
const [chatActivityAt, setChatActivityAt] = useState37(0);
|
|
10690
|
+
const reportChatActivity = useCallback30(() => {
|
|
10426
10691
|
const now = Date.now();
|
|
10427
10692
|
setChatActivityAt((last) => now - last < CHAT_ACTIVITY_THROTTLE_MS ? last : now);
|
|
10428
10693
|
}, []);
|
|
10429
|
-
const [chatDraft, setChatDraft] =
|
|
10430
|
-
const commitLauncherDrop =
|
|
10694
|
+
const [chatDraft, setChatDraft] = useState37("");
|
|
10695
|
+
const commitLauncherDrop = useCallback30(({ side, bottomPx }) => {
|
|
10431
10696
|
setPositionWithPersist(side);
|
|
10432
10697
|
setLauncherBottomPx(bottomPx);
|
|
10433
10698
|
}, [setPositionWithPersist, setLauncherBottomPx]);
|
|
10434
|
-
const [barDock, setBarDockState] =
|
|
10435
|
-
const setBarDock =
|
|
10699
|
+
const [barDock, setBarDockState] = useState37(() => readSavedDock("bar"));
|
|
10700
|
+
const setBarDock = useCallback30((next) => {
|
|
10436
10701
|
setBarDockState(next);
|
|
10437
10702
|
persistDock("bar", next);
|
|
10438
10703
|
}, []);
|
|
10439
|
-
|
|
10704
|
+
useEffect47(() => {
|
|
10440
10705
|
const syncToViewport = () => {
|
|
10441
10706
|
const next = hasDraggedRef.current ? clampLauncherBottom(launcherBottomPxRef.current) : verticalAlignToBottomPx(verticalAlignRef.current);
|
|
10442
10707
|
setLauncherBottomPxState(next);
|
|
@@ -10446,24 +10711,24 @@ function LiveAgent(props) {
|
|
|
10446
10711
|
window.addEventListener("resize", syncToViewport);
|
|
10447
10712
|
return () => window.removeEventListener("resize", syncToViewport);
|
|
10448
10713
|
}, []);
|
|
10449
|
-
const openPanel =
|
|
10450
|
-
const closePanel =
|
|
10451
|
-
const togglePanel =
|
|
10452
|
-
const expandPanel =
|
|
10714
|
+
const openPanel = useCallback30(() => setIsPanelOpen(true), []);
|
|
10715
|
+
const closePanel = useCallback30(() => setIsPanelOpen(false), []);
|
|
10716
|
+
const togglePanel = useCallback30(() => setIsPanelOpen((prev) => !prev), []);
|
|
10717
|
+
const expandPanel = useCallback30(() => {
|
|
10453
10718
|
setIsMinimized(false);
|
|
10454
10719
|
setIsPanelOpen(true);
|
|
10455
10720
|
}, []);
|
|
10456
|
-
const minimizePanel =
|
|
10721
|
+
const minimizePanel = useCallback30(() => {
|
|
10457
10722
|
if (!minimizable)
|
|
10458
10723
|
return;
|
|
10459
10724
|
setIsMinimized(true);
|
|
10460
10725
|
setIsPanelOpen(false);
|
|
10461
10726
|
}, [minimizable]);
|
|
10462
|
-
const pauseSessionAndMinimize =
|
|
10727
|
+
const pauseSessionAndMinimize = useCallback30(async () => {
|
|
10463
10728
|
await pauseSession();
|
|
10464
10729
|
minimizePanel();
|
|
10465
10730
|
}, [pauseSession, minimizePanel]);
|
|
10466
|
-
const startDefaultSession =
|
|
10731
|
+
const startDefaultSession = useCallback30(() => {
|
|
10467
10732
|
const target = availableModules.find((m) => m.id === defaultAgentId);
|
|
10468
10733
|
if (!target)
|
|
10469
10734
|
return;
|
|
@@ -10652,66 +10917,66 @@ function LiveAgent(props) {
|
|
|
10652
10917
|
buddyShape
|
|
10653
10918
|
]);
|
|
10654
10919
|
if (noModulesAvailable || buddyDefaultMissing) {
|
|
10655
|
-
return /* @__PURE__ */
|
|
10920
|
+
return /* @__PURE__ */ jsx45(LiveAgentContext.Provider, {
|
|
10656
10921
|
value: ctx,
|
|
10657
10922
|
children
|
|
10658
10923
|
});
|
|
10659
10924
|
}
|
|
10660
|
-
return /* @__PURE__ */
|
|
10925
|
+
return /* @__PURE__ */ jsx45(LiveAgentContext.Provider, {
|
|
10661
10926
|
value: ctx,
|
|
10662
|
-
children: /* @__PURE__ */
|
|
10927
|
+
children: /* @__PURE__ */ jsxs37(LiveKitRoom, {
|
|
10663
10928
|
serverUrl: connection?.livekitUrl,
|
|
10664
10929
|
token: connection?.token,
|
|
10665
10930
|
connect: shouldConnect,
|
|
10666
10931
|
audio: true,
|
|
10667
10932
|
onDisconnected: handleRoomDisconnected,
|
|
10668
10933
|
children: [
|
|
10669
|
-
connection && !textMode && /* @__PURE__ */
|
|
10670
|
-
/* @__PURE__ */
|
|
10934
|
+
connection && !textMode && /* @__PURE__ */ jsx45(RoomAudioRenderer, {}),
|
|
10935
|
+
/* @__PURE__ */ jsxs37(SessionHoldProvider, {
|
|
10671
10936
|
children: [
|
|
10672
|
-
connection && captureMode === CAPTURE_MODE.Screenshare && /* @__PURE__ */
|
|
10937
|
+
connection && captureMode === CAPTURE_MODE.Screenshare && /* @__PURE__ */ jsx45(AutoStartMedia, {
|
|
10673
10938
|
pendingScreenStream,
|
|
10674
10939
|
pushOrTapMicMode: isRequestResponseMicMode(agentControls?.micMode)
|
|
10675
10940
|
}),
|
|
10676
|
-
connection && captureMode === CAPTURE_MODE.Auto && /* @__PURE__ */
|
|
10941
|
+
connection && captureMode === CAPTURE_MODE.Auto && /* @__PURE__ */ jsx45(DomCapture, {
|
|
10677
10942
|
pushOrTapMicMode: isRequestResponseMicMode(agentControls?.micMode)
|
|
10678
10943
|
}),
|
|
10679
|
-
/* @__PURE__ */
|
|
10944
|
+
/* @__PURE__ */ jsxs37(ShadowHost, {
|
|
10680
10945
|
accentColor: appearance?.accentColor ?? null,
|
|
10681
10946
|
children: [
|
|
10682
|
-
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.highlight && /* @__PURE__ */
|
|
10683
|
-
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */
|
|
10684
|
-
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */
|
|
10685
|
-
connection && captureMode === CAPTURE_MODE.Auto && (agentControls?.highlight || agentControls?.actions) && /* @__PURE__ */
|
|
10947
|
+
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.highlight && /* @__PURE__ */ jsx45(HighlightOverlay, {}),
|
|
10948
|
+
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */ jsx45(PageActionHandler, {}),
|
|
10949
|
+
connection && captureMode === CAPTURE_MODE.Auto && agentControls?.actions && /* @__PURE__ */ jsx45(PlanPanelOpener, {}),
|
|
10950
|
+
connection && captureMode === CAPTURE_MODE.Auto && (agentControls?.highlight || agentControls?.actions) && /* @__PURE__ */ jsx45(AgentCursorMount, {
|
|
10686
10951
|
animated: shouldAnimateCursor
|
|
10687
10952
|
}),
|
|
10688
|
-
/* @__PURE__ */
|
|
10689
|
-
children: /* @__PURE__ */
|
|
10690
|
-
children: /* @__PURE__ */
|
|
10953
|
+
/* @__PURE__ */ jsx45(VoiceTurnProvider, {
|
|
10954
|
+
children: /* @__PURE__ */ jsx45(TranscriptionsProvider, {
|
|
10955
|
+
children: /* @__PURE__ */ jsx45("div", {
|
|
10691
10956
|
id: WIDGET_ROOT_ID,
|
|
10692
|
-
children: variant === "sidebar" ? /* @__PURE__ */
|
|
10957
|
+
children: variant === "sidebar" ? /* @__PURE__ */ jsxs37(Fragment7, {
|
|
10693
10958
|
children: [
|
|
10694
|
-
isMinimized && !showControlBar && isLauncherRevealed && /* @__PURE__ */
|
|
10959
|
+
isMinimized && !showControlBar && isLauncherRevealed && /* @__PURE__ */ jsx45(MinimizedBubble, {
|
|
10695
10960
|
welcomeMessage,
|
|
10696
10961
|
welcomeDismissed,
|
|
10697
10962
|
onDismissWelcome: dismissWelcome
|
|
10698
10963
|
}),
|
|
10699
|
-
showControlBar && !hideControls && /* @__PURE__ */
|
|
10700
|
-
/* @__PURE__ */
|
|
10701
|
-
/* @__PURE__ */
|
|
10964
|
+
showControlBar && !hideControls && /* @__PURE__ */ jsx45(SessionControlBar, {}),
|
|
10965
|
+
/* @__PURE__ */ jsx45(SidebarTrigger, {}),
|
|
10966
|
+
/* @__PURE__ */ jsx45(Sidebar, {
|
|
10702
10967
|
hideControls,
|
|
10703
10968
|
hideHeader,
|
|
10704
10969
|
startSessionLabel
|
|
10705
10970
|
})
|
|
10706
10971
|
]
|
|
10707
|
-
}) : !isLauncherRevealed ? null : buddyActive ? /* @__PURE__ */
|
|
10972
|
+
}) : !isLauncherRevealed ? null : buddyActive ? /* @__PURE__ */ jsx45(BuddyVoiceBar, {
|
|
10708
10973
|
revealed: isLauncherRevealed
|
|
10709
|
-
}) : /* @__PURE__ */
|
|
10974
|
+
}) : /* @__PURE__ */ jsxs37(Fragment7, {
|
|
10710
10975
|
children: [
|
|
10711
|
-
/* @__PURE__ */
|
|
10976
|
+
/* @__PURE__ */ jsx45(VoiceBar, {
|
|
10712
10977
|
revealed: isLauncherRevealed
|
|
10713
10978
|
}),
|
|
10714
|
-
(agentControls?.chat ?? DEFAULT_CHAT_SURFACE) === CHAT_SURFACE.Room && /* @__PURE__ */
|
|
10979
|
+
(agentControls?.chat ?? DEFAULT_CHAT_SURFACE) === CHAT_SURFACE.Room && /* @__PURE__ */ jsx45(Sidebar, {
|
|
10715
10980
|
hideControls,
|
|
10716
10981
|
hideHeader,
|
|
10717
10982
|
startSessionLabel
|