@bootdesk/js-web-adapter-react 0.3.3 → 0.3.4

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/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/components/ChatWidget.tsx
2
- import { useState as useState9, useCallback as useCallback6, useEffect as useEffect9 } from "react";
2
+ import { useState as useState10, useCallback as useCallback6, useEffect as useEffect9 } from "react";
3
3
 
4
4
  // src/hooks/useChatClient.ts
5
5
  import { useEffect, useMemo } from "react";
@@ -337,6 +337,8 @@ function usePushNotifications(options) {
337
337
  onSubscribe: options.onSubscribe,
338
338
  onUnsubscribe: options.onUnsubscribe,
339
339
  serviceWorkerUrl: options.serviceWorkerUrl,
340
+ serviceWorkerScope: options.serviceWorkerScope,
341
+ serviceWorkerType: options.serviceWorkerType,
340
342
  notificationOptions: options.notificationOptions
341
343
  });
342
344
  pushManagerRef.current = pushManager;
@@ -393,6 +395,7 @@ function useAttachmentUpload(uploadConfig) {
393
395
  }, []);
394
396
  const uploadFile = useCallback3(
395
397
  async (attachment) => {
398
+ if (!uploadConfig) return;
396
399
  const controller = new AbortController();
397
400
  abortControllers.current.set(attachment.id, controller);
398
401
  try {
@@ -581,6 +584,7 @@ function getFallbackChain(locale) {
581
584
 
582
585
  // src/i18n/locales/en.json
583
586
  var en_default = {
587
+ direction: "ltr",
584
588
  chatWidget: {
585
589
  title: "Chat",
586
590
  placeholder: "Type a message...",
@@ -622,6 +626,20 @@ var en_default = {
622
626
  openChat: "Open chat",
623
627
  closeChat: "Close chat"
624
628
  },
629
+ push: {
630
+ title: "Notifications",
631
+ description: "Receive messages even when chat is closed",
632
+ enable: "Enable Notifications",
633
+ disable: "Disable Notifications",
634
+ denied: "Notifications blocked",
635
+ unsupported: "Notifications not supported",
636
+ subscribing: "Subscribing...",
637
+ notifications: "Notifications"
638
+ },
639
+ notification: {
640
+ openChat: "Open Chat",
641
+ dismiss: "Dismiss"
642
+ },
625
643
  common: {
626
644
  loading: "Loading...",
627
645
  error: "Error",
@@ -633,6 +651,7 @@ var en_default = {
633
651
 
634
652
  // src/i18n/locales/en-US.json
635
653
  var en_US_default = {
654
+ direction: "ltr",
636
655
  chatWidget: {
637
656
  title: "Chat"
638
657
  }
@@ -640,6 +659,7 @@ var en_US_default = {
640
659
 
641
660
  // src/i18n/locales/en-GB.json
642
661
  var en_GB_default = {
662
+ direction: "ltr",
643
663
  chatWidget: {
644
664
  title: "Chat"
645
665
  },
@@ -650,6 +670,7 @@ var en_GB_default = {
650
670
 
651
671
  // src/i18n/locales/pt.json
652
672
  var pt_default = {
673
+ direction: "ltr",
653
674
  chatWidget: {
654
675
  title: "Chat",
655
676
  placeholder: "Digite uma mensagem...",
@@ -682,12 +703,29 @@ var pt_default = {
682
703
  header: {
683
704
  enterFullscreen: "Tela cheia",
684
705
  exitFullscreen: "Sair da tela cheia",
685
- closeChat: "Fechar chat"
706
+ closeChat: "Fechar chat",
707
+ lightMode: "Modo claro",
708
+ darkMode: "Modo escuro",
709
+ autoMode: "Tema do sistema"
686
710
  },
687
711
  floatingButton: {
688
712
  openChat: "Abrir chat",
689
713
  closeChat: "Fechar chat"
690
714
  },
715
+ push: {
716
+ title: "Notifica\xE7\xF5es",
717
+ description: "Receba mensagens mesmo com o chat fechado",
718
+ enable: "Habilitar notifica\xE7\xF5es",
719
+ disable: "Desabilitar notifica\xE7\xF5es",
720
+ denied: "Notifica\xE7\xF5es bloqueadas",
721
+ unsupported: "Notifica\xE7\xF5es n\xE3o suportadas",
722
+ subscribing: "Inscrevendo...",
723
+ notifications: "Notifica\xE7\xF5es"
724
+ },
725
+ notification: {
726
+ openChat: "Abrir chat",
727
+ dismiss: "Dispensar"
728
+ },
691
729
  common: {
692
730
  loading: "Carregando...",
693
731
  error: "Erro",
@@ -699,6 +737,7 @@ var pt_default = {
699
737
 
700
738
  // src/i18n/locales/pt-BR.json
701
739
  var pt_BR_default = {
740
+ direction: "ltr",
702
741
  chatWidget: {
703
742
  placeholder: "Digite uma mensagem..."
704
743
  },
@@ -724,6 +763,7 @@ var pt_BR_default = {
724
763
 
725
764
  // src/i18n/locales/pt-PT.json
726
765
  var pt_PT_default = {
766
+ direction: "ltr",
727
767
  chatWidget: {
728
768
  placeholder: "Escreva uma mensagem..."
729
769
  },
@@ -738,61 +778,1821 @@ var pt_PT_default = {
738
778
  typingIndicator: {
739
779
  isTyping: "est\xE1 a escrever..."
740
780
  },
741
- attachmentList: {
742
- uploadFailed: "Falha no envio"
781
+ attachmentList: {
782
+ uploadFailed: "Falha no envio"
783
+ },
784
+ common: {
785
+ loading: "A carregar...",
786
+ retry: "Tentar novamente"
787
+ }
788
+ };
789
+
790
+ // src/i18n/locales/es.json
791
+ var es_default = {
792
+ direction: "ltr",
793
+ chatWidget: {
794
+ title: "Chat",
795
+ placeholder: "Escribe un mensaje...",
796
+ openChat: "Abrir chat",
797
+ closeChat: "Cerrar chat",
798
+ connectionStatus: {
799
+ connected: "Conectado",
800
+ disconnected: "Desconectado"
801
+ }
802
+ },
803
+ inputArea: {
804
+ send: "Enviar",
805
+ uploading: "Subiendo...",
806
+ dropzone: {
807
+ dropFiles: "Suelta archivos aqu\xED",
808
+ dropOrClick: "Suelta o haz clic para adjuntar"
809
+ }
810
+ },
811
+ typingIndicator: {
812
+ typing: "escribiendo",
813
+ isTyping: "est\xE1 escribiendo..."
814
+ },
815
+ messageList: {
816
+ emptyState: "No hay mensajes todav\xEDa. \xA1Inicia la conversaci\xF3n!"
817
+ },
818
+ attachmentList: {
819
+ remove: "Eliminar",
820
+ uploadFailed: "Error al subir"
821
+ },
822
+ header: {
823
+ enterFullscreen: "Pantalla completa",
824
+ exitFullscreen: "Salir de pantalla completa",
825
+ closeChat: "Cerrar chat",
826
+ lightMode: "Modo claro",
827
+ darkMode: "Modo oscuro",
828
+ autoMode: "Tema del sistema"
829
+ },
830
+ floatingButton: {
831
+ openChat: "Abrir chat",
832
+ closeChat: "Cerrar chat"
833
+ },
834
+ push: {
835
+ title: "Notificaciones",
836
+ description: "Recibe mensajes incluso con el chat cerrado",
837
+ enable: "Habilitar notificaciones",
838
+ disable: "Deshabilitar notificaciones",
839
+ denied: "Notificaciones bloqueadas",
840
+ unsupported: "Notificaciones no compatibles",
841
+ subscribing: "Suscribiendo...",
842
+ notifications: "Notificaciones"
843
+ },
844
+ notification: {
845
+ openChat: "Abrir chat",
846
+ dismiss: "Descartar"
847
+ },
848
+ common: {
849
+ loading: "Cargando...",
850
+ error: "Error",
851
+ retry: "Reintentar",
852
+ cancel: "Cancelar",
853
+ download: "Descargar"
854
+ }
855
+ };
856
+
857
+ // src/i18n/locales/da.json
858
+ var da_default = {
859
+ direction: "ltr",
860
+ chatWidget: {
861
+ title: "Chat",
862
+ placeholder: "Skriv en besked...",
863
+ openChat: "\xC5bn chat",
864
+ closeChat: "Luk chat",
865
+ connectionStatus: {
866
+ connected: "Forbundet",
867
+ disconnected: "Afbrudt"
868
+ }
869
+ },
870
+ inputArea: {
871
+ send: "Send",
872
+ uploading: "Uploader...",
873
+ dropzone: {
874
+ dropFiles: "Slip filer her",
875
+ dropOrClick: "Slip eller klik for at vedh\xE6fte"
876
+ }
877
+ },
878
+ typingIndicator: {
879
+ typing: "skriver",
880
+ isTyping: "skriver..."
881
+ },
882
+ messageList: {
883
+ emptyState: "Ingen beskeder endnu. Start samtalen!"
884
+ },
885
+ attachmentList: {
886
+ remove: "Fjern",
887
+ uploadFailed: "Upload fejlede"
888
+ },
889
+ header: {
890
+ enterFullscreen: "Fuld sk\xE6rm",
891
+ exitFullscreen: "Afslut fuld sk\xE6rm",
892
+ closeChat: "Luk chat",
893
+ lightMode: "Lys tilstand",
894
+ darkMode: "M\xF8rk tilstand",
895
+ autoMode: "Systemtema"
896
+ },
897
+ floatingButton: {
898
+ openChat: "\xC5bn chat",
899
+ closeChat: "Luk chat"
900
+ },
901
+ push: {
902
+ title: "Notifikationer",
903
+ description: "Modtag beskeder, selv n\xE5r chatten er lukket",
904
+ enable: "Aktiver notifikationer",
905
+ disable: "Deaktiver notifikationer",
906
+ denied: "Notifikationer blokeret",
907
+ unsupported: "Notifikationer underst\xF8ttes ikke",
908
+ subscribing: "Abonnerer...",
909
+ notifications: "Notifikationer"
910
+ },
911
+ notification: {
912
+ openChat: "\xC5bn Chat",
913
+ dismiss: "Afvis"
914
+ },
915
+ common: {
916
+ loading: "Indl\xE6ser...",
917
+ error: "Fejl",
918
+ retry: "Pr\xF8v igen",
919
+ cancel: "Annuller",
920
+ download: "Download"
921
+ }
922
+ };
923
+
924
+ // src/i18n/locales/sv.json
925
+ var sv_default = {
926
+ direction: "ltr",
927
+ chatWidget: {
928
+ title: "Chatt",
929
+ placeholder: "Skriv ett meddelande...",
930
+ openChat: "\xD6ppna chatt",
931
+ closeChat: "St\xE4ng chatt",
932
+ connectionStatus: {
933
+ connected: "Ansluten",
934
+ disconnected: "Fr\xE5nkopplad"
935
+ }
936
+ },
937
+ inputArea: {
938
+ send: "Skicka",
939
+ uploading: "Laddar upp...",
940
+ dropzone: {
941
+ dropFiles: "Sl\xE4pp filer h\xE4r",
942
+ dropOrClick: "Sl\xE4pp eller klicka f\xF6r att bifoga"
943
+ }
944
+ },
945
+ typingIndicator: {
946
+ typing: "skriver",
947
+ isTyping: "skriver..."
948
+ },
949
+ messageList: {
950
+ emptyState: "Inga meddelanden \xE4n. Starta konversationen!"
951
+ },
952
+ attachmentList: {
953
+ remove: "Ta bort",
954
+ uploadFailed: "Uppladdning misslyckades"
955
+ },
956
+ header: {
957
+ enterFullscreen: "Fullsk\xE4rm",
958
+ exitFullscreen: "Avsluta fullsk\xE4rm",
959
+ closeChat: "St\xE4ng chatt",
960
+ lightMode: "Ljust l\xE4ge",
961
+ darkMode: "M\xF6rkt l\xE4ge",
962
+ autoMode: "Systemtema"
963
+ },
964
+ floatingButton: {
965
+ openChat: "\xD6ppna chatt",
966
+ closeChat: "St\xE4ng chatt"
967
+ },
968
+ push: {
969
+ title: "Notifikationer",
970
+ description: "Ta emot meddelanden \xE4ven n\xE4r chatten \xE4r st\xE4ngd",
971
+ enable: "Aktivera notifikationer",
972
+ disable: "Inaktivera notifikationer",
973
+ denied: "Notifikationer blockerade",
974
+ unsupported: "Notifikationer st\xF6ds inte",
975
+ subscribing: "Prenumererar...",
976
+ notifications: "Notifikationer"
977
+ },
978
+ notification: {
979
+ openChat: "\xD6ppna Chatt",
980
+ dismiss: "Avf\xE4rda"
981
+ },
982
+ common: {
983
+ loading: "Laddar...",
984
+ error: "Fel",
985
+ retry: "F\xF6rs\xF6k igen",
986
+ cancel: "Avbryt",
987
+ download: "Ladda ner"
988
+ }
989
+ };
990
+
991
+ // src/i18n/locales/nb.json
992
+ var nb_default = {
993
+ direction: "ltr",
994
+ chatWidget: {
995
+ title: "Chat",
996
+ placeholder: "Skriv en melding...",
997
+ openChat: "\xC5pne chat",
998
+ closeChat: "Lukk chat",
999
+ connectionStatus: {
1000
+ connected: "Tilkoblet",
1001
+ disconnected: "Frakoblet"
1002
+ }
1003
+ },
1004
+ inputArea: {
1005
+ send: "Send",
1006
+ uploading: "Laster opp...",
1007
+ dropzone: {
1008
+ dropFiles: "Slipp filer her",
1009
+ dropOrClick: "Slipp eller klikk for \xE5 legge ved"
1010
+ }
1011
+ },
1012
+ typingIndicator: {
1013
+ typing: "skriver",
1014
+ isTyping: "skriver..."
1015
+ },
1016
+ messageList: {
1017
+ emptyState: "Ingen meldinger enn\xE5. Start samtalen!"
1018
+ },
1019
+ attachmentList: {
1020
+ remove: "Fjern",
1021
+ uploadFailed: "Opplasting mislyktes"
1022
+ },
1023
+ header: {
1024
+ enterFullscreen: "Fullskjerm",
1025
+ exitFullscreen: "Avslutt fullskjerm",
1026
+ closeChat: "Lukk chat",
1027
+ lightMode: "Lys modus",
1028
+ darkMode: "M\xF8rk modus",
1029
+ autoMode: "Systemtema"
1030
+ },
1031
+ floatingButton: {
1032
+ openChat: "\xC5pne chat",
1033
+ closeChat: "Lukk chat"
1034
+ },
1035
+ push: {
1036
+ title: "Varsler",
1037
+ description: "Motta meldinger selv n\xE5r chatten er lukket",
1038
+ enable: "Aktiver varsler",
1039
+ disable: "Deaktiver varsler",
1040
+ denied: "Varsler blokkert",
1041
+ unsupported: "Varsler st\xF8ttes ikke",
1042
+ subscribing: "Abonnerer...",
1043
+ notifications: "Varsler"
1044
+ },
1045
+ notification: {
1046
+ openChat: "\xC5pne Chat",
1047
+ dismiss: "Avvis"
1048
+ },
1049
+ common: {
1050
+ loading: "Laster...",
1051
+ error: "Feil",
1052
+ retry: "Pr\xF8v igjen",
1053
+ cancel: "Avbryt",
1054
+ download: "Last ned"
1055
+ }
1056
+ };
1057
+
1058
+ // src/i18n/locales/fi.json
1059
+ var fi_default = {
1060
+ direction: "ltr",
1061
+ chatWidget: {
1062
+ title: "Chat",
1063
+ placeholder: "Kirjoita viesti...",
1064
+ openChat: "Avaa chat",
1065
+ closeChat: "Sulje chat",
1066
+ connectionStatus: {
1067
+ connected: "Yhdistetty",
1068
+ disconnected: "Katkaistu"
1069
+ }
1070
+ },
1071
+ inputArea: {
1072
+ send: "L\xE4het\xE4",
1073
+ uploading: "Ladataan...",
1074
+ dropzone: {
1075
+ dropFiles: "Pudota tiedostot t\xE4h\xE4n",
1076
+ dropOrClick: "Pudota tai klikkaa liitt\xE4\xE4ksesi"
1077
+ }
1078
+ },
1079
+ typingIndicator: {
1080
+ typing: "kirjoittaa",
1081
+ isTyping: "kirjoittaa..."
1082
+ },
1083
+ messageList: {
1084
+ emptyState: "Ei viestej\xE4 viel\xE4. Aloita keskustelu!"
1085
+ },
1086
+ attachmentList: {
1087
+ remove: "Poista",
1088
+ uploadFailed: "Lataus ep\xE4onnistui"
1089
+ },
1090
+ header: {
1091
+ enterFullscreen: "Koko n\xE4ytt\xF6",
1092
+ exitFullscreen: "Poistu koko n\xE4yt\xF6st\xE4",
1093
+ closeChat: "Sulje chat",
1094
+ lightMode: "Vaalea tila",
1095
+ darkMode: "Tumma tila",
1096
+ autoMode: "J\xE4rjestelm\xE4n teema"
1097
+ },
1098
+ floatingButton: {
1099
+ openChat: "Avaa chat",
1100
+ closeChat: "Sulje chat"
1101
+ },
1102
+ push: {
1103
+ title: "Ilmoitukset",
1104
+ description: "Vastaanota viestej\xE4, vaikka chat olisi suljettu",
1105
+ enable: "Ota ilmoitukset k\xE4ytt\xF6\xF6n",
1106
+ disable: "Poista ilmoitukset k\xE4yt\xF6st\xE4",
1107
+ denied: "Ilmoitukset estetty",
1108
+ unsupported: "Ilmoituksia ei tueta",
1109
+ subscribing: "Tilataan...",
1110
+ notifications: "Ilmoitukset"
1111
+ },
1112
+ notification: {
1113
+ openChat: "Avaa Chat",
1114
+ dismiss: "Hylk\xE4\xE4"
1115
+ },
1116
+ common: {
1117
+ loading: "Ladataan...",
1118
+ error: "Virhe",
1119
+ retry: "Yrit\xE4 uudelleen",
1120
+ cancel: "Peruuta",
1121
+ download: "Lataa"
1122
+ }
1123
+ };
1124
+
1125
+ // src/i18n/locales/fr.json
1126
+ var fr_default = {
1127
+ direction: "ltr",
1128
+ chatWidget: {
1129
+ title: "Chat",
1130
+ placeholder: "\xC9crivez un message...",
1131
+ openChat: "Ouvrir le chat",
1132
+ closeChat: "Fermer le chat",
1133
+ connectionStatus: {
1134
+ connected: "Connect\xE9",
1135
+ disconnected: "D\xE9connect\xE9"
1136
+ }
1137
+ },
1138
+ inputArea: {
1139
+ send: "Envoyer",
1140
+ uploading: "T\xE9l\xE9chargement...",
1141
+ dropzone: {
1142
+ dropFiles: "D\xE9posez les fichiers ici",
1143
+ dropOrClick: "D\xE9posez ou cliquez pour joindre"
1144
+ }
1145
+ },
1146
+ typingIndicator: {
1147
+ typing: "tape",
1148
+ isTyping: "tape..."
1149
+ },
1150
+ messageList: {
1151
+ emptyState: "Aucun message pour l'instant. Lancez la conversation !"
1152
+ },
1153
+ attachmentList: {
1154
+ remove: "Supprimer",
1155
+ uploadFailed: "\xC9chec du t\xE9l\xE9chargement"
1156
+ },
1157
+ header: {
1158
+ enterFullscreen: "Plein \xE9cran",
1159
+ exitFullscreen: "Quitter le plein \xE9cran",
1160
+ closeChat: "Fermer le chat",
1161
+ lightMode: "Mode clair",
1162
+ darkMode: "Mode sombre",
1163
+ autoMode: "Th\xE8me syst\xE8me"
1164
+ },
1165
+ floatingButton: {
1166
+ openChat: "Ouvrir le chat",
1167
+ closeChat: "Fermer le chat"
1168
+ },
1169
+ push: {
1170
+ title: "Notifications",
1171
+ description: "Recevez des messages m\xEAme lorsque le chat est ferm\xE9",
1172
+ enable: "Activer les notifications",
1173
+ disable: "D\xE9sactiver les notifications",
1174
+ denied: "Notifications bloqu\xE9es",
1175
+ unsupported: "Notifications non prises en charge",
1176
+ subscribing: "Abonnement...",
1177
+ notifications: "Notifications"
1178
+ },
1179
+ notification: {
1180
+ openChat: "Ouvrir le Chat",
1181
+ dismiss: "Ignorer"
1182
+ },
1183
+ common: {
1184
+ loading: "Chargement...",
1185
+ error: "Erreur",
1186
+ retry: "R\xE9essayer",
1187
+ cancel: "Annuler",
1188
+ download: "T\xE9l\xE9charger"
1189
+ }
1190
+ };
1191
+
1192
+ // src/i18n/locales/de.json
1193
+ var de_default = {
1194
+ direction: "ltr",
1195
+ chatWidget: {
1196
+ title: "Chat",
1197
+ placeholder: "Nachricht schreiben...",
1198
+ openChat: "Chat \xF6ffnen",
1199
+ closeChat: "Chat schlie\xDFen",
1200
+ connectionStatus: {
1201
+ connected: "Verbunden",
1202
+ disconnected: "Getrennt"
1203
+ }
1204
+ },
1205
+ inputArea: {
1206
+ send: "Senden",
1207
+ uploading: "Hochladen...",
1208
+ dropzone: {
1209
+ dropFiles: "Dateien hier ablegen",
1210
+ dropOrClick: "Ablegen oder klicken zum Anh\xE4ngen"
1211
+ }
1212
+ },
1213
+ typingIndicator: {
1214
+ typing: "schreibt",
1215
+ isTyping: "schreibt..."
1216
+ },
1217
+ messageList: {
1218
+ emptyState: "Noch keine Nachrichten. Starten Sie die Unterhaltung!"
1219
+ },
1220
+ attachmentList: {
1221
+ remove: "Entfernen",
1222
+ uploadFailed: "Hochladen fehlgeschlagen"
1223
+ },
1224
+ header: {
1225
+ enterFullscreen: "Vollbild",
1226
+ exitFullscreen: "Vollbild beenden",
1227
+ closeChat: "Chat schlie\xDFen",
1228
+ lightMode: "Heller Modus",
1229
+ darkMode: "Dunkler Modus",
1230
+ autoMode: "System-Design"
1231
+ },
1232
+ floatingButton: {
1233
+ openChat: "Chat \xF6ffnen",
1234
+ closeChat: "Chat schlie\xDFen"
1235
+ },
1236
+ push: {
1237
+ title: "Benachrichtigungen",
1238
+ description: "Nachrichten auch bei geschlossenem Chat erhalten",
1239
+ enable: "Benachrichtigungen aktivieren",
1240
+ disable: "Benachrichtigungen deaktivieren",
1241
+ denied: "Benachrichtigungen blockiert",
1242
+ unsupported: "Benachrichtigungen nicht unterst\xFCtzt",
1243
+ subscribing: "Abonnieren...",
1244
+ notifications: "Benachrichtigungen"
1245
+ },
1246
+ notification: {
1247
+ openChat: "Chat \xF6ffnen",
1248
+ dismiss: "Schlie\xDFen"
1249
+ },
1250
+ common: {
1251
+ loading: "L\xE4dt...",
1252
+ error: "Fehler",
1253
+ retry: "Erneut versuchen",
1254
+ cancel: "Abbrechen",
1255
+ download: "Herunterladen"
1256
+ }
1257
+ };
1258
+
1259
+ // src/i18n/locales/it.json
1260
+ var it_default = {
1261
+ direction: "ltr",
1262
+ chatWidget: {
1263
+ title: "Chat",
1264
+ placeholder: "Scrivi un messaggio...",
1265
+ openChat: "Apri chat",
1266
+ closeChat: "Chiudi chat",
1267
+ connectionStatus: {
1268
+ connected: "Connesso",
1269
+ disconnected: "Disconnesso"
1270
+ }
1271
+ },
1272
+ inputArea: {
1273
+ send: "Invia",
1274
+ uploading: "Caricamento...",
1275
+ dropzone: {
1276
+ dropFiles: "Rilascia i file qui",
1277
+ dropOrClick: "Rilascia o clicca per allegare"
1278
+ }
1279
+ },
1280
+ typingIndicator: {
1281
+ typing: "sta scrivendo",
1282
+ isTyping: "sta scrivendo..."
1283
+ },
1284
+ messageList: {
1285
+ emptyState: "Nessun messaggio ancora. Inizia la conversazione!"
1286
+ },
1287
+ attachmentList: {
1288
+ remove: "Rimuovi",
1289
+ uploadFailed: "Caricamento fallito"
1290
+ },
1291
+ header: {
1292
+ enterFullscreen: "Schermo intero",
1293
+ exitFullscreen: "Esci da schermo intero",
1294
+ closeChat: "Chiudi chat",
1295
+ lightMode: "Modalit\xE0 chiara",
1296
+ darkMode: "Modalit\xE0 scura",
1297
+ autoMode: "Tema sistema"
1298
+ },
1299
+ floatingButton: {
1300
+ openChat: "Apri chat",
1301
+ closeChat: "Chiudi chat"
1302
+ },
1303
+ push: {
1304
+ title: "Notifiche",
1305
+ description: "Ricevi messaggi anche quando la chat \xE8 chiusa",
1306
+ enable: "Attiva notifiche",
1307
+ disable: "Disattiva notifiche",
1308
+ denied: "Notifiche bloccate",
1309
+ unsupported: "Notifiche non supportate",
1310
+ subscribing: "Iscrizione...",
1311
+ notifications: "Notifiche"
1312
+ },
1313
+ notification: {
1314
+ openChat: "Apri Chat",
1315
+ dismiss: "Ignora"
1316
+ },
1317
+ common: {
1318
+ loading: "Caricamento...",
1319
+ error: "Errore",
1320
+ retry: "Riprova",
1321
+ cancel: "Annulla",
1322
+ download: "Scarica"
1323
+ }
1324
+ };
1325
+
1326
+ // src/i18n/locales/nl.json
1327
+ var nl_default = {
1328
+ direction: "ltr",
1329
+ chatWidget: {
1330
+ title: "Chat",
1331
+ placeholder: "Typ een bericht...",
1332
+ openChat: "Open chat",
1333
+ closeChat: "Sluit chat",
1334
+ connectionStatus: {
1335
+ connected: "Verbonden",
1336
+ disconnected: "Verbinding verbroken"
1337
+ }
1338
+ },
1339
+ inputArea: {
1340
+ send: "Versturen",
1341
+ uploading: "Uploaden...",
1342
+ dropzone: {
1343
+ dropFiles: "Zet bestanden hier neer",
1344
+ dropOrClick: "Sleep of klik om bij te voegen"
1345
+ }
1346
+ },
1347
+ typingIndicator: {
1348
+ typing: "typt",
1349
+ isTyping: "typt..."
1350
+ },
1351
+ messageList: {
1352
+ emptyState: "Nog geen berichten. Start het gesprek!"
1353
+ },
1354
+ attachmentList: {
1355
+ remove: "Verwijderen",
1356
+ uploadFailed: "Upload mislukt"
1357
+ },
1358
+ header: {
1359
+ enterFullscreen: "Volledig scherm",
1360
+ exitFullscreen: "Volledig scherm afsluiten",
1361
+ closeChat: "Sluit chat",
1362
+ lightMode: "Lichte modus",
1363
+ darkMode: "Donkere modus",
1364
+ autoMode: "Systeemthema"
1365
+ },
1366
+ floatingButton: {
1367
+ openChat: "Open chat",
1368
+ closeChat: "Sluit chat"
1369
+ },
1370
+ push: {
1371
+ title: "Meldingen",
1372
+ description: "Ontvang berichten zelfs wanneer de chat gesloten is",
1373
+ enable: "Meldingen inschakelen",
1374
+ disable: "Meldingen uitschakelen",
1375
+ denied: "Meldingen geblokkeerd",
1376
+ unsupported: "Meldingen niet ondersteund",
1377
+ subscribing: "Abonneren...",
1378
+ notifications: "Meldingen"
1379
+ },
1380
+ notification: {
1381
+ openChat: "Open Chat",
1382
+ dismiss: "Sluiten"
1383
+ },
1384
+ common: {
1385
+ loading: "Laden...",
1386
+ error: "Fout",
1387
+ retry: "Opnieuw proberen",
1388
+ cancel: "Annuleren",
1389
+ download: "Downloaden"
1390
+ }
1391
+ };
1392
+
1393
+ // src/i18n/locales/pl.json
1394
+ var pl_default = {
1395
+ direction: "ltr",
1396
+ chatWidget: {
1397
+ title: "Czat",
1398
+ placeholder: "Napisz wiadomo\u015B\u0107...",
1399
+ openChat: "Otw\xF3rz czat",
1400
+ closeChat: "Zamknij czat",
1401
+ connectionStatus: {
1402
+ connected: "Po\u0142\u0105czono",
1403
+ disconnected: "Roz\u0142\u0105czono"
1404
+ }
1405
+ },
1406
+ inputArea: {
1407
+ send: "Wy\u015Blij",
1408
+ uploading: "Przesy\u0142anie...",
1409
+ dropzone: {
1410
+ dropFiles: "Upu\u015B\u0107 pliki tutaj",
1411
+ dropOrClick: "Upu\u015B\u0107 lub kliknij, aby do\u0142\u0105czy\u0107"
1412
+ }
1413
+ },
1414
+ typingIndicator: {
1415
+ typing: "pisze",
1416
+ isTyping: "pisze..."
1417
+ },
1418
+ messageList: {
1419
+ emptyState: "Brak wiadomo\u015Bci. Rozpocznij rozmow\u0119!"
1420
+ },
1421
+ attachmentList: {
1422
+ remove: "Usu\u0144",
1423
+ uploadFailed: "Przesy\u0142anie nie powiod\u0142o si\u0119"
1424
+ },
1425
+ header: {
1426
+ enterFullscreen: "Pe\u0142ny ekran",
1427
+ exitFullscreen: "Opu\u015B\u0107 pe\u0142ny ekran",
1428
+ closeChat: "Zamknij czat",
1429
+ lightMode: "Jasny tryb",
1430
+ darkMode: "Ciemny tryb",
1431
+ autoMode: "Motyw systemu"
1432
+ },
1433
+ floatingButton: {
1434
+ openChat: "Otw\xF3rz czat",
1435
+ closeChat: "Zamknij czat"
1436
+ },
1437
+ push: {
1438
+ title: "Powiadomienia",
1439
+ description: "Otrzymuj wiadomo\u015Bci nawet przy zamkni\u0119tym czacie",
1440
+ enable: "W\u0142\u0105cz powiadomienia",
1441
+ disable: "Wy\u0142\u0105cz powiadomienia",
1442
+ denied: "Powiadomienia zablokowane",
1443
+ unsupported: "Powiadomienia nieobs\u0142ugiwane",
1444
+ subscribing: "Subskrybowanie...",
1445
+ notifications: "Powiadomienia"
1446
+ },
1447
+ notification: {
1448
+ openChat: "Otw\xF3rz Czat",
1449
+ dismiss: "Odrzu\u0107"
1450
+ },
1451
+ common: {
1452
+ loading: "\u0141adowanie...",
1453
+ error: "B\u0142\u0105d",
1454
+ retry: "Spr\xF3buj ponownie",
1455
+ cancel: "Anuluj",
1456
+ download: "Pobierz"
1457
+ }
1458
+ };
1459
+
1460
+ // src/i18n/locales/cs.json
1461
+ var cs_default = {
1462
+ direction: "ltr",
1463
+ chatWidget: {
1464
+ title: "Chat",
1465
+ placeholder: "Napi\u0161te zpr\xE1vu...",
1466
+ openChat: "Otev\u0159\xEDt chat",
1467
+ closeChat: "Zav\u0159\xEDt chat",
1468
+ connectionStatus: {
1469
+ connected: "P\u0159ipojeno",
1470
+ disconnected: "Odpojeno"
1471
+ }
1472
+ },
1473
+ inputArea: {
1474
+ send: "Odeslat",
1475
+ uploading: "Nahr\xE1v\xE1n\xED...",
1476
+ dropzone: {
1477
+ dropFiles: "P\u0159et\xE1hn\u011Bte soubory sem",
1478
+ dropOrClick: "P\u0159et\xE1hn\u011Bte nebo klikn\u011Bte pro p\u0159ilo\u017Een\xED"
1479
+ }
1480
+ },
1481
+ typingIndicator: {
1482
+ typing: "p\xED\u0161e",
1483
+ isTyping: "p\xED\u0161e..."
1484
+ },
1485
+ messageList: {
1486
+ emptyState: "Zat\xEDm \u017E\xE1dn\xE9 zpr\xE1vy. Zahajte konverzaci!"
1487
+ },
1488
+ attachmentList: {
1489
+ remove: "Odebrat",
1490
+ uploadFailed: "Nahr\xE1v\xE1n\xED selhalo"
1491
+ },
1492
+ header: {
1493
+ enterFullscreen: "Cel\xE1 obrazovka",
1494
+ exitFullscreen: "Opustit celou obrazovku",
1495
+ closeChat: "Zav\u0159\xEDt chat",
1496
+ lightMode: "Sv\u011Btl\xFD re\u017Eim",
1497
+ darkMode: "Tmav\xFD re\u017Eim",
1498
+ autoMode: "Syst\xE9mov\xE9 t\xE9ma"
1499
+ },
1500
+ floatingButton: {
1501
+ openChat: "Otev\u0159\xEDt chat",
1502
+ closeChat: "Zav\u0159\xEDt chat"
1503
+ },
1504
+ push: {
1505
+ title: "Ozn\xE1men\xED",
1506
+ description: "P\u0159ij\xEDmejte zpr\xE1vy i kdy\u017E je chat zav\u0159en\xFD",
1507
+ enable: "Povolit ozn\xE1men\xED",
1508
+ disable: "Zak\xE1zat ozn\xE1men\xED",
1509
+ denied: "Ozn\xE1men\xED blokov\xE1na",
1510
+ unsupported: "Ozn\xE1men\xED nejsou podporov\xE1na",
1511
+ subscribing: "P\u0159ihla\u0161ov\xE1n\xED...",
1512
+ notifications: "Ozn\xE1men\xED"
1513
+ },
1514
+ notification: {
1515
+ openChat: "Otev\u0159\xEDt Chat",
1516
+ dismiss: "Zav\u0159\xEDt"
1517
+ },
1518
+ common: {
1519
+ loading: "Na\u010D\xEDt\xE1n\xED...",
1520
+ error: "Chyba",
1521
+ retry: "Zkusit znovu",
1522
+ cancel: "Zru\u0161it",
1523
+ download: "St\xE1hnout"
1524
+ }
1525
+ };
1526
+
1527
+ // src/i18n/locales/ro.json
1528
+ var ro_default = {
1529
+ direction: "ltr",
1530
+ chatWidget: {
1531
+ title: "Chat",
1532
+ placeholder: "Scrie un mesaj...",
1533
+ openChat: "Deschide chat",
1534
+ closeChat: "\xCEnchide chat",
1535
+ connectionStatus: {
1536
+ connected: "Conectat",
1537
+ disconnected: "Deconectat"
1538
+ }
1539
+ },
1540
+ inputArea: {
1541
+ send: "Trimite",
1542
+ uploading: "Se \xEEncarc\u0103...",
1543
+ dropzone: {
1544
+ dropFiles: "Plasa\u021Bi fi\u0219ierele aici",
1545
+ dropOrClick: "Plasa\u021Bi sau face\u021Bi clic pentru a ata\u0219a"
1546
+ }
1547
+ },
1548
+ typingIndicator: {
1549
+ typing: "scrie",
1550
+ isTyping: "scrie..."
1551
+ },
1552
+ messageList: {
1553
+ emptyState: "\xCEnc\u0103 nu exist\u0103 mesaje. \xCEncepe conversa\u021Bia!"
1554
+ },
1555
+ attachmentList: {
1556
+ remove: "Elimin\u0103",
1557
+ uploadFailed: "\xCEnc\u0103rcare e\u0219uat\u0103"
1558
+ },
1559
+ header: {
1560
+ enterFullscreen: "Ecran complet",
1561
+ exitFullscreen: "Ie\u0219i\u021Bi din ecran complet",
1562
+ closeChat: "\xCEnchide chat",
1563
+ lightMode: "Mod luminos",
1564
+ darkMode: "Mod \xEEntunecat",
1565
+ autoMode: "Tem\u0103 sistem"
1566
+ },
1567
+ floatingButton: {
1568
+ openChat: "Deschide chat",
1569
+ closeChat: "\xCEnchide chat"
1570
+ },
1571
+ push: {
1572
+ title: "Notific\u0103ri",
1573
+ description: "Primi\u021Bi mesaje chiar \u0219i c\xE2nd chatul este \xEEnchis",
1574
+ enable: "Activeaz\u0103 notific\u0103rile",
1575
+ disable: "Dezactiveaz\u0103 notific\u0103rile",
1576
+ denied: "Notific\u0103ri blocate",
1577
+ unsupported: "Notific\u0103ri nesuportate",
1578
+ subscribing: "Abonare...",
1579
+ notifications: "Notific\u0103ri"
1580
+ },
1581
+ notification: {
1582
+ openChat: "Deschide Chat",
1583
+ dismiss: "Ignor\u0103"
1584
+ },
1585
+ common: {
1586
+ loading: "Se \xEEncarc\u0103...",
1587
+ error: "Eroare",
1588
+ retry: "Re\xEEncearc\u0103",
1589
+ cancel: "Anuleaz\u0103",
1590
+ download: "Descarc\u0103"
1591
+ }
1592
+ };
1593
+
1594
+ // src/i18n/locales/hu.json
1595
+ var hu_default = {
1596
+ direction: "ltr",
1597
+ chatWidget: {
1598
+ title: "Chat",
1599
+ placeholder: "\xCDrj egy \xFCzenetet...",
1600
+ openChat: "Chat megnyit\xE1sa",
1601
+ closeChat: "Chat bez\xE1r\xE1sa",
1602
+ connectionStatus: {
1603
+ connected: "Csatlakozva",
1604
+ disconnected: "Lecsatlakozva"
1605
+ }
1606
+ },
1607
+ inputArea: {
1608
+ send: "K\xFCld\xE9s",
1609
+ uploading: "Felt\xF6lt\xE9s...",
1610
+ dropzone: {
1611
+ dropFiles: "Dobja ide a f\xE1jlokat",
1612
+ dropOrClick: "Dobja vagy kattintson a csatol\xE1shoz"
1613
+ }
1614
+ },
1615
+ typingIndicator: {
1616
+ typing: "\xEDr",
1617
+ isTyping: "\xEDr..."
1618
+ },
1619
+ messageList: {
1620
+ emptyState: "M\xE9g nincsenek \xFCzenetek. Ind\xEDtsa el a besz\xE9lget\xE9st!"
1621
+ },
1622
+ attachmentList: {
1623
+ remove: "Elt\xE1vol\xEDt\xE1s",
1624
+ uploadFailed: "Felt\xF6lt\xE9s sikertelen"
1625
+ },
1626
+ header: {
1627
+ enterFullscreen: "Teljes k\xE9perny\u0151",
1628
+ exitFullscreen: "Kil\xE9p\xE9s a teljes k\xE9perny\u0151b\u0151l",
1629
+ closeChat: "Chat bez\xE1r\xE1sa",
1630
+ lightMode: "Vil\xE1gos m\xF3d",
1631
+ darkMode: "S\xF6t\xE9t m\xF3d",
1632
+ autoMode: "Rendszert\xE9ma"
1633
+ },
1634
+ floatingButton: {
1635
+ openChat: "Chat megnyit\xE1sa",
1636
+ closeChat: "Chat bez\xE1r\xE1sa"
1637
+ },
1638
+ push: {
1639
+ title: "\xC9rtes\xEDt\xE9sek",
1640
+ description: "\xDCzenetek fogad\xE1sa akkor is, ha a chat be van z\xE1rva",
1641
+ enable: "\xC9rtes\xEDt\xE9sek enged\xE9lyez\xE9se",
1642
+ disable: "\xC9rtes\xEDt\xE9sek letilt\xE1sa",
1643
+ denied: "\xC9rtes\xEDt\xE9sek blokkolva",
1644
+ unsupported: "\xC9rtes\xEDt\xE9sek nem t\xE1mogatottak",
1645
+ subscribing: "Feliratkoz\xE1s...",
1646
+ notifications: "\xC9rtes\xEDt\xE9sek"
1647
+ },
1648
+ notification: {
1649
+ openChat: "Chat Megnyit\xE1sa",
1650
+ dismiss: "Elutas\xEDt\xE1s"
1651
+ },
1652
+ common: {
1653
+ loading: "Bet\xF6lt\xE9s...",
1654
+ error: "Hiba",
1655
+ retry: "\xDAjrapr\xF3b\xE1lkoz\xE1s",
1656
+ cancel: "M\xE9gse",
1657
+ download: "Let\xF6lt\xE9s"
1658
+ }
1659
+ };
1660
+
1661
+ // src/i18n/locales/uk.json
1662
+ var uk_default = {
1663
+ direction: "ltr",
1664
+ chatWidget: {
1665
+ title: "\u0427\u0430\u0442",
1666
+ placeholder: "\u041D\u0430\u043F\u0438\u0448\u0456\u0442\u044C \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F...",
1667
+ openChat: "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
1668
+ closeChat: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
1669
+ connectionStatus: {
1670
+ connected: "\u041F\u0456\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E",
1671
+ disconnected: "\u0412\u0456\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E"
1672
+ }
1673
+ },
1674
+ inputArea: {
1675
+ send: "\u041D\u0430\u0434\u0456\u0441\u043B\u0430\u0442\u0438",
1676
+ uploading: "\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F...",
1677
+ dropzone: {
1678
+ dropFiles: "\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B\u0438 \u0441\u044E\u0434\u0438",
1679
+ dropOrClick: "\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0430\u0431\u043E \u043D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u0440\u0438\u043A\u0440\u0456\u043F\u0438\u0442\u0438"
1680
+ }
1681
+ },
1682
+ typingIndicator: {
1683
+ typing: "\u0434\u0440\u0443\u043A\u0443\u0454",
1684
+ isTyping: "\u0434\u0440\u0443\u043A\u0443\u0454..."
1685
+ },
1686
+ messageList: {
1687
+ emptyState: "\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u044C \u0449\u0435 \u043D\u0435\u043C\u0430\u0454. \u041F\u043E\u0447\u043D\u0456\u0442\u044C \u0440\u043E\u0437\u043C\u043E\u0432\u0443!"
1688
+ },
1689
+ attachmentList: {
1690
+ remove: "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",
1691
+ uploadFailed: "\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438"
1692
+ },
1693
+ header: {
1694
+ enterFullscreen: "\u041F\u043E\u0432\u043D\u0438\u0439 \u0435\u043A\u0440\u0430\u043D",
1695
+ exitFullscreen: "\u0412\u0438\u0439\u0442\u0438 \u0437 \u043F\u043E\u0432\u043D\u043E\u0433\u043E \u0435\u043A\u0440\u0430\u043D\u0443",
1696
+ closeChat: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
1697
+ lightMode: "\u0421\u0432\u0456\u0442\u043B\u0438\u0439 \u0440\u0435\u0436\u0438\u043C",
1698
+ darkMode: "\u0422\u0435\u043C\u043D\u0438\u0439 \u0440\u0435\u0436\u0438\u043C",
1699
+ autoMode: "\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0430 \u0442\u0435\u043C\u0430"
1700
+ },
1701
+ floatingButton: {
1702
+ openChat: "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
1703
+ closeChat: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442"
1704
+ },
1705
+ push: {
1706
+ title: "\u0421\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F",
1707
+ description: "\u041E\u0442\u0440\u0438\u043C\u0443\u0439\u0442\u0435 \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F, \u043D\u0430\u0432\u0456\u0442\u044C \u043A\u043E\u043B\u0438 \u0447\u0430\u0442 \u0437\u0430\u043A\u0440\u0438\u0442\u043E",
1708
+ enable: "\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F",
1709
+ disable: "\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F",
1710
+ denied: "\u0421\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0431\u043B\u043E\u043A\u043E\u0432\u0430\u043D\u043E",
1711
+ unsupported: "\u0421\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u044E\u0442\u044C\u0441\u044F",
1712
+ subscribing: "\u041F\u0456\u0434\u043F\u0438\u0441\u043A\u0430...",
1713
+ notifications: "\u0421\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F"
1714
+ },
1715
+ notification: {
1716
+ openChat: "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0427\u0430\u0442",
1717
+ dismiss: "\u0412\u0456\u0434\u0445\u0438\u043B\u0438\u0442\u0438"
1718
+ },
1719
+ common: {
1720
+ loading: "\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F...",
1721
+ error: "\u041F\u043E\u043C\u0438\u043B\u043A\u0430",
1722
+ retry: "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438",
1723
+ cancel: "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
1724
+ download: "\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438"
1725
+ }
1726
+ };
1727
+
1728
+ // src/i18n/locales/ru.json
1729
+ var ru_default = {
1730
+ direction: "ltr",
1731
+ chatWidget: {
1732
+ title: "\u0427\u0430\u0442",
1733
+ placeholder: "\u041D\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435...",
1734
+ openChat: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
1735
+ closeChat: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
1736
+ connectionStatus: {
1737
+ connected: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E",
1738
+ disconnected: "\u041E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E"
1739
+ }
1740
+ },
1741
+ inputArea: {
1742
+ send: "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",
1743
+ uploading: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...",
1744
+ dropzone: {
1745
+ dropFiles: "\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u044B \u0441\u044E\u0434\u0430",
1746
+ dropOrClick: "\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0438\u043B\u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0438\u043A\u0440\u0435\u043F\u0438\u0442\u044C"
1747
+ }
1748
+ },
1749
+ typingIndicator: {
1750
+ typing: "\u043F\u0435\u0447\u0430\u0442\u0430\u0435\u0442",
1751
+ isTyping: "\u043F\u0435\u0447\u0430\u0442\u0430\u0435\u0442..."
1752
+ },
1753
+ messageList: {
1754
+ emptyState: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442. \u041D\u0430\u0447\u043D\u0438\u0442\u0435 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440!"
1755
+ },
1756
+ attachmentList: {
1757
+ remove: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C",
1758
+ uploadFailed: "\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438"
1759
+ },
1760
+ header: {
1761
+ enterFullscreen: "\u041F\u043E\u043B\u043D\u044B\u0439 \u044D\u043A\u0440\u0430\u043D",
1762
+ exitFullscreen: "\u0412\u044B\u0439\u0442\u0438 \u0438\u0437 \u043F\u043E\u043B\u043D\u043E\u0433\u043E \u044D\u043A\u0440\u0430\u043D\u0430",
1763
+ closeChat: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
1764
+ lightMode: "\u0421\u0432\u0435\u0442\u043B\u0430\u044F \u0442\u0435\u043C\u0430",
1765
+ darkMode: "\u0422\u0451\u043C\u043D\u0430\u044F \u0442\u0435\u043C\u0430",
1766
+ autoMode: "\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0430\u044F \u0442\u0435\u043C\u0430"
1767
+ },
1768
+ floatingButton: {
1769
+ openChat: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
1770
+ closeChat: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442"
1771
+ },
1772
+ push: {
1773
+ title: "\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",
1774
+ description: "\u041F\u043E\u043B\u0443\u0447\u0430\u0439\u0442\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F, \u0434\u0430\u0436\u0435 \u043A\u043E\u0433\u0434\u0430 \u0447\u0430\u0442 \u0437\u0430\u043A\u0440\u044B\u0442",
1775
+ enable: "\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",
1776
+ disable: "\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F",
1777
+ denied: "\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u044B",
1778
+ unsupported: "\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F",
1779
+ subscribing: "\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430...",
1780
+ notifications: "\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F"
1781
+ },
1782
+ notification: {
1783
+ openChat: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0427\u0430\u0442",
1784
+ dismiss: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C"
1785
+ },
1786
+ common: {
1787
+ loading: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...",
1788
+ error: "\u041E\u0448\u0438\u0431\u043A\u0430",
1789
+ retry: "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",
1790
+ cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
1791
+ download: "\u0421\u043A\u0430\u0447\u0430\u0442\u044C"
1792
+ }
1793
+ };
1794
+
1795
+ // src/i18n/locales/el.json
1796
+ var el_default = {
1797
+ direction: "ltr",
1798
+ chatWidget: {
1799
+ title: "\u03A3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1",
1800
+ placeholder: "\u0393\u03C1\u03AC\u03C8\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03BC\u03AE\u03BD\u03C5\u03BC\u03B1...",
1801
+ openChat: "\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1\u03C2",
1802
+ closeChat: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1\u03C2",
1803
+ connectionStatus: {
1804
+ connected: "\u03A3\u03C5\u03BD\u03B4\u03B5\u03B4\u03B5\u03BC\u03AD\u03BD\u03BF",
1805
+ disconnected: "\u0391\u03C0\u03BF\u03C3\u03C5\u03BD\u03B4\u03B5\u03B4\u03B5\u03BC\u03AD\u03BD\u03BF"
1806
+ }
1807
+ },
1808
+ inputArea: {
1809
+ send: "\u0391\u03C0\u03BF\u03C3\u03C4\u03BF\u03BB\u03AE",
1810
+ uploading: "\u039C\u03B5\u03C4\u03B1\u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7...",
1811
+ dropzone: {
1812
+ dropFiles: "\u0391\u03C6\u03AE\u03C3\u03C4\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03B5\u03B4\u03CE",
1813
+ dropOrClick: "\u0391\u03C6\u03AE\u03C3\u03C4\u03B5 \u03AE \u03BA\u03AC\u03BD\u03C4\u03B5 \u03BA\u03BB\u03B9\u03BA \u03B3\u03B9\u03B1 \u03B5\u03C0\u03B9\u03C3\u03CD\u03BD\u03B1\u03C8\u03B7"
1814
+ }
1815
+ },
1816
+ typingIndicator: {
1817
+ typing: "\u03B3\u03C1\u03AC\u03C6\u03B5\u03B9",
1818
+ isTyping: "\u03B3\u03C1\u03AC\u03C6\u03B5\u03B9..."
1819
+ },
1820
+ messageList: {
1821
+ emptyState: "\u0394\u03B5\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03C5\u03BD \u03B1\u03BA\u03CC\u03BC\u03B7 \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1. \u039E\u03B5\u03BA\u03B9\u03BD\u03AE\u03C3\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1!"
1822
+ },
1823
+ attachmentList: {
1824
+ remove: "\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7",
1825
+ uploadFailed: "\u0397 \u03BC\u03B5\u03C4\u03B1\u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03B1\u03C0\u03AD\u03C4\u03C5\u03C7\u03B5"
1826
+ },
1827
+ header: {
1828
+ enterFullscreen: "\u03A0\u03BB\u03AE\u03C1\u03B7\u03C2 \u03BF\u03B8\u03CC\u03BD\u03B7",
1829
+ exitFullscreen: "\u0388\u03BE\u03BF\u03B4\u03BF\u03C2 \u03B1\u03C0\u03CC \u03C0\u03BB\u03AE\u03C1\u03B7 \u03BF\u03B8\u03CC\u03BD\u03B7",
1830
+ closeChat: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1\u03C2",
1831
+ lightMode: "\u03A6\u03C9\u03C4\u03B5\u03B9\u03BD\u03AE \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1",
1832
+ darkMode: "\u03A3\u03BA\u03BF\u03C4\u03B5\u03B9\u03BD\u03AE \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1",
1833
+ autoMode: "\u0398\u03AD\u03BC\u03B1 \u03C3\u03C5\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2"
1834
+ },
1835
+ floatingButton: {
1836
+ openChat: "\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1\u03C2",
1837
+ closeChat: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1\u03C2"
1838
+ },
1839
+ push: {
1840
+ title: "\u0395\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2",
1841
+ description: "\u039B\u03AC\u03B2\u03B5\u03C4\u03B5 \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1 \u03B1\u03BA\u03CC\u03BC\u03B1 \u03BA\u03B1\u03B9 \u03CC\u03C4\u03B1\u03BD \u03B7 \u03C3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BA\u03BB\u03B5\u03B9\u03C3\u03C4\u03AE",
1842
+ enable: "\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03C9\u03BD",
1843
+ disable: "\u0391\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03C9\u03BD",
1844
+ denied: "\u0395\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2 \u03B1\u03C0\u03BF\u03BA\u03BB\u03B5\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2",
1845
+ unsupported: "\u039F\u03B9 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2 \u03B4\u03B5\u03BD \u03C5\u03C0\u03BF\u03C3\u03C4\u03B7\u03C1\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9",
1846
+ subscribing: "\u0395\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE...",
1847
+ notifications: "\u0395\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2"
1848
+ },
1849
+ notification: {
1850
+ openChat: "\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03A3\u03C5\u03BD\u03BF\u03BC\u03B9\u03BB\u03AF\u03B1\u03C2",
1851
+ dismiss: "\u0391\u03C0\u03CC\u03C1\u03C1\u03B9\u03C8\u03B7"
1852
+ },
1853
+ common: {
1854
+ loading: "\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7...",
1855
+ error: "\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1",
1856
+ retry: "\u0394\u03BF\u03BA\u03B9\u03BC\u03AE \u03BE\u03B1\u03BD\u03AC",
1857
+ cancel: "\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7",
1858
+ download: "\u039B\u03AE\u03C8\u03B7"
1859
+ }
1860
+ };
1861
+
1862
+ // src/i18n/locales/tr.json
1863
+ var tr_default = {
1864
+ direction: "ltr",
1865
+ chatWidget: {
1866
+ title: "Sohbet",
1867
+ placeholder: "Bir mesaj yaz\u0131n...",
1868
+ openChat: "Sohbeti a\xE7",
1869
+ closeChat: "Sohbeti kapat",
1870
+ connectionStatus: {
1871
+ connected: "Ba\u011Fland\u0131",
1872
+ disconnected: "Ba\u011Flant\u0131 kesildi"
1873
+ }
1874
+ },
1875
+ inputArea: {
1876
+ send: "G\xF6nder",
1877
+ uploading: "Y\xFCkleniyor...",
1878
+ dropzone: {
1879
+ dropFiles: "Dosyalar\u0131 buraya b\u0131rak\u0131n",
1880
+ dropOrClick: "Eklemek i\xE7in b\u0131rak\u0131n veya t\u0131klay\u0131n"
1881
+ }
1882
+ },
1883
+ typingIndicator: {
1884
+ typing: "yaz\u0131yor",
1885
+ isTyping: "yaz\u0131yor..."
1886
+ },
1887
+ messageList: {
1888
+ emptyState: "Hen\xFCz mesaj yok. Sohbeti ba\u015Flat\u0131n!"
1889
+ },
1890
+ attachmentList: {
1891
+ remove: "Kald\u0131r",
1892
+ uploadFailed: "Y\xFCkleme ba\u015Far\u0131s\u0131z"
1893
+ },
1894
+ header: {
1895
+ enterFullscreen: "Tam ekran",
1896
+ exitFullscreen: "Tam ekrandan \xE7\u0131k",
1897
+ closeChat: "Sohbeti kapat",
1898
+ lightMode: "A\xE7\u0131k mod",
1899
+ darkMode: "Koyu mod",
1900
+ autoMode: "Sistem temas\u0131"
1901
+ },
1902
+ floatingButton: {
1903
+ openChat: "Sohbeti a\xE7",
1904
+ closeChat: "Sohbeti kapat"
1905
+ },
1906
+ push: {
1907
+ title: "Bildirimler",
1908
+ description: "Sohbet kapal\u0131yken bile mesaj al\u0131n",
1909
+ enable: "Bildirimleri etkinle\u015Ftir",
1910
+ disable: "Bildirimleri devre d\u0131\u015F\u0131 b\u0131rak",
1911
+ denied: "Bildirimler engellendi",
1912
+ unsupported: "Bildirimler desteklenmiyor",
1913
+ subscribing: "Abone olunuyor...",
1914
+ notifications: "Bildirimler"
1915
+ },
1916
+ notification: {
1917
+ openChat: "Sohbeti A\xE7",
1918
+ dismiss: "Kapat"
1919
+ },
1920
+ common: {
1921
+ loading: "Y\xFCkleniyor...",
1922
+ error: "Hata",
1923
+ retry: "Tekrar dene",
1924
+ cancel: "\u0130ptal",
1925
+ download: "\u0130ndir"
1926
+ }
1927
+ };
1928
+
1929
+ // src/i18n/locales/et.json
1930
+ var et_default = {
1931
+ direction: "ltr",
1932
+ chatWidget: {
1933
+ title: "Vestlus",
1934
+ placeholder: "Kirjuta s\xF5num...",
1935
+ openChat: "Ava vestlus",
1936
+ closeChat: "Sulge vestlus",
1937
+ connectionStatus: {
1938
+ connected: "\xDChendatud",
1939
+ disconnected: "\xDChendus katkenud"
1940
+ }
1941
+ },
1942
+ inputArea: {
1943
+ send: "Saada",
1944
+ uploading: "Laadimine...",
1945
+ dropzone: {
1946
+ dropFiles: "Lohista failid siia",
1947
+ dropOrClick: "Lohista v\xF5i kl\xF5psa manustamiseks"
1948
+ }
1949
+ },
1950
+ typingIndicator: {
1951
+ typing: "kirjutab",
1952
+ isTyping: "kirjutab..."
1953
+ },
1954
+ messageList: {
1955
+ emptyState: "Veel pole s\xF5numeid. Alusta vestlust!"
1956
+ },
1957
+ attachmentList: {
1958
+ remove: "Eemalda",
1959
+ uploadFailed: "\xDCleslaadimine eba\xF5nnestus"
1960
+ },
1961
+ header: {
1962
+ enterFullscreen: "T\xE4isekraan",
1963
+ exitFullscreen: "V\xE4lju t\xE4isekraanist",
1964
+ closeChat: "Sulge vestlus",
1965
+ lightMode: "Heledre\u017Eiim",
1966
+ darkMode: "Tumedre\u017Eiim",
1967
+ autoMode: "S\xFCsteemi teema"
1968
+ },
1969
+ floatingButton: {
1970
+ openChat: "Ava vestlus",
1971
+ closeChat: "Sulge vestlus"
1972
+ },
1973
+ push: {
1974
+ title: "Teavitused",
1975
+ description: "Saage s\xF5numeid ka siis, kui vestlus on suletud",
1976
+ enable: "Luba teavitused",
1977
+ disable: "Keela teavitused",
1978
+ denied: "Teavitused blokeeritud",
1979
+ unsupported: "Teavitused pole toetatud",
1980
+ subscribing: "Tellimine...",
1981
+ notifications: "Teavitused"
1982
+ },
1983
+ notification: {
1984
+ openChat: "Ava Vestlus",
1985
+ dismiss: "Loobu"
1986
+ },
1987
+ common: {
1988
+ loading: "Laadimine...",
1989
+ error: "Viga",
1990
+ retry: "Proovi uuesti",
1991
+ cancel: "T\xFChista",
1992
+ download: "Laadi alla"
1993
+ }
1994
+ };
1995
+
1996
+ // src/i18n/locales/ja.json
1997
+ var ja_default = {
1998
+ direction: "ltr",
1999
+ chatWidget: {
2000
+ title: "\u30C1\u30E3\u30C3\u30C8",
2001
+ placeholder: "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5165\u529B...",
2002
+ openChat: "\u30C1\u30E3\u30C3\u30C8\u3092\u958B\u304F",
2003
+ closeChat: "\u30C1\u30E3\u30C3\u30C8\u3092\u9589\u3058\u308B",
2004
+ connectionStatus: {
2005
+ connected: "\u63A5\u7D9A\u6E08\u307F",
2006
+ disconnected: "\u5207\u65AD\u6E08\u307F"
2007
+ }
2008
+ },
2009
+ inputArea: {
2010
+ send: "\u9001\u4FE1",
2011
+ uploading: "\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u4E2D...",
2012
+ dropzone: {
2013
+ dropFiles: "\u30D5\u30A1\u30A4\u30EB\u3092\u3053\u3053\u306B\u30C9\u30ED\u30C3\u30D7",
2014
+ dropOrClick: "\u30C9\u30ED\u30C3\u30D7\u307E\u305F\u306F\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6DFB\u4ED8"
2015
+ }
2016
+ },
2017
+ typingIndicator: {
2018
+ typing: "\u5165\u529B\u4E2D",
2019
+ isTyping: "\u5165\u529B\u4E2D..."
2020
+ },
2021
+ messageList: {
2022
+ emptyState: "\u307E\u3060\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u4F1A\u8A71\u3092\u59CB\u3081\u307E\u3057\u3087\u3046\uFF01"
2023
+ },
2024
+ attachmentList: {
2025
+ remove: "\u524A\u9664",
2026
+ uploadFailed: "\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F"
2027
+ },
2028
+ header: {
2029
+ enterFullscreen: "\u5168\u753B\u9762\u8868\u793A",
2030
+ exitFullscreen: "\u5168\u753B\u9762\u3092\u7D42\u4E86",
2031
+ closeChat: "\u30C1\u30E3\u30C3\u30C8\u3092\u9589\u3058\u308B",
2032
+ lightMode: "\u30E9\u30A4\u30C8\u30E2\u30FC\u30C9",
2033
+ darkMode: "\u30C0\u30FC\u30AF\u30E2\u30FC\u30C9",
2034
+ autoMode: "\u30B7\u30B9\u30C6\u30E0\u30C6\u30FC\u30DE"
2035
+ },
2036
+ floatingButton: {
2037
+ openChat: "\u30C1\u30E3\u30C3\u30C8\u3092\u958B\u304F",
2038
+ closeChat: "\u30C1\u30E3\u30C3\u30C8\u3092\u9589\u3058\u308B"
2039
+ },
2040
+ push: {
2041
+ title: "\u901A\u77E5",
2042
+ description: "\u30C1\u30E3\u30C3\u30C8\u304C\u9589\u3058\u3066\u3044\u3066\u3082\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u53D7\u4FE1",
2043
+ enable: "\u901A\u77E5\u3092\u6709\u52B9\u306B\u3059\u308B",
2044
+ disable: "\u901A\u77E5\u3092\u7121\u52B9\u306B\u3059\u308B",
2045
+ denied: "\u901A\u77E5\u304C\u30D6\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u307E\u3059",
2046
+ unsupported: "\u901A\u77E5\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
2047
+ subscribing: "\u767B\u9332\u4E2D...",
2048
+ notifications: "\u901A\u77E5"
2049
+ },
2050
+ notification: {
2051
+ openChat: "\u30C1\u30E3\u30C3\u30C8\u3092\u958B\u304F",
2052
+ dismiss: "\u9589\u3058\u308B"
2053
+ },
2054
+ common: {
2055
+ loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
2056
+ error: "\u30A8\u30E9\u30FC",
2057
+ retry: "\u518D\u8A66\u884C",
2058
+ cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
2059
+ download: "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9"
2060
+ }
2061
+ };
2062
+
2063
+ // src/i18n/locales/zh-CN.json
2064
+ var zh_CN_default = {
2065
+ direction: "ltr",
2066
+ chatWidget: {
2067
+ title: "\u804A\u5929",
2068
+ placeholder: "\u8F93\u5165\u6D88\u606F...",
2069
+ openChat: "\u6253\u5F00\u804A\u5929",
2070
+ closeChat: "\u5173\u95ED\u804A\u5929",
2071
+ connectionStatus: {
2072
+ connected: "\u5DF2\u8FDE\u63A5",
2073
+ disconnected: "\u5DF2\u65AD\u5F00"
2074
+ }
2075
+ },
2076
+ inputArea: {
2077
+ send: "\u53D1\u9001",
2078
+ uploading: "\u4E0A\u4F20\u4E2D...",
2079
+ dropzone: {
2080
+ dropFiles: "\u5C06\u6587\u4EF6\u62D6\u653E\u5230\u6B64\u5904",
2081
+ dropOrClick: "\u62D6\u653E\u6216\u70B9\u51FB\u4EE5\u9644\u52A0\u6587\u4EF6"
2082
+ }
2083
+ },
2084
+ typingIndicator: {
2085
+ typing: "\u6B63\u5728\u8F93\u5165",
2086
+ isTyping: "\u6B63\u5728\u8F93\u5165..."
2087
+ },
2088
+ messageList: {
2089
+ emptyState: "\u6682\u65E0\u6D88\u606F\u3002\u5F00\u59CB\u5BF9\u8BDD\u5427\uFF01"
2090
+ },
2091
+ attachmentList: {
2092
+ remove: "\u79FB\u9664",
2093
+ uploadFailed: "\u4E0A\u4F20\u5931\u8D25"
2094
+ },
2095
+ header: {
2096
+ enterFullscreen: "\u8FDB\u5165\u5168\u5C4F",
2097
+ exitFullscreen: "\u9000\u51FA\u5168\u5C4F",
2098
+ closeChat: "\u5173\u95ED\u804A\u5929",
2099
+ lightMode: "\u6D45\u8272\u6A21\u5F0F",
2100
+ darkMode: "\u6DF1\u8272\u6A21\u5F0F",
2101
+ autoMode: "\u7CFB\u7EDF\u4E3B\u9898"
2102
+ },
2103
+ floatingButton: {
2104
+ openChat: "\u6253\u5F00\u804A\u5929",
2105
+ closeChat: "\u5173\u95ED\u804A\u5929"
2106
+ },
2107
+ push: {
2108
+ title: "\u901A\u77E5",
2109
+ description: "\u5373\u4F7F\u5728\u804A\u5929\u5173\u95ED\u65F6\u4E5F\u80FD\u63A5\u6536\u6D88\u606F",
2110
+ enable: "\u542F\u7528\u901A\u77E5",
2111
+ disable: "\u7981\u7528\u901A\u77E5",
2112
+ denied: "\u901A\u77E5\u5DF2\u88AB\u963B\u6B62",
2113
+ unsupported: "\u4E0D\u652F\u6301\u901A\u77E5",
2114
+ subscribing: "\u8BA2\u9605\u4E2D...",
2115
+ notifications: "\u901A\u77E5"
2116
+ },
2117
+ notification: {
2118
+ openChat: "\u6253\u5F00\u804A\u5929",
2119
+ dismiss: "\u5173\u95ED"
2120
+ },
2121
+ common: {
2122
+ loading: "\u52A0\u8F7D\u4E2D...",
2123
+ error: "\u9519\u8BEF",
2124
+ retry: "\u91CD\u8BD5",
2125
+ cancel: "\u53D6\u6D88",
2126
+ download: "\u4E0B\u8F7D"
2127
+ }
2128
+ };
2129
+
2130
+ // src/i18n/locales/zh-TW.json
2131
+ var zh_TW_default = {
2132
+ direction: "ltr",
2133
+ chatWidget: {
2134
+ title: "\u804A\u5929",
2135
+ placeholder: "\u8F38\u5165\u8A0A\u606F...",
2136
+ openChat: "\u958B\u555F\u804A\u5929",
2137
+ closeChat: "\u95DC\u9589\u804A\u5929",
2138
+ connectionStatus: {
2139
+ connected: "\u5DF2\u9023\u7DDA",
2140
+ disconnected: "\u5DF2\u65B7\u7DDA"
2141
+ }
2142
+ },
2143
+ inputArea: {
2144
+ send: "\u50B3\u9001",
2145
+ uploading: "\u4E0A\u50B3\u4E2D...",
2146
+ dropzone: {
2147
+ dropFiles: "\u5C07\u6A94\u6848\u62D6\u653E\u5230\u6B64\u8655",
2148
+ dropOrClick: "\u62D6\u653E\u6216\u9EDE\u64CA\u4EE5\u9644\u52A0\u6A94\u6848"
2149
+ }
2150
+ },
2151
+ typingIndicator: {
2152
+ typing: "\u6B63\u5728\u8F38\u5165",
2153
+ isTyping: "\u6B63\u5728\u8F38\u5165..."
2154
+ },
2155
+ messageList: {
2156
+ emptyState: "\u5C1A\u7121\u8A0A\u606F\u3002\u958B\u59CB\u5C0D\u8A71\u5427\uFF01"
2157
+ },
2158
+ attachmentList: {
2159
+ remove: "\u79FB\u9664",
2160
+ uploadFailed: "\u4E0A\u50B3\u5931\u6557"
2161
+ },
2162
+ header: {
2163
+ enterFullscreen: "\u9032\u5165\u5168\u87A2\u5E55",
2164
+ exitFullscreen: "\u9000\u51FA\u5168\u87A2\u5E55",
2165
+ closeChat: "\u95DC\u9589\u804A\u5929",
2166
+ lightMode: "\u6DFA\u8272\u6A21\u5F0F",
2167
+ darkMode: "\u6DF1\u8272\u6A21\u5F0F",
2168
+ autoMode: "\u7CFB\u7D71\u4E3B\u984C"
2169
+ },
2170
+ floatingButton: {
2171
+ openChat: "\u958B\u555F\u804A\u5929",
2172
+ closeChat: "\u95DC\u9589\u804A\u5929"
2173
+ },
2174
+ push: {
2175
+ title: "\u901A\u77E5",
2176
+ description: "\u5373\u4F7F\u5728\u804A\u5929\u95DC\u9589\u6642\u4E5F\u80FD\u63A5\u6536\u8A0A\u606F",
2177
+ enable: "\u555F\u7528\u901A\u77E5",
2178
+ disable: "\u505C\u7528\u901A\u77E5",
2179
+ denied: "\u901A\u77E5\u5DF2\u88AB\u5C01\u9396",
2180
+ unsupported: "\u4E0D\u652F\u63F4\u901A\u77E5",
2181
+ subscribing: "\u8A02\u95B1\u4E2D...",
2182
+ notifications: "\u901A\u77E5"
2183
+ },
2184
+ notification: {
2185
+ openChat: "\u958B\u555F\u804A\u5929",
2186
+ dismiss: "\u95DC\u9589"
2187
+ },
2188
+ common: {
2189
+ loading: "\u8F09\u5165\u4E2D...",
2190
+ error: "\u932F\u8AA4",
2191
+ retry: "\u91CD\u8A66",
2192
+ cancel: "\u53D6\u6D88",
2193
+ download: "\u4E0B\u8F09"
2194
+ }
2195
+ };
2196
+
2197
+ // src/i18n/locales/ko.json
2198
+ var ko_default = {
2199
+ direction: "ltr",
2200
+ chatWidget: {
2201
+ title: "\uCC44\uD305",
2202
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
2203
+ openChat: "\uCC44\uD305 \uC5F4\uAE30",
2204
+ closeChat: "\uCC44\uD305 \uB2EB\uAE30",
2205
+ connectionStatus: {
2206
+ connected: "\uC5F0\uACB0\uB428",
2207
+ disconnected: "\uC5F0\uACB0 \uB04A\uAE40"
2208
+ }
2209
+ },
2210
+ inputArea: {
2211
+ send: "\uC804\uC1A1",
2212
+ uploading: "\uC5C5\uB85C\uB4DC \uC911...",
2213
+ dropzone: {
2214
+ dropFiles: "\uD30C\uC77C\uC744 \uC5EC\uAE30\uC5D0 \uB193\uC73C\uC138\uC694",
2215
+ dropOrClick: "\uB193\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uCCA8\uBD80"
2216
+ }
2217
+ },
2218
+ typingIndicator: {
2219
+ typing: "\uC785\uB825 \uC911",
2220
+ isTyping: "\uC785\uB825 \uC911..."
2221
+ },
2222
+ messageList: {
2223
+ emptyState: "\uC544\uC9C1 \uBA54\uC2DC\uC9C0\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uB300\uD654\uB97C \uC2DC\uC791\uD558\uC138\uC694!"
2224
+ },
2225
+ attachmentList: {
2226
+ remove: "\uC81C\uAC70",
2227
+ uploadFailed: "\uC5C5\uB85C\uB4DC \uC2E4\uD328"
2228
+ },
2229
+ header: {
2230
+ enterFullscreen: "\uC804\uCCB4 \uD654\uBA74",
2231
+ exitFullscreen: "\uC804\uCCB4 \uD654\uBA74 \uC885\uB8CC",
2232
+ closeChat: "\uCC44\uD305 \uB2EB\uAE30",
2233
+ lightMode: "\uB77C\uC774\uD2B8 \uBAA8\uB4DC",
2234
+ darkMode: "\uB2E4\uD06C \uBAA8\uB4DC",
2235
+ autoMode: "\uC2DC\uC2A4\uD15C \uD14C\uB9C8"
2236
+ },
2237
+ floatingButton: {
2238
+ openChat: "\uCC44\uD305 \uC5F4\uAE30",
2239
+ closeChat: "\uCC44\uD305 \uB2EB\uAE30"
2240
+ },
2241
+ push: {
2242
+ title: "\uC54C\uB9BC",
2243
+ description: "\uCC44\uD305\uC774 \uB2EB\uD600 \uC788\uC5B4\uB3C4 \uBA54\uC2DC\uC9C0 \uC218\uC2E0",
2244
+ enable: "\uC54C\uB9BC \uD65C\uC131\uD654",
2245
+ disable: "\uC54C\uB9BC \uBE44\uD65C\uC131\uD654",
2246
+ denied: "\uC54C\uB9BC\uC774 \uCC28\uB2E8\uB428",
2247
+ unsupported: "\uC54C\uB9BC\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC74C",
2248
+ subscribing: "\uAD6C\uB3C5 \uC911...",
2249
+ notifications: "\uC54C\uB9BC"
2250
+ },
2251
+ notification: {
2252
+ openChat: "\uCC44\uD305 \uC5F4\uAE30",
2253
+ dismiss: "\uB2EB\uAE30"
2254
+ },
2255
+ common: {
2256
+ loading: "\uB85C\uB529 \uC911...",
2257
+ error: "\uC624\uB958",
2258
+ retry: "\uC7AC\uC2DC\uB3C4",
2259
+ cancel: "\uCDE8\uC18C",
2260
+ download: "\uB2E4\uC6B4\uB85C\uB4DC"
2261
+ }
2262
+ };
2263
+
2264
+ // src/i18n/locales/vi.json
2265
+ var vi_default = {
2266
+ direction: "ltr",
2267
+ chatWidget: {
2268
+ title: "Tr\xF2 chuy\u1EC7n",
2269
+ placeholder: "Nh\u1EADp tin nh\u1EAFn...",
2270
+ openChat: "M\u1EDF tr\xF2 chuy\u1EC7n",
2271
+ closeChat: "\u0110\xF3ng tr\xF2 chuy\u1EC7n",
2272
+ connectionStatus: {
2273
+ connected: "\u0110\xE3 k\u1EBFt n\u1ED1i",
2274
+ disconnected: "\u0110\xE3 ng\u1EAFt k\u1EBFt n\u1ED1i"
2275
+ }
2276
+ },
2277
+ inputArea: {
2278
+ send: "G\u1EEDi",
2279
+ uploading: "\u0110ang t\u1EA3i l\xEAn...",
2280
+ dropzone: {
2281
+ dropFiles: "Th\u1EA3 t\u1EC7p t\u1EA1i \u0111\xE2y",
2282
+ dropOrClick: "Th\u1EA3 ho\u1EB7c nh\u1EA5p \u0111\u1EC3 \u0111\xEDnh k\xE8m"
2283
+ }
2284
+ },
2285
+ typingIndicator: {
2286
+ typing: "\u0111ang nh\u1EADp",
2287
+ isTyping: "\u0111ang nh\u1EADp..."
2288
+ },
2289
+ messageList: {
2290
+ emptyState: "Ch\u01B0a c\xF3 tin nh\u1EAFn n\xE0o. H\xE3y b\u1EAFt \u0111\u1EA7u cu\u1ED9c tr\xF2 chuy\u1EC7n!"
2291
+ },
2292
+ attachmentList: {
2293
+ remove: "X\xF3a",
2294
+ uploadFailed: "T\u1EA3i l\xEAn th\u1EA5t b\u1EA1i"
2295
+ },
2296
+ header: {
2297
+ enterFullscreen: "To\xE0n m\xE0n h\xECnh",
2298
+ exitFullscreen: "Tho\xE1t to\xE0n m\xE0n h\xECnh",
2299
+ closeChat: "\u0110\xF3ng tr\xF2 chuy\u1EC7n",
2300
+ lightMode: "Ch\u1EBF \u0111\u1ED9 s\xE1ng",
2301
+ darkMode: "Ch\u1EBF \u0111\u1ED9 t\u1ED1i",
2302
+ autoMode: "Giao di\u1EC7n h\u1EC7 th\u1ED1ng"
2303
+ },
2304
+ floatingButton: {
2305
+ openChat: "M\u1EDF tr\xF2 chuy\u1EC7n",
2306
+ closeChat: "\u0110\xF3ng tr\xF2 chuy\u1EC7n"
2307
+ },
2308
+ push: {
2309
+ title: "Th\xF4ng b\xE1o",
2310
+ description: "Nh\u1EADn tin nh\u1EAFn ngay c\u1EA3 khi tr\xF2 chuy\u1EC7n \u0111\xE3 \u0111\xF3ng",
2311
+ enable: "B\u1EADt th\xF4ng b\xE1o",
2312
+ disable: "T\u1EAFt th\xF4ng b\xE1o",
2313
+ denied: "Th\xF4ng b\xE1o b\u1ECB ch\u1EB7n",
2314
+ unsupported: "Th\xF4ng b\xE1o kh\xF4ng \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3",
2315
+ subscribing: "\u0110ang \u0111\u0103ng k\xFD...",
2316
+ notifications: "Th\xF4ng b\xE1o"
2317
+ },
2318
+ notification: {
2319
+ openChat: "M\u1EDF Tr\xF2 chuy\u1EC7n",
2320
+ dismiss: "B\u1ECF qua"
2321
+ },
2322
+ common: {
2323
+ loading: "\u0110ang t\u1EA3i...",
2324
+ error: "L\u1ED7i",
2325
+ retry: "Th\u1EED l\u1EA1i",
2326
+ cancel: "H\u1EE7y",
2327
+ download: "T\u1EA3i xu\u1ED1ng"
2328
+ }
2329
+ };
2330
+
2331
+ // src/i18n/locales/th.json
2332
+ var th_default = {
2333
+ direction: "ltr",
2334
+ chatWidget: {
2335
+ title: "\u0E41\u0E0A\u0E17",
2336
+ placeholder: "\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21...",
2337
+ openChat: "\u0E40\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
2338
+ closeChat: "\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
2339
+ connectionStatus: {
2340
+ connected: "\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D\u0E41\u0E25\u0E49\u0E27",
2341
+ disconnected: "\u0E15\u0E31\u0E14\u0E01\u0E32\u0E23\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D\u0E41\u0E25\u0E49\u0E27"
2342
+ }
2343
+ },
2344
+ inputArea: {
2345
+ send: "\u0E2A\u0E48\u0E07",
2346
+ uploading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2D\u0E31\u0E1B\u0E42\u0E2B\u0E25\u0E14...",
2347
+ dropzone: {
2348
+ dropFiles: "\u0E27\u0E32\u0E07\u0E44\u0E1F\u0E25\u0E4C\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48",
2349
+ dropOrClick: "\u0E27\u0E32\u0E07\u0E2B\u0E23\u0E37\u0E2D\u0E04\u0E25\u0E34\u0E01\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E41\u0E19\u0E1A"
2350
+ }
2351
+ },
2352
+ typingIndicator: {
2353
+ typing: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E1E\u0E34\u0E21\u0E1E\u0E4C",
2354
+ isTyping: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E1E\u0E34\u0E21\u0E1E\u0E4C..."
2355
+ },
2356
+ messageList: {
2357
+ emptyState: "\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21 \u0E40\u0E23\u0E34\u0E48\u0E21\u0E01\u0E32\u0E23\u0E2A\u0E19\u0E17\u0E19\u0E32!"
2358
+ },
2359
+ attachmentList: {
2360
+ remove: "\u0E25\u0E1A",
2361
+ uploadFailed: "\u0E2D\u0E31\u0E1B\u0E42\u0E2B\u0E25\u0E14\u0E25\u0E49\u0E21\u0E40\u0E2B\u0E25\u0E27"
2362
+ },
2363
+ header: {
2364
+ enterFullscreen: "\u0E40\u0E15\u0E47\u0E21\u0E2B\u0E19\u0E49\u0E32\u0E08\u0E2D",
2365
+ exitFullscreen: "\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E40\u0E15\u0E47\u0E21\u0E2B\u0E19\u0E49\u0E32\u0E08\u0E2D",
2366
+ closeChat: "\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
2367
+ lightMode: "\u0E42\u0E2B\u0E21\u0E14\u0E2A\u0E27\u0E48\u0E32\u0E07",
2368
+ darkMode: "\u0E42\u0E2B\u0E21\u0E14\u0E21\u0E37\u0E14",
2369
+ autoMode: "\u0E18\u0E35\u0E21\u0E23\u0E30\u0E1A\u0E1A"
2370
+ },
2371
+ floatingButton: {
2372
+ openChat: "\u0E40\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
2373
+ closeChat: "\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17"
2374
+ },
2375
+ push: {
2376
+ title: "\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19",
2377
+ description: "\u0E23\u0E31\u0E1A\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E21\u0E49\u0E43\u0E19\u0E02\u0E13\u0E30\u0E17\u0E35\u0E48\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17\u0E2D\u0E22\u0E39\u0E48",
2378
+ enable: "\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19",
2379
+ disable: "\u0E1B\u0E34\u0E14\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19",
2380
+ denied: "\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19\u0E16\u0E39\u0E01\u0E1A\u0E25\u0E47\u0E2D\u0E01",
2381
+ unsupported: "\u0E44\u0E21\u0E48\u0E23\u0E2D\u0E07\u0E23\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19",
2382
+ subscribing: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2A\u0E21\u0E31\u0E04\u0E23\u0E23\u0E31\u0E1A...",
2383
+ notifications: "\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19"
2384
+ },
2385
+ notification: {
2386
+ openChat: "\u0E40\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
2387
+ dismiss: "\u0E1B\u0E34\u0E14"
2388
+ },
2389
+ common: {
2390
+ loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
2391
+ error: "\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14",
2392
+ retry: "\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
2393
+ cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
2394
+ download: "\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14"
2395
+ }
2396
+ };
2397
+
2398
+ // src/i18n/locales/id.json
2399
+ var id_default = {
2400
+ direction: "ltr",
2401
+ chatWidget: {
2402
+ title: "Obrolan",
2403
+ placeholder: "Ketik pesan...",
2404
+ openChat: "Buka obrolan",
2405
+ closeChat: "Tutup obrolan",
2406
+ connectionStatus: {
2407
+ connected: "Terhubung",
2408
+ disconnected: "Terputus"
2409
+ }
2410
+ },
2411
+ inputArea: {
2412
+ send: "Kirim",
2413
+ uploading: "Mengunggah...",
2414
+ dropzone: {
2415
+ dropFiles: "Letakkan file di sini",
2416
+ dropOrClick: "Letakkan atau klik untuk melampirkan"
2417
+ }
2418
+ },
2419
+ typingIndicator: {
2420
+ typing: "mengetik",
2421
+ isTyping: "sedang mengetik..."
2422
+ },
2423
+ messageList: {
2424
+ emptyState: "Belum ada pesan. Mulai percakapan!"
2425
+ },
2426
+ attachmentList: {
2427
+ remove: "Hapus",
2428
+ uploadFailed: "Unggahan gagal"
2429
+ },
2430
+ header: {
2431
+ enterFullscreen: "Layar penuh",
2432
+ exitFullscreen: "Keluar layar penuh",
2433
+ closeChat: "Tutup obrolan",
2434
+ lightMode: "Mode terang",
2435
+ darkMode: "Mode gelap",
2436
+ autoMode: "Tema sistem"
2437
+ },
2438
+ floatingButton: {
2439
+ openChat: "Buka obrolan",
2440
+ closeChat: "Tutup obrolan"
2441
+ },
2442
+ push: {
2443
+ title: "Notifikasi",
2444
+ description: "Terima pesan bahkan saat obrolan tertutup",
2445
+ enable: "Aktifkan notifikasi",
2446
+ disable: "Nonaktifkan notifikasi",
2447
+ denied: "Notifikasi diblokir",
2448
+ unsupported: "Notifikasi tidak didukung",
2449
+ subscribing: "Berlangganan...",
2450
+ notifications: "Notifikasi"
2451
+ },
2452
+ notification: {
2453
+ openChat: "Buka Obrolan",
2454
+ dismiss: "Tutup"
2455
+ },
2456
+ common: {
2457
+ loading: "Memuat...",
2458
+ error: "Kesalahan",
2459
+ retry: "Coba lagi",
2460
+ cancel: "Batal",
2461
+ download: "Unduh"
2462
+ }
2463
+ };
2464
+
2465
+ // src/i18n/locales/hi.json
2466
+ var hi_default = {
2467
+ direction: "ltr",
2468
+ chatWidget: {
2469
+ title: "\u091A\u0948\u091F",
2470
+ placeholder: "\u0938\u0902\u0926\u0947\u0936 \u0932\u093F\u0916\u0947\u0902...",
2471
+ openChat: "\u091A\u0948\u091F \u0916\u094B\u0932\u0947\u0902",
2472
+ closeChat: "\u091A\u0948\u091F \u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
2473
+ connectionStatus: {
2474
+ connected: "\u0915\u0928\u0947\u0915\u094D\u091F\u0947\u0921",
2475
+ disconnected: "\u0921\u093F\u0938\u094D\u0915\u0928\u0947\u0915\u094D\u091F\u0947\u0921"
2476
+ }
2477
+ },
2478
+ inputArea: {
2479
+ send: "\u092D\u0947\u091C\u0947\u0902",
2480
+ uploading: "\u0905\u092A\u0932\u094B\u0921 \u0939\u094B \u0930\u0939\u093E \u0939\u0948...",
2481
+ dropzone: {
2482
+ dropFiles: "\u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u092F\u0939\u093E\u0902 \u091B\u094B\u0921\u093C\u0947\u0902",
2483
+ dropOrClick: "\u0938\u0902\u0932\u0917\u094D\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091B\u094B\u0921\u093C\u0947\u0902 \u092F\u093E \u0915\u094D\u0932\u093F\u0915 \u0915\u0930\u0947\u0902"
2484
+ }
2485
+ },
2486
+ typingIndicator: {
2487
+ typing: "\u0932\u093F\u0916 \u0930\u0939\u093E \u0939\u0948",
2488
+ isTyping: "\u0932\u093F\u0916 \u0930\u0939\u093E \u0939\u0948..."
2489
+ },
2490
+ messageList: {
2491
+ emptyState: "\u0905\u092D\u0940 \u0924\u0915 \u0915\u094B\u0908 \u0938\u0902\u0926\u0947\u0936 \u0928\u0939\u0940\u0902\u0964 \u092C\u093E\u0924\u091A\u0940\u0924 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902!"
2492
+ },
2493
+ attachmentList: {
2494
+ remove: "\u0939\u091F\u093E\u090F\u0902",
2495
+ uploadFailed: "\u0905\u092A\u0932\u094B\u0921 \u0935\u093F\u092B\u0932"
2496
+ },
2497
+ header: {
2498
+ enterFullscreen: "\u092A\u0942\u0930\u094D\u0923 \u0938\u094D\u0915\u094D\u0930\u0940\u0928",
2499
+ exitFullscreen: "\u092A\u0942\u0930\u094D\u0923 \u0938\u094D\u0915\u094D\u0930\u0940\u0928 \u0938\u0947 \u092C\u093E\u0939\u0930 \u0928\u093F\u0915\u0932\u0947\u0902",
2500
+ closeChat: "\u091A\u0948\u091F \u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
2501
+ lightMode: "\u0932\u093E\u0907\u091F \u092E\u094B\u0921",
2502
+ darkMode: "\u0921\u093E\u0930\u094D\u0915 \u092E\u094B\u0921",
2503
+ autoMode: "\u0938\u093F\u0938\u094D\u091F\u092E \u0925\u0940\u092E"
2504
+ },
2505
+ floatingButton: {
2506
+ openChat: "\u091A\u0948\u091F \u0916\u094B\u0932\u0947\u0902",
2507
+ closeChat: "\u091A\u0948\u091F \u092C\u0902\u0926 \u0915\u0930\u0947\u0902"
2508
+ },
2509
+ push: {
2510
+ title: "\u0938\u0942\u091A\u0928\u093E\u090F\u0902",
2511
+ description: "\u091A\u0948\u091F \u092C\u0902\u0926 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092D\u0940 \u0938\u0902\u0926\u0947\u0936 \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0915\u0930\u0947\u0902",
2512
+ enable: "\u0938\u0942\u091A\u0928\u093E\u090F\u0902 \u0938\u0915\u094D\u0937\u092E \u0915\u0930\u0947\u0902",
2513
+ disable: "\u0938\u0942\u091A\u0928\u093E\u090F\u0902 \u0905\u0915\u094D\u0937\u092E \u0915\u0930\u0947\u0902",
2514
+ denied: "\u0938\u0942\u091A\u0928\u093E\u090F\u0902 \u0905\u0935\u0930\u0941\u0926\u094D\u0927",
2515
+ unsupported: "\u0938\u0942\u091A\u0928\u093E\u090F\u0902 \u0938\u092E\u0930\u094D\u0925\u093F\u0924 \u0928\u0939\u0940\u0902",
2516
+ subscribing: "\u0938\u092C\u094D\u0938\u0915\u094D\u0930\u093E\u0907\u092C \u0939\u094B \u0930\u0939\u093E \u0939\u0948...",
2517
+ notifications: "\u0938\u0942\u091A\u0928\u093E\u090F\u0902"
2518
+ },
2519
+ notification: {
2520
+ openChat: "\u091A\u0948\u091F \u0916\u094B\u0932\u0947\u0902",
2521
+ dismiss: "\u0916\u093E\u0930\u093F\u091C \u0915\u0930\u0947\u0902"
743
2522
  },
744
2523
  common: {
745
- loading: "A carregar...",
746
- retry: "Tentar novamente"
2524
+ loading: "\u0932\u094B\u0921 \u0939\u094B \u0930\u0939\u093E \u0939\u0948...",
2525
+ error: "\u0924\u094D\u0930\u0941\u091F\u093F",
2526
+ retry: "\u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902",
2527
+ cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
2528
+ download: "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902"
747
2529
  }
748
2530
  };
749
2531
 
750
- // src/i18n/locales/es.json
751
- var es_default = {
2532
+ // src/i18n/locales/ar.json
2533
+ var ar_default = {
2534
+ direction: "rtl",
752
2535
  chatWidget: {
753
- title: "Chat",
754
- placeholder: "Escribe un mensaje...",
755
- openChat: "Abrir chat",
756
- closeChat: "Cerrar chat",
2536
+ title: "\u0627\u0644\u062F\u0631\u062F\u0634\u0629",
2537
+ placeholder: "\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629...",
2538
+ openChat: "\u0641\u062A\u062D \u0627\u0644\u062F\u0631\u062F\u0634\u0629",
2539
+ closeChat: "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u062F\u0631\u062F\u0634\u0629",
757
2540
  connectionStatus: {
758
- connected: "Conectado",
759
- disconnected: "Desconectado"
2541
+ connected: "\u0645\u062A\u0635\u0644",
2542
+ disconnected: "\u063A\u064A\u0631 \u0645\u062A\u0635\u0644"
760
2543
  }
761
2544
  },
762
2545
  inputArea: {
763
- send: "Enviar",
764
- uploading: "Subiendo...",
2546
+ send: "\u0625\u0631\u0633\u0627\u0644",
2547
+ uploading: "\u062C\u0627\u0631\u064D \u0627\u0644\u0631\u0641\u0639...",
765
2548
  dropzone: {
766
- dropFiles: "Suelta archivos aqu\xED",
767
- dropOrClick: "Suelta o haz clic para adjuntar"
2549
+ dropFiles: "\u0623\u0633\u0642\u0637 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0647\u0646\u0627",
2550
+ dropOrClick: "\u0623\u0633\u0642\u0637 \u0623\u0648 \u0627\u0646\u0642\u0631 \u0644\u0644\u0625\u0631\u0641\u0627\u0642"
768
2551
  }
769
2552
  },
770
2553
  typingIndicator: {
771
- typing: "escribiendo",
772
- isTyping: "est\xE1 escribiendo..."
2554
+ typing: "\u064A\u0643\u062A\u0628",
2555
+ isTyping: "\u064A\u0643\u062A\u0628..."
773
2556
  },
774
2557
  messageList: {
775
- emptyState: "No hay mensajes todav\xEDa. \xA1Inicia la conversaci\xF3n!"
2558
+ emptyState: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0631\u0633\u0627\u0626\u0644 \u0628\u0639\u062F. \u0627\u0628\u062F\u0623 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629!"
776
2559
  },
777
2560
  attachmentList: {
778
- remove: "Eliminar",
779
- uploadFailed: "Error al subir"
2561
+ remove: "\u0625\u0632\u0627\u0644\u0629",
2562
+ uploadFailed: "\u0641\u0634\u0644 \u0627\u0644\u0631\u0641\u0639"
780
2563
  },
781
2564
  header: {
782
- enterFullscreen: "Pantalla completa",
783
- exitFullscreen: "Salir de pantalla completa",
784
- closeChat: "Cerrar chat"
2565
+ enterFullscreen: "\u062F\u062E\u0648\u0644 \u0648\u0636\u0639 \u0627\u0644\u0645\u0644\u0621",
2566
+ exitFullscreen: "\u062E\u0631\u0648\u062C \u0645\u0646 \u0648\u0636\u0639 \u0627\u0644\u0645\u0644\u0621",
2567
+ closeChat: "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u062F\u0631\u062F\u0634\u0629",
2568
+ lightMode: "\u0648\u0636\u0639 \u0641\u0627\u062A\u062D",
2569
+ darkMode: "\u0648\u0636\u0639 \u062F\u0627\u0643\u0646",
2570
+ autoMode: "\u062A\u0644\u0642\u0627\u0626\u064A"
785
2571
  },
786
2572
  floatingButton: {
787
- openChat: "Abrir chat",
788
- closeChat: "Cerrar chat"
2573
+ openChat: "\u0641\u062A\u062D \u0627\u0644\u062F\u0631\u062F\u0634\u0629",
2574
+ closeChat: "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u062F\u0631\u062F\u0634\u0629"
2575
+ },
2576
+ push: {
2577
+ title: "\u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062A",
2578
+ description: "\u0627\u0633\u062A\u0644\u0645 \u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u062D\u062A\u0649 \u0639\u0646\u062F \u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u062F\u0631\u062F\u0634\u0629",
2579
+ enable: "\u062A\u0641\u0639\u064A\u0644 \u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062A",
2580
+ disable: "\u062A\u0639\u0637\u064A\u0644 \u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062A",
2581
+ denied: "\u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062A \u0645\u062D\u0638\u0648\u0631\u0629",
2582
+ unsupported: "\u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062A \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645\u0629",
2583
+ subscribing: "\u062C\u0627\u0631\u064D \u0627\u0644\u0627\u0634\u062A\u0631\u0627\u0643...",
2584
+ notifications: "\u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062A"
2585
+ },
2586
+ notification: {
2587
+ openChat: "\u0641\u062A\u062D \u0627\u0644\u062F\u0631\u062F\u0634\u0629",
2588
+ dismiss: "\u062A\u062C\u0627\u0647\u0644"
789
2589
  },
790
2590
  common: {
791
- loading: "Cargando...",
792
- error: "Error",
793
- retry: "Reintentar",
794
- cancel: "Cancelar",
795
- download: "Descargar"
2591
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644...",
2592
+ error: "\u062E\u0637\u0623",
2593
+ retry: "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
2594
+ cancel: "\u0625\u0644\u063A\u0627\u0621",
2595
+ download: "\u062A\u0646\u0632\u064A\u0644"
796
2596
  }
797
2597
  };
798
2598
 
@@ -817,7 +2617,33 @@ var systemLocales = {
817
2617
  pt: pt_default,
818
2618
  "pt-BR": deepMerge(pt_default, pt_BR_default),
819
2619
  "pt-PT": deepMerge(pt_default, pt_PT_default),
820
- es: es_default
2620
+ es: es_default,
2621
+ da: da_default,
2622
+ sv: sv_default,
2623
+ nb: nb_default,
2624
+ fi: fi_default,
2625
+ fr: fr_default,
2626
+ de: de_default,
2627
+ it: it_default,
2628
+ nl: nl_default,
2629
+ pl: pl_default,
2630
+ cs: cs_default,
2631
+ ro: ro_default,
2632
+ hu: hu_default,
2633
+ uk: uk_default,
2634
+ ru: ru_default,
2635
+ el: el_default,
2636
+ tr: tr_default,
2637
+ et: et_default,
2638
+ ja: ja_default,
2639
+ "zh-CN": zh_CN_default,
2640
+ "zh-TW": zh_TW_default,
2641
+ ko: ko_default,
2642
+ vi: vi_default,
2643
+ th: th_default,
2644
+ id: id_default,
2645
+ hi: hi_default,
2646
+ ar: ar_default
821
2647
  };
822
2648
  function registerLocale(locale, strings) {
823
2649
  systemLocales[locale] = strings;
@@ -859,7 +2685,7 @@ function LocaleProvider({ children, locale }) {
859
2685
  }
860
2686
  return typeof current === "string" ? current : path;
861
2687
  };
862
- return { locale: config.locale, strings, t };
2688
+ return { locale: config.locale, dir: strings.direction, strings, t };
863
2689
  }, [config.locale, config.overrides]);
864
2690
  return /* @__PURE__ */ jsx(LocaleContext.Provider, { value, children });
865
2691
  }
@@ -869,6 +2695,7 @@ function useLocale() {
869
2695
  const strings = mergeLocale("en");
870
2696
  return {
871
2697
  locale: "en",
2698
+ dir: strings.direction,
872
2699
  strings,
873
2700
  t: (path) => {
874
2701
  const parts = path.split(".");
@@ -967,9 +2794,18 @@ function Header({
967
2794
  isConnected = true,
968
2795
  className,
969
2796
  theme,
970
- onThemeChange
2797
+ onThemeChange,
2798
+ pushStatus,
2799
+ onPushToggle
971
2800
  }) {
972
2801
  const { t } = useLocale();
2802
+ const pushLabel = (() => {
2803
+ if (!pushStatus) return "";
2804
+ if (pushStatus === "subscribed") return t("push.disable");
2805
+ if (pushStatus === "denied") return t("push.denied");
2806
+ if (pushStatus === "subscribing") return t("push.subscribing");
2807
+ return t("push.enable");
2808
+ })();
973
2809
  return /* @__PURE__ */ jsxs2(
974
2810
  "div",
975
2811
  {
@@ -989,6 +2825,66 @@ function Header({
989
2825
  /* @__PURE__ */ jsx3("h2", { className: "m-0 text-base font-semibold text-chat-text", children: title })
990
2826
  ] }),
991
2827
  /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-1", children: [
2828
+ onPushToggle && pushStatus && pushStatus !== "unsupported" && /* @__PURE__ */ jsx3(
2829
+ "button",
2830
+ {
2831
+ onClick: onPushToggle,
2832
+ className: "p-1 bg-transparent border-none cursor-pointer text-chat-text-secondary rounded hover:bg-chat-surface transition",
2833
+ "data-chat-push-toggle": "true",
2834
+ "aria-label": pushLabel,
2835
+ title: pushLabel,
2836
+ children: pushStatus === "subscribed" ? /* @__PURE__ */ jsxs2(
2837
+ "svg",
2838
+ {
2839
+ width: "18",
2840
+ height: "18",
2841
+ viewBox: "0 0 24 24",
2842
+ fill: "currentColor",
2843
+ stroke: "currentColor",
2844
+ strokeWidth: "1",
2845
+ strokeLinecap: "round",
2846
+ strokeLinejoin: "round",
2847
+ children: [
2848
+ /* @__PURE__ */ jsx3("path", { d: "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" }),
2849
+ /* @__PURE__ */ jsx3("path", { d: "M13.73 21a2 2 0 0 1-3.46 0" })
2850
+ ]
2851
+ }
2852
+ ) : pushStatus === "denied" ? /* @__PURE__ */ jsxs2(
2853
+ "svg",
2854
+ {
2855
+ width: "18",
2856
+ height: "18",
2857
+ viewBox: "0 0 24 24",
2858
+ fill: "none",
2859
+ stroke: "currentColor",
2860
+ strokeWidth: "2",
2861
+ strokeLinecap: "round",
2862
+ strokeLinejoin: "round",
2863
+ children: [
2864
+ /* @__PURE__ */ jsx3("path", { d: "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" }),
2865
+ /* @__PURE__ */ jsx3("path", { d: "M13.73 21a2 2 0 0 1-3.46 0" }),
2866
+ /* @__PURE__ */ jsx3("line", { x1: "1", y1: "1", x2: "23", y2: "23" })
2867
+ ]
2868
+ }
2869
+ ) : /* @__PURE__ */ jsxs2(
2870
+ "svg",
2871
+ {
2872
+ width: "18",
2873
+ height: "18",
2874
+ viewBox: "0 0 24 24",
2875
+ fill: "none",
2876
+ stroke: "currentColor",
2877
+ strokeWidth: "2",
2878
+ strokeLinecap: "round",
2879
+ strokeLinejoin: "round",
2880
+ children: [
2881
+ /* @__PURE__ */ jsx3("path", { d: "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" }),
2882
+ /* @__PURE__ */ jsx3("path", { d: "M13.73 21a2 2 0 0 1-3.46 0" })
2883
+ ]
2884
+ }
2885
+ )
2886
+ }
2887
+ ),
992
2888
  onThemeChange && /* @__PURE__ */ jsx3(
993
2889
  "button",
994
2890
  {
@@ -1409,7 +3305,21 @@ function MessageContent({ message, onActionClick }) {
1409
3305
  className: "inline-flex items-center gap-2 px-3 py-2 bg-chat-surface rounded text-sm no-underline text-chat-text hover:bg-chat-background transition",
1410
3306
  "data-chat-attachment": attachment.id,
1411
3307
  children: [
1412
- "\u{1F4CE} ",
3308
+ /* @__PURE__ */ jsx10(
3309
+ "svg",
3310
+ {
3311
+ width: "16",
3312
+ height: "16",
3313
+ viewBox: "0 0 24 24",
3314
+ fill: "none",
3315
+ stroke: "currentColor",
3316
+ strokeWidth: "2",
3317
+ strokeLinecap: "round",
3318
+ strokeLinejoin: "round",
3319
+ className: "shrink-0",
3320
+ children: /* @__PURE__ */ jsx10("path", { d: "M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48" })
3321
+ }
3322
+ ),
1413
3323
  attachment.name
1414
3324
  ]
1415
3325
  }
@@ -1952,10 +3862,83 @@ function TypingIndicator({ users = [] }) {
1952
3862
  );
1953
3863
  }
1954
3864
 
3865
+ // src/components/PushPermissionPrompt.tsx
3866
+ import { useState as useState9 } from "react";
3867
+ import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
3868
+ function PushPermissionPrompt({
3869
+ autoHide = true,
3870
+ title,
3871
+ description,
3872
+ onStatusChange,
3873
+ getVapidPublicKey,
3874
+ onSubscribe,
3875
+ onUnsubscribe
3876
+ }) {
3877
+ const { t } = useLocale();
3878
+ const { status, isSupported, isSubscribed, subscribe, unsubscribe } = usePushNotifications({
3879
+ enabled: true,
3880
+ getVapidPublicKey,
3881
+ onSubscribe,
3882
+ onUnsubscribe
3883
+ });
3884
+ const [dismissed, setDismissed] = useState9(false);
3885
+ if (!isSupported) return null;
3886
+ if (autoHide && (isSubscribed || status === "denied")) return null;
3887
+ if (dismissed) return null;
3888
+ const handleEnable = async () => {
3889
+ await subscribe();
3890
+ onStatusChange?.(true);
3891
+ };
3892
+ const handleDisable = async () => {
3893
+ await unsubscribe();
3894
+ onStatusChange?.(false);
3895
+ };
3896
+ return /* @__PURE__ */ jsxs12(
3897
+ "div",
3898
+ {
3899
+ className: "p-3 bg-chat-surface rounded-lg flex items-start gap-3",
3900
+ "data-chat-push-prompt": "true",
3901
+ children: [
3902
+ /* @__PURE__ */ jsxs12("div", { className: "flex-1", children: [
3903
+ /* @__PURE__ */ jsx16("div", { className: "font-semibold mb-1 text-chat-text", children: title || t("push.title") }),
3904
+ /* @__PURE__ */ jsx16("div", { className: "text-sm text-chat-text-secondary", children: description || t("push.description") })
3905
+ ] }),
3906
+ /* @__PURE__ */ jsxs12("div", { className: "flex gap-2", children: [
3907
+ !isSubscribed && status !== "denied" && /* @__PURE__ */ jsx16(
3908
+ "button",
3909
+ {
3910
+ onClick: handleEnable,
3911
+ className: "px-3 py-1.5 bg-chat-primary text-white border-none rounded cursor-pointer text-sm hover:opacity-90",
3912
+ children: t("push.enable")
3913
+ }
3914
+ ),
3915
+ isSubscribed && /* @__PURE__ */ jsx16(
3916
+ "button",
3917
+ {
3918
+ onClick: handleDisable,
3919
+ className: "px-3 py-1.5 bg-transparent text-chat-text-secondary border border-chat-border rounded cursor-pointer text-sm hover:bg-chat-surface",
3920
+ children: t("push.disable")
3921
+ }
3922
+ ),
3923
+ /* @__PURE__ */ jsx16(
3924
+ "button",
3925
+ {
3926
+ onClick: () => setDismissed(true),
3927
+ className: "px-1.5 bg-transparent border-none cursor-pointer text-chat-text-secondary hover:text-chat-text",
3928
+ children: "\u2715"
3929
+ }
3930
+ )
3931
+ ] })
3932
+ ]
3933
+ }
3934
+ );
3935
+ }
3936
+
1955
3937
  // src/components/ChatWidget.tsx
1956
- import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
3938
+ import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
1957
3939
  function ChatWidget({
1958
3940
  client,
3941
+ locale: localeProp,
1959
3942
  initialMode = "floating",
1960
3943
  theme: themeProp,
1961
3944
  onThemeChange,
@@ -1964,7 +3947,7 @@ function ChatWidget({
1964
3947
  showClose = true,
1965
3948
  showFullscreenToggle = true,
1966
3949
  title = "Chat",
1967
- placeholder = "Type a message...",
3950
+ placeholder,
1968
3951
  onOpen,
1969
3952
  onClose,
1970
3953
  embedded,
@@ -1973,7 +3956,10 @@ function ChatWidget({
1973
3956
  uploadConfig,
1974
3957
  accept,
1975
3958
  maxFileSize,
1976
- renderPushPrompt
3959
+ renderPushPrompt,
3960
+ preEntry,
3961
+ onChatStart,
3962
+ pushConfig
1977
3963
  }) {
1978
3964
  const {
1979
3965
  config: iframeConfig,
@@ -1982,10 +3968,16 @@ function ChatWidget({
1982
3968
  notifyViewportConfig,
1983
3969
  onNotificationClicked
1984
3970
  } = useBridge();
3971
+ const effectiveLocale = localeProp ?? (isInIframe ? iframeConfig?.locale : void 0) ?? useLocale().locale;
3972
+ const merged = mergeLocale(effectiveLocale);
3973
+ const dir = merged.direction;
3974
+ useEffect9(() => {
3975
+ client.setLocaleHeader(effectiveLocale);
3976
+ }, [client, effectiveLocale]);
1985
3977
  const autoEmbedded = isInIframe && embedded !== false;
1986
3978
  const effectiveEmbedded = embedded === true || autoEmbedded;
1987
3979
  const effectiveMode = effectiveEmbedded ? "embedded" : initialMode;
1988
- const [theme, setTheme] = useState9(() => {
3980
+ const [theme, setTheme] = useState10(() => {
1989
3981
  if (themeProp) return themeProp;
1990
3982
  try {
1991
3983
  const stored = localStorage.getItem("chat-theme");
@@ -1994,7 +3986,7 @@ function ChatWidget({
1994
3986
  }
1995
3987
  return "auto";
1996
3988
  });
1997
- const [systemDark, setSystemDark] = useState9(
3989
+ const [systemDark, setSystemDark] = useState10(
1998
3990
  () => typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: dark)").matches
1999
3991
  );
2000
3992
  const effectiveTheme = theme === "auto" ? systemDark ? "dark" : "light" : theme;
@@ -2022,10 +4014,19 @@ function ChatWidget({
2022
4014
  }
2023
4015
  onThemeChange?.(newTheme);
2024
4016
  };
2025
- const [isOpen, setIsOpen] = useState9(effectiveMode === "fullscreen");
2026
- const [displayMode, setDisplayMode] = useState9(effectiveMode);
2027
- const [isConnected] = useState9(true);
2028
- const [isSmallScreen, setIsSmallScreen] = useState9(
4017
+ const [isOpen, setIsOpen] = useState10(effectiveMode === "fullscreen");
4018
+ const [displayMode, setDisplayMode] = useState10(effectiveMode);
4019
+ const [isConnected] = useState10(true);
4020
+ const [isPreEntry, setIsPreEntry] = useState10(Boolean(preEntry));
4021
+ const handleStart = useCallback6(
4022
+ (config) => {
4023
+ if (config) client.reconfigure(config);
4024
+ onChatStart?.(config);
4025
+ setIsPreEntry(false);
4026
+ },
4027
+ [client, onChatStart]
4028
+ );
4029
+ const [isSmallScreen, setIsSmallScreen] = useState10(
2029
4030
  () => typeof window !== "undefined" && window.innerWidth < 800
2030
4031
  );
2031
4032
  useEffect9(() => {
@@ -2064,9 +4065,25 @@ function ChatWidget({
2064
4065
  }, [isOpen, displayMode, isSmallScreen, isInIframe, notifyViewportConfig]);
2065
4066
  const { messages, sendMessage, loading, isLoadingHistory, reloadMessages } = useMessages(
2066
4067
  client,
2067
- isOpen || effectiveEmbedded
4068
+ (isOpen || effectiveEmbedded) && !isPreEntry
2068
4069
  );
2069
4070
  const { isSomeoneTyping } = useTyping(client);
4071
+ const push = usePushNotifications({
4072
+ enabled: !!pushConfig,
4073
+ getVapidPublicKey: pushConfig?.getVapidPublicKey ?? (() => Promise.resolve("")),
4074
+ onSubscribe: pushConfig?.onSubscribe ?? (async () => {
4075
+ }),
4076
+ onUnsubscribe: pushConfig?.onUnsubscribe ?? (async () => {
4077
+ }),
4078
+ serviceWorkerUrl: pushConfig?.serviceWorkerUrl,
4079
+ serviceWorkerScope: pushConfig?.serviceWorkerScope,
4080
+ serviceWorkerType: pushConfig?.serviceWorkerType,
4081
+ notificationOptions: pushConfig?.notificationOptions
4082
+ });
4083
+ const handlePushToggle = useCallback6(() => {
4084
+ if (push.isSubscribed) push.unsubscribe();
4085
+ else push.subscribe();
4086
+ }, [push.isSubscribed, push.subscribe, push.unsubscribe]);
2070
4087
  useEffect9(() => {
2071
4088
  if (!isInIframe || !iframeConfig) return;
2072
4089
  if (iframeConfig.theme?.cssVariables) {
@@ -2087,7 +4104,7 @@ function ChatWidget({
2087
4104
  });
2088
4105
  }, [isInIframe, onNotificationClicked, reloadMessages]);
2089
4106
  const effectiveTitle = isInIframe && iframeConfig?.title || title;
2090
- const effectivePlaceholder = isInIframe && iframeConfig?.placeholder || placeholder;
4107
+ const effectivePlaceholder = isInIframe && iframeConfig?.placeholder || placeholder || merged.chatWidget.placeholder;
2091
4108
  const currentUserId = "getCurrentUserId" in client ? client.getCurrentUserId() : "";
2092
4109
  const handleSend = useCallback6(
2093
4110
  async (text, attachments = []) => {
@@ -2128,58 +4145,70 @@ function ChatWidget({
2128
4145
  window.parent.postMessage({ type: "chat-close" }, "*");
2129
4146
  }
2130
4147
  }, [isInIframe]);
2131
- if (effectiveEmbedded) {
2132
- return /* @__PURE__ */ jsxs12(
2133
- "div",
4148
+ const panelContent = /* @__PURE__ */ jsxs13(Fragment2, { children: [
4149
+ /* @__PURE__ */ jsx17(
4150
+ Header,
2134
4151
  {
2135
- className: "flex flex-col h-full min-h-[300px] overflow-hidden bg-chat-background",
2136
- "data-chat-widget": "embedded",
2137
- "data-chat-theme": effectiveTheme,
2138
- children: [
2139
- /* @__PURE__ */ jsx16(
2140
- Header,
2141
- {
2142
- title: effectiveTitle,
2143
- isFullscreen: false,
2144
- showConnectionStatus: true,
2145
- isConnected,
2146
- className: className?.header,
2147
- theme,
2148
- onThemeChange: handleThemeChange,
2149
- onClose: isInIframe ? embeddedClose : void 0
2150
- }
2151
- ),
2152
- /* @__PURE__ */ jsx16(
2153
- MessageList,
2154
- {
2155
- messages,
2156
- currentUserId,
2157
- isLoading: isLoadingHistory || loading,
2158
- onActionClick: handleActionClick,
2159
- onReactionClick: handleReactionClick,
2160
- className: className?.messageList
2161
- }
2162
- ),
2163
- isSomeoneTyping && /* @__PURE__ */ jsx16(TypingIndicator, {}),
2164
- renderPushPrompt?.(),
2165
- /* @__PURE__ */ jsx16(
2166
- InputArea,
2167
- {
2168
- onSend: handleSend,
2169
- placeholder: effectivePlaceholder,
2170
- className: className?.inputArea,
2171
- enableAttachments,
2172
- uploadConfig,
2173
- accept,
2174
- maxFileSize
2175
- }
2176
- )
2177
- ]
4152
+ title: effectiveTitle,
4153
+ onClose: effectiveEmbedded ? isInIframe ? embeddedClose : void 0 : displayMode === "floating" ? close : showClose ? close : void 0,
4154
+ onToggleFullscreen: effectiveEmbedded ? void 0 : showFullscreenToggle && !isSmallScreen ? toggleFullscreen : void 0,
4155
+ isFullscreen: effectiveEmbedded ? false : displayMode === "fullscreen",
4156
+ showConnectionStatus: true,
4157
+ isConnected,
4158
+ className: className?.header,
4159
+ theme,
4160
+ onThemeChange: handleThemeChange,
4161
+ pushStatus: pushConfig ? push.status : void 0,
4162
+ onPushToggle: pushConfig ? handlePushToggle : void 0
2178
4163
  }
2179
- );
2180
- }
2181
- return /* @__PURE__ */ jsxs12(Fragment2, { children: [
2182
- !effectiveEmbedded && !isOpen && /* @__PURE__ */ jsx16(
4164
+ ),
4165
+ isPreEntry && preEntry ? /* @__PURE__ */ jsx17("div", { className: "flex-1 overflow-y-auto p-4", children: preEntry.render({ start: handleStart }) }) : /* @__PURE__ */ jsxs13(Fragment2, { children: [
4166
+ /* @__PURE__ */ jsx17(
4167
+ MessageList,
4168
+ {
4169
+ messages,
4170
+ currentUserId,
4171
+ isLoading: isLoadingHistory || loading,
4172
+ onActionClick: handleActionClick,
4173
+ onReactionClick: handleReactionClick,
4174
+ className: className?.messageList
4175
+ }
4176
+ ),
4177
+ isSomeoneTyping && /* @__PURE__ */ jsx17(TypingIndicator, {}),
4178
+ pushConfig ? /* @__PURE__ */ jsx17(
4179
+ PushPermissionPrompt,
4180
+ {
4181
+ getVapidPublicKey: pushConfig.getVapidPublicKey,
4182
+ onSubscribe: pushConfig.onSubscribe,
4183
+ onUnsubscribe: pushConfig.onUnsubscribe
4184
+ }
4185
+ ) : renderPushPrompt?.(),
4186
+ /* @__PURE__ */ jsx17(
4187
+ InputArea,
4188
+ {
4189
+ onSend: handleSend,
4190
+ placeholder: effectivePlaceholder,
4191
+ disabled: !effectiveEmbedded && loading,
4192
+ className: className?.inputArea,
4193
+ enableAttachments,
4194
+ uploadConfig,
4195
+ accept,
4196
+ maxFileSize
4197
+ }
4198
+ )
4199
+ ] })
4200
+ ] });
4201
+ const widget = effectiveEmbedded ? /* @__PURE__ */ jsx17(
4202
+ "div",
4203
+ {
4204
+ dir,
4205
+ className: "flex flex-col h-full min-h-[300px] overflow-hidden bg-chat-background",
4206
+ "data-chat-widget": "embedded",
4207
+ "data-chat-theme": effectiveTheme,
4208
+ children: panelContent
4209
+ }
4210
+ ) : /* @__PURE__ */ jsxs13(Fragment2, { children: [
4211
+ !isOpen && /* @__PURE__ */ jsx17(
2183
4212
  FloatingButton,
2184
4213
  {
2185
4214
  onClick: toggleOpen,
@@ -2194,70 +4223,31 @@ function ChatWidget({
2194
4223
  className: floatingButton?.className
2195
4224
  }
2196
4225
  ),
2197
- isOpen && /* @__PURE__ */ jsxs12(
4226
+ isOpen && /* @__PURE__ */ jsx17(
2198
4227
  "div",
2199
4228
  {
2200
- className: `flex flex-col overflow-hidden ${displayMode === "fullscreen" ? "fixed inset-0 z-50" : `absolute ${position === "bottom-right" ? "bottom-20 right-5" : position === "bottom-left" ? "bottom-20 left-5" : ""} w-[480px] max-w-[min(800px,calc(100dvw-40px))] h-dvh max-h-[min(600px,80dvh)] z-10 shadow-xl border border-chat-border rounded-2xl`} bg-chat-background`,
4229
+ dir,
4230
+ className: `flex flex-col overflow-hidden ${displayMode === "fullscreen" ? "fixed inset-0 z-50" : `absolute ${position === "bottom-right" ? "bottom-20 right-5" : position === "bottom-left" ? "bottom-20 left-5" : position === "top-right" ? "top-20 right-5" : position === "top-left" ? "top-20 left-5" : ""} w-[480px] max-w-[min(800px,calc(100dvw-40px))] h-dvh max-h-[min(600px,80dvh)] z-10 shadow-xl border border-chat-border rounded-2xl`} bg-chat-background`,
2201
4231
  "data-chat-widget": displayMode,
2202
4232
  "data-chat-position": position,
2203
4233
  "data-chat-theme": effectiveTheme,
2204
- children: [
2205
- /* @__PURE__ */ jsx16(
2206
- Header,
2207
- {
2208
- title: effectiveTitle,
2209
- onClose: displayMode === "floating" ? close : showClose ? close : void 0,
2210
- onToggleFullscreen: showFullscreenToggle && !isSmallScreen ? toggleFullscreen : void 0,
2211
- isFullscreen: displayMode === "fullscreen",
2212
- showConnectionStatus: true,
2213
- isConnected,
2214
- className: className?.header,
2215
- theme,
2216
- onThemeChange: handleThemeChange
2217
- }
2218
- ),
2219
- /* @__PURE__ */ jsx16(
2220
- MessageList,
2221
- {
2222
- messages,
2223
- currentUserId,
2224
- isLoading: isLoadingHistory || loading,
2225
- onActionClick: handleActionClick,
2226
- onReactionClick: handleReactionClick,
2227
- className: className?.messageList
2228
- }
2229
- ),
2230
- isSomeoneTyping && /* @__PURE__ */ jsx16(TypingIndicator, {}),
2231
- renderPushPrompt?.(),
2232
- /* @__PURE__ */ jsx16(
2233
- InputArea,
2234
- {
2235
- onSend: handleSend,
2236
- placeholder: effectivePlaceholder,
2237
- disabled: loading,
2238
- className: className?.inputArea,
2239
- enableAttachments,
2240
- uploadConfig,
2241
- accept,
2242
- maxFileSize
2243
- }
2244
- )
2245
- ]
4234
+ children: panelContent
2246
4235
  }
2247
4236
  )
2248
4237
  ] });
4238
+ return /* @__PURE__ */ jsx17(LocaleProvider, { locale: effectiveLocale, children: widget });
2249
4239
  }
2250
4240
 
2251
4241
  // src/providers/ChatProvider.tsx
2252
4242
  import { createContext as createContext3, useContext as useContext3 } from "react";
2253
- import { jsx as jsx17 } from "react/jsx-runtime";
4243
+ import { jsx as jsx18 } from "react/jsx-runtime";
2254
4244
  var ChatContext = createContext3(void 0);
2255
4245
  function ChatProvider({
2256
4246
  children,
2257
4247
  client,
2258
4248
  cardRenderers
2259
4249
  }) {
2260
- return /* @__PURE__ */ jsx17(CardProvider, { renderers: cardRenderers, children: /* @__PURE__ */ jsx17(ChatContext.Provider, { value: { client }, children }) });
4250
+ return /* @__PURE__ */ jsx18(CardProvider, { renderers: cardRenderers, children: /* @__PURE__ */ jsx18(ChatContext.Provider, { value: { client }, children }) });
2261
4251
  }
2262
4252
  function useChatContext() {
2263
4253
  const context = useContext3(ChatContext);
@@ -2269,7 +4259,7 @@ function useChatContext() {
2269
4259
 
2270
4260
  // src/components/ErrorBoundary.tsx
2271
4261
  import { Component } from "react";
2272
- import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
4262
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
2273
4263
  var ErrorBoundary = class extends Component {
2274
4264
  constructor(props) {
2275
4265
  super(props);
@@ -2288,15 +4278,15 @@ var ErrorBoundary = class extends Component {
2288
4278
  return fallback(this.state.error);
2289
4279
  }
2290
4280
  if (fallback) return fallback;
2291
- return /* @__PURE__ */ jsxs13(
4281
+ return /* @__PURE__ */ jsxs14(
2292
4282
  "div",
2293
4283
  {
2294
4284
  className: "flex flex-col items-center justify-center p-6 text-center",
2295
4285
  "data-chat-error-boundary": "true",
2296
4286
  children: [
2297
- /* @__PURE__ */ jsx18("div", { className: "text-chat-error text-lg font-semibold mb-2", children: "Something went wrong" }),
2298
- /* @__PURE__ */ jsx18("div", { className: "text-chat-text-secondary text-sm mb-4", children: this.state.error.message }),
2299
- /* @__PURE__ */ jsx18(
4287
+ /* @__PURE__ */ jsx19("div", { className: "text-chat-error text-lg font-semibold mb-2", children: "Something went wrong" }),
4288
+ /* @__PURE__ */ jsx19("div", { className: "text-chat-text-secondary text-sm mb-4", children: this.state.error.message }),
4289
+ /* @__PURE__ */ jsx19(
2300
4290
  "button",
2301
4291
  {
2302
4292
  onClick: () => this.setState({ error: null }),
@@ -2310,78 +4300,6 @@ var ErrorBoundary = class extends Component {
2310
4300
  }
2311
4301
  };
2312
4302
 
2313
- // src/components/PushPermissionPrompt.tsx
2314
- import { useState as useState10 } from "react";
2315
- import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
2316
- function PushPermissionPrompt({
2317
- autoHide = true,
2318
- title,
2319
- description,
2320
- onStatusChange,
2321
- getVapidPublicKey,
2322
- onSubscribe,
2323
- onUnsubscribe
2324
- }) {
2325
- const { t } = useLocale();
2326
- const { status, isSupported, isSubscribed, subscribe, unsubscribe } = usePushNotifications({
2327
- enabled: true,
2328
- getVapidPublicKey,
2329
- onSubscribe,
2330
- onUnsubscribe
2331
- });
2332
- const [dismissed, setDismissed] = useState10(false);
2333
- if (!isSupported) return null;
2334
- if (autoHide && (isSubscribed || status === "denied")) return null;
2335
- if (dismissed) return null;
2336
- const handleEnable = async () => {
2337
- await subscribe();
2338
- onStatusChange?.(true);
2339
- };
2340
- const handleDisable = async () => {
2341
- await unsubscribe();
2342
- onStatusChange?.(false);
2343
- };
2344
- return /* @__PURE__ */ jsxs14(
2345
- "div",
2346
- {
2347
- className: "p-3 bg-chat-surface rounded-lg flex items-start gap-3",
2348
- "data-chat-push-prompt": "true",
2349
- children: [
2350
- /* @__PURE__ */ jsxs14("div", { className: "flex-1", children: [
2351
- /* @__PURE__ */ jsx19("div", { className: "font-semibold mb-1 text-chat-text", children: title || t("push.title") }),
2352
- /* @__PURE__ */ jsx19("div", { className: "text-sm text-chat-text-secondary", children: description || t("push.description") })
2353
- ] }),
2354
- /* @__PURE__ */ jsxs14("div", { className: "flex gap-2", children: [
2355
- !isSubscribed && status !== "denied" && /* @__PURE__ */ jsx19(
2356
- "button",
2357
- {
2358
- onClick: handleEnable,
2359
- className: "px-3 py-1.5 bg-chat-primary text-white border-none rounded cursor-pointer text-sm hover:opacity-90",
2360
- children: t("push.enable")
2361
- }
2362
- ),
2363
- isSubscribed && /* @__PURE__ */ jsx19(
2364
- "button",
2365
- {
2366
- onClick: handleDisable,
2367
- className: "px-3 py-1.5 bg-transparent text-chat-text-secondary border border-chat-border rounded cursor-pointer text-sm hover:bg-chat-surface",
2368
- children: t("push.disable")
2369
- }
2370
- ),
2371
- /* @__PURE__ */ jsx19(
2372
- "button",
2373
- {
2374
- onClick: () => setDismissed(true),
2375
- className: "px-1.5 bg-transparent border-none cursor-pointer text-chat-text-secondary hover:text-chat-text",
2376
- children: "\u2715"
2377
- }
2378
- )
2379
- ] })
2380
- ]
2381
- }
2382
- );
2383
- }
2384
-
2385
4303
  // src/components/PushToggle.tsx
2386
4304
  import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
2387
4305
  function PushToggle({ getVapidPublicKey, onSubscribe, onUnsubscribe }) {