@skippr/live-agent-sdk 0.12.0 → 0.13.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.
@@ -517,7 +517,7 @@ function ChatHeader({ onClose }) {
517
517
  // src/components/MeetingControls.tsx
518
518
  import { useLocalParticipant as useLocalParticipant3 } from "@livekit/components-react";
519
519
  import { ScreenSharePresets } from "livekit-client";
520
- import { useCallback as useCallback4, useEffect as useEffect2, useState as useState3 } from "react";
520
+ import { useCallback as useCallback4, useEffect as useEffect2, useRef, useState as useState3 } from "react";
521
521
 
522
522
  // src/lib/format.ts
523
523
  function formatTime(seconds) {
@@ -525,18 +525,45 @@ function formatTime(seconds) {
525
525
  const s = (seconds % 60).toString().padStart(2, "0");
526
526
  return `${m}:${s}`;
527
527
  }
528
+ function parseNumber(s) {
529
+ const n = Number(s);
530
+ return n > 0 ? n : null;
531
+ }
532
+
533
+ // src/components/SessionWarningBanner.tsx
534
+ import { jsx as jsx3 } from "react/jsx-runtime";
535
+ var SESSION_WARNING_THRESHOLD_SECS = 60;
536
+ function SessionWarningBanner({ remaining }) {
537
+ if (remaining === null || remaining <= 0 || remaining > SESSION_WARNING_THRESHOLD_SECS)
538
+ return null;
539
+ return /* @__PURE__ */ jsx3("div", {
540
+ "data-testid": "session-warning-banner",
541
+ 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",
542
+ children: "Session ending soon"
543
+ });
544
+ }
528
545
 
529
546
  // src/components/MeetingControls.tsx
530
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
547
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
531
548
  function MeetingControls({ onHangUp }) {
549
+ const maxCallDuration = useAgentState("maxCallDuration", parseNumber, null);
532
550
  const { localParticipant } = useLocalParticipant3();
533
551
  const isMuted = !localParticipant.isMicrophoneEnabled;
534
552
  const isScreenSharing = localParticipant.isScreenShareEnabled;
535
- const [elapsed, setElapsed] = useState3(0);
553
+ const endTimeRef = useRef(null);
554
+ const [remaining, setRemaining] = useState3(null);
536
555
  useEffect2(() => {
537
- const id = setInterval(() => setElapsed((t) => t + 1), 1000);
556
+ if (maxCallDuration === null || endTimeRef.current !== null)
557
+ return;
558
+ endTimeRef.current = Date.now() + maxCallDuration * 1000;
559
+ const tick = () => {
560
+ const secs = Math.ceil((endTimeRef.current - Date.now()) / 1000);
561
+ setRemaining(Math.max(secs, 0));
562
+ };
563
+ tick();
564
+ const id = setInterval(tick, 1000);
538
565
  return () => clearInterval(id);
539
- }, []);
566
+ }, [maxCallDuration]);
540
567
  const toggleMute = useCallback4(async () => {
541
568
  try {
542
569
  await localParticipant.setMicrophoneEnabled(isMuted);
@@ -559,58 +586,65 @@ function MeetingControls({ onHangUp }) {
559
586
  toggleMute().then(() => toggleScreenShare());
560
587
  }, []);
561
588
  return /* @__PURE__ */ jsxs2("div", {
562
- className: "skippr:flex skippr:items-center skippr:justify-between skippr:border-b skippr:px-4 skippr:py-3",
563
589
  children: [
590
+ /* @__PURE__ */ jsx4(SessionWarningBanner, {
591
+ remaining
592
+ }),
564
593
  /* @__PURE__ */ jsxs2("div", {
565
- className: "skippr:flex skippr:items-center skippr:gap-2",
594
+ className: "skippr:flex skippr:items-center skippr:justify-between skippr:border-b skippr:px-4 skippr:py-3",
566
595
  children: [
567
- /* @__PURE__ */ jsx3(Button, {
568
- size: "icon-sm",
569
- variant: isMuted ? "destructive" : "outline",
570
- onClick: toggleMute,
571
- "aria-label": isMuted ? "Unmute" : "Mute",
572
- children: isMuted ? /* @__PURE__ */ jsx3(MicOff, {
573
- className: "skippr:size-4"
574
- }) : /* @__PURE__ */ jsx3(Mic, {
575
- className: "skippr:size-4"
576
- })
596
+ /* @__PURE__ */ jsxs2("div", {
597
+ className: "skippr:flex skippr:items-center skippr:gap-2",
598
+ children: [
599
+ /* @__PURE__ */ jsx4(Button, {
600
+ size: "icon-sm",
601
+ variant: isMuted ? "destructive" : "outline",
602
+ onClick: toggleMute,
603
+ "aria-label": isMuted ? "Unmute" : "Mute",
604
+ children: isMuted ? /* @__PURE__ */ jsx4(MicOff, {
605
+ className: "skippr:size-4"
606
+ }) : /* @__PURE__ */ jsx4(Mic, {
607
+ className: "skippr:size-4"
608
+ })
609
+ }),
610
+ /* @__PURE__ */ jsx4(Button, {
611
+ size: "icon-sm",
612
+ variant: isScreenSharing ? "default" : "outline",
613
+ onClick: toggleScreenShare,
614
+ "aria-label": isScreenSharing ? "Stop sharing" : "Share screen",
615
+ children: isScreenSharing ? /* @__PURE__ */ jsx4(MonitorOff, {
616
+ className: "skippr:size-4"
617
+ }) : /* @__PURE__ */ jsx4(Monitor, {
618
+ className: "skippr:size-4"
619
+ })
620
+ })
621
+ ]
622
+ }),
623
+ remaining !== null && /* @__PURE__ */ jsx4("span", {
624
+ 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"),
625
+ children: formatTime(remaining)
577
626
  }),
578
- /* @__PURE__ */ jsx3(Button, {
627
+ /* @__PURE__ */ jsx4(Button, {
579
628
  size: "icon-sm",
580
- variant: isScreenSharing ? "default" : "outline",
581
- onClick: toggleScreenShare,
582
- "aria-label": isScreenSharing ? "Stop sharing" : "Share screen",
583
- children: isScreenSharing ? /* @__PURE__ */ jsx3(MonitorOff, {
584
- className: "skippr:size-4"
585
- }) : /* @__PURE__ */ jsx3(Monitor, {
629
+ variant: "destructive",
630
+ onClick: onHangUp,
631
+ "aria-label": "Hang up",
632
+ children: /* @__PURE__ */ jsx4(PhoneOff, {
586
633
  className: "skippr:size-4"
587
634
  })
588
635
  })
589
636
  ]
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
637
  })
604
638
  ]
605
639
  });
606
640
  }
607
641
 
608
642
  // src/components/MessageList.tsx
609
- import { useEffect as useEffect3, useRef } from "react";
643
+ import { useEffect as useEffect3, useRef as useRef2 } from "react";
610
644
 
611
645
  // src/components/ChatInput.tsx
612
646
  import { useState as useState4 } from "react";
613
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
647
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
614
648
  function ChatInput({ sendChatMessage, isSendingChat }) {
615
649
  const [inputText, setInputText] = useState4("");
616
650
  const canSend = inputText.trim().length > 0 && !isSendingChat;
@@ -626,7 +660,7 @@ function ChatInput({ sendChatMessage, isSendingChat }) {
626
660
  onSubmit: handleSubmit,
627
661
  className: "skippr:flex skippr:items-center skippr:gap-2 skippr:border-t skippr:border-border skippr:px-3 skippr:py-2",
628
662
  children: [
629
- /* @__PURE__ */ jsx4("input", {
663
+ /* @__PURE__ */ jsx5("input", {
630
664
  type: "text",
631
665
  value: inputText,
632
666
  onChange: (e) => setInputText(e.target.value),
@@ -634,12 +668,12 @@ function ChatInput({ sendChatMessage, isSendingChat }) {
634
668
  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
669
  disabled: isSendingChat
636
670
  }),
637
- /* @__PURE__ */ jsx4("button", {
671
+ /* @__PURE__ */ jsx5("button", {
638
672
  type: "submit",
639
673
  disabled: !canSend,
640
674
  "aria-label": "Send message",
641
675
  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__ */ jsx4(SendHorizontal, {
676
+ children: /* @__PURE__ */ jsx5(SendHorizontal, {
643
677
  className: "skippr:size-4"
644
678
  })
645
679
  })
@@ -648,12 +682,12 @@ function ChatInput({ sendChatMessage, isSendingChat }) {
648
682
  }
649
683
 
650
684
  // src/components/ChatMessage.tsx
651
- import { jsx as jsx5 } from "react/jsx-runtime";
685
+ import { jsx as jsx6 } from "react/jsx-runtime";
652
686
  function ChatMessage({ message }) {
653
687
  const isUser = message.role === "user";
654
- return /* @__PURE__ */ jsx5("div", {
688
+ return /* @__PURE__ */ jsx6("div", {
655
689
  className: cn("skippr:flex skippr:w-full skippr:px-4 skippr:py-1", isUser ? "skippr:justify-end" : "skippr:justify-start"),
656
- children: /* @__PURE__ */ jsx5("div", {
690
+ children: /* @__PURE__ */ jsx6("div", {
657
691
  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
692
  children: message.content
659
693
  })
@@ -661,20 +695,20 @@ function ChatMessage({ message }) {
661
695
  }
662
696
 
663
697
  // src/components/TypingIndicator.tsx
664
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
698
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
665
699
  function TypingIndicator() {
666
- return /* @__PURE__ */ jsx6("div", {
700
+ return /* @__PURE__ */ jsx7("div", {
667
701
  className: "skippr:flex skippr:items-center skippr:gap-1 skippr:px-4 skippr:py-3",
668
702
  children: /* @__PURE__ */ jsxs4("div", {
669
703
  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
704
  children: [
671
- /* @__PURE__ */ jsx6("span", {
705
+ /* @__PURE__ */ jsx7("span", {
672
706
  className: "skippr:size-1.5 skippr:animate-bounce skippr:rounded-full skippr:bg-muted-foreground/60 skippr:[animation-delay:0ms]"
673
707
  }),
674
- /* @__PURE__ */ jsx6("span", {
708
+ /* @__PURE__ */ jsx7("span", {
675
709
  className: "skippr:size-1.5 skippr:animate-bounce skippr:rounded-full skippr:bg-muted-foreground/60 skippr:[animation-delay:150ms]"
676
710
  }),
677
- /* @__PURE__ */ jsx6("span", {
711
+ /* @__PURE__ */ jsx7("span", {
678
712
  className: "skippr:size-1.5 skippr:animate-bounce skippr:rounded-full skippr:bg-muted-foreground/60 skippr:[animation-delay:300ms]"
679
713
  })
680
714
  ]
@@ -683,14 +717,14 @@ function TypingIndicator() {
683
717
  }
684
718
 
685
719
  // src/components/MessageList.tsx
686
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
720
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
687
721
  function MessageList({
688
722
  messages,
689
723
  isStreaming,
690
724
  sendChatMessage,
691
725
  isSendingChat
692
726
  }) {
693
- const scrollRef = useRef(null);
727
+ const scrollRef = useRef2(null);
694
728
  const lastMessage = messages.length > 0 ? messages[messages.length - 1] : undefined;
695
729
  useEffect3(() => {
696
730
  scrollRef.current?.scrollIntoView({ behavior: "smooth" });
@@ -699,22 +733,22 @@ function MessageList({
699
733
  return /* @__PURE__ */ jsxs5("div", {
700
734
  className: "skippr:flex skippr:min-h-0 skippr:flex-1 skippr:flex-col",
701
735
  children: [
702
- /* @__PURE__ */ jsx7("div", {
736
+ /* @__PURE__ */ jsx8("div", {
703
737
  className: "skippr:min-h-0 skippr:flex-1 skippr:overflow-y-auto",
704
738
  children: /* @__PURE__ */ jsxs5("div", {
705
739
  className: "skippr:flex skippr:flex-col skippr:gap-1 skippr:py-3",
706
740
  children: [
707
- messages.map((message) => /* @__PURE__ */ jsx7(ChatMessage, {
741
+ messages.map((message) => /* @__PURE__ */ jsx8(ChatMessage, {
708
742
  message
709
743
  }, message.id)),
710
- showTyping && /* @__PURE__ */ jsx7(TypingIndicator, {}),
711
- /* @__PURE__ */ jsx7("div", {
744
+ showTyping && /* @__PURE__ */ jsx8(TypingIndicator, {}),
745
+ /* @__PURE__ */ jsx8("div", {
712
746
  ref: scrollRef
713
747
  })
714
748
  ]
715
749
  })
716
750
  }),
717
- /* @__PURE__ */ jsx7(ChatInput, {
751
+ /* @__PURE__ */ jsx8(ChatInput, {
718
752
  sendChatMessage,
719
753
  isSendingChat
720
754
  })
@@ -723,12 +757,12 @@ function MessageList({
723
757
  }
724
758
 
725
759
  // src/components/QuickActions.tsx
726
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
760
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
727
761
  function QuickActions({ onStartSession, isStarting, error }) {
728
762
  return /* @__PURE__ */ jsxs6("div", {
729
763
  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
764
  children: [
731
- /* @__PURE__ */ jsx8("p", {
765
+ /* @__PURE__ */ jsx9("p", {
732
766
  className: "skippr:mb-1 skippr:text-sm skippr:text-muted-foreground",
733
767
  children: "How can I help you today?"
734
768
  }),
@@ -738,15 +772,15 @@ function QuickActions({ onStartSession, isStarting, error }) {
738
772
  onClick: onStartSession,
739
773
  disabled: isStarting,
740
774
  children: [
741
- isStarting ? /* @__PURE__ */ jsx8(LoaderCircle, {
775
+ isStarting ? /* @__PURE__ */ jsx9(LoaderCircle, {
742
776
  className: "skippr:size-4 skippr:animate-spin skippr:text-primary"
743
- }) : /* @__PURE__ */ jsx8(MessageCircleQuestionMark, {
777
+ }) : /* @__PURE__ */ jsx9(MessageCircleQuestionMark, {
744
778
  className: "skippr:size-4 skippr:text-primary"
745
779
  }),
746
780
  isStarting ? "Starting..." : "Start Session"
747
781
  ]
748
782
  }),
749
- error && /* @__PURE__ */ jsx8("p", {
783
+ error && /* @__PURE__ */ jsx9("p", {
750
784
  className: "skippr:text-xs skippr:text-destructive",
751
785
  children: error
752
786
  })
@@ -755,17 +789,17 @@ function QuickActions({ onStartSession, isStarting, error }) {
755
789
  }
756
790
 
757
791
  // src/components/SessionAgenda.tsx
758
- import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
792
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
759
793
  function SessionAgenda({ phases, questions = [] }) {
760
794
  if (phases.length === 0) {
761
795
  return /* @__PURE__ */ jsxs7("div", {
762
796
  className: "skippr:flex skippr:flex-col skippr:gap-3 skippr:p-4",
763
797
  children: [
764
- /* @__PURE__ */ jsx9("h3", {
798
+ /* @__PURE__ */ jsx10("h3", {
765
799
  className: "skippr:text-sm skippr:font-semibold",
766
800
  children: "Agenda"
767
801
  }),
768
- /* @__PURE__ */ jsx9("p", {
802
+ /* @__PURE__ */ jsx10("p", {
769
803
  className: "skippr:text-xs skippr:text-muted-foreground",
770
804
  children: "Waiting for session..."
771
805
  })
@@ -775,11 +809,11 @@ function SessionAgenda({ phases, questions = [] }) {
775
809
  return /* @__PURE__ */ jsxs7("div", {
776
810
  className: "skippr:flex skippr:flex-col skippr:gap-3 skippr:p-4",
777
811
  children: [
778
- /* @__PURE__ */ jsx9("h3", {
812
+ /* @__PURE__ */ jsx10("h3", {
779
813
  className: "skippr:text-sm skippr:font-semibold",
780
814
  children: "Agenda"
781
815
  }),
782
- /* @__PURE__ */ jsx9("ul", {
816
+ /* @__PURE__ */ jsx10("ul", {
783
817
  className: "skippr:flex skippr:flex-col skippr:gap-2",
784
818
  children: phases.map((phase) => {
785
819
  const phaseQuestions = questions.filter((q) => q.phaseName === phase.name);
@@ -791,10 +825,10 @@ function SessionAgenda({ phases, questions = [] }) {
791
825
  /* @__PURE__ */ jsxs7("div", {
792
826
  className: "skippr:flex skippr:items-center skippr:gap-2 skippr:text-sm",
793
827
  children: [
794
- /* @__PURE__ */ jsx9(PhaseIcon, {
828
+ /* @__PURE__ */ jsx10(PhaseIcon, {
795
829
  status: phase.status
796
830
  }),
797
- /* @__PURE__ */ jsx9("span", {
831
+ /* @__PURE__ */ jsx10("span", {
798
832
  className: cn(phase.status === "completed" && "skippr:text-muted-foreground skippr:line-through", phase.status === "active" && "skippr:font-medium skippr:text-primary"),
799
833
  children: phase.name
800
834
  })
@@ -818,26 +852,26 @@ function SessionAgenda({ phases, questions = [] }) {
818
852
  }
819
853
  function PhaseIcon({ status }) {
820
854
  if (status === "completed") {
821
- return /* @__PURE__ */ jsx9("div", {
855
+ return /* @__PURE__ */ jsx10("div", {
822
856
  className: "skippr:flex skippr:size-4 skippr:shrink-0 skippr:items-center skippr:justify-center skippr:rounded-full skippr:bg-primary",
823
- children: /* @__PURE__ */ jsx9(Check, {
857
+ children: /* @__PURE__ */ jsx10(Check, {
824
858
  className: "skippr:size-2.5 skippr:text-primary-foreground",
825
859
  strokeWidth: 3
826
860
  })
827
861
  });
828
862
  }
829
863
  if (status === "active") {
830
- return /* @__PURE__ */ jsx9(LoaderCircle, {
864
+ return /* @__PURE__ */ jsx10(LoaderCircle, {
831
865
  className: "skippr:size-4 skippr:shrink-0 skippr:text-primary skippr:animate-spin"
832
866
  });
833
867
  }
834
- return /* @__PURE__ */ jsx9(Circle, {
868
+ return /* @__PURE__ */ jsx10(Circle, {
835
869
  className: "skippr:size-4 skippr:shrink-0 skippr:text-muted-foreground"
836
870
  });
837
871
  }
838
872
 
839
873
  // src/components/Sidebar.tsx
840
- import { jsx as jsx10, jsxs as jsxs8, Fragment } from "react/jsx-runtime";
874
+ import { jsx as jsx11, jsxs as jsxs8, Fragment } from "react/jsx-runtime";
841
875
  function Sidebar() {
842
876
  const { isConnected, isStarting, error, startSession, disconnect, isPanelOpen, closePanel } = useLiveAgent();
843
877
  useEffect4(() => {
@@ -850,24 +884,24 @@ function Sidebar() {
850
884
  document.body.style.transition = "";
851
885
  };
852
886
  }, []);
853
- return /* @__PURE__ */ jsx10("div", {
887
+ return /* @__PURE__ */ jsx11("div", {
854
888
  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
889
  style: { width: isPanelOpen ? SIDEBAR_WIDTH : undefined },
856
890
  children: isConnected ? /* @__PURE__ */ jsxs8(Fragment, {
857
891
  children: [
858
- /* @__PURE__ */ jsx10(ChatHeader, {
892
+ /* @__PURE__ */ jsx11(ChatHeader, {
859
893
  onClose: closePanel
860
894
  }),
861
- /* @__PURE__ */ jsx10(ConnectedContent, {
895
+ /* @__PURE__ */ jsx11(ConnectedContent, {
862
896
  onDisconnect: disconnect
863
897
  })
864
898
  ]
865
899
  }) : /* @__PURE__ */ jsxs8(Fragment, {
866
900
  children: [
867
- /* @__PURE__ */ jsx10(ChatHeader, {
901
+ /* @__PURE__ */ jsx11(ChatHeader, {
868
902
  onClose: closePanel
869
903
  }),
870
- /* @__PURE__ */ jsx10(QuickActions, {
904
+ /* @__PURE__ */ jsx11(QuickActions, {
871
905
  onStartSession: startSession,
872
906
  isStarting,
873
907
  error
@@ -883,9 +917,9 @@ function ConnectedContent({ onDisconnect }) {
883
917
  const { phases } = usePhaseUpdates();
884
918
  const { questions } = useQuestionUpdates();
885
919
  if (!isConnected) {
886
- return /* @__PURE__ */ jsx10("div", {
920
+ return /* @__PURE__ */ jsx11("div", {
887
921
  className: "skippr:flex skippr:flex-1 skippr:items-center skippr:justify-center",
888
- children: /* @__PURE__ */ jsx10("p", {
922
+ children: /* @__PURE__ */ jsx11("p", {
889
923
  className: "skippr:text-sm skippr:text-muted-foreground",
890
924
  children: "Connecting..."
891
925
  })
@@ -894,22 +928,22 @@ function ConnectedContent({ onDisconnect }) {
894
928
  const isAgentSpeaking = agentState === "speaking";
895
929
  return /* @__PURE__ */ jsxs8(Fragment, {
896
930
  children: [
897
- /* @__PURE__ */ jsx10(MeetingControls, {
931
+ /* @__PURE__ */ jsx11(MeetingControls, {
898
932
  onHangUp: onDisconnect
899
933
  }),
900
934
  /* @__PURE__ */ jsxs8("div", {
901
935
  className: "skippr:flex skippr:min-h-0 skippr:flex-1",
902
936
  children: [
903
- /* @__PURE__ */ jsx10("div", {
937
+ /* @__PURE__ */ jsx11("div", {
904
938
  className: "skippr:w-[260px] skippr:shrink-0 skippr:overflow-y-auto skippr:border-r",
905
- children: /* @__PURE__ */ jsx10(SessionAgenda, {
939
+ children: /* @__PURE__ */ jsx11(SessionAgenda, {
906
940
  phases,
907
941
  questions
908
942
  })
909
943
  }),
910
- /* @__PURE__ */ jsx10("div", {
944
+ /* @__PURE__ */ jsx11("div", {
911
945
  className: "skippr:flex skippr:min-w-0 skippr:flex-1 skippr:flex-col",
912
- children: /* @__PURE__ */ jsx10(MessageList, {
946
+ children: /* @__PURE__ */ jsx11(MessageList, {
913
947
  messages: allMessages,
914
948
  isStreaming: isAgentSpeaking,
915
949
  sendChatMessage,
@@ -923,27 +957,27 @@ function ConnectedContent({ onDisconnect }) {
923
957
  }
924
958
 
925
959
  // src/components/SidebarTrigger.tsx
926
- import { jsx as jsx11 } from "react/jsx-runtime";
960
+ import { jsx as jsx12 } from "react/jsx-runtime";
927
961
  var TRIGGER_GAP = 16;
928
962
  var TRIGGER_DEFAULT_RIGHT = 24;
929
963
  function SidebarTrigger() {
930
964
  const { isPanelOpen, togglePanel } = useLiveAgent();
931
- return /* @__PURE__ */ jsx11(Button, {
965
+ return /* @__PURE__ */ jsx12(Button, {
932
966
  size: "icon-lg",
933
967
  onClick: togglePanel,
934
968
  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
969
  style: { right: isPanelOpen ? SIDEBAR_WIDTH + TRIGGER_GAP : TRIGGER_DEFAULT_RIGHT },
936
970
  title: isPanelOpen ? "Close chat" : "Chat with us",
937
- children: isPanelOpen ? /* @__PURE__ */ jsx11(X, {
971
+ children: isPanelOpen ? /* @__PURE__ */ jsx12(X, {
938
972
  className: "skippr:size-6"
939
- }) : /* @__PURE__ */ jsx11(MessageCircle, {
973
+ }) : /* @__PURE__ */ jsx12(MessageCircle, {
940
974
  className: "skippr:size-6"
941
975
  })
942
976
  });
943
977
  }
944
978
 
945
979
  // src/components/LiveAgent.tsx
946
- import { jsx as jsx12, jsxs as jsxs9, Fragment as Fragment2 } from "react/jsx-runtime";
980
+ import { jsx as jsx13, jsxs as jsxs9, Fragment as Fragment2 } from "react/jsx-runtime";
947
981
  function LiveAgent({
948
982
  agentId,
949
983
  authToken,
@@ -988,15 +1022,15 @@ function LiveAgent({
988
1022
  ]);
989
1023
  const widgetContent = /* @__PURE__ */ jsxs9(Fragment2, {
990
1024
  children: [
991
- connection && /* @__PURE__ */ jsx12(RoomAudioRenderer, {}),
992
- /* @__PURE__ */ jsx12(SidebarTrigger, {}),
993
- /* @__PURE__ */ jsx12(Sidebar, {}),
1025
+ connection && /* @__PURE__ */ jsx13(RoomAudioRenderer, {}),
1026
+ /* @__PURE__ */ jsx13(SidebarTrigger, {}),
1027
+ /* @__PURE__ */ jsx13(Sidebar, {}),
994
1028
  children
995
1029
  ]
996
1030
  });
997
- return /* @__PURE__ */ jsx12(LiveAgentContext.Provider, {
1031
+ return /* @__PURE__ */ jsx13(LiveAgentContext.Provider, {
998
1032
  value: ctx,
999
- children: connection ? /* @__PURE__ */ jsx12(LiveKitRoom, {
1033
+ children: connection ? /* @__PURE__ */ jsx13(LiveKitRoom, {
1000
1034
  serverUrl: connection.livekitUrl,
1001
1035
  token: connection.token,
1002
1036
  connect: shouldConnect,
@@ -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}}