@skippr/live-agent-sdk 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/lib-exports.js
CHANGED
|
@@ -22,6 +22,7 @@ function useSession({ agentId, authToken, appKey }) {
|
|
|
22
22
|
const [isStarting, setIsStarting] = useState(false);
|
|
23
23
|
const [error, setError] = useState("");
|
|
24
24
|
const [sessionId, setSessionId] = useState(null);
|
|
25
|
+
const [sessionToken, setSessionToken] = useState(null);
|
|
25
26
|
const startSession = useCallback(async () => {
|
|
26
27
|
setIsStarting(true);
|
|
27
28
|
setError("");
|
|
@@ -36,15 +37,17 @@ function useSession({ agentId, authToken, appKey }) {
|
|
|
36
37
|
throw new Error(`Failed to create session: ${createResp.status}`);
|
|
37
38
|
}
|
|
38
39
|
const { session } = await createResp.json();
|
|
40
|
+
const sessionHeaders = { "X-Session-Token": session.sessionToken };
|
|
39
41
|
const startResp = await fetch(`${API_URL}/v1/sessions/${session.id}/start`, {
|
|
40
42
|
method: "POST",
|
|
41
|
-
headers:
|
|
43
|
+
headers: sessionHeaders
|
|
42
44
|
});
|
|
43
45
|
if (!startResp.ok) {
|
|
44
46
|
throw new Error(`Failed to start session: ${startResp.status}`);
|
|
45
47
|
}
|
|
46
48
|
const { connection: conn } = await startResp.json();
|
|
47
49
|
setSessionId(session.id);
|
|
50
|
+
setSessionToken(session.sessionToken);
|
|
48
51
|
setConnection({
|
|
49
52
|
livekitUrl: conn.livekitUrl,
|
|
50
53
|
token: conn.token
|
|
@@ -57,12 +60,12 @@ function useSession({ agentId, authToken, appKey }) {
|
|
|
57
60
|
}
|
|
58
61
|
}, [agentId, authToken, appKey]);
|
|
59
62
|
const disconnect = useCallback(async () => {
|
|
60
|
-
if (sessionId) {
|
|
61
|
-
const
|
|
63
|
+
if (sessionId && sessionToken) {
|
|
64
|
+
const sessionHeaders = { "X-Session-Token": sessionToken };
|
|
62
65
|
try {
|
|
63
66
|
await fetch(`${API_URL}/v1/sessions/${sessionId}/complete`, {
|
|
64
67
|
method: "POST",
|
|
65
|
-
headers: { "Content-Type": "application/json", ...
|
|
68
|
+
headers: { "Content-Type": "application/json", ...sessionHeaders },
|
|
66
69
|
body: JSON.stringify({})
|
|
67
70
|
});
|
|
68
71
|
} catch {}
|
|
@@ -71,7 +74,8 @@ function useSession({ agentId, authToken, appKey }) {
|
|
|
71
74
|
setShouldConnect(false);
|
|
72
75
|
setConnection(null);
|
|
73
76
|
setSessionId(null);
|
|
74
|
-
|
|
77
|
+
setSessionToken(null);
|
|
78
|
+
}, [sessionId, sessionToken]);
|
|
75
79
|
return { connection, shouldConnect, isStarting, error, startSession, disconnect };
|
|
76
80
|
}
|
|
77
81
|
|
|
@@ -517,7 +521,7 @@ function ChatHeader({ onClose }) {
|
|
|
517
521
|
// src/components/MeetingControls.tsx
|
|
518
522
|
import { useLocalParticipant as useLocalParticipant3 } from "@livekit/components-react";
|
|
519
523
|
import { ScreenSharePresets } from "livekit-client";
|
|
520
|
-
import { useCallback as useCallback4, useEffect as useEffect2, useState as useState3 } from "react";
|
|
524
|
+
import { useCallback as useCallback4, useEffect as useEffect2, useRef, useState as useState3 } from "react";
|
|
521
525
|
|
|
522
526
|
// src/lib/format.ts
|
|
523
527
|
function formatTime(seconds) {
|
|
@@ -525,18 +529,45 @@ function formatTime(seconds) {
|
|
|
525
529
|
const s = (seconds % 60).toString().padStart(2, "0");
|
|
526
530
|
return `${m}:${s}`;
|
|
527
531
|
}
|
|
532
|
+
function parseNumber(s) {
|
|
533
|
+
const n = Number(s);
|
|
534
|
+
return n > 0 ? n : null;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// src/components/SessionWarningBanner.tsx
|
|
538
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
539
|
+
var SESSION_WARNING_THRESHOLD_SECS = 60;
|
|
540
|
+
function SessionWarningBanner({ remaining }) {
|
|
541
|
+
if (remaining === null || remaining <= 0 || remaining > SESSION_WARNING_THRESHOLD_SECS)
|
|
542
|
+
return null;
|
|
543
|
+
return /* @__PURE__ */ jsx3("div", {
|
|
544
|
+
"data-testid": "session-warning-banner",
|
|
545
|
+
className: "skippr:bg-red-50 skippr:px-4 skippr:py-1.5 skippr:text-center skippr:text-xs skippr:font-medium skippr:text-red-700",
|
|
546
|
+
children: "Session ending soon"
|
|
547
|
+
});
|
|
548
|
+
}
|
|
528
549
|
|
|
529
550
|
// src/components/MeetingControls.tsx
|
|
530
|
-
import { jsx as
|
|
551
|
+
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
531
552
|
function MeetingControls({ onHangUp }) {
|
|
553
|
+
const maxCallDuration = useAgentState("maxCallDuration", parseNumber, null);
|
|
532
554
|
const { localParticipant } = useLocalParticipant3();
|
|
533
555
|
const isMuted = !localParticipant.isMicrophoneEnabled;
|
|
534
556
|
const isScreenSharing = localParticipant.isScreenShareEnabled;
|
|
535
|
-
const
|
|
557
|
+
const endTimeRef = useRef(null);
|
|
558
|
+
const [remaining, setRemaining] = useState3(null);
|
|
536
559
|
useEffect2(() => {
|
|
537
|
-
|
|
560
|
+
if (maxCallDuration === null || endTimeRef.current !== null)
|
|
561
|
+
return;
|
|
562
|
+
endTimeRef.current = Date.now() + maxCallDuration * 1000;
|
|
563
|
+
const tick = () => {
|
|
564
|
+
const secs = Math.ceil((endTimeRef.current - Date.now()) / 1000);
|
|
565
|
+
setRemaining(Math.max(secs, 0));
|
|
566
|
+
};
|
|
567
|
+
tick();
|
|
568
|
+
const id = setInterval(tick, 1000);
|
|
538
569
|
return () => clearInterval(id);
|
|
539
|
-
}, []);
|
|
570
|
+
}, [maxCallDuration]);
|
|
540
571
|
const toggleMute = useCallback4(async () => {
|
|
541
572
|
try {
|
|
542
573
|
await localParticipant.setMicrophoneEnabled(isMuted);
|
|
@@ -559,58 +590,65 @@ function MeetingControls({ onHangUp }) {
|
|
|
559
590
|
toggleMute().then(() => toggleScreenShare());
|
|
560
591
|
}, []);
|
|
561
592
|
return /* @__PURE__ */ jsxs2("div", {
|
|
562
|
-
className: "skippr:flex skippr:items-center skippr:justify-between skippr:border-b skippr:px-4 skippr:py-3",
|
|
563
593
|
children: [
|
|
594
|
+
/* @__PURE__ */ jsx4(SessionWarningBanner, {
|
|
595
|
+
remaining
|
|
596
|
+
}),
|
|
564
597
|
/* @__PURE__ */ jsxs2("div", {
|
|
565
|
-
className: "skippr:flex skippr:items-center skippr:
|
|
598
|
+
className: "skippr:flex skippr:items-center skippr:justify-between skippr:border-b skippr:px-4 skippr:py-3",
|
|
566
599
|
children: [
|
|
567
|
-
/* @__PURE__ */
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
600
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
601
|
+
className: "skippr:flex skippr:items-center skippr:gap-2",
|
|
602
|
+
children: [
|
|
603
|
+
/* @__PURE__ */ jsx4(Button, {
|
|
604
|
+
size: "icon-sm",
|
|
605
|
+
variant: isMuted ? "destructive" : "outline",
|
|
606
|
+
onClick: toggleMute,
|
|
607
|
+
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
608
|
+
children: isMuted ? /* @__PURE__ */ jsx4(MicOff, {
|
|
609
|
+
className: "skippr:size-4"
|
|
610
|
+
}) : /* @__PURE__ */ jsx4(Mic, {
|
|
611
|
+
className: "skippr:size-4"
|
|
612
|
+
})
|
|
613
|
+
}),
|
|
614
|
+
/* @__PURE__ */ jsx4(Button, {
|
|
615
|
+
size: "icon-sm",
|
|
616
|
+
variant: isScreenSharing ? "default" : "outline",
|
|
617
|
+
onClick: toggleScreenShare,
|
|
618
|
+
"aria-label": isScreenSharing ? "Stop sharing" : "Share screen",
|
|
619
|
+
children: isScreenSharing ? /* @__PURE__ */ jsx4(MonitorOff, {
|
|
620
|
+
className: "skippr:size-4"
|
|
621
|
+
}) : /* @__PURE__ */ jsx4(Monitor, {
|
|
622
|
+
className: "skippr:size-4"
|
|
623
|
+
})
|
|
624
|
+
})
|
|
625
|
+
]
|
|
626
|
+
}),
|
|
627
|
+
remaining !== null && /* @__PURE__ */ jsx4("span", {
|
|
628
|
+
className: cn("skippr:text-sm skippr:font-medium skippr:tabular-nums", remaining <= SESSION_WARNING_THRESHOLD_SECS ? "skippr:text-red-600 skippr:animate-pulse" : "skippr:text-muted-foreground"),
|
|
629
|
+
children: formatTime(remaining)
|
|
577
630
|
}),
|
|
578
|
-
/* @__PURE__ */
|
|
631
|
+
/* @__PURE__ */ jsx4(Button, {
|
|
579
632
|
size: "icon-sm",
|
|
580
|
-
variant:
|
|
581
|
-
onClick:
|
|
582
|
-
"aria-label":
|
|
583
|
-
children:
|
|
584
|
-
className: "skippr:size-4"
|
|
585
|
-
}) : /* @__PURE__ */ jsx3(Monitor, {
|
|
633
|
+
variant: "destructive",
|
|
634
|
+
onClick: onHangUp,
|
|
635
|
+
"aria-label": "Hang up",
|
|
636
|
+
children: /* @__PURE__ */ jsx4(PhoneOff, {
|
|
586
637
|
className: "skippr:size-4"
|
|
587
638
|
})
|
|
588
639
|
})
|
|
589
640
|
]
|
|
590
|
-
}),
|
|
591
|
-
/* @__PURE__ */ jsx3("span", {
|
|
592
|
-
className: "skippr:text-sm skippr:font-medium skippr:tabular-nums skippr:text-muted-foreground",
|
|
593
|
-
children: formatTime(elapsed)
|
|
594
|
-
}),
|
|
595
|
-
/* @__PURE__ */ jsx3(Button, {
|
|
596
|
-
size: "icon-sm",
|
|
597
|
-
variant: "destructive",
|
|
598
|
-
onClick: onHangUp,
|
|
599
|
-
"aria-label": "Hang up",
|
|
600
|
-
children: /* @__PURE__ */ jsx3(PhoneOff, {
|
|
601
|
-
className: "skippr:size-4"
|
|
602
|
-
})
|
|
603
641
|
})
|
|
604
642
|
]
|
|
605
643
|
});
|
|
606
644
|
}
|
|
607
645
|
|
|
608
646
|
// src/components/MessageList.tsx
|
|
609
|
-
import { useEffect as useEffect3, useRef } from "react";
|
|
647
|
+
import { useEffect as useEffect3, useRef as useRef2 } from "react";
|
|
610
648
|
|
|
611
649
|
// src/components/ChatInput.tsx
|
|
612
650
|
import { useState as useState4 } from "react";
|
|
613
|
-
import { jsx as
|
|
651
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
614
652
|
function ChatInput({ sendChatMessage, isSendingChat }) {
|
|
615
653
|
const [inputText, setInputText] = useState4("");
|
|
616
654
|
const canSend = inputText.trim().length > 0 && !isSendingChat;
|
|
@@ -626,7 +664,7 @@ function ChatInput({ sendChatMessage, isSendingChat }) {
|
|
|
626
664
|
onSubmit: handleSubmit,
|
|
627
665
|
className: "skippr:flex skippr:items-center skippr:gap-2 skippr:border-t skippr:border-border skippr:px-3 skippr:py-2",
|
|
628
666
|
children: [
|
|
629
|
-
/* @__PURE__ */
|
|
667
|
+
/* @__PURE__ */ jsx5("input", {
|
|
630
668
|
type: "text",
|
|
631
669
|
value: inputText,
|
|
632
670
|
onChange: (e) => setInputText(e.target.value),
|
|
@@ -634,12 +672,12 @@ function ChatInput({ sendChatMessage, isSendingChat }) {
|
|
|
634
672
|
className: cn("skippr:flex-1 skippr:rounded-lg skippr:border skippr:border-border skippr:bg-background", "skippr:px-3 skippr:py-2 skippr:text-sm skippr:text-foreground", "skippr:placeholder:text-muted-foreground skippr:outline-none", "skippr:focus:ring-1 skippr:focus:ring-ring"),
|
|
635
673
|
disabled: isSendingChat
|
|
636
674
|
}),
|
|
637
|
-
/* @__PURE__ */
|
|
675
|
+
/* @__PURE__ */ jsx5("button", {
|
|
638
676
|
type: "submit",
|
|
639
677
|
disabled: !canSend,
|
|
640
678
|
"aria-label": "Send message",
|
|
641
679
|
className: cn("skippr:flex skippr:size-9 skippr:shrink-0 skippr:items-center skippr:justify-center", "skippr:rounded-lg skippr:bg-primary skippr:text-primary-foreground", "skippr:transition-opacity", !canSend && "skippr:opacity-50 skippr:cursor-not-allowed"),
|
|
642
|
-
children: /* @__PURE__ */
|
|
680
|
+
children: /* @__PURE__ */ jsx5(SendHorizontal, {
|
|
643
681
|
className: "skippr:size-4"
|
|
644
682
|
})
|
|
645
683
|
})
|
|
@@ -648,12 +686,12 @@ function ChatInput({ sendChatMessage, isSendingChat }) {
|
|
|
648
686
|
}
|
|
649
687
|
|
|
650
688
|
// src/components/ChatMessage.tsx
|
|
651
|
-
import { jsx as
|
|
689
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
652
690
|
function ChatMessage({ message }) {
|
|
653
691
|
const isUser = message.role === "user";
|
|
654
|
-
return /* @__PURE__ */
|
|
692
|
+
return /* @__PURE__ */ jsx6("div", {
|
|
655
693
|
className: cn("skippr:flex skippr:w-full skippr:px-4 skippr:py-1", isUser ? "skippr:justify-end" : "skippr:justify-start"),
|
|
656
|
-
children: /* @__PURE__ */
|
|
694
|
+
children: /* @__PURE__ */ jsx6("div", {
|
|
657
695
|
className: cn("skippr:max-w-[85%] skippr:whitespace-pre-wrap skippr:rounded-2xl skippr:px-4 skippr:py-2.5 skippr:text-sm skippr:leading-relaxed", isUser ? "skippr:rounded-br-sm skippr:bg-primary skippr:text-primary-foreground" : "skippr:rounded-bl-sm skippr:bg-muted skippr:text-foreground"),
|
|
658
696
|
children: message.content
|
|
659
697
|
})
|
|
@@ -661,20 +699,20 @@ function ChatMessage({ message }) {
|
|
|
661
699
|
}
|
|
662
700
|
|
|
663
701
|
// src/components/TypingIndicator.tsx
|
|
664
|
-
import { jsx as
|
|
702
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
665
703
|
function TypingIndicator() {
|
|
666
|
-
return /* @__PURE__ */
|
|
704
|
+
return /* @__PURE__ */ jsx7("div", {
|
|
667
705
|
className: "skippr:flex skippr:items-center skippr:gap-1 skippr:px-4 skippr:py-3",
|
|
668
706
|
children: /* @__PURE__ */ jsxs4("div", {
|
|
669
707
|
className: "skippr:flex skippr:items-center skippr:gap-1 skippr:rounded-2xl skippr:rounded-bl-sm skippr:bg-muted skippr:px-4 skippr:py-2.5",
|
|
670
708
|
children: [
|
|
671
|
-
/* @__PURE__ */
|
|
709
|
+
/* @__PURE__ */ jsx7("span", {
|
|
672
710
|
className: "skippr:size-1.5 skippr:animate-bounce skippr:rounded-full skippr:bg-muted-foreground/60 skippr:[animation-delay:0ms]"
|
|
673
711
|
}),
|
|
674
|
-
/* @__PURE__ */
|
|
712
|
+
/* @__PURE__ */ jsx7("span", {
|
|
675
713
|
className: "skippr:size-1.5 skippr:animate-bounce skippr:rounded-full skippr:bg-muted-foreground/60 skippr:[animation-delay:150ms]"
|
|
676
714
|
}),
|
|
677
|
-
/* @__PURE__ */
|
|
715
|
+
/* @__PURE__ */ jsx7("span", {
|
|
678
716
|
className: "skippr:size-1.5 skippr:animate-bounce skippr:rounded-full skippr:bg-muted-foreground/60 skippr:[animation-delay:300ms]"
|
|
679
717
|
})
|
|
680
718
|
]
|
|
@@ -683,14 +721,14 @@ function TypingIndicator() {
|
|
|
683
721
|
}
|
|
684
722
|
|
|
685
723
|
// src/components/MessageList.tsx
|
|
686
|
-
import { jsx as
|
|
724
|
+
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
687
725
|
function MessageList({
|
|
688
726
|
messages,
|
|
689
727
|
isStreaming,
|
|
690
728
|
sendChatMessage,
|
|
691
729
|
isSendingChat
|
|
692
730
|
}) {
|
|
693
|
-
const scrollRef =
|
|
731
|
+
const scrollRef = useRef2(null);
|
|
694
732
|
const lastMessage = messages.length > 0 ? messages[messages.length - 1] : undefined;
|
|
695
733
|
useEffect3(() => {
|
|
696
734
|
scrollRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
@@ -699,22 +737,22 @@ function MessageList({
|
|
|
699
737
|
return /* @__PURE__ */ jsxs5("div", {
|
|
700
738
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
|
|
701
739
|
children: [
|
|
702
|
-
/* @__PURE__ */
|
|
740
|
+
/* @__PURE__ */ jsx8("div", {
|
|
703
741
|
className: "skippr:min-h-0 skippr:flex-1 skippr:overflow-y-auto",
|
|
704
742
|
children: /* @__PURE__ */ jsxs5("div", {
|
|
705
743
|
className: "skippr:flex skippr:flex-col skippr:gap-1 skippr:py-3",
|
|
706
744
|
children: [
|
|
707
|
-
messages.map((message) => /* @__PURE__ */
|
|
745
|
+
messages.map((message) => /* @__PURE__ */ jsx8(ChatMessage, {
|
|
708
746
|
message
|
|
709
747
|
}, message.id)),
|
|
710
|
-
showTyping && /* @__PURE__ */
|
|
711
|
-
/* @__PURE__ */
|
|
748
|
+
showTyping && /* @__PURE__ */ jsx8(TypingIndicator, {}),
|
|
749
|
+
/* @__PURE__ */ jsx8("div", {
|
|
712
750
|
ref: scrollRef
|
|
713
751
|
})
|
|
714
752
|
]
|
|
715
753
|
})
|
|
716
754
|
}),
|
|
717
|
-
/* @__PURE__ */
|
|
755
|
+
/* @__PURE__ */ jsx8(ChatInput, {
|
|
718
756
|
sendChatMessage,
|
|
719
757
|
isSendingChat
|
|
720
758
|
})
|
|
@@ -723,12 +761,12 @@ function MessageList({
|
|
|
723
761
|
}
|
|
724
762
|
|
|
725
763
|
// src/components/QuickActions.tsx
|
|
726
|
-
import { jsx as
|
|
764
|
+
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
727
765
|
function QuickActions({ onStartSession, isStarting, error }) {
|
|
728
766
|
return /* @__PURE__ */ jsxs6("div", {
|
|
729
767
|
className: "skippr:flex skippr:flex-1 skippr:flex-col skippr:items-center skippr:gap-6 skippr:overflow-y-auto skippr:px-4 skippr:py-4",
|
|
730
768
|
children: [
|
|
731
|
-
/* @__PURE__ */
|
|
769
|
+
/* @__PURE__ */ jsx9("p", {
|
|
732
770
|
className: "skippr:mb-1 skippr:text-sm skippr:text-muted-foreground",
|
|
733
771
|
children: "How can I help you today?"
|
|
734
772
|
}),
|
|
@@ -738,15 +776,15 @@ function QuickActions({ onStartSession, isStarting, error }) {
|
|
|
738
776
|
onClick: onStartSession,
|
|
739
777
|
disabled: isStarting,
|
|
740
778
|
children: [
|
|
741
|
-
isStarting ? /* @__PURE__ */
|
|
779
|
+
isStarting ? /* @__PURE__ */ jsx9(LoaderCircle, {
|
|
742
780
|
className: "skippr:size-4 skippr:animate-spin skippr:text-primary"
|
|
743
|
-
}) : /* @__PURE__ */
|
|
781
|
+
}) : /* @__PURE__ */ jsx9(MessageCircleQuestionMark, {
|
|
744
782
|
className: "skippr:size-4 skippr:text-primary"
|
|
745
783
|
}),
|
|
746
784
|
isStarting ? "Starting..." : "Start Session"
|
|
747
785
|
]
|
|
748
786
|
}),
|
|
749
|
-
error && /* @__PURE__ */
|
|
787
|
+
error && /* @__PURE__ */ jsx9("p", {
|
|
750
788
|
className: "skippr:text-xs skippr:text-destructive",
|
|
751
789
|
children: error
|
|
752
790
|
})
|
|
@@ -755,17 +793,17 @@ function QuickActions({ onStartSession, isStarting, error }) {
|
|
|
755
793
|
}
|
|
756
794
|
|
|
757
795
|
// src/components/SessionAgenda.tsx
|
|
758
|
-
import { jsx as
|
|
796
|
+
import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
759
797
|
function SessionAgenda({ phases, questions = [] }) {
|
|
760
798
|
if (phases.length === 0) {
|
|
761
799
|
return /* @__PURE__ */ jsxs7("div", {
|
|
762
800
|
className: "skippr:flex skippr:flex-col skippr:gap-3 skippr:p-4",
|
|
763
801
|
children: [
|
|
764
|
-
/* @__PURE__ */
|
|
802
|
+
/* @__PURE__ */ jsx10("h3", {
|
|
765
803
|
className: "skippr:text-sm skippr:font-semibold",
|
|
766
804
|
children: "Agenda"
|
|
767
805
|
}),
|
|
768
|
-
/* @__PURE__ */
|
|
806
|
+
/* @__PURE__ */ jsx10("p", {
|
|
769
807
|
className: "skippr:text-xs skippr:text-muted-foreground",
|
|
770
808
|
children: "Waiting for session..."
|
|
771
809
|
})
|
|
@@ -775,11 +813,11 @@ function SessionAgenda({ phases, questions = [] }) {
|
|
|
775
813
|
return /* @__PURE__ */ jsxs7("div", {
|
|
776
814
|
className: "skippr:flex skippr:flex-col skippr:gap-3 skippr:p-4",
|
|
777
815
|
children: [
|
|
778
|
-
/* @__PURE__ */
|
|
816
|
+
/* @__PURE__ */ jsx10("h3", {
|
|
779
817
|
className: "skippr:text-sm skippr:font-semibold",
|
|
780
818
|
children: "Agenda"
|
|
781
819
|
}),
|
|
782
|
-
/* @__PURE__ */
|
|
820
|
+
/* @__PURE__ */ jsx10("ul", {
|
|
783
821
|
className: "skippr:flex skippr:flex-col skippr:gap-2",
|
|
784
822
|
children: phases.map((phase) => {
|
|
785
823
|
const phaseQuestions = questions.filter((q) => q.phaseName === phase.name);
|
|
@@ -791,10 +829,10 @@ function SessionAgenda({ phases, questions = [] }) {
|
|
|
791
829
|
/* @__PURE__ */ jsxs7("div", {
|
|
792
830
|
className: "skippr:flex skippr:items-center skippr:gap-2 skippr:text-sm",
|
|
793
831
|
children: [
|
|
794
|
-
/* @__PURE__ */
|
|
832
|
+
/* @__PURE__ */ jsx10(PhaseIcon, {
|
|
795
833
|
status: phase.status
|
|
796
834
|
}),
|
|
797
|
-
/* @__PURE__ */
|
|
835
|
+
/* @__PURE__ */ jsx10("span", {
|
|
798
836
|
className: cn(phase.status === "completed" && "skippr:text-muted-foreground skippr:line-through", phase.status === "active" && "skippr:font-medium skippr:text-primary"),
|
|
799
837
|
children: phase.name
|
|
800
838
|
})
|
|
@@ -818,26 +856,26 @@ function SessionAgenda({ phases, questions = [] }) {
|
|
|
818
856
|
}
|
|
819
857
|
function PhaseIcon({ status }) {
|
|
820
858
|
if (status === "completed") {
|
|
821
|
-
return /* @__PURE__ */
|
|
859
|
+
return /* @__PURE__ */ jsx10("div", {
|
|
822
860
|
className: "skippr:flex skippr:size-4 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-primary",
|
|
823
|
-
children: /* @__PURE__ */
|
|
861
|
+
children: /* @__PURE__ */ jsx10(Check, {
|
|
824
862
|
className: "skippr:size-2.5 skippr:text-primary-foreground",
|
|
825
863
|
strokeWidth: 3
|
|
826
864
|
})
|
|
827
865
|
});
|
|
828
866
|
}
|
|
829
867
|
if (status === "active") {
|
|
830
|
-
return /* @__PURE__ */
|
|
868
|
+
return /* @__PURE__ */ jsx10(LoaderCircle, {
|
|
831
869
|
className: "skippr:size-4 skippr:shrink-0 skippr:text-primary skippr:animate-spin"
|
|
832
870
|
});
|
|
833
871
|
}
|
|
834
|
-
return /* @__PURE__ */
|
|
872
|
+
return /* @__PURE__ */ jsx10(Circle, {
|
|
835
873
|
className: "skippr:size-4 skippr:shrink-0 skippr:text-muted-foreground"
|
|
836
874
|
});
|
|
837
875
|
}
|
|
838
876
|
|
|
839
877
|
// src/components/Sidebar.tsx
|
|
840
|
-
import { jsx as
|
|
878
|
+
import { jsx as jsx11, jsxs as jsxs8, Fragment } from "react/jsx-runtime";
|
|
841
879
|
function Sidebar() {
|
|
842
880
|
const { isConnected, isStarting, error, startSession, disconnect, isPanelOpen, closePanel } = useLiveAgent();
|
|
843
881
|
useEffect4(() => {
|
|
@@ -850,24 +888,24 @@ function Sidebar() {
|
|
|
850
888
|
document.body.style.transition = "";
|
|
851
889
|
};
|
|
852
890
|
}, []);
|
|
853
|
-
return /* @__PURE__ */
|
|
891
|
+
return /* @__PURE__ */ jsx11("div", {
|
|
854
892
|
className: cn("skippr:fixed skippr:top-0 skippr:right-0 skippr:h-full skippr:z-[9999]", "skippr:bg-background skippr:border-l skippr:border-border", "skippr:flex skippr:flex-col", "skippr:transition-all skippr:duration-300 skippr:ease-in-out skippr:overflow-hidden", !isPanelOpen && "skippr:w-0 skippr:border-l-0"),
|
|
855
893
|
style: { width: isPanelOpen ? SIDEBAR_WIDTH : undefined },
|
|
856
894
|
children: isConnected ? /* @__PURE__ */ jsxs8(Fragment, {
|
|
857
895
|
children: [
|
|
858
|
-
/* @__PURE__ */
|
|
896
|
+
/* @__PURE__ */ jsx11(ChatHeader, {
|
|
859
897
|
onClose: closePanel
|
|
860
898
|
}),
|
|
861
|
-
/* @__PURE__ */
|
|
899
|
+
/* @__PURE__ */ jsx11(ConnectedContent, {
|
|
862
900
|
onDisconnect: disconnect
|
|
863
901
|
})
|
|
864
902
|
]
|
|
865
903
|
}) : /* @__PURE__ */ jsxs8(Fragment, {
|
|
866
904
|
children: [
|
|
867
|
-
/* @__PURE__ */
|
|
905
|
+
/* @__PURE__ */ jsx11(ChatHeader, {
|
|
868
906
|
onClose: closePanel
|
|
869
907
|
}),
|
|
870
|
-
/* @__PURE__ */
|
|
908
|
+
/* @__PURE__ */ jsx11(QuickActions, {
|
|
871
909
|
onStartSession: startSession,
|
|
872
910
|
isStarting,
|
|
873
911
|
error
|
|
@@ -883,9 +921,9 @@ function ConnectedContent({ onDisconnect }) {
|
|
|
883
921
|
const { phases } = usePhaseUpdates();
|
|
884
922
|
const { questions } = useQuestionUpdates();
|
|
885
923
|
if (!isConnected) {
|
|
886
|
-
return /* @__PURE__ */
|
|
924
|
+
return /* @__PURE__ */ jsx11("div", {
|
|
887
925
|
className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
|
|
888
|
-
children: /* @__PURE__ */
|
|
926
|
+
children: /* @__PURE__ */ jsx11("p", {
|
|
889
927
|
className: "skippr:text-sm skippr:text-muted-foreground",
|
|
890
928
|
children: "Connecting..."
|
|
891
929
|
})
|
|
@@ -894,22 +932,22 @@ function ConnectedContent({ onDisconnect }) {
|
|
|
894
932
|
const isAgentSpeaking = agentState === "speaking";
|
|
895
933
|
return /* @__PURE__ */ jsxs8(Fragment, {
|
|
896
934
|
children: [
|
|
897
|
-
/* @__PURE__ */
|
|
935
|
+
/* @__PURE__ */ jsx11(MeetingControls, {
|
|
898
936
|
onHangUp: onDisconnect
|
|
899
937
|
}),
|
|
900
938
|
/* @__PURE__ */ jsxs8("div", {
|
|
901
939
|
className: "skippr:flex skippr:min-h-0 skippr:flex-1",
|
|
902
940
|
children: [
|
|
903
|
-
/* @__PURE__ */
|
|
941
|
+
/* @__PURE__ */ jsx11("div", {
|
|
904
942
|
className: "skippr:w-[260px] skippr:shrink-0 skippr:overflow-y-auto skippr:border-r",
|
|
905
|
-
children: /* @__PURE__ */
|
|
943
|
+
children: /* @__PURE__ */ jsx11(SessionAgenda, {
|
|
906
944
|
phases,
|
|
907
945
|
questions
|
|
908
946
|
})
|
|
909
947
|
}),
|
|
910
|
-
/* @__PURE__ */
|
|
948
|
+
/* @__PURE__ */ jsx11("div", {
|
|
911
949
|
className: "skippr:flex skippr:min-w-0 skippr:flex-1 skippr:flex-col",
|
|
912
|
-
children: /* @__PURE__ */
|
|
950
|
+
children: /* @__PURE__ */ jsx11(MessageList, {
|
|
913
951
|
messages: allMessages,
|
|
914
952
|
isStreaming: isAgentSpeaking,
|
|
915
953
|
sendChatMessage,
|
|
@@ -923,27 +961,27 @@ function ConnectedContent({ onDisconnect }) {
|
|
|
923
961
|
}
|
|
924
962
|
|
|
925
963
|
// src/components/SidebarTrigger.tsx
|
|
926
|
-
import { jsx as
|
|
964
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
927
965
|
var TRIGGER_GAP = 16;
|
|
928
966
|
var TRIGGER_DEFAULT_RIGHT = 24;
|
|
929
967
|
function SidebarTrigger() {
|
|
930
968
|
const { isPanelOpen, togglePanel } = useLiveAgent();
|
|
931
|
-
return /* @__PURE__ */
|
|
969
|
+
return /* @__PURE__ */ jsx12(Button, {
|
|
932
970
|
size: "icon-lg",
|
|
933
971
|
onClick: togglePanel,
|
|
934
972
|
className: "skippr:fixed skippr:bottom-6 skippr:z-[9998] skippr:size-14 skippr:rounded-full skippr:shadow-lg skippr:transition-all skippr:duration-300",
|
|
935
973
|
style: { right: isPanelOpen ? SIDEBAR_WIDTH + TRIGGER_GAP : TRIGGER_DEFAULT_RIGHT },
|
|
936
974
|
title: isPanelOpen ? "Close chat" : "Chat with us",
|
|
937
|
-
children: isPanelOpen ? /* @__PURE__ */
|
|
975
|
+
children: isPanelOpen ? /* @__PURE__ */ jsx12(X, {
|
|
938
976
|
className: "skippr:size-6"
|
|
939
|
-
}) : /* @__PURE__ */
|
|
977
|
+
}) : /* @__PURE__ */ jsx12(MessageCircle, {
|
|
940
978
|
className: "skippr:size-6"
|
|
941
979
|
})
|
|
942
980
|
});
|
|
943
981
|
}
|
|
944
982
|
|
|
945
983
|
// src/components/LiveAgent.tsx
|
|
946
|
-
import { jsx as
|
|
984
|
+
import { jsx as jsx13, jsxs as jsxs9, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
947
985
|
function LiveAgent({
|
|
948
986
|
agentId,
|
|
949
987
|
authToken,
|
|
@@ -988,15 +1026,15 @@ function LiveAgent({
|
|
|
988
1026
|
]);
|
|
989
1027
|
const widgetContent = /* @__PURE__ */ jsxs9(Fragment2, {
|
|
990
1028
|
children: [
|
|
991
|
-
connection && /* @__PURE__ */
|
|
992
|
-
/* @__PURE__ */
|
|
993
|
-
/* @__PURE__ */
|
|
1029
|
+
connection && /* @__PURE__ */ jsx13(RoomAudioRenderer, {}),
|
|
1030
|
+
/* @__PURE__ */ jsx13(SidebarTrigger, {}),
|
|
1031
|
+
/* @__PURE__ */ jsx13(Sidebar, {}),
|
|
994
1032
|
children
|
|
995
1033
|
]
|
|
996
1034
|
});
|
|
997
|
-
return /* @__PURE__ */
|
|
1035
|
+
return /* @__PURE__ */ jsx13(LiveAgentContext.Provider, {
|
|
998
1036
|
value: ctx,
|
|
999
|
-
children: connection ? /* @__PURE__ */
|
|
1037
|
+
children: connection ? /* @__PURE__ */ jsx13(LiveKitRoom, {
|
|
1000
1038
|
serverUrl: connection.livekitUrl,
|
|
1001
1039
|
token: connection.token,
|
|
1002
1040
|
connect: shouldConnect,
|
package/dist/skippr-sdk.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@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-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-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-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-relaxed:1.625;--skippr-radius-2xl:1rem;--skippr-ease-in-out:cubic-bezier(.4,0,.2,1);--skippr-animate-spin:spin 1s linear infinite;--skippr-animate-bounce:bounce 1s infinite;--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\:fixed{position:fixed}.skippr\:top-0{top:calc(var(--skippr-spacing)*0)}.skippr\:right-0{right:calc(var(--skippr-spacing)*0)}.skippr\:bottom-6{bottom:calc(var(--skippr-spacing)*6)}.skippr\:z-\[9998\]{z-index:9998}.skippr\:z-\[9999\]{z-index:9999}.skippr\:mb-1{margin-bottom:calc(var(--skippr-spacing)*1)}.skippr\:ml-6{margin-left:calc(var(--skippr-spacing)*6)}.skippr\:flex{display:flex}.skippr\:inline-flex{display:inline-flex}.skippr\:size-1\.5{width:calc(var(--skippr-spacing)*1.5);height:calc(var(--skippr-spacing)*1.5)}.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-6{width:calc(var(--skippr-spacing)*6);height:calc(var(--skippr-spacing)*6)}.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-14{width:calc(var(--skippr-spacing)*14);height:calc(var(--skippr-spacing)*14)}.skippr\:h-6{height:calc(var(--skippr-spacing)*6)}.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-auto{height:auto}.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-\[260px\]{width:260px}.skippr\:w-full{width:100%}.skippr\:max-w-\[85\%\]{max-width:85%}.skippr\:min-w-0{min-width:calc(var(--skippr-spacing)*0)}.skippr\:flex-1{flex:1}.skippr\:shrink-0{flex-shrink:0}.skippr\:animate-bounce{animation:var(--skippr-animate-bounce)}.skippr\:animate-spin{animation:var(--skippr-animate-spin)}.skippr\:cursor-not-allowed{cursor:not-allowed}.skippr\:flex-col{flex-direction:column}.skippr\:items-center{align-items:center}.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-3{gap:calc(var(--skippr-spacing)*3)}.skippr\:gap-6{gap:calc(var(--skippr-spacing)*6)}.skippr\:overflow-hidden{overflow:hidden}.skippr\:overflow-y-auto{overflow-y:auto}.skippr\:rounded-2xl{border-radius:var(--skippr-radius-2xl)}.skippr\:rounded-full{border-radius:3.40282e38px}.skippr\:rounded-lg{border-radius:var(--radius)}.skippr\:rounded-md{border-radius:calc(var(--radius) - 2px)}.skippr\:rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.skippr\:rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) - 4px)}.skippr\:border{border-style:var(--tw-border-style);border-width:1px}.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-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.skippr\:border-border,.skippr\:border-input{border-color:oklch(88.22% 0 0)}.skippr\:bg-background{background-color:oklch(98.21% 0 0)}.skippr\:bg-destructive{background-color:oklch(62.71% .1936 33.339)}.skippr\:bg-muted{background-color:oklch(95.21% 0 0)}.skippr\:bg-muted-foreground\/60{background-color:oklab(50.32% 0 0/.6)}.skippr\:bg-primary{background-color:oklch(43.41% .0392 41.9938)}.skippr\:bg-primary-foreground\/20{background-color:oklab(100% 0 0/.2)}.skippr\:bg-secondary{background-color:oklch(92% .0651 74.3695)}.skippr\:p-4{padding:calc(var(--skippr-spacing)*4)}.skippr\:px-2{padding-inline:calc(var(--skippr-spacing)*2)}.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\:py-1{padding-block:calc(var(--skippr-spacing)*1)}.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\: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\:leading-none{--tw-leading:1;line-height:1}.skippr\:leading-relaxed{--tw-leading:var(--skippr-leading-relaxed);line-height:var(--skippr-leading-relaxed)}.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-normal{white-space:normal}.skippr\:whitespace-nowrap{white-space:nowrap}.skippr\:whitespace-pre-wrap{white-space:pre-wrap}.skippr\:text-destructive{color:oklch(62.71% .1936 33.339)}.skippr\:text-foreground{color:oklch(24.35% 0 0)}.skippr\:text-muted-foreground{color:oklch(50.32% 0 0)}.skippr\:text-primary{color:oklch(43.41% .0392 41.9938)}.skippr\:text-primary-foreground{color:oklch(100% 0 0)}.skippr\:text-secondary-foreground{color:oklch(34.99% .0685 40.8288)}.skippr\:text-white{color:var(--skippr-color-white)}.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\:opacity-50{opacity:.5}.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-offset-background{--tw-ring-offset-color:oklch(98.21% 0 0)}.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-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\: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\:outline-none{--tw-outline-style:none;outline-style:none}.skippr\:\[animation-delay\:0ms\]{animation-delay:0s}.skippr\:\[animation-delay\:150ms\]{animation-delay:.15s}.skippr\:\[animation-delay\:300ms\]{animation-delay:.3s}.skippr\:placeholder\:text-muted-foreground::placeholder{color:oklch(50.32% 0 0)}@media (hover:hover){.skippr\:hover\:bg-accent:hover{background-color:oklch(93.1% 0 0)}.skippr\:hover\:bg-destructive\/90:hover{background-color:oklab(62.71% .16174 .106401/.9)}.skippr\:hover\:bg-primary-foreground\/20:hover{background-color:oklab(100% 0 0/.2)}.skippr\:hover\:bg-primary\/90:hover{background-color:oklab(43.41% .0291341 .0262268/.9)}.skippr\:hover\:bg-secondary\/80:hover{background-color:oklab(92% .0175401 .0626926/.8)}.skippr\:hover\:text-accent-foreground:hover{color:oklch(24.35% 0 0)}.skippr\:hover\:text-primary-foreground:hover{color:oklch(100% 0 0)}}.skippr\:focus\:ring-1:focus{--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\:focus\:ring-ring:focus{--tw-ring-color:oklch(43.41% .0392 41.9938)}.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-ring:focus-visible{--tw-ring-color:oklch(43.41% .0392 41.9938)}.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\:disabled\:pointer-events-none:disabled{pointer-events:none}.skippr\:disabled\:opacity-50:disabled{opacity:.5}.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)}}@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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@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}}
|
|
2
|
+
@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-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-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-600:oklch(57.7% .245 27.325);--skippr-color-red-700:oklch(50.5% .213 27.518);--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-relaxed:1.625;--skippr-radius-2xl:1rem;--skippr-ease-in-out:cubic-bezier(.4,0,.2,1);--skippr-animate-spin:spin 1s linear infinite;--skippr-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--skippr-animate-bounce:bounce 1s infinite;--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\:fixed{position:fixed}.skippr\:top-0{top:calc(var(--skippr-spacing)*0)}.skippr\:right-0{right:calc(var(--skippr-spacing)*0)}.skippr\:bottom-6{bottom:calc(var(--skippr-spacing)*6)}.skippr\:z-\[9998\]{z-index:9998}.skippr\:z-\[9999\]{z-index:9999}.skippr\:mb-1{margin-bottom:calc(var(--skippr-spacing)*1)}.skippr\:ml-6{margin-left:calc(var(--skippr-spacing)*6)}.skippr\:flex{display:flex}.skippr\:inline-flex{display:inline-flex}.skippr\:size-1\.5{width:calc(var(--skippr-spacing)*1.5);height:calc(var(--skippr-spacing)*1.5)}.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-6{width:calc(var(--skippr-spacing)*6);height:calc(var(--skippr-spacing)*6)}.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-14{width:calc(var(--skippr-spacing)*14);height:calc(var(--skippr-spacing)*14)}.skippr\:h-6{height:calc(var(--skippr-spacing)*6)}.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-auto{height:auto}.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-\[260px\]{width:260px}.skippr\:w-full{width:100%}.skippr\:max-w-\[85\%\]{max-width:85%}.skippr\:min-w-0{min-width:calc(var(--skippr-spacing)*0)}.skippr\:flex-1{flex:1}.skippr\:shrink-0{flex-shrink:0}.skippr\:animate-bounce{animation:var(--skippr-animate-bounce)}.skippr\:animate-pulse{animation:var(--skippr-animate-pulse)}.skippr\:animate-spin{animation:var(--skippr-animate-spin)}.skippr\:cursor-not-allowed{cursor:not-allowed}.skippr\:flex-col{flex-direction:column}.skippr\:items-center{align-items:center}.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-3{gap:calc(var(--skippr-spacing)*3)}.skippr\:gap-6{gap:calc(var(--skippr-spacing)*6)}.skippr\:overflow-hidden{overflow:hidden}.skippr\:overflow-y-auto{overflow-y:auto}.skippr\:rounded-2xl{border-radius:var(--skippr-radius-2xl)}.skippr\:rounded-full{border-radius:3.40282e38px}.skippr\:rounded-lg{border-radius:var(--radius)}.skippr\:rounded-md{border-radius:calc(var(--radius) - 2px)}.skippr\:rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.skippr\:rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) - 4px)}.skippr\:border{border-style:var(--tw-border-style);border-width:1px}.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-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.skippr\:border-border,.skippr\:border-input{border-color:oklch(88.22% 0 0)}.skippr\:bg-background{background-color:oklch(98.21% 0 0)}.skippr\:bg-destructive{background-color:oklch(62.71% .1936 33.339)}.skippr\:bg-muted{background-color:oklch(95.21% 0 0)}.skippr\:bg-muted-foreground\/60{background-color:oklab(50.32% 0 0/.6)}.skippr\:bg-primary{background-color:oklch(43.41% .0392 41.9938)}.skippr\:bg-primary-foreground\/20{background-color:oklab(100% 0 0/.2)}.skippr\:bg-red-50{background-color:var(--skippr-color-red-50)}.skippr\:bg-secondary{background-color:oklch(92% .0651 74.3695)}.skippr\:p-4{padding:calc(var(--skippr-spacing)*4)}.skippr\:px-2{padding-inline:calc(var(--skippr-spacing)*2)}.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\: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\:text-center{text-align:center}.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\:leading-none{--tw-leading:1;line-height:1}.skippr\:leading-relaxed{--tw-leading:var(--skippr-leading-relaxed);line-height:var(--skippr-leading-relaxed)}.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-normal{white-space:normal}.skippr\:whitespace-nowrap{white-space:nowrap}.skippr\:whitespace-pre-wrap{white-space:pre-wrap}.skippr\:text-destructive{color:oklch(62.71% .1936 33.339)}.skippr\:text-foreground{color:oklch(24.35% 0 0)}.skippr\:text-muted-foreground{color:oklch(50.32% 0 0)}.skippr\:text-primary{color:oklch(43.41% .0392 41.9938)}.skippr\:text-primary-foreground{color:oklch(100% 0 0)}.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:oklch(34.99% .0685 40.8288)}.skippr\:text-white{color:var(--skippr-color-white)}.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\:opacity-50{opacity:.5}.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-offset-background{--tw-ring-offset-color:oklch(98.21% 0 0)}.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-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\: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\:outline-none{--tw-outline-style:none;outline-style:none}.skippr\:\[animation-delay\:0ms\]{animation-delay:0s}.skippr\:\[animation-delay\:150ms\]{animation-delay:.15s}.skippr\:\[animation-delay\:300ms\]{animation-delay:.3s}.skippr\:placeholder\:text-muted-foreground::placeholder{color:oklch(50.32% 0 0)}@media (hover:hover){.skippr\:hover\:bg-accent:hover{background-color:oklch(93.1% 0 0)}.skippr\:hover\:bg-destructive\/90:hover{background-color:oklab(62.71% .16174 .106401/.9)}.skippr\:hover\:bg-primary-foreground\/20:hover{background-color:oklab(100% 0 0/.2)}.skippr\:hover\:bg-primary\/90:hover{background-color:oklab(43.41% .0291341 .0262268/.9)}.skippr\:hover\:bg-secondary\/80:hover{background-color:oklab(92% .0175401 .0626926/.8)}.skippr\:hover\:text-accent-foreground:hover{color:oklch(24.35% 0 0)}.skippr\:hover\:text-primary-foreground:hover{color:oklch(100% 0 0)}}.skippr\:focus\:ring-1:focus{--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\:focus\:ring-ring:focus{--tw-ring-color:oklch(43.41% .0392 41.9938)}.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-ring:focus-visible{--tw-ring-color:oklch(43.41% .0392 41.9938)}.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\:disabled\:pointer-events-none:disabled{pointer-events:none}.skippr\:disabled\:opacity-50:disabled{opacity:.5}.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)}}@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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@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}}
|