@snapcall/stream-ui 1.18.1 → 1.19.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.
@@ -4,17 +4,17 @@ import $3Sbms$hotjarbrowser from "@hotjar/browser";
4
4
  import $3Sbms$reacthottoast, {toast as $3Sbms$toast, Toaster as $3Sbms$Toaster1, ToastBar as $3Sbms$ToastBar} from "react-hot-toast";
5
5
  import $3Sbms$styledcomponents, {keyframes as $3Sbms$keyframes, ThemeProvider as $3Sbms$ThemeProvider, ThemeContext as $3Sbms$ThemeContext, css as $3Sbms$css, createGlobalStyle as $3Sbms$createGlobalStyle} from "styled-components";
6
6
  import {useState as $3Sbms$useState, useRef as $3Sbms$useRef, useCallback as $3Sbms$useCallback, useEffect as $3Sbms$useEffect, useContext as $3Sbms$useContext, useMemo as $3Sbms$useMemo, createContext as $3Sbms$createContext, useReducer as $3Sbms$useReducer, useLayoutEffect as $3Sbms$useLayoutEffect, cloneElement as $3Sbms$cloneElement, forwardRef as $3Sbms$forwardRef} from "react";
7
- import {Toaster as $3Sbms$Toaster, UserPlus1Icon as $3Sbms$UserPlus1Icon, useToast as $3Sbms$useToast, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, Dialog as $3Sbms$Dialog, DialogContent as $3Sbms$DialogContent, DialogHeader as $3Sbms$DialogHeader, DialogTitle as $3Sbms$DialogTitle, Tabs as $3Sbms$Tabs, TabsList as $3Sbms$TabsList, TabsTrigger as $3Sbms$TabsTrigger, TabsContent as $3Sbms$TabsContent, Button as $3Sbms$Button, CopyIcon as $3Sbms$CopyIcon, Form as $3Sbms$Form, FormField as $3Sbms$FormField, FormItem as $3Sbms$FormItem, FormLabel as $3Sbms$FormLabel, FormControl as $3Sbms$FormControl, CreatableSelect as $3Sbms$CreatableSelect, FormMessage as $3Sbms$FormMessage, Textarea as $3Sbms$Textarea, Send3Icon as $3Sbms$Send3Icon, Select as $3Sbms$Select, SelectTrigger as $3Sbms$SelectTrigger, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, SelectValue as $3Sbms$SelectValue, SelectContent as $3Sbms$SelectContent, SelectGroup as $3Sbms$SelectGroup, SelectItem as $3Sbms$SelectItem, MicrophoneOffIcon as $3Sbms$MicrophoneOffIcon, CheckCircleIcon as $3Sbms$CheckCircleIcon, RotateCcwIcon as $3Sbms$RotateCcwIcon, AlertDialog as $3Sbms$AlertDialog, AlertDialogContent as $3Sbms$AlertDialogContent, AlertDialogHeader as $3Sbms$AlertDialogHeader, AlertDialogTitle as $3Sbms$AlertDialogTitle, AlertDialogFooter as $3Sbms$AlertDialogFooter, SpinnerIcon as $3Sbms$SpinnerIcon, QrCodeIcon as $3Sbms$QrCodeIcon, AlertDialogDescription as $3Sbms$AlertDialogDescription, Avatar as $3Sbms$Avatar, PlusCircleIcon as $3Sbms$PlusCircleIcon, DialogFooter as $3Sbms$DialogFooter, SendIcon as $3Sbms$SendIcon, TrashIcon as $3Sbms$TrashIcon, Hourglass3Icon as $3Sbms$Hourglass3Icon, InfoCircleIcon as $3Sbms$InfoCircleIcon, AlertDialogCancel as $3Sbms$AlertDialogCancel, AlertDialogAction as $3Sbms$AlertDialogAction, DialogDescription as $3Sbms$DialogDescription, ShareArrowIcon as $3Sbms$ShareArrowIcon} from "@snapcall/design-system";
7
+ import {Toaster as $3Sbms$Toaster, UserPlus1Icon as $3Sbms$UserPlus1Icon, useToast as $3Sbms$useToast, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, Dialog as $3Sbms$Dialog, DialogContent as $3Sbms$DialogContent, DialogHeader as $3Sbms$DialogHeader, DialogTitle as $3Sbms$DialogTitle, Tabs as $3Sbms$Tabs, TabsList as $3Sbms$TabsList, TabsTrigger as $3Sbms$TabsTrigger, TabsContent as $3Sbms$TabsContent, Button as $3Sbms$Button, CopyIcon as $3Sbms$CopyIcon, Form as $3Sbms$Form, FormField as $3Sbms$FormField, FormItem as $3Sbms$FormItem, FormLabel as $3Sbms$FormLabel, FormControl as $3Sbms$FormControl, CreatableSelect as $3Sbms$CreatableSelect, FormMessage as $3Sbms$FormMessage, Textarea as $3Sbms$Textarea, Send3Icon as $3Sbms$Send3Icon, Select as $3Sbms$Select, SelectTrigger as $3Sbms$SelectTrigger, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, SelectValue as $3Sbms$SelectValue, SelectContent as $3Sbms$SelectContent, SelectGroup as $3Sbms$SelectGroup, SelectItem as $3Sbms$SelectItem, MicrophoneOffIcon as $3Sbms$MicrophoneOffIcon, CheckCircleIcon as $3Sbms$CheckCircleIcon, DotsHorizontalIcon as $3Sbms$DotsHorizontalIcon, RotateCcwIcon as $3Sbms$RotateCcwIcon, Recording2Icon as $3Sbms$Recording2Icon, AlertDialog as $3Sbms$AlertDialog, AlertDialogContent as $3Sbms$AlertDialogContent, AlertDialogHeader as $3Sbms$AlertDialogHeader, AlertDialogTitle as $3Sbms$AlertDialogTitle, AlertDialogFooter as $3Sbms$AlertDialogFooter, SpinnerIcon as $3Sbms$SpinnerIcon, QrCodeIcon as $3Sbms$QrCodeIcon, AlertDialogDescription as $3Sbms$AlertDialogDescription, Avatar as $3Sbms$Avatar, PlusCircleIcon as $3Sbms$PlusCircleIcon, DialogFooter as $3Sbms$DialogFooter, SendIcon as $3Sbms$SendIcon, TrashIcon as $3Sbms$TrashIcon, Hourglass3Icon as $3Sbms$Hourglass3Icon, InfoCircleIcon as $3Sbms$InfoCircleIcon, AlertDialogCancel as $3Sbms$AlertDialogCancel, AlertDialogAction as $3Sbms$AlertDialogAction, DialogDescription as $3Sbms$DialogDescription, ShareArrowIcon as $3Sbms$ShareArrowIcon, SlashCircle1Icon as $3Sbms$SlashCircle1Icon, CalendarIcon as $3Sbms$CalendarIcon, Input as $3Sbms$Input, Microphone1Icon as $3Sbms$Microphone1Icon, VolumeMaxIcon as $3Sbms$VolumeMaxIcon, VideoRecorderOffIcon as $3Sbms$VideoRecorderOffIcon, MicrophoneOff1Icon as $3Sbms$MicrophoneOff1Icon, AlertCircleIcon as $3Sbms$AlertCircleIcon, Lock1Icon as $3Sbms$Lock1Icon, Lock3Icon as $3Sbms$Lock3Icon, VoicemailIcon as $3Sbms$VoicemailIcon} from "@snapcall/design-system";
8
8
  import "inobounce";
9
- import {QueryClient as $3Sbms$QueryClient, QueryClientProvider as $3Sbms$QueryClientProvider, useMutation as $3Sbms$useMutation} from "react-query";
9
+ import {QueryClient as $3Sbms$QueryClient, QueryClientProvider as $3Sbms$QueryClientProvider, useMutation as $3Sbms$useMutation, useQuery as $3Sbms$useQuery} from "react-query";
10
10
  import {useTranslation as $3Sbms$useTranslation, initReactI18next as $3Sbms$initReactI18next, Trans as $3Sbms$Trans} from "react-i18next";
11
11
  import $3Sbms$i18next from "i18next";
12
12
  import $3Sbms$bowser, {parse as $3Sbms$parse, getParser as $3Sbms$getParser} from "bowser";
13
13
  import {useOverlayTriggerState as $3Sbms$useOverlayTriggerState} from "react-stately";
14
14
  import {v4 as $3Sbms$v4} from "uuid";
15
15
  import {WebSocketTransport as $3Sbms$WebSocketTransport, Peer as $3Sbms$Peer} from "protoo-client";
16
- import {Producer as $3Sbms$Producer} from "mediasoup-client/lib/Producer";
17
16
  import {addBreadcrumb as $3Sbms$addBreadcrumb, setTag as $3Sbms$setTag} from "@sentry/browser";
17
+ import {Producer as $3Sbms$Producer} from "mediasoup-client/lib/Producer";
18
18
  import {Device as $3Sbms$Device} from "mediasoup-client";
19
19
  import {SelfieSegmentation as $3Sbms$SelfieSegmentation} from "@mediapipe/selfie_segmentation";
20
20
  import {Buffer as $3Sbms$Buffer} from "buffer";
@@ -383,6 +383,12 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
383
383
  recordingStartText: "This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.",
384
384
  dismiss: "Dismiss"
385
385
  },
386
+ requestAccess: {
387
+ wantToJoin: "<bold>{{name}}</bold> wants to join!",
388
+ deny: "Deny",
389
+ admit: "Admit",
390
+ defaultName: "An user"
391
+ },
386
392
  endView: {
387
393
  goBack: "Go back to call",
388
394
  tooLate: "You arrived too late",
@@ -530,16 +536,42 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
530
536
  you: "You",
531
537
  cancel: "Cancel",
532
538
  confirm: "Confirm",
533
- remove: "Remove"
539
+ remove: "Remove",
540
+ proceed: "Proceed",
541
+ audio: "Audio"
534
542
  },
535
543
  greeting: {
536
544
  mainTitle: "Welcome to SnapCall",
537
- sideTitle: "Are you ready to join?",
538
- sideDescription: "Before joining the room, enter your name. It will displayed to participants.",
539
- namePlaceholder: "Your name",
545
+ sideTitle: "Hold tight, you're next!",
546
+ sideDescription: "Please enter your name and adjust your camera and microphone",
547
+ namePlaceholder: "Eg. Lucy or Peter",
540
548
  nameSubmit: "Join Conversation",
541
549
  footerTitle: "Powered by SnapCall",
542
- footerDescription: "Meet SnapCall, the easiest way to add real-time video to platform, product or service."
550
+ footerDescription: "Meet SnapCall, the easiest way to add real-time video to platform, product or service.",
551
+ cameraIs: "Camera is",
552
+ microphoneIs: "Microphone is",
553
+ on: "On",
554
+ off: "Off",
555
+ scheduleACall: "Schedule a call",
556
+ requestACall: "Request a call",
557
+ name: "Name",
558
+ nameDescription: "This name will be displayed to all participants in the call.",
559
+ setting: "Settings",
560
+ askToJoin: "Ask to join",
561
+ youWillJoinWhenSomeoneLetsYou: "You will join the call when someone from {{ companyName }} lets you in.",
562
+ cantJoinCall: "You can\u2019t join this call",
563
+ someoneDenied: "Someone in the call denied your request to join.",
564
+ askingLetIn: "Asking to be let in...",
565
+ takeFewMinute: "This may take a few minutes depending on the availability of the participants.",
566
+ cantWait: "Can't wait?",
567
+ whatYouCanDo: "Here\u2019s what you can do",
568
+ leaveMessage: "Leave a message",
569
+ cantWaitLeaveMessage: "Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.",
570
+ recordVideo: "Record video",
571
+ recordVoice: "Record voice",
572
+ canceledCallRequest: "The call request will be canceled and you will be redirected to the call scheduling page.",
573
+ mediaDenied: "Microphone and camera access denied",
574
+ clickOnLock: "Click on the <1></1> lock icon in your browser's bar."
543
575
  },
544
576
  recorder: {
545
577
  addMore: "Add more",
@@ -576,6 +608,7 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
576
608
  photoInstructionsTitle: "Ready to snap a photo?",
577
609
  videoInstructionsTitle: "Ready to record a video?",
578
610
  screenShareInstructionsTitle: "Ready to share your screen?",
611
+ audioInstructionsTitle: "Ready to record a voice message?",
579
612
  instructions: {
580
613
  allowAccessOnPrompt: "When prompted, <bold>allow access</bold> to camera and microphone.",
581
614
  multiplePhotos: "Take a <bold>photo or multiple</bold> for detail, then review.",
@@ -585,7 +618,10 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
585
618
  tapStopVideoButton: "<bold>Tap stop</bold> when you are done.",
586
619
  reviewAndSendVideos: "<bold>Review your videos</bold>, and they will be sent to us automatically.",
587
620
  screenShareInstruction: "Select the screen or window you wish to record.",
588
- privacyPolicy: "By proceeding, you agree to our <bold>Privacy Policy</bold>."
621
+ privacyPolicy: "By proceeding, you agree to our <bold>Privacy Policy</bold>.",
622
+ tapAudioButton: "<bold>Tap the record button</bold> to start recording your audio message.",
623
+ speakClearly: "<bold>Speak clearly</bold> and say what you need to convey.",
624
+ reviewAndSendAudios: "<bold>Review your audios</bold>, and they will be sent to us automatically."
589
625
  },
590
626
  switchToMobileTitle: "Switch to your mobile device",
591
627
  switchToMobileDescription: "Experience greater convenience by using your phone to take photos and record videos.",
@@ -648,6 +684,12 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
648
684
  connectedTo: "Connect\xe9 \xe0 {{name}}",
649
685
  recording: "Enregistrement en cours"
650
686
  },
687
+ requestAccess: {
688
+ wantToJoin: "{{name}} souhaite rejoindre!",
689
+ deny: "Refuser",
690
+ admit: "Accepter",
691
+ defaultName: "Un utilisateur"
692
+ },
651
693
  recordingPopup: {
652
694
  recordingStartTitle: "L'enregistrement va commencer.",
653
695
  recordingStartText: "Cet appel sera enregistr\xe9 sous peu. Si vous pr\xe9f\xe9rez ne pas \xeatre enregistr\xe9, vous \xeates libre de quitter l'appel \xe0 tout moment.",
@@ -800,16 +842,42 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
800
842
  you: "Vous",
801
843
  cancel: "Annuler",
802
844
  confirm: "Confirmer",
803
- remove: "Enlever"
845
+ remove: "Enlever",
846
+ proceed: "Proc\xe9der",
847
+ audio: "Audio"
804
848
  },
805
849
  greeting: {
806
850
  mainTitle: "Bienvenue sur SnapCall",
807
- sideTitle: "Pr\xeat \xe0 rejoindre ?",
808
- sideDescription: "Avant de rejoindre la salle, veuillez entrer votre nom.",
809
- namePlaceholder: "Nom",
851
+ sideTitle: "Tenez bon, vous \xeates le prochain !",
852
+ sideDescription: "Veuillez entrer votre nom et r\xe9gler votre cam\xe9ra et votre microphone",
853
+ namePlaceholder: "Par exemple. Lucie ou Peter",
810
854
  nameSubmit: "Rejoindre la conversation",
811
855
  footerTitle: "Propuls\xe9 par SnapCall",
812
- footerDescription: "D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n'importe quelle plateforme, produit ou service."
856
+ footerDescription: "D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n'importe quelle plateforme, produit ou service.",
857
+ cameraIs: "La cam\xe9ra est",
858
+ microphoneIs: "Le micro est",
859
+ on: "allum\xe9e",
860
+ off: "\xe9teinte",
861
+ scheduleACall: "Planifier un appel",
862
+ requestACall: "Demander un appel",
863
+ name: "Nom",
864
+ nameDescription: "Ce nom sera affich\xe9 \xe0 tous les participants \xe0 l'appel.",
865
+ setting: "Param\xe8tres",
866
+ askToJoin: "Demander \xe0 rejoindre",
867
+ youWillJoinWhenSomeoneLetsYou: "Vous rejoindrez l'appel lorsque quelqu'un de {{ companyName }} vous laissera entrer.",
868
+ cantJoinCall: "Vous ne pouvez pas rejoindre cet appel",
869
+ someoneDenied: "Quelqu'un lors de l'appel a refus\xe9 votre demande de participation.",
870
+ askingLetIn: "Demander \xe0 entrer...",
871
+ takeFewMinute: "Cela peut prendre quelques minutes selon la disponibilit\xe9 des participants.",
872
+ cantWait: "Je ne peux pas attendre?",
873
+ whatYouCanDo: "Voici ce que vous pouvez faire",
874
+ leaveMessage: "Laisser un message",
875
+ cantWaitLeaveMessage: "Vous ne pouvez pas attendre ? Vous pouvez laisser un message et vous serez contact\xe9 dans les plus brefs d\xe9lais.",
876
+ recordVideo: "Enregistrer une vid\xe9o",
877
+ recordVoice: "Enregistrer la voix",
878
+ canceledCallRequest: "La demande d'appel sera annul\xe9e et vous serez redirig\xe9 vers la page de planification des appels.",
879
+ mediaDenied: "Acc\xe8s au microphone et \xe0 la cam\xe9ra refus\xe9",
880
+ clickOnLock: "Cliquez sur l'ic\xf4ne de verrouillage <1></1> dans la barre de votre navigateur."
813
881
  },
814
882
  recorder: {
815
883
  addMore: "Ajouter plus",
@@ -846,6 +914,7 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
846
914
  photoInstructionsTitle: "Pr\xeat \xe0 prendre une photo ?",
847
915
  videoInstructionsTitle: "Pr\xeat \xe0 enregistrer une vid\xe9o ?",
848
916
  screenShareInstructionsTitle: "Pr\xeat \xe0 partager votre \xe9cran ?",
917
+ audioInstructionsTitle: "Pr\xeat \xe0 enregistrer un message vocal\xa0?",
849
918
  instructions: {
850
919
  allowAccessOnPrompt: "<bold>Autorisez l'acc\xe8s</bold> \xe0 la cam\xe9ra et au micro lorsque demand\xe9.",
851
920
  multiplePhotos: "Prenez <bold>une ou plusieurs photos</bold> pour donner plus de d\xe9tails.",
@@ -855,7 +924,10 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
855
924
  tapStopVideoButton: "<bold>Appuyez sur Arr\xeat</bold> lorsque vous avez termin\xe9.",
856
925
  reviewAndSendVideos: "<bold>Validez vos vid\xe9os</bold>, et elles nous seront envoy\xe9es automatiquement.",
857
926
  screenShareInstruction: "S\xe9lectionnez l'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.",
858
- privacyPolicy: "En continuant, vous acceptez notre <bold>Politique de confidentialit\xe9</bold>."
927
+ privacyPolicy: "En continuant, vous acceptez notre <bold>Politique de confidentialit\xe9</bold>.",
928
+ tapAudioButton: "<bold>Appuyez sur le bouton d'enregistrement</bold> pour commencer \xe0 enregistrer votre message audio.",
929
+ speakClearly: "<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.",
930
+ reviewAndSendAudios: "<bold>V\xe9rifiez vos audios</bold>, et ils seront envoy\xe9s automatiquement \xe0 nous."
859
931
  },
860
932
  switchToMobileTitle: "Passez sur votre mobile",
861
933
  switchToMobileDescription: "Profitez d'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.",
@@ -918,6 +990,12 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
918
990
  connectedTo: "Connesso a {{name}}",
919
991
  recording: "Registrazione in corso"
920
992
  },
993
+ requestAccess: {
994
+ wantToJoin: "{{name}} vuole unirsi!",
995
+ deny: "Negare",
996
+ admit: "Ammettere",
997
+ defaultName: "Un utente"
998
+ },
921
999
  recordingPopup: {
922
1000
  recordingStartTitle: "Registrazione in procinto di iniziare.",
923
1001
  recordingStartText: "Questa chiamata verr\xe0 registrata a breve. Se preferisci non essere registrato, sei libero di lasciare la chiamata in questo momento.",
@@ -1070,16 +1148,42 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
1070
1148
  you: "Voi",
1071
1149
  cancel: "Annulla",
1072
1150
  confirm: "Confermare",
1073
- remove: "Rimuovere"
1151
+ remove: "Rimuovere",
1152
+ proceed: "Procedere",
1153
+ audio: "Audio"
1074
1154
  },
1075
1155
  greeting: {
1076
1156
  mainTitle: "Benvenuto a SnapCall",
1077
- sideTitle: "Sei pronto per unirti?",
1078
- sideDescription: "Prima di entrare nella stanza, inserisci il tuo nome. Verr\xe0 visualizzato ai partecipanti.",
1079
- namePlaceholder: "Il tuo nome",
1157
+ sideTitle: "Tieni duro, il prossimo sei tu!",
1158
+ sideDescription: "Inserisci il tuo nome e regola la fotocamera e il microfono",
1159
+ namePlaceholder: "Per esempio. Lucia o Pietro",
1080
1160
  nameSubmit: "Partecipa alla conversazione",
1081
1161
  footerTitle: "Offerto da SnapCall",
1082
- footerDescription: "Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio."
1162
+ footerDescription: "Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio.",
1163
+ cameraIs: "La fotocamera \xe8",
1164
+ microphoneIs: "Il microfono \xe8",
1165
+ on: "acceso",
1166
+ off: "spento",
1167
+ scheduleACall: "Pianifica una chiamata",
1168
+ requestACall: "Richiedi una chiamata",
1169
+ name: "Nome",
1170
+ nameDescription: "Questo nome verr\xe0 visualizzato a tutti i partecipanti alla chiamata.",
1171
+ setting: "Impostazioni",
1172
+ askToJoin: "Chiedi di partecipare",
1173
+ youWillJoinWhenSomeoneLetsYou: "Parteciperai alla chiamata quando qualcuno di {{ companyName }} ti far\xe0 entrare.",
1174
+ cantJoinCall: "Non puoi partecipare a questa chiamata",
1175
+ someoneDenied: "Qualcuno nella chiamata ha rifiutato la tua richiesta di partecipazione.",
1176
+ askingLetIn: "Chiedo di essere fatto entrare...",
1177
+ takeFewMinute: "L'operazione potrebbe richiedere alcuni minuti a seconda della disponibilit\xe0 dei partecipanti.",
1178
+ cantWait: "Non vedo l'ora?",
1179
+ whatYouCanDo: "Ecco cosa puoi fare",
1180
+ leaveMessage: "Lascia un messaggio",
1181
+ cantWaitLeaveMessage: "Non vedi l'ora? Puoi lasciare un messaggio e sarai contattato il prima possibile.",
1182
+ recordVideo: "Registra video",
1183
+ recordVoice: "Registra voce",
1184
+ canceledCallRequest: "La richiesta di chiamata verr\xe0 annullata e verrai reindirizzato alla pagina di pianificazione delle chiamate",
1185
+ mediaDenied: "Accesso al microfono e alla fotocamera negato",
1186
+ clickOnLock: "Fai clic sull'icona del lucchetto <1></1> nella barra del browser."
1083
1187
  },
1084
1188
  recorder: {
1085
1189
  addMore: "Aggiungere altro",
@@ -1116,6 +1220,7 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
1116
1220
  photoInstructionsTitle: "Pronto a scattare una foto?",
1117
1221
  videoInstructionsTitle: "Pronto a registrare un video?",
1118
1222
  screenShareInstructionsTitle: "Pronto a condividere il tuo schermo?",
1223
+ audioInstructionsTitle: "Pronti per registrare un messaggio vocale?",
1119
1224
  instructions: {
1120
1225
  allowAccessOnPrompt: "<bold>Consenti l'accesso</bold> alla fotocamera e al microfono.",
1121
1226
  multiplePhotos: "Scatta <bold>una foto o pi\xf9</bold> di una per i dettagli.",
@@ -1125,7 +1230,10 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
1125
1230
  tapStopVideoButton: "<bold>Premi Stop</bold> quando hai finito.",
1126
1231
  reviewAndSendVideos: "<bold>Convalida i tuoi video</bold> e verranno inviati automaticamente a noi.",
1127
1232
  screenShareInstruction: "Seleziona lo schermo o la finestra che desideri registrare.",
1128
- privacyPolicy: "Procedendo, accetti la nostra <bold>Politica sulla Privacy.</bold>"
1233
+ privacyPolicy: "Procedendo, accetti la nostra <bold>Politica sulla Privacy.</bold>",
1234
+ tapAudioButton: "<bold>Premi il pulsante di registrazione</bold> per iniziare a registrare il tuo messaggio vocale.",
1235
+ speakClearly: "<bold>Parla chiaramente</bold> e d\xec ci\xf2 che devi comunicare.",
1236
+ reviewAndSendAudios: "<bold>Rivedi i tuoi audio</bold> e verranno inviati automaticamente a noi."
1129
1237
  },
1130
1238
  switchToMobileTitle: "Passa al tuo dispositivo mobile",
1131
1239
  switchToMobileDescription: "Goditi un'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.",
@@ -1412,6 +1520,7 @@ class $82e31ca38889c079$var$AudioRenderer {
1412
1520
  var $82e31ca38889c079$export$2e2bcd8739ae039 = $82e31ca38889c079$var$AudioRenderer;
1413
1521
 
1414
1522
 
1523
+
1415
1524
  const $15ddac3121cc3a5d$export$674c90a250a8b2c5 = async (video)=>{
1416
1525
  const { videoWidth: videoWidth, videoHeight: videoHeight } = video;
1417
1526
  const orientation = videoWidth > videoHeight ? "landscape" : "portrait";
@@ -1936,6 +2045,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
1936
2045
  this.mediasoupTransport = {};
1937
2046
  this.mediaPipeOption = $c31e3fb4360572af$var$defaultMediapipeOptions;
1938
2047
  this.useVideoBackground = false;
2048
+ this.waitingRoomAccess = false;
1939
2049
  this.pendingDeviceRequest = {};
1940
2050
  this.joinOptions = {};
1941
2051
  this.devicesList = [];
@@ -2015,7 +2125,11 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2015
2125
  });
2016
2126
  return {
2017
2127
  roomId: this.roomId,
2128
+ waitingRoomAccess: this.waitingRoomAccess,
2018
2129
  companyId: this.companyId,
2130
+ company: this.company,
2131
+ plan: this.plan,
2132
+ permissions: this.permissions,
2019
2133
  peerId: this.peerId,
2020
2134
  profile: this.profile,
2021
2135
  joinOptions: this.joinOptions,
@@ -2072,7 +2186,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2072
2186
  if (!this.peerId) this.peerId = (0, $3Sbms$v4)();
2073
2187
  let url;
2074
2188
  try {
2075
- const { streamer_instance: instanceId, plan: { permissions: permissions, name: name }, recordings: recordings, company_id: company_id } = await fetch(`${this.config.apiUrl}/streams/${room}/info`, {
2189
+ const { streamer_instance: instanceId, plan: { permissions: permissions, name: name }, recordings: recordings, company_id: company_id, company: company, defaultPublicPage: defaultPublicPage } = await fetch(`${this.config.apiUrl}/streams/${room}/info`, {
2076
2190
  method: "get",
2077
2191
  headers: {
2078
2192
  "Content-Type": "application/json"
@@ -2082,7 +2196,9 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2082
2196
  throw new Error("Invalid room ID");
2083
2197
  });
2084
2198
  this.companyId = company_id;
2199
+ this.company = company;
2085
2200
  this.permissions = permissions;
2201
+ this.defaultPublicPage = defaultPublicPage;
2086
2202
  if (recordings?.headless === true) permissions.push("record_video_on_demand");
2087
2203
  this.plan = name;
2088
2204
  const searchParams = new URLSearchParams({
@@ -2091,7 +2207,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2091
2207
  });
2092
2208
  if (options.authKey) searchParams.append("authKey", options.authKey);
2093
2209
  const recorderPath = this.joinOptions.recorder ? "/recorder" : "";
2094
- url = `${this.config.streamerServer}/${instanceId}${recorderPath}?${searchParams}`;
2210
+ url = `${this.config.streamerServer}/${instanceId}/v2/${recorderPath}?${searchParams}`;
2095
2211
  } catch (roomError) {
2096
2212
  console.error("init", roomError);
2097
2213
  const event = new $c31e3fb4360572af$var$SnapcallEvent("invalidRoom", {
@@ -2107,14 +2223,26 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2107
2223
  }
2108
2224
  });
2109
2225
  this.protoo = new $3Sbms$Peer(this.protooTransport);
2110
- this.protoo.on("open", ()=>{
2226
+ let open = false;
2227
+ let err;
2228
+ let onOpen = (err)=>{};
2229
+ this.protoo.on("open", async ()=>{
2230
+ if (this.joinOptions.apiKey) await this.setAgentIdentity({
2231
+ apiKey: this.joinOptions.apiKey,
2232
+ email: this.joinOptions.email
2233
+ }).catch((err)=>{
2234
+ $c31e3fb4360572af$var$log.error("onOpen", "failed auth", err);
2235
+ });
2236
+ open = true;
2237
+ onOpen();
2111
2238
  if (this.joinOptions.recorder) {
2112
- this.joinRecorder();
2239
+ await this.joinRecorder();
2113
2240
  return;
2114
2241
  }
2115
- this.joinRoom();
2116
2242
  });
2117
2243
  this.protoo.on("failed", ()=>{
2244
+ err = new Error("failure");
2245
+ onOpen(err);
2118
2246
  $c31e3fb4360572af$var$log.error("protoo.on", "failed");
2119
2247
  this.onCriticalError($c31e3fb4360572af$export$103bedf43ba882db.SOCKET_LOST);
2120
2248
  });
@@ -2243,6 +2371,22 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2243
2371
  }
2244
2372
  });
2245
2373
  this.dispatchEvent(event);
2374
+ } else if (notification.method === "requestAccessResult") {
2375
+ if (notification.data.success) this.onEnterRoom();
2376
+ const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2377
+ detail: notification.data
2378
+ });
2379
+ this.dispatchEvent(event);
2380
+ } else if (notification.method === "cancelAccessRequest") {
2381
+ const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2382
+ detail: notification.data
2383
+ });
2384
+ this.dispatchEvent(event);
2385
+ } else if (notification.method === "accessRequest") {
2386
+ const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2387
+ detail: notification.data
2388
+ });
2389
+ this.dispatchEvent(event);
2246
2390
  } else if (notification.method === "requestDeviceResult") {
2247
2391
  const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2248
2392
  detail: notification.data
@@ -2291,6 +2435,14 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2291
2435
  }
2292
2436
  }
2293
2437
  });
2438
+ await new Promise((resolve, reject)=>{
2439
+ onOpen = (err)=>{
2440
+ onOpen = ()=>{};
2441
+ if (err) return reject(err);
2442
+ resolve();
2443
+ };
2444
+ if (open) onOpen(err);
2445
+ });
2294
2446
  }
2295
2447
  closeWebrtcTransport(key) {
2296
2448
  const transport = this.mediasoupTransport[key];
@@ -2301,7 +2453,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2301
2453
  }
2302
2454
  }
2303
2455
  async getTransport(kind, direction) {
2304
- if (!this.streamerMediasoup) throw new Error("streamerMediasoup not initialized");
2456
+ if (!this.streamerMediasoup || !this.protoo) throw new Error("streamerMediasoup not initialized");
2305
2457
  let transport = this.mediasoupTransport[`${kind}-${direction}`];
2306
2458
  if (!transport) {
2307
2459
  try {
@@ -2340,42 +2492,79 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2340
2492
  }
2341
2493
  });
2342
2494
  }
2343
- async setAgentIdentity() {
2344
- const { apiKey: apiKey, email: email } = this.joinOptions;
2345
- if (apiKey) try {
2346
- if (apiKey && email) this.agentIdentity = await this.fetchAgentInfo({
2347
- apiKey: apiKey,
2348
- email: email
2349
- });
2350
- else if (apiKey) this.agentIdentity = await this.fetchUserInfo({
2351
- apiKey: apiKey
2352
- });
2353
- if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("agentIdentity", {
2354
- detail: {
2355
- success: true,
2356
- email: this.agentIdentity.email,
2357
- name: this.agentIdentity.name,
2358
- avatarUrl: this.agentIdentity.settings?.avatar_url
2359
- }
2360
- }));
2361
- } catch (agentInfoError) {
2362
- $c31e3fb4360572af$var$log.warn("setAgentIdentity", agentInfoError);
2363
- this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("agentIdentity", {
2364
- detail: {
2365
- success: false
2366
- }
2367
- }));
2495
+ async setAgentIdentity({ apiKey: apiKey, email: email }) {
2496
+ if (apiKey) {
2497
+ this.joinOptions.apiKey = apiKey;
2498
+ this.joinOptions.email = email;
2499
+ try {
2500
+ if (apiKey && email) this.agentIdentity = await this.fetchAgentInfo({
2501
+ apiKey: apiKey,
2502
+ email: email
2503
+ });
2504
+ else if (apiKey) this.agentIdentity = await this.fetchUserInfo({
2505
+ apiKey: apiKey
2506
+ });
2507
+ await this.protoo?.request("authenticate", {
2508
+ apiKey: apiKey,
2509
+ email: email
2510
+ });
2511
+ if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("agentIdentity", {
2512
+ detail: {
2513
+ success: true,
2514
+ email: this.agentIdentity.email,
2515
+ name: this.agentIdentity.name,
2516
+ avatarUrl: this.agentIdentity.settings?.avatar_url
2517
+ }
2518
+ }));
2519
+ } catch (agentInfoError) {
2520
+ $c31e3fb4360572af$var$log.warn("setAgentIdentity", agentInfoError);
2521
+ this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("agentIdentity", {
2522
+ detail: {
2523
+ success: false
2524
+ }
2525
+ }));
2526
+ }
2368
2527
  }
2369
2528
  }
2529
+ async acceptAccessRequest(id) {
2530
+ if (!this.protoo) throw new Error("not connected");
2531
+ await this.protoo.request("acceptAccessRequest", {
2532
+ id: id
2533
+ });
2534
+ }
2535
+ async denyAccessRequest(id) {
2536
+ if (!this.protoo) throw new Error("stream client not initiated");
2537
+ await this.protoo.request("denyAccessRequest", {
2538
+ id: id
2539
+ });
2540
+ }
2541
+ async requestRoomAccess() {
2542
+ if (!this.protoo) throw new Error("stream client not initiated");
2543
+ await this.protoo.request("requestAccess");
2544
+ this.waitingRoomAccess = true;
2545
+ }
2370
2546
  async joinRoom() {
2547
+ if (!this.protoo) throw new Error("stream client not initiated");
2548
+ await this.protoo.request("join");
2549
+ await this.onEnterRoom();
2550
+ if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("agentIdentity", {
2551
+ detail: {
2552
+ success: true,
2553
+ email: this.agentIdentity.email,
2554
+ name: this.agentIdentity.name,
2555
+ avatarUrl: this.agentIdentity.settings?.avatar_url
2556
+ }
2557
+ }));
2558
+ }
2559
+ async getRoomPeers() {
2560
+ if (!this.protoo) throw new Error("stream client not initiated");
2561
+ return await this.protoo.request("getRoomPeers");
2562
+ }
2563
+ async onEnterRoom() {
2564
+ if (!this.protoo) throw new Error("stream client not initiated");
2371
2565
  this.streamerMediasoup = await (0, $a2f0e3c29b11c88e$export$2e2bcd8739ae039).create(this.protoo, this.config);
2372
2566
  // now we join
2373
- const { apiKey: apiKey, email: email } = this.joinOptions;
2374
- await this.setAgentIdentity();
2375
- const { peers: peers, videoRecordStarted: videoRecordStarted, videoRecording: videoRecording } = await this.protoo.request("getRoomPeers", {
2376
- apiKey: apiKey,
2377
- email: email
2378
- });
2567
+ const { peers: peers, videoRecordStarted: videoRecordStarted, videoRecording: videoRecording, waitingRequests: waitingRequests } = await this.protoo.request("getRoomPeers");
2379
2568
  this.peers = new Map(peers.map((peer)=>[
2380
2569
  peer.id || peer.peerId,
2381
2570
  {
@@ -2386,6 +2575,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2386
2575
  const callId = await this.getCallId();
2387
2576
  this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("enterRoom", {
2388
2577
  detail: {
2578
+ waitingRequests: waitingRequests,
2389
2579
  videoRecording: videoRecording,
2390
2580
  videoRecordStarted: videoRecordStarted,
2391
2581
  peerId: this.peerId,
@@ -2412,11 +2602,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2412
2602
  });
2413
2603
  }
2414
2604
  async joinRecorder() {
2605
+ if (!this.protoo) throw new Error("stream client not initiated");
2415
2606
  this.streamerMediasoup = await (0, $a2f0e3c29b11c88e$export$2e2bcd8739ae039).create(this.protoo, this.config);
2416
2607
  const callId = await this.getCallId();
2417
- if (this.joinOptions.apiKey) this.protoo.request("setUser", {
2608
+ if (this.joinOptions.apiKey) this.setAgentIdentity({
2418
2609
  apiKey: this.joinOptions.apiKey
2419
- }).then(()=>this.setAgentIdentity()).catch((error)=>console.warn("setUser not implemented", error));
2610
+ });
2420
2611
  this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent("enterRoom", {
2421
2612
  detail: {
2422
2613
  videoRecording: {
@@ -2428,7 +2619,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2428
2619
  peers: [],
2429
2620
  callId: callId,
2430
2621
  plan: this.plan,
2431
- permissions: this.permissions
2622
+ permissions: this.permissions,
2623
+ waitingRequests: []
2432
2624
  }
2433
2625
  }));
2434
2626
  }
@@ -2471,7 +2663,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2471
2663
  detail: {}
2472
2664
  });
2473
2665
  this.dispatchEvent(event);
2474
- if (this.protoo.connected) await this.protoo.request("closeProducer", {
2666
+ if (this.protoo?.connected) await this.protoo.request("closeProducer", {
2475
2667
  producerId: producerId
2476
2668
  });
2477
2669
  }
@@ -2517,10 +2709,11 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2517
2709
  }
2518
2710
  }
2519
2711
  }
2520
- async enableMicrophone() {
2712
+ async enableMicrophone({ deviceId: deviceId } = {}) {
2521
2713
  if (!this.micProducer || this.micProducer?.closed) {
2522
2714
  const stream = await this.handleGetUserMediaError("microphone", navigator.mediaDevices.getUserMedia({
2523
2715
  audio: {
2716
+ deviceId: deviceId,
2524
2717
  noiseSuppression: true,
2525
2718
  echoCancellation: true
2526
2719
  }
@@ -2567,7 +2760,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2567
2760
  this.micProducer.pause();
2568
2761
  this.muted = true;
2569
2762
  const device = "microphone";
2570
- this.protoo.notify("mute", {
2763
+ this.protoo?.notify("mute", {
2571
2764
  device: device
2572
2765
  });
2573
2766
  const event = new $c31e3fb4360572af$var$SnapcallEvent("microphoneMute", {
@@ -2582,7 +2775,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2582
2775
  this.resolvePendingDeviceRequest("microphone", true);
2583
2776
  this.muted = false;
2584
2777
  const device = "microphone";
2585
- this.protoo.notify("unmute", {
2778
+ this.protoo?.notify("unmute", {
2586
2779
  device: device
2587
2780
  });
2588
2781
  const event = new $c31e3fb4360572af$var$SnapcallEvent("microphoneUnmute", {
@@ -2615,8 +2808,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2615
2808
  this.audioMedia = undefined;
2616
2809
  this.webcamTrack?.stop();
2617
2810
  this.webcamTrack = null;
2618
- this.protooTransport.close();
2619
- this.protoo.close();
2811
+ this.protooTransport?.close();
2812
+ this.protoo?.close();
2620
2813
  this.micProducer?.close();
2621
2814
  this.screenshareVideoProducer?.close();
2622
2815
  this.webcamProducer?.close();
@@ -2636,6 +2829,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2636
2829
  window.dispatchEvent(deprecatedEvent);
2637
2830
  }
2638
2831
  terminateRoom() {
2832
+ if (!this.protoo) throw new Error("stream client not initiated");
2639
2833
  this.protoo.request("terminateRoom");
2640
2834
  }
2641
2835
  async updateWebcams() {
@@ -2662,7 +2856,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2662
2856
  const data = this.pendingDeviceRequest[key];
2663
2857
  if (deviceType === data.deviceType) {
2664
2858
  delete this.pendingDeviceRequest[key];
2665
- this.protoo.notify("requestDeviceResult", {
2859
+ this.protoo?.notify("requestDeviceResult", {
2666
2860
  result: Boolean(result),
2667
2861
  failure: failure,
2668
2862
  ...data
@@ -2685,7 +2879,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2685
2879
  }
2686
2880
  async restartIce(transport) {
2687
2881
  $c31e3fb4360572af$var$log.log("restartIce", transport.connectionState, transport.closed);
2688
- if (transport.connectionState === "disconnected" && !transport.closed) try {
2882
+ if (transport.connectionState === "disconnected" && !transport.closed && this.protoo) try {
2689
2883
  const iceParameters = await this.protoo.request("restartIce", {
2690
2884
  transportId: transport.id
2691
2885
  });
@@ -2955,7 +3149,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2955
3149
  async disableVideo() {
2956
3150
  if (!this.webcamProducer) return;
2957
3151
  this.webcamProducer.close();
2958
- if (this.protoo.connected) await this.protoo.request("closeProducer", {
3152
+ if (this.protoo?.connected) await this.protoo.request("closeProducer", {
2959
3153
  producerId: this.webcamProducer.id
2960
3154
  });
2961
3155
  this.webcamProducer = null;
@@ -3028,7 +3222,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3028
3222
  async disableScreenshare() {
3029
3223
  if (this.screenshareVideoProducer) {
3030
3224
  this.screenshareVideoProducer.close();
3031
- if (this.protoo.connected) await this.protoo.request("closeProducer", {
3225
+ if (this.protoo?.connected) await this.protoo.request("closeProducer", {
3032
3226
  producerId: this.screenshareVideoProducer.id
3033
3227
  });
3034
3228
  this.screenshareVideoProducer = undefined;
@@ -3036,7 +3230,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3036
3230
  this.audioMedia?.removeTrack("screen");
3037
3231
  if (this.screenshareAudioProducer) {
3038
3232
  this.screenshareAudioProducer.close();
3039
- if (this.protoo.connected) await this.protoo.request("closeProducer", {
3233
+ if (this.protoo?.connected) await this.protoo.request("closeProducer", {
3040
3234
  producerId: this.screenshareAudioProducer.id
3041
3235
  });
3042
3236
  this.screenshareAudioProducer = undefined;
@@ -3089,7 +3283,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3089
3283
  });
3090
3284
  }
3091
3285
  async deleteCapture(assetId) {
3092
- const res = await this.protoo.request("deleteCapture", {
3286
+ const res = await this.protoo?.request("deleteCapture", {
3093
3287
  assetId: assetId
3094
3288
  });
3095
3289
  return res;
@@ -3136,7 +3330,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3136
3330
  try {
3137
3331
  const mediaKind = deviceType === "microphone" ? "audio" : "video";
3138
3332
  const transport = await this.getTransport(mediaKind, "recv");
3139
- const data = await this.protoo.request("consume", {
3333
+ const data = await this.protoo?.request("consume", {
3140
3334
  peerId: peerId,
3141
3335
  producerId: producerId,
3142
3336
  transportId: transport.id,
@@ -3183,7 +3377,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3183
3377
  audioRenderer.setSource(mediaStream);
3184
3378
  audioRenderer.play();
3185
3379
  }
3186
- if (consumer.kind === "video") await this.protoo.request("resumeConsumer", {
3380
+ if (consumer.kind === "video") await this.protoo?.request("resumeConsumer", {
3187
3381
  consumerId: consumer.id
3188
3382
  });
3189
3383
  } catch (error) {
@@ -3205,7 +3399,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3205
3399
  this.dispatchEvent(event);
3206
3400
  }
3207
3401
  async setProfile(profile) {
3208
- const newProfile = await this.protoo.request("setProfile", profile);
3402
+ const newProfile = await this.protoo?.request("setProfile", profile);
3403
+ this.joinOptions.profile = profile;
3209
3404
  this.profile = {
3210
3405
  ...newProfile
3211
3406
  };
@@ -3219,7 +3414,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3219
3414
  }
3220
3415
  async requestPeerDevice(remotePeerId, deviceType) {
3221
3416
  if (!this.permissions.find((permission)=>permission === "request_input")) throw new Error("feature not allowed");
3222
- return this.protoo.request("requestPeerDevice", {
3417
+ return this.protoo?.request("requestPeerDevice", {
3223
3418
  remotePeerId: remotePeerId,
3224
3419
  deviceType: deviceType
3225
3420
  });
@@ -3229,7 +3424,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3229
3424
  }
3230
3425
  async getCallId() {
3231
3426
  try {
3232
- const { callId: callId } = await this.protoo.request("getCallId");
3427
+ const { callId: callId } = await this.protoo?.request("getCallId");
3233
3428
  return callId;
3234
3429
  } catch (err) {
3235
3430
  $c31e3fb4360572af$var$log.error("getCallId", "Failed to get callId");
@@ -3267,7 +3462,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3267
3462
  const messageId = (0, $3Sbms$v4)();
3268
3463
  const chunks = this.getCustomMessageEventChunks(event);
3269
3464
  const chunksPromises = chunks.map((chunk, index)=>{
3270
- return this.protoo.notify("customMessageToAllPeers", {
3465
+ return this.protoo?.notify("customMessageToAllPeers", {
3271
3466
  messageId: messageId,
3272
3467
  chunkIndex: index,
3273
3468
  chunk: chunk,
@@ -3280,7 +3475,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3280
3475
  const messageId = (0, $3Sbms$v4)();
3281
3476
  const chunks = this.getCustomMessageEventChunks(event);
3282
3477
  const chunksPromises = chunks.map((chunk, index)=>{
3283
- return this.protoo.notify("customMessageToPeer", {
3478
+ return this.protoo?.notify("customMessageToPeer", {
3284
3479
  peerId: peerId,
3285
3480
  event: {
3286
3481
  messageId: messageId,
@@ -3391,10 +3586,18 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3391
3586
  return this.permissions;
3392
3587
  }
3393
3588
  async startRecord() {
3394
- await this.protoo.request("startRecord");
3589
+ await this.protoo?.request("startRecord");
3395
3590
  }
3396
3591
  async stopRecord() {
3397
- await this.protoo.request("stopRecord");
3592
+ await this.protoo?.request("stopRecord");
3593
+ }
3594
+ async getPublicPage(token) {
3595
+ return (await fetch(`${this.config.apiUrl}/public/public-pages/${token}`, {
3596
+ method: "get",
3597
+ headers: {
3598
+ "Content-Type": "application/json"
3599
+ }
3600
+ })).json();
3398
3601
  }
3399
3602
  }
3400
3603
 
@@ -8251,7 +8454,7 @@ var $b8963bf62cf5b984$export$2e2bcd8739ae039 = $b8963bf62cf5b984$var$tooltip;
8251
8454
 
8252
8455
 
8253
8456
  const $cdab47bb8796991e$var$Video = ()=>{
8254
- const { headless: headless, selfPeerId: selfPeerId, videosContainerRef: videosContainerRef, remoteTilesContainerRef: remoteTilesContainerRef, options: options, muted: selfMuted, profile: profile, orientation: orientation, userInteractionTriggered: userInteractionTriggered } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
8457
+ const { headless: headless, selfPeerId: selfPeerId, videosContainerRef: videosContainerRef, remoteTilesContainerRef: remoteTilesContainerRef, options: options, muted: selfMuted, profile: profile, orientation: orientation } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
8255
8458
  const [tileSize, setTileSize] = (0, $3Sbms$useState)({
8256
8459
  width: 0,
8257
8460
  height: 0
@@ -8290,21 +8493,6 @@ const $cdab47bb8796991e$var$Video = ()=>{
8290
8493
  streams.length,
8291
8494
  highlightedTile
8292
8495
  ]);
8293
- (0, $3Sbms$useEffect)(()=>{
8294
- if (userInteractionTriggered && !headless) {
8295
- if (options.controls?.microphone?.enabled) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone().catch((error)=>{
8296
- console.error("enable microphone", error);
8297
- });
8298
- if (options.controls?.camera?.enabled && !options.audioTiles) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo().catch((error)=>{
8299
- console.error("enable video", error);
8300
- });
8301
- }
8302
- }, [
8303
- options.controls,
8304
- options.audioTiles,
8305
- userInteractionTriggered,
8306
- headless
8307
- ]);
8308
8496
  (0, $3Sbms$useEffect)(()=>{
8309
8497
  const onNewPeer = (event)=>{
8310
8498
  const { peerId: peerId, profile: profile } = event.detail;
@@ -8778,7 +8966,8 @@ const $69a9c49ece80e773$var$ControlBar = ()=>{
8778
8966
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).terminateRoom();
8779
8967
  };
8780
8968
  const onLeaveClick = ()=>{
8781
- if (isAgent) setIsLeaveMenuOpen((previousValue)=>!previousValue);
8969
+ const { company: company } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
8970
+ if (isAgent && company?.terminate_enabled) setIsLeaveMenuOpen((previousValue)=>!previousValue);
8782
8971
  else leaveCall();
8783
8972
  };
8784
8973
  const onNewWebcamCount = (event)=>{
@@ -10888,7 +11077,7 @@ const $61b9018279e658f9$export$3a4deda42b6182b7 = (0, $3Sbms$styledcomponents).b
10888
11077
 
10889
11078
  const $df41bfe6da05853a$var$EndView = ()=>{
10890
11079
  const { t: t } = (0, $3Sbms$useTranslation)();
10891
- const { streamState: streamState, setStreamState: setStreamState } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11080
+ const { streamState: streamState, setStreamState: setStreamState, options: options } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
10892
11081
  const ended = streamState === "ended";
10893
11082
  const terminated = streamState === "terminated";
10894
11083
  const expired = streamState === "expired";
@@ -10897,6 +11086,13 @@ const $df41bfe6da05853a$var$EndView = ()=>{
10897
11086
  try {
10898
11087
  setStreamState("loading");
10899
11088
  await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).init();
11089
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).joinRoom();
11090
+ if (options.controls?.microphone?.enabled) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone().catch((error)=>{
11091
+ console.error("enable microphone", error);
11092
+ });
11093
+ if (options.controls?.camera?.enabled && !options.audioTiles) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo().catch((error)=>{
11094
+ console.error("enable video", error);
11095
+ });
10900
11096
  } catch (e) {
10901
11097
  console.error("init error", e);
10902
11098
  setStreamState("terminated");
@@ -13303,10 +13499,12 @@ const $205d1658394416eb$export$6e881e165967cb08 = {
13303
13499
  };
13304
13500
 
13305
13501
 
13502
+ const $448b01a7ea61a08a$var$audioLevelThreshold = 20;
13306
13503
  function $448b01a7ea61a08a$export$c74cd098b7a410cb({ mode: mode = "photo", requestedMedia: requestedMedia = "camera", permissionBlockedModalState: permissionBlockedModalState, captureThumbnail: captureThumbnail }) {
13307
13504
  const { t: t } = (0, $3Sbms$useTranslation)();
13308
13505
  const [currentMode, setMode] = (0, $3Sbms$useState)(mode);
13309
13506
  const [streaming, setStreaming] = (0, $3Sbms$useState)(false);
13507
+ const [isSpeaking, setIsSpeaking] = (0, $3Sbms$useState)(false);
13310
13508
  const [currentRequestedMedia, setRequestedMedia] = (0, $3Sbms$useState)(requestedMedia);
13311
13509
  const [startRecordTime, setStartRecordTime] = (0, $3Sbms$useState)(undefined);
13312
13510
  const [timer, setTimer] = (0, $3Sbms$useState)(0);
@@ -13322,6 +13520,8 @@ function $448b01a7ea61a08a$export$c74cd098b7a410cb({ mode: mode = "photo", reque
13322
13520
  const [flow, setFlow] = (0, $3Sbms$useState)();
13323
13521
  const updateAudioLevel = (0, $3Sbms$useCallback)((event)=>{
13324
13522
  const { audioLevel: audioLevel } = event.detail;
13523
+ if (audioLevel > $448b01a7ea61a08a$var$audioLevelThreshold) setIsSpeaking(true);
13524
+ else setIsSpeaking(false);
13325
13525
  if (timer !== 0 && streaming) setAverageAudioLevel((prev)=>((prev || 0) * (Math.floor(timer) - 1) + audioLevel) / timer);
13326
13526
  }, [
13327
13527
  timer,
@@ -13415,7 +13615,8 @@ function $448b01a7ea61a08a$export$c74cd098b7a410cb({ mode: mode = "photo", reque
13415
13615
  captureThumbnail: captureThumbnail,
13416
13616
  lastRecordingAudioLevel: averageAudioLevel || 0,
13417
13617
  flow: flow,
13418
- setFlow: setFlow
13618
+ setFlow: setFlow,
13619
+ isSpeaking: isSpeaking
13419
13620
  };
13420
13621
  }
13421
13622
 
@@ -14094,7 +14295,7 @@ const $209863c2c7a7b6c0$export$53819c0e58f98d49 = (props)=>{
14094
14295
  if (countdown === undefined) return;
14095
14296
  const t = setTimeout(()=>{
14096
14297
  if (countdown === 1) props.onFinish();
14097
- setCountdown(countdown - 1);
14298
+ else setCountdown(countdown - 1);
14098
14299
  }, 1000);
14099
14300
  return ()=>clearTimeout(t);
14100
14301
  }, [
@@ -14128,7 +14329,7 @@ const $f3d9f6a4bbe7f552$export$f9da3144ae2525a3 = (props)=>{
14128
14329
  }, {
14129
14330
  "bg-[#ff0000]": !isPhoto
14130
14331
  }, {
14131
- "w-[24px] h-[24px] border-0 !rounded-md": isStreaming && !isScreenRecordRequest
14332
+ "!w-[24px] !h-[24px] !border-0 !rounded-md": isStreaming && !isScreenRecordRequest
14132
14333
  }, {
14133
14334
  "!bg-transparent border-transparent border-b-red-700 border-l-red-700 border-[4px] duration-1000 animate-spin": isScreenRecordRequest
14134
14335
  })
@@ -14139,24 +14340,19 @@ const $f3d9f6a4bbe7f552$export$f9da3144ae2525a3 = (props)=>{
14139
14340
 
14140
14341
 
14141
14342
 
14142
-
14143
14343
  const $a180b95972399d58$var$browser = (0, $3Sbms$bowser).parse(window.navigator.userAgent);
14144
14344
  const $a180b95972399d58$export$11a6fe490bbc4873 = (props)=>{
14145
14345
  const { t: t } = (0, $3Sbms$useTranslation)();
14146
14346
  const isDesktop = $a180b95972399d58$var$browser.platform.type === "desktop";
14147
- const [currentMode, setCurrentMode] = (0, $3Sbms$useState)(props.defaultSelected);
14148
14347
  const onSelectMode = (selected)=>{
14149
- if (!props.state.streaming) {
14150
- setCurrentMode(selected);
14151
- props.onSelect(selected);
14152
- }
14348
+ if (!props.state.streaming) props.onSelect(selected);
14153
14349
  };
14154
14350
  const tabTriggerClassName = "text-sm grow shrink font-medium text-gray-100 hover:bg-[#292929] data-[state=active]:text-gray-1000 data-[state=active]:font-semibold";
14155
14351
  return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
14156
14352
  className: "flex flex-col h-[150px] w-full max-w-[500px] gap-2.5",
14157
14353
  children: [
14158
14354
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Tabs), {
14159
- value: currentMode,
14355
+ value: props.currentMode,
14160
14356
  onValueChange: (val)=>{
14161
14357
  onSelectMode(val);
14162
14358
  },
@@ -14173,6 +14369,11 @@ const $a180b95972399d58$export$11a6fe490bbc4873 = (props)=>{
14173
14369
  value: "video",
14174
14370
  children: t("misc.video")
14175
14371
  }),
14372
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$TabsTrigger), {
14373
+ className: tabTriggerClassName,
14374
+ value: "audio",
14375
+ children: t("misc.audio")
14376
+ }),
14176
14377
  isDesktop && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$TabsTrigger), {
14177
14378
  className: tabTriggerClassName,
14178
14379
  value: "screen",
@@ -14212,12 +14413,13 @@ const $a180b95972399d58$export$11a6fe490bbc4873 = (props)=>{
14212
14413
 
14213
14414
 
14214
14415
 
14416
+
14215
14417
  const $7227f0300555e42c$export$1cd1efc78cb52ca5 = ({ asset: asset, onClick: onClick, size: size = 60, className: className })=>{
14216
14418
  if (!asset) return null;
14217
14419
  return /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
14218
14420
  className: (0, $3Sbms$classnames)("cursor-pointer relative overflow-hidden rounded-lg", className),
14219
14421
  onClick: onClick,
14220
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
14422
+ children: asset.type !== "audio" ? /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
14221
14423
  className: "object-cover",
14222
14424
  style: {
14223
14425
  width: size,
@@ -14226,6 +14428,17 @@ const $7227f0300555e42c$export$1cd1efc78cb52ca5 = ({ asset: asset, onClick: onCl
14226
14428
  },
14227
14429
  src: asset.thumbnailURL || asset.objectUrl,
14228
14430
  alt: "last shot"
14431
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
14432
+ style: {
14433
+ width: size,
14434
+ height: size,
14435
+ maxWidth: size
14436
+ },
14437
+ className: "flex items-center justify-center w-full h-full bg-gray-1000",
14438
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Recording2Icon), {
14439
+ size: 24,
14440
+ className: "text-white"
14441
+ })
14229
14442
  })
14230
14443
  });
14231
14444
  };
@@ -14359,7 +14572,6 @@ const $8fe8c7100159474e$export$788cb893d96254c8 = ({ state: state, mode: mode, p
14359
14572
  const { orientation: orientation } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
14360
14573
  const device = orientation === "landscape" ? "desktop" : "mobile";
14361
14574
  const videoLength = permissionsState === "granted" ? "short" : "full";
14362
- const title = mode === "photo" ? t("recorder.photoInstructionsTitle") : t("recorder.videoInstructionsTitle");
14363
14575
  const instructionPhoto = [
14364
14576
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Trans), {
14365
14577
  i18nKey: "recorder.instructions.allowAccessOnPrompt",
@@ -14400,7 +14612,38 @@ const $8fe8c7100159474e$export$788cb893d96254c8 = ({ state: state, mode: mode, p
14400
14612
  }
14401
14613
  })
14402
14614
  ];
14403
- const instructions = mode === "photo" ? instructionPhoto : instructionVideo;
14615
+ const instructionsAudio = [
14616
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Trans), {
14617
+ i18nKey: "recorder.instructions.tapAudioButton",
14618
+ components: {
14619
+ bold: /*#__PURE__*/ (0, $3Sbms$jsx)($8fe8c7100159474e$var$Bold, {})
14620
+ }
14621
+ }),
14622
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Trans), {
14623
+ i18nKey: "recorder.instructions.speakClearly",
14624
+ components: {
14625
+ bold: /*#__PURE__*/ (0, $3Sbms$jsx)($8fe8c7100159474e$var$Bold, {})
14626
+ }
14627
+ }),
14628
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Trans), {
14629
+ i18nKey: "recorder.instructions.reviewAndSendAudios",
14630
+ components: {
14631
+ bold: /*#__PURE__*/ (0, $3Sbms$jsx)($8fe8c7100159474e$var$Bold, {})
14632
+ }
14633
+ })
14634
+ ];
14635
+ let title;
14636
+ let instructions;
14637
+ if (mode === "photo") {
14638
+ title = t("recorder.photoInstructionsTitle");
14639
+ instructions = instructionPhoto;
14640
+ } else if (mode === "audio") {
14641
+ title = t("recorder.audioInstructionsTitle");
14642
+ instructions = instructionsAudio;
14643
+ } else {
14644
+ title = t("recorder.videoInstructionsTitle");
14645
+ instructions = instructionVideo;
14646
+ }
14404
14647
  return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertDialog), {
14405
14648
  open: state.isOpen,
14406
14649
  onOpenChange: (open)=>{
@@ -14412,13 +14655,19 @@ const $8fe8c7100159474e$export$788cb893d96254c8 = ({ state: state, mode: mode, p
14412
14655
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
14413
14656
  className: "relative rounded-xl",
14414
14657
  children: [
14415
- /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
14658
+ mode !== "audio" ? /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
14416
14659
  className: "w-full rounded-[inherit]",
14417
14660
  src: `${"https://stream-assets.snapcall.io"}/animations/${device}-assist-onboarding-${mode}-${videoLength}.mp4`,
14418
14661
  playsInline: true,
14419
14662
  autoPlay: true,
14420
14663
  muted: true,
14421
14664
  loop: true
14665
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
14666
+ className: "flex items-center justify-center w-full h-[200px] rounded-[inherit] bg-blue-100 border border-blue-200",
14667
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Recording2Icon), {
14668
+ size: 64,
14669
+ className: "text-blue-700"
14670
+ })
14422
14671
  }),
14423
14672
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
14424
14673
  className: "absolute inset-0 ring-2 ring-inset ring-white/20 rounded-[inherit]"
@@ -14761,8 +15010,9 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14761
15010
  const skipOnboarding = options.recorder?.skipOnboarding;
14762
15011
  const getUserMediaMutation = (0, $d775b8f941514ed9$export$d791e41b9a4de1f2)({
14763
15012
  audio: true,
14764
- video: true
15013
+ video: recorderState.mode !== "audio"
14765
15014
  });
15015
+ const [isMediaLoading, setMediaLoading] = (0, $3Sbms$useState)(true);
14766
15016
  const [countdownVisible, setCountdownVisible] = (0, $3Sbms$useState)(false);
14767
15017
  const videoElementRef = (0, $3Sbms$useRef)(null);
14768
15018
  const isDesktop = $c9e5583d5dd9328d$var$browser.platform.type === "desktop";
@@ -14771,6 +15021,7 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14771
15021
  });
14772
15022
  const [isInstructionVideoDisplayed, setInstructionVideoDisplayed] = (0, $3Sbms$useState)(skipOnboarding);
14773
15023
  const [isInstructionPhotoDisplayed, setInstructionPhotoDisplayed] = (0, $3Sbms$useState)(skipOnboarding);
15024
+ const [isInstructionAudioDisplayed, setInstructionAudioDisplayed] = (0, $3Sbms$useState)(skipOnboarding);
14774
15025
  const qrCodeModalState = (0, $3Sbms$useOverlayTriggerState)({
14775
15026
  defaultOpen: isDesktop
14776
15027
  });
@@ -14783,7 +15034,8 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14783
15034
  dismissToast();
14784
15035
  recorderState.setStreaming(false);
14785
15036
  }, [
14786
- recorderState
15037
+ recorderState,
15038
+ dismissToast
14787
15039
  ]);
14788
15040
  const onPhotoCapture = async (videoElement)=>{
14789
15041
  const timestamp = Date.now();
@@ -14808,11 +15060,11 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14808
15060
  onSettled: ()=>undefined,
14809
15061
  onSuccess: async ()=>{
14810
15062
  instructionModalState.close();
14811
- const { deviceState: deviceState } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
14812
- getUserMediaMutation.reset();
14813
15063
  try {
15064
+ const { deviceState: deviceState } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
15065
+ getUserMediaMutation.reset();
14814
15066
  if (!deviceState.microphone.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone();
14815
- if (!deviceState.camera.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo({
15067
+ if (!deviceState.camera.enabled && recorderState.mode !== "audio") await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo({
14816
15068
  resolution: "vga",
14817
15069
  frameRate: 20,
14818
15070
  facingMode: "environment"
@@ -14820,11 +15072,12 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14820
15072
  } catch (e) {
14821
15073
  console.error("failed enable media", e);
14822
15074
  }
15075
+ setMediaLoading(false);
14823
15076
  }
14824
15077
  }), [
14825
15078
  getUserMediaMutation,
14826
15079
  instructionModalState,
14827
- recorderState.permissionBlockedModalState
15080
+ recorderState
14828
15081
  ]);
14829
15082
  (0, $3Sbms$useEffect)(()=>{
14830
15083
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("recordStopped", exitStreaming);
@@ -14842,7 +15095,9 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14842
15095
  isDesktop,
14843
15096
  getUserMediaMutationOptions
14844
15097
  ]);
14845
- const onSwitchModalClick = isAgent ? ()=>getUserMediaMutation.mutate(undefined, getUserMediaMutationOptions) : instructionModalState.open;
15098
+ const onSwitchModalClick = isAgent ? ()=>{
15099
+ getUserMediaMutation.mutate(undefined, getUserMediaMutationOptions);
15100
+ } : instructionModalState.open;
14846
15101
  const showReminderToast = ()=>{
14847
15102
  toast({
14848
15103
  title: t("recorder.audioLevelToast.rememberSpeaking"),
@@ -14909,7 +15164,7 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14909
15164
  dismissToast();
14910
15165
  recorderState.setStartRecordTime(Date.now());
14911
15166
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).startRecord().then(()=>{
14912
- if (videoElementRef.current) recorderState.captureThumbnail(videoElementRef.current);
15167
+ if (videoElementRef.current && recorderState.mode !== "audio") recorderState.captureThumbnail(videoElementRef.current);
14913
15168
  });
14914
15169
  }
14915
15170
  }),
@@ -14922,7 +15177,7 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14922
15177
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
14923
15178
  className: "relative w-full h-full",
14924
15179
  children: [
14925
- (recorderState.mode === "video" || recorderState.streaming) && /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
15180
+ (recorderState.mode === "video" || recorderState.mode === "audio" || recorderState.streaming) && /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
14926
15181
  className: "absolute flex gap-1 transition-all items-center z-10 top-2 left-1/2 -translate-x-1/2 text-white text-center bg-gray-1000 text-md rounded-lg font-medium py-2.5 pr-3.5 pl-2.5",
14927
15182
  children: [
14928
15183
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Player), {
@@ -14937,7 +15192,27 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14937
15192
  })
14938
15193
  ]
14939
15194
  }),
14940
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $7dc8075008cdffc1$export$287f8fcc69caf433), {
15195
+ recorderState.mode === "audio" ? /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
15196
+ className: "flex items-center justify-center w-full h-full object-cover rounded-[8px] bg-[#1C1C1C] border-2 border-[#292929]",
15197
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
15198
+ className: "flex items-center justify-center w-[40px] h-[40px]",
15199
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6ff24797527d6397$export$a7844d10127ab172), {
15200
+ size: 40,
15201
+ backgroundClassName: (0, $3Sbms$classnames)({
15202
+ "text-blue-700": recorderState.isSpeaking,
15203
+ "text-gray-800": !recorderState.isSpeaking
15204
+ }),
15205
+ icon: recorderState.isSpeaking ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Player), {
15206
+ src: (0, $205d1658394416eb$export$6e881e165967cb08),
15207
+ autoplay: recorderState.isSpeaking,
15208
+ loop: true,
15209
+ className: "w-10 h-10"
15210
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DotsHorizontalIcon), {
15211
+ size: 30
15212
+ })
15213
+ })
15214
+ })
15215
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $7dc8075008cdffc1$export$287f8fcc69caf433), {
14941
15216
  ref: videoElementRef
14942
15217
  }),
14943
15218
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Toaster), {
@@ -14953,22 +15228,41 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14953
15228
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
14954
15229
  className: "z-10 flex justify-center",
14955
15230
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a180b95972399d58$export$11a6fe490bbc4873), {
14956
- defaultSelected: recorderState.mode,
15231
+ currentMode: recorderState.mode,
14957
15232
  state: recorderState,
14958
15233
  onSelect: async (mode)=>{
14959
- if (mode === "screen") {
14960
- await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableVideo();
14961
- recorderState.setRequestedMedia(mode);
14962
- return;
14963
- }
14964
- recorderState.setMode(mode);
14965
- if (mode === "photo" && !isInstructionPhotoDisplayed && !isAgent) {
14966
- setInstructionPhotoDisplayed(true);
14967
- instructionModalState.open();
14968
- }
14969
- if (mode === "video" && !isInstructionVideoDisplayed && !isAgent) {
14970
- setInstructionVideoDisplayed(true);
14971
- instructionModalState.open();
15234
+ if (isMediaLoading) return;
15235
+ setMediaLoading(true);
15236
+ try {
15237
+ if (mode === "screen") {
15238
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableVideo();
15239
+ recorderState.setRequestedMedia(mode);
15240
+ return;
15241
+ }
15242
+ recorderState.setMode(mode);
15243
+ if (mode === "audio") {
15244
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableVideo();
15245
+ recorderState.setRequestedMedia("microphone");
15246
+ }
15247
+ if (mode === "photo" && !isInstructionPhotoDisplayed && !isAgent) {
15248
+ setInstructionPhotoDisplayed(true);
15249
+ instructionModalState.open();
15250
+ }
15251
+ if (mode === "video" && !isInstructionVideoDisplayed && !isAgent) {
15252
+ setInstructionVideoDisplayed(true);
15253
+ instructionModalState.open();
15254
+ }
15255
+ if (mode === "audio" && !isInstructionAudioDisplayed && !isAgent) {
15256
+ setInstructionAudioDisplayed(true);
15257
+ instructionModalState.open();
15258
+ }
15259
+ const { deviceState: deviceState } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
15260
+ if ((mode === "photo" || mode === "video") && !deviceState.camera.enabled) {
15261
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo();
15262
+ recorderState.setRequestedMedia("camera");
15263
+ }
15264
+ } catch (error) {} finally{
15265
+ setMediaLoading(false);
14972
15266
  }
14973
15267
  },
14974
15268
  thumbnail: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $7227f0300555e42c$export$1cd1efc78cb52ca5), {
@@ -14976,9 +15270,9 @@ const $c9e5583d5dd9328d$export$5b8e641151f8011d = ({ recorderState: recorderStat
14976
15270
  asset: recorderState.assets[recorderState.assets.length - 1],
14977
15271
  onClick: recorderState.assetsPopupState.open
14978
15272
  }),
14979
- onSwitch: ()=>{
15273
+ onSwitch: recorderState.mode !== "audio" ? ()=>{
14980
15274
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).rotateVideo();
14981
- },
15275
+ } : undefined,
14982
15276
  onCapturePress: ()=>{
14983
15277
  if (recorderState.mode === "photo" && videoElementRef.current) {
14984
15278
  onPhotoCapture(videoElementRef.current);
@@ -15182,7 +15476,7 @@ const $a3830e399ecc7fc4$export$2d78fbe400238869 = ({ recorderState: recorderStat
15182
15476
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
15183
15477
  className: "z-10 flex justify-center",
15184
15478
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a180b95972399d58$export$11a6fe490bbc4873), {
15185
- defaultSelected: "screen",
15479
+ currentMode: "screen",
15186
15480
  state: recorderState,
15187
15481
  screenRecordingState: state,
15188
15482
  onSelect: async (mode)=>{
@@ -15192,6 +15486,11 @@ const $a3830e399ecc7fc4$export$2d78fbe400238869 = ({ recorderState: recorderStat
15192
15486
  recorderState.setRequestedMedia("camera");
15193
15487
  return;
15194
15488
  }
15489
+ if (mode === "audio") {
15490
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableScreenshare();
15491
+ recorderState.setMode(mode);
15492
+ recorderState.setRequestedMedia("microphone");
15493
+ }
15195
15494
  },
15196
15495
  thumbnail: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $7227f0300555e42c$export$1cd1efc78cb52ca5), {
15197
15496
  size: 48,
@@ -15372,6 +15671,11 @@ const $c22caa553a50352e$export$f56b3b5841ad32ae = ({ asset: asset, state: state
15372
15671
  autoPlay: true,
15373
15672
  controls: true,
15374
15673
  className: "flex-1 rounded-[10px] min-w-full max-h-[90%] max-w-[90%] pb-[9px]"
15674
+ }),
15675
+ asset.type === "audio" && /*#__PURE__*/ (0, $3Sbms$jsx)("audio", {
15676
+ src: asset.objectUrl,
15677
+ controls: true,
15678
+ className: "text-center w-full sm:w-1/2"
15375
15679
  })
15376
15680
  ]
15377
15681
  }),
@@ -15447,6 +15751,10 @@ const $d55df9ccf8ad2080$export$c9169049516d8bcf = ({ asset: asset, index: index,
15447
15751
  const confirmRemovalModalState = (0, $3Sbms$useOverlayTriggerState)({});
15448
15752
  const previewAssetModalProps = (0, $3Sbms$useOverlayTriggerState)({});
15449
15753
  const assetMediaLength = asset.timestamp && asset.startRecordingTimestamp && (asset.timestamp - asset.startRecordingTimestamp) / 1000;
15754
+ let assetTypeDisplayName;
15755
+ if (asset.type === "photo") assetTypeDisplayName = t("misc.screenshot");
15756
+ else if (asset.type === "audio") assetTypeDisplayName = t("misc.audio");
15757
+ else assetTypeDisplayName = t("misc.video");
15450
15758
  return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
15451
15759
  className: "flex flex-col w-full gap-2",
15452
15760
  children: [
@@ -15476,11 +15784,10 @@ const $d55df9ccf8ad2080$export$c9169049516d8bcf = ({ asset: asset, index: index,
15476
15784
  /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
15477
15785
  className: "w-full font-medium truncate text-md text-gray-1000",
15478
15786
  children: [
15479
- asset.type === "photo" ? t("misc.screenshot") : t("misc.video"),
15787
+ assetTypeDisplayName,
15480
15788
  " ",
15481
15789
  index + 1,
15482
- " \xb7",
15483
- " ",
15790
+ " \xb7 ",
15484
15791
  (0, $1e6ffcfc059a8789$export$3ae94a2503e890a1)(new Date(asset.timestamp))
15485
15792
  ]
15486
15793
  }),
@@ -15800,7 +16107,7 @@ const $b76354b532370976$export$336a011955157f9a = ()=>{
15800
16107
  recorderState.setAssets([
15801
16108
  ...recorderState.assets,
15802
16109
  {
15803
- type: "video",
16110
+ type: recorderState.mode,
15804
16111
  timestamp: Date.now(),
15805
16112
  startRecordingTimestamp: recorderState.startRecordTime,
15806
16113
  objectUrl: url,
@@ -15852,7 +16159,7 @@ const $b76354b532370976$export$336a011955157f9a = ()=>{
15852
16159
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $b4057e63640314b7$export$aa00db7a33d4c484), {
15853
16160
  className: "shrink-0"
15854
16161
  }),
15855
- recorderState.requestedMedia === "camera" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c9e5583d5dd9328d$export$5b8e641151f8011d), {
16162
+ (recorderState.requestedMedia === "camera" || recorderState.requestedMedia === "microphone") && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c9e5583d5dd9328d$export$5b8e641151f8011d), {
15856
16163
  recorderState: recorderState
15857
16164
  }),
15858
16165
  recorderState.requestedMedia === "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a3830e399ecc7fc4$export$2d78fbe400238869), {
@@ -15934,753 +16241,1258 @@ const $91d20ee7d2ade85c$export$669f6ea7d267feaf = ()=>{
15934
16241
 
15935
16242
 
15936
16243
 
15937
- const $26ed036cbc17809a$var$currentTheme = (0, $52580db2e49cdd90$export$3bfd0d5209a8006a)();
15938
- const $26ed036cbc17809a$var$currentLanguage = (0, $a3e657fb86ae23f3$export$604ba5624273df44)();
15939
- const $26ed036cbc17809a$var$queryClient = new (0, $3Sbms$QueryClient)();
15940
- let $26ed036cbc17809a$var$timestampCriticalError = -1;
15941
- const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
16244
+
16245
+
16246
+
16247
+
16248
+
16249
+
16250
+
16251
+
16252
+
16253
+ const $7f5b5a40ab7d19c2$export$9ea2b4f70e201d7f = ()=>{
16254
+ return /*#__PURE__*/ (0, $3Sbms$jsxs)("svg", {
16255
+ width: "112",
16256
+ height: "24",
16257
+ viewBox: "0 0 635 136",
16258
+ fill: "none",
16259
+ xmlns: "http://www.w3.org/2000/svg",
16260
+ children: [
16261
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16262
+ fillRule: "evenodd",
16263
+ clipRule: "evenodd",
16264
+ d: "M0 68C0 16.943 10.943 6 62 6C113.057 6 124 16.943 124 68C124 119.057 113.057 130 62 130C10.943 130 0 119.057 0 68ZM75.3269 97.0277C75.3269 100.889 78.3163 104.12 81.7719 102.998C85.0672 101.929 88.0982 100.045 90.5849 97.4664C94.6315 93.2704 96.9049 87.5796 96.9049 81.6457C96.9049 75.7117 94.6315 70.0209 90.5849 65.825C88.0982 63.2466 85.0672 61.3626 81.7719 60.2931C78.3163 59.1716 75.3269 62.4022 75.3269 66.2636V97.0277ZM53.9744 39.5401C52.8529 36.0845 56.0835 33.0951 59.945 33.0951L90.709 33.0951C94.5705 33.0951 97.801 36.0845 96.6796 39.5401C95.6101 42.8354 93.726 45.8665 91.1477 48.3531C86.9518 52.3998 81.2609 54.6731 75.327 54.6731C69.3931 54.6731 63.7022 52.3998 59.5063 48.3531C56.928 45.8665 55.0439 42.8354 53.9744 39.5401ZM48.3543 39.2911C48.3543 35.4297 45.3649 32.1991 41.9093 33.3206C38.614 34.3901 35.583 36.2741 33.0963 38.8524C29.0497 43.0484 26.7763 48.7392 26.7763 54.6731C26.7763 60.6071 29.0497 66.2979 33.0963 70.4938C35.583 73.0722 38.614 74.9562 41.9093 76.0257C45.3649 77.1472 48.3543 73.9166 48.3543 70.0552V39.2911ZM69.7073 96.7787C70.8288 100.234 67.5982 103.224 63.7368 103.224H32.9727C29.1113 103.224 25.8807 100.234 27.0022 96.7787C28.0717 93.4834 29.9557 90.4523 32.5341 87.9657C36.73 83.919 42.4208 81.6456 48.3548 81.6456C54.2887 81.6456 59.9795 83.919 64.1754 87.9657C66.7538 90.4523 68.6378 93.4834 69.7073 96.7787Z",
16265
+ fill: "black"
16266
+ }),
16267
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16268
+ d: "M206.518 27C206.845 27.0453 207.171 27.113 207.501 27.1324C212.045 27.4052 216.502 28.0998 220.792 29.7028C225.535 31.4757 229.663 34.2131 233.367 37.6249C233.979 38.1885 234.446 38.8579 234.581 39.6972C234.798 41.0461 234.356 42.1574 233.281 42.9974C232.885 43.307 232.451 43.5661 232.032 43.8454C230.117 45.123 228.203 46.4006 226.286 47.6747C225.622 48.1152 224.928 48.4981 224.116 48.5751C222.878 48.6932 221.876 48.1901 221.014 47.3479C220.551 46.8959 220.105 46.4244 219.623 45.994C216.846 43.5128 213.563 42.0739 209.93 41.4182C206.383 40.7783 202.822 40.7711 199.266 41.3851C196.893 41.7947 194.76 42.7376 193.003 44.3946C191.123 46.1681 190.424 48.3902 190.872 50.9296C191.135 52.4174 192.017 53.5432 193.216 54.43C194.948 55.7105 196.86 56.6685 198.886 57.3502C201.904 58.3665 204.952 59.3001 208.005 60.2085C211.679 61.3018 215.384 62.2894 219.052 63.4022C222.526 64.456 225.848 65.8797 228.946 67.7973C234.361 71.1486 237.476 76.085 238.807 82.209C239.311 84.5289 239.156 86.8862 238.758 89.2169C238.144 92.813 236.835 96.1385 234.691 99.1004C232.876 101.608 230.486 103.479 227.849 105.06C224.724 106.934 221.329 108.058 217.764 108.708C212.948 109.584 208.092 109.717 203.215 109.475C199.469 109.288 195.765 108.821 192.137 107.851C184.81 105.892 178.77 101.954 174.036 96.0276C173.558 95.4295 173.13 94.7889 172.713 94.1468C171.418 92.1566 171.979 90.0605 173.66 88.8059C175.755 87.2433 177.841 85.6691 179.934 84.1035C181.163 83.1836 182.722 83.1419 183.946 84.0675C184.434 84.4361 184.895 84.8982 185.223 85.4114C188.558 90.6378 193.372 93.6933 199.341 95.0185C203.857 96.0212 208.418 96.1824 212.993 95.4518C215.302 95.0833 217.514 94.3843 219.58 93.2636C222.2 91.8435 223.53 89.6517 223.545 86.6667C223.549 85.8008 223.491 84.945 223.242 84.1071C222.899 82.9497 222.282 81.9729 221.371 81.1804C220.109 80.0835 218.656 79.3025 217.143 78.6187C214.886 77.5987 212.515 76.9106 210.149 76.2066C205.304 74.7649 200.448 73.3606 195.615 71.8807C192.078 70.7981 188.66 69.4096 185.44 67.5691C183.539 66.4815 181.732 65.2557 180.221 63.6563C177.597 60.8793 176.022 57.5567 175.292 53.8304C174.445 49.5102 175.359 45.4627 177.236 41.56C179.227 37.4183 182.292 34.2685 186.082 31.7492C190.023 29.1306 194.375 27.7248 199.061 27.2663C199.821 27.1922 200.578 27.0893 201.337 27C203.063 27 204.791 27 206.518 27Z",
16269
+ fill: "black"
16270
+ }),
16271
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16272
+ d: "M374.475 130.579C374.253 130.503 374.033 130.423 373.809 130.353C372.295 129.882 371.373 128.703 371.288 127.122C371.274 126.859 371.277 126.595 371.277 126.331C371.277 102.357 371.277 78.3833 371.281 54.4091C371.281 53.9319 371.277 53.4417 371.376 52.9789C371.721 51.3557 373.042 50.2595 374.867 50.2077C377.144 50.1429 379.425 50.1465 381.702 50.2062C383.449 50.2523 384.718 51.3342 385.202 53.0098C385.235 53.1243 385.266 53.2395 385.314 53.4129C385.488 53.3086 385.649 53.2301 385.791 53.1257C389.096 50.6748 392.837 49.3885 396.905 48.9955C400.535 48.645 404.137 48.8523 407.702 49.629C412.512 50.6763 416.445 53.1682 419.705 56.8219C422.629 60.0998 424.482 63.9039 425.558 68.1342C426.623 72.3191 427.173 76.5594 426.983 80.876C426.767 85.7691 425.911 90.5464 423.994 95.0775C422.276 99.1379 419.54 102.447 416.085 105.153C413.546 107.142 410.608 108.304 407.474 108.949C403.425 109.783 399.345 109.974 395.248 109.305C391.834 108.747 388.697 107.508 385.895 105.459C385.779 105.374 385.663 105.289 385.541 105.212C385.506 105.19 385.452 105.194 385.302 105.168V105.933C385.302 112.646 385.302 119.359 385.302 126.072C385.302 126.335 385.304 126.6 385.296 126.863C385.239 128.665 384.169 129.993 382.421 130.44C382.31 130.468 382.21 130.531 382.105 130.577H374.477L374.475 130.579ZM398.929 96.8648C399.883 96.7835 400.845 96.7511 401.791 96.6107C405.161 96.1112 407.879 94.5542 409.768 91.6463C410.928 89.8612 411.805 87.9602 412.347 85.903C413.301 82.2781 413.408 78.6101 412.84 74.9211C412.368 71.8462 411.286 69.0022 409.472 66.4499C408.151 64.5913 406.427 63.2698 404.275 62.5356C401.296 61.52 398.255 61.4401 395.193 62.0836C392.092 62.7357 389.731 64.4315 388.122 67.1754C387.157 68.8216 386.444 70.5671 385.992 72.417C385.034 76.3384 384.982 80.2973 385.604 84.2662C386.02 86.9172 386.886 89.4235 388.299 91.7219C389.522 93.7106 391.225 95.1207 393.416 95.9413C395.193 96.6064 397.04 96.8238 398.928 96.8648H398.929Z",
16273
+ fill: "black"
16274
+ }),
16275
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16276
+ d: "M618.999 105.259C618.908 105.548 618.839 105.847 618.721 106.126C618.192 107.382 617.233 108.089 615.89 108.274C615.63 108.31 615.363 108.31 615.1 108.311C612.846 108.314 610.592 108.316 608.339 108.309C607.981 108.307 607.615 108.295 607.266 108.222C605.601 107.872 604.612 106.728 604.476 105.017C604.452 104.707 604.458 104.395 604.458 104.083C604.458 80.213 604.458 56.3432 604.46 32.4741C604.46 32.0911 604.452 31.7024 604.514 31.3274C604.812 29.5207 606.222 28.3324 608.163 28.3072C610.536 28.2762 612.91 28.2993 615.284 28.2993C615.38 28.2993 615.476 28.3014 615.571 28.3108C616.972 28.4425 618 29.1457 618.651 30.378C618.825 30.7084 618.887 31.0978 619 31.4599V105.259H618.999Z",
16277
+ fill: "black"
16278
+ }),
16279
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16280
+ d: "M431.849 68.3522C431.892 62.231 432.759 56.2553 435.069 50.5603C439.901 38.6477 448.667 31.2784 461.139 28.3078C465.836 27.1892 470.617 26.9496 475.432 27.2475C479.791 27.5175 484.045 28.2927 488.122 29.877C495.87 32.8871 501.979 37.8732 506.235 45.0524C506.536 45.5591 506.773 46.1285 506.915 46.7C507.229 47.9625 506.828 49.0494 505.796 49.8153C505.27 50.2047 504.634 50.5092 504.001 50.6783C501.386 51.3772 498.755 52.0186 496.127 52.665C494.323 53.1083 492.697 52.426 491.691 50.7899C490.732 49.2301 489.632 47.7855 488.317 46.5093C485.777 44.0461 482.76 42.4331 479.34 41.5959C474.676 40.4543 469.976 40.396 465.301 41.4743C458.869 42.9578 454.264 46.8454 451.212 52.6059C449.271 56.269 448.256 60.2257 447.838 64.3436C447.385 68.797 447.643 73.2 448.744 77.5425C449.592 80.8896 450.852 84.0653 452.924 86.8624C456.469 91.6498 461.145 94.606 467.077 95.5014C471.473 96.165 475.829 96.0441 480.107 94.7643C486.767 92.7719 491.318 88.5259 493.649 81.9491C493.769 81.6108 493.881 81.2682 494.021 80.9385C494.776 79.1671 496.143 78.3249 498.06 78.489C499.038 78.5725 500.011 78.7223 500.985 78.8482C502.673 79.067 504.359 79.2952 506.046 79.5104C506.768 79.6026 507.462 79.7732 508.08 80.169C509.149 80.8536 509.639 81.839 509.511 83.0979C509.463 83.5701 509.365 84.0523 509.195 84.4943C507.232 89.6221 504.558 94.326 500.813 98.3799C496.418 103.138 491.056 106.292 484.821 107.991C479.752 109.373 474.581 109.763 469.355 109.522C464.681 109.307 460.103 108.522 455.74 106.791C445.169 102.595 438.047 95.0861 434.366 84.3309C433.024 80.4102 432.277 76.3664 432.027 72.2326C431.949 70.9413 431.907 69.6478 431.85 68.355L431.849 68.3522Z",
16281
+ fill: "black"
16282
+ }),
16283
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16284
+ d: "M553.976 102.807C553.473 103.359 553.074 103.877 552.596 104.308C550.117 106.542 547.178 107.898 543.969 108.698C540.381 109.592 536.732 109.829 533.046 109.63C530.618 109.499 528.23 109.157 525.905 108.428C522.631 107.403 519.817 105.632 517.457 103.155C515.258 100.848 514.006 98.038 513.377 94.9587C512.01 88.2668 514.956 80.2001 522.426 76.2174C525.011 74.839 527.767 73.9868 530.639 73.47C534.3 72.8106 537.996 72.4464 541.701 72.1463C544.615 71.9102 547.523 71.5971 550.434 71.3178C550.554 71.3063 550.672 71.2919 550.791 71.2732C551.129 71.2199 551.303 71.0299 551.26 70.6801C551.203 70.205 551.157 69.727 551.07 69.257C550.8 67.7814 550.289 66.3987 549.478 65.1261C548.364 63.377 546.811 62.257 544.776 61.851C541.013 61.1003 537.38 61.471 533.926 63.2035C532.097 64.1206 530.839 65.5961 529.903 67.3805C529.647 67.8671 529.399 68.3681 529.067 68.8014C528.108 70.0531 526.816 70.4886 525.3 70.0934C523.052 69.5075 520.817 68.8647 518.579 68.24C518.326 68.1694 518.079 68.0701 517.839 67.9635C516.206 67.2445 515.189 65.6357 515.947 63.6527C516.331 62.6507 516.794 61.6653 517.339 60.7418C520.395 55.5651 524.915 52.2331 530.605 50.4617C534.609 49.215 538.734 48.8955 542.908 49.102C546.292 49.2698 549.561 49.9485 552.67 51.3111C555.285 52.4563 557.668 53.9657 559.691 55.9926C562.447 58.7531 563.964 62.1332 564.603 65.9474C564.986 68.232 564.917 70.5368 564.948 72.8344C565.025 78.4675 565.048 84.1014 565.105 89.7345C565.119 91.0819 565.325 92.4027 565.72 93.6977C565.974 94.5297 566.469 95.138 567.224 95.5346C567.668 95.7678 568.141 95.9441 568.593 96.1644C569.107 96.4149 569.642 96.6402 570.113 96.9583C571.265 97.7372 571.71 99.1048 571.288 100.446C571.188 100.764 571.052 101.074 570.903 101.373C569.913 103.343 568.924 105.313 567.92 107.275C566.981 109.109 565.454 109.794 563.432 109.335C561.452 108.885 559.576 108.193 557.88 107.053C556.488 106.116 555.337 104.946 554.44 103.526C554.327 103.345 554.209 103.167 553.977 102.807H553.976ZM551.086 83.1563C550.907 83.1563 550.813 83.1483 550.722 83.1577C549.125 83.3233 547.528 83.5068 545.929 83.6536C542.515 83.9668 539.114 84.3763 535.736 84.9737C533.356 85.3948 531.083 86.0844 528.991 87.3318C527.179 88.4122 526.121 89.9878 526.563 92.7655C526.783 94.1483 527.53 95.148 528.771 95.7656C529.284 96.0204 529.822 96.2393 530.369 96.4106C533.743 97.4679 537.149 97.8804 540.629 96.9094C545.107 95.6598 548.267 92.9311 550.003 88.6073C550.613 87.0878 550.947 85.492 551.115 83.8638C551.138 83.6414 551.098 83.4125 551.087 83.1563H551.086Z",
16285
+ fill: "black"
16286
+ }),
16287
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16288
+ d: "M347.494 103.01C346.355 103.946 345.329 104.891 344.203 105.695C341.825 107.393 339.125 108.387 336.28 108.952C331.359 109.932 326.422 109.995 321.49 109.003C318.059 108.312 315.015 106.823 312.332 104.575C309.194 101.947 307.413 98.5412 306.699 94.5751C305.502 87.9256 308.528 80.0878 315.848 76.2038C318.437 74.8304 321.193 73.9825 324.066 73.4671C327.752 72.8056 331.471 72.4421 335.2 72.1412C338.09 71.908 340.974 71.5935 343.861 71.3156C343.908 71.3113 343.957 71.3084 344.004 71.3005C344.637 71.199 344.739 71.0932 344.659 70.4468C344.477 68.9648 344.143 67.5209 343.463 66.1785C343.269 65.7948 343.049 65.4219 342.819 65.057C341.711 63.2971 340.119 62.2289 338.087 61.833C334.396 61.1147 330.832 61.4825 327.434 63.1445C325.573 64.0543 324.277 65.5263 323.328 67.3359C323.117 67.739 322.92 68.1528 322.669 68.53C321.694 69.9984 320.25 70.5231 318.542 70.0517C316.417 69.4658 314.288 68.8914 312.171 68.2817C311.647 68.1305 311.122 67.9196 310.658 67.6382C309.371 66.8587 308.815 65.4939 309.236 64.045C309.468 63.2467 309.805 62.4657 310.191 61.7272C313.017 56.3201 317.448 52.7766 323.135 50.7388C325.792 49.7866 328.559 49.3504 331.369 49.1481C333.792 48.9732 336.21 48.9919 338.621 49.3021C343.972 49.9903 348.754 51.9611 352.738 55.6644C355.404 58.1427 356.988 61.2421 357.773 64.7713C358.166 66.5347 358.305 68.3249 358.322 70.1258C358.383 76.5982 358.439 83.0706 358.492 89.5437C358.503 90.8948 358.707 92.2113 359.057 93.5156C359.324 94.5132 359.913 95.2143 360.828 95.6541C361.238 95.8513 361.675 95.9909 362.078 96.2004C362.649 96.4969 363.256 96.764 363.744 97.1685C364.765 98.0128 365.064 99.1314 364.691 100.408C364.598 100.727 364.462 101.038 364.312 101.337C363.325 103.308 362.328 105.274 361.334 107.241C361.301 107.305 361.269 107.369 361.234 107.433C360.385 108.998 358.971 109.749 357.219 109.414C354.419 108.877 351.829 107.831 349.744 105.818C349.026 105.125 348.453 104.282 347.821 103.502C347.689 103.339 347.587 103.153 347.495 103.012L347.494 103.01ZM344.514 83.1771C344.269 83.1771 344.129 83.1649 343.993 83.1793C342.418 83.3376 340.846 83.5147 339.27 83.658C335.592 83.9934 331.929 84.4317 328.3 85.1321C326.092 85.5582 324.002 86.296 322.097 87.5182C321.022 88.2085 320.25 89.1212 319.986 90.3909C319.794 91.3159 319.813 92.248 320.042 93.1715C320.297 94.2008 320.862 95.0199 321.781 95.5353C322.404 95.8844 323.07 96.181 323.749 96.3991C326.924 97.4183 330.151 97.8581 333.449 97.0533C338.608 95.7937 342.115 92.7007 343.733 87.6032C344.1 86.4457 344.268 85.2235 344.505 84.0265C344.558 83.7623 344.513 83.4787 344.513 83.1764L344.514 83.1771Z",
16289
+ fill: "black"
16290
+ }),
16291
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16292
+ d: "M261.068 54.62C261.364 54.389 261.658 54.1557 261.955 53.9261C264.88 51.6725 268.103 50.0443 271.727 49.2381C273.645 48.8113 275.58 48.7609 277.522 48.9099C282.258 49.2741 286.574 50.8504 290.565 53.4136C293.888 55.5478 295.993 58.553 297.191 62.257C298.023 64.8317 298.386 67.4849 298.468 70.1777C298.517 71.7828 298.494 73.3894 298.494 74.996C298.496 84.7053 298.497 94.4146 298.49 104.123C298.49 104.599 298.47 105.088 298.363 105.548C297.977 107.205 296.733 108.24 295.027 108.293C293.541 108.338 292.053 108.31 290.566 108.312C289.655 108.314 288.744 108.318 287.832 108.31C287.498 108.307 287.157 108.302 286.829 108.243C285.1 107.929 284.054 106.736 283.943 104.971C283.924 104.66 283.929 104.348 283.929 104.037C283.929 94.0641 283.937 84.0913 283.923 74.1178C283.92 71.9419 283.536 69.8271 282.653 67.8211C282.066 66.4866 281.234 65.3226 280.166 64.3315C278.756 63.0222 277.067 62.3463 275.158 62.2506C271.579 62.0713 268.518 63.3547 265.95 65.7668C263.29 68.2659 261.803 71.4143 261.211 75.0003C261.007 76.2326 260.916 77.4692 260.919 78.7202C260.932 87.1828 260.927 95.6455 260.921 104.108C260.921 104.537 260.914 104.976 260.83 105.394C260.475 107.159 259.198 108.25 257.402 108.3C256.084 108.337 254.764 108.312 253.445 108.313C252.366 108.314 251.286 108.322 250.207 108.308C249.826 108.303 249.436 108.283 249.066 108.198C247.443 107.824 246.514 106.727 246.381 105.063C246.358 104.776 246.36 104.487 246.36 104.2C246.36 87.5866 246.36 70.973 246.36 54.3594C246.36 54.2637 246.363 54.1673 246.36 54.0715C246.271 51.6624 247.99 50.2041 250.219 50.189C252.137 50.176 254.056 50.1789 255.975 50.189C256.596 50.1926 257.227 50.1825 257.837 50.2804C259.629 50.5683 260.852 51.9992 260.921 53.8182C260.93 54.0564 260.922 54.2947 260.922 54.5329L261.068 54.62H261.068Z",
16293
+ fill: "black"
16294
+ }),
16295
+ /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16296
+ d: "M577.855 68.286C577.855 56.3698 577.855 44.4543 577.858 32.5381C577.858 32.1789 577.852 31.8154 577.904 31.4627C578.178 29.6244 579.501 28.3626 581.362 28.3187C583.88 28.2597 586.4 28.2589 588.917 28.3208C590.809 28.3676 592.243 29.8173 592.411 31.6952C592.442 32.0285 592.445 32.3654 592.445 32.7008C592.446 56.4368 592.447 80.1727 592.442 103.908C592.442 104.433 592.434 104.97 592.333 105.482C592.01 107.11 590.721 108.225 589.041 108.287C587.579 108.341 586.115 108.309 584.652 108.312C583.692 108.314 582.733 108.319 581.773 108.308C581.415 108.304 581.049 108.297 580.7 108.227C578.971 107.878 577.979 106.678 577.863 104.824C577.847 104.562 577.856 104.297 577.856 104.033C577.856 92.117 577.856 80.2015 577.856 68.2853L577.855 68.286Z",
16297
+ fill: "black"
16298
+ })
16299
+ ]
16300
+ });
16301
+ };
16302
+
16303
+
16304
+
16305
+
16306
+
16307
+
16308
+
16309
+ const $095542f48ed9fed0$export$8d6498a96ae0e73f = ({ className: className, type: type, state: state, onClick: onClick })=>{
15942
16310
  const { t: t } = (0, $3Sbms$useTranslation)();
15943
- const [selfPeerId, setSelfPeerId] = (0, $3Sbms$useState)(undefined);
15944
- const streamUIContainerRef = (0, $3Sbms$useRef)(null);
15945
- const videosContainerRef = (0, $3Sbms$useRef)(null);
15946
- const remoteTilesContainerRef = (0, $3Sbms$useRef)(null);
15947
- const [streamState, setStreamState] = (0, $3Sbms$useState)(options.recorder?.enabled ? "recorder" : "loading");
15948
- const [isQuickConnectPopupVisible, setIsQuickConnectPopupVisible] = (0, $3Sbms$useState)(false);
15949
- const [isSettingsMenuVisible, setIsSettingsMenuVisible] = (0, $3Sbms$useState)(false);
15950
- const [isYoutubePopupVisible, setIsYoutubePopupVisible] = (0, $3Sbms$useState)(false);
15951
- const [isLinksharePopupVisible, setIsLinksharePopupVisible] = (0, $3Sbms$useState)(false);
15952
- const [isVirtualBackgroundPopupVisible, setIsVirtualBackgroundPopupVisible] = (0, $3Sbms$useState)(false);
15953
- const [theme, setTheme] = (0, $3Sbms$useState)($26ed036cbc17809a$var$currentTheme);
15954
- const [language, setLanguage] = (0, $3Sbms$useState)(options.language || $26ed036cbc17809a$var$currentLanguage);
15955
- const [profile, setProfile] = (0, $3Sbms$useState)({});
15956
- const [muted, setMuted] = (0, $3Sbms$useState)(true);
15957
- const [streaming, setStreaming] = (0, $3Sbms$useState)(false);
15958
- const [screensharing, setScreensharing] = (0, $3Sbms$useState)(false);
15959
- const [isAgent, setIsAgent] = (0, $3Sbms$useState)(false);
15960
- const [userInteractionTriggered, setUserInteractionTriggered] = (0, $3Sbms$useState)(false);
15961
- const [containerWidth, containerHeight] = (0, $af23c74942bdcae7$export$2b86bedf890eab8)(streamUIContainerRef.current);
15962
- const [isBlockedDevicesPopupOpen, setBlockedDevicesPopupOpen] = (0, $3Sbms$useState)(false);
15963
- const [isBlockedFeaturePopupOpen, setBlockedFeaturePopupOpen] = (0, $3Sbms$useState)(false);
15964
- const [videoRecording, setVideoRecording] = (0, $3Sbms$useState)({
15965
- requested: false,
15966
- started: false
16311
+ const iconEl = type === "camera" ? state === "on" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VideoRecorderIcon), {}) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VideoRecorderOffIcon), {}) : state === "on" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Microphone1Icon), {}) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$MicrophoneOff1Icon), {});
16312
+ const mediaLabel = type === "camera" ? t("greeting.cameraIs") : t("greeting.microphoneIs");
16313
+ const statusLabel = state === "on" ? t("greeting.on") : t("greeting.off");
16314
+ return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16315
+ onClick: onClick,
16316
+ className: (0, $3Sbms$classnames)("cursor-pointer py-1 px-2 border bg-white border-gray-200 flex justify-center items-center rounded-md gap-2", {
16317
+ "border-blue-700 text-blue-700 bg-blue-100": state === "on"
16318
+ }, {
16319
+ "text-red-700": state === "blocked"
16320
+ }, className),
16321
+ children: [
16322
+ /*#__PURE__*/ (0, $3Sbms$cloneElement)(iconEl, {
16323
+ duotone: true,
16324
+ size: 16,
16325
+ className: (0, $3Sbms$classnames)({
16326
+ "text-blue-700": state === "on"
16327
+ })
16328
+ }),
16329
+ " ",
16330
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
16331
+ className: (0, $3Sbms$classnames)("text-sm font-medium"),
16332
+ children: [
16333
+ mediaLabel,
16334
+ " ",
16335
+ statusLabel
16336
+ ]
16337
+ }),
16338
+ state === "blocked" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertCircleIcon), {
16339
+ className: "text-red-700",
16340
+ duotone: true,
16341
+ size: 16
16342
+ })
16343
+ ]
15967
16344
  });
15968
- const [isRecordingStartPopupOpen, setRecordingStartPopupOpen] = (0, $3Sbms$useState)(false);
15969
- const [permissions, setPermissions] = (0, $3Sbms$useState)([]);
15970
- const [plan, setPlan] = (0, $3Sbms$useState)(undefined);
15971
- const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? "landscape" : "portrait";
15972
- const styledTheme = theme === "dark" ? (0, $52580db2e49cdd90$export$3e936a8db52a10a0) : (0, $52580db2e49cdd90$export$f30cb9bc4f736419);
15973
- const onWebcamUpdate = (event)=>{
15974
- if (event.type === "localVideoAvailable") setStreaming(true);
15975
- else setStreaming(false);
15976
- };
15977
- const onScreenshareUpdate = (event)=>{
15978
- if (event.type === "screenshareEnabled") setScreensharing(true);
15979
- else setScreensharing(false);
15980
- };
15981
- const onMicrophoneUpdate = (event)=>{
15982
- if (event.type === "microphoneMute") setMuted(true);
15983
- else setMuted(false);
15984
- };
15985
- const onVideoRecordingStarted = ()=>{
15986
- setVideoRecording({
15987
- requested: true,
15988
- started: true
15989
- });
15990
- };
15991
- const onVideoRecordingStopped = ()=>{
15992
- setVideoRecording({
15993
- requested: false,
15994
- started: false
15995
- });
15996
- };
15997
- const onVideoRecordingRequested = (0, $3Sbms$useCallback)(()=>{
15998
- setVideoRecording({
15999
- requested: true,
16000
- started: false
16001
- });
16002
- setRecordingStartPopupOpen(true);
16003
- (0, $a5146f9062d7bf28$export$3a57e165650c636f)(t("notifications.recording"), {
16004
- duration: 10000,
16005
- icon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4731637db263b767$export$d9f09da0f8d1c822), {}),
16006
- messageStyle: {
16007
- fontWeight: 600
16008
- }
16009
- });
16010
- }, [
16011
- t
16012
- ]);
16013
- const onDefaultAudioDeviceChange = (event)=>{
16014
- const micro = event.detail.label;
16015
- (0, $a5146f9062d7bf28$export$3a57e165650c636f)(`Connected to ${micro}`, {
16016
- duration: 3000,
16017
- icon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6043ae1b48c5aa97$export$2e2bcd8739ae039), {}),
16018
- messageStyle: {
16019
- fontWeight: 600
16020
- }
16021
- });
16022
- };
16023
- const onSelfProfileUpdate = (event)=>{
16024
- const { profile: profile } = event.detail;
16025
- setProfile(profile);
16026
- };
16027
- const onCallEnd = ()=>{
16028
- (0, $15a01b611391c1e7$export$716eeec86fd18da7)();
16029
- setStreamState("ended");
16030
- setMuted(true);
16031
- setStreaming(false);
16032
- setScreensharing(false);
16033
- setUserInteractionTriggered(false);
16034
- };
16035
- const onCallTerminated = ()=>{
16036
- (0, $15a01b611391c1e7$export$716eeec86fd18da7)();
16037
- setStreamState("terminated");
16038
- };
16039
- const onInvalidRoom = ()=>{
16040
- setStreamState("expired");
16041
- };
16042
- const onAgentIdentity = (event)=>{
16043
- const { success: success, email: email, name: name, avatarUrl: avatarUrl } = event.detail;
16044
- if (success) {
16045
- setIsAgent(true);
16046
- setProfile({
16047
- email: email,
16048
- name: name,
16049
- avatarUrl: avatarUrl
16050
- });
16051
- if (email) (0, $3Sbms$hotjarbrowser).identify(null, {
16052
- email: email
16053
- });
16054
- } else (0, $3Sbms$reacthottoast)("An error occured while trying to join the room as an agent", {
16055
- className: "error"
16056
- });
16057
- };
16058
- const onCriticalError = (event)=>{
16059
- const duration = 20000;
16060
- const now = Date.now();
16061
- if (event.detail.code === "USERLIMIT") {
16062
- setStreamState("full");
16063
- return;
16064
- }
16065
- if ($26ed036cbc17809a$var$timestampCriticalError !== -1 && $26ed036cbc17809a$var$timestampCriticalError + duration > now) return;
16066
- $26ed036cbc17809a$var$timestampCriticalError = now;
16067
- (0, $a5146f9062d7bf28$export$3a57e165650c636f)(`A critical error has occurred (error ${event.detail.code}).`, {
16068
- icon: (0, $93a0377c243d965e$export$c7df1b15b59b1df2),
16069
- button: {
16070
- text: "Reload",
16071
- action: ()=>{
16072
- window.location.reload();
16073
- }
16074
- },
16075
- duration: duration
16076
- });
16077
- };
16078
- (0, $3Sbms$useEffect)(()=>{
16079
- try {
16080
- localStorage.setItem("stream_ui_theme", theme);
16081
- } catch (localStorageError) {
16082
- console.warn(localStorageError);
16083
- }
16084
- }, [
16085
- theme
16086
- ]);
16087
- (0, $3Sbms$useEffect)(()=>{
16088
- try {
16089
- localStorage.setItem("stream_ui_language", language);
16090
- (0, $384d985bb9605c35$export$2e2bcd8739ae039).changeLanguage(language);
16091
- } catch (localStorageError) {
16092
- console.warn(localStorageError);
16345
+ };
16346
+
16347
+
16348
+
16349
+
16350
+
16351
+
16352
+ const $be7ba19df23750d4$export$ef27f94e204e44a9 = ()=>{
16353
+ const { t: t } = (0, $3Sbms$useTranslation)();
16354
+ const state = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
16355
+ return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16356
+ className: "flex flex-col items-center gap-8",
16357
+ children: [
16358
+ state.company?.avatar_url && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Avatar), {
16359
+ className: "w-[54px] h-[54px]",
16360
+ name: state.company?.company_name || "",
16361
+ image: /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
16362
+ className: "object-cover bg-white",
16363
+ alt: `Avatar for ${state.company?.name}`,
16364
+ src: state.company?.avatar_url,
16365
+ referrerPolicy: "no-referrer"
16366
+ }),
16367
+ size: "xl"
16368
+ }),
16369
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16370
+ className: "flex flex-col items-center gap-2 text-center",
16371
+ children: [
16372
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16373
+ className: "text-sm font-normal text-blue-700 min-h-[20px]",
16374
+ children: t("greeting.requestACall")
16375
+ }),
16376
+ /*#__PURE__*/ (0, $3Sbms$jsx)("h2", {
16377
+ className: "text-4xl font-semibold text-gray-1000 min-h-[44px]",
16378
+ children: t("greeting.sideTitle")
16379
+ }),
16380
+ /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
16381
+ className: "font-normal text-gray-700 text-md",
16382
+ children: t("greeting.sideDescription")
16383
+ })
16384
+ ]
16385
+ })
16386
+ ]
16387
+ });
16388
+ };
16389
+
16390
+
16391
+
16392
+
16393
+
16394
+ const $532c9d26de079077$var$StepContainer = ({ step: step, text: text })=>{
16395
+ return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16396
+ className: "flex items-center gap-1.5",
16397
+ children: [
16398
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16399
+ className: "flex justify-center items-center w-6 h-6 bg-gray-300 rounded-full font-semibold text-xs",
16400
+ children: step
16401
+ }),
16402
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
16403
+ className: "text-sm",
16404
+ children: text
16405
+ })
16406
+ ]
16407
+ });
16408
+ };
16409
+ const $532c9d26de079077$export$954efd801bad2f4e = (props)=>{
16410
+ const { t: t } = (0, $3Sbms$useTranslation)();
16411
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Dialog), {
16412
+ ...props,
16413
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$DialogContent), {
16414
+ children: [
16415
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DialogHeader), {
16416
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$DialogTitle), {
16417
+ className: "flex items-center gap-2 max-w-[315px]",
16418
+ children: [
16419
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Lock1Icon), {
16420
+ size: 18,
16421
+ className: "text-blue-700",
16422
+ duotone: true
16423
+ }),
16424
+ t("greeting.mediaDenied")
16425
+ ]
16426
+ })
16427
+ }),
16428
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16429
+ className: "flex flex-col gap-4",
16430
+ children: [
16431
+ /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
16432
+ src: "https://cdn.snapcall.io/stream/permissions.png",
16433
+ alt: ""
16434
+ }),
16435
+ /*#__PURE__*/ (0, $3Sbms$jsx)($532c9d26de079077$var$StepContainer, {
16436
+ step: 1,
16437
+ text: /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
16438
+ className: "flex items-center",
16439
+ children: [
16440
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
16441
+ i18nKey: "greeting.clickOnLock",
16442
+ children: [
16443
+ "Click on the ",
16444
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Lock3Icon), {
16445
+ size: 16,
16446
+ className: "text-gray-1000"
16447
+ }),
16448
+ " lock icon in your browser's bar."
16449
+ ]
16450
+ }),
16451
+ ","
16452
+ ]
16453
+ })
16454
+ }),
16455
+ /*#__PURE__*/ (0, $3Sbms$jsx)($532c9d26de079077$var$StepContainer, {
16456
+ step: 2,
16457
+ text: "Turn on microphone and camera."
16458
+ })
16459
+ ]
16460
+ })
16461
+ ]
16462
+ })
16463
+ });
16464
+ };
16465
+
16466
+
16467
+
16468
+
16469
+
16470
+
16471
+
16472
+ const $846ede05bc799e5a$export$9d55f406abb38536 = (props)=>{
16473
+ const { t: t } = (0, $3Sbms$useTranslation)();
16474
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Dialog), {
16475
+ ...props,
16476
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$DialogContent), {
16477
+ children: [
16478
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DialogHeader), {
16479
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DialogTitle), {
16480
+ className: "flex items-center gap-2 max-w-[315px]",
16481
+ children: t("greeting.scheduleACall")
16482
+ })
16483
+ }),
16484
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DialogDescription), {
16485
+ children: t("greeting.canceledCallRequest")
16486
+ }),
16487
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16488
+ className: "flex items-end justify-end gap-2",
16489
+ children: [
16490
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Button), {
16491
+ variant: "outline",
16492
+ onClick: ()=>props.onOpenChange?.(false),
16493
+ children: t("misc.cancel")
16494
+ }),
16495
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Button), {
16496
+ onClick: ()=>{
16497
+ const urlParams = new URLSearchParams(window.location.href);
16498
+ const customerEmail = urlParams.get("customerEmail");
16499
+ window.location.assign(`${"https://app.snapcall.io"}/${(0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token}/schedule/?customerEmail=${customerEmail}`);
16500
+ },
16501
+ children: t("misc.proceed")
16502
+ })
16503
+ ]
16504
+ })
16505
+ ]
16506
+ })
16507
+ });
16508
+ };
16509
+
16510
+
16511
+
16512
+
16513
+
16514
+ const $b9bf9a4ef59eee73$export$4b510b9db1095d90 = (props)=>{
16515
+ const { t: t } = (0, $3Sbms$useTranslation)();
16516
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Dialog), {
16517
+ ...props,
16518
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$DialogContent), {
16519
+ children: [
16520
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$DialogHeader), {
16521
+ children: [
16522
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DialogTitle), {
16523
+ className: "flex items-center gap-2 max-w-[315px]",
16524
+ children: t("greeting.leaveMessage")
16525
+ }),
16526
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DialogDescription), {
16527
+ children: t("greeting.cantWaitLeaveMessage")
16528
+ })
16529
+ ]
16530
+ }),
16531
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16532
+ className: "flex flex-col justify-center gap-4 w-full",
16533
+ children: [
16534
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
16535
+ variant: "outline",
16536
+ onClick: ()=>{
16537
+ window.location.assign(`${window.location}&recorder=1`);
16538
+ },
16539
+ children: [
16540
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VideoRecorderIcon), {
16541
+ size: "18",
16542
+ className: "text-blue-700"
16543
+ }),
16544
+ t("greeting.recordVideo")
16545
+ ]
16546
+ }),
16547
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
16548
+ variant: "outline",
16549
+ onClick: ()=>{
16550
+ window.location.assign(`${window.location}&recorder=1&voice=1`);
16551
+ },
16552
+ children: [
16553
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VoicemailIcon), {
16554
+ size: "18",
16555
+ className: "text-blue-700"
16556
+ }),
16557
+ t("greeting.recordVoice")
16558
+ ]
16559
+ })
16560
+ ]
16561
+ })
16562
+ ]
16563
+ })
16564
+ });
16565
+ };
16566
+
16567
+
16568
+ const $8f7af36c0532a6c4$var$GreetingView = ()=>{
16569
+ const { t: t } = (0, $3Sbms$useTranslation)();
16570
+ const { setStreamState: setStreamState } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
16571
+ const formContext = (0, $3Sbms$useForm)({
16572
+ defaultValues: {
16573
+ name: ""
16093
16574
  }
16094
- }, [
16095
- language
16096
- ]);
16097
- (0, $3Sbms$useEffect)(()=>{
16098
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onWebcamUpdate);
16099
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoUnavailable", onWebcamUpdate);
16100
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareUpdate);
16101
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("screenshareDisabled", onScreenshareUpdate);
16102
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneEnabled", onMicrophoneUpdate);
16103
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneMute", onMicrophoneUpdate);
16104
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneUnmute", onMicrophoneUpdate);
16105
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
16106
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("selfProfileUpdate", onSelfProfileUpdate);
16107
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("terminateRoom", onCallTerminated);
16108
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("leaveRoom", onCallEnd);
16109
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("invalidRoom", onInvalidRoom);
16110
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("agentIdentity", onAgentIdentity);
16111
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("criticalError", onCriticalError);
16112
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("videoRecordingStarted", onVideoRecordingStarted);
16113
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("videoRecordingStopped", onVideoRecordingStopped);
16114
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("videoRecordingRequested", onVideoRecordingRequested);
16115
- return ()=>{
16116
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onWebcamUpdate);
16117
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoUnavailable", onWebcamUpdate);
16118
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareUpdate);
16119
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("screenshareDisabled", onScreenshareUpdate);
16120
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneEnabled", onMicrophoneUpdate);
16121
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneMute", onMicrophoneUpdate);
16122
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneUnmute", onMicrophoneUpdate);
16123
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
16124
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("selfProfileUpdate", onSelfProfileUpdate);
16125
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("terminateRoom", onCallTerminated);
16126
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("leaveRoom", onCallEnd);
16127
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("invalidRoom", onInvalidRoom);
16128
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("agentIdentity", onAgentIdentity);
16129
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("criticalError", onCriticalError);
16130
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("videoRecordingStarted", onVideoRecordingStarted);
16131
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("videoRecordingStopped", onVideoRecordingStopped);
16132
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("videoRecordingRequested", onVideoRecordingRequested);
16133
- };
16134
- }, [
16135
- onVideoRecordingRequested
16136
- ]);
16575
+ });
16576
+ const publicPage = (0, $3Sbms$useQuery)([
16577
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token
16578
+ ], ()=>(0, $c9e496369b59be7a$export$2f377c2162fd02b2).getPublicPage((0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token || ""), {
16579
+ enabled: Boolean((0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token),
16580
+ staleTime: Infinity
16581
+ });
16582
+ const videoRef = (0, $3Sbms$useRef)(null);
16583
+ const [videoTrack, setVideoTrack] = (0, $3Sbms$useState)(undefined);
16584
+ const [micEnabled, setMicEnabled] = (0, $3Sbms$useState)(false);
16585
+ const [joining, setJoining] = (0, $3Sbms$useState)(false);
16586
+ const [denied, setDenied] = (0, $3Sbms$useState)(false);
16587
+ const [permissionsDenied, setPermissionsDenied] = (0, $3Sbms$useState)(false);
16588
+ const [devices, setDevices] = (0, $3Sbms$useState)({
16589
+ audioInput: [],
16590
+ audioOutput: [],
16591
+ videoInput: []
16592
+ });
16593
+ const [selectedAudio, setSelectedAudio] = (0, $3Sbms$useState)("0");
16594
+ const [selectedVideo, setSelectedVideo] = (0, $3Sbms$useState)("0");
16595
+ const permissionDeniedModalState = (0, $3Sbms$useOverlayTriggerState)({});
16596
+ const openScheduledModalState = (0, $3Sbms$useOverlayTriggerState)({});
16597
+ const openRecorderModalState = (0, $3Sbms$useOverlayTriggerState)({});
16598
+ const state = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
16137
16599
  (0, $3Sbms$useEffect)(()=>{
16138
- const onEnterRoom = async (event)=>{
16139
- const peerId = event.detail.peerId;
16140
- setPlan(event.detail.plan);
16141
- setPermissions(event.detail.permissions);
16142
- setSelfPeerId(peerId);
16143
- setVideoRecording(event.detail.videoRecording || {
16144
- requested: false,
16145
- started: false
16146
- });
16147
- if (event.detail.videoRecording?.requested) (0, $a5146f9062d7bf28$export$3a57e165650c636f)(t("notifications.recording"), {
16148
- duration: 11000,
16149
- icon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4731637db263b767$export$d9f09da0f8d1c822), {}),
16150
- messageStyle: {
16151
- fontWeight: 600
16152
- }
16153
- });
16154
- if (!options.recorder?.enabled) try {
16155
- if (!options.headless) await (0, $15a01b611391c1e7$export$494039379563c94d)(options);
16156
- setUserInteractionTriggered(true);
16157
- } catch (userInteractionError) {
16158
- setBlockedDevicesPopupOpen(true);
16159
- console.error("User interaction trigger failed", userInteractionError);
16160
- } finally{
16161
- setStreamState("streaming");
16600
+ const onRequestAccessResult = (data)=>{
16601
+ if (!data.detail.success) setDenied(true);
16602
+ else {
16603
+ const cameraEnabled = Boolean(videoTrack);
16604
+ videoTrack?.stop();
16605
+ setStreamState("loading");
16606
+ if (micEnabled) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone({
16607
+ deviceId: devices.audioInput[Number(selectedAudio)]?.deviceId
16608
+ });
16609
+ if (cameraEnabled) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo({
16610
+ device: devices.videoInput[Number(selectedVideo)]
16611
+ });
16162
16612
  }
16163
16613
  };
16164
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
16614
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("requestAccessResult", onRequestAccessResult);
16165
16615
  return ()=>{
16166
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
16616
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("requestAccessResult", onRequestAccessResult);
16167
16617
  };
16618
+ });
16619
+ const onSubmit = async ()=>{
16620
+ const { name: name } = formContext.getValues();
16621
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).setProfile({
16622
+ name: name
16623
+ });
16624
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).requestRoomAccess();
16625
+ setJoining(true);
16626
+ };
16627
+ const getUserMedia = (0, $3Sbms$useCallback)(async (opt)=>{
16628
+ try {
16629
+ if (videoTrack && opt.video) videoTrack.stop();
16630
+ const stream = await navigator.mediaDevices.getUserMedia(opt);
16631
+ const newVideoTrack = stream.getVideoTracks()[0];
16632
+ const newAudioTrack = stream.getAudioTracks()[0];
16633
+ if (newVideoTrack) setVideoTrack(newVideoTrack);
16634
+ if (newAudioTrack) setMicEnabled(true);
16635
+ newAudioTrack?.stop();
16636
+ const devices = await navigator.mediaDevices.enumerateDevices();
16637
+ const devicesParam = {
16638
+ audioInput: [],
16639
+ audioOutput: [],
16640
+ videoInput: []
16641
+ };
16642
+ devices.forEach((device)=>{
16643
+ if (device.kind === "audiooutput" && device.deviceId === "default") devicesParam.audioOutput.push(device);
16644
+ if (device.kind === "videoinput") devicesParam.videoInput.push(device);
16645
+ if (device.kind === "audioinput") devicesParam.audioInput.push(device);
16646
+ });
16647
+ setDevices(devicesParam);
16648
+ } catch (err) {
16649
+ setPermissionsDenied(true);
16650
+ permissionDeniedModalState.open();
16651
+ console.error("Get User Media Failed: ", err);
16652
+ }
16168
16653
  }, [
16169
- options,
16170
- t
16654
+ permissionDeniedModalState,
16655
+ videoTrack
16171
16656
  ]);
16172
- return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$QueryClientProvider), {
16173
- client: $26ed036cbc17809a$var$queryClient,
16174
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039).Provider, {
16175
- value: {
16176
- videoRecording: videoRecording,
16177
- setVideoRecording: setVideoRecording,
16178
- headless: Boolean(options.headless),
16179
- plan: plan,
16180
- permissions: permissions,
16181
- selfPeerId: selfPeerId,
16182
- streamUIContainerRef: streamUIContainerRef,
16183
- videosContainerRef: videosContainerRef,
16184
- remoteTilesContainerRef: remoteTilesContainerRef,
16185
- streamState: streamState,
16186
- setStreamState: setStreamState,
16187
- isQuickConnectPopupVisible: isQuickConnectPopupVisible,
16188
- setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible,
16189
- isSettingsMenuVisible: isSettingsMenuVisible,
16190
- setIsSettingsMenuVisible: setIsSettingsMenuVisible,
16191
- isYoutubePopupVisible: isYoutubePopupVisible,
16192
- setIsYoutubePopupVisible: setIsYoutubePopupVisible,
16193
- isLinksharePopupVisible: isLinksharePopupVisible,
16194
- setIsLinksharePopupVisible: setIsLinksharePopupVisible,
16195
- isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
16196
- setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
16197
- isBlockedFeaturePopupOpen: isBlockedFeaturePopupOpen,
16198
- setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen,
16199
- isRecordingStartPopupOpen: isRecordingStartPopupOpen,
16200
- setRecordingStartPopupOpen: setRecordingStartPopupOpen,
16201
- theme: theme,
16202
- setTheme: setTheme,
16203
- language: language,
16204
- setLanguage: setLanguage,
16205
- options: options,
16206
- profile: profile,
16207
- muted: muted,
16208
- streaming: streaming,
16209
- screensharing: screensharing,
16210
- isAgent: isAgent,
16211
- userInteractionTriggered: userInteractionTriggered,
16212
- orientation: orientation
16213
- },
16214
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$ThemeProvider), {
16215
- theme: styledTheme,
16657
+ const onCameraClick = (0, $3Sbms$useCallback)(async ()=>{
16658
+ if (!videoTrack) await getUserMedia({
16659
+ video: true
16660
+ });
16661
+ else {
16662
+ videoTrack.stop();
16663
+ setVideoTrack(undefined);
16664
+ }
16665
+ }, [
16666
+ getUserMedia,
16667
+ videoTrack
16668
+ ]);
16669
+ const onMicrophoneClick = (0, $3Sbms$useCallback)(async ()=>{
16670
+ if (!micEnabled) await getUserMedia({
16671
+ audio: true
16672
+ });
16673
+ else setMicEnabled(false);
16674
+ }, [
16675
+ getUserMedia,
16676
+ micEnabled
16677
+ ]);
16678
+ (0, $3Sbms$useEffect)(()=>{
16679
+ if (videoRef.current) {
16680
+ if (videoTrack) videoRef.current.srcObject = new MediaStream([
16681
+ videoTrack
16682
+ ]);
16683
+ else videoRef.current.srcObject = null;
16684
+ }
16685
+ }, [
16686
+ videoRef,
16687
+ videoTrack
16688
+ ]);
16689
+ (0, $3Sbms$useEffect)(()=>{
16690
+ getUserMedia({
16691
+ audio: true,
16692
+ video: true
16693
+ });
16694
+ }, []);
16695
+ const webcamEnabled = Boolean(videoTrack);
16696
+ return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16697
+ className: "flex flex-col w-full min-h-screen gap-12 p-8 overflow-y-auto public-page-bg",
16698
+ children: [
16699
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $532c9d26de079077$export$954efd801bad2f4e), {
16700
+ open: permissionDeniedModalState.isOpen,
16701
+ onOpenChange: permissionDeniedModalState.setOpen
16702
+ }),
16703
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $be7ba19df23750d4$export$ef27f94e204e44a9), {}),
16704
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16705
+ className: "flex items-stretch justify-center gap-8",
16216
16706
  children: [
16217
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4fb4815baa04b470$export$20f257fc407da7a3), {}),
16218
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d6008ea114507578$export$2e2bcd8739ae039), {}),
16219
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $4fb4815baa04b470$export$914ddf2021ea8ee6), {
16220
- ref: streamUIContainerRef,
16707
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16708
+ className: "flex flex-col gap-4",
16221
16709
  children: [
16222
- streamState === "loading" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91d20ee7d2ade85c$export$669f6ea7d267feaf), {}),
16223
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3a42b2ef7646d035$export$2e2bcd8739ae039), {}),
16224
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Toaster), {
16225
- duration: 3000,
16226
- className: "gap-2"
16227
- }),
16228
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $805d92fa41e6e1b0$export$2e2bcd8739ae039), {}),
16229
- isBlockedDevicesPopupOpen && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6aca0f707e80bf63$export$2e2bcd8739ae039), {
16230
- close: ()=>{
16231
- setUserInteractionTriggered(true);
16232
- setBlockedDevicesPopupOpen(false);
16233
- }
16710
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16711
+ className: "w-[400px] h-[400px] bg-gray-1000 rounded-lg overflow-hidden relative",
16712
+ children: [
16713
+ /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
16714
+ className: "-scale-x-[1] w-full h-full object-cover",
16715
+ ref: videoRef,
16716
+ autoPlay: true
16717
+ }),
16718
+ !webcamEnabled && formContext.watch("name") && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Avatar), {
16719
+ size: "lg",
16720
+ className: "absolute -translate-x-1/2 -translate-y-1/2 top-1/2 left-1/2",
16721
+ name: formContext.watch("name")
16722
+ }),
16723
+ formContext.watch("name") && /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
16724
+ className: "absolute flex items-center gap-1 p-1 text-xs font-bold text-white rounded-md bg-[#292929] bottom-2 left-2",
16725
+ children: [
16726
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Avatar), {
16727
+ size: "xs",
16728
+ name: formContext.watch("name")
16729
+ }),
16730
+ " ",
16731
+ formContext.watch("name")
16732
+ ]
16733
+ })
16734
+ ]
16234
16735
  }),
16235
- streamState === "recorder" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $b76354b532370976$export$336a011955157f9a), {}),
16236
- (streamState === "streaming" || streamState === "loading") && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
16237
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $cce9fd41d8a55a18$export$74636703cfe1eecf), {
16736
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16737
+ className: "grid grid-cols-2 gap-4",
16738
+ children: [
16739
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $095542f48ed9fed0$export$8d6498a96ae0e73f), {
16740
+ onClick: ()=>{
16741
+ onCameraClick();
16742
+ },
16743
+ className: "",
16744
+ type: "camera",
16745
+ state: permissionsDenied ? "blocked" : webcamEnabled ? "on" : "off"
16746
+ }),
16747
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $095542f48ed9fed0$export$8d6498a96ae0e73f), {
16748
+ onClick: ()=>{
16749
+ onMicrophoneClick();
16750
+ },
16751
+ className: "",
16752
+ type: "audio",
16753
+ state: permissionsDenied ? "blocked" : micEnabled ? "on" : "off"
16754
+ })
16755
+ ]
16756
+ })
16757
+ ]
16758
+ }),
16759
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
16760
+ className: "w-[400px] min-h-[400px] p-6 bg-white border border-gray-200 rounded-lg",
16761
+ children: joining || denied ? /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16762
+ className: "flex flex-col h-full",
16763
+ children: [
16764
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
16765
+ className: "flex flex-col items-center justify-center flex-grow gap-4",
16766
+ children: denied ? /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
16767
+ children: [
16768
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SlashCircle1Icon), {
16769
+ size: 32,
16770
+ className: "text-red-700"
16771
+ }),
16772
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16773
+ className: "flex flex-col items-center",
16774
+ children: [
16775
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16776
+ className: "font-medium text-md",
16777
+ children: t("greeting.cantJoinCall")
16778
+ }),
16779
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16780
+ className: "text-sm text-center text-gray-700",
16781
+ children: t("greeting.someoneDenied")
16782
+ })
16783
+ ]
16784
+ })
16785
+ ]
16786
+ }) : /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
16787
+ children: [
16788
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SpinnerIcon), {
16789
+ size: 32,
16790
+ className: "text-blue-700 animate-spin"
16791
+ }),
16792
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16793
+ className: "flex flex-col items-center",
16794
+ children: [
16795
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16796
+ className: "font-medium text-md",
16797
+ children: t("greeting.askingLetIn")
16798
+ }),
16799
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16800
+ className: "text-sm text-center text-gray-700",
16801
+ children: t("greeting.takeFewMinute")
16802
+ })
16803
+ ]
16804
+ })
16805
+ ]
16806
+ })
16807
+ }),
16808
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $846ede05bc799e5a$export$9d55f406abb38536), {
16809
+ open: openScheduledModalState.isOpen,
16810
+ onOpenChange: openScheduledModalState.setOpen
16811
+ }),
16812
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $b9bf9a4ef59eee73$export$4b510b9db1095d90), {
16813
+ open: openRecorderModalState.isOpen,
16814
+ onOpenChange: openRecorderModalState.setOpen
16815
+ }),
16816
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16817
+ className: "flex flex-col gap-2",
16238
16818
  children: [
16239
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $f235befa4cdc42d6$export$2e2bcd8739ae039), {}),
16240
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $cdab47bb8796991e$export$2e2bcd8739ae039), {}),
16241
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $69a9c49ece80e773$export$2e2bcd8739ae039), {}),
16242
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $01986a58bfba8001$export$2e2bcd8739ae039), {})
16819
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
16820
+ className: "text-sm text-center text-gray-700",
16821
+ children: denied ? t("greeting.whatYouCanDo") : t("greeting.cantWait")
16822
+ }),
16823
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Button), {
16824
+ className: "w-full",
16825
+ variant: "secondary",
16826
+ onClick: ()=>{
16827
+ openRecorderModalState.setOpen(true);
16828
+ },
16829
+ children: t("greeting.leaveMessage")
16830
+ }),
16831
+ publicPage.data?.data.links.find((pp)=>pp.id === "scheduleCall")?.active && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
16832
+ className: "w-full",
16833
+ variant: "outline",
16834
+ onClick: ()=>{
16835
+ openScheduledModalState.open();
16836
+ },
16837
+ children: [
16838
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CalendarIcon), {
16839
+ duotone: true,
16840
+ size: 18
16841
+ }),
16842
+ " ",
16843
+ t("greeting.scheduleACall")
16844
+ ]
16845
+ })
16243
16846
  ]
16244
16847
  })
16245
- }),
16246
- (streamState === "ended" || streamState === "terminated" || streamState === "full" || streamState === "expired") && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $df41bfe6da05853a$export$2e2bcd8739ae039), {})
16247
- ]
16848
+ ]
16849
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Form), {
16850
+ ...formContext,
16851
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)("form", {
16852
+ onSubmit: formContext.handleSubmit(onSubmit),
16853
+ className: "flex flex-col justify-between h-full",
16854
+ children: [
16855
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16856
+ className: "space-y-6",
16857
+ children: [
16858
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FormField), {
16859
+ control: formContext.control,
16860
+ name: "name",
16861
+ render: ({ field: field })=>/*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$FormItem), {
16862
+ children: [
16863
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FormLabel), {
16864
+ children: t("greeting.name")
16865
+ }),
16866
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FormControl), {
16867
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Input), {
16868
+ autoFocus: true,
16869
+ placeholder: t("greeting.namePlaceholder"),
16870
+ ...field
16871
+ })
16872
+ }),
16873
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FormMessage), {
16874
+ children: t("greeting.nameDescription")
16875
+ })
16876
+ ]
16877
+ })
16878
+ }),
16879
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16880
+ className: "flex flex-col gap-1.5",
16881
+ children: [
16882
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FormLabel), {
16883
+ children: t("greeting.setting")
16884
+ }),
16885
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16886
+ className: "flex items-center gap-4",
16887
+ children: [
16888
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VideoRecorderIcon), {
16889
+ duotone: true,
16890
+ size: 18
16891
+ }),
16892
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Select), {
16893
+ value: selectedVideo,
16894
+ onValueChange: (value)=>{
16895
+ setSelectedVideo(value);
16896
+ getUserMedia({
16897
+ video: devices.videoInput[Number(value)]
16898
+ });
16899
+ },
16900
+ children: [
16901
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectTrigger), {
16902
+ className: "flex-grow",
16903
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectValue), {})
16904
+ }),
16905
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectContent), {
16906
+ children: devices.videoInput.map((device, i)=>{
16907
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectItem), {
16908
+ value: `${i}`,
16909
+ children: device.label
16910
+ }, `${i}`);
16911
+ })
16912
+ })
16913
+ ]
16914
+ })
16915
+ ]
16916
+ }),
16917
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16918
+ className: "flex items-center gap-4",
16919
+ children: [
16920
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Microphone1Icon), {
16921
+ duotone: true,
16922
+ size: 18
16923
+ }),
16924
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Select), {
16925
+ value: selectedAudio,
16926
+ onValueChange: (value)=>{
16927
+ getUserMedia({
16928
+ audio: devices.audioInput[Number(value)]
16929
+ });
16930
+ setSelectedAudio(value);
16931
+ },
16932
+ children: [
16933
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectTrigger), {
16934
+ className: "flex-grow",
16935
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectValue), {})
16936
+ }),
16937
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectContent), {
16938
+ children: devices.audioInput.map((device, i)=>{
16939
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectItem), {
16940
+ value: `${i}`,
16941
+ children: device.label
16942
+ }, `${i}`);
16943
+ })
16944
+ })
16945
+ ]
16946
+ })
16947
+ ]
16948
+ }),
16949
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16950
+ className: "flex items-center gap-4",
16951
+ children: [
16952
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VolumeMaxIcon), {
16953
+ duotone: true,
16954
+ size: 18
16955
+ }),
16956
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Select), {
16957
+ value: "0",
16958
+ children: [
16959
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectTrigger), {
16960
+ className: "flex-grow",
16961
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectValue), {})
16962
+ }),
16963
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectContent), {
16964
+ children: devices.audioOutput.map((device, i)=>{
16965
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectItem), {
16966
+ value: `${i}`,
16967
+ children: device.label
16968
+ }, `${i}`);
16969
+ })
16970
+ })
16971
+ ]
16972
+ })
16973
+ ]
16974
+ })
16975
+ ]
16976
+ })
16977
+ ]
16978
+ }),
16979
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
16980
+ className: "flex flex-col flex-end gap-2",
16981
+ children: [
16982
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Button), {
16983
+ type: "submit",
16984
+ children: t("greeting.askToJoin")
16985
+ }),
16986
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
16987
+ className: "text-sm text-center text-gray-700",
16988
+ children: t("greeting.youWillJoinWhenSomeoneLetsYou", {
16989
+ companyName: state.company?.company_name
16990
+ })
16991
+ })
16992
+ ]
16993
+ })
16994
+ ]
16995
+ })
16996
+ })
16248
16997
  })
16249
16998
  ]
16999
+ }),
17000
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
17001
+ className: "flex flex-col items-center gap-2 pt-10 border-t border-gray-200 w-full max-w-[800px] mx-auto",
17002
+ children: [
17003
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
17004
+ className: "text-sm text-gray-700",
17005
+ children: t("shareLink.poweredBy")
17006
+ }),
17007
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $7f5b5a40ab7d19c2$export$9ea2b4f70e201d7f), {})
17008
+ ]
16250
17009
  })
16251
- })
16252
- });
16253
- };
16254
- var $26ed036cbc17809a$export$2e2bcd8739ae039 = $26ed036cbc17809a$var$StreamUI;
16255
-
16256
-
16257
-
16258
- // https://help.hotjar.com/hc/en-us/articles/360033640653-Identify-API-Reference#01G2A279ZXW4JT60NKXKX69G49
16259
- // prettier-ignore
16260
- // @ts-ignore
16261
- window.hj = window.hj || function() {
16262
- (hj.q = hj.q || []).push(arguments);
16263
- };
16264
-
16265
-
16266
-
16267
-
16268
-
16269
-
16270
-
16271
- const $9a3d651cab8c9249$var$GreetingSnapcallLogo = ()=>{
16272
- return /*#__PURE__*/ (0, $3Sbms$jsx)("svg", {
16273
- width: "72",
16274
- height: "72",
16275
- viewBox: "0 0 72 72",
16276
- fill: "none",
16277
- xmlns: "http://www.w3.org/2000/svg",
16278
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)("g", {
16279
- clipPath: "url(#greetingSnapcallLogo)",
16280
- children: [
16281
- /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16282
- d: "M0 36C0 6.354 6.354 0 36 0s36 6.354 36 36-6.354 36-36 36S0 65.646 0 36Z",
16283
- fill: "#000"
16284
- }),
16285
- /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
16286
- d: "M36.225 57.428c2.367 0 4.35-1.964 3.62-4.215a13.38 13.38 0 0 0-3.133-5.203c-2.432-2.498-5.73-3.902-9.17-3.902-3.44 0-6.74 1.404-9.172 3.902a13.381 13.381 0 0 0-3.132 5.203c-.731 2.25 1.252 4.215 3.62 4.215h17.367ZM35.775 14.572c-2.367 0-4.35 1.965-3.62 4.216a13.381 13.381 0 0 0 3.133 5.203c2.432 2.498 5.73 3.901 9.17 3.901 3.44 0 6.74-1.403 9.172-3.901a13.375 13.375 0 0 0 3.132-5.203c.731-2.252-1.252-4.216-3.62-4.216H35.776ZM44.459 53.143c0 2.367 1.971 4.352 4.204 3.566a12.924 12.924 0 0 0 4.967-3.182c2.432-2.498 3.799-5.886 3.799-9.419 0-3.533-1.367-6.921-3.8-9.42a12.923 12.923 0 0 0-4.966-3.181c-2.233-.786-4.204 1.2-4.204 3.566v18.07ZM27.541 18.857c0-2.367-1.971-4.352-4.204-3.566a12.923 12.923 0 0 0-4.967 3.182c-2.432 2.498-3.799 5.886-3.799 9.42 0 3.532 1.367 6.92 3.8 9.418a12.923 12.923 0 0 0 4.966 3.182c2.233.786 4.204-1.2 4.204-3.566v-18.07Z",
16287
- fill: "#fff"
16288
- })
16289
- ]
16290
- })
17010
+ ]
16291
17011
  });
16292
- };
16293
- var $9a3d651cab8c9249$export$2e2bcd8739ae039 = $9a3d651cab8c9249$var$GreetingSnapcallLogo;
16294
-
16295
-
16296
-
16297
-
16298
- const $35c6a4b506b7dc62$export$d653589df987fd93 = (0, $3Sbms$styledcomponents).div`
16299
- height: 100%;
16300
- display: flex;
16301
- flex-direction: column;
16302
- align-items: center;
16303
- color: #1d1c20;
16304
- padding-top: 76px;
16305
- font-family: Lato;
16306
- box-sizing: border-box;
16307
- `;
16308
- const $35c6a4b506b7dc62$export$d43ffeaaec0b2a58 = (0, $3Sbms$styledcomponents).div`
16309
- display: flex;
16310
- align-items: center;
16311
- justify-content: center;
16312
- width: 72px;
16313
- height: 72px;
16314
- svg {
16315
- width: 50px;
16316
- height: 50px;
16317
- }
16318
- background-color: black;
16319
- border-radius: 25px;
16320
- box-sizing: border-box;
16321
- `;
16322
- const $35c6a4b506b7dc62$export$873b7756313e36bb = (0, $3Sbms$styledcomponents).h1`
16323
- font-size: 32px;
16324
- line-height: 39px;
16325
- font-weight: 700;
16326
- font-family: Gazpacho;
16327
- text-align: center;
16328
- `;
16329
- const $35c6a4b506b7dc62$export$b7a7fefc0b349825 = (0, $3Sbms$styledcomponents).div`
16330
- display: flex;
16331
- align-items: center;
16332
- gap: 10px;
16333
- `;
16334
- const $35c6a4b506b7dc62$export$b302ef9d8310f71 = (0, $3Sbms$styledcomponents).div`
16335
- position: relative;
16336
- width: 350px;
16337
- height: 350px;
16338
- display: flex;
16339
- align-items: center;
16340
- justify-content: center;
16341
- `;
16342
- const $35c6a4b506b7dc62$export$ae01dedf5c052bb = (0, $3Sbms$styledcomponents).video`
16343
- width: 300px;
16344
- height: 300px;
16345
- background-color: black;
16346
- border-radius: 15px;
16347
- object-fit: cover;
16348
- transform: scale(-1, 1);
16349
- `;
16350
- const $35c6a4b506b7dc62$export$778ed67917f5eacf = (0, $3Sbms$styledcomponents).div`
16351
- display: flex;
16352
- position: absolute;
16353
- top: 8px;
16354
- left: 8px;
16355
- gap: 8px;
16356
- z-index: 15;
16357
- `;
16358
- const $35c6a4b506b7dc62$export$92fe811838849d7d = (0, $3Sbms$styledcomponents).div`
16359
- display: flex;
16360
- justify-content: center;
16361
- align-items: center;
16362
- width: 26px;
16363
- height: 26px;
16364
- border-radius: 50%;
16365
- background-color: rgba(28, 32, 36, 0.25);
16366
- z-index: 2;
16367
- `;
16368
- const $35c6a4b506b7dc62$export$65550b47dde6d016 = (0, $3Sbms$styledcomponents).div`
16369
- position: absolute;
16370
- width: 300px;
16371
- height: 300px;
16372
- background-color: black;
16373
- border-radius: 15px;
16374
- z-index: 1;
16375
- display: ${({ webcamEnabled: webcamEnabled })=>webcamEnabled ? "none" : "flex"};
16376
- align-items: center;
16377
- justify-content: center;
16378
- `;
16379
- const $35c6a4b506b7dc62$export$48377ae1c677702b = (0, $3Sbms$styledcomponents).div`
16380
- position: absolute;
16381
- bottom: 45px;
16382
- display: flex;
16383
- width: 100%;
16384
- justify-content: center;
16385
- gap: 13px;
16386
- z-index: 2;
16387
- `;
16388
- const $35c6a4b506b7dc62$export$6e8af0bd0a2aaa77 = (0, $3Sbms$styledcomponents).button`
16389
- display: flex;
16390
- align-items: center;
16391
- justify-content: center;
16392
- min-width: 48px;
16393
- min-height: 48px;
16394
- background-color: ${({ danger: danger })=>danger ? "#d84949" : "#2d2d2d"};
16395
- border: none;
16396
- border-radius: 15px;
16397
- padding: 0 8px;
16398
- gap: 8px;
16399
- cursor: pointer;
16400
-
16401
- p {
16402
- color: white;
16403
- font-size: 14px;
16404
- font-weight: 600;
16405
- margin: 0;
16406
- }
17012
+ };
17013
+ var $8f7af36c0532a6c4$export$2e2bcd8739ae039 = $8f7af36c0532a6c4$var$GreetingView;
16407
17014
 
16408
- &:hover {
16409
- border: 2px solid ${({ danger: danger })=>danger ? "#fc7d7d" : "#8d8d8d"};
16410
- }
16411
17015
 
16412
- svg {
16413
- width: 24px;
16414
- height: 24px;
16415
- }
16416
- `;
16417
- const $35c6a4b506b7dc62$export$c7a6f02121c3b3b5 = (0, $3Sbms$styledcomponents).div`
16418
- display: flex;
16419
- flex-direction: column;
16420
- align-items: flex-start;
16421
- width: 350px;
16422
17016
 
16423
- h3 {
16424
- margin: 0;
16425
- }
16426
- `;
16427
- const $35c6a4b506b7dc62$export$916d4667067f956a = (0, $3Sbms$styledcomponents).h3`
16428
- font-size: 20px;
16429
- line-height: 24px;
16430
- font-weight: 700;
16431
- margin: 0;
16432
- font-family: Gazpacho;
16433
- `;
16434
- const $35c6a4b506b7dc62$export$190947c3048e2d5d = (0, $3Sbms$styledcomponents).p`
16435
- font-size: 16px;
16436
- line-height: 22px;
16437
- font-weight: 400;
16438
- `;
16439
- const $35c6a4b506b7dc62$export$f5b8910cec6cf069 = (0, $3Sbms$styledcomponents).input`
16440
- width: 100%;
16441
- border: 1px solid #c9c9ca;
16442
- border-radius: 8px;
16443
- height: 50px;
16444
- padding: 14px 12px;
16445
- box-sizing: border-box;
16446
- margin-top: 40px;
16447
- font-size: 16px;
16448
- `;
16449
- const $35c6a4b506b7dc62$export$353f5b6fc5456de1 = (0, $3Sbms$styledcomponents).button`
16450
- width: 100%;
16451
- background-color: #1d1c20;
16452
- color: white;
16453
- padding: 0;
16454
- outline: inherit;
16455
- height: 50px;
16456
- border: 0;
16457
- border-radius: 8px;
16458
- margin-top: 15px;
16459
- font-size: 16px;
16460
- line-height: 19px;
16461
- font-weight: 500;
16462
- cursor: pointer;
16463
- `;
16464
- const $35c6a4b506b7dc62$export$a06f1c675e846f6f = (0, $3Sbms$styledcomponents).footer`
16465
- display: flex;
16466
- flex: 1;
16467
- justify-content: flex-end;
16468
- flex-direction: column;
16469
- margin-bottom: 30px;
16470
- align-items: center;
16471
- text-align: center;
16472
- width: 300px;
16473
- `;
16474
- const $35c6a4b506b7dc62$export$53e4a0ea45e729a2 = (0, $3Sbms$styledcomponents).h5`
16475
- font-weight: 700;
16476
- font-size: 16px;
16477
- line-height: 19px;
16478
- margin: 0;
16479
- font-family: Gazpacho;
16480
- `;
16481
- const $35c6a4b506b7dc62$export$eb20cbaff2d739a5 = (0, $3Sbms$styledcomponents).p`
16482
- font-weight: 400;
16483
- font-size: 12px;
16484
- line-height: 14px;
16485
- color: black;
16486
- margin-bottom: 0;
16487
- margin-top: 10px;
16488
- `;
16489
- const $35c6a4b506b7dc62$export$d4a1a815e49dfefd = (0, $3Sbms$styledcomponents).div`
16490
- display: flex;
16491
- flex-direction: column;
16492
- align-items: center;
16493
- justify-content: center;
16494
- background-color: #fff;
16495
- color: #1d1c20;
16496
- height: 100%;
16497
- `;
16498
17017
 
16499
17018
 
16500
17019
 
16501
17020
 
16502
17021
 
17022
+ const $c6a143d1088045e0$var$Bold = ({ children: children })=>/*#__PURE__*/ (0, $3Sbms$jsx)("span", {
17023
+ className: "font-medium text-primary",
17024
+ children: children
17025
+ });
17026
+ const $c6a143d1088045e0$export$ed71079a84f20635 = ()=>{
17027
+ const { t: t } = (0, $3Sbms$useTranslation)();
17028
+ const modalState = (0, $3Sbms$useOverlayTriggerState)({});
17029
+ const [requests, setRequests] = (0, $3Sbms$useState)([]);
17030
+ (0, $3Sbms$useEffect)(()=>{
17031
+ modalState.setOpen(requests.length !== 0);
17032
+ }, [
17033
+ modalState,
17034
+ requests.length
17035
+ ]);
17036
+ (0, $3Sbms$useEffect)(()=>{
17037
+ const onAccessRequest = (event)=>{
17038
+ setRequests([
17039
+ ...requests,
17040
+ event.detail
17041
+ ]);
17042
+ };
17043
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("accessRequest", onAccessRequest);
17044
+ return ()=>{
17045
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("accessRequest", onAccessRequest);
17046
+ };
17047
+ }, [
17048
+ setRequests,
17049
+ modalState,
17050
+ requests
17051
+ ]);
17052
+ (0, $3Sbms$useEffect)(()=>{
17053
+ const onAgentIdentity = async ()=>{
17054
+ const requests = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getRoomPeers();
17055
+ setRequests(requests.waitingRequests);
17056
+ };
17057
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("agentIdentity", onAgentIdentity);
17058
+ return ()=>{
17059
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("agentIdentity", onAgentIdentity);
17060
+ };
17061
+ }, [
17062
+ modalState
17063
+ ]);
17064
+ (0, $3Sbms$useEffect)(()=>{
17065
+ const onEnterRoom = async (event)=>{
17066
+ setRequests(event.detail.waitingRequests);
17067
+ };
17068
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
17069
+ return ()=>{
17070
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
17071
+ };
17072
+ }, [
17073
+ modalState
17074
+ ]);
17075
+ (0, $3Sbms$useEffect)(()=>{
17076
+ const onCancelAccessRequest = async (event)=>{
17077
+ const id = event.detail.id;
17078
+ const removeCanceled = requests.filter((rq)=>{
17079
+ return id !== rq.id;
17080
+ });
17081
+ setRequests(removeCanceled);
17082
+ };
17083
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("cancelAccessRequest", onCancelAccessRequest);
17084
+ return ()=>{
17085
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("cancelAccessRequest", onCancelAccessRequest);
17086
+ };
17087
+ }, [
17088
+ modalState,
17089
+ requests
17090
+ ]);
17091
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertDialog), {
17092
+ open: modalState.isOpen,
17093
+ onOpenChange: (open)=>{
17094
+ modalState.setOpen(open);
17095
+ },
17096
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$AlertDialogContent), {
17097
+ children: [
17098
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertDialogHeader), {
17099
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
17100
+ className: "flex flex-col align-items items-center gap-6 mb-6",
17101
+ children: [
17102
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Avatar), {
17103
+ className: "w-[54px] h-[54px] text-3xl font-semibold",
17104
+ name: requests[0]?.profile?.name || t("requestAccess.defaultName")
17105
+ }),
17106
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
17107
+ className: "w-full text-center text-lg font-normal",
17108
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Trans), {
17109
+ i18nKey: "requestAccess.wantToJoin",
17110
+ values: {
17111
+ name: requests[0]?.profile?.name || t("requestAccess.defaultName")
17112
+ },
17113
+ components: {
17114
+ bold: /*#__PURE__*/ (0, $3Sbms$jsx)($c6a143d1088045e0$var$Bold, {})
17115
+ }
17116
+ })
17117
+ })
17118
+ ]
17119
+ })
17120
+ }),
17121
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$AlertDialogFooter), {
17122
+ className: "w-full",
17123
+ children: [
17124
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertDialogCancel), {
17125
+ className: "w-full",
17126
+ onClick: ()=>{
17127
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).denyAccessRequest(requests[0]?.id);
17128
+ requests.shift();
17129
+ setRequests(requests);
17130
+ },
17131
+ children: t("requestAccess.deny")
17132
+ }),
17133
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertDialogAction), {
17134
+ className: "w-full",
17135
+ onClick: ()=>{
17136
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).acceptAccessRequest(requests[0]?.id);
17137
+ requests.shift();
17138
+ setRequests(requests);
17139
+ },
17140
+ variant: "primary",
17141
+ children: t("requestAccess.admit")
17142
+ })
17143
+ ]
17144
+ })
17145
+ ]
17146
+ })
17147
+ });
17148
+ };
17149
+
16503
17150
 
16504
- const $f8d57e3d223f5089$var$GreetingView = ({ onGreetingDone: onGreetingDone })=>{
17151
+ const $26ed036cbc17809a$var$currentTheme = (0, $52580db2e49cdd90$export$3bfd0d5209a8006a)();
17152
+ const $26ed036cbc17809a$var$currentLanguage = (0, $a3e657fb86ae23f3$export$604ba5624273df44)();
17153
+ const $26ed036cbc17809a$var$queryClient = new (0, $3Sbms$QueryClient)();
17154
+ let $26ed036cbc17809a$var$timestampCriticalError = -1;
17155
+ const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
16505
17156
  const { t: t } = (0, $3Sbms$useTranslation)();
16506
- const [mainContainerRef, { width: width, height: height }] = (0, $af23c74942bdcae7$export$e295b0c537d32d7d)();
16507
- const inputRef = (0, $3Sbms$useRef)(null);
16508
- const videoRef = (0, $3Sbms$useRef)(null);
16509
- const [videoTrack, setVideoTrack] = (0, $3Sbms$useState)(undefined);
16510
- const [micEnabled, setMicEnabled] = (0, $3Sbms$useState)(false);
16511
- const [joining, setJoining] = (0, $3Sbms$useState)(false);
16512
- const desktop = width >= height;
16513
- const onSubmit = ()=>{
16514
- const displayName = inputRef.current?.value;
16515
- const cameraEnabled = Boolean(videoTrack);
16516
- videoTrack?.stop();
16517
- setJoining(true);
16518
- setTimeout(()=>{
16519
- onGreetingDone({
16520
- cameraEnabled: cameraEnabled,
16521
- micEnabled: micEnabled,
16522
- displayName: displayName
17157
+ const [selfPeerId, setSelfPeerId] = (0, $3Sbms$useState)(undefined);
17158
+ const streamUIContainerRef = (0, $3Sbms$useRef)(null);
17159
+ const videosContainerRef = (0, $3Sbms$useRef)(null);
17160
+ const remoteTilesContainerRef = (0, $3Sbms$useRef)(null);
17161
+ const [streamState, setStreamState] = (0, $3Sbms$useState)(options.recorder?.enabled ? "recorder" : options.greeting ? "greeting" : "loading");
17162
+ const [isQuickConnectPopupVisible, setIsQuickConnectPopupVisible] = (0, $3Sbms$useState)(false);
17163
+ const [isSettingsMenuVisible, setIsSettingsMenuVisible] = (0, $3Sbms$useState)(false);
17164
+ const [isYoutubePopupVisible, setIsYoutubePopupVisible] = (0, $3Sbms$useState)(false);
17165
+ const [isLinksharePopupVisible, setIsLinksharePopupVisible] = (0, $3Sbms$useState)(false);
17166
+ const [isVirtualBackgroundPopupVisible, setIsVirtualBackgroundPopupVisible] = (0, $3Sbms$useState)(false);
17167
+ const [theme, setTheme] = (0, $3Sbms$useState)($26ed036cbc17809a$var$currentTheme);
17168
+ const [language, setLanguage] = (0, $3Sbms$useState)(options.language || $26ed036cbc17809a$var$currentLanguage);
17169
+ const [profile, setProfile] = (0, $3Sbms$useState)({});
17170
+ const [muted, setMuted] = (0, $3Sbms$useState)(true);
17171
+ const [streaming, setStreaming] = (0, $3Sbms$useState)(false);
17172
+ const [screensharing, setScreensharing] = (0, $3Sbms$useState)(false);
17173
+ const [isAgent, setIsAgent] = (0, $3Sbms$useState)(false);
17174
+ const [userInteractionTriggered, setUserInteractionTriggered] = (0, $3Sbms$useState)(false);
17175
+ const [containerWidth, containerHeight] = (0, $af23c74942bdcae7$export$2b86bedf890eab8)(streamUIContainerRef.current);
17176
+ const [isBlockedDevicesPopupOpen, setBlockedDevicesPopupOpen] = (0, $3Sbms$useState)(false);
17177
+ const [isBlockedFeaturePopupOpen, setBlockedFeaturePopupOpen] = (0, $3Sbms$useState)(false);
17178
+ const [videoRecording, setVideoRecording] = (0, $3Sbms$useState)({
17179
+ requested: false,
17180
+ started: false
17181
+ });
17182
+ const [isRecordingStartPopupOpen, setRecordingStartPopupOpen] = (0, $3Sbms$useState)(false);
17183
+ const [permissions, setPermissions] = (0, $3Sbms$useState)([]);
17184
+ const [plan, setPlan] = (0, $3Sbms$useState)(undefined);
17185
+ const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? "landscape" : "portrait";
17186
+ const styledTheme = theme === "dark" ? (0, $52580db2e49cdd90$export$3e936a8db52a10a0) : (0, $52580db2e49cdd90$export$f30cb9bc4f736419);
17187
+ const onWebcamUpdate = (event)=>{
17188
+ if (event.type === "localVideoAvailable") setStreaming(true);
17189
+ else setStreaming(false);
17190
+ };
17191
+ const onScreenshareUpdate = (event)=>{
17192
+ if (event.type === "screenshareEnabled") setScreensharing(true);
17193
+ else setScreensharing(false);
17194
+ };
17195
+ const onMicrophoneUpdate = (event)=>{
17196
+ if (event.type === "microphoneMute") setMuted(true);
17197
+ else setMuted(false);
17198
+ };
17199
+ const onVideoRecordingStarted = ()=>{
17200
+ setVideoRecording({
17201
+ requested: true,
17202
+ started: true
17203
+ });
17204
+ };
17205
+ const onVideoRecordingStopped = ()=>{
17206
+ setVideoRecording({
17207
+ requested: false,
17208
+ started: false
17209
+ });
17210
+ };
17211
+ const onVideoRecordingRequested = (0, $3Sbms$useCallback)(()=>{
17212
+ setVideoRecording({
17213
+ requested: true,
17214
+ started: false
17215
+ });
17216
+ setRecordingStartPopupOpen(true);
17217
+ (0, $a5146f9062d7bf28$export$3a57e165650c636f)(t("notifications.recording"), {
17218
+ duration: 10000,
17219
+ icon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4731637db263b767$export$d9f09da0f8d1c822), {}),
17220
+ messageStyle: {
17221
+ fontWeight: 600
17222
+ }
17223
+ });
17224
+ }, [
17225
+ t
17226
+ ]);
17227
+ const onDefaultAudioDeviceChange = (event)=>{
17228
+ const micro = event.detail.label;
17229
+ (0, $a5146f9062d7bf28$export$3a57e165650c636f)(`Connected to ${micro}`, {
17230
+ duration: 3000,
17231
+ icon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6043ae1b48c5aa97$export$2e2bcd8739ae039), {}),
17232
+ messageStyle: {
17233
+ fontWeight: 600
17234
+ }
17235
+ });
17236
+ };
17237
+ const onSelfProfileUpdate = (event)=>{
17238
+ const { profile: profile } = event.detail;
17239
+ setProfile(profile);
17240
+ };
17241
+ const onCallEnd = ()=>{
17242
+ (0, $15a01b611391c1e7$export$716eeec86fd18da7)();
17243
+ setStreamState("ended");
17244
+ setMuted(true);
17245
+ setStreaming(false);
17246
+ setScreensharing(false);
17247
+ setUserInteractionTriggered(false);
17248
+ };
17249
+ const onCallTerminated = ()=>{
17250
+ (0, $15a01b611391c1e7$export$716eeec86fd18da7)();
17251
+ setStreamState("terminated");
17252
+ };
17253
+ const onInvalidRoom = ()=>{
17254
+ setStreamState("expired");
17255
+ };
17256
+ const onAgentIdentity = (event)=>{
17257
+ const { success: success, email: email, name: name, avatarUrl: avatarUrl } = event.detail;
17258
+ if (success) {
17259
+ setIsAgent(true);
17260
+ setProfile({
17261
+ email: email,
17262
+ name: name,
17263
+ avatarUrl: avatarUrl
17264
+ });
17265
+ if (email) (0, $3Sbms$hotjarbrowser).identify(null, {
17266
+ email: email
16523
17267
  });
16524
- }, 4000);
17268
+ } else (0, $3Sbms$reacthottoast)("An error occured while trying to join the room as an agent", {
17269
+ className: "error"
17270
+ });
16525
17271
  };
16526
- const getUserMedia = async (opt)=>{
16527
- try {
16528
- const stream = await navigator.mediaDevices.getUserMedia(opt);
16529
- const videoTrack = stream.getVideoTracks()[0];
16530
- const audioTrack = stream.getAudioTracks()[0];
16531
- if (videoTrack) setVideoTrack(videoTrack);
16532
- if (audioTrack) setMicEnabled(true);
16533
- audioTrack?.stop();
16534
- } catch (err) {
16535
- console.error("Get User Media Failed: ", err);
17272
+ const onCriticalError = (event)=>{
17273
+ const duration = 20000;
17274
+ const now = Date.now();
17275
+ if (event.detail.code === "USERLIMIT") {
17276
+ setStreamState("full");
17277
+ return;
16536
17278
  }
16537
- };
16538
- const onCameraClick = (0, $3Sbms$useCallback)(async ()=>{
16539
- if (!videoTrack) await getUserMedia({
16540
- video: true
17279
+ if ($26ed036cbc17809a$var$timestampCriticalError !== -1 && $26ed036cbc17809a$var$timestampCriticalError + duration > now) return;
17280
+ $26ed036cbc17809a$var$timestampCriticalError = now;
17281
+ (0, $a5146f9062d7bf28$export$3a57e165650c636f)(`A critical error has occurred (error ${event.detail.code}).`, {
17282
+ icon: (0, $93a0377c243d965e$export$c7df1b15b59b1df2),
17283
+ button: {
17284
+ text: "Reload",
17285
+ action: ()=>{
17286
+ window.location.reload();
17287
+ }
17288
+ },
17289
+ duration: duration
16541
17290
  });
16542
- else {
16543
- videoTrack.stop();
16544
- setVideoTrack(undefined);
17291
+ };
17292
+ (0, $3Sbms$useEffect)(()=>{
17293
+ try {
17294
+ localStorage.setItem("stream_ui_theme", theme);
17295
+ } catch (localStorageError) {
17296
+ console.warn(localStorageError);
16545
17297
  }
16546
17298
  }, [
16547
- videoTrack
17299
+ theme
16548
17300
  ]);
16549
- const onMicrophoneClick = (0, $3Sbms$useCallback)(async ()=>{
16550
- if (!micEnabled) await getUserMedia({
16551
- audio: true
16552
- });
16553
- else setMicEnabled(false);
17301
+ (0, $3Sbms$useEffect)(()=>{
17302
+ try {
17303
+ localStorage.setItem("stream_ui_language", language);
17304
+ (0, $384d985bb9605c35$export$2e2bcd8739ae039).changeLanguage(language);
17305
+ } catch (localStorageError) {
17306
+ console.warn(localStorageError);
17307
+ }
16554
17308
  }, [
16555
- micEnabled
17309
+ language
16556
17310
  ]);
16557
17311
  (0, $3Sbms$useEffect)(()=>{
16558
- if (videoRef.current) {
16559
- if (videoTrack) videoRef.current.srcObject = new MediaStream([
16560
- videoTrack
16561
- ]);
16562
- else videoRef.current.srcObject = null;
16563
- }
17312
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onWebcamUpdate);
17313
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoUnavailable", onWebcamUpdate);
17314
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareUpdate);
17315
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("screenshareDisabled", onScreenshareUpdate);
17316
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneEnabled", onMicrophoneUpdate);
17317
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneMute", onMicrophoneUpdate);
17318
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneUnmute", onMicrophoneUpdate);
17319
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
17320
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("selfProfileUpdate", onSelfProfileUpdate);
17321
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("terminateRoom", onCallTerminated);
17322
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("leaveRoom", onCallEnd);
17323
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("invalidRoom", onInvalidRoom);
17324
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("agentIdentity", onAgentIdentity);
17325
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("criticalError", onCriticalError);
17326
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("videoRecordingStarted", onVideoRecordingStarted);
17327
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("videoRecordingStopped", onVideoRecordingStopped);
17328
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("videoRecordingRequested", onVideoRecordingRequested);
17329
+ return ()=>{
17330
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onWebcamUpdate);
17331
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoUnavailable", onWebcamUpdate);
17332
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareUpdate);
17333
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("screenshareDisabled", onScreenshareUpdate);
17334
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneEnabled", onMicrophoneUpdate);
17335
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneMute", onMicrophoneUpdate);
17336
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneUnmute", onMicrophoneUpdate);
17337
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
17338
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("selfProfileUpdate", onSelfProfileUpdate);
17339
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("terminateRoom", onCallTerminated);
17340
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("leaveRoom", onCallEnd);
17341
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("invalidRoom", onInvalidRoom);
17342
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("agentIdentity", onAgentIdentity);
17343
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("criticalError", onCriticalError);
17344
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("videoRecordingStarted", onVideoRecordingStarted);
17345
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("videoRecordingStopped", onVideoRecordingStopped);
17346
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("videoRecordingRequested", onVideoRecordingRequested);
17347
+ };
16564
17348
  }, [
16565
- videoRef,
16566
- videoTrack,
16567
- width,
16568
- height
17349
+ onVideoRecordingRequested
16569
17350
  ]);
16570
17351
  (0, $3Sbms$useEffect)(()=>{
16571
- getUserMedia({
16572
- audio: true,
16573
- video: true
16574
- });
17352
+ const startStreaming = async ()=>{
17353
+ if (!options.greeting && !options.recorder?.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).joinRoom();
17354
+ const state = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
17355
+ const peerId = state.peerId;
17356
+ setPlan(state.plan);
17357
+ setPermissions(state.permissions);
17358
+ setSelfPeerId(peerId);
17359
+ if (!options.recorder?.enabled && !options.greeting) try {
17360
+ if (!options.headless) await (0, $15a01b611391c1e7$export$494039379563c94d)(options);
17361
+ if (options.controls?.microphone?.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone();
17362
+ if (options.controls?.camera?.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo();
17363
+ setUserInteractionTriggered(true);
17364
+ } catch (userInteractionError) {
17365
+ setBlockedDevicesPopupOpen(true);
17366
+ console.error("User interaction trigger failed", userInteractionError);
17367
+ } finally{
17368
+ setStreamState("streaming");
17369
+ }
17370
+ };
17371
+ startStreaming();
16575
17372
  }, []);
16576
- if (joining === true) return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$d4a1a815e49dfefd), {
16577
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
16578
- src: `${"https://stream-assets.snapcall.io"}/animations/snapcall-logo-animation.gif`,
16579
- alt: "Snapcall logo animation",
16580
- height: 40
16581
- })
16582
- });
16583
- const webcamEnabled = Boolean(videoTrack);
16584
- return /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$d653589df987fd93), {
16585
- ref: mainContainerRef,
16586
- children: [
16587
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4fb4815baa04b470$export$20f257fc407da7a3), {}),
16588
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $9a3d651cab8c9249$export$2e2bcd8739ae039), {}),
16589
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$873b7756313e36bb), {
16590
- children: t("greeting.mainTitle")
16591
- }),
16592
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$b7a7fefc0b349825), {
17373
+ (0, $3Sbms$useEffect)(()=>{
17374
+ const onEnterRoom = async (event)=>{
17375
+ setVideoRecording(event.detail.videoRecording || {
17376
+ requested: false,
17377
+ started: false
17378
+ });
17379
+ if (event.detail.videoRecording?.requested) (0, $a5146f9062d7bf28$export$3a57e165650c636f)(t("notifications.recording"), {
17380
+ duration: 11000,
17381
+ icon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4731637db263b767$export$d9f09da0f8d1c822), {}),
17382
+ messageStyle: {
17383
+ fontWeight: 600
17384
+ }
17385
+ });
17386
+ if (!options.recorder?.enabled) setStreamState("streaming");
17387
+ };
17388
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
17389
+ return ()=>{
17390
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
17391
+ };
17392
+ }, [
17393
+ options,
17394
+ t
17395
+ ]);
17396
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$QueryClientProvider), {
17397
+ client: $26ed036cbc17809a$var$queryClient,
17398
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039).Provider, {
17399
+ value: {
17400
+ token: options.token || "",
17401
+ videoRecording: videoRecording,
17402
+ setVideoRecording: setVideoRecording,
17403
+ headless: Boolean(options.headless),
17404
+ plan: plan,
17405
+ permissions: permissions,
17406
+ selfPeerId: selfPeerId,
17407
+ streamUIContainerRef: streamUIContainerRef,
17408
+ videosContainerRef: videosContainerRef,
17409
+ remoteTilesContainerRef: remoteTilesContainerRef,
17410
+ streamState: streamState,
17411
+ setStreamState: setStreamState,
17412
+ isQuickConnectPopupVisible: isQuickConnectPopupVisible,
17413
+ setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible,
17414
+ isSettingsMenuVisible: isSettingsMenuVisible,
17415
+ setIsSettingsMenuVisible: setIsSettingsMenuVisible,
17416
+ isYoutubePopupVisible: isYoutubePopupVisible,
17417
+ setIsYoutubePopupVisible: setIsYoutubePopupVisible,
17418
+ isLinksharePopupVisible: isLinksharePopupVisible,
17419
+ setIsLinksharePopupVisible: setIsLinksharePopupVisible,
17420
+ isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
17421
+ setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
17422
+ isBlockedFeaturePopupOpen: isBlockedFeaturePopupOpen,
17423
+ setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen,
17424
+ isRecordingStartPopupOpen: isRecordingStartPopupOpen,
17425
+ setRecordingStartPopupOpen: setRecordingStartPopupOpen,
17426
+ theme: theme,
17427
+ setTheme: setTheme,
17428
+ language: language,
17429
+ setLanguage: setLanguage,
17430
+ options: options,
17431
+ profile: profile,
17432
+ muted: muted,
17433
+ streaming: streaming,
17434
+ screensharing: screensharing,
17435
+ isAgent: isAgent,
17436
+ userInteractionTriggered: userInteractionTriggered,
17437
+ orientation: orientation
17438
+ },
17439
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$ThemeProvider), {
17440
+ theme: styledTheme,
16593
17441
  children: [
16594
- desktop && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$b302ef9d8310f71), {
16595
- children: [
16596
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$ae01dedf5c052bb), {
16597
- webcamEnabled: webcamEnabled,
16598
- ref: videoRef,
16599
- autoPlay: true
16600
- }),
16601
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$65550b47dde6d016), {
16602
- webcamEnabled: webcamEnabled,
16603
- children: [
16604
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$778ed67917f5eacf), {
16605
- children: [
16606
- !micEnabled && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$92fe811838849d7d), {
16607
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6043ae1b48c5aa97$export$2e2bcd8739ae039), {
16608
- status: !micEnabled
16609
- })
16610
- }),
16611
- !webcamEnabled && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$92fe811838849d7d), {
16612
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $04e57b1f07a8e9f4$export$2e2bcd8739ae039), {
16613
- status: !webcamEnabled
16614
- })
16615
- })
16616
- ]
16617
- }),
16618
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$6e8af0bd0a2aaa77), {
16619
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $57da43088f4a416a$export$2e2bcd8739ae039), {})
16620
- })
16621
- ]
16622
- }),
16623
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$48377ae1c677702b), {
16624
- children: [
16625
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$6e8af0bd0a2aaa77), {
16626
- onClick: onMicrophoneClick,
16627
- danger: !micEnabled,
16628
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6043ae1b48c5aa97$export$2e2bcd8739ae039), {
16629
- status: !micEnabled
16630
- })
16631
- }),
16632
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$6e8af0bd0a2aaa77), {
16633
- onClick: onCameraClick,
16634
- danger: !webcamEnabled,
16635
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $04e57b1f07a8e9f4$export$2e2bcd8739ae039), {
16636
- status: !webcamEnabled
16637
- })
16638
- })
16639
- ]
16640
- })
16641
- ]
16642
- }),
16643
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$c7a6f02121c3b3b5), {
17442
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4fb4815baa04b470$export$20f257fc407da7a3), {}),
17443
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d6008ea114507578$export$2e2bcd8739ae039), {}),
17444
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $4fb4815baa04b470$export$914ddf2021ea8ee6), {
17445
+ ref: streamUIContainerRef,
16644
17446
  children: [
16645
- desktop && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$916d4667067f956a), {
16646
- children: t("greeting.sideTitle")
17447
+ streamState === "loading" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91d20ee7d2ade85c$export$669f6ea7d267feaf), {}),
17448
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3a42b2ef7646d035$export$2e2bcd8739ae039), {}),
17449
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Toaster), {
17450
+ duration: 3000,
17451
+ className: "gap-2"
16647
17452
  }),
16648
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$190947c3048e2d5d), {
16649
- children: t("greeting.sideDescription")
17453
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $805d92fa41e6e1b0$export$2e2bcd8739ae039), {}),
17454
+ isBlockedDevicesPopupOpen && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6aca0f707e80bf63$export$2e2bcd8739ae039), {
17455
+ close: ()=>{
17456
+ setUserInteractionTriggered(true);
17457
+ setBlockedDevicesPopupOpen(false);
17458
+ }
16650
17459
  }),
16651
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$f5b8910cec6cf069), {
16652
- ref: inputRef,
16653
- name: "displayName",
16654
- type: "text",
16655
- placeholder: t("greeting.namePlaceholder"),
16656
- autoFocus: true
17460
+ streamState === "greeting" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $8f7af36c0532a6c4$export$2e2bcd8739ae039), {}),
17461
+ streamState === "recorder" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $b76354b532370976$export$336a011955157f9a), {}),
17462
+ (streamState === "streaming" || streamState === "loading") && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
17463
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $cce9fd41d8a55a18$export$74636703cfe1eecf), {
17464
+ children: [
17465
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c6a143d1088045e0$export$ed71079a84f20635), {}),
17466
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $f235befa4cdc42d6$export$2e2bcd8739ae039), {}),
17467
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $cdab47bb8796991e$export$2e2bcd8739ae039), {}),
17468
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $69a9c49ece80e773$export$2e2bcd8739ae039), {}),
17469
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $01986a58bfba8001$export$2e2bcd8739ae039), {})
17470
+ ]
17471
+ })
16657
17472
  }),
16658
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$353f5b6fc5456de1), {
16659
- onClick: onSubmit,
16660
- children: t("greeting.nameSubmit")
16661
- })
17473
+ (streamState === "ended" || streamState === "terminated" || streamState === "full" || streamState === "expired") && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $df41bfe6da05853a$export$2e2bcd8739ae039), {})
16662
17474
  ]
16663
17475
  })
16664
17476
  ]
16665
- }),
16666
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $35c6a4b506b7dc62$export$a06f1c675e846f6f), {
16667
- children: [
16668
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$53e4a0ea45e729a2), {
16669
- children: t("greeting.footerTitle")
16670
- }),
16671
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $35c6a4b506b7dc62$export$eb20cbaff2d739a5), {
16672
- children: t("greeting.footerDescription")
16673
- })
16674
- ]
16675
17477
  })
16676
- ]
17478
+ })
16677
17479
  });
16678
17480
  };
16679
- var $f8d57e3d223f5089$export$2e2bcd8739ae039 = $f8d57e3d223f5089$var$GreetingView;
17481
+ var $26ed036cbc17809a$export$2e2bcd8739ae039 = $26ed036cbc17809a$var$StreamUI;
17482
+
17483
+
17484
+
17485
+ // https://help.hotjar.com/hc/en-us/articles/360033640653-Identify-API-Reference#01G2A279ZXW4JT60NKXKX69G49
17486
+ // prettier-ignore
17487
+ // @ts-ignore
17488
+ window.hj = window.hj || function() {
17489
+ (hj.q = hj.q || []).push(arguments);
17490
+ };
17491
+
16680
17492
 
16681
17493
 
16682
17494
  var $1e2747ca72d0ab49$exports = {};
16683
- $1e2747ca72d0ab49$exports = "*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #93c5fd80;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.pointer-events-auto {\n pointer-events: auto;\n}\n\n.visible {\n visibility: visible;\n}\n\n.invisible {\n visibility: hidden;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.bottom-2 {\n bottom: .5rem;\n}\n\n.bottom-4 {\n bottom: 1rem;\n}\n\n.left-1 {\n left: .25rem;\n}\n\n.left-1\\/2, .left-\\[50\\%\\] {\n left: 50%;\n}\n\n.right-0 {\n right: 0;\n}\n\n.right-1 {\n right: .25rem;\n}\n\n.right-2 {\n right: .5rem;\n}\n\n.right-6 {\n right: 1.5rem;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n.top-2 {\n top: .5rem;\n}\n\n.top-6 {\n top: 1.5rem;\n}\n\n.top-8 {\n top: 2rem;\n}\n\n.top-\\[50\\%\\] {\n top: 50%;\n}\n\n.top-auto {\n top: auto;\n}\n\n.z-10 {\n z-index: 10;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[150\\] {\n z-index: 150;\n}\n\n.-mx-1 {\n margin-left: -.25rem;\n margin-right: -.25rem;\n}\n\n.mx-1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.-mr-2 {\n margin-right: -.5rem;\n}\n\n.mb-4 {\n margin-bottom: 1rem;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.ml-1 {\n margin-left: .25rem;\n}\n\n.mr-2 {\n margin-right: .5rem;\n}\n\n.mr-2\\.5 {\n margin-right: .625rem;\n}\n\n.mt-1 {\n margin-top: .25rem;\n}\n\n.mt-2 {\n margin-top: .5rem;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.h-14 {\n height: 3.5rem;\n}\n\n.h-16 {\n height: 4rem;\n}\n\n.h-3 {\n height: .75rem;\n}\n\n.h-4 {\n height: 1rem;\n}\n\n.h-5 {\n height: 1.25rem;\n}\n\n.h-6 {\n height: 1.5rem;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-9 {\n height: 2.25rem;\n}\n\n.h-\\[100px\\] {\n height: 100px;\n}\n\n.h-\\[150px\\] {\n height: 150px;\n}\n\n.h-\\[16px\\] {\n height: 16px;\n}\n\n.h-\\[1px\\] {\n height: 1px;\n}\n\n.h-\\[200px\\] {\n height: 200px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[36px\\] {\n height: 36px;\n}\n\n.h-\\[384px\\] {\n height: 384px;\n}\n\n.h-\\[40px\\] {\n height: 40px;\n}\n\n.h-\\[45px\\] {\n height: 45px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[8px\\] {\n height: 8px;\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-px {\n height: 1px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n\n.max-h-full {\n max-height: 100%;\n}\n\n.max-h-screen {\n max-height: 100vh;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-9 {\n min-height: 2.25rem;\n}\n\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n\n.w-0 {\n width: 0;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-12 {\n width: 3rem;\n}\n\n.w-16 {\n width: 4rem;\n}\n\n.w-3 {\n width: .75rem;\n}\n\n.w-4 {\n width: 1rem;\n}\n\n.w-5 {\n width: 1.25rem;\n}\n\n.w-72 {\n width: 18rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-\\[100px\\] {\n width: 100px;\n}\n\n.w-\\[130px\\] {\n width: 130px;\n}\n\n.w-\\[16px\\] {\n width: 16px;\n}\n\n.w-\\[1px\\] {\n width: 1px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[334px\\] {\n width: 334px;\n}\n\n.w-\\[36px\\] {\n width: 36px;\n}\n\n.w-\\[42px\\] {\n width: 42px;\n}\n\n.w-\\[45px\\] {\n width: 45px;\n}\n\n.w-\\[50\\%\\] {\n width: 50%;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[8px\\] {\n width: 8px;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-max {\n width: max-content;\n}\n\n.min-w-0 {\n min-width: 0;\n}\n\n.min-w-\\[120px\\] {\n min-width: 120px;\n}\n\n.min-w-\\[144px\\] {\n min-width: 144px;\n}\n\n.min-w-\\[24px\\] {\n min-width: 24px;\n}\n\n.min-w-\\[250px\\] {\n min-width: 250px;\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[1110px\\] {\n max-width: 1110px;\n}\n\n.max-w-\\[350px\\] {\n max-width: 350px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n\n.shrink {\n flex-shrink: 1;\n}\n\n.shrink-0 {\n flex-shrink: 0;\n}\n\n.flex-grow, .grow {\n flex-grow: 1;\n}\n\n.grow-0 {\n flex-grow: 0;\n}\n\n.caption-bottom {\n caption-side: bottom;\n}\n\n.border-collapse {\n border-collapse: collapse;\n}\n\n.-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-0\\.5 {\n --tw-translate-x: .125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-0 {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.scale-x-\\[-1\\] {\n --tw-scale-x: -1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: 1s linear infinite spin;\n}\n\n.cursor-default {\n cursor: default;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.resize {\n resize: both;\n}\n\n.appearance-none {\n appearance: none;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.items-end {\n align-items: flex-end;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-1 {\n gap: .25rem;\n}\n\n.gap-1\\.5 {\n gap: .375rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-3 {\n gap: .75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.gap-6 {\n gap: 1.5rem;\n}\n\n.gap-\\[10px\\] {\n gap: 10px;\n}\n\n.gap-\\[20px\\] {\n gap: 20px;\n}\n\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(.25rem * var(--tw-space-x-reverse));\n margin-left: calc(.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.25rem * var(--tw-space-y-reverse));\n}\n\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.375rem * var(--tw-space-y-reverse));\n}\n\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n\n.space-y-5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));\n}\n\n.self-center {\n align-self: center;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-visible {\n overflow: visible;\n}\n\n.overflow-y-auto {\n overflow-y: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.whitespace-pre-line {\n white-space: pre-line;\n}\n\n.\\!rounded-md {\n border-radius: .375rem !important;\n}\n\n.rounded {\n border-radius: .25rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[3px\\] {\n border-radius: 3px;\n}\n\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n\n.rounded-\\[50\\%\\] {\n border-radius: 50%;\n}\n\n.rounded-\\[64px\\] {\n border-radius: 64px;\n}\n\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-xl {\n border-radius: .75rem;\n}\n\n.rounded-t-3xl {\n border-top-left-radius: 1.5rem;\n border-top-right-radius: 1.5rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-0 {\n border-width: 0;\n}\n\n.border-2, .border-\\[2px\\] {\n border-width: 2px;\n}\n\n.border-\\[3px\\] {\n border-width: 3px;\n}\n\n.border-\\[4px\\] {\n border-width: 4px;\n}\n\n.border-\\[5px\\] {\n border-width: 5px;\n}\n\n.border-b {\n border-bottom-width: 1px;\n}\n\n.border-l {\n border-left-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.border-\\[white\\] {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-amber-700 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-amber-700) / var(--tw-border-opacity));\n}\n\n.border-gray-1000 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-1000) / var(--tw-border-opacity));\n}\n\n.border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n}\n\n.border-gray-600 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-600) / var(--tw-border-opacity));\n}\n\n.border-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n}\n\n.border-transparent {\n border-color: #0000;\n}\n\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-b-red-700 {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n}\n\n.border-l-red-700 {\n --tw-border-opacity: 1;\n border-left-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n}\n\n.\\!bg-transparent {\n background-color: #0000 !important;\n}\n\n.bg-\\[\\#171717\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(23 23 23 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#242424\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(36 36 36 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#ff0000\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 0 0 / var(--tw-bg-opacity));\n}\n\n.bg-amber-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-100) / var(--tw-bg-opacity));\n}\n\n.bg-amber-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-200) / var(--tw-bg-opacity));\n}\n\n.bg-amber-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n}\n\n.bg-black\\/25 {\n background-color: #00000040;\n}\n\n.bg-black\\/\\[\\.6\\] {\n background-color: #0009;\n}\n\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.bg-blue-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-300) / var(--tw-bg-opacity));\n}\n\n.bg-blue-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.bg-bronze-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-bronze-300) / var(--tw-bg-opacity));\n}\n\n.bg-brown-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-100) / var(--tw-bg-opacity));\n}\n\n.bg-brown-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-300) / var(--tw-bg-opacity));\n}\n\n.bg-brown-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n}\n\n.bg-crimson-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-100) / var(--tw-bg-opacity));\n}\n\n.bg-crimson-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-300) / var(--tw-bg-opacity));\n}\n\n.bg-crimson-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n}\n\n.bg-cyan-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-100) / var(--tw-bg-opacity));\n}\n\n.bg-cyan-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-300) / var(--tw-bg-opacity));\n}\n\n.bg-cyan-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n}\n\n.bg-gold-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gold-300) / var(--tw-bg-opacity));\n}\n\n.bg-grass-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-grass-300) / var(--tw-bg-opacity));\n}\n\n.bg-gray-1000 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-1000) / var(--tw-bg-opacity));\n}\n\n.bg-gray-1000\\/25 {\n background-color: rgb(var(--color-gray-1000) / .25);\n}\n\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n}\n\n.bg-gray-25 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n}\n\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n}\n\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.bg-gray-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-600) / var(--tw-bg-opacity));\n}\n\n.bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-900) / var(--tw-bg-opacity));\n}\n\n.bg-green-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-100) / var(--tw-bg-opacity));\n}\n\n.bg-green-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-300) / var(--tw-bg-opacity));\n}\n\n.bg-green-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n}\n\n.bg-indigo-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-indigo-300) / var(--tw-bg-opacity));\n}\n\n.bg-lime-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-lime-300) / var(--tw-bg-opacity));\n}\n\n.bg-orange-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-orange-100) / var(--tw-bg-opacity));\n}\n\n.bg-orange-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-orange-700) / var(--tw-bg-opacity));\n}\n\n.bg-plum-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-plum-300) / var(--tw-bg-opacity));\n}\n\n.bg-purple-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-purple-300) / var(--tw-bg-opacity));\n}\n\n.bg-red-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n}\n\n.bg-red-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-300) / var(--tw-bg-opacity));\n}\n\n.bg-red-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n}\n\n.bg-teal-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-100) / var(--tw-bg-opacity));\n}\n\n.bg-teal-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-300) / var(--tw-bg-opacity));\n}\n\n.bg-teal-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-violet-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-100) / var(--tw-bg-opacity));\n}\n\n.bg-violet-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-300) / var(--tw-bg-opacity));\n}\n\n.bg-violet-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-yellow-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-yellow-300) / var(--tw-bg-opacity));\n}\n\n.bg-\\[url\\(\\'https\\:\\/\\/cdn\\.snapcall\\.io\\/img\\/assist\\/gradient-bg\\.jpg\\'\\)\\] {\n background-image: url(\"https://cdn.snapcall.io/img/assist/gradient-bg.jpg\");\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.bg-center {\n background-position: center;\n}\n\n.object-contain {\n object-fit: contain;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-0 {\n padding: 0;\n}\n\n.p-1 {\n padding: .25rem;\n}\n\n.p-1\\.5 {\n padding: .375rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-3 {\n padding: .75rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.p-6 {\n padding: 1.5rem;\n}\n\n.p-\\[11px\\] {\n padding: 11px;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.px-\\[60px\\] {\n padding-left: 60px;\n padding-right: 60px;\n}\n\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.py-0\\.5 {\n padding-top: .125rem;\n padding-bottom: .125rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-2\\.5 {\n padding-top: .625rem;\n padding-bottom: .625rem;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pb-\\[20px\\] {\n padding-bottom: 20px;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pl-2 {\n padding-left: .5rem;\n}\n\n.pl-2\\.5 {\n padding-left: .625rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pr-2 {\n padding-right: .5rem;\n}\n\n.pr-3 {\n padding-right: .75rem;\n}\n\n.pr-3\\.5 {\n padding-right: .875rem;\n}\n\n.pt-1 {\n padding-top: .25rem;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-\\[10px\\] {\n font-size: 10px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-\\[30px\\] {\n font-size: 30px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.text-md {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 20px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 16px;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.leading-\\[20px\\] {\n line-height: 20px;\n}\n\n.leading-none {\n line-height: 1;\n}\n\n.text-\\[\\#707070\\] {\n --tw-text-opacity: 1;\n color: rgb(112 112 112 / var(--tw-text-opacity));\n}\n\n.text-amber-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n}\n\n.text-blue-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.text-bronze-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-bronze-700) / var(--tw-text-opacity));\n}\n\n.text-brown-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-brown-700) / var(--tw-text-opacity));\n}\n\n.text-crimson-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-crimson-700) / var(--tw-text-opacity));\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-cyan-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-cyan-700) / var(--tw-text-opacity));\n}\n\n.text-gold-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gold-700) / var(--tw-text-opacity));\n}\n\n.text-grass-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-grass-700) / var(--tw-text-opacity));\n}\n\n.text-gray-100 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-100) / var(--tw-text-opacity));\n}\n\n.text-gray-1000 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n}\n\n.text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n}\n\n.text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n}\n\n.text-green-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-green-700) / var(--tw-text-opacity));\n}\n\n.text-indigo-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-indigo-700) / var(--tw-text-opacity));\n}\n\n.text-lime-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-lime-700) / var(--tw-text-opacity));\n}\n\n.text-orange-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-orange-700) / var(--tw-text-opacity));\n}\n\n.text-plum-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-plum-700) / var(--tw-text-opacity));\n}\n\n.text-primary {\n --tw-text-opacity: 1;\n color: rgb(29 28 32 / var(--tw-text-opacity));\n}\n\n.text-purple-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-purple-700) / var(--tw-text-opacity));\n}\n\n.text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-red-700) / var(--tw-text-opacity));\n}\n\n.text-teal-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-teal-700) / var(--tw-text-opacity));\n}\n\n.text-violet-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-violet-700) / var(--tw-text-opacity));\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-yellow-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-yellow-700) / var(--tw-text-opacity));\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.underline-offset-8 {\n text-underline-offset: 8px;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.shadow-dropdown-sm {\n --tw-shadow: 0px 1px 2px 0px #1018280f, 0px 1px 3px 0px #1018281a;\n --tw-shadow-colored: 0px 1px 2px 0px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-4 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-inset {\n --tw-ring-inset: inset;\n}\n\n.ring-amber-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-amber-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-700 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.ring-brown-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-brown-300) / var(--tw-ring-opacity));\n}\n\n.ring-crimson-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-crimson-300) / var(--tw-ring-opacity));\n}\n\n.ring-cyan-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-cyan-300) / var(--tw-ring-opacity));\n}\n\n.ring-gray-200 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-200) / var(--tw-ring-opacity));\n}\n\n.ring-green-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-green-300) / var(--tw-ring-opacity));\n}\n\n.ring-orange-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-orange-300) / var(--tw-ring-opacity));\n}\n\n.ring-red-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-300) / var(--tw-ring-opacity));\n}\n\n.ring-teal-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-teal-300) / var(--tw-ring-opacity));\n}\n\n.ring-violet-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-violet-300) / var(--tw-ring-opacity));\n}\n\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));\n}\n\n.ring-white\\/20 {\n --tw-ring-color: #fff3;\n}\n\n.ring-offset-0 {\n --tw-ring-offset-width: 0px;\n}\n\n.ring-offset-white {\n --tw-ring-offset-color: #fff;\n}\n\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.backdrop-blur-\\[30px\\] {\n --tw-backdrop-blur: blur(30px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-all {\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-transform {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-1000 {\n transition-duration: 1s;\n}\n\n.duration-200 {\n transition-duration: .2s;\n}\n\n.duration-300 {\n transition-duration: .3s;\n}\n\n.ease-linear {\n transition-timing-function: linear;\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.will-change-transform {\n will-change: transform;\n}\n\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n\n.animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.fade-in, .fade-in-0 {\n --tw-enter-opacity: 0;\n}\n\n.fade-out {\n --tw-exit-opacity: 0;\n}\n\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n\n.duration-1000 {\n animation-duration: 1s;\n}\n\n.duration-200 {\n animation-duration: .2s;\n}\n\n.duration-300 {\n animation-duration: .3s;\n}\n\n.ease-linear {\n animation-timing-function: linear;\n}\n\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.paused {\n animation-play-state: paused;\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.placeholder\\:text-gray-700::placeholder {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n}\n\n.placeholder\\:text-gray-900::placeholder {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n}\n\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n\n.focus-within\\:z-20:focus-within {\n z-index: 20;\n}\n\n.focus-within\\:border-gray-200:focus-within {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n}\n\n.focus-within\\:bg-gray-100:focus-within {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.focus-within\\:outline:focus-within {\n outline-style: solid;\n}\n\n.focus-within\\:outline-\\[2px\\]:focus-within {\n outline-width: 2px;\n}\n\n.focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n}\n\n.focus-within\\:outline-blue-300:focus-within {\n outline-color: rgb(var(--color-blue-300) / 1);\n}\n\n.focus-within\\:outline-red-700:focus-within {\n outline-color: rgb(var(--color-red-700) / 1);\n}\n\n.hover\\:bg-\\[\\#292929\\]:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-50) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-800:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-800) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-red-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-red-800:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-800) / var(--tw-bg-opacity));\n}\n\n.hover\\:text-blue-700:hover {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:bg-gray-100:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus\\:ring-1:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.focus-visible\\:outline-none:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-gray-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-\\[\\#292929\\]:active {\n --tw-bg-opacity: 1;\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n}\n\n.active\\:bg-blue-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-200) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-blue-900:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-900) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-gray-100:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-gray-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-gray-500:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-500) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-red-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-200) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-red-900:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-900) / var(--tw-bg-opacity));\n}\n\n.active\\:text-blue-700:active {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.active\\:text-blue-900:active {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-900) / var(--tw-text-opacity));\n}\n\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:opacity-40:disabled {\n opacity: .4;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n.group:focus-within .group-focus-within\\:bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.group:hover .group-hover\\:bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.group:active .group-active\\:bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: .7;\n}\n\n.aria-selected\\:bg-blue-100[aria-selected=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.aria-selected\\:text-blue-700[aria-selected=\"true\"] {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\n --tw-translate-y: .25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\n --tw-translate-x: -.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\n --tw-translate-x: .25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\n --tw-translate-y: -.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: .2s ease-out accordion-up;\n}\n\n@keyframes accordion-down {\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: .2s ease-out accordion-down;\n}\n\n.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n}\n\n.data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"] {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n}\n\n.data-\\[disabled\\]\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-state=\"unchecked\"][data-disabled] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n}\n\n.data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-bronze-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gold-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-grass-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-indigo-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-lime-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-plum-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-purple-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-yellow-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=active\\]\\:font-semibold[data-state=\"active\"] {\n font-weight: 600;\n}\n\n.data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.data-\\[state\\=active\\]\\:text-gray-1000[data-state=\"active\"] {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n}\n\n.data-\\[disabled\\]\\:opacity-40[data-disabled] {\n opacity: .4;\n}\n\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: .5;\n}\n\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=\"active\"] {\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n}\n\n.data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"], .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n}\n\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n}\n\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n}\n\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n}\n\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n}\n\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n}\n\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-left-\\[50\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-x: -50%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-left-\\[50\\%\\][data-state=\"open\"] {\n --tw-enter-translate-x: -50%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.group[data-state=\"open\"] .group-data-\\[state\\=open\\]\\:rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.group[data-state=\"checked\"] .group-data-\\[state\\=checked\\]\\:bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:opacity-50 {\n opacity: .5;\n}\n\n@media not all and (width >= 640px) {\n .max-sm\\:gap-4 {\n gap: 1rem;\n }\n\n .max-sm\\:p-4 {\n padding: 1rem;\n }\n}\n\n@media (width >= 640px) {\n .sm\\:mt-0 {\n margin-top: 0;\n }\n\n .sm\\:w-1\\/2 {\n width: 50%;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:justify-center {\n justify-content: center;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(.5rem * var(--tw-space-x-reverse));\n margin-left: calc(.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n}\n\n@media (width >= 768px) {\n .md\\:w-\\[334px\\] {\n width: 334px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:w-screen {\n width: 100vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n}\n\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-blue-100:has([aria-selected]) {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: .375rem;\n border-bottom-left-radius: .375rem;\n}\n\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: .375rem;\n border-bottom-right-radius: .375rem;\n}\n\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: 0;\n}\n\n.\\[\\&\\:not\\(\\[aria-selected\\]\\)\\]\\:hover\\:bg-gray-100:hover:not([aria-selected]) {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\n --tw-translate-y: 2px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.\\[\\&\\>svg\\]\\:h-\\[18px\\] > svg {\n height: 18px;\n}\n\n.\\[\\&\\>svg\\]\\:w-\\[18px\\] > svg {\n width: 18px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n\n.\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active, .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n}\n\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0;\n}\n\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n\n";
17495
+ $1e2747ca72d0ab49$exports = "*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #93c5fd80;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.pointer-events-auto {\n pointer-events: auto;\n}\n\n.visible {\n visibility: visible;\n}\n\n.invisible {\n visibility: hidden;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.bottom-2 {\n bottom: .5rem;\n}\n\n.bottom-4 {\n bottom: 1rem;\n}\n\n.left-1 {\n left: .25rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-2 {\n left: .5rem;\n}\n\n.left-\\[50\\%\\] {\n left: 50%;\n}\n\n.right-0 {\n right: 0;\n}\n\n.right-1 {\n right: .25rem;\n}\n\n.right-2 {\n right: .5rem;\n}\n\n.right-6 {\n right: 1.5rem;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n.top-2 {\n top: .5rem;\n}\n\n.top-6 {\n top: 1.5rem;\n}\n\n.top-8 {\n top: 2rem;\n}\n\n.top-\\[50\\%\\] {\n top: 50%;\n}\n\n.top-auto {\n top: auto;\n}\n\n.z-10 {\n z-index: 10;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[150\\] {\n z-index: 150;\n}\n\n.-mx-1 {\n margin-left: -.25rem;\n margin-right: -.25rem;\n}\n\n.mx-1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.-mr-2 {\n margin-right: -.5rem;\n}\n\n.mb-4 {\n margin-bottom: 1rem;\n}\n\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.ml-1 {\n margin-left: .25rem;\n}\n\n.mr-2 {\n margin-right: .5rem;\n}\n\n.mr-2\\.5 {\n margin-right: .625rem;\n}\n\n.mt-1 {\n margin-top: .25rem;\n}\n\n.mt-2 {\n margin-top: .5rem;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.\\!h-\\[24px\\] {\n height: 24px !important;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-10 {\n height: 2.5rem;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.h-14 {\n height: 3.5rem;\n}\n\n.h-16 {\n height: 4rem;\n}\n\n.h-3 {\n height: .75rem;\n}\n\n.h-4 {\n height: 1rem;\n}\n\n.h-5 {\n height: 1.25rem;\n}\n\n.h-6 {\n height: 1.5rem;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-9 {\n height: 2.25rem;\n}\n\n.h-\\[100px\\] {\n height: 100px;\n}\n\n.h-\\[150px\\] {\n height: 150px;\n}\n\n.h-\\[16px\\] {\n height: 16px;\n}\n\n.h-\\[1px\\] {\n height: 1px;\n}\n\n.h-\\[200px\\] {\n height: 200px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[36px\\] {\n height: 36px;\n}\n\n.h-\\[384px\\] {\n height: 384px;\n}\n\n.h-\\[400px\\] {\n height: 400px;\n}\n\n.h-\\[40px\\] {\n height: 40px;\n}\n\n.h-\\[45px\\] {\n height: 45px;\n}\n\n.h-\\[54px\\] {\n height: 54px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[8px\\] {\n height: 8px;\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-px {\n height: 1px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n\n.max-h-full {\n max-height: 100%;\n}\n\n.max-h-screen {\n max-height: 100vh;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-9 {\n min-height: 2.25rem;\n}\n\n.min-h-\\[20px\\] {\n min-height: 20px;\n}\n\n.min-h-\\[400px\\] {\n min-height: 400px;\n}\n\n.min-h-\\[44px\\] {\n min-height: 44px;\n}\n\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n\n.min-h-screen {\n min-height: 100vh;\n}\n\n.\\!w-\\[24px\\] {\n width: 24px !important;\n}\n\n.w-0 {\n width: 0;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-10 {\n width: 2.5rem;\n}\n\n.w-12 {\n width: 3rem;\n}\n\n.w-16 {\n width: 4rem;\n}\n\n.w-3 {\n width: .75rem;\n}\n\n.w-4 {\n width: 1rem;\n}\n\n.w-5 {\n width: 1.25rem;\n}\n\n.w-6 {\n width: 1.5rem;\n}\n\n.w-72 {\n width: 18rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-\\[100px\\] {\n width: 100px;\n}\n\n.w-\\[130px\\] {\n width: 130px;\n}\n\n.w-\\[16px\\] {\n width: 16px;\n}\n\n.w-\\[1px\\] {\n width: 1px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[334px\\] {\n width: 334px;\n}\n\n.w-\\[36px\\] {\n width: 36px;\n}\n\n.w-\\[400px\\] {\n width: 400px;\n}\n\n.w-\\[40px\\] {\n width: 40px;\n}\n\n.w-\\[42px\\] {\n width: 42px;\n}\n\n.w-\\[45px\\] {\n width: 45px;\n}\n\n.w-\\[50\\%\\] {\n width: 50%;\n}\n\n.w-\\[54px\\] {\n width: 54px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[8px\\] {\n width: 8px;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-max {\n width: max-content;\n}\n\n.min-w-0 {\n min-width: 0;\n}\n\n.min-w-\\[120px\\] {\n min-width: 120px;\n}\n\n.min-w-\\[144px\\] {\n min-width: 144px;\n}\n\n.min-w-\\[24px\\] {\n min-width: 24px;\n}\n\n.min-w-\\[250px\\] {\n min-width: 250px;\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[1110px\\] {\n max-width: 1110px;\n}\n\n.max-w-\\[315px\\] {\n max-width: 315px;\n}\n\n.max-w-\\[350px\\] {\n max-width: 350px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n\n.shrink {\n flex-shrink: 1;\n}\n\n.shrink-0 {\n flex-shrink: 0;\n}\n\n.flex-grow, .grow {\n flex-grow: 1;\n}\n\n.grow-0 {\n flex-grow: 0;\n}\n\n.caption-bottom {\n caption-side: bottom;\n}\n\n.border-collapse {\n border-collapse: collapse;\n}\n\n.-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-0\\.5 {\n --tw-translate-x: .125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-0 {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-scale-x-\\[1\\], .scale-x-\\[-1\\] {\n --tw-scale-x: -1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: 1s linear infinite spin;\n}\n\n.cursor-default {\n cursor: default;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.resize {\n resize: both;\n}\n\n.appearance-none {\n appearance: none;\n}\n\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.items-end {\n align-items: flex-end;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-stretch {\n align-items: stretch;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-1 {\n gap: .25rem;\n}\n\n.gap-1\\.5 {\n gap: .375rem;\n}\n\n.gap-12 {\n gap: 3rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-3 {\n gap: .75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.gap-6 {\n gap: 1.5rem;\n}\n\n.gap-8 {\n gap: 2rem;\n}\n\n.gap-\\[10px\\] {\n gap: 10px;\n}\n\n.gap-\\[20px\\] {\n gap: 20px;\n}\n\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(.25rem * var(--tw-space-x-reverse));\n margin-left: calc(.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.25rem * var(--tw-space-y-reverse));\n}\n\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.375rem * var(--tw-space-y-reverse));\n}\n\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n\n.space-y-5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));\n}\n\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n}\n\n.self-center {\n align-self: center;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-visible {\n overflow: visible;\n}\n\n.overflow-y-auto {\n overflow-y: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.whitespace-pre-line {\n white-space: pre-line;\n}\n\n.\\!rounded-md {\n border-radius: .375rem !important;\n}\n\n.rounded {\n border-radius: .25rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[3px\\] {\n border-radius: 3px;\n}\n\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n\n.rounded-\\[50\\%\\] {\n border-radius: 50%;\n}\n\n.rounded-\\[64px\\] {\n border-radius: 64px;\n}\n\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-xl {\n border-radius: .75rem;\n}\n\n.rounded-t-3xl {\n border-top-left-radius: 1.5rem;\n border-top-right-radius: 1.5rem;\n}\n\n.\\!border-0 {\n border-width: 0 !important;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-2, .border-\\[2px\\] {\n border-width: 2px;\n}\n\n.border-\\[3px\\] {\n border-width: 3px;\n}\n\n.border-\\[4px\\] {\n border-width: 4px;\n}\n\n.border-\\[5px\\] {\n border-width: 5px;\n}\n\n.border-b {\n border-bottom-width: 1px;\n}\n\n.border-l {\n border-left-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-\\[\\#292929\\] {\n --tw-border-opacity: 1;\n border-color: rgb(41 41 41 / var(--tw-border-opacity));\n}\n\n.border-\\[white\\] {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-amber-700 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-amber-700) / var(--tw-border-opacity));\n}\n\n.border-blue-200 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-blue-200) / var(--tw-border-opacity));\n}\n\n.border-blue-700 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n}\n\n.border-gray-1000 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-1000) / var(--tw-border-opacity));\n}\n\n.border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n}\n\n.border-gray-600 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-600) / var(--tw-border-opacity));\n}\n\n.border-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n}\n\n.border-transparent {\n border-color: #0000;\n}\n\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-b-red-700 {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n}\n\n.border-l-red-700 {\n --tw-border-opacity: 1;\n border-left-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n}\n\n.\\!bg-transparent {\n background-color: #0000 !important;\n}\n\n.bg-\\[\\#171717\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(23 23 23 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#1C1C1C\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(28 28 28 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#242424\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(36 36 36 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#292929\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#ff0000\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 0 0 / var(--tw-bg-opacity));\n}\n\n.bg-amber-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-100) / var(--tw-bg-opacity));\n}\n\n.bg-amber-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-200) / var(--tw-bg-opacity));\n}\n\n.bg-amber-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n}\n\n.bg-black\\/25 {\n background-color: #00000040;\n}\n\n.bg-black\\/\\[\\.6\\] {\n background-color: #0009;\n}\n\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.bg-blue-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-300) / var(--tw-bg-opacity));\n}\n\n.bg-blue-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.bg-bronze-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-bronze-300) / var(--tw-bg-opacity));\n}\n\n.bg-brown-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-100) / var(--tw-bg-opacity));\n}\n\n.bg-brown-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-300) / var(--tw-bg-opacity));\n}\n\n.bg-brown-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n}\n\n.bg-crimson-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-100) / var(--tw-bg-opacity));\n}\n\n.bg-crimson-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-300) / var(--tw-bg-opacity));\n}\n\n.bg-crimson-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n}\n\n.bg-cyan-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-100) / var(--tw-bg-opacity));\n}\n\n.bg-cyan-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-300) / var(--tw-bg-opacity));\n}\n\n.bg-cyan-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n}\n\n.bg-gold-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gold-300) / var(--tw-bg-opacity));\n}\n\n.bg-grass-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-grass-300) / var(--tw-bg-opacity));\n}\n\n.bg-gray-1000 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-1000) / var(--tw-bg-opacity));\n}\n\n.bg-gray-1000\\/25 {\n background-color: rgb(var(--color-gray-1000) / .25);\n}\n\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n}\n\n.bg-gray-25 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n}\n\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n}\n\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.bg-gray-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-600) / var(--tw-bg-opacity));\n}\n\n.bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-900) / var(--tw-bg-opacity));\n}\n\n.bg-green-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-100) / var(--tw-bg-opacity));\n}\n\n.bg-green-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-300) / var(--tw-bg-opacity));\n}\n\n.bg-green-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n}\n\n.bg-indigo-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-indigo-300) / var(--tw-bg-opacity));\n}\n\n.bg-lime-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-lime-300) / var(--tw-bg-opacity));\n}\n\n.bg-orange-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-orange-100) / var(--tw-bg-opacity));\n}\n\n.bg-orange-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-orange-700) / var(--tw-bg-opacity));\n}\n\n.bg-plum-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-plum-300) / var(--tw-bg-opacity));\n}\n\n.bg-purple-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-purple-300) / var(--tw-bg-opacity));\n}\n\n.bg-red-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n}\n\n.bg-red-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-300) / var(--tw-bg-opacity));\n}\n\n.bg-red-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n}\n\n.bg-teal-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-100) / var(--tw-bg-opacity));\n}\n\n.bg-teal-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-300) / var(--tw-bg-opacity));\n}\n\n.bg-teal-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-violet-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-100) / var(--tw-bg-opacity));\n}\n\n.bg-violet-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-300) / var(--tw-bg-opacity));\n}\n\n.bg-violet-700 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-yellow-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-yellow-300) / var(--tw-bg-opacity));\n}\n\n.bg-\\[url\\(\\'https\\:\\/\\/cdn\\.snapcall\\.io\\/img\\/assist\\/gradient-bg\\.jpg\\'\\)\\] {\n background-image: url(\"https://cdn.snapcall.io/img/assist/gradient-bg.jpg\");\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.bg-center {\n background-position: center;\n}\n\n.object-contain {\n object-fit: contain;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-0 {\n padding: 0;\n}\n\n.p-1 {\n padding: .25rem;\n}\n\n.p-1\\.5 {\n padding: .375rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-3 {\n padding: .75rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.p-6 {\n padding: 1.5rem;\n}\n\n.p-8 {\n padding: 2rem;\n}\n\n.p-\\[11px\\] {\n padding: 11px;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.px-\\[60px\\] {\n padding-left: 60px;\n padding-right: 60px;\n}\n\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.py-0\\.5 {\n padding-top: .125rem;\n padding-bottom: .125rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-2\\.5 {\n padding-top: .625rem;\n padding-bottom: .625rem;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pb-\\[20px\\] {\n padding-bottom: 20px;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pl-2 {\n padding-left: .5rem;\n}\n\n.pl-2\\.5 {\n padding-left: .625rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pr-2 {\n padding-right: .5rem;\n}\n\n.pr-3 {\n padding-right: .75rem;\n}\n\n.pr-3\\.5 {\n padding-right: .875rem;\n}\n\n.pt-1 {\n padding-top: .25rem;\n}\n\n.pt-10 {\n padding-top: 2.5rem;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-3xl {\n letter-spacing: -.02em;\n font-size: 30px;\n line-height: 38px;\n}\n\n.text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n}\n\n.text-\\[10px\\] {\n font-size: 10px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-\\[30px\\] {\n font-size: 30px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.text-md {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 20px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 16px;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.leading-\\[20px\\] {\n line-height: 20px;\n}\n\n.leading-none {\n line-height: 1;\n}\n\n.text-\\[\\#707070\\] {\n --tw-text-opacity: 1;\n color: rgb(112 112 112 / var(--tw-text-opacity));\n}\n\n.text-amber-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n}\n\n.text-blue-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.text-bronze-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-bronze-700) / var(--tw-text-opacity));\n}\n\n.text-brown-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-brown-700) / var(--tw-text-opacity));\n}\n\n.text-crimson-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-crimson-700) / var(--tw-text-opacity));\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-cyan-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-cyan-700) / var(--tw-text-opacity));\n}\n\n.text-gold-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gold-700) / var(--tw-text-opacity));\n}\n\n.text-grass-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-grass-700) / var(--tw-text-opacity));\n}\n\n.text-gray-100 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-100) / var(--tw-text-opacity));\n}\n\n.text-gray-1000 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n}\n\n.text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n}\n\n.text-gray-800 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-800) / var(--tw-text-opacity));\n}\n\n.text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n}\n\n.text-green-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-green-700) / var(--tw-text-opacity));\n}\n\n.text-indigo-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-indigo-700) / var(--tw-text-opacity));\n}\n\n.text-lime-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-lime-700) / var(--tw-text-opacity));\n}\n\n.text-orange-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-orange-700) / var(--tw-text-opacity));\n}\n\n.text-plum-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-plum-700) / var(--tw-text-opacity));\n}\n\n.text-primary {\n --tw-text-opacity: 1;\n color: rgb(29 28 32 / var(--tw-text-opacity));\n}\n\n.text-purple-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-purple-700) / var(--tw-text-opacity));\n}\n\n.text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-red-700) / var(--tw-text-opacity));\n}\n\n.text-teal-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-teal-700) / var(--tw-text-opacity));\n}\n\n.text-violet-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-violet-700) / var(--tw-text-opacity));\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-yellow-700 {\n --tw-text-opacity: 1;\n color: rgb(var(--color-yellow-700) / var(--tw-text-opacity));\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.underline-offset-8 {\n text-underline-offset: 8px;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.shadow-dropdown-sm {\n --tw-shadow: 0px 1px 2px 0px #1018280f, 0px 1px 3px 0px #1018281a;\n --tw-shadow-colored: 0px 1px 2px 0px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-4 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-inset {\n --tw-ring-inset: inset;\n}\n\n.ring-amber-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-amber-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-700 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.ring-brown-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-brown-300) / var(--tw-ring-opacity));\n}\n\n.ring-crimson-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-crimson-300) / var(--tw-ring-opacity));\n}\n\n.ring-cyan-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-cyan-300) / var(--tw-ring-opacity));\n}\n\n.ring-gray-200 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-200) / var(--tw-ring-opacity));\n}\n\n.ring-green-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-green-300) / var(--tw-ring-opacity));\n}\n\n.ring-orange-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-orange-300) / var(--tw-ring-opacity));\n}\n\n.ring-red-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-300) / var(--tw-ring-opacity));\n}\n\n.ring-teal-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-teal-300) / var(--tw-ring-opacity));\n}\n\n.ring-violet-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-violet-300) / var(--tw-ring-opacity));\n}\n\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));\n}\n\n.ring-white\\/20 {\n --tw-ring-color: #fff3;\n}\n\n.ring-offset-0 {\n --tw-ring-offset-width: 0px;\n}\n\n.ring-offset-white {\n --tw-ring-offset-color: #fff;\n}\n\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.backdrop-blur-\\[30px\\] {\n --tw-backdrop-blur: blur(30px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-all {\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-transform {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-1000 {\n transition-duration: 1s;\n}\n\n.duration-200 {\n transition-duration: .2s;\n}\n\n.duration-300 {\n transition-duration: .3s;\n}\n\n.ease-linear {\n transition-timing-function: linear;\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.will-change-transform {\n will-change: transform;\n}\n\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n\n.animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.fade-in, .fade-in-0 {\n --tw-enter-opacity: 0;\n}\n\n.fade-out {\n --tw-exit-opacity: 0;\n}\n\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n\n.duration-1000 {\n animation-duration: 1s;\n}\n\n.duration-200 {\n animation-duration: .2s;\n}\n\n.duration-300 {\n animation-duration: .3s;\n}\n\n.ease-linear {\n animation-timing-function: linear;\n}\n\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.paused {\n animation-play-state: paused;\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.public-page-bg {\n background-image: radial-gradient(50% 50%, #006aff33 0%, #006aff00 100%), linear-gradient(#0000 0%, #fff 100%), linear-gradient(0deg, #0000 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n background-position: 50% calc(50vh - 185px), center, center, center;\n background-repeat: no-repeat, repeat, repeat, repeat;\n background-size: 700px 350px, auto, auto, auto;\n}\n\n.placeholder\\:text-gray-700::placeholder {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n}\n\n.placeholder\\:text-gray-900::placeholder {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n}\n\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n\n.focus-within\\:z-20:focus-within {\n z-index: 20;\n}\n\n.focus-within\\:border-gray-200:focus-within {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n}\n\n.focus-within\\:bg-gray-100:focus-within {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.focus-within\\:outline:focus-within {\n outline-style: solid;\n}\n\n.focus-within\\:outline-\\[2px\\]:focus-within {\n outline-width: 2px;\n}\n\n.focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n}\n\n.focus-within\\:outline-blue-300:focus-within {\n outline-color: rgb(var(--color-blue-300) / 1);\n}\n\n.focus-within\\:outline-red-700:focus-within {\n outline-color: rgb(var(--color-red-700) / 1);\n}\n\n.hover\\:bg-\\[\\#292929\\]:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-50) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-blue-800:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-800) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-red-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-red-800:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-800) / var(--tw-bg-opacity));\n}\n\n.hover\\:text-blue-700:hover {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:bg-gray-100:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus\\:ring-1:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.focus-visible\\:outline-none:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-gray-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-\\[\\#292929\\]:active {\n --tw-bg-opacity: 1;\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n}\n\n.active\\:bg-blue-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-200) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-blue-900:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-900) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-gray-100:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-gray-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-gray-500:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-500) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-red-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-200) / var(--tw-bg-opacity));\n}\n\n.active\\:bg-red-900:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-900) / var(--tw-bg-opacity));\n}\n\n.active\\:text-blue-700:active {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.active\\:text-blue-900:active {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-900) / var(--tw-text-opacity));\n}\n\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:opacity-40:disabled {\n opacity: .4;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n.group:focus-within .group-focus-within\\:bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.group:hover .group-hover\\:bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.group:active .group-active\\:bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: .7;\n}\n\n.aria-selected\\:bg-blue-100[aria-selected=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.aria-selected\\:text-blue-700[aria-selected=\"true\"] {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\n --tw-translate-y: .25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\n --tw-translate-x: -.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\n --tw-translate-x: .25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\n --tw-translate-y: -.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: .2s ease-out accordion-up;\n}\n\n@keyframes accordion-down {\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: .2s ease-out accordion-down;\n}\n\n.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n}\n\n.data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"] {\n --tw-border-opacity: 1;\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n}\n\n.data-\\[disabled\\]\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-state=\"unchecked\"][data-disabled] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n}\n\n.data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-bronze-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gold-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-grass-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-indigo-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-lime-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-plum-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-purple-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-yellow-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.data-\\[state\\=active\\]\\:font-semibold[data-state=\"active\"] {\n font-weight: 600;\n}\n\n.data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n --tw-text-opacity: 1;\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n}\n\n.data-\\[state\\=active\\]\\:text-gray-1000[data-state=\"active\"] {\n --tw-text-opacity: 1;\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n}\n\n.data-\\[disabled\\]\\:opacity-40[data-disabled] {\n opacity: .4;\n}\n\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: .5;\n}\n\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=\"active\"] {\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n}\n\n.data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"], .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n}\n\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n}\n\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n}\n\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n}\n\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n}\n\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n}\n\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-left-\\[50\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-x: -50%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-left-\\[50\\%\\][data-state=\"open\"] {\n --tw-enter-translate-x: -50%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.group[data-state=\"open\"] .group-data-\\[state\\=open\\]\\:rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.group[data-state=\"checked\"] .group-data-\\[state\\=checked\\]\\:bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:opacity-50 {\n opacity: .5;\n}\n\n@media not all and (width >= 640px) {\n .max-sm\\:gap-4 {\n gap: 1rem;\n }\n\n .max-sm\\:p-4 {\n padding: 1rem;\n }\n}\n\n@media (width >= 640px) {\n .sm\\:mt-0 {\n margin-top: 0;\n }\n\n .sm\\:w-1\\/2 {\n width: 50%;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:justify-center {\n justify-content: center;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(.5rem * var(--tw-space-x-reverse));\n margin-left: calc(.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n}\n\n@media (width >= 768px) {\n .md\\:w-\\[334px\\] {\n width: 334px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:w-screen {\n width: 100vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n}\n\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-blue-100:has([aria-selected]) {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n}\n\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: .375rem;\n border-bottom-left-radius: .375rem;\n}\n\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: .375rem;\n border-bottom-right-radius: .375rem;\n}\n\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: 0;\n}\n\n.\\[\\&\\:not\\(\\[aria-selected\\]\\)\\]\\:hover\\:bg-gray-100:hover:not([aria-selected]) {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n}\n\n.\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\n --tw-translate-y: 2px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.\\[\\&\\>svg\\]\\:h-\\[18px\\] > svg {\n height: 18px;\n}\n\n.\\[\\&\\>svg\\]\\:w-\\[18px\\] > svg {\n width: 18px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n\n.\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active, .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n}\n\n.\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n}\n\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0;\n}\n\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n\n";
16684
17496
 
16685
17497
 
16686
17498
  var $9554d945ad3f220e$exports = {};
@@ -16726,16 +17538,37 @@ const $24075a5d702d64b3$var$defaultOptions = {
16726
17538
  },
16727
17539
  streamApiURL: String("https://apistream.snapcall.io"),
16728
17540
  apiUrl: String("https://api.snapcall.io/v2"),
16729
- tracking: false
17541
+ tracking: false,
17542
+ token: undefined,
17543
+ profile: undefined,
17544
+ apiKey: undefined
16730
17545
  };
17546
+ let $24075a5d702d64b3$var$streamUIOption = {};
16731
17547
  const $24075a5d702d64b3$export$3f94917203ab7078 = {
16732
- init: ({ element: element, ...options })=>{
17548
+ init: (option)=>{
17549
+ $24075a5d702d64b3$var$streamUIOption = option;
17550
+ },
17551
+ joinRoom: async (token, option)=>{
17552
+ return $24075a5d702d64b3$export$3f94917203ab7078.initV2({
17553
+ ...$24075a5d702d64b3$var$streamUIOption,
17554
+ ...option,
17555
+ token: token
17556
+ });
17557
+ },
17558
+ initV2: async ({ element: element, ...options })=>{
16733
17559
  if (typeof options.recorder === "boolean") options.recorder = {
16734
17560
  enabled: options.recorder,
16735
17561
  defaultMode: "photo",
16736
17562
  defaultMedia: "camera",
16737
17563
  skipOnboarding: false
16738
17564
  };
17565
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).init(options.token, {
17566
+ recorder: options.recorder?.enabled,
17567
+ apiKey: options.apiKey,
17568
+ email: options.email,
17569
+ profile: options.profile,
17570
+ authKey: options.authKey
17571
+ });
16739
17572
  if (element?.nodeType !== window.Node.ELEMENT_NODE) throw new Error('The "element" property must be a valid element!');
16740
17573
  const mergedOptions = (0, $365e765f9890497b$export$6969335ea1e4e77c)($24075a5d702d64b3$var$defaultOptions, options);
16741
17574
  const rootElement = (0, $3Sbms$createRoot)(element);
@@ -16772,13 +17605,6 @@ const $24075a5d702d64b3$export$3f94917203ab7078 = {
16772
17605
  if (mergedOptions.tracking) (0, $3Sbms$hotjarbrowser).init(3111933, 6);
16773
17606
  (0, $35b37252690084e8$export$1cbfb36c1655a9a)(rootElement, element);
16774
17607
  },
16775
- initGreeting: (element, onGreetingDone)=>{
16776
- const rootElement = (0, $3Sbms$createRoot)(element);
16777
- rootElement.render(/*#__PURE__*/ (0, $3Sbms$jsx)((0, $f8d57e3d223f5089$export$2e2bcd8739ae039), {
16778
- onGreetingDone: onGreetingDone
16779
- }));
16780
- (0, $35b37252690084e8$export$1cbfb36c1655a9a)(rootElement, element);
16781
- },
16782
17608
  setExtraSettingsOptions: (extraOptions)=>{
16783
17609
  const event = new CustomEvent("streamUISetExtraSettingsOptions", {
16784
17610
  detail: {
@@ -16787,10 +17613,10 @@ const $24075a5d702d64b3$export$3f94917203ab7078 = {
16787
17613
  });
16788
17614
  window.dispatchEvent(event);
16789
17615
  },
17616
+ setAgentIdentity: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).setAgentIdentity.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
16790
17617
  startRecord: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).startRecord.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
16791
17618
  stopRecord: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).stopRecord.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
16792
17619
  sendNotification: $a5146f9062d7bf28$export$3a57e165650c636f,
16793
- joinRoom: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).init.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
16794
17620
  leaveRoom: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).endCall.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
16795
17621
  terminateRoom: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).terminateRoom.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
16796
17622
  generateToken: (0, $c9e496369b59be7a$export$2f377c2162fd02b2).generateToken.bind((0, $c9e496369b59be7a$export$2f377c2162fd02b2)),
@@ -16807,10 +17633,6 @@ const $24075a5d702d64b3$export$3f94917203ab7078 = {
16807
17633
  window.streamUI = $24075a5d702d64b3$export$3f94917203ab7078;
16808
17634
  // Backward compatibility
16809
17635
  window.snapcallAPI = window.snapcallAPI || {
16810
- join: (...args)=>{
16811
- console.warn("snapcallAPI.join is deprecated, please use streamUI.joinRoom instead!");
16812
- return $24075a5d702d64b3$export$3f94917203ab7078.joinRoom(...args);
16813
- },
16814
17636
  endCall: (...args)=>{
16815
17637
  console.warn("snapcallAPI.endCall is deprecated, please use streamUI.leaveRoom instead!");
16816
17638
  return $24075a5d702d64b3$export$3f94917203ab7078.leaveRoom(...args);