@skippr/live-agent-sdk 0.67.0 → 0.69.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.
@@ -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 useCallback14, useEffect as useEffect23, useMemo as useMemo6, useRef as useRef17, useState as useState17 } from "react";
11
+ import { useCallback as useCallback15, useEffect as useEffect25, useMemo as useMemo6, useRef as useRef17, useState as useState18 } from "react";
12
12
 
13
13
  // src/capture/useAgentCursor.ts
14
14
  import { useEffect, useState } from "react";
@@ -416,7 +416,7 @@ function useLiveAgent() {
416
416
  import { useCallback as useCallback4 } from "react";
417
417
 
418
418
  // src/lib/constants.ts
419
- var SIDEBAR_WIDTH = 360;
419
+ var SIDEBAR_WIDTH = 280;
420
420
  var WIDGET_ROOT_ID = "skippr-sdk-root";
421
421
  var REF_ATTR = "data-skippr-ref";
422
422
  var PRIVATE_ATTR = "data-skippr-private";
@@ -426,6 +426,7 @@ var HIGHLIGHT_TOPIC = "skippr.highlight";
426
426
  var PAGE_ACTIONS_TOPIC = "skippr.page-actions";
427
427
  var TEXT_MODE_TOPIC = "skippr.text-mode";
428
428
  var ACTION_CONTROL_TOPIC = "skippr.action-control";
429
+ var SESSION_HOLD_TOPIC = "skippr.session-hold";
429
430
  var PLAN_ATTR = "skippr.action-plan";
430
431
  var NAME_MAX_CHARS = 80;
431
432
 
@@ -555,6 +556,7 @@ function useSession({
555
556
  const [pendingScreenStream, setPendingScreenStream] = useState6(null);
556
557
  const [isPaused, setIsPaused] = useState6(false);
557
558
  const [isPausing, setIsPausing] = useState6(false);
559
+ const [pauseTimeoutSeconds, setPauseTimeoutSeconds] = useState6(null);
558
560
  const [historyMessages, setHistoryMessages] = useState6([]);
559
561
  const [authFailed, setAuthFailed] = useState6(false);
560
562
  const tokenRef = useRef(authToken ? { token: authToken, expiresAt: null } : null);
@@ -730,7 +732,11 @@ function useSession({
730
732
  setErrorCode(startResp.status);
731
733
  throw new Error(body?.detail || `Failed to start session: ${startResp.status}`);
732
734
  }
733
- const { session, connection: conn } = await startResp.json();
735
+ const {
736
+ session,
737
+ connection: conn,
738
+ pauseTimeoutSeconds: pauseTimeout
739
+ } = await startResp.json();
734
740
  const history2 = existingSessionId ? await fetchSessionMessages(session.id, authedFetch) : [];
735
741
  setSessionId(session.id);
736
742
  setHistoryMessages(history2);
@@ -741,6 +747,7 @@ function useSession({
741
747
  setPendingScreenStream(screenStream);
742
748
  setShouldConnect(true);
743
749
  setIsPaused(false);
750
+ setPauseTimeoutSeconds(typeof pauseTimeout === "number" ? pauseTimeout : null);
744
751
  } catch (e) {
745
752
  stopStream(screenStream);
746
753
  setError(e instanceof Error ? e.message : "Failed to start session");
@@ -810,6 +817,7 @@ function useSession({
810
817
  disconnect,
811
818
  isPaused,
812
819
  isPausing,
820
+ pauseTimeoutSeconds,
813
821
  historyMessages,
814
822
  pendingScreenStream,
815
823
  bearerToken,
@@ -1003,42 +1011,28 @@ var CircleX = createLucideIcon("circle-x", __iconNode3);
1003
1011
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/loader-circle.js
1004
1012
  var __iconNode4 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1005
1013
  var LoaderCircle = createLucideIcon("loader-circle", __iconNode4);
1006
- // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/sparkles.js
1007
- var __iconNode5 = [
1008
- [
1009
- "path",
1010
- {
1011
- d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
1012
- key: "1s2grr"
1013
- }
1014
- ],
1015
- ["path", { d: "M20 2v4", key: "1rf3ol" }],
1016
- ["path", { d: "M22 4h-4", key: "gwowj6" }],
1017
- ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
1018
- ];
1019
- var Sparkles = createLucideIcon("sparkles", __iconNode5);
1020
1014
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/arrow-right.js
1021
- var __iconNode6 = [
1015
+ var __iconNode5 = [
1022
1016
  ["path", { d: "M5 12h14", key: "1ays0h" }],
1023
1017
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
1024
1018
  ];
1025
- var ArrowRight = createLucideIcon("arrow-right", __iconNode6);
1019
+ var ArrowRight = createLucideIcon("arrow-right", __iconNode5);
1026
1020
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/calendar.js
1027
- var __iconNode7 = [
1021
+ var __iconNode6 = [
1028
1022
  ["path", { d: "M8 2v4", key: "1cmpym" }],
1029
1023
  ["path", { d: "M16 2v4", key: "4m81vk" }],
1030
1024
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
1031
1025
  ["path", { d: "M3 10h18", key: "8toen8" }]
1032
1026
  ];
1033
- var Calendar = createLucideIcon("calendar", __iconNode7);
1027
+ var Calendar = createLucideIcon("calendar", __iconNode6);
1034
1028
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/chevron-down.js
1035
- var __iconNode8 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1036
- var ChevronDown = createLucideIcon("chevron-down", __iconNode8);
1029
+ var __iconNode7 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1030
+ var ChevronDown = createLucideIcon("chevron-down", __iconNode7);
1037
1031
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/circle.js
1038
- var __iconNode9 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1039
- var Circle = createLucideIcon("circle", __iconNode9);
1032
+ var __iconNode8 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1033
+ var Circle = createLucideIcon("circle", __iconNode8);
1040
1034
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/lightbulb.js
1041
- var __iconNode10 = [
1035
+ var __iconNode9 = [
1042
1036
  [
1043
1037
  "path",
1044
1038
  {
@@ -1049,23 +1043,15 @@ var __iconNode10 = [
1049
1043
  ["path", { d: "M9 18h6", key: "x1upvd" }],
1050
1044
  ["path", { d: "M10 22h4", key: "ceow96" }]
1051
1045
  ];
1052
- var Lightbulb = createLucideIcon("lightbulb", __iconNode10);
1046
+ var Lightbulb = createLucideIcon("lightbulb", __iconNode9);
1053
1047
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mail.js
1054
- var __iconNode11 = [
1048
+ var __iconNode10 = [
1055
1049
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
1056
1050
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
1057
1051
  ];
1058
- var Mail = createLucideIcon("mail", __iconNode11);
1059
- // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/maximize-2.js
1060
- var __iconNode12 = [
1061
- ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
1062
- ["path", { d: "m21 3-7 7", key: "1l2asr" }],
1063
- ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
1064
- ["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
1065
- ];
1066
- var Maximize2 = createLucideIcon("maximize-2", __iconNode12);
1052
+ var Mail = createLucideIcon("mail", __iconNode10);
1067
1053
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/message-circle.js
1068
- var __iconNode13 = [
1054
+ var __iconNode11 = [
1069
1055
  [
1070
1056
  "path",
1071
1057
  {
@@ -1074,9 +1060,9 @@ var __iconNode13 = [
1074
1060
  }
1075
1061
  ]
1076
1062
  ];
1077
- var MessageCircle = createLucideIcon("message-circle", __iconNode13);
1063
+ var MessageCircle = createLucideIcon("message-circle", __iconNode11);
1078
1064
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/message-square.js
1079
- var __iconNode14 = [
1065
+ var __iconNode12 = [
1080
1066
  [
1081
1067
  "path",
1082
1068
  {
@@ -1085,9 +1071,9 @@ var __iconNode14 = [
1085
1071
  }
1086
1072
  ]
1087
1073
  ];
1088
- var MessageSquare = createLucideIcon("message-square", __iconNode14);
1074
+ var MessageSquare = createLucideIcon("message-square", __iconNode12);
1089
1075
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mic-off.js
1090
- var __iconNode15 = [
1076
+ var __iconNode13 = [
1091
1077
  ["path", { d: "M12 19v3", key: "npa21l" }],
1092
1078
  ["path", { d: "M15 9.34V5a3 3 0 0 0-5.68-1.33", key: "1gzdoj" }],
1093
1079
  ["path", { d: "M16.95 16.95A7 7 0 0 1 5 12v-2", key: "cqa7eg" }],
@@ -1095,40 +1081,32 @@ var __iconNode15 = [
1095
1081
  ["path", { d: "m2 2 20 20", key: "1ooewy" }],
1096
1082
  ["path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12", key: "r2i35w" }]
1097
1083
  ];
1098
- var MicOff = createLucideIcon("mic-off", __iconNode15);
1084
+ var MicOff = createLucideIcon("mic-off", __iconNode13);
1099
1085
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mic.js
1100
- var __iconNode16 = [
1086
+ var __iconNode14 = [
1101
1087
  ["path", { d: "M12 19v3", key: "npa21l" }],
1102
1088
  ["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }],
1103
1089
  ["rect", { x: "9", y: "2", width: "6", height: "13", rx: "3", key: "s6n7sd" }]
1104
1090
  ];
1105
- var Mic = createLucideIcon("mic", __iconNode16);
1106
- // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/minimize-2.js
1107
- var __iconNode17 = [
1108
- ["path", { d: "m14 10 7-7", key: "oa77jy" }],
1109
- ["path", { d: "M20 10h-6V4", key: "mjg0md" }],
1110
- ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
1111
- ["path", { d: "M4 14h6v6", key: "rmj7iw" }]
1112
- ];
1113
- var Minimize2 = createLucideIcon("minimize-2", __iconNode17);
1091
+ var Mic = createLucideIcon("mic", __iconNode14);
1114
1092
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/monitor-off.js
1115
- var __iconNode18 = [
1093
+ var __iconNode15 = [
1116
1094
  ["path", { d: "M12 17v4", key: "1riwvh" }],
1117
1095
  ["path", { d: "M17 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 1.184-1.826", key: "cv7jms" }],
1118
1096
  ["path", { d: "m2 2 20 20", key: "1ooewy" }],
1119
1097
  ["path", { d: "M8 21h8", key: "1ev6f3" }],
1120
1098
  ["path", { d: "M8.656 3H20a2 2 0 0 1 2 2v10a2 2 0 0 1-.293 1.042", key: "z8ni2w" }]
1121
1099
  ];
1122
- var MonitorOff = createLucideIcon("monitor-off", __iconNode18);
1100
+ var MonitorOff = createLucideIcon("monitor-off", __iconNode15);
1123
1101
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/monitor.js
1124
- var __iconNode19 = [
1102
+ var __iconNode16 = [
1125
1103
  ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
1126
1104
  ["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
1127
1105
  ["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
1128
1106
  ];
1129
- var Monitor = createLucideIcon("monitor", __iconNode19);
1107
+ var Monitor = createLucideIcon("monitor", __iconNode16);
1130
1108
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mouse-pointer-2.js
1131
- var __iconNode20 = [
1109
+ var __iconNode17 = [
1132
1110
  [
1133
1111
  "path",
1134
1112
  {
@@ -1137,9 +1115,9 @@ var __iconNode20 = [
1137
1115
  }
1138
1116
  ]
1139
1117
  ];
1140
- var MousePointer2 = createLucideIcon("mouse-pointer-2", __iconNode20);
1118
+ var MousePointer2 = createLucideIcon("mouse-pointer-2", __iconNode17);
1141
1119
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js
1142
- var __iconNode21 = [
1120
+ var __iconNode18 = [
1143
1121
  ["path", { d: "M14 4.1 12 6", key: "ita8i4" }],
1144
1122
  ["path", { d: "m5.1 8-2.9-.8", key: "1go3kf" }],
1145
1123
  ["path", { d: "m6 12-1.9 2", key: "mnht97" }],
@@ -1152,9 +1130,15 @@ var __iconNode21 = [
1152
1130
  }
1153
1131
  ]
1154
1132
  ];
1155
- var MousePointerClick = createLucideIcon("mouse-pointer-click", __iconNode21);
1133
+ var MousePointerClick = createLucideIcon("mouse-pointer-click", __iconNode18);
1134
+ // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/pause.js
1135
+ var __iconNode19 = [
1136
+ ["rect", { x: "14", y: "3", width: "5", height: "18", rx: "1", key: "kaeet6" }],
1137
+ ["rect", { x: "5", y: "3", width: "5", height: "18", rx: "1", key: "1wsw3u" }]
1138
+ ];
1139
+ var Pause = createLucideIcon("pause", __iconNode19);
1156
1140
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/play.js
1157
- var __iconNode22 = [
1141
+ var __iconNode20 = [
1158
1142
  [
1159
1143
  "path",
1160
1144
  {
@@ -1163,9 +1147,9 @@ var __iconNode22 = [
1163
1147
  }
1164
1148
  ]
1165
1149
  ];
1166
- var Play = createLucideIcon("play", __iconNode22);
1150
+ var Play = createLucideIcon("play", __iconNode20);
1167
1151
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/send.js
1168
- var __iconNode23 = [
1152
+ var __iconNode21 = [
1169
1153
  [
1170
1154
  "path",
1171
1155
  {
@@ -1175,18 +1159,18 @@ var __iconNode23 = [
1175
1159
  ],
1176
1160
  ["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
1177
1161
  ];
1178
- var Send = createLucideIcon("send", __iconNode23);
1162
+ var Send = createLucideIcon("send", __iconNode21);
1179
1163
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/square.js
1180
- var __iconNode24 = [
1164
+ var __iconNode22 = [
1181
1165
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
1182
1166
  ];
1183
- var Square = createLucideIcon("square", __iconNode24);
1167
+ var Square = createLucideIcon("square", __iconNode22);
1184
1168
  // ../../node_modules/.bun/lucide-react@1.8.0+83d5fd7b249dbeef/node_modules/lucide-react/dist/esm/icons/x.js
1185
- var __iconNode25 = [
1169
+ var __iconNode23 = [
1186
1170
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
1187
1171
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
1188
1172
  ];
1189
- var X = createLucideIcon("x", __iconNode25);
1173
+ var X = createLucideIcon("x", __iconNode23);
1190
1174
  // src/components/AgentCursor.tsx
1191
1175
  import { useContext as useContext3, useEffect as useEffect7, useLayoutEffect, useRef as useRef2, useState as useState7 } from "react";
1192
1176
 
@@ -2749,12 +2733,14 @@ import { useContext as useContext4, useEffect as useEffect12, useRef as useRef7,
2749
2733
  import { useEffect as useEffect11, useRef as useRef6 } from "react";
2750
2734
  import { flushSync } from "react-dom";
2751
2735
  var DRAG_THRESHOLD_PX = 5;
2752
- function useLauncherDrag(containerRef, onDrop, followRefs) {
2736
+ function useLauncherDrag(containerRef, onDrop, followRefs, reportDragging) {
2753
2737
  const wasDraggedRef = useRef6(false);
2754
2738
  const onDropRef = useRef6(onDrop);
2755
2739
  onDropRef.current = onDrop;
2756
2740
  const followTargetsRef = useRef6(followRefs);
2757
2741
  followTargetsRef.current = followRefs;
2742
+ const reportDraggingRef = useRef6(reportDragging);
2743
+ reportDraggingRef.current = reportDragging;
2758
2744
  useEffect11(() => {
2759
2745
  const el = containerRef.current;
2760
2746
  if (!el)
@@ -2810,6 +2796,7 @@ function useLauncherDrag(containerRef, onDrop, followRefs) {
2810
2796
  cancelPendingTransitionRestore();
2811
2797
  for (const follower of followers)
2812
2798
  freeze(follower);
2799
+ reportDraggingRef.current?.(true);
2813
2800
  }
2814
2801
  dragging = true;
2815
2802
  wasDraggedRef.current = true;
@@ -2836,6 +2823,8 @@ function useLauncherDrag(containerRef, onDrop, followRefs) {
2836
2823
  };
2837
2824
  const endDrag = () => {
2838
2825
  activePointerId = null;
2826
+ if (dragging)
2827
+ reportDraggingRef.current?.(false);
2839
2828
  window.removeEventListener("pointermove", onPointerMove);
2840
2829
  window.removeEventListener("pointerup", onPointerUp);
2841
2830
  window.removeEventListener("pointercancel", onPointerCancel);
@@ -2880,6 +2869,8 @@ function useLauncherDrag(containerRef, onDrop, followRefs) {
2880
2869
  window.removeEventListener("pointermove", onPointerMove);
2881
2870
  window.removeEventListener("pointerup", onPointerUp);
2882
2871
  window.removeEventListener("pointercancel", onPointerCancel);
2872
+ if (dragging)
2873
+ reportDraggingRef.current?.(false);
2883
2874
  el.style.transform = "";
2884
2875
  cancelPendingTransitionRestore();
2885
2876
  for (const follower of followers) {
@@ -3538,7 +3529,7 @@ function PageActionHandler() {
3538
3529
  }
3539
3530
 
3540
3531
  // src/components/SessionControlBar.tsx
3541
- import { useContext as useContext6 } from "react";
3532
+ import { useContext as useContext6, useEffect as useEffect18 } from "react";
3542
3533
 
3543
3534
  // src/hooks/useActionControl.ts
3544
3535
  import { useLocalParticipant as useLocalParticipant3 } from "@livekit/components-react/hooks";
@@ -3703,20 +3694,114 @@ function usePhaseUpdates() {
3703
3694
  return { phases };
3704
3695
  }
3705
3696
 
3697
+ // src/hooks/useSessionHold.ts
3698
+ import { useLocalParticipant as useLocalParticipant6 } from "@livekit/components-react/hooks";
3699
+ import { useCallback as useCallback11, useEffect as useEffect17, useState as useState11 } from "react";
3700
+ var textEncoder4 = new TextEncoder;
3701
+ var FALLBACK_PAUSE_TIMEOUT_SECONDS = 120;
3702
+ function useSessionHold({
3703
+ pauseSession,
3704
+ pauseTimeoutSeconds
3705
+ }) {
3706
+ const { localParticipant } = useLocalParticipant6();
3707
+ const timeoutSeconds = pauseTimeoutSeconds ?? FALLBACK_PAUSE_TIMEOUT_SECONDS;
3708
+ const [isHeld, setIsHeld] = useState11(false);
3709
+ const [countdown, setCountdown] = useState11(timeoutSeconds);
3710
+ const publish = useCallback11(async (type) => {
3711
+ await localParticipant.publishData(textEncoder4.encode(JSON.stringify({ type })), {
3712
+ reliable: true,
3713
+ topic: SESSION_HOLD_TOPIC
3714
+ });
3715
+ }, [localParticipant]);
3716
+ const hold = useCallback11(async () => {
3717
+ try {
3718
+ await localParticipant.setMicrophoneEnabled(false);
3719
+ await publish("pause");
3720
+ setIsHeld(true);
3721
+ } catch (error) {
3722
+ console.error("Failed to hold session:", error);
3723
+ }
3724
+ }, [localParticipant, publish]);
3725
+ const release = useCallback11(async () => {
3726
+ try {
3727
+ await localParticipant.setMicrophoneEnabled(true);
3728
+ await publish("resume");
3729
+ setIsHeld(false);
3730
+ } catch (error) {
3731
+ console.error("Failed to release session:", error);
3732
+ }
3733
+ }, [localParticipant, publish]);
3734
+ useEffect17(() => {
3735
+ if (!isHeld) {
3736
+ setCountdown(timeoutSeconds);
3737
+ return;
3738
+ }
3739
+ const id = setInterval(() => {
3740
+ setCountdown((seconds) => Math.max(0, seconds - 1));
3741
+ }, 1000);
3742
+ return () => clearInterval(id);
3743
+ }, [isHeld, timeoutSeconds]);
3744
+ useEffect17(() => {
3745
+ if (isHeld && countdown === 0) {
3746
+ setIsHeld(false);
3747
+ pauseSession();
3748
+ }
3749
+ }, [isHeld, countdown, pauseSession]);
3750
+ const toggle = useCallback11(() => {
3751
+ if (isHeld) {
3752
+ release();
3753
+ } else {
3754
+ hold();
3755
+ }
3756
+ }, [isHeld, hold, release]);
3757
+ return { isHeld, countdown, toggle };
3758
+ }
3759
+
3760
+ // src/components/PausedCountdown.tsx
3761
+ import { jsxs as jsxs5 } from "react/jsx-runtime";
3762
+ function PausedCountdown({ secondsRemaining }) {
3763
+ const minutes = Math.floor(secondsRemaining / 60);
3764
+ const seconds = String(secondsRemaining % 60).padStart(2, "0");
3765
+ return /* @__PURE__ */ jsxs5("span", {
3766
+ role: "timer",
3767
+ "aria-label": `Agent closes in ${secondsRemaining} seconds`,
3768
+ className: "skippr:flex skippr:h-[38px] skippr:items-center skippr:whitespace-nowrap skippr:px-1 skippr:text-[13px] skippr:font-medium skippr:text-neutral-500 skippr:[animation:skippr-stage-fade_240ms_ease-out]",
3769
+ children: [
3770
+ "Agent closes in",
3771
+ /* @__PURE__ */ jsxs5("span", {
3772
+ className: "skippr:ml-1 skippr:font-semibold skippr:tabular-nums skippr:text-bubble",
3773
+ children: [
3774
+ minutes,
3775
+ ":",
3776
+ seconds
3777
+ ]
3778
+ })
3779
+ ]
3780
+ });
3781
+ }
3782
+
3706
3783
  // src/components/SessionControlBar.tsx
3707
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
3784
+ import { jsx as jsx5, jsxs as jsxs6, Fragment } from "react/jsx-runtime";
3708
3785
  var STANDBY_BAR_WIDTH = 168;
3709
- var READY_BAR_WIDTH = 176;
3710
- var TEXT_BAR_WIDTH = 64;
3711
- var SCREEN_SHARE_EXTRA_WIDTH = 56;
3712
- var ACTION_CONTROL_EXTRA_WIDTH = 56;
3713
- var MIC_REGION_WIDTH = 104;
3714
- var MIC_SQUARE_WIDTH = 48;
3715
- var SQUARE_BUTTON = "skippr:flex skippr:size-12 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-2xl skippr:cursor-pointer skippr:transition-colors";
3786
+ var READY_BAR_WIDTH = 238;
3787
+ var PAUSED_BAR_WIDTH = 200;
3788
+ var TEXT_BAR_WIDTH = 100;
3789
+ var SCREEN_SHARE_EXTRA_WIDTH = 46;
3790
+ var ACTION_CONTROL_EXTRA_WIDTH = 46;
3791
+ var MIC_REGION_WIDTH = 130;
3792
+ var MIC_SQUARE_WIDTH = 38;
3793
+ var AGENT_ACTIVITY_WIDTH = 84;
3794
+ var SQUARE_BUTTON = "skippr:flex skippr:size-[38px] skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-[12px] skippr:cursor-pointer skippr:transition-colors";
3716
3795
  var AGENT_BARS = 4;
3717
3796
  var AGENT_BAR_IDLE_HEIGHT_PX = 4;
3718
3797
  var AGENT_BAR_MAX_GROWTH_PX = 12;
3719
3798
  var AGENT_NOISE_GATE = 0;
3799
+ var AGENT_STATE_LABELS = {
3800
+ idle: "Idle",
3801
+ listening: "Listening",
3802
+ thinking: "Thinking",
3803
+ speaking: "Talking"
3804
+ };
3720
3805
  function AgentActivity({
3721
3806
  state,
3722
3807
  isActing,
@@ -3728,68 +3813,72 @@ function AgentActivity({
3728
3813
  maxGrowthPx: AGENT_BAR_MAX_GROWTH_PX,
3729
3814
  noiseGate: AGENT_NOISE_GATE
3730
3815
  });
3731
- if (isActing) {
3732
- return /* @__PURE__ */ jsx5("span", {
3733
- role: "status",
3734
- className: "skippr:flex skippr:h-5 skippr:w-12 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:text-bubble",
3735
- "aria-label": "Agent is acting",
3736
- children: /* @__PURE__ */ jsx5(MousePointerClick, {
3737
- strokeWidth: 2,
3738
- className: "skippr:size-5 skippr:[animation:skippr-finger-tap_1.1s_ease-in-out_infinite]"
3739
- })
3740
- });
3741
- }
3742
- return /* @__PURE__ */ jsxs5("span", {
3816
+ const label = isActing ? "Working" : AGENT_STATE_LABELS[state] ?? "";
3817
+ return /* @__PURE__ */ jsxs6("span", {
3743
3818
  role: "status",
3744
- className: "skippr:flex skippr:h-5 skippr:w-12 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:text-bubble",
3745
- "aria-label": `Agent is ${state}`,
3819
+ className: "skippr:flex skippr:items-center skippr:gap-1.5 skippr:text-bubble",
3820
+ "aria-label": isActing ? "Agent is acting" : `Agent is ${state}`,
3746
3821
  children: [
3747
- state === "speaking" && /* @__PURE__ */ jsx5("span", {
3748
- className: "skippr:flex skippr:h-5 skippr:items-center skippr:gap-[2px]",
3749
- children: Array.from({ length: AGENT_BARS }).map((_, index2) => /* @__PURE__ */ jsx5("span", {
3750
- ref: (el) => {
3751
- barRefs.current[index2] = el;
3752
- },
3753
- className: "skippr:w-[2px] skippr:rounded-full skippr:bg-current skippr:transition-[height] skippr:duration-75",
3754
- style: { height: AGENT_BAR_IDLE_HEIGHT_PX }
3755
- }, index2))
3756
- }),
3757
- state === "thinking" && /* @__PURE__ */ jsxs5("span", {
3758
- className: "skippr:flex skippr:items-center skippr:gap-[3px]",
3759
- children: [
3760
- /* @__PURE__ */ jsx5("span", {
3761
- className: "skippr:size-[5px] skippr:rounded-full skippr:bg-current skippr:animate-bounce skippr:[animation-delay:0ms]"
3762
- }),
3763
- /* @__PURE__ */ jsx5("span", {
3764
- className: "skippr:size-[5px] skippr:rounded-full skippr:bg-current skippr:animate-bounce skippr:[animation-delay:150ms]"
3765
- }),
3766
- /* @__PURE__ */ jsx5("span", {
3767
- className: "skippr:size-[5px] skippr:rounded-full skippr:bg-current skippr:animate-bounce skippr:[animation-delay:300ms]"
3768
- })
3769
- ]
3822
+ /* @__PURE__ */ jsx5("span", {
3823
+ className: "skippr:flex skippr:size-5 skippr:shrink-0 skippr:items-center skippr:justify-center",
3824
+ children: isActing ? /* @__PURE__ */ jsx5(MousePointerClick, {
3825
+ strokeWidth: 2,
3826
+ className: "skippr:size-5 skippr:[animation:skippr-finger-tap_1.1s_ease-in-out_infinite]"
3827
+ }) : /* @__PURE__ */ jsxs6(Fragment, {
3828
+ children: [
3829
+ state === "speaking" && /* @__PURE__ */ jsx5("span", {
3830
+ className: "skippr:flex skippr:h-5 skippr:items-center skippr:gap-[2px]",
3831
+ children: Array.from({ length: AGENT_BARS }).map((_, index2) => /* @__PURE__ */ jsx5("span", {
3832
+ ref: (el) => {
3833
+ barRefs.current[index2] = el;
3834
+ },
3835
+ className: "skippr:w-[2px] skippr:rounded-full skippr:bg-current skippr:transition-[height] skippr:duration-75",
3836
+ style: { height: AGENT_BAR_IDLE_HEIGHT_PX }
3837
+ }, index2))
3838
+ }),
3839
+ state === "thinking" && /* @__PURE__ */ jsxs6("span", {
3840
+ className: "skippr:flex skippr:items-center skippr:gap-[3px]",
3841
+ children: [
3842
+ /* @__PURE__ */ jsx5("span", {
3843
+ className: "skippr:size-[5px] skippr:rounded-full skippr:bg-current skippr:animate-bounce skippr:[animation-delay:0ms]"
3844
+ }),
3845
+ /* @__PURE__ */ jsx5("span", {
3846
+ className: "skippr:size-[5px] skippr:rounded-full skippr:bg-current skippr:animate-bounce skippr:[animation-delay:150ms]"
3847
+ }),
3848
+ /* @__PURE__ */ jsx5("span", {
3849
+ className: "skippr:size-[5px] skippr:rounded-full skippr:bg-current skippr:animate-bounce skippr:[animation-delay:300ms]"
3850
+ })
3851
+ ]
3852
+ }),
3853
+ state === "listening" && /* @__PURE__ */ jsxs6("svg", {
3854
+ viewBox: "0 0 24 24",
3855
+ className: "skippr:size-5",
3856
+ fill: "none",
3857
+ stroke: "currentColor",
3858
+ strokeWidth: "2",
3859
+ strokeLinecap: "round",
3860
+ strokeLinejoin: "round",
3861
+ "aria-hidden": "true",
3862
+ children: [
3863
+ /* @__PURE__ */ jsx5("path", {
3864
+ d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"
3865
+ }),
3866
+ /* @__PURE__ */ jsx5("circle", {
3867
+ cx: "12",
3868
+ cy: "12",
3869
+ r: "2.5",
3870
+ fill: "currentColor",
3871
+ stroke: "none",
3872
+ className: "skippr:origin-center skippr:[animation:skippr-banner-look_2.4s_ease-in-out_infinite]"
3873
+ })
3874
+ ]
3875
+ })
3876
+ ]
3877
+ })
3770
3878
  }),
3771
- state === "listening" && /* @__PURE__ */ jsxs5("svg", {
3772
- viewBox: "0 0 24 24",
3773
- className: "skippr:size-5",
3774
- fill: "none",
3775
- stroke: "currentColor",
3776
- strokeWidth: "2",
3777
- strokeLinecap: "round",
3778
- strokeLinejoin: "round",
3779
- "aria-hidden": "true",
3780
- children: [
3781
- /* @__PURE__ */ jsx5("path", {
3782
- d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"
3783
- }),
3784
- /* @__PURE__ */ jsx5("circle", {
3785
- cx: "12",
3786
- cy: "12",
3787
- r: "2.5",
3788
- fill: "currentColor",
3789
- stroke: "none",
3790
- className: "skippr:origin-center skippr:[animation:skippr-banner-look_2.4s_ease-in-out_infinite]"
3791
- })
3792
- ]
3879
+ /* @__PURE__ */ jsx5("span", {
3880
+ className: "skippr:text-[11px] skippr:font-medium skippr:capitalize",
3881
+ children: label
3793
3882
  })
3794
3883
  ]
3795
3884
  });
@@ -3811,24 +3900,51 @@ function SessionControlBar() {
3811
3900
  if (!internalCtx) {
3812
3901
  throw new Error("SessionControlBar must be used within a <LiveAgent> provider");
3813
3902
  }
3814
- const { textMode, launcherBottomPx, popsDown, controlBarRef, commitLauncherDrop, panelRef } = internalCtx;
3903
+ const {
3904
+ textMode,
3905
+ launcherBottomPx,
3906
+ popsDown,
3907
+ controlBarRef,
3908
+ commitLauncherDrop,
3909
+ panelRef,
3910
+ pauseTimeoutSeconds,
3911
+ isDragging,
3912
+ setIsDragging
3913
+ } = internalCtx;
3815
3914
  const followsPanel = variant === "floating" && isPanelOpen;
3816
3915
  const panelFollowers = followsPanel ? [panelRef] : null;
3817
- const { wasDraggedRef } = useLauncherDrag(controlBarRef, commitLauncherDrop, panelFollowers);
3916
+ const { wasDraggedRef } = useLauncherDrag(controlBarRef, commitLauncherDrop, panelFollowers, setIsDragging);
3818
3917
  const { isMuted, toggleMute, isScreenSharing, toggleScreenShare } = useMediaControls();
3819
3918
  const { state, mediaStreamTrack: agentMediaStreamTrack } = useAgentVoiceState();
3820
3919
  const { phases } = usePhaseUpdates();
3821
3920
  const { actionsActive, actionsPaused: actionsPaused2, togglePaused } = useActionControl();
3921
+ const {
3922
+ isHeld,
3923
+ countdown,
3924
+ toggle: togglePause
3925
+ } = useSessionHold({
3926
+ pauseSession,
3927
+ pauseTimeoutSeconds
3928
+ });
3929
+ useEffect18(() => {
3930
+ if (isHeld)
3931
+ minimizePanel();
3932
+ }, [isHeld, minimizePanel]);
3822
3933
  const isReady = state === "listening" || state === "thinking" || state === "speaking";
3823
- const { barRefs, isTalking } = useMicLevel(isReady && !isMuted && !textMode);
3934
+ const { barRefs, isTalking } = useMicLevel(isReady && !isMuted && !textMode && !isHeld);
3824
3935
  const showScreenShareToggle = captureMode === "screenshare";
3825
3936
  const showActionControl = captureMode === "auto" && actionsActive;
3826
3937
  const screenShareExtra = showScreenShareToggle ? SCREEN_SHARE_EXTRA_WIDTH : 0;
3827
3938
  const actionControlExtra = showActionControl ? ACTION_CONTROL_EXTRA_WIDTH : 0;
3828
3939
  let barWidth = STANDBY_BAR_WIDTH;
3829
3940
  if (isReady) {
3830
- const base = textMode ? TEXT_BAR_WIDTH : READY_BAR_WIDTH;
3831
- barWidth = base + screenShareExtra + actionControlExtra;
3941
+ if (isHeld) {
3942
+ barWidth = PAUSED_BAR_WIDTH;
3943
+ } else if (textMode) {
3944
+ barWidth = TEXT_BAR_WIDTH + screenShareExtra + actionControlExtra;
3945
+ } else {
3946
+ barWidth = READY_BAR_WIDTH + screenShareExtra + actionControlExtra;
3947
+ }
3832
3948
  }
3833
3949
  const agendaModule = activeModule && activeModule.mode !== AGENT_MODE.AlwaysOn && activeModule.totalPhases > 0 ? activeModule : null;
3834
3950
  const agendaProgress = phases.length > 0 ? {
@@ -3856,13 +3972,13 @@ function SessionControlBar() {
3856
3972
  return;
3857
3973
  action();
3858
3974
  };
3859
- return /* @__PURE__ */ jsxs5("div", {
3975
+ return /* @__PURE__ */ jsxs6("div", {
3860
3976
  ref: controlBarRef,
3861
3977
  style: { bottom: launcherBottomPx },
3862
3978
  className: cn("skippr:fixed skippr:z-[9999] skippr:touch-none skippr:cursor-grab", position === "right" ? "skippr:right-3" : "skippr:left-3"),
3863
3979
  children: [
3864
3980
  !isPanelOpen && agendaModule && agendaProgress && /* @__PURE__ */ jsx5("div", {
3865
- className: cn("skippr:absolute", popsDown ? "skippr:top-full skippr:mt-3" : "skippr:bottom-full skippr:mb-3", position === "right" ? "skippr:right-0" : "skippr:left-0"),
3981
+ className: cn("skippr:absolute", popsDown ? "skippr:top-full skippr:mt-3" : "skippr:bottom-full skippr:mb-3", isReady ? position === "right" ? "skippr:right-7" : "skippr:left-7" : position === "right" ? "skippr:right-0" : "skippr:left-0"),
3866
3982
  children: /* @__PURE__ */ jsx5(ModulePill, {
3867
3983
  module: agendaModule,
3868
3984
  onSelect: ifNotDragged(openAgenda),
@@ -3871,14 +3987,14 @@ function SessionControlBar() {
3871
3987
  isLive: true
3872
3988
  })
3873
3989
  }),
3874
- /* @__PURE__ */ jsxs5("div", {
3990
+ /* @__PURE__ */ jsxs6("div", {
3875
3991
  style: { width: barWidth },
3876
- className: cn("skippr:group skippr:relative skippr:flex skippr:h-16 skippr:items-center skippr:justify-center skippr:gap-2", "skippr:rounded-[20px] skippr:bg-white skippr:p-2", "skippr:shadow-[0_10px_32px_rgba(0,0,0,0.18)] skippr:ring-1 skippr:ring-black/5", "skippr:transition-[width] skippr:duration-300 skippr:ease-out", "skippr:[animation:skippr-toolset-pop_440ms_cubic-bezier(0.22,1,0.36,1)]"),
3992
+ className: cn("skippr:group skippr:relative skippr:flex skippr:h-[54px] skippr:items-center skippr:justify-center skippr:gap-2", "skippr:rounded-[20px] skippr:bg-white skippr:p-2", "skippr:shadow-[0_10px_32px_rgba(0,0,0,0.18)] skippr:ring-1 skippr:ring-black/5", "skippr:transition-[width,margin] skippr:duration-300 skippr:ease-out", "skippr:[animation:skippr-toolset-pop_440ms_cubic-bezier(0.22,1,0.36,1)]", isReady && (position === "right" ? "skippr:mr-7" : "skippr:ml-7")),
3877
3993
  children: [
3878
- !isReady && /* @__PURE__ */ jsxs5("span", {
3879
- className: "skippr:flex skippr:h-12 skippr:items-center skippr:justify-center skippr:gap-2 skippr:text-[13px] skippr:font-medium skippr:text-bubble skippr:[animation:skippr-stage-fade_240ms_ease-out]",
3994
+ !isReady && /* @__PURE__ */ jsxs6("span", {
3995
+ className: "skippr:flex skippr:h-[38px] skippr:items-center skippr:justify-center skippr:gap-2 skippr:text-[13px] skippr:font-medium skippr:text-bubble skippr:[animation:skippr-stage-fade_240ms_ease-out]",
3880
3996
  children: [
3881
- /* @__PURE__ */ jsxs5("span", {
3997
+ /* @__PURE__ */ jsxs6("span", {
3882
3998
  className: "skippr:flex skippr:items-center skippr:gap-[3px]",
3883
3999
  children: [
3884
4000
  /* @__PURE__ */ jsx5("span", {
@@ -3897,135 +4013,159 @@ function SessionControlBar() {
3897
4013
  })
3898
4014
  ]
3899
4015
  }),
3900
- isReady && /* @__PURE__ */ jsxs5("div", {
3901
- className: "skippr:flex skippr:items-center skippr:gap-2 skippr:[animation:skippr-stage-fade_240ms_ease-out]",
4016
+ isReady && /* @__PURE__ */ jsxs6("div", {
4017
+ className: cn("skippr:flex skippr:items-center skippr:gap-2 skippr:[animation:skippr-stage-fade_240ms_ease-out]", isHeld && "skippr:w-full skippr:justify-start"),
3902
4018
  children: [
3903
- !textMode && /* @__PURE__ */ jsxs5("div", {
3904
- className: "skippr:relative skippr:h-12",
3905
- style: { width: MIC_REGION_WIDTH },
3906
- children: [
3907
- !isTalking && /* @__PURE__ */ jsx5("span", {
3908
- className: "skippr:absolute skippr:inset-y-0 skippr:right-[-3px] skippr:flex skippr:w-14 skippr:items-center skippr:justify-center skippr:[animation:skippr-agent-in_200ms_ease-out_240ms_both]",
3909
- children: /* @__PURE__ */ jsx5(AgentActivity, {
3910
- state,
3911
- isActing: showActionControl && !actionsPaused2,
3912
- mediaStreamTrack: agentMediaStreamTrack
3913
- })
3914
- }),
3915
- /* @__PURE__ */ jsxs5("button", {
3916
- type: "button",
3917
- onClick: ifNotDragged(() => void toggleMute()),
3918
- "aria-label": isMuted ? "Unmute" : "Mute",
3919
- className: "skippr:group skippr:absolute skippr:top-0 skippr:left-0 skippr:z-10 skippr:flex skippr:h-12 skippr:items-center skippr:gap-2.5 skippr:overflow-hidden skippr:rounded-2xl skippr:bg-bubble skippr:pl-3.5 skippr:text-white skippr:cursor-pointer skippr:transition-[width] skippr:duration-300 skippr:ease-out",
3920
- style: { width: isTalking ? MIC_REGION_WIDTH : MIC_SQUARE_WIDTH },
3921
- children: [
3922
- /* @__PURE__ */ jsx5("span", {
3923
- className: cn("skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center skippr:transition-colors", isMuted ? "skippr:text-red-400 skippr:group-hover:text-red-300" : "skippr:text-white skippr:group-hover:text-white/80"),
3924
- children: isMuted ? /* @__PURE__ */ jsx5(MicOff, {
3925
- className: "skippr:size-5"
3926
- }) : /* @__PURE__ */ jsx5(Mic, {
3927
- className: "skippr:size-5"
3928
- })
3929
- }),
3930
- /* @__PURE__ */ jsx5("span", {
3931
- className: cn("skippr:flex skippr:h-6 skippr:flex-1 skippr:items-center skippr:justify-center skippr:gap-[3px] skippr:transition-opacity skippr:duration-200", isTalking ? "skippr:opacity-100" : "skippr:opacity-0"),
3932
- children: Array.from({ length: MIC_BARS }).map((_, index2) => /* @__PURE__ */ jsx5("span", {
3933
- ref: (el) => {
3934
- barRefs.current[index2] = el;
3935
- },
3936
- className: "skippr:w-[3px] skippr:rounded-full skippr:bg-white skippr:transition-[height] skippr:duration-75",
3937
- style: { height: 5 }
3938
- }, index2))
3939
- })
3940
- ]
3941
- })
3942
- ]
3943
- }),
3944
- showScreenShareToggle && /* @__PURE__ */ jsx5("button", {
3945
- type: "button",
3946
- onClick: ifNotDragged(() => void toggleScreenShare()),
3947
- "aria-label": isScreenSharing ? "Stop sharing screen" : "Share screen",
3948
- className: cn(SQUARE_BUTTON, isScreenSharing ? "skippr:bg-bubble skippr:text-white skippr:hover:bg-[#3a384b]" : "skippr:bg-neutral-100 skippr:text-neutral-700 skippr:hover:bg-neutral-200"),
3949
- children: isScreenSharing ? /* @__PURE__ */ jsx5(MonitorOff, {
3950
- className: "skippr:size-5"
3951
- }) : /* @__PURE__ */ jsx5(Monitor, {
3952
- className: "skippr:size-5"
3953
- })
3954
- }),
3955
4019
  /* @__PURE__ */ jsx5("button", {
3956
4020
  type: "button",
3957
- onClick: ifNotDragged(togglePanel),
3958
- "aria-label": isPanelOpen ? "Close panel" : agendaModule && !textMode ? "Open agenda" : "Open chat",
3959
- className: cn(SQUARE_BUTTON, "skippr:text-neutral-700", textMode ? "skippr:hover:bg-neutral-100" : "skippr:bg-neutral-100 skippr:hover:bg-neutral-200"),
3960
- children: /* @__PURE__ */ jsx5(MessageSquare, {
3961
- className: "skippr:size-5"
3962
- })
3963
- }),
3964
- showActionControl && /* @__PURE__ */ jsx5("button", {
3965
- type: "button",
3966
- onClick: ifNotDragged(() => void togglePaused()),
3967
- "aria-label": actionsPaused2 ? "Resume actions" : "Stop actions",
3968
- title: actionsPaused2 ? "Resume" : "Stop",
3969
- className: cn(SQUARE_BUTTON, actionsPaused2 ? "skippr:bg-green-100 skippr:text-green-700 skippr:hover:bg-green-200" : "skippr:bg-red-100 skippr:text-red-600 skippr:hover:bg-red-200"),
3970
- children: actionsPaused2 ? /* @__PURE__ */ jsx5(Play, {
4021
+ onClick: ifNotDragged(togglePause),
4022
+ "aria-label": isHeld ? "Resume" : "Pause",
4023
+ title: isHeld ? "Resume" : "Pause",
4024
+ className: cn(SQUARE_BUTTON, isHeld ? "skippr:bg-bubble skippr:text-white skippr:hover:bg-[#3a384b]" : "skippr:bg-neutral-100 skippr:text-neutral-700 skippr:hover:bg-neutral-200"),
4025
+ children: isHeld ? /* @__PURE__ */ jsx5(Play, {
3971
4026
  className: "skippr:size-5",
3972
4027
  fill: "currentColor"
3973
- }) : /* @__PURE__ */ jsx5(Square, {
4028
+ }) : /* @__PURE__ */ jsx5(Pause, {
3974
4029
  className: "skippr:size-5",
3975
4030
  fill: "currentColor"
3976
4031
  })
3977
- })
3978
- ]
3979
- }, textMode ? "ready-text" : "ready"),
3980
- isReady && /* @__PURE__ */ jsxs5("button", {
3981
- type: "button",
3982
- onClick: ifNotDragged(() => void pauseSession()),
3983
- disabled: isPausing,
3984
- "aria-label": "Pause session",
3985
- "aria-busy": isPausing,
3986
- className: cn("skippr:absolute skippr:-top-2 skippr:-right-2 skippr:z-20 skippr:flex skippr:size-6 skippr:items-center skippr:justify-center", "skippr:rounded-full skippr:bg-bubble skippr:text-white", "skippr:shadow-[0_4px_14px_rgba(0,0,0,0.3)]", "skippr:transition-opacity skippr:duration-150", isPausing ? "skippr:cursor-default" : "skippr:cursor-pointer skippr:hover:bg-[#3a384b]"),
3987
- children: [
3988
- /* @__PURE__ */ jsx5(X, {
3989
- className: cn("skippr:size-3.5 skippr:transition-opacity skippr:duration-200", isPausing && "skippr:opacity-40"),
3990
- strokeWidth: 2.5
3991
4032
  }),
3992
- isPausing && /* @__PURE__ */ jsxs5("svg", {
3993
- viewBox: "0 0 24 24",
3994
- fill: "none",
3995
- "aria-hidden": "true",
3996
- className: "skippr:absolute skippr:inset-0 skippr:size-full skippr:animate-spin skippr:motion-reduce:hidden",
4033
+ isHeld ? /* @__PURE__ */ jsx5(PausedCountdown, {
4034
+ secondsRemaining: countdown
4035
+ }) : /* @__PURE__ */ jsxs6(Fragment, {
3997
4036
  children: [
3998
- /* @__PURE__ */ jsx5("circle", {
3999
- cx: "12",
4000
- cy: "12",
4001
- r: "10.5",
4002
- stroke: "white",
4003
- strokeOpacity: "0.2",
4004
- strokeWidth: "1.5"
4037
+ !textMode && /* @__PURE__ */ jsxs6("div", {
4038
+ className: "skippr:relative skippr:h-[38px]",
4039
+ style: { width: MIC_REGION_WIDTH },
4040
+ children: [
4041
+ !isTalking && /* @__PURE__ */ jsx5("span", {
4042
+ className: "skippr:absolute skippr:inset-y-0 skippr:right-0 skippr:flex skippr:items-center skippr:justify-center skippr:[animation:skippr-agent-in_200ms_ease-out_240ms_both]",
4043
+ style: { width: AGENT_ACTIVITY_WIDTH },
4044
+ children: /* @__PURE__ */ jsx5(AgentActivity, {
4045
+ state,
4046
+ isActing: showActionControl && !actionsPaused2,
4047
+ mediaStreamTrack: agentMediaStreamTrack
4048
+ })
4049
+ }),
4050
+ /* @__PURE__ */ jsxs6("button", {
4051
+ type: "button",
4052
+ onClick: ifNotDragged(() => void toggleMute()),
4053
+ "aria-label": isMuted ? "Unmute" : "Mute",
4054
+ className: cn("skippr:group skippr:absolute skippr:top-0 skippr:left-0 skippr:z-10 skippr:flex skippr:h-[38px] skippr:items-center skippr:gap-2.5 skippr:overflow-hidden skippr:rounded-[12px] skippr:bg-bubble skippr:text-white skippr:cursor-pointer skippr:transition-[width] skippr:duration-300 skippr:ease-out", isTalking ? "skippr:justify-start skippr:pl-3.5" : "skippr:justify-center"),
4055
+ style: { width: isTalking ? MIC_REGION_WIDTH : MIC_SQUARE_WIDTH },
4056
+ children: [
4057
+ /* @__PURE__ */ jsx5("span", {
4058
+ className: cn("skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-center skippr:transition-colors", isMuted ? "skippr:text-red-400 skippr:group-hover:text-red-300" : "skippr:text-white skippr:group-hover:text-white/80"),
4059
+ children: isMuted ? /* @__PURE__ */ jsx5(MicOff, {
4060
+ className: "skippr:size-5"
4061
+ }) : /* @__PURE__ */ jsx5(Mic, {
4062
+ className: "skippr:size-5"
4063
+ })
4064
+ }),
4065
+ /* @__PURE__ */ jsx5("span", {
4066
+ className: cn("skippr:h-6 skippr:flex-1 skippr:items-center skippr:justify-center skippr:gap-[3px] skippr:transition-opacity skippr:duration-200", isTalking ? "skippr:flex skippr:opacity-100" : "skippr:hidden"),
4067
+ children: Array.from({ length: MIC_BARS }).map((_, index2) => /* @__PURE__ */ jsx5("span", {
4068
+ ref: (el) => {
4069
+ barRefs.current[index2] = el;
4070
+ },
4071
+ className: "skippr:w-[3px] skippr:rounded-full skippr:bg-white skippr:transition-[height] skippr:duration-75",
4072
+ style: { height: 5 }
4073
+ }, index2))
4074
+ })
4075
+ ]
4076
+ })
4077
+ ]
4078
+ }),
4079
+ showScreenShareToggle && /* @__PURE__ */ jsx5("button", {
4080
+ type: "button",
4081
+ onClick: ifNotDragged(() => void toggleScreenShare()),
4082
+ "aria-label": isScreenSharing ? "Stop sharing screen" : "Share screen",
4083
+ className: cn(SQUARE_BUTTON, isScreenSharing ? "skippr:bg-bubble skippr:text-white skippr:hover:bg-[#3a384b]" : "skippr:bg-neutral-100 skippr:text-neutral-700 skippr:hover:bg-neutral-200"),
4084
+ children: isScreenSharing ? /* @__PURE__ */ jsx5(MonitorOff, {
4085
+ className: "skippr:size-5"
4086
+ }) : /* @__PURE__ */ jsx5(Monitor, {
4087
+ className: "skippr:size-5"
4088
+ })
4005
4089
  }),
4006
- /* @__PURE__ */ jsx5("circle", {
4007
- cx: "12",
4008
- cy: "12",
4009
- r: "10.5",
4010
- stroke: "white",
4011
- strokeWidth: "1.5",
4012
- strokeLinecap: "round",
4013
- strokeDasharray: "17 49"
4090
+ /* @__PURE__ */ jsx5("button", {
4091
+ type: "button",
4092
+ onClick: ifNotDragged(togglePanel),
4093
+ "aria-label": isPanelOpen ? "Close panel" : agendaModule && !textMode ? "Open agenda" : "Open chat",
4094
+ className: cn(SQUARE_BUTTON, "skippr:text-neutral-700", textMode ? "skippr:hover:bg-neutral-100" : "skippr:bg-neutral-100 skippr:hover:bg-neutral-200"),
4095
+ children: /* @__PURE__ */ jsx5(MessageSquare, {
4096
+ className: "skippr:size-5"
4097
+ })
4098
+ }),
4099
+ showActionControl && /* @__PURE__ */ jsx5("button", {
4100
+ type: "button",
4101
+ onClick: ifNotDragged(() => void togglePaused()),
4102
+ "aria-label": actionsPaused2 ? "Resume actions" : "Stop actions",
4103
+ title: actionsPaused2 ? "Resume" : "Stop",
4104
+ className: cn(SQUARE_BUTTON, actionsPaused2 ? "skippr:bg-green-100 skippr:text-green-700 skippr:hover:bg-green-200" : "skippr:bg-red-100 skippr:text-red-600 skippr:hover:bg-red-200"),
4105
+ children: actionsPaused2 ? /* @__PURE__ */ jsx5(Play, {
4106
+ className: "skippr:size-5",
4107
+ fill: "currentColor"
4108
+ }) : /* @__PURE__ */ jsx5(Square, {
4109
+ className: "skippr:size-5",
4110
+ fill: "currentColor"
4111
+ })
4014
4112
  })
4015
4113
  ]
4016
4114
  })
4017
4115
  ]
4018
- })
4116
+ }, textMode ? "ready-text" : "ready")
4019
4117
  ]
4118
+ }),
4119
+ isReady && !isDragging && /* @__PURE__ */ jsx5("button", {
4120
+ type: "button",
4121
+ onClick: ifNotDragged(() => void pauseSession()),
4122
+ disabled: isPausing,
4123
+ "aria-label": "End session",
4124
+ "aria-busy": isPausing,
4125
+ className: cn("skippr:absolute skippr:top-1/2 skippr:z-20 skippr:flex skippr:h-[54px] skippr:w-[50px] skippr:-mt-[27px] skippr:items-center", position === "right" ? "skippr:-right-8 skippr:justify-start skippr:pl-2.5" : "skippr:-left-8 skippr:justify-end skippr:pr-2.5", "skippr:rounded-[16px] skippr:bg-red-500 skippr:text-white", "skippr:shadow-[0_4px_14px_rgba(239,68,68,0.45)]", "skippr:transition-colors skippr:duration-150", "skippr:[animation:skippr-toolset-pop_280ms_cubic-bezier(0.22,1,0.36,1)]", isPausing ? "skippr:cursor-default" : "skippr:cursor-pointer skippr:hover:bg-red-600"),
4126
+ children: /* @__PURE__ */ jsxs6("span", {
4127
+ className: "skippr:relative skippr:flex skippr:size-5 skippr:items-center skippr:justify-center",
4128
+ children: [
4129
+ /* @__PURE__ */ jsx5(X, {
4130
+ className: cn("skippr:size-4 skippr:transition-opacity skippr:duration-200", isPausing && "skippr:opacity-40"),
4131
+ strokeWidth: 2.5
4132
+ }),
4133
+ isPausing && /* @__PURE__ */ jsxs6("svg", {
4134
+ viewBox: "0 0 24 24",
4135
+ fill: "none",
4136
+ "aria-hidden": "true",
4137
+ className: "skippr:absolute skippr:inset-0 skippr:size-full skippr:animate-spin skippr:motion-reduce:hidden",
4138
+ children: [
4139
+ /* @__PURE__ */ jsx5("circle", {
4140
+ cx: "12",
4141
+ cy: "12",
4142
+ r: "10.5",
4143
+ stroke: "white",
4144
+ strokeOpacity: "0.2",
4145
+ strokeWidth: "1.5"
4146
+ }),
4147
+ /* @__PURE__ */ jsx5("circle", {
4148
+ cx: "12",
4149
+ cy: "12",
4150
+ r: "10.5",
4151
+ stroke: "white",
4152
+ strokeWidth: "1.5",
4153
+ strokeLinecap: "round",
4154
+ strokeDasharray: "17 49"
4155
+ })
4156
+ ]
4157
+ })
4158
+ ]
4159
+ })
4020
4160
  })
4021
4161
  ]
4022
4162
  });
4023
4163
  }
4024
4164
 
4025
4165
  // src/components/ShadowHost.tsx
4026
- import { useLayoutEffect as useLayoutEffect2, useRef as useRef10, useState as useState11 } from "react";
4166
+ import { useLayoutEffect as useLayoutEffect2, useRef as useRef10, useState as useState12 } from "react";
4027
4167
  import { createPortal } from "react-dom";
4028
- import { jsx as jsx6, Fragment } from "react/jsx-runtime";
4168
+ import { jsx as jsx6, Fragment as Fragment2 } from "react/jsx-runtime";
4029
4169
  var PROPERTIES_STYLE_ID = "skippr-tw-properties";
4030
4170
  var PROPERTY_RULE = /@property\s+[^{]+\{[^}]*\}/g;
4031
4171
  function hoistTailwindProperties(css) {
@@ -4041,9 +4181,9 @@ function hoistTailwindProperties(css) {
4041
4181
  }
4042
4182
  function ShadowHost({ children }) {
4043
4183
  const hostRef = useRef10(null);
4044
- const [shadowRoot, setShadowRoot] = useState11(null);
4184
+ const [shadowRoot, setShadowRoot] = useState12(null);
4045
4185
  const css = `/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
4046
- @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-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}}}@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-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-green-100:oklch(96.2% .044 156.743);--skippr-color-green-200:oklch(92.5% .084 155.995);--skippr-color-green-700:oklch(52.7% .154 150.069);--skippr-color-emerald-400:oklch(76.5% .177 163.223);--skippr-color-emerald-500:oklch(69.6% .17 162.48);--skippr-color-neutral-100:oklch(97% 0 0);--skippr-color-neutral-200:oklch(92.2% 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-leading-tight:1.25;--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-pulse:pulse 2s cubic-bezier(.4,0,.6,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-0{inset:calc(var(--skippr-spacing)*0)}.skippr\\:inset-y-0{inset-block:calc(var(--skippr-spacing)*0)}.skippr\\:-top-2{top:calc(var(--skippr-spacing)*-2)}.skippr\\:top-0{top:calc(var(--skippr-spacing)*0)}.skippr\\:top-1\\/2{top:50%}.skippr\\:top-full{top:100%}.skippr\\:-right-2{right:calc(var(--skippr-spacing)*-2)}.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-\\[-3px\\]{right:-3px}.skippr\\:right-\\[24px\\]{right:24px}.skippr\\:-bottom-1{bottom:calc(var(--skippr-spacing)*-1)}.skippr\\:-bottom-9{bottom:calc(var(--skippr-spacing)*-9)}.skippr\\:bottom-20{bottom:calc(var(--skippr-spacing)*20)}.skippr\\:bottom-full{bottom:100%}.skippr\\:left-0{left:calc(var(--skippr-spacing)*0)}.skippr\\:left-1\\/2{left:50%}.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\\:left-\\[24px\\]{left:24px}.skippr\\:z-10{z-index:10}.skippr\\:z-20{z-index:20}.skippr\\:z-\\[9998\\]{z-index:9998}.skippr\\:z-\\[9999\\]{z-index:9999}.skippr\\:mx-auto{margin-inline:auto}.skippr\\:-mt-\\[5px\\]{margin-top:-5px}.skippr\\:mt-0\\.5{margin-top:calc(var(--skippr-spacing)*.5)}.skippr\\:mt-1{margin-top:calc(var(--skippr-spacing)*1)}.skippr\\:mt-1\\.5{margin-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:mt-3{margin-top:calc(var(--skippr-spacing)*3)}.skippr\\:mt-3\\.5{margin-top:calc(var(--skippr-spacing)*3.5)}.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\\:ml-0\\.5{margin-left:calc(var(--skippr-spacing)*.5)}.skippr\\:flex{display:flex}.skippr\\:inline-flex{display:inline-flex}.skippr\\:size-1{width:calc(var(--skippr-spacing)*1);height:calc(var(--skippr-spacing)*1)}.skippr\\:size-1\\.5{width:calc(var(--skippr-spacing)*1.5);height:calc(var(--skippr-spacing)*1.5)}.skippr\\:size-2{width:calc(var(--skippr-spacing)*2);height:calc(var(--skippr-spacing)*2)}.skippr\\:size-2\\.5{width:calc(var(--skippr-spacing)*2.5);height:calc(var(--skippr-spacing)*2.5)}.skippr\\:size-3\\.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-\\[5px\\]{width:5px;height:5px}.skippr\\:size-\\[6px\\]{width:6px;height:6px}.skippr\\:size-full{width:100%;height:100%}.skippr\\:h-0{height:calc(var(--skippr-spacing)*0)}.skippr\\:h-0\\.5{height:calc(var(--skippr-spacing)*.5)}.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-12{height:calc(var(--skippr-spacing)*12)}.skippr\\:h-16{height:calc(var(--skippr-spacing)*16)}.skippr\\:h-\\[18\\.5px\\]{height:18.5px}.skippr\\:h-\\[50px\\]{height:50px}.skippr\\:h-full{height:100%}.skippr\\:min-h-0{min-height:calc(var(--skippr-spacing)*0)}.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-12{width:calc(var(--skippr-spacing)*12)}.skippr\\:w-14{width:calc(var(--skippr-spacing)*14)}.skippr\\:w-40{width:calc(var(--skippr-spacing)*40)}.skippr\\:w-\\[2px\\]{width:2px}.skippr\\:w-\\[3px\\]{width:3px}.skippr\\:w-\\[15\\.4px\\]{width:15.4px}.skippr\\:w-\\[50px\\]{width:50px}.skippr\\:w-full{width:100%}.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\\:min-w-0{min-width:calc(var(--skippr-spacing)*0)}.skippr\\:flex-1{flex:1}.skippr\\:shrink-0{flex-shrink:0}.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-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-7{--tw-translate-x:calc(var(--skippr-spacing)*-7);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\\: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\\:-rotate-90{rotate:-90deg}.skippr\\:rotate-45{rotate:45deg}.skippr\\:rotate-\\[225deg\\]{rotate:225deg}.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-finger-tap_1\\.1s_ease-in-out_infinite\\]{animation:1.1s ease-in-out infinite skippr-finger-tap}.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-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\\)_backwards\\]{animation:.36s cubic-bezier(.34,1.3,.64,1) backwards skippr-tip-in}.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-pulse{animation:var(--skippr-animate-pulse)}.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-press{animation:.5s ease-in-out skippr-press}.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-spin{animation:var(--skippr-animate-spin)}.skippr\\:cursor-default{cursor:default}.skippr\\:cursor-grab{cursor:grab}.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\\: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\\: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-\\[2px\\]{gap:2px}.skippr\\:gap-\\[3px\\]{gap:3px}:where(.skippr\\:space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.skippr\\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}: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)))}.skippr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.skippr\\:overflow-hidden{overflow:hidden}.skippr\\:overflow-y-auto{overflow-y:auto}.skippr\\:rounded-2xl{border-radius:1.125rem}.skippr\\:rounded-\\[1rem\\]{border-radius:1rem}.skippr\\:rounded-\\[10px\\]{border-radius:10px}.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-lg{border-radius:.625rem}.skippr\\:rounded-md{border-radius:.5rem}.skippr\\:rounded-sm{border-radius:.375rem}.skippr\\:rounded-xl{border-radius:.875rem}.skippr\\:rounded-tl-md{border-top-left-radius:.5rem}.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-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-\\[\\#2bc0ae\\]{border-color:#2bc0ae}.skippr\\:border-border,.skippr\\:border-input{border-color:oklch(92.3% .003 48.717)}.skippr\\:border-primary\\/20{border-color:oklab(29.9244% .0107414 -.0305411/.2)}.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-\\[\\#2bc0ae\\]{background-color:#2bc0ae}.skippr\\:bg-\\[\\#2bc0ae\\]\\/50{background-color:oklab(72.9347% -.121518 -.00545585/.5)}.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-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-emerald-500{background-color:var(--skippr-color-emerald-500)}.skippr\\:bg-foreground{background-color:oklch(14.7% .004 49.25)}.skippr\\:bg-green-100{background-color:var(--skippr-color-green-100)}.skippr\\:bg-launcher{background-color:#2d2d3f}.skippr\\:bg-muted{background-color:oklch(97% .001 106.424)}.skippr\\:bg-muted-foreground\\/20{background-color:oklab(55.3% .00687528 .0110332/.2)}.skippr\\:bg-muted-foreground\\/40{background-color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:bg-muted\\/50{background-color:oklab(97% -.000282743 .000959196/.5)}.skippr\\:bg-neutral-100{background-color:var(--skippr-color-neutral-100)}.skippr\\:bg-primary{background-color:#2d2b3d}.skippr\\:bg-primary-foreground\\/20{background-color:oklab(100% 0 5.96046e-8/.2)}.skippr\\:bg-primary\\/10{background-color:oklab(29.9244% .0107414 -.0305411/.1)}.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-400{background-color:var(--skippr-color-red-400)}.skippr\\:bg-secondary{background-color:#ffdfb5}.skippr\\:bg-transparent{background-color:#0000}.skippr\\:bg-white{background-color:var(--skippr-color-white)}.skippr\\:fill-brand{fill:#2bc0ae}.skippr\\:fill-primary\\/30{fill:oklab(29.9244% .0107414 -.0305411/.3)}.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\\: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\\: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-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\\: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\\:pt-1\\.5{padding-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:pt-2{padding-top:calc(var(--skippr-spacing)*2)}.skippr\\:pr-3{padding-right:calc(var(--skippr-spacing)*3)}.skippr\\:pb-0{padding-bottom:calc(var(--skippr-spacing)*0)}.skippr\\:pb-2{padding-bottom:calc(var(--skippr-spacing)*2)}.skippr\\:pl-1\\.5{padding-left:calc(var(--skippr-spacing)*1.5)}.skippr\\:pl-3\\.5{padding-left:calc(var(--skippr-spacing)*3.5)}.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-\\[10px\\]{font-size:10px}.skippr\\:text-\\[11px\\]{font-size:11px}.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-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\\:leading-tight{--tw-leading:var(--skippr-leading-tight);line-height:var(--skippr-leading-tight)}.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\\:whitespace-nowrap{white-space:nowrap}.skippr\\:text-\\[\\#2bc0ae\\]{color:#2bc0ae}.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{color:var(--skippr-color-black)}.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-green-700{color:var(--skippr-color-green-700)}.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\\/40{color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:text-muted-foreground\\/60{color:oklab(55.3% .00687528 .0110332/.6)}.skippr\\:text-muted-foreground\\/70{color:oklab(55.3% .00687528 .0110332/.7)}.skippr\\:text-neutral-700{color:var(--skippr-color-neutral-700)}.skippr\\:text-primary{color:#2d2b3d}.skippr\\:text-primary-foreground{color:#fff}.skippr\\:text-primary-foreground\\/70{color:oklab(100% 0 5.96046e-8/.7)}.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{color:var(--skippr-color-white)}.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-\\[-6px_6px_22px_rgba\\(0\\,0\\,0\\,0\\.3\\)\\]{--tw-shadow:-6px 6px 22px var(--tw-shadow-color,#0000004d);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_14px_rgba\\(0\\,0\\,0\\,0\\.3\\)\\]{--tw-shadow:0 4px 14px var(--tw-shadow-color,#0000004d);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_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\\(0\\,0\\,0\\,0\\.16\\)\\,0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#00000029),0 4px 12px var(--tw-shadow-color,#00000014);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-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-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:#2bc0ae}.skippr\\:ring-foreground\\/10{--tw-ring-color:oklab(14.7% .00261104 .00303026/.1)}.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-\\[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-\\[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\\]{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-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-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\\: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-muted-foreground::placeholder{color:oklch(55.3% .013 58.071)}@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-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:hover\\:bg-\\[\\#3a384b\\]:hover{background-color:#3a384b}.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-green-200:hover{background-color:var(--skippr-color-green-200)}.skippr\\:hover\\:bg-muted\\/70:hover{background-color:oklab(97% -.000282743 .000959196/.7)}.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-foreground\\/10:hover{background-color:oklab(100% 0 5.96046e-8/.1)}.skippr\\:hover\\:bg-primary\\/90:hover{background-color:oklab(29.9244% .0107414 -.0305411/.9)}.skippr\\:hover\\:bg-red-200:hover{background-color:var(--skippr-color-red-200)}.skippr\\:hover\\:bg-secondary\\/80:hover{background-color:oklab(91.9963% .0175391 .0626889/.8)}.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\\:text-primary-foreground:hover{color:#fff}.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\\: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-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-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\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.skippr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.skippr\\:disabled\\:opacity-50:disabled{opacity:.5}.skippr\\:disabled\\:opacity-60:disabled{opacity:.6}@media (prefers-reduced-motion:reduce){.skippr\\:motion-reduce\\:hidden{display:none}.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)}}@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-annotation-pulse{0%,to{box-shadow:0 0 #2bc0ae80}50%{box-shadow:0 0 0 6px #2bc0ae00}}@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-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)}}.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-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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@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}}`;
4186
+ @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-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}}}@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-green-100:oklch(96.2% .044 156.743);--skippr-color-green-200:oklch(92.5% .084 155.995);--skippr-color-green-700:oklch(52.7% .154 150.069);--skippr-color-emerald-400:oklch(76.5% .177 163.223);--skippr-color-emerald-500:oklch(69.6% .17 162.48);--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-leading-tight:1.25;--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-pulse:pulse 2s cubic-bezier(.4,0,.6,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-0{inset:calc(var(--skippr-spacing)*0)}.skippr\\:inset-y-0{inset-block:calc(var(--skippr-spacing)*0)}.skippr\\:top-0{top:calc(var(--skippr-spacing)*0)}.skippr\\:top-1\\/2{top:50%}.skippr\\:top-full{top:100%}.skippr\\:-right-8{right:calc(var(--skippr-spacing)*-8)}.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-7{right:calc(var(--skippr-spacing)*7)}.skippr\\:right-\\[24px\\]{right:24px}.skippr\\:-bottom-1{bottom:calc(var(--skippr-spacing)*-1)}.skippr\\:-bottom-9{bottom:calc(var(--skippr-spacing)*-9)}.skippr\\:bottom-20{bottom:calc(var(--skippr-spacing)*20)}.skippr\\:bottom-full{bottom:100%}.skippr\\:-left-8{left:calc(var(--skippr-spacing)*-8)}.skippr\\:left-0{left:calc(var(--skippr-spacing)*0)}.skippr\\:left-1\\/2{left:50%}.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\\:left-7{left:calc(var(--skippr-spacing)*7)}.skippr\\:left-\\[24px\\]{left:24px}.skippr\\:z-10{z-index:10}.skippr\\:z-20{z-index:20}.skippr\\:z-\\[9998\\]{z-index:9998}.skippr\\:z-\\[9999\\]{z-index:9999}.skippr\\:mx-auto{margin-inline:auto}.skippr\\:-mt-\\[5px\\]{margin-top:-5px}.skippr\\:-mt-\\[27px\\]{margin-top:-27px}.skippr\\:mt-0\\.5{margin-top:calc(var(--skippr-spacing)*.5)}.skippr\\:mt-1{margin-top:calc(var(--skippr-spacing)*1)}.skippr\\:mt-1\\.5{margin-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:mt-3{margin-top:calc(var(--skippr-spacing)*3)}.skippr\\:mt-3\\.5{margin-top:calc(var(--skippr-spacing)*3.5)}.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\\: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\\:flex{display:flex}.skippr\\:hidden{display:none}.skippr\\:inline-flex{display:inline-flex}.skippr\\:size-1{width:calc(var(--skippr-spacing)*1);height:calc(var(--skippr-spacing)*1)}.skippr\\:size-1\\.5{width:calc(var(--skippr-spacing)*1.5);height:calc(var(--skippr-spacing)*1.5)}.skippr\\:size-2{width:calc(var(--skippr-spacing)*2);height:calc(var(--skippr-spacing)*2)}.skippr\\:size-2\\.5{width:calc(var(--skippr-spacing)*2.5);height:calc(var(--skippr-spacing)*2.5)}.skippr\\:size-3{width:calc(var(--skippr-spacing)*3);height:calc(var(--skippr-spacing)*3)}.skippr\\:size-3\\.5{width:calc(var(--skippr-spacing)*3.5);height:calc(var(--skippr-spacing)*3.5)}.skippr\\:size-4{width:calc(var(--skippr-spacing)*4);height:calc(var(--skippr-spacing)*4)}.skippr\\:size-5{width:calc(var(--skippr-spacing)*5);height:calc(var(--skippr-spacing)*5)}.skippr\\:size-6{width:calc(var(--skippr-spacing)*6);height:calc(var(--skippr-spacing)*6)}.skippr\\:size-7{width:calc(var(--skippr-spacing)*7);height:calc(var(--skippr-spacing)*7)}.skippr\\:size-8{width:calc(var(--skippr-spacing)*8);height:calc(var(--skippr-spacing)*8)}.skippr\\:size-9{width:calc(var(--skippr-spacing)*9);height:calc(var(--skippr-spacing)*9)}.skippr\\:size-10{width:calc(var(--skippr-spacing)*10);height:calc(var(--skippr-spacing)*10)}.skippr\\:size-12{width:calc(var(--skippr-spacing)*12);height:calc(var(--skippr-spacing)*12)}.skippr\\:size-\\[5px\\]{width:5px;height:5px}.skippr\\:size-\\[6px\\]{width:6px;height:6px}.skippr\\:size-\\[38px\\]{width:38px;height:38px}.skippr\\:size-full{width:100%;height:100%}.skippr\\:h-0{height:calc(var(--skippr-spacing)*0)}.skippr\\:h-0\\.5{height:calc(var(--skippr-spacing)*.5)}.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-4{height:calc(var(--skippr-spacing)*4)}.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-\\[18\\.5px\\]{height:18.5px}.skippr\\:h-\\[38px\\]{height:38px}.skippr\\:h-\\[50px\\]{height:50px}.skippr\\:h-\\[54px\\]{height:54px}.skippr\\:h-full{height:100%}.skippr\\:min-h-0{min-height:calc(var(--skippr-spacing)*0)}.skippr\\:w-0{width:calc(var(--skippr-spacing)*0)}.skippr\\:w-3\\.5{width:calc(var(--skippr-spacing)*3.5)}.skippr\\:w-4{width:calc(var(--skippr-spacing)*4)}.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-8{width:calc(var(--skippr-spacing)*8)}.skippr\\:w-10{width:calc(var(--skippr-spacing)*10)}.skippr\\:w-40{width:calc(var(--skippr-spacing)*40)}.skippr\\:w-\\[2px\\]{width:2px}.skippr\\:w-\\[3px\\]{width:3px}.skippr\\:w-\\[15\\.4px\\]{width:15.4px}.skippr\\:w-\\[50px\\]{width:50px}.skippr\\:w-full{width:100%}.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\\:min-w-0{min-width:calc(var(--skippr-spacing)*0)}.skippr\\:flex-1{flex:1}.skippr\\:shrink-0{flex-shrink:0}.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-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-7{--tw-translate-x:calc(var(--skippr-spacing)*-7);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\\: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\\:-rotate-90{rotate:-90deg}.skippr\\:rotate-45{rotate:45deg}.skippr\\:rotate-\\[225deg\\]{rotate:225deg}.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-finger-tap_1\\.1s_ease-in-out_infinite\\]{animation:1.1s ease-in-out infinite skippr-finger-tap}.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-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\\)_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-pulse{animation:var(--skippr-animate-pulse)}.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-press{animation:.5s ease-in-out skippr-press}.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-spin{animation:var(--skippr-animate-spin)}.skippr\\:cursor-default{cursor:default}.skippr\\:cursor-grab{cursor:grab}.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\\: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-\\[2px\\]{gap:2px}.skippr\\:gap-\\[3px\\]{gap:3px}:where(.skippr\\:space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.skippr\\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--skippr-spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--skippr-spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}: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)))}.skippr\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.skippr\\:overflow-hidden{overflow:hidden}.skippr\\:overflow-y-auto{overflow-y:auto}.skippr\\:rounded-2xl{border-radius:1.125rem}.skippr\\:rounded-\\[1rem\\]{border-radius:1rem}.skippr\\:rounded-\\[10px\\]{border-radius:10px}.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-lg{border-radius:.625rem}.skippr\\:rounded-md{border-radius:.5rem}.skippr\\:rounded-sm{border-radius:.375rem}.skippr\\:rounded-xl{border-radius:.875rem}.skippr\\:rounded-tl-md{border-top-left-radius:.5rem}.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-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-\\[\\#2bc0ae\\]{border-color:#2bc0ae}.skippr\\:border-border,.skippr\\:border-input{border-color:oklch(92.3% .003 48.717)}.skippr\\:border-primary\\/20{border-color:oklab(29.9244% .0107414 -.0305411/.2)}.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-\\[\\#2bc0ae\\]{background-color:#2bc0ae}.skippr\\:bg-\\[\\#2bc0ae\\]\\/50{background-color:oklab(72.9347% -.121518 -.00545585/.5)}.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-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-emerald-500{background-color:var(--skippr-color-emerald-500)}.skippr\\:bg-foreground{background-color:oklch(14.7% .004 49.25)}.skippr\\:bg-green-100{background-color:var(--skippr-color-green-100)}.skippr\\:bg-launcher{background-color:#2d2d3f}.skippr\\:bg-muted-foreground\\/20{background-color:oklab(55.3% .00687528 .0110332/.2)}.skippr\\:bg-muted-foreground\\/40{background-color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:bg-muted\\/50{background-color:oklab(97% -.000282743 .000959196/.5)}.skippr\\:bg-neutral-100{background-color:var(--skippr-color-neutral-100)}.skippr\\:bg-primary{background-color:#2d2b3d}.skippr\\:bg-primary-foreground\\/20{background-color:oklab(100% 0 5.96046e-8/.2)}.skippr\\:bg-primary\\/10{background-color:oklab(29.9244% .0107414 -.0305411/.1)}.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-400{background-color:var(--skippr-color-red-400)}.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\\/15{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:bg-white\\/15{background-color:color-mix(in oklab,var(--skippr-color-white)15%,transparent)}}.skippr\\:fill-brand{fill:#2bc0ae}.skippr\\:fill-primary\\/30{fill:oklab(29.9244% .0107414 -.0305411/.3)}.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\\:p-0\\.5{padding:calc(var(--skippr-spacing)*.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\\: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-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\\: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\\:pt-1\\.5{padding-top:calc(var(--skippr-spacing)*1.5)}.skippr\\:pr-2\\.5{padding-right:calc(var(--skippr-spacing)*2.5)}.skippr\\:pr-3{padding-right:calc(var(--skippr-spacing)*3)}.skippr\\:pb-2{padding-bottom:calc(var(--skippr-spacing)*2)}.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\\: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-\\[10px\\]{font-size:10px}.skippr\\:text-\\[11px\\]{font-size:11px}.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-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\\:leading-tight{--tw-leading:var(--skippr-leading-tight);line-height:var(--skippr-leading-tight)}.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\\:whitespace-nowrap{white-space:nowrap}.skippr\\:text-\\[\\#2bc0ae\\]{color:#2bc0ae}.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{color:var(--skippr-color-black)}.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-green-700{color:var(--skippr-color-green-700)}.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\\/40{color:oklab(55.3% .00687528 .0110332/.4)}.skippr\\:text-muted-foreground\\/60{color:oklab(55.3% .00687528 .0110332/.6)}.skippr\\:text-muted-foreground\\/70{color:oklab(55.3% .00687528 .0110332/.7)}.skippr\\:text-neutral-500{color:var(--skippr-color-neutral-500)}.skippr\\:text-neutral-700{color:var(--skippr-color-neutral-700)}.skippr\\:text-primary{color:#2d2b3d}.skippr\\:text-primary-foreground{color:#fff}.skippr\\:text-primary-foreground\\/70{color:oklab(100% 0 5.96046e-8/.7)}.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{color:var(--skippr-color-white)}.skippr\\:capitalize{text-transform:capitalize}.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-\\[-6px_6px_22px_rgba\\(0\\,0\\,0\\,0\\.3\\)\\]{--tw-shadow:-6px 6px 22px var(--tw-shadow-color,#0000004d);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_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_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\\(0\\,0\\,0\\,0\\.16\\)\\,0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#00000029),0 4px 12px var(--tw-shadow-color,#00000014);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-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-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px 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:#2bc0ae}.skippr\\:ring-foreground\\/10{--tw-ring-color:oklab(14.7% .00261104 .00303026/.1)}.skippr\\:ring-white\\/30{--tw-ring-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:ring-white\\/30{--tw-ring-color:color-mix(in oklab,var(--skippr-color-white)30%,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-\\[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-\\[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\\,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-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-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\\: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-muted-foreground::placeholder{color:oklch(55.3% .013 58.071)}@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-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.skippr\\:hover\\:bg-\\[\\#3a384b\\]:hover{background-color:#3a384b}.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-green-200:hover{background-color:var(--skippr-color-green-200)}.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:oklab(29.9244% .0107414 -.0305411/.9)}.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-white\\/10:hover{background-color:var(--skippr-color-white)}@supports (color:color-mix(in lab, red, red)){.skippr\\:hover\\:bg-white\\/10:hover{background-color:color-mix(in oklab,var(--skippr-color-white)10%,transparent)}}.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\\:text-primary-foreground:hover{color:#fff}.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\\: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-brand:focus-visible{--tw-ring-color:#2bc0ae}.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-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\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.skippr\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.skippr\\:disabled\\:opacity-50:disabled{opacity:.5}.skippr\\:disabled\\:opacity-60:disabled{opacity:.6}@media (prefers-reduced-motion:reduce){.skippr\\:motion-reduce\\:hidden{display:none}.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)}}@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-annotation-pulse{0%,to{box-shadow:0 0 #2bc0ae80}50%{box-shadow:0 0 0 6px #2bc0ae00}}@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-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)}}.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-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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@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}}`;
4047
4187
  useLayoutEffect2(() => {
4048
4188
  const host = hostRef.current;
4049
4189
  if (!host || !css)
@@ -4058,7 +4198,7 @@ function ShadowHost({ children }) {
4058
4198
  setShadowRoot(root);
4059
4199
  }, [css]);
4060
4200
  if (!css)
4061
- return /* @__PURE__ */ jsx6(Fragment, {
4201
+ return /* @__PURE__ */ jsx6(Fragment2, {
4062
4202
  children
4063
4203
  });
4064
4204
  return /* @__PURE__ */ jsx6("div", {
@@ -4068,13 +4208,13 @@ function ShadowHost({ children }) {
4068
4208
  }
4069
4209
 
4070
4210
  // src/components/Sidebar.tsx
4071
- import { useContext as useContext10, useEffect as useEffect22 } from "react";
4211
+ import { useContext as useContext10, useEffect as useEffect24 } from "react";
4072
4212
 
4073
4213
  // src/hooks/useCombinedMessages.ts
4074
4214
  import { useContext as useContext7, useMemo as useMemo5 } from "react";
4075
4215
 
4076
4216
  // src/hooks/useChatMessages.ts
4077
- import { useChat, useLocalParticipant as useLocalParticipant6 } from "@livekit/components-react/hooks";
4217
+ import { useChat, useLocalParticipant as useLocalParticipant7 } from "@livekit/components-react/hooks";
4078
4218
  import { useMemo as useMemo3 } from "react";
4079
4219
 
4080
4220
  // src/lib/filterSystemMessages.ts
@@ -4086,7 +4226,7 @@ function filterSystemMessages(messages) {
4086
4226
  // src/hooks/useChatMessages.ts
4087
4227
  function useChatMessages() {
4088
4228
  const { chatMessages: rawMessages, send, isSending } = useChat();
4089
- const { localParticipant } = useLocalParticipant6();
4229
+ const { localParticipant } = useLocalParticipant7();
4090
4230
  const localIdentity = localParticipant.identity;
4091
4231
  const chatMessages = useMemo3(() => {
4092
4232
  const sortedMessages = rawMessages.map((msg) => ({
@@ -4102,11 +4242,11 @@ function useChatMessages() {
4102
4242
  }
4103
4243
 
4104
4244
  // src/hooks/useStreamingTranscript.ts
4105
- import { useLocalParticipant as useLocalParticipant7, useTranscriptions } from "@livekit/components-react/hooks";
4245
+ import { useLocalParticipant as useLocalParticipant8, useTranscriptions } from "@livekit/components-react/hooks";
4106
4246
  import { useMemo as useMemo4 } from "react";
4107
4247
  function useStreamingTranscript() {
4108
4248
  const transcriptions = useTranscriptions();
4109
- const { localParticipant } = useLocalParticipant7();
4249
+ const { localParticipant } = useLocalParticipant8();
4110
4250
  const localIdentity = localParticipant.identity;
4111
4251
  const transcriptMessages = useMemo4(() => filterSystemMessages(transcriptions.filter((stream) => stream.text.trim().length > 0).map((stream) => ({
4112
4252
  id: stream.streamInfo.id,
@@ -4157,7 +4297,7 @@ function useCombinedMessages() {
4157
4297
  }
4158
4298
 
4159
4299
  // src/hooks/useSessionRemaining.ts
4160
- import { useEffect as useEffect17, useRef as useRef11, useState as useState12 } from "react";
4300
+ import { useEffect as useEffect19, useRef as useRef11, useState as useState13 } from "react";
4161
4301
 
4162
4302
  // src/lib/format.ts
4163
4303
  function formatTime(seconds) {
@@ -4174,8 +4314,8 @@ function parseNumber(s) {
4174
4314
  function useSessionRemaining() {
4175
4315
  const maxCallDuration = useAgentState("maxCallDuration", parseNumber, null);
4176
4316
  const endTimeRef = useRef11(null);
4177
- const [remaining, setRemaining] = useState12(null);
4178
- useEffect17(() => {
4317
+ const [remaining, setRemaining] = useState13(null);
4318
+ useEffect19(() => {
4179
4319
  if (maxCallDuration === null || endTimeRef.current !== null)
4180
4320
  return;
4181
4321
  const endTime = Date.now() + maxCallDuration * 1000;
@@ -4191,26 +4331,48 @@ function useSessionRemaining() {
4191
4331
  return remaining;
4192
4332
  }
4193
4333
 
4334
+ // src/components/ChatHeader.tsx
4335
+ import { useContext as useContext9, useRef as useRef13 } from "react";
4336
+
4337
+ // src/hooks/useElapsedSeconds.ts
4338
+ import { useEffect as useEffect20, useState as useState14 } from "react";
4339
+ function useElapsedSeconds(isRunning) {
4340
+ const [elapsed, setElapsed] = useState14(0);
4341
+ useEffect20(() => {
4342
+ if (!isRunning) {
4343
+ setElapsed(0);
4344
+ return;
4345
+ }
4346
+ const startedAt = Date.now();
4347
+ setElapsed(0);
4348
+ const id = setInterval(() => {
4349
+ setElapsed(Math.floor((Date.now() - startedAt) / 1000));
4350
+ }, 1000);
4351
+ return () => clearInterval(id);
4352
+ }, [isRunning]);
4353
+ return elapsed;
4354
+ }
4355
+
4194
4356
  // src/hooks/useTextMode.ts
4195
- import { useLocalParticipant as useLocalParticipant8 } from "@livekit/components-react/hooks";
4196
- import { useCallback as useCallback11, useContext as useContext8, useRef as useRef12 } from "react";
4197
- var textEncoder4 = new TextEncoder;
4357
+ import { useLocalParticipant as useLocalParticipant9 } from "@livekit/components-react/hooks";
4358
+ import { useCallback as useCallback12, useContext as useContext8, useRef as useRef12 } from "react";
4359
+ var textEncoder5 = new TextEncoder;
4198
4360
  function useTextMode() {
4199
4361
  const ctx = useContext8(LiveAgentContext);
4200
4362
  if (!ctx) {
4201
4363
  throw new Error("useTextMode must be used within a <LiveAgent> provider");
4202
4364
  }
4203
4365
  const { textMode, setTextModeState, sidebarTab, setSidebarTab } = ctx;
4204
- const { localParticipant } = useLocalParticipant8();
4366
+ const { localParticipant } = useLocalParticipant9();
4205
4367
  const confirmedTextModeRef = useRef12(false);
4206
- const toggleTextMode = useCallback11(async () => {
4368
+ const toggleTextMode = useCallback12(async () => {
4207
4369
  const next = !textMode;
4208
4370
  setTextModeState(next);
4209
4371
  if (next && sidebarTab === "agenda") {
4210
4372
  setSidebarTab("chat");
4211
4373
  }
4212
4374
  try {
4213
- await localParticipant.publishData(textEncoder4.encode(JSON.stringify({ textMode: next })), {
4375
+ await localParticipant.publishData(textEncoder5.encode(JSON.stringify({ textMode: next })), {
4214
4376
  reliable: true,
4215
4377
  topic: TEXT_MODE_TOPIC
4216
4378
  });
@@ -4225,29 +4387,7 @@ function useTextMode() {
4225
4387
  }
4226
4388
 
4227
4389
  // src/components/ChatHeader.tsx
4228
- import { useContext as useContext9, useRef as useRef13 } from "react";
4229
-
4230
- // src/hooks/useElapsedSeconds.ts
4231
- import { useEffect as useEffect18, useState as useState13 } from "react";
4232
- function useElapsedSeconds(isRunning) {
4233
- const [elapsed, setElapsed] = useState13(0);
4234
- useEffect18(() => {
4235
- if (!isRunning) {
4236
- setElapsed(0);
4237
- return;
4238
- }
4239
- const startedAt = Date.now();
4240
- setElapsed(0);
4241
- const id = setInterval(() => {
4242
- setElapsed(Math.floor((Date.now() - startedAt) / 1000));
4243
- }, 1000);
4244
- return () => clearInterval(id);
4245
- }, [isRunning]);
4246
- return elapsed;
4247
- }
4248
-
4249
- // src/components/ChatHeader.tsx
4250
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
4390
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
4251
4391
  function ChatHeader() {
4252
4392
  const ctx = useContext9(LiveAgentContext);
4253
4393
  if (!ctx) {
@@ -4257,32 +4397,30 @@ function ChatHeader() {
4257
4397
  isConnected,
4258
4398
  variant,
4259
4399
  isPanelOpen,
4260
- panelExpanded,
4261
- togglePanelExpanded,
4400
+ minimizable,
4401
+ minimizePanel,
4262
4402
  commitLauncherDrop,
4263
4403
  panelRef,
4264
- controlBarRef
4404
+ controlBarRef,
4405
+ setIsDragging
4265
4406
  } = ctx;
4266
4407
  const elapsed = useElapsedSeconds(isConnected);
4267
4408
  const headerRef = useRef13(null);
4268
4409
  const followsPanel = variant === "floating" && isPanelOpen;
4269
4410
  const dragFollowers = followsPanel ? [panelRef, controlBarRef] : null;
4270
- const { wasDraggedRef } = useLauncherDrag(headerRef, commitLauncherDrop, dragFollowers);
4271
- return /* @__PURE__ */ jsxs6("header", {
4411
+ const { wasDraggedRef } = useLauncherDrag(headerRef, commitLauncherDrop, dragFollowers, setIsDragging);
4412
+ return /* @__PURE__ */ jsxs7("header", {
4272
4413
  ref: headerRef,
4273
4414
  className: cn("skippr:sticky skippr:top-0 skippr:z-10 skippr:flex skippr:shrink-0 skippr:items-center skippr:justify-between skippr:border-b skippr:border-border skippr:bg-primary skippr:px-4 skippr:py-3", followsPanel && "skippr:cursor-grab skippr:touch-none skippr:select-none"),
4274
4415
  children: [
4275
- /* @__PURE__ */ jsx7("p", {
4276
- className: "skippr:text-sm skippr:font-semibold skippr:text-primary-foreground",
4277
- children: "Skippr"
4278
- }),
4279
- /* @__PURE__ */ jsxs6("div", {
4280
- className: "skippr:flex skippr:items-center skippr:gap-2",
4416
+ /* @__PURE__ */ jsxs7("div", {
4417
+ className: "skippr:flex skippr:items-center skippr:gap-3",
4281
4418
  children: [
4282
- isConnected && /* @__PURE__ */ jsxs6("div", {
4419
+ isConnected && /* @__PURE__ */ jsx7(HeaderModeToggle, {}),
4420
+ isConnected && /* @__PURE__ */ jsxs7("div", {
4283
4421
  className: "skippr:flex skippr:items-center skippr:gap-1.5 skippr:rounded-full skippr:bg-primary-foreground/20 skippr:px-2.5 skippr:py-1",
4284
4422
  children: [
4285
- /* @__PURE__ */ jsxs6("span", {
4423
+ /* @__PURE__ */ jsxs7("span", {
4286
4424
  className: "skippr:relative skippr:flex skippr:size-1.5",
4287
4425
  children: [
4288
4426
  /* @__PURE__ */ jsx7("span", {
@@ -4302,35 +4440,62 @@ function ChatHeader() {
4302
4440
  children: formatTime(elapsed)
4303
4441
  })
4304
4442
  ]
4305
- }),
4306
- variant === "floating" && /* @__PURE__ */ jsx7("button", {
4307
- type: "button",
4308
- onClick: () => {
4309
- if (!wasDraggedRef.current)
4310
- togglePanelExpanded();
4311
- },
4312
- "aria-label": panelExpanded ? "Collapse" : "Expand",
4313
- title: panelExpanded ? "Collapse" : "Expand",
4314
- className: "skippr:flex skippr:size-6 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-md skippr:text-primary-foreground/70 skippr:transition-colors skippr:hover:bg-primary-foreground/10 skippr:hover:text-primary-foreground",
4315
- children: panelExpanded ? /* @__PURE__ */ jsx7(Minimize2, {
4316
- className: "skippr:size-3.5"
4317
- }) : /* @__PURE__ */ jsx7(Maximize2, {
4318
- className: "skippr:size-3.5"
4319
- })
4320
4443
  })
4321
4444
  ]
4445
+ }),
4446
+ minimizable && /* @__PURE__ */ jsx7("button", {
4447
+ type: "button",
4448
+ onClick: () => {
4449
+ if (!wasDraggedRef.current)
4450
+ minimizePanel();
4451
+ },
4452
+ "aria-label": "Close",
4453
+ title: "Close",
4454
+ className: "skippr:flex skippr:h-8 skippr:w-8 skippr:cursor-pointer skippr:items-center skippr:justify-center skippr:rounded-lg skippr:text-primary-foreground/70 skippr:transition-colors skippr:hover:bg-white/10 skippr:hover:text-primary-foreground skippr:focus-visible:outline-none skippr:focus-visible:ring-2 skippr:focus-visible:ring-brand",
4455
+ children: /* @__PURE__ */ jsx7(X, {
4456
+ className: "skippr:h-4 skippr:w-4"
4457
+ })
4458
+ })
4459
+ ]
4460
+ });
4461
+ }
4462
+ function HeaderModeToggle() {
4463
+ const { textMode, toggleTextMode } = useTextMode();
4464
+ return /* @__PURE__ */ jsxs7("fieldset", {
4465
+ "aria-label": "Response mode",
4466
+ className: "skippr:flex skippr:items-center skippr:gap-0.5 skippr:rounded-lg skippr:bg-white/15 skippr:p-0.5 skippr:text-xs skippr:font-medium skippr:ring-1 skippr:ring-white/30",
4467
+ children: [
4468
+ /* @__PURE__ */ jsx7("button", {
4469
+ type: "button",
4470
+ "aria-pressed": !textMode,
4471
+ onClick: () => {
4472
+ if (textMode)
4473
+ toggleTextMode();
4474
+ },
4475
+ className: cn("skippr:cursor-pointer skippr:rounded-md skippr:px-2.5 skippr:py-1 skippr:transition-colors skippr:focus-visible:outline-none skippr:focus-visible:ring-2 skippr:focus-visible:ring-brand", textMode ? "skippr:font-semibold skippr:text-primary-foreground" : "skippr:bg-white skippr:text-primary skippr:shadow-sm"),
4476
+ children: "Voice"
4477
+ }),
4478
+ /* @__PURE__ */ jsx7("button", {
4479
+ type: "button",
4480
+ "aria-pressed": textMode,
4481
+ onClick: () => {
4482
+ if (!textMode)
4483
+ toggleTextMode();
4484
+ },
4485
+ className: cn("skippr:cursor-pointer skippr:rounded-md skippr:px-2.5 skippr:py-1 skippr:transition-colors skippr:focus-visible:outline-none skippr:focus-visible:ring-2 skippr:focus-visible:ring-brand", textMode ? "skippr:bg-white skippr:text-primary skippr:shadow-sm" : "skippr:font-semibold skippr:text-primary-foreground"),
4486
+ children: "Text"
4322
4487
  })
4323
4488
  ]
4324
4489
  });
4325
4490
  }
4326
4491
 
4327
4492
  // src/components/LoadingDots.tsx
4328
- import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
4493
+ import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
4329
4494
  function LoadingDots({ label }) {
4330
- return /* @__PURE__ */ jsxs7("div", {
4495
+ return /* @__PURE__ */ jsxs8("div", {
4331
4496
  className: "skippr:flex skippr:items-center skippr:gap-2 skippr:py-4",
4332
4497
  children: [
4333
- /* @__PURE__ */ jsxs7("div", {
4498
+ /* @__PURE__ */ jsxs8("div", {
4334
4499
  className: "skippr:flex skippr:gap-1",
4335
4500
  children: [
4336
4501
  /* @__PURE__ */ jsx8("span", {
@@ -4353,7 +4518,7 @@ function LoadingDots({ label }) {
4353
4518
  }
4354
4519
 
4355
4520
  // src/components/LoginFlow.tsx
4356
- import { useCallback as useCallback12, useEffect as useEffect19, useRef as useRef14, useState as useState14 } from "react";
4521
+ import { useCallback as useCallback13, useEffect as useEffect21, useRef as useRef14, useState as useState15 } from "react";
4357
4522
 
4358
4523
  // src/components/ui/button.tsx
4359
4524
  import { forwardRef as forwardRef3 } from "react";
@@ -4385,24 +4550,24 @@ var Button = forwardRef3(({ className, variant = "default", size = "default", ..
4385
4550
  Button.displayName = "Button";
4386
4551
 
4387
4552
  // src/components/LoginFlow.tsx
4388
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
4553
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
4389
4554
  var OTP_LENGTH = 6;
4390
4555
  var DIGIT_KEYS = ["d0", "d1", "d2", "d3", "d4", "d5"];
4391
4556
  function LoginFlow({ requestOtp, verifyOtp, error, isSubmitting }) {
4392
- const [step, setStep] = useState14("email");
4393
- const [email, setEmail] = useState14("");
4394
- const handleRequestOtp = useCallback12(async (emailValue) => {
4557
+ const [step, setStep] = useState15("email");
4558
+ const [email, setEmail] = useState15("");
4559
+ const handleRequestOtp = useCallback13(async (emailValue) => {
4395
4560
  const success = await requestOtp(emailValue);
4396
4561
  if (success)
4397
4562
  setStep("otp");
4398
4563
  }, [requestOtp]);
4399
- const handleVerifyOtp = useCallback12(async (code) => {
4564
+ const handleVerifyOtp = useCallback13(async (code) => {
4400
4565
  await verifyOtp(email, code);
4401
4566
  }, [verifyOtp, email]);
4402
- const handleBack = useCallback12(() => {
4567
+ const handleBack = useCallback13(() => {
4403
4568
  setStep("email");
4404
4569
  }, []);
4405
- const handleResend = useCallback12(async () => {
4570
+ const handleResend = useCallback13(async () => {
4406
4571
  await requestOtp(email);
4407
4572
  }, [requestOtp, email]);
4408
4573
  if (step === "otp") {
@@ -4429,10 +4594,10 @@ function EmailStep({ email, onEmailChange, onSubmit, error, isSubmitting }) {
4429
4594
  if (email.trim())
4430
4595
  onSubmit(email.trim());
4431
4596
  }
4432
- return /* @__PURE__ */ jsxs8("div", {
4597
+ return /* @__PURE__ */ jsxs9("div", {
4433
4598
  className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:px-4 skippr:py-4",
4434
4599
  children: [
4435
- /* @__PURE__ */ jsxs8("div", {
4600
+ /* @__PURE__ */ jsxs9("div", {
4436
4601
  className: "skippr:mb-4 skippr:text-center",
4437
4602
  children: [
4438
4603
  /* @__PURE__ */ jsx10(Mail, {
@@ -4448,7 +4613,7 @@ function EmailStep({ email, onEmailChange, onSubmit, error, isSubmitting }) {
4448
4613
  })
4449
4614
  ]
4450
4615
  }),
4451
- /* @__PURE__ */ jsxs8("form", {
4616
+ /* @__PURE__ */ jsxs9("form", {
4452
4617
  onSubmit: handleSubmit,
4453
4618
  className: "skippr:flex skippr:flex-col skippr:gap-3",
4454
4619
  children: [
@@ -4479,30 +4644,30 @@ function EmailStep({ email, onEmailChange, onSubmit, error, isSubmitting }) {
4479
4644
  });
4480
4645
  }
4481
4646
  function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
4482
- const [digits, setDigits] = useState14(Array(OTP_LENGTH).fill(""));
4483
- const [resendCooldown, setResendCooldown] = useState14(0);
4647
+ const [digits, setDigits] = useState15(Array(OTP_LENGTH).fill(""));
4648
+ const [resendCooldown, setResendCooldown] = useState15(0);
4484
4649
  const inputRefs = useRef14([]);
4485
4650
  const submittedRef = useRef14(false);
4486
- useEffect19(() => {
4651
+ useEffect21(() => {
4487
4652
  inputRefs.current[0]?.focus();
4488
4653
  }, []);
4489
- useEffect19(() => {
4654
+ useEffect21(() => {
4490
4655
  if (error)
4491
4656
  submittedRef.current = false;
4492
4657
  }, [error]);
4493
- useEffect19(() => {
4658
+ useEffect21(() => {
4494
4659
  if (resendCooldown <= 0)
4495
4660
  return;
4496
4661
  const timer = setTimeout(() => setResendCooldown((c) => c - 1), 1000);
4497
4662
  return () => clearTimeout(timer);
4498
4663
  }, [resendCooldown]);
4499
- const submitCode = useCallback12((code) => {
4664
+ const submitCode = useCallback13((code) => {
4500
4665
  if (submittedRef.current || isSubmitting)
4501
4666
  return;
4502
4667
  submittedRef.current = true;
4503
4668
  onSubmit(code);
4504
4669
  }, [onSubmit, isSubmitting]);
4505
- const handleDigitChange = useCallback12((index2, value) => {
4670
+ const handleDigitChange = useCallback13((index2, value) => {
4506
4671
  const digit = value.replace(/\D/g, "").slice(-1);
4507
4672
  const newDigits = [...digits];
4508
4673
  newDigits[index2] = digit;
@@ -4516,12 +4681,12 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
4516
4681
  submitCode(code);
4517
4682
  }
4518
4683
  }, [digits, submitCode]);
4519
- const handleKeyDown = useCallback12((index2, e) => {
4684
+ const handleKeyDown = useCallback13((index2, e) => {
4520
4685
  if (e.key === "Backspace" && !digits[index2] && index2 > 0) {
4521
4686
  inputRefs.current[index2 - 1]?.focus();
4522
4687
  }
4523
4688
  }, [digits]);
4524
- const handlePaste = useCallback12((e) => {
4689
+ const handlePaste = useCallback13((e) => {
4525
4690
  e.preventDefault();
4526
4691
  const pasted = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, OTP_LENGTH);
4527
4692
  if (pasted.length > 0) {
@@ -4549,17 +4714,17 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
4549
4714
  submittedRef.current = false;
4550
4715
  inputRefs.current[0]?.focus();
4551
4716
  }
4552
- return /* @__PURE__ */ jsxs8("div", {
4717
+ return /* @__PURE__ */ jsxs9("div", {
4553
4718
  className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:px-4 skippr:py-4",
4554
4719
  children: [
4555
- /* @__PURE__ */ jsxs8("div", {
4720
+ /* @__PURE__ */ jsxs9("div", {
4556
4721
  className: "skippr:mb-4 skippr:text-center",
4557
4722
  children: [
4558
4723
  /* @__PURE__ */ jsx10("p", {
4559
4724
  className: "skippr:text-sm skippr:font-medium skippr:text-foreground",
4560
4725
  children: "Enter verification code"
4561
4726
  }),
4562
- /* @__PURE__ */ jsxs8("p", {
4727
+ /* @__PURE__ */ jsxs9("p", {
4563
4728
  className: "skippr:mt-1 skippr:text-xs skippr:text-muted-foreground",
4564
4729
  children: [
4565
4730
  "We sent a 6-digit code to",
@@ -4572,7 +4737,7 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
4572
4737
  })
4573
4738
  ]
4574
4739
  }),
4575
- /* @__PURE__ */ jsxs8("form", {
4740
+ /* @__PURE__ */ jsxs9("form", {
4576
4741
  onSubmit: handleSubmit,
4577
4742
  className: "skippr:flex skippr:flex-col skippr:gap-3",
4578
4743
  children: [
@@ -4605,7 +4770,7 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
4605
4770
  className: "skippr:size-4 skippr:animate-spin"
4606
4771
  }) : "Verify"
4607
4772
  }),
4608
- /* @__PURE__ */ jsxs8("div", {
4773
+ /* @__PURE__ */ jsxs9("div", {
4609
4774
  className: "skippr:flex skippr:items-center skippr:justify-between skippr:text-xs",
4610
4775
  children: [
4611
4776
  /* @__PURE__ */ jsx10("button", {
@@ -4631,17 +4796,17 @@ function OtpStep({ email, onSubmit, onResend, onBack, error, isSubmitting }) {
4631
4796
  }
4632
4797
 
4633
4798
  // src/components/MessageList.tsx
4634
- import { useCallback as useCallback13, useLayoutEffect as useLayoutEffect3, useRef as useRef16, useState as useState16 } from "react";
4799
+ import { useCallback as useCallback14, useLayoutEffect as useLayoutEffect3, useRef as useRef16, useState as useState17 } from "react";
4635
4800
 
4636
4801
  // src/components/ChatInput.tsx
4637
- import { useEffect as useEffect20, useRef as useRef15, useState as useState15 } from "react";
4638
- import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
4802
+ import { useEffect as useEffect22, useRef as useRef15, useState as useState16 } from "react";
4803
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
4639
4804
  var MAX_INPUT_HEIGHT = 60;
4640
4805
  function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
4641
- const [inputText, setInputText] = useState15("");
4806
+ const [inputText, setInputText] = useState16("");
4642
4807
  const textareaRef = useRef15(null);
4643
4808
  const canSend = inputText.trim().length > 0 && !isSendingChat;
4644
- useEffect20(() => {
4809
+ useEffect22(() => {
4645
4810
  if (autoFocus)
4646
4811
  textareaRef.current?.focus();
4647
4812
  }, [autoFocus]);
@@ -4675,7 +4840,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
4675
4840
  return /* @__PURE__ */ jsx11("form", {
4676
4841
  onSubmit: handleSubmit,
4677
4842
  className: "skippr:border-t skippr:border-border skippr:p-3",
4678
- children: /* @__PURE__ */ jsxs9("div", {
4843
+ children: /* @__PURE__ */ jsxs10("div", {
4679
4844
  className: "skippr:flex skippr:items-center skippr:gap-2 skippr:rounded-xl skippr:bg-background skippr:ring-1 skippr:ring-foreground/10 skippr:px-3 skippr:py-2",
4680
4845
  children: [
4681
4846
  /* @__PURE__ */ jsx11("textarea", {
@@ -4703,7 +4868,7 @@ function ChatInput({ sendChatMessage, isSendingChat, autoFocus = false }) {
4703
4868
  }
4704
4869
 
4705
4870
  // src/components/ChatMessage.tsx
4706
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
4871
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
4707
4872
  function formatTimestamp(ts) {
4708
4873
  return new Date(ts).toLocaleTimeString("en-US", {
4709
4874
  hour: "numeric",
@@ -4713,35 +4878,27 @@ function formatTimestamp(ts) {
4713
4878
  }
4714
4879
  function ChatMessage({ message }) {
4715
4880
  const isAgent = message.role === "assistant";
4716
- return /* @__PURE__ */ jsxs10("div", {
4881
+ return /* @__PURE__ */ jsx12("div", {
4717
4882
  className: cn("skippr:flex skippr:gap-2", isAgent ? "skippr:items-start" : "skippr:justify-end"),
4718
- children: [
4719
- isAgent && /* @__PURE__ */ jsx12("div", {
4720
- className: "skippr:mt-0.5 skippr:flex skippr:size-7 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-md skippr:bg-primary",
4721
- children: /* @__PURE__ */ jsx12(Sparkles, {
4722
- className: "skippr:size-3.5 skippr:text-primary-foreground"
4883
+ children: /* @__PURE__ */ jsxs11("div", {
4884
+ className: cn("skippr:flex skippr:max-w-[80%] skippr:flex-col", isAgent ? "skippr:items-start" : "skippr:items-end"),
4885
+ children: [
4886
+ /* @__PURE__ */ jsx12("div", {
4887
+ className: cn("skippr:rounded-2xl skippr:px-4 skippr:py-2.5 skippr:text-sm skippr:leading-relaxed", isAgent ? "skippr:border skippr:border-border skippr:bg-card skippr:text-foreground" : "skippr:bg-primary skippr:text-primary-foreground"),
4888
+ children: message.content
4889
+ }),
4890
+ message.timestamp && /* @__PURE__ */ jsx12("span", {
4891
+ className: "skippr:mt-1 skippr:px-1 skippr:text-[10px] skippr:text-muted-foreground/60",
4892
+ children: formatTimestamp(message.timestamp)
4723
4893
  })
4724
- }),
4725
- /* @__PURE__ */ jsxs10("div", {
4726
- className: cn("skippr:flex skippr:max-w-[80%] skippr:flex-col", isAgent ? "skippr:items-start" : "skippr:items-end"),
4727
- children: [
4728
- /* @__PURE__ */ jsx12("div", {
4729
- className: cn("skippr:rounded-2xl skippr:px-4 skippr:py-2.5 skippr:text-sm skippr:leading-relaxed", isAgent ? "skippr:border skippr:border-border skippr:bg-card skippr:text-foreground" : "skippr:bg-primary skippr:text-primary-foreground"),
4730
- children: message.content
4731
- }),
4732
- message.timestamp && /* @__PURE__ */ jsx12("span", {
4733
- className: "skippr:mt-1 skippr:px-1 skippr:text-[10px] skippr:text-muted-foreground/60",
4734
- children: formatTimestamp(message.timestamp)
4735
- })
4736
- ]
4737
- })
4738
- ]
4894
+ ]
4895
+ })
4739
4896
  });
4740
4897
  }
4741
4898
 
4742
4899
  // src/components/PlanCard.tsx
4743
- import { useEffect as useEffect21 } from "react";
4744
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
4900
+ import { useEffect as useEffect23 } from "react";
4901
+ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
4745
4902
  var APPROVE_MESSAGE = "Yes, go ahead.";
4746
4903
  var CANCEL_MESSAGE = "No, cancel that.";
4747
4904
  var COMPLETED_CARD_VISIBLE_MS = 2500;
@@ -4767,13 +4924,13 @@ function StepIcon({ status }) {
4767
4924
  }
4768
4925
  function PlanCard({ plan, sendChatMessage, onDismiss }) {
4769
4926
  const awaitingApproval = plan.state === "proposed";
4770
- useEffect21(() => {
4927
+ useEffect23(() => {
4771
4928
  if (plan.state !== "completed")
4772
4929
  return;
4773
4930
  const timer = setTimeout(onDismiss, COMPLETED_CARD_VISIBLE_MS);
4774
4931
  return () => clearTimeout(timer);
4775
4932
  }, [plan.state, onDismiss]);
4776
- return /* @__PURE__ */ jsxs11("div", {
4933
+ return /* @__PURE__ */ jsxs12("div", {
4777
4934
  className: "skippr:rounded-2xl skippr:rounded-tl-md skippr:bg-card skippr:p-3.5 skippr:ring-2 skippr:ring-brand",
4778
4935
  children: [
4779
4936
  /* @__PURE__ */ jsx13("p", {
@@ -4782,7 +4939,7 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
4782
4939
  }),
4783
4940
  /* @__PURE__ */ jsx13("div", {
4784
4941
  className: "skippr:space-y-2",
4785
- children: plan.steps.map((step) => /* @__PURE__ */ jsxs11("div", {
4942
+ children: plan.steps.map((step) => /* @__PURE__ */ jsxs12("div", {
4786
4943
  className: "skippr:flex skippr:items-center skippr:gap-2",
4787
4944
  children: [
4788
4945
  /* @__PURE__ */ jsx13(StepIcon, {
@@ -4795,7 +4952,7 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
4795
4952
  ]
4796
4953
  }, step.index))
4797
4954
  }),
4798
- awaitingApproval && /* @__PURE__ */ jsxs11("div", {
4955
+ awaitingApproval && /* @__PURE__ */ jsxs12("div", {
4799
4956
  className: "skippr:mt-3.5 skippr:flex skippr:gap-2",
4800
4957
  children: [
4801
4958
  /* @__PURE__ */ jsx13(Button, {
@@ -4816,45 +4973,37 @@ function PlanCard({ plan, sendChatMessage, onDismiss }) {
4816
4973
  }
4817
4974
 
4818
4975
  // src/components/TypingIndicator.tsx
4819
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
4976
+ import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
4820
4977
  function TypingIndicator() {
4821
- return /* @__PURE__ */ jsxs12("div", {
4978
+ return /* @__PURE__ */ jsx14("div", {
4822
4979
  className: "skippr:flex skippr:items-start skippr:gap-2 skippr:animate-skippr-tab-fade",
4823
- children: [
4824
- /* @__PURE__ */ jsx14("div", {
4825
- className: "skippr:mt-0.5 skippr:flex skippr:size-7 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-md skippr:bg-primary",
4826
- children: /* @__PURE__ */ jsx14(Sparkles, {
4827
- className: "skippr:size-3.5 skippr:text-primary-foreground"
4980
+ children: /* @__PURE__ */ jsxs13("div", {
4981
+ 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",
4982
+ children: [
4983
+ /* @__PURE__ */ jsx14("span", {
4984
+ children: "Agent is analyzing your screen"
4985
+ }),
4986
+ /* @__PURE__ */ jsxs13("span", {
4987
+ className: "skippr:inline-flex skippr:items-center skippr:gap-[2px]",
4988
+ children: [
4989
+ /* @__PURE__ */ jsx14("span", {
4990
+ className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:0ms]"
4991
+ }),
4992
+ /* @__PURE__ */ jsx14("span", {
4993
+ className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:200ms]"
4994
+ }),
4995
+ /* @__PURE__ */ jsx14("span", {
4996
+ className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:400ms]"
4997
+ })
4998
+ ]
4828
4999
  })
4829
- }),
4830
- /* @__PURE__ */ jsxs12("div", {
4831
- 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",
4832
- children: [
4833
- /* @__PURE__ */ jsx14("span", {
4834
- children: "Agent is analyzing your screen"
4835
- }),
4836
- /* @__PURE__ */ jsxs12("span", {
4837
- className: "skippr:inline-flex skippr:items-center skippr:gap-[2px]",
4838
- children: [
4839
- /* @__PURE__ */ jsx14("span", {
4840
- className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:0ms]"
4841
- }),
4842
- /* @__PURE__ */ jsx14("span", {
4843
- className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:200ms]"
4844
- }),
4845
- /* @__PURE__ */ jsx14("span", {
4846
- className: "skippr:size-1 skippr:rounded-full skippr:bg-primary skippr:animate-skippr-thinking-dot skippr:[animation-delay:400ms]"
4847
- })
4848
- ]
4849
- })
4850
- ]
4851
- })
4852
- ]
5000
+ ]
5001
+ })
4853
5002
  });
4854
5003
  }
4855
5004
 
4856
5005
  // src/components/MessageList.tsx
4857
- import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
5006
+ import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
4858
5007
  function isPlanVisible(plan) {
4859
5008
  return !!plan && plan.steps.length > 0 && plan.state !== "abandoned";
4860
5009
  }
@@ -4868,8 +5017,8 @@ function MessageList({
4868
5017
  }) {
4869
5018
  const containerRef = useRef16(null);
4870
5019
  const lastMessage = messages.length > 0 ? messages[messages.length - 1] : undefined;
4871
- const [dismissedPlanId, setDismissedPlanId] = useState16(null);
4872
- const dismissPlan = useCallback13(() => {
5020
+ const [dismissedPlanId, setDismissedPlanId] = useState17(null);
5021
+ const dismissPlan = useCallback14(() => {
4873
5022
  if (plan)
4874
5023
  setDismissedPlanId(plan.planId);
4875
5024
  }, [plan]);
@@ -4882,10 +5031,10 @@ function MessageList({
4882
5031
  container.scrollTop = container.scrollHeight;
4883
5032
  }, [messages.length, lastMessage?.content]);
4884
5033
  const showTyping = isStreaming && lastMessage?.role === "assistant" && lastMessage.content === "";
4885
- return /* @__PURE__ */ jsxs13("div", {
5034
+ return /* @__PURE__ */ jsxs14("div", {
4886
5035
  className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
4887
5036
  children: [
4888
- /* @__PURE__ */ jsxs13("div", {
5037
+ /* @__PURE__ */ jsxs14("div", {
4889
5038
  ref: containerRef,
4890
5039
  className: "skippr:min-h-0 skippr:flex-1 skippr:space-y-4 skippr:overflow-y-auto skippr:p-4 skippr:[overflow-anchor:none]",
4891
5040
  children: [
@@ -4916,7 +5065,7 @@ function MessageList({
4916
5065
  }
4917
5066
 
4918
5067
  // src/components/SessionAgenda.tsx
4919
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
5068
+ import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
4920
5069
  function SessionAgenda({ phases, hasStarted }) {
4921
5070
  if (phases.length === 0 || !hasStarted) {
4922
5071
  return /* @__PURE__ */ jsx16("div", {
@@ -4933,7 +5082,7 @@ function SessionAgenda({ phases, hasStarted }) {
4933
5082
  children: phases.map((phase) => {
4934
5083
  const isActive = phase.status === "active";
4935
5084
  const isCompleted = phase.status === "completed";
4936
- return /* @__PURE__ */ jsxs14("div", {
5085
+ return /* @__PURE__ */ jsxs15("div", {
4937
5086
  className: cn("skippr:flex skippr:items-start skippr:gap-2.5 skippr:rounded-lg skippr:p-2 skippr:transition-colors", isActive && "skippr:bg-primary/10"),
4938
5087
  children: [
4939
5088
  /* @__PURE__ */ jsx16("div", {
@@ -4946,7 +5095,7 @@ function SessionAgenda({ phases, hasStarted }) {
4946
5095
  className: "skippr:size-4 skippr:text-muted-foreground/30"
4947
5096
  })
4948
5097
  }),
4949
- /* @__PURE__ */ jsxs14("div", {
5098
+ /* @__PURE__ */ jsxs15("div", {
4950
5099
  className: "skippr:min-w-0 skippr:flex-1",
4951
5100
  children: [
4952
5101
  /* @__PURE__ */ jsx16("p", {
@@ -4955,7 +5104,7 @@ function SessionAgenda({ phases, hasStarted }) {
4955
5104
  }),
4956
5105
  phase.highlights.length > 0 && /* @__PURE__ */ jsx16("ul", {
4957
5106
  className: "skippr:mt-1 skippr:space-y-0.5",
4958
- children: phase.highlights.map((text) => /* @__PURE__ */ jsxs14("li", {
5107
+ children: phase.highlights.map((text) => /* @__PURE__ */ jsxs15("li", {
4959
5108
  className: cn("skippr:flex skippr:items-center skippr:gap-1.5 skippr:text-[11px] skippr:leading-tight", isCompleted ? "skippr:text-muted-foreground/40 skippr:line-through" : "skippr:text-muted-foreground/70"),
4960
5109
  children: [
4961
5110
  /* @__PURE__ */ jsx16("span", {
@@ -4988,7 +5137,7 @@ function SessionWarningBanner({ remaining }) {
4988
5137
  }
4989
5138
 
4990
5139
  // src/components/StartSessionPrompt.tsx
4991
- import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
5140
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
4992
5141
  var PROMPT_BUTTON = "skippr:cursor-pointer skippr:rounded-xl skippr:bg-primary skippr:px-8 skippr:py-3 skippr:text-sm skippr:font-medium skippr:text-primary-foreground skippr:transition-all skippr:hover:bg-primary/90 skippr:disabled:cursor-not-allowed skippr:disabled:opacity-60";
4993
5142
  function StartSessionPrompt({
4994
5143
  onStartSession,
@@ -5000,7 +5149,7 @@ function StartSessionPrompt({
5000
5149
  canResume = false,
5001
5150
  onResume
5002
5151
  }) {
5003
- return /* @__PURE__ */ jsxs15("div", {
5152
+ return /* @__PURE__ */ jsxs16("div", {
5004
5153
  className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:items-center skippr:justify-center skippr:gap-3 skippr:px-4",
5005
5154
  children: [
5006
5155
  canResume && onResume ? /* @__PURE__ */ jsx18("button", {
@@ -5029,7 +5178,7 @@ function StartSessionPrompt({
5029
5178
  }
5030
5179
 
5031
5180
  // src/components/Sidebar.tsx
5032
- import { jsx as jsx19, jsxs as jsxs16, Fragment as Fragment2 } from "react/jsx-runtime";
5181
+ import { jsx as jsx19, jsxs as jsxs17, Fragment as Fragment3 } from "react/jsx-runtime";
5033
5182
  var PANEL_GAP_PX = 12;
5034
5183
  var PANEL_VIEWPORT_MARGIN_PX = 24;
5035
5184
  var PANEL_MAX_HEIGHT_PX = 460;
@@ -5083,7 +5232,7 @@ function Sidebar({
5083
5232
  height: panelExpanded ? availableHeight : `min(${PANEL_MAX_HEIGHT_PX}px, ${availableHeight})`
5084
5233
  };
5085
5234
  }
5086
- useEffect22(() => {
5235
+ useEffect24(() => {
5087
5236
  if (!isSidebar)
5088
5237
  return;
5089
5238
  const prop = position === "right" ? "marginRight" : "marginLeft";
@@ -5097,7 +5246,7 @@ function Sidebar({
5097
5246
  document.body.style.transition = "";
5098
5247
  };
5099
5248
  }, [isSidebar, isPanelOpen, position]);
5100
- return /* @__PURE__ */ jsxs16("div", {
5249
+ return /* @__PURE__ */ jsxs17("div", {
5101
5250
  ref: internalCtx?.panelRef,
5102
5251
  className: cn("skippr:fixed skippr:z-[9999]", "skippr:bg-card", "skippr:flex skippr:flex-col", "skippr:overflow-hidden", isFloating && "skippr:border skippr:border-border skippr:rounded-2xl skippr:shadow-[0_8px_30px_rgba(0,0,0,0.16),0_4px_12px_rgba(0,0,0,0.08)]", isFloating && (position === "right" ? "skippr:right-6" : "skippr:left-6"), isFloating && "skippr:transition-[opacity,transform,height] skippr:duration-300 skippr:ease-in-out", isFloating && (popsDown ? position === "right" ? "skippr:origin-top-right" : "skippr:origin-top-left" : position === "right" ? "skippr:origin-bottom-right" : "skippr:origin-bottom-left"), 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"),
5103
5252
  style: { width: isPanelOpen ? SIDEBAR_WIDTH : undefined, ...floatingStyle },
@@ -5157,20 +5306,18 @@ function AuthenticatedContent({
5157
5306
  const inSession = isConnected || isStarting || isPaused || isPausing;
5158
5307
  const effectiveTab = showAgenda ? activeTab : "chat";
5159
5308
  let transitionLabel = null;
5160
- if (isPausing) {
5161
- transitionLabel = "Pausing...";
5162
- } else if (isStarting && !isConnected) {
5309
+ if (isStarting && !isConnected) {
5163
5310
  transitionLabel = "Reconnecting...";
5164
5311
  } else if (isPaused) {
5165
5312
  transitionLabel = "Paused";
5166
5313
  }
5167
- return /* @__PURE__ */ jsxs16(Fragment2, {
5314
+ return /* @__PURE__ */ jsxs17(Fragment3, {
5168
5315
  children: [
5169
5316
  isConnected && /* @__PURE__ */ jsx19(ConnectedBanner, {}),
5170
- /* @__PURE__ */ jsxs16("div", {
5317
+ showAgenda && /* @__PURE__ */ jsxs17("div", {
5171
5318
  className: "skippr:flex skippr:items-center skippr:gap-2 skippr:border-b skippr:border-border skippr:px-3 skippr:py-1",
5172
5319
  children: [
5173
- /* @__PURE__ */ jsxs16("button", {
5320
+ /* @__PURE__ */ jsxs17("button", {
5174
5321
  type: "button",
5175
5322
  className: cn("skippr:relative skippr:inline-flex skippr:cursor-pointer skippr:items-center skippr:gap-1.5 skippr:rounded-lg skippr:px-3 skippr:py-1.5 skippr:text-sm skippr:font-medium skippr:transition-all", activeTab === "chat" ? "skippr:text-foreground" : "skippr:text-muted-foreground skippr:hover:text-foreground"),
5176
5323
  onClick: () => onTabChange("chat"),
@@ -5184,7 +5331,7 @@ function AuthenticatedContent({
5184
5331
  })
5185
5332
  ]
5186
5333
  }),
5187
- showAgenda && /* @__PURE__ */ jsxs16("button", {
5334
+ /* @__PURE__ */ jsxs17("button", {
5188
5335
  type: "button",
5189
5336
  className: cn("skippr:relative skippr:inline-flex skippr:cursor-pointer skippr:items-center skippr:gap-1.5 skippr:rounded-lg skippr:px-3 skippr:py-1.5 skippr:text-sm skippr:font-medium skippr:transition-all", activeTab === "agenda" ? "skippr:text-foreground" : "skippr:text-muted-foreground skippr:hover:text-foreground"),
5190
5337
  onClick: () => onTabChange("agenda"),
@@ -5207,7 +5354,7 @@ function AuthenticatedContent({
5207
5354
  children: /* @__PURE__ */ jsx19(LoadingDots, {
5208
5355
  label: "Ending session..."
5209
5356
  })
5210
- }) : inSession ? /* @__PURE__ */ jsxs16(Fragment2, {
5357
+ }) : inSession ? /* @__PURE__ */ jsxs17(Fragment3, {
5211
5358
  children: [
5212
5359
  transitionLabel && /* @__PURE__ */ jsx19("div", {
5213
5360
  className: "skippr:shrink-0 skippr:border-b skippr:border-border skippr:bg-muted/50 skippr:px-3 skippr:py-1.5 skippr:text-center skippr:text-xs skippr:text-muted-foreground",
@@ -5232,48 +5379,36 @@ function AuthenticatedContent({
5232
5379
  })
5233
5380
  }, `${activeTab}-empty`)
5234
5381
  }),
5235
- !hideControls && /* @__PURE__ */ jsxs16("div", {
5382
+ !hideControls && /* @__PURE__ */ jsx19("div", {
5236
5383
  className: "skippr:shrink-0 skippr:border-t skippr:border-border",
5237
- children: [
5238
- isConnected && !isDisconnecting && /* @__PURE__ */ jsx19(ModeToggleRow, {}),
5239
- /* @__PURE__ */ jsx19("div", {
5240
- className: "skippr:px-4 skippr:pt-1.5 skippr:pb-2 skippr:text-center skippr:text-[10px] skippr:text-muted-foreground",
5241
- children: "Powered by Skippr"
5242
- })
5243
- ]
5384
+ children: /* @__PURE__ */ jsxs17("div", {
5385
+ 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",
5386
+ children: [
5387
+ /* @__PURE__ */ jsxs17("svg", {
5388
+ viewBox: "21 21 109 109",
5389
+ className: "skippr:size-3",
5390
+ fill: "none",
5391
+ "aria-hidden": "true",
5392
+ children: [
5393
+ /* @__PURE__ */ jsx19("path", {
5394
+ 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",
5395
+ fill: "currentColor"
5396
+ }),
5397
+ /* @__PURE__ */ jsx19("path", {
5398
+ 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",
5399
+ className: "skippr:fill-brand"
5400
+ })
5401
+ ]
5402
+ }),
5403
+ "Powered by Skippr"
5404
+ ]
5405
+ })
5244
5406
  })
5245
5407
  ]
5246
5408
  });
5247
5409
  }
5248
- function ModeToggleRow() {
5249
- const { textMode, toggleTextMode } = useTextMode();
5250
- return /* @__PURE__ */ jsx19("div", {
5251
- className: "skippr:flex skippr:justify-center skippr:px-3 skippr:pt-2 skippr:pb-0",
5252
- children: /* @__PURE__ */ jsx19("button", {
5253
- type: "button",
5254
- "aria-label": textMode ? "Switch to voice mode" : "Switch to text mode",
5255
- className: "skippr:flex skippr:cursor-pointer skippr:items-center skippr:gap-2 skippr:rounded-xl skippr:bg-muted skippr:px-4 skippr:py-1.5 skippr:text-sm skippr:font-medium skippr:text-foreground skippr:transition-colors skippr:hover:bg-muted/70",
5256
- onClick: () => void toggleTextMode(),
5257
- children: textMode ? /* @__PURE__ */ jsxs16(Fragment2, {
5258
- children: [
5259
- /* @__PURE__ */ jsx19(Mic, {
5260
- className: "skippr:size-4"
5261
- }),
5262
- "Voice mode"
5263
- ]
5264
- }) : /* @__PURE__ */ jsxs16(Fragment2, {
5265
- children: [
5266
- /* @__PURE__ */ jsx19(MessageSquare, {
5267
- className: "skippr:size-4"
5268
- }),
5269
- "Text mode"
5270
- ]
5271
- })
5272
- })
5273
- });
5274
- }
5275
5410
  function AuthError() {
5276
- return /* @__PURE__ */ jsxs16("div", {
5411
+ return /* @__PURE__ */ jsxs17("div", {
5277
5412
  className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:items-center skippr:justify-center skippr:px-6 skippr:py-4 skippr:text-center",
5278
5413
  children: [
5279
5414
  /* @__PURE__ */ jsx19(CircleAlert, {
@@ -5330,9 +5465,9 @@ function ConnectedBody({
5330
5465
  import { useContext as useContext11 } from "react";
5331
5466
 
5332
5467
  // src/components/Logo.tsx
5333
- import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
5468
+ import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
5334
5469
  function Logo({ className }) {
5335
- return /* @__PURE__ */ jsxs17("svg", {
5470
+ return /* @__PURE__ */ jsxs18("svg", {
5336
5471
  width: "1em",
5337
5472
  height: "1em",
5338
5473
  viewBox: "0 0 200 200",
@@ -5348,7 +5483,7 @@ function Logo({ className }) {
5348
5483
  rx: "40",
5349
5484
  fill: "#2D2D3F"
5350
5485
  }),
5351
- /* @__PURE__ */ jsxs17("g", {
5486
+ /* @__PURE__ */ jsxs18("g", {
5352
5487
  transform: "translate(100 100) scale(0.8) translate(-100 -100)",
5353
5488
  children: [
5354
5489
  /* @__PURE__ */ jsx20("path", {
@@ -5401,7 +5536,7 @@ function SidebarTrigger() {
5401
5536
  }
5402
5537
 
5403
5538
  // src/components/LiveAgent.tsx
5404
- import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
5539
+ import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
5405
5540
  function AgentCursorMount({ animated }) {
5406
5541
  return /* @__PURE__ */ jsx22(AgentCursor, {
5407
5542
  target: useAgentCursor(),
@@ -5412,7 +5547,7 @@ function PlanPanelOpener() {
5412
5547
  const plan = usePlanUpdates();
5413
5548
  const { expandPanel } = useLiveAgent();
5414
5549
  const surfacedPlanIdRef = useRef17(null);
5415
- useEffect23(() => {
5550
+ useEffect25(() => {
5416
5551
  if (plan?.state !== "proposed" || surfacedPlanIdRef.current === plan.planId)
5417
5552
  return;
5418
5553
  surfacedPlanIdRef.current = plan.planId;
@@ -5451,18 +5586,18 @@ function LiveAgent(props) {
5451
5586
  const auth = useAuth({ appKey });
5452
5587
  const usesHostAuth = !!getUserToken || !!userToken || !!authTokenProp;
5453
5588
  const effectiveAuthToken = usesHostAuth ? authTokenProp : auth.authToken ?? undefined;
5454
- const [activeModule, setActiveModule] = useState17(null);
5455
- const minimizeOnSessionStart = useCallback14(() => {
5589
+ const [activeModule, setActiveModule] = useState18(null);
5590
+ const minimizeOnSessionStart = useCallback15(() => {
5456
5591
  if (minimizable) {
5457
5592
  setIsMinimized(true);
5458
5593
  setIsPanelOpen(false);
5459
5594
  }
5460
5595
  }, [minimizable]);
5461
- const expandOnSessionStartError = useCallback14(() => {
5596
+ const expandOnSessionStartError = useCallback15(() => {
5462
5597
  setIsMinimized(false);
5463
5598
  setIsPanelOpen(true);
5464
5599
  }, []);
5465
- const minimizeOnSessionDisconnect = useCallback14(() => {
5600
+ const minimizeOnSessionDisconnect = useCallback15(() => {
5466
5601
  setActiveModule(null);
5467
5602
  if (minimizable) {
5468
5603
  setIsMinimized(true);
@@ -5481,6 +5616,7 @@ function LiveAgent(props) {
5481
5616
  pauseSession,
5482
5617
  disconnect,
5483
5618
  isPaused,
5619
+ pauseTimeoutSeconds,
5484
5620
  historyMessages,
5485
5621
  pendingScreenStream,
5486
5622
  bearerToken,
@@ -5498,28 +5634,28 @@ function LiveAgent(props) {
5498
5634
  });
5499
5635
  const teardownInFlightRef = useRef17(false);
5500
5636
  teardownInFlightRef.current = isPaused || isPausing || isDisconnecting;
5501
- const handleRoomDisconnected = useCallback14(() => {
5637
+ const handleRoomDisconnected = useCallback15(() => {
5502
5638
  if (teardownInFlightRef.current)
5503
5639
  return;
5504
5640
  disconnect();
5505
5641
  }, [disconnect]);
5506
5642
  const isSessionLive = connection !== null || isStarting || isPausing || isDisconnecting;
5507
- const [isPanelOpen, setIsPanelOpen] = useState17(defaultOpen);
5508
- const [isMinimized, setIsMinimized] = useState17(minimizable && !defaultOpen);
5509
- const [sidebarTab, setSidebarTab] = useState17("agenda");
5510
- const [phasesSnapshot, setPhasesSnapshot] = useState17([]);
5511
- const [textMode, setTextMode] = useState17(false);
5512
- const [panelExpanded, setPanelExpanded] = useState17(false);
5513
- const togglePanelExpanded = useCallback14(() => setPanelExpanded((prev) => !prev), []);
5643
+ const [isPanelOpen, setIsPanelOpen] = useState18(defaultOpen);
5644
+ const [isMinimized, setIsMinimized] = useState18(minimizable && !defaultOpen);
5645
+ const [sidebarTab, setSidebarTab] = useState18("agenda");
5646
+ const [phasesSnapshot, setPhasesSnapshot] = useState18([]);
5647
+ const [textMode, setTextMode] = useState18(false);
5648
+ const [panelExpanded, setPanelExpanded] = useState18(false);
5649
+ const togglePanelExpanded = useCallback15(() => setPanelExpanded((prev) => !prev), []);
5514
5650
  const panelRef = useRef17(null);
5515
5651
  const controlBarRef = useRef17(null);
5516
- const setTextModeState = useCallback14((enabled) => {
5652
+ const [isDragging, setIsDragging] = useState18(false);
5653
+ const setTextModeState = useCallback15((enabled) => {
5517
5654
  setTextMode(enabled);
5518
- setPanelExpanded(enabled);
5519
5655
  }, []);
5520
5656
  const isConnected = connection !== null;
5521
5657
  const showControlBar = isConnected || isStarting || isPausing;
5522
- useEffect23(() => {
5658
+ useEffect25(() => {
5523
5659
  if (!isConnected)
5524
5660
  setTextModeState(false);
5525
5661
  }, [isConnected, setTextModeState]);
@@ -5546,7 +5682,7 @@ function LiveAgent(props) {
5546
5682
  const agentMode = operatingModule?.mode ?? null;
5547
5683
  const shouldAnimateCursor = operatingModule?.uiPreferences?.animateCursor ?? animateAgentCursor;
5548
5684
  const resumableSession = useMemo6(() => getResumableSession(operatingModule), [operatingModule]);
5549
- const resumeSession = useCallback14(async () => {
5685
+ const resumeSession = useCallback15(async () => {
5550
5686
  if (!resumableSession)
5551
5687
  return;
5552
5688
  await startSession({
@@ -5555,7 +5691,7 @@ function LiveAgent(props) {
5555
5691
  existingSessionId: resumableSession.id
5556
5692
  });
5557
5693
  }, [resumableSession, startSession, agentControls]);
5558
- const selectModule = useCallback14((moduleId) => {
5694
+ const selectModule = useCallback15((moduleId) => {
5559
5695
  const found = availableModules.find((m) => m.id === moduleId);
5560
5696
  if (!found)
5561
5697
  return;
@@ -5566,7 +5702,7 @@ function LiveAgent(props) {
5566
5702
  existingSessionId: getResumableSessionId(found.currentSession, found.mode)
5567
5703
  });
5568
5704
  }, [availableModules, startSession]);
5569
- const startAdoptionSession = useCallback14((goal) => {
5705
+ const startAdoptionSession = useCallback15((goal) => {
5570
5706
  attendGoal(goal.goalId);
5571
5707
  const found = availableModules.find((m) => m.id === goal.agentId);
5572
5708
  if (found)
@@ -5577,9 +5713,9 @@ function LiveAgent(props) {
5577
5713
  adoptionGoalId: goal.goalId
5578
5714
  });
5579
5715
  }, [attendGoal, availableModules, startSession]);
5580
- const [welcomeDismissed, setWelcomeDismissed] = useState17(false);
5581
- const dismissWelcome = useCallback14(() => setWelcomeDismissed(true), []);
5582
- const [currentPosition, setCurrentPosition] = useState17(() => {
5716
+ const [welcomeDismissed, setWelcomeDismissed] = useState18(false);
5717
+ const dismissWelcome = useCallback15(() => setWelcomeDismissed(true), []);
5718
+ const [currentPosition, setCurrentPosition] = useState18(() => {
5583
5719
  try {
5584
5720
  const saved = localStorage.getItem("skippr_widget_position");
5585
5721
  if (saved === "left" || saved === "right")
@@ -5587,13 +5723,13 @@ function LiveAgent(props) {
5587
5723
  } catch {}
5588
5724
  return position;
5589
5725
  });
5590
- const setPositionWithPersist = useCallback14((pos) => {
5726
+ const setPositionWithPersist = useCallback15((pos) => {
5591
5727
  setCurrentPosition(pos);
5592
5728
  try {
5593
5729
  localStorage.setItem("skippr_widget_position", pos);
5594
5730
  } catch {}
5595
5731
  }, []);
5596
- const [launcherBottomPx, setLauncherBottomPxState] = useState17(() => {
5732
+ const [launcherBottomPx, setLauncherBottomPxState] = useState18(() => {
5597
5733
  try {
5598
5734
  const saved = Number.parseInt(localStorage.getItem("skippr_widget_bottom") ?? "", 10);
5599
5735
  if (Number.isFinite(saved) && saved > 0)
@@ -5601,8 +5737,8 @@ function LiveAgent(props) {
5601
5737
  } catch {}
5602
5738
  return DEFAULT_LAUNCHER_BOTTOM_PX;
5603
5739
  });
5604
- const [popsDown, setPopsDown] = useState17(() => launcherPopsDown(launcherBottomPx));
5605
- const setLauncherBottomPx = useCallback14((px) => {
5740
+ const [popsDown, setPopsDown] = useState18(() => launcherPopsDown(launcherBottomPx));
5741
+ const setLauncherBottomPx = useCallback15((px) => {
5606
5742
  setLauncherBottomPxState(px);
5607
5743
  setPopsDown(launcherPopsDown(px));
5608
5744
  try {
@@ -5611,11 +5747,11 @@ function LiveAgent(props) {
5611
5747
  }, []);
5612
5748
  const launcherBottomPxRef = useRef17(launcherBottomPx);
5613
5749
  launcherBottomPxRef.current = launcherBottomPx;
5614
- const commitLauncherDrop = useCallback14(({ side, bottomPx }) => {
5750
+ const commitLauncherDrop = useCallback15(({ side, bottomPx }) => {
5615
5751
  setPositionWithPersist(side);
5616
5752
  setLauncherBottomPx(bottomPx);
5617
5753
  }, [setPositionWithPersist, setLauncherBottomPx]);
5618
- useEffect23(() => {
5754
+ useEffect25(() => {
5619
5755
  const syncToViewport = () => {
5620
5756
  const clamped = clampLauncherBottom(launcherBottomPxRef.current);
5621
5757
  setLauncherBottomPxState(clamped);
@@ -5625,20 +5761,20 @@ function LiveAgent(props) {
5625
5761
  window.addEventListener("resize", syncToViewport);
5626
5762
  return () => window.removeEventListener("resize", syncToViewport);
5627
5763
  }, []);
5628
- const openPanel = useCallback14(() => setIsPanelOpen(true), []);
5629
- const closePanel = useCallback14(() => setIsPanelOpen(false), []);
5630
- const togglePanel = useCallback14(() => setIsPanelOpen((prev) => !prev), []);
5631
- const expandPanel = useCallback14(() => {
5764
+ const openPanel = useCallback15(() => setIsPanelOpen(true), []);
5765
+ const closePanel = useCallback15(() => setIsPanelOpen(false), []);
5766
+ const togglePanel = useCallback15(() => setIsPanelOpen((prev) => !prev), []);
5767
+ const expandPanel = useCallback15(() => {
5632
5768
  setIsMinimized(false);
5633
5769
  setIsPanelOpen(true);
5634
5770
  }, []);
5635
- const minimizePanel = useCallback14(() => {
5771
+ const minimizePanel = useCallback15(() => {
5636
5772
  if (!minimizable)
5637
5773
  return;
5638
5774
  setIsMinimized(true);
5639
5775
  setIsPanelOpen(false);
5640
5776
  }, [minimizable]);
5641
- const pauseSessionAndMinimize = useCallback14(async () => {
5777
+ const pauseSessionAndMinimize = useCallback15(async () => {
5642
5778
  await pauseSession();
5643
5779
  minimizePanel();
5644
5780
  }, [pauseSession, minimizePanel]);
@@ -5657,6 +5793,7 @@ function LiveAgent(props) {
5657
5793
  resumeSession,
5658
5794
  disconnect,
5659
5795
  isPaused,
5796
+ pauseTimeoutSeconds,
5660
5797
  resumableSession,
5661
5798
  historyMessages,
5662
5799
  phasesSnapshot,
@@ -5676,6 +5813,8 @@ function LiveAgent(props) {
5676
5813
  togglePanelExpanded,
5677
5814
  panelRef,
5678
5815
  controlBarRef,
5816
+ isDragging,
5817
+ setIsDragging,
5679
5818
  minimizable,
5680
5819
  isMinimized,
5681
5820
  expandPanel,
@@ -5721,6 +5860,7 @@ function LiveAgent(props) {
5721
5860
  resumeSession,
5722
5861
  disconnect,
5723
5862
  isPaused,
5863
+ pauseTimeoutSeconds,
5724
5864
  resumableSession,
5725
5865
  historyMessages,
5726
5866
  phasesSnapshot,
@@ -5737,6 +5877,7 @@ function LiveAgent(props) {
5737
5877
  popsDown,
5738
5878
  panelExpanded,
5739
5879
  togglePanelExpanded,
5880
+ isDragging,
5740
5881
  minimizable,
5741
5882
  isMinimized,
5742
5883
  expandPanel,
@@ -5770,7 +5911,7 @@ function LiveAgent(props) {
5770
5911
  ]);
5771
5912
  return /* @__PURE__ */ jsx22(LiveAgentContext.Provider, {
5772
5913
  value: ctx,
5773
- children: /* @__PURE__ */ jsxs18(LiveKitRoom, {
5914
+ children: /* @__PURE__ */ jsxs19(LiveKitRoom, {
5774
5915
  serverUrl: connection?.livekitUrl,
5775
5916
  token: connection?.token,
5776
5917
  connect: shouldConnect,
@@ -5782,7 +5923,7 @@ function LiveAgent(props) {
5782
5923
  pendingScreenStream
5783
5924
  }),
5784
5925
  connection && captureMode === "auto" && /* @__PURE__ */ jsx22(DomCapture, {}),
5785
- /* @__PURE__ */ jsxs18(ShadowHost, {
5926
+ /* @__PURE__ */ jsxs19(ShadowHost, {
5786
5927
  children: [
5787
5928
  connection && captureMode === "auto" && agentControls?.highlight && /* @__PURE__ */ jsx22(HighlightOverlay, {}),
5788
5929
  connection && captureMode === "auto" && agentControls?.actions && /* @__PURE__ */ jsx22(PageActionHandler, {}),
@@ -5790,7 +5931,7 @@ function LiveAgent(props) {
5790
5931
  connection && captureMode === "auto" && (agentControls?.highlight || agentControls?.actions) && /* @__PURE__ */ jsx22(AgentCursorMount, {
5791
5932
  animated: shouldAnimateCursor
5792
5933
  }),
5793
- /* @__PURE__ */ jsxs18("div", {
5934
+ /* @__PURE__ */ jsxs19("div", {
5794
5935
  id: WIDGET_ROOT_ID,
5795
5936
  children: [
5796
5937
  isMinimized && !showControlBar && /* @__PURE__ */ jsx22(MinimizedBubble, {
@@ -5815,9 +5956,9 @@ function LiveAgent(props) {
5815
5956
  });
5816
5957
  }
5817
5958
  // src/hooks/useIsLocalSpeaking.ts
5818
- import { useIsSpeaking, useLocalParticipant as useLocalParticipant9 } from "@livekit/components-react/hooks";
5959
+ import { useIsSpeaking, useLocalParticipant as useLocalParticipant10 } from "@livekit/components-react/hooks";
5819
5960
  function useIsLocalSpeaking() {
5820
- const { localParticipant } = useLocalParticipant9();
5961
+ const { localParticipant } = useLocalParticipant10();
5821
5962
  return useIsSpeaking(localParticipant);
5822
5963
  }
5823
5964
  export {