@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.
- package/dist/stream-ui.esm.js +1671 -849
- package/dist/stream-ui.js +1669 -847
- package/dist/stream-ui.umd.js +28 -208
- package/dist/types.d.ts +75 -11
- package/package.json +1 -1
package/dist/stream-ui.esm.js
CHANGED
|
@@ -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: "
|
|
538
|
-
sideDescription: "
|
|
539
|
-
namePlaceholder: "
|
|
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: "
|
|
808
|
-
sideDescription: "
|
|
809
|
-
namePlaceholder: "
|
|
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: "
|
|
1078
|
-
sideDescription: "
|
|
1079
|
-
namePlaceholder: "
|
|
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}
|
|
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
|
-
|
|
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
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
email
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
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 {
|
|
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.
|
|
2608
|
+
if (this.joinOptions.apiKey) this.setAgentIdentity({
|
|
2418
2609
|
apiKey: this.joinOptions.apiKey
|
|
2419
|
-
})
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2619
|
-
this.protoo
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
3589
|
+
await this.protoo?.request("startRecord");
|
|
3395
3590
|
}
|
|
3396
3591
|
async stopRecord() {
|
|
3397
|
-
await this.protoo
|
|
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
|
|
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
|
-
|
|
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
|
|
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:
|
|
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
|
|
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 ? ()=>
|
|
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)(
|
|
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
|
-
|
|
15231
|
+
currentMode: recorderState.mode,
|
|
14957
15232
|
state: recorderState,
|
|
14958
15233
|
onSelect: async (mode)=>{
|
|
14959
|
-
if (
|
|
14960
|
-
|
|
14961
|
-
|
|
14962
|
-
|
|
14963
|
-
|
|
14964
|
-
|
|
14965
|
-
|
|
14966
|
-
|
|
14967
|
-
|
|
14968
|
-
|
|
14969
|
-
|
|
14970
|
-
|
|
14971
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
15938
|
-
|
|
15939
|
-
|
|
15940
|
-
|
|
15941
|
-
|
|
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
|
|
15944
|
-
const
|
|
15945
|
-
const
|
|
15946
|
-
|
|
15947
|
-
|
|
15948
|
-
|
|
15949
|
-
|
|
15950
|
-
|
|
15951
|
-
|
|
15952
|
-
|
|
15953
|
-
|
|
15954
|
-
|
|
15955
|
-
|
|
15956
|
-
|
|
15957
|
-
|
|
15958
|
-
|
|
15959
|
-
|
|
15960
|
-
|
|
15961
|
-
|
|
15962
|
-
|
|
15963
|
-
|
|
15964
|
-
|
|
15965
|
-
|
|
15966
|
-
|
|
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
|
-
|
|
15969
|
-
|
|
15970
|
-
|
|
15971
|
-
|
|
15972
|
-
|
|
15973
|
-
|
|
15974
|
-
|
|
15975
|
-
|
|
15976
|
-
};
|
|
15977
|
-
const
|
|
15978
|
-
|
|
15979
|
-
|
|
15980
|
-
|
|
15981
|
-
|
|
15982
|
-
|
|
15983
|
-
|
|
15984
|
-
|
|
15985
|
-
|
|
15986
|
-
|
|
15987
|
-
|
|
15988
|
-
|
|
15989
|
-
|
|
15990
|
-
|
|
15991
|
-
|
|
15992
|
-
|
|
15993
|
-
|
|
15994
|
-
|
|
15995
|
-
|
|
15996
|
-
|
|
15997
|
-
|
|
15998
|
-
|
|
15999
|
-
|
|
16000
|
-
|
|
16001
|
-
|
|
16002
|
-
|
|
16003
|
-
|
|
16004
|
-
|
|
16005
|
-
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
}
|
|
16009
|
-
|
|
16010
|
-
}
|
|
16011
|
-
|
|
16012
|
-
|
|
16013
|
-
|
|
16014
|
-
|
|
16015
|
-
|
|
16016
|
-
|
|
16017
|
-
|
|
16018
|
-
|
|
16019
|
-
|
|
16020
|
-
|
|
16021
|
-
|
|
16022
|
-
|
|
16023
|
-
|
|
16024
|
-
|
|
16025
|
-
|
|
16026
|
-
|
|
16027
|
-
|
|
16028
|
-
|
|
16029
|
-
|
|
16030
|
-
|
|
16031
|
-
|
|
16032
|
-
|
|
16033
|
-
|
|
16034
|
-
|
|
16035
|
-
|
|
16036
|
-
(0, $
|
|
16037
|
-
|
|
16038
|
-
|
|
16039
|
-
|
|
16040
|
-
|
|
16041
|
-
|
|
16042
|
-
|
|
16043
|
-
|
|
16044
|
-
|
|
16045
|
-
|
|
16046
|
-
|
|
16047
|
-
|
|
16048
|
-
|
|
16049
|
-
|
|
16050
|
-
|
|
16051
|
-
|
|
16052
|
-
|
|
16053
|
-
|
|
16054
|
-
|
|
16055
|
-
|
|
16056
|
-
|
|
16057
|
-
|
|
16058
|
-
|
|
16059
|
-
|
|
16060
|
-
|
|
16061
|
-
|
|
16062
|
-
|
|
16063
|
-
|
|
16064
|
-
|
|
16065
|
-
|
|
16066
|
-
|
|
16067
|
-
|
|
16068
|
-
|
|
16069
|
-
|
|
16070
|
-
|
|
16071
|
-
|
|
16072
|
-
|
|
16073
|
-
|
|
16074
|
-
|
|
16075
|
-
|
|
16076
|
-
|
|
16077
|
-
|
|
16078
|
-
|
|
16079
|
-
|
|
16080
|
-
|
|
16081
|
-
|
|
16082
|
-
|
|
16083
|
-
|
|
16084
|
-
|
|
16085
|
-
|
|
16086
|
-
|
|
16087
|
-
|
|
16088
|
-
|
|
16089
|
-
|
|
16090
|
-
|
|
16091
|
-
|
|
16092
|
-
|
|
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
|
-
|
|
16096
|
-
|
|
16097
|
-
(0, $
|
|
16098
|
-
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).
|
|
16099
|
-
|
|
16100
|
-
|
|
16101
|
-
|
|
16102
|
-
|
|
16103
|
-
|
|
16104
|
-
|
|
16105
|
-
|
|
16106
|
-
|
|
16107
|
-
|
|
16108
|
-
|
|
16109
|
-
|
|
16110
|
-
|
|
16111
|
-
|
|
16112
|
-
|
|
16113
|
-
|
|
16114
|
-
|
|
16115
|
-
|
|
16116
|
-
|
|
16117
|
-
|
|
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
|
|
16139
|
-
|
|
16140
|
-
|
|
16141
|
-
|
|
16142
|
-
|
|
16143
|
-
|
|
16144
|
-
|
|
16145
|
-
|
|
16146
|
-
|
|
16147
|
-
|
|
16148
|
-
|
|
16149
|
-
|
|
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("
|
|
16614
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("requestAccessResult", onRequestAccessResult);
|
|
16165
16615
|
return ()=>{
|
|
16166
|
-
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("
|
|
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
|
-
|
|
16170
|
-
|
|
16654
|
+
permissionDeniedModalState,
|
|
16655
|
+
videoTrack
|
|
16171
16656
|
]);
|
|
16172
|
-
|
|
16173
|
-
|
|
16174
|
-
|
|
16175
|
-
|
|
16176
|
-
|
|
16177
|
-
|
|
16178
|
-
|
|
16179
|
-
|
|
16180
|
-
|
|
16181
|
-
|
|
16182
|
-
|
|
16183
|
-
|
|
16184
|
-
|
|
16185
|
-
|
|
16186
|
-
|
|
16187
|
-
|
|
16188
|
-
|
|
16189
|
-
|
|
16190
|
-
|
|
16191
|
-
|
|
16192
|
-
|
|
16193
|
-
|
|
16194
|
-
|
|
16195
|
-
|
|
16196
|
-
|
|
16197
|
-
|
|
16198
|
-
|
|
16199
|
-
|
|
16200
|
-
|
|
16201
|
-
|
|
16202
|
-
|
|
16203
|
-
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
|
|
16208
|
-
|
|
16209
|
-
|
|
16210
|
-
|
|
16211
|
-
|
|
16212
|
-
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
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$
|
|
16218
|
-
|
|
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
|
-
|
|
16223
|
-
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
|
|
16228
|
-
|
|
16229
|
-
|
|
16230
|
-
|
|
16231
|
-
|
|
16232
|
-
|
|
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
|
-
|
|
16236
|
-
|
|
16237
|
-
children:
|
|
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)(
|
|
16240
|
-
|
|
16241
|
-
|
|
16242
|
-
|
|
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
|
-
|
|
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 $
|
|
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 $
|
|
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 [
|
|
16507
|
-
const
|
|
16508
|
-
const
|
|
16509
|
-
const
|
|
16510
|
-
const [
|
|
16511
|
-
const [
|
|
16512
|
-
const
|
|
16513
|
-
const
|
|
16514
|
-
|
|
16515
|
-
|
|
16516
|
-
|
|
16517
|
-
|
|
16518
|
-
|
|
16519
|
-
|
|
16520
|
-
|
|
16521
|
-
|
|
16522
|
-
|
|
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
|
-
},
|
|
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
|
|
16527
|
-
|
|
16528
|
-
|
|
16529
|
-
|
|
16530
|
-
|
|
16531
|
-
|
|
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
|
-
|
|
16539
|
-
|
|
16540
|
-
|
|
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
|
-
|
|
16543
|
-
|
|
16544
|
-
|
|
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
|
-
|
|
17299
|
+
theme
|
|
16548
17300
|
]);
|
|
16549
|
-
|
|
16550
|
-
|
|
16551
|
-
|
|
16552
|
-
|
|
16553
|
-
|
|
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
|
-
|
|
17309
|
+
language
|
|
16556
17310
|
]);
|
|
16557
17311
|
(0, $3Sbms$useEffect)(()=>{
|
|
16558
|
-
|
|
16559
|
-
|
|
16560
|
-
|
|
16561
|
-
|
|
16562
|
-
|
|
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
|
-
|
|
16566
|
-
videoTrack,
|
|
16567
|
-
width,
|
|
16568
|
-
height
|
|
17349
|
+
onVideoRecordingRequested
|
|
16569
17350
|
]);
|
|
16570
17351
|
(0, $3Sbms$useEffect)(()=>{
|
|
16571
|
-
|
|
16572
|
-
|
|
16573
|
-
|
|
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
|
-
|
|
16577
|
-
|
|
16578
|
-
|
|
16579
|
-
|
|
16580
|
-
|
|
16581
|
-
|
|
16582
|
-
|
|
16583
|
-
|
|
16584
|
-
|
|
16585
|
-
|
|
16586
|
-
|
|
16587
|
-
|
|
16588
|
-
|
|
16589
|
-
|
|
16590
|
-
|
|
16591
|
-
|
|
16592
|
-
|
|
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
|
-
|
|
16595
|
-
|
|
16596
|
-
|
|
16597
|
-
|
|
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
|
-
|
|
16646
|
-
|
|
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, $
|
|
16649
|
-
|
|
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, $
|
|
16652
|
-
|
|
16653
|
-
|
|
16654
|
-
|
|
16655
|
-
|
|
16656
|
-
|
|
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, $
|
|
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 $
|
|
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: (
|
|
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);
|