@eshal-bot/chat-widget 0.2.50 → 0.2.52

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.
@@ -1 +1 @@
1
- export{S as default}from"./chat-widget-index-BIUTvn6a.esm.js";import"react";import"react-dom/client";import"react/jsx-runtime";import"react-dom";
1
+ export{S as default}from"./chat-widget-index-BZbPoQVV.esm.js";import"react";import"react-dom/client";import"react/jsx-runtime";import"react-dom";
@@ -9372,7 +9372,10 @@
9372
9372
  verifyInputBlocked: "Enter your code above to continue",
9373
9373
  verifyCancel: "Cancel",
9374
9374
  verifyCancelled: "Verification cancelled.",
9375
- verifyNotDelivered: "We couldn't deliver the code to that number. Check it and send a new code."
9375
+ verifyNotDelivered: "We couldn't deliver the code to that number. Check it and send a new code.",
9376
+ // EV-5018: the composer's remaining-characters counter, shown near the
9377
+ // 8,000-character limit the API enforces.
9378
+ charactersLeft: "Characters left: {count}"
9376
9379
  };
9377
9380
  const DICTIONARIES = {
9378
9381
  en: EN,
@@ -9440,7 +9443,8 @@
9440
9443
  fieldRequiredSuffix: "مطلوب",
9441
9444
  emailInvalid: "الرجاء إدخال بريد إلكتروني صالح",
9442
9445
  nameInvalid: "الرجاء إدخال اسم صالح",
9443
- phoneInvalid: "الرجاء إدخال رقم هاتف صالح"
9446
+ phoneInvalid: "الرجاء إدخال رقم هاتف صالح",
9447
+ charactersLeft: "الأحرف المتبقية: {count}"
9444
9448
  },
9445
9449
  es: {
9446
9450
  agentJoinedConversation: "{name} se ha unido a la conversación",
@@ -9492,7 +9496,8 @@
9492
9496
  fieldRequiredSuffix: "es un campo obligatorio",
9493
9497
  emailInvalid: "Introduce un correo electrónico válido",
9494
9498
  nameInvalid: "Introduce un nombre válido",
9495
- phoneInvalid: "Introduce un número de teléfono válido"
9499
+ phoneInvalid: "Introduce un número de teléfono válido",
9500
+ charactersLeft: "Caracteres restantes: {count}"
9496
9501
  },
9497
9502
  be: {
9498
9503
  connectionError: "Прабачце, зараз узнікаюць праблемы з падключэннем. Паспрабуйце яшчэ раз.",
@@ -9541,7 +9546,8 @@
9541
9546
  fieldRequiredSuffix: "(абавязковае поле)",
9542
9547
  emailInvalid: "Калі ласка, увядзіце сапраўдны адрас электроннай пошты",
9543
9548
  nameInvalid: "Калі ласка, увядзіце сапраўднае імя",
9544
- phoneInvalid: "Калі ласка, увядзіце сапраўдны нумар тэлефона"
9549
+ phoneInvalid: "Калі ласка, увядзіце сапраўдны нумар тэлефона",
9550
+ charactersLeft: "Засталося сімвалаў: {count}"
9545
9551
  },
9546
9552
  bs: {
9547
9553
  connectionError: "Izvinite, trenutno imam problema s povezivanjem. Pokušajte ponovo.",
@@ -9590,7 +9596,8 @@
9590
9596
  fieldRequiredSuffix: "(obavezno polje)",
9591
9597
  emailInvalid: "Unesite ispravnu email adresu",
9592
9598
  nameInvalid: "Unesite ispravno ime",
9593
- phoneInvalid: "Unesite ispravan broj telefona"
9599
+ phoneInvalid: "Unesite ispravan broj telefona",
9600
+ charactersLeft: "Preostalo znakova: {count}"
9594
9601
  },
9595
9602
  bg: {
9596
9603
  connectionError: "Съжалявам, в момента имам проблеми с връзката. Опитайте отново.",
@@ -9639,7 +9646,8 @@
9639
9646
  fieldRequiredSuffix: "(задължително поле)",
9640
9647
  emailInvalid: "Моля, въведете валиден имейл адрес",
9641
9648
  nameInvalid: "Моля, въведете валидно име",
9642
- phoneInvalid: "Моля, въведете валиден телефонен номер"
9649
+ phoneInvalid: "Моля, въведете валиден телефонен номер",
9650
+ charactersLeft: "Оставащи знаци: {count}"
9643
9651
  },
9644
9652
  my: {
9645
9653
  connectionError: "ဝမ်းနည်းပါသည်၊ ယခု ချိတ်ဆက်ရာတွင် အခက်အခဲရှိနေပါသည်။ ထပ်မံကြိုးစားပါ။",
@@ -9688,7 +9696,8 @@
9688
9696
  fieldRequiredSuffix: "ဖြည့်ရန် လိုအပ်ပါသည်",
9689
9697
  emailInvalid: "ကျေးဇူးပြု၍ မှန်ကန်သော အီးမေးလ်လိပ်စာကို ထည့်ပါ",
9690
9698
  nameInvalid: "ကျေးဇူးပြု၍ မှန်ကန်သော အမည်ကို ထည့်ပါ",
9691
- phoneInvalid: "ကျေးဇူးပြု၍ မှန်ကန်သော ဖုန်းနံပါတ်ကို ထည့်ပါ"
9699
+ phoneInvalid: "ကျေးဇူးပြု၍ မှန်ကန်သော ဖုန်းနံပါတ်ကို ထည့်ပါ",
9700
+ charactersLeft: "ကျန်ရှိသော စာလုံးအရေအတွက်: {count}"
9692
9701
  },
9693
9702
  ca: {
9694
9703
  connectionError: "Ho sentim, ara mateix tinc problemes de connexió. Torna-ho a provar.",
@@ -9737,7 +9746,8 @@
9737
9746
  fieldRequiredSuffix: "és un camp obligatori",
9738
9747
  emailInvalid: "Introdueix un correu electrònic vàlid",
9739
9748
  nameInvalid: "Introdueix un nom vàlid",
9740
- phoneInvalid: "Introdueix un número de telèfon vàlid"
9749
+ phoneInvalid: "Introdueix un número de telèfon vàlid",
9750
+ charactersLeft: "Caràcters restants: {count}"
9741
9751
  },
9742
9752
  zh: {
9743
9753
  agentJoinedConversation: "{name} 已加入对话",
@@ -9789,7 +9799,8 @@
9789
9799
  fieldRequiredSuffix: "为必填项",
9790
9800
  emailInvalid: "请输入有效的电子邮箱地址",
9791
9801
  nameInvalid: "请输入有效的姓名",
9792
- phoneInvalid: "请输入有效的电话号码"
9802
+ phoneInvalid: "请输入有效的电话号码",
9803
+ charactersLeft: "剩余字符:{count}"
9793
9804
  },
9794
9805
  hr: {
9795
9806
  connectionError: "Nažalost, trenutno imam problema s povezivanjem. Pokušajte ponovno.",
@@ -9838,7 +9849,8 @@
9838
9849
  fieldRequiredSuffix: "(obavezno polje)",
9839
9850
  emailInvalid: "Unesite valjanu adresu e-pošte",
9840
9851
  nameInvalid: "Unesite valjano ime",
9841
- phoneInvalid: "Unesite valjan broj telefona"
9852
+ phoneInvalid: "Unesite valjan broj telefona",
9853
+ charactersLeft: "Preostalo znakova: {count}"
9842
9854
  },
9843
9855
  cs: {
9844
9856
  connectionError: "Omlouváme se, momentálně mám problémy s připojením. Zkuste to prosím znovu.",
@@ -9887,7 +9899,8 @@
9887
9899
  fieldRequiredSuffix: "(povinné pole)",
9888
9900
  emailInvalid: "Zadejte platnou e-mailovou adresu",
9889
9901
  nameInvalid: "Zadejte platné jméno",
9890
- phoneInvalid: "Zadejte platné telefonní číslo"
9902
+ phoneInvalid: "Zadejte platné telefonní číslo",
9903
+ charactersLeft: "Zbývající znaky: {count}"
9891
9904
  },
9892
9905
  da: {
9893
9906
  connectionError: "Beklager, jeg har problemer med at oprette forbindelse lige nu. Prøv igen.",
@@ -9936,7 +9949,8 @@
9936
9949
  fieldRequiredSuffix: "er påkrævet",
9937
9950
  emailInvalid: "Indtast en gyldig e-mailadresse",
9938
9951
  nameInvalid: "Indtast et gyldigt navn",
9939
- phoneInvalid: "Indtast et gyldigt telefonnummer"
9952
+ phoneInvalid: "Indtast et gyldigt telefonnummer",
9953
+ charactersLeft: "Tegn tilbage: {count}"
9940
9954
  },
9941
9955
  nl: {
9942
9956
  agentJoinedConversation: "{name} neemt deel aan het gesprek",
@@ -9988,7 +10002,8 @@
9988
10002
  fieldRequiredSuffix: "is verplicht",
9989
10003
  emailInvalid: "Voer een geldig e-mailadres in",
9990
10004
  nameInvalid: "Voer een geldige naam in",
9991
- phoneInvalid: "Voer een geldig telefoonnummer in"
10005
+ phoneInvalid: "Voer een geldig telefoonnummer in",
10006
+ charactersLeft: "Resterende tekens: {count}"
9992
10007
  },
9993
10008
  et: {
9994
10009
  connectionError: "Kahjuks on mul praegu ühendusprobleeme. Palun proovige uuesti.",
@@ -10037,7 +10052,8 @@
10037
10052
  fieldRequiredSuffix: "on kohustuslik",
10038
10053
  emailInvalid: "Sisestage kehtiv e-posti aadress",
10039
10054
  nameInvalid: "Sisestage kehtiv nimi",
10040
- phoneInvalid: "Sisestage kehtiv telefoninumber"
10055
+ phoneInvalid: "Sisestage kehtiv telefoninumber",
10056
+ charactersLeft: "Märke jäänud: {count}"
10041
10057
  },
10042
10058
  fi: {
10043
10059
  connectionError: "Pahoittelut, minulla on nyt yhteysongelmia. Yritä uudelleen.",
@@ -10086,7 +10102,8 @@
10086
10102
  fieldRequiredSuffix: "on pakollinen",
10087
10103
  emailInvalid: "Anna kelvollinen sähköpostiosoite",
10088
10104
  nameInvalid: "Anna kelvollinen nimi",
10089
- phoneInvalid: "Anna kelvollinen puhelinnumero"
10105
+ phoneInvalid: "Anna kelvollinen puhelinnumero",
10106
+ charactersLeft: "Merkkejä jäljellä: {count}"
10090
10107
  },
10091
10108
  fr: {
10092
10109
  agentJoinedConversation: "{name} a rejoint la conversation",
@@ -10138,7 +10155,8 @@
10138
10155
  fieldRequiredSuffix: "est obligatoire",
10139
10156
  emailInvalid: "Veuillez saisir une adresse e-mail valide",
10140
10157
  nameInvalid: "Veuillez saisir un nom valide",
10141
- phoneInvalid: "Veuillez saisir un numéro de téléphone valide"
10158
+ phoneInvalid: "Veuillez saisir un numéro de téléphone valide",
10159
+ charactersLeft: "Caractères restants : {count}"
10142
10160
  },
10143
10161
  de: {
10144
10162
  agentJoinedConversation: "{name} ist dem Gespräch beigetreten",
@@ -10190,7 +10208,8 @@
10190
10208
  fieldRequiredSuffix: "ist erforderlich",
10191
10209
  emailInvalid: "Bitte geben Sie eine gültige E-Mail-Adresse ein",
10192
10210
  nameInvalid: "Bitte geben Sie einen gültigen Namen ein",
10193
- phoneInvalid: "Bitte geben Sie eine gültige Telefonnummer ein"
10211
+ phoneInvalid: "Bitte geben Sie eine gültige Telefonnummer ein",
10212
+ charactersLeft: "Verbleibende Zeichen: {count}"
10194
10213
  },
10195
10214
  el: {
10196
10215
  connectionError: "Συγγνώμη, αντιμετωπίζω πρόβλημα σύνδεσης αυτή τη στιγμή. Δοκιμάστε ξανά.",
@@ -10239,7 +10258,8 @@
10239
10258
  fieldRequiredSuffix: "(υποχρεωτικό πεδίο)",
10240
10259
  emailInvalid: "Παρακαλώ εισαγάγετε μια έγκυρη διεύθυνση email",
10241
10260
  nameInvalid: "Παρακαλώ εισαγάγετε ένα έγκυρο όνομα",
10242
- phoneInvalid: "Παρακαλώ εισαγάγετε έναν έγκυρο αριθμό τηλεφώνου"
10261
+ phoneInvalid: "Παρακαλώ εισαγάγετε έναν έγκυρο αριθμό τηλεφώνου",
10262
+ charactersLeft: "Χαρακτήρες που απομένουν: {count}"
10243
10263
  },
10244
10264
  hi: {
10245
10265
  connectionError: "क्षमा करें, मुझे अभी कनेक्ट होने में समस्या हो रही है। कृपया पुनः प्रयास करें।",
@@ -10290,7 +10310,8 @@
10290
10310
  fieldRequiredSuffix: "आवश्यक है",
10291
10311
  emailInvalid: "कृपया एक मान्य ईमेल पता दर्ज करें",
10292
10312
  nameInvalid: "कृपया एक मान्य नाम दर्ज करें",
10293
- phoneInvalid: "कृपया एक मान्य फ़ोन नंबर दर्ज करें"
10313
+ phoneInvalid: "कृपया एक मान्य फ़ोन नंबर दर्ज करें",
10314
+ charactersLeft: "शेष अक्षर: {count}"
10294
10315
  },
10295
10316
  mr: {
10296
10317
  connectionError: "क्षमस्व, सध्या कनेक्ट होण्यात अडचण येत आहे. कृपया पुन्हा प्रयत्न करा.",
@@ -10341,7 +10362,8 @@
10341
10362
  fieldRequiredSuffix: "आवश्यक आहे",
10342
10363
  emailInvalid: "कृपया वैध ईमेल पत्ता प्रविष्ट करा",
10343
10364
  nameInvalid: "कृपया वैध नाव प्रविष्ट करा",
10344
- phoneInvalid: "कृपया वैध फोन नंबर प्रविष्ट करा"
10365
+ phoneInvalid: "कृपया वैध फोन नंबर प्रविष्ट करा",
10366
+ charactersLeft: "उरलेली अक्षरे: {count}"
10345
10367
  },
10346
10368
  hu: {
10347
10369
  connectionError: "Sajnáljuk, jelenleg kapcsolódási problémám van. Kérjük, próbálja újra.",
@@ -10390,7 +10412,8 @@
10390
10412
  fieldRequiredSuffix: "megadása kötelező",
10391
10413
  emailInvalid: "Adjon meg egy érvényes e-mail-címet",
10392
10414
  nameInvalid: "Adjon meg egy érvényes nevet",
10393
- phoneInvalid: "Adjon meg egy érvényes telefonszámot"
10415
+ phoneInvalid: "Adjon meg egy érvényes telefonszámot",
10416
+ charactersLeft: "Hátralévő karakterek: {count}"
10394
10417
  },
10395
10418
  is: {
10396
10419
  connectionError: "Því miður næ ég ekki sambandi núna. Vinsamlegast prófaðu aftur.",
@@ -10439,7 +10462,8 @@
10439
10462
  fieldRequiredSuffix: "(nauðsynlegur reitur)",
10440
10463
  emailInvalid: "Sláðu inn gilt netfang",
10441
10464
  nameInvalid: "Sláðu inn gilt nafn",
10442
- phoneInvalid: "Sláðu inn gilt símanúmer"
10465
+ phoneInvalid: "Sláðu inn gilt símanúmer",
10466
+ charactersLeft: "Stafir eftir: {count}"
10443
10467
  },
10444
10468
  id: {
10445
10469
  connectionError: "Maaf, saya sedang mengalami masalah koneksi. Silakan coba lagi.",
@@ -10488,7 +10512,8 @@
10488
10512
  fieldRequiredSuffix: "wajib diisi",
10489
10513
  emailInvalid: "Masukkan alamat email yang valid",
10490
10514
  nameInvalid: "Masukkan nama yang valid",
10491
- phoneInvalid: "Masukkan nomor telepon yang valid"
10515
+ phoneInvalid: "Masukkan nomor telepon yang valid",
10516
+ charactersLeft: "Sisa karakter: {count}"
10492
10517
  },
10493
10518
  it: {
10494
10519
  connectionError: "Spiacenti, al momento ho problemi di connessione. Riprova.",
@@ -10537,7 +10562,8 @@
10537
10562
  fieldRequiredSuffix: "è un campo obbligatorio",
10538
10563
  emailInvalid: "Inserisci un indirizzo email valido",
10539
10564
  nameInvalid: "Inserisci un nome valido",
10540
- phoneInvalid: "Inserisci un numero di telefono valido"
10565
+ phoneInvalid: "Inserisci un numero di telefono valido",
10566
+ charactersLeft: "Caratteri rimanenti: {count}"
10541
10567
  },
10542
10568
  ja: {
10543
10569
  agentJoinedConversation: "{name}が会話に参加しました",
@@ -10589,7 +10615,8 @@
10589
10615
  fieldRequiredSuffix: "は必須です",
10590
10616
  emailInvalid: "有効なメールアドレスを入力してください",
10591
10617
  nameInvalid: "有効なお名前を入力してください",
10592
- phoneInvalid: "有効な電話番号を入力してください"
10618
+ phoneInvalid: "有効な電話番号を入力してください",
10619
+ charactersLeft: "残り文字数:{count}"
10593
10620
  },
10594
10621
  ko: {
10595
10622
  connectionError: "죄송합니다. 현재 연결에 문제가 있습니다. 다시 시도해 주세요.",
@@ -10638,7 +10665,8 @@
10638
10665
  fieldRequiredSuffix: "항목은 필수입니다",
10639
10666
  emailInvalid: "유효한 이메일 주소를 입력해 주세요",
10640
10667
  nameInvalid: "유효한 이름을 입력해 주세요",
10641
- phoneInvalid: "유효한 전화번호를 입력해 주세요"
10668
+ phoneInvalid: "유효한 전화번호를 입력해 주세요",
10669
+ charactersLeft: "남은 글자 수: {count}"
10642
10670
  },
10643
10671
  lv: {
10644
10672
  connectionError: "Atvainojiet, šobrīd ir savienojuma problēmas. Lūdzu, mēģiniet vēlreiz.",
@@ -10687,7 +10715,8 @@
10687
10715
  fieldRequiredSuffix: "(obligāts lauks)",
10688
10716
  emailInvalid: "Lūdzu, ievadiet derīgu e-pasta adresi",
10689
10717
  nameInvalid: "Lūdzu, ievadiet derīgu vārdu",
10690
- phoneInvalid: "Lūdzu, ievadiet derīgu tālruņa numuru"
10718
+ phoneInvalid: "Lūdzu, ievadiet derīgu tālruņa numuru",
10719
+ charactersLeft: "Atlikušās rakstzīmes: {count}"
10691
10720
  },
10692
10721
  lt: {
10693
10722
  connectionError: "Atsiprašome, šiuo metu kyla ryšio problemų. Bandykite dar kartą.",
@@ -10736,7 +10765,8 @@
10736
10765
  fieldRequiredSuffix: "(privalomas laukas)",
10737
10766
  emailInvalid: "Įveskite galiojantį el. pašto adresą",
10738
10767
  nameInvalid: "Įveskite tinkamą vardą",
10739
- phoneInvalid: "Įveskite galiojantį telefono numerį"
10768
+ phoneInvalid: "Įveskite galiojantį telefono numerį",
10769
+ charactersLeft: "Liko simbolių: {count}"
10740
10770
  },
10741
10771
  mk: {
10742
10772
  connectionError: "Извинете, моментално имам проблеми со поврзувањето. Обидете се повторно.",
@@ -10785,7 +10815,8 @@
10785
10815
  fieldRequiredSuffix: "(задолжително поле)",
10786
10816
  emailInvalid: "Внесете важечка е-пошта",
10787
10817
  nameInvalid: "Внесете важечко име",
10788
- phoneInvalid: "Внесете важечки телефонски број"
10818
+ phoneInvalid: "Внесете важечки телефонски број",
10819
+ charactersLeft: "Преостанати знаци: {count}"
10789
10820
  },
10790
10821
  ms: {
10791
10822
  connectionError: "Maaf, saya menghadapi masalah sambungan sekarang. Sila cuba lagi.",
@@ -10834,7 +10865,8 @@
10834
10865
  fieldRequiredSuffix: "wajib diisi",
10835
10866
  emailInvalid: "Masukkan alamat e-mel yang sah",
10836
10867
  nameInvalid: "Masukkan nama yang sah",
10837
- phoneInvalid: "Masukkan nombor telefon yang sah"
10868
+ phoneInvalid: "Masukkan nombor telefon yang sah",
10869
+ charactersLeft: "Aksara berbaki: {count}"
10838
10870
  },
10839
10871
  no: {
10840
10872
  connectionError: "Beklager, jeg har problemer med tilkoblingen akkurat nå. Prøv igjen.",
@@ -10883,7 +10915,8 @@
10883
10915
  fieldRequiredSuffix: "er påkrevd",
10884
10916
  emailInvalid: "Skriv inn en gyldig e-postadresse",
10885
10917
  nameInvalid: "Skriv inn et gyldig navn",
10886
- phoneInvalid: "Skriv inn et gyldig telefonnummer"
10918
+ phoneInvalid: "Skriv inn et gyldig telefonnummer",
10919
+ charactersLeft: "Tegn igjen: {count}"
10887
10920
  },
10888
10921
  fa: {
10889
10922
  connectionError: "متأسفیم، در حال حاضر در اتصال مشکل دارم. لطفاً دوباره تلاش کنید.",
@@ -10932,7 +10965,8 @@
10932
10965
  fieldRequiredSuffix: "الزامی است",
10933
10966
  emailInvalid: "لطفاً یک ایمیل معتبر وارد کنید",
10934
10967
  nameInvalid: "لطفاً یک نام معتبر وارد کنید",
10935
- phoneInvalid: "لطفاً یک شماره تلفن معتبر وارد کنید"
10968
+ phoneInvalid: "لطفاً یک شماره تلفن معتبر وارد کنید",
10969
+ charactersLeft: "نویسه‌های باقی‌مانده: {count}"
10936
10970
  },
10937
10971
  pl: {
10938
10972
  connectionError: "Przepraszamy, mam teraz problem z połączeniem. Spróbuj ponownie.",
@@ -10981,7 +11015,8 @@
10981
11015
  fieldRequiredSuffix: "(pole wymagane)",
10982
11016
  emailInvalid: "Wpisz prawidłowy adres e-mail",
10983
11017
  nameInvalid: "Wpisz prawidłowe imię",
10984
- phoneInvalid: "Wpisz prawidłowy numer telefonu"
11018
+ phoneInvalid: "Wpisz prawidłowy numer telefonu",
11019
+ charactersLeft: "Pozostało znaków: {count}"
10985
11020
  },
10986
11021
  pt: {
10987
11022
  connectionError: "Desculpe, estou com problemas de conexão neste momento. Tente novamente.",
@@ -11030,7 +11065,8 @@
11030
11065
  fieldRequiredSuffix: "é um campo obrigatório",
11031
11066
  emailInvalid: "Insira um endereço de e-mail válido",
11032
11067
  nameInvalid: "Insira um nome válido",
11033
- phoneInvalid: "Insira um número de telefone válido"
11068
+ phoneInvalid: "Insira um número de telefone válido",
11069
+ charactersLeft: "Caracteres restantes: {count}"
11034
11070
  },
11035
11071
  ro: {
11036
11072
  connectionError: "Ne pare rău, întâmpin probleme de conexiune în acest moment. Încercați din nou.",
@@ -11079,7 +11115,8 @@
11079
11115
  fieldRequiredSuffix: "este un câmp obligatoriu",
11080
11116
  emailInvalid: "Introduceți o adresă de e-mail validă",
11081
11117
  nameInvalid: "Introduceți un nume valid",
11082
- phoneInvalid: "Introduceți un număr de telefon valid"
11118
+ phoneInvalid: "Introduceți un număr de telefon valid",
11119
+ charactersLeft: "Caractere rămase: {count}"
11083
11120
  },
11084
11121
  ru: {
11085
11122
  connectionError: "Извините, сейчас возникли проблемы с подключением. Попробуйте снова.",
@@ -11128,7 +11165,8 @@
11128
11165
  fieldRequiredSuffix: "(обязательное поле)",
11129
11166
  emailInvalid: "Введите действительный адрес электронной почты",
11130
11167
  nameInvalid: "Введите корректное имя",
11131
- phoneInvalid: "Введите корректный номер телефона"
11168
+ phoneInvalid: "Введите корректный номер телефона",
11169
+ charactersLeft: "Осталось символов: {count}"
11132
11170
  },
11133
11171
  sr: {
11134
11172
  agentJoinedConversation: "{name} se pridružio/la razgovoru",
@@ -11180,7 +11218,8 @@
11180
11218
  fieldRequiredSuffix: "(obavezno polje)",
11181
11219
  emailInvalid: "Unesite ispravnu adresu e-pošte",
11182
11220
  nameInvalid: "Unesite ispravno ime",
11183
- phoneInvalid: "Unesite ispravan broj telefona"
11221
+ phoneInvalid: "Unesite ispravan broj telefona",
11222
+ charactersLeft: "Preostalo znakova: {count}"
11184
11223
  },
11185
11224
  sk: {
11186
11225
  connectionError: "Ľutujeme, momentálne mám problém s pripojením. Skúste to znova.",
@@ -11229,7 +11268,8 @@
11229
11268
  fieldRequiredSuffix: "(povinné pole)",
11230
11269
  emailInvalid: "Zadajte platnú e-mailovú adresu",
11231
11270
  nameInvalid: "Zadajte platné meno",
11232
- phoneInvalid: "Zadajte platné telefónne číslo"
11271
+ phoneInvalid: "Zadajte platné telefónne číslo",
11272
+ charactersLeft: "Zostávajúce znaky: {count}"
11233
11273
  },
11234
11274
  sl: {
11235
11275
  connectionError: "Oprostite, trenutno imam težave s povezavo. Poskusite znova.",
@@ -11278,7 +11318,8 @@
11278
11318
  fieldRequiredSuffix: "(obvezno polje)",
11279
11319
  emailInvalid: "Vnesite veljaven e-poštni naslov",
11280
11320
  nameInvalid: "Vnesite veljavno ime",
11281
- phoneInvalid: "Vnesite veljavno telefonsko številko"
11321
+ phoneInvalid: "Vnesite veljavno telefonsko številko",
11322
+ charactersLeft: "Preostali znaki: {count}"
11282
11323
  },
11283
11324
  sv: {
11284
11325
  connectionError: "Ursäkta, jag har anslutningsproblem just nu. Försök igen.",
@@ -11327,7 +11368,8 @@
11327
11368
  fieldRequiredSuffix: "krävs",
11328
11369
  emailInvalid: "Ange en giltig e-postadress",
11329
11370
  nameInvalid: "Ange ett giltigt namn",
11330
- phoneInvalid: "Ange ett giltigt telefonnummer"
11371
+ phoneInvalid: "Ange ett giltigt telefonnummer",
11372
+ charactersLeft: "Tecken kvar: {count}"
11331
11373
  },
11332
11374
  th: {
11333
11375
  connectionError: "ขออภัย ขณะนี้เกิดปัญหาในการเชื่อมต่อ โปรดลองอีกครั้ง",
@@ -11376,7 +11418,8 @@
11376
11418
  fieldRequiredSuffix: "จำเป็นต้องกรอก",
11377
11419
  emailInvalid: "กรุณากรอกอีเมลที่ถูกต้อง",
11378
11420
  nameInvalid: "กรุณากรอกชื่อที่ถูกต้อง",
11379
- phoneInvalid: "กรุณากรอกหมายเลขโทรศัพท์ที่ถูกต้อง"
11421
+ phoneInvalid: "กรุณากรอกหมายเลขโทรศัพท์ที่ถูกต้อง",
11422
+ charactersLeft: "อักขระที่เหลือ: {count}"
11380
11423
  },
11381
11424
  tr: {
11382
11425
  connectionError: "Üzgünüz, şu anda bağlantı sorunu yaşıyorum. Lütfen tekrar deneyin.",
@@ -11425,7 +11468,8 @@
11425
11468
  fieldRequiredSuffix: "alanı zorunludur",
11426
11469
  emailInvalid: "Lütfen geçerli bir e-posta adresi girin",
11427
11470
  nameInvalid: "Lütfen geçerli bir ad girin",
11428
- phoneInvalid: "Lütfen geçerli bir telefon numarası girin"
11471
+ phoneInvalid: "Lütfen geçerli bir telefon numarası girin",
11472
+ charactersLeft: "Kalan karakter: {count}"
11429
11473
  },
11430
11474
  uk: {
11431
11475
  connectionError: "Вибачте, зараз виникли проблеми з підключенням. Спробуйте ще раз.",
@@ -11474,7 +11518,8 @@
11474
11518
  fieldRequiredSuffix: "(обов’язкове поле)",
11475
11519
  emailInvalid: "Введіть дійсну адресу електронної пошти",
11476
11520
  nameInvalid: "Введіть коректне ім’я",
11477
- phoneInvalid: "Введіть коректний номер телефону"
11521
+ phoneInvalid: "Введіть коректний номер телефону",
11522
+ charactersLeft: "Залишилося символів: {count}"
11478
11523
  },
11479
11524
  ur: {
11480
11525
  connectionError: "معذرت، اس وقت رابطہ قائم کرنے میں دشواری ہو رہی ہے۔ براہ کرم دوبارہ کوشش کریں۔",
@@ -11523,7 +11568,8 @@
11523
11568
  fieldRequiredSuffix: "درکار ہے",
11524
11569
  emailInvalid: "براہ کرم ایک درست ای میل پتہ درج کریں",
11525
11570
  nameInvalid: "براہ کرم ایک درست نام درج کریں",
11526
- phoneInvalid: "براہ کرم ایک درست فون نمبر درج کریں"
11571
+ phoneInvalid: "براہ کرم ایک درست فون نمبر درج کریں",
11572
+ charactersLeft: "باقی حروف: {count}"
11527
11573
  },
11528
11574
  vi: {
11529
11575
  connectionError: "Xin lỗi, hiện tôi đang gặp sự cố kết nối. Vui lòng thử lại.",
@@ -11572,7 +11618,8 @@
11572
11618
  fieldRequiredSuffix: "là bắt buộc",
11573
11619
  emailInvalid: "Vui lòng nhập địa chỉ email hợp lệ",
11574
11620
  nameInvalid: "Vui lòng nhập tên hợp lệ",
11575
- phoneInvalid: "Vui lòng nhập số điện thoại hợp lệ"
11621
+ phoneInvalid: "Vui lòng nhập số điện thoại hợp lệ",
11622
+ charactersLeft: "Số ký tự còn lại: {count}"
11576
11623
  }
11577
11624
  };
11578
11625
 
@@ -13397,6 +13444,40 @@
13397
13444
  return true;
13398
13445
  }
13399
13446
 
13447
+ /**
13448
+ * The call socket message a verify card sends once the caller's code checked
13449
+ * out: voice-runtime (serializer.verification_turn) makes it the caller's
13450
+ * next turn and resumes the held call with it. The code itself went from the
13451
+ * card to the server's identity route, never over the call. Null when the
13452
+ * card names no held call, so nothing half-formed is sent.
13453
+ * Mirrors packages/frontend/src/components/chatbot-preview/voiceCard.ts.
13454
+ */
13455
+ function verificationResumeMessage(text, card) {
13456
+ const toolCallId = String(card?.tool_call_id || "").trim();
13457
+ if (!toolCallId) return null;
13458
+ const verificationComplete = {
13459
+ tool_call_id: toolCallId
13460
+ };
13461
+ const invocationId = String(card?.invocation_id || "").trim();
13462
+ if (invocationId) verificationComplete.invocation_id = invocationId;
13463
+ return JSON.stringify({
13464
+ type: "verification_complete",
13465
+ text: String(text || "").trim(),
13466
+ verificationComplete
13467
+ });
13468
+ }
13469
+
13470
+ /**
13471
+ * A click on the call screen's card: a verify card whose code checked out
13472
+ * resumes the held call (never typed as the caller's words), a web address
13473
+ * opens in a new tab, anything else is the caller's next turn.
13474
+ * `send` is { resume(text, card), say(text) }.
13475
+ * Mirrors packages/frontend/src/components/chatbot-preview/voiceCard.ts.
13476
+ */
13477
+ function routeCallCardAction(text, extra, send, open) {
13478
+ if (extra?.verificationComplete) send.resume?.(text, extra.verificationComplete);else if (!openCardLink(text, open)) send.say?.(text);
13479
+ }
13480
+
13400
13481
  /**
13401
13482
  * Replies the widget never streamed itself.
13402
13483
  *
@@ -16940,6 +17021,23 @@
16940
17021
  setInputValue("");
16941
17022
  }, []);
16942
17023
 
17024
+ // A verify card on the call screen whose code checked out: the held call
17025
+ // resumes over the call socket. Not drawn as the caller's words, as in the
17026
+ // chat (EV-4942): the caller entered a code, they did not say this.
17027
+ const sendBidiVerificationComplete = reactExports.useCallback((text, card) => {
17028
+ const message = verificationResumeMessage(text, card);
17029
+ if (!message) return;
17030
+ const ws = websocketRef.current;
17031
+ if (!ws || ws.readyState !== WebSocket.OPEN) {
17032
+ if (!voiceCreditsExhaustedRef.current) setVoiceError("voiceUnavailable");
17033
+ return;
17034
+ }
17035
+ userHasSpokenRef.current = true;
17036
+ ws.send(message);
17037
+ updateActivity(organizationId);
17038
+ setIsLoading(true);
17039
+ }, []);
17040
+
16943
17041
  // Cleanup on unmount
16944
17042
  reactExports.useEffect(() => {
16945
17043
  isVoiceSessionActiveRef.current = isVoiceSessionActive;
@@ -17264,6 +17362,7 @@
17264
17362
  handleVoiceToggle,
17265
17363
  toggleVoicePause,
17266
17364
  sendBidiTextMessage,
17365
+ sendBidiVerificationComplete,
17267
17366
  // Session lifecycle
17268
17367
  sessionExpiringSoon,
17269
17368
  resetConversation,
@@ -21433,6 +21532,10 @@
21433
21532
 
21434
21533
  var img = "data:image/svg+xml,%3csvg width='219' height='54' xmlns='http://www.w3.org/2000/svg' version='1.0'%3e%3cg class='layer'%3e%3ctitle%3eEshal Logo%3c/title%3e%3cg clip-path='url(%23a)' transform='translate(-.708 -1.076)'%3e%3cg clip-path='url(%23b)'%3e%3cpath d='M21.79 54.75h4.5l3.93-.56 4.49-1.4 3.38-1.97 2.81-2.25 2.24-2.81 2.25-3.93 1.13-3.09v-.85l-3.65-1.12h-.57l-1.96 4.5-1.97 3.09-2.81 2.53-3.93 1.96-3.38.85-2.81.28h-2.81l-4.21-.57-3.94-1.4-2.81-1.97-2.25-2.24-1.96-3.38-1.41-4.21-.56-3.37-.28-3.1v-3.65l.56-5.06 1.12-4.21 1.97-3.94 2.53-2.81 2.25-1.68 2.81-1.41 3.37-.84 2.25-.28H26l4.78.84 4.5 2.25 2.53 2.53 1.4 2.53.56 2.53-.28 3.65-1.12 2.25-1.41 1.69-1.4.55-1.13-4.21-1.68-2.81-1.97-1.97-3.09-1.4-1.12-.28h-5.34l-3.09 1.12-2.25 1.69-1.41 1.97-.84 3.09.28 3.08 1.4 2.82 1.97 1.96 2.81 1.41 2.25.56 4.78.28 3.09-.28.84-.28-1.12 3.09-1.69 1.97-2.25.84h-3.65l-2.81-1.12-1.68-1.41-3.38 2.25.56 1.13 1.13 1.4 2.81 1.69 2.81.84h4.78l2.81-.84 2.53-1.69 1.96-2.25L35 34.8l.84-4.5 3.65-2.24 2.53-2.53 1.69-3.09.56-2.25.28-2.81-.56-3.93-1.12-2.82-2.25-3.09-3.09-2.81-4.22-2.25-4.5-1.12-2.52-.28h-4.5l-3.93.56-4.5 1.41-3.38 1.96-3.37 3.1-2.52 3.65-1.97 4.49-1.13 4.78-.28 2.25v9.27l.84 5.06 1.69 4.78 1.69 3.09 2.25 2.81 2.8 2.53 2.82 1.69 5.06 1.68zm1.12-27.54-2.53-.84-1.4-1.12-.84-1.69.28-2.53 1.12-1.4 2.25-1.13H26l2.81 1.41 1.41 1.97.84 2.8v2.25l-1.12.28zm0 0' fill='white'/%3e%3c/g%3e%3c/g%3e%3cpath d='M82.381 38.435v6.48h-27.06V9.965h26.41v6.5h-18.36v7.57h16.22v6.3h-16.22v8.1zm16.432 7.07c-2.77 0-5.44-.37-8.02-1.11-2.57-.75-4.65-1.72-6.22-2.92l2.75-6.09c1.5 1.09 3.28 1.98 5.34 2.64 2.07.67 4.13 1 6.19 1q3.45 0 5.1-1.02t1.65-2.73c0-.83-.33-1.52-.98-2.06-.65-.55-1.48-1-2.5-1.33-1.01-.33-2.39-.7-4.11-1.1-2.67-.63-4.85-1.26-6.55-1.89s-3.15-1.64-4.37-3.04c-1.21-1.41-1.82-3.27-1.82-5.6 0-2.03.55-3.86 1.64-5.51 1.11-1.66 2.76-2.96 4.97-3.92 2.22-.97 4.93-1.46 8.13-1.46 2.22 0 4.4.27 6.53.8s4 1.3 5.59 2.3l-2.5 6.14c-3.23-1.82-6.45-2.74-9.67-2.74-2.27 0-3.95.37-5.03 1.1-1.07.73-1.61 1.69-1.61 2.89q0 1.8 1.86 2.67c1.25.59 3.16 1.16 5.72 1.72 2.66.63 4.85 1.27 6.55 1.9 1.69.63 3.14 1.63 4.36 2.99 1.21 1.37 1.82 3.21 1.82 5.55 0 2-.56 3.82-1.67 5.46q-1.68 2.475-5.01 3.93c-2.23.95-4.95 1.43-8.14 1.43m50.913-35.54v34.95h-8.08v-14.33h-15.88v14.33h-8.09V9.965h8.09v13.78h15.88V9.965zm29.811 27.47h-16.22l-3.1 7.48h-8.29l15.58-34.95h7.98l15.62 34.95h-8.48zm-2.55-6.15-5.55-13.37-5.53 13.37zm16.274-21.32h8.09v28.36h17.52v6.59h-25.61zm0 0' fill='white'/%3e%3c/g%3e%3c/svg%3e";
21435
21534
 
21535
+ const MAX_MESSAGE_CHARS = 8000;
21536
+ const CHAR_COUNTER_FROM = 7000;
21537
+
21538
+ // Exported for tests (EV-3014 markup golden); ChatInput is the only renderer.
21436
21539
  const PromptSuggestionsRow = ({
21437
21540
  suggestions,
21438
21541
  onSuggestionClick,
@@ -21735,8 +21838,12 @@
21735
21838
  }
21736
21839
  };
21737
21840
  const handleChange = event => {
21738
- setInputValue(event.target.value);
21841
+ // EV-5018: maxLength stops typing and pasting past the limit; the slice
21842
+ // also covers a value set some other way (autofill, a test harness).
21843
+ setInputValue(event.target.value.slice(0, MAX_MESSAGE_CHARS));
21739
21844
  };
21845
+ const typedLength = inputValue ? inputValue.length : 0;
21846
+ const showCharCounter = typedLength >= CHAR_COUNTER_FROM;
21740
21847
  const separatorColor = isDark ? "#374151" : "#e5e7eb";
21741
21848
 
21742
21849
  // Check if onboarding flow exists and is not completed
@@ -21970,6 +22077,8 @@
21970
22077
  onFocus: () => setIsFocused(true),
21971
22078
  onBlur: () => setIsFocused(false),
21972
22079
  onKeyDown: handleKeyPress,
22080
+ maxLength: MAX_MESSAGE_CHARS,
22081
+ "aria-describedby": showCharCounter ? "chat-widget-char-count" : undefined,
21973
22082
  placeholder: isConversationLoading ? t("agentIsLoading") : verificationPending ? t("verifyInputBlocked") : placeholder || t("typeYourMessage"),
21974
22083
  rows: 1,
21975
22084
  disabled: csatVisible || isConversationLoading || isLoading || verificationPending || isVoiceSessionActive && voiceStatus !== "connected",
@@ -22133,6 +22242,14 @@
22133
22242
  role: "alert",
22134
22243
  className: "text-xs mt-1 px-5 text-status-error",
22135
22244
  children: t(voiceError) === voiceError ? t("voiceUnavailable") : t(voiceError)
22245
+ }), showCharCounter && /*#__PURE__*/jsxRuntimeExports.jsx("p", {
22246
+ id: "chat-widget-char-count",
22247
+ "aria-live": "polite",
22248
+ className: `text-xs mt-1 px-5 ${isDark ? "text-gray-400" : "text-gray-500"}`,
22249
+ style: {
22250
+ textAlign: isRtl ? "left" : "right"
22251
+ },
22252
+ children: t("charactersLeft").replace("{count}", Math.max(0, MAX_MESSAGE_CHARS - typedLength).toLocaleString())
22136
22253
  }), disclaimerEnabled && disclaimerText && disclaimerPosition === "footer" && /*#__PURE__*/jsxRuntimeExports.jsxs("p", {
22137
22254
  className: "text-xs mt-2 px-5 text-center",
22138
22255
  style: {
@@ -23358,7 +23475,7 @@
23358
23475
  isRtl: isRtl,
23359
23476
  fontFamily: fontFamily,
23360
23477
  provideCitations: false,
23361
- onButtonClick: value => onCardAction?.(String(value ?? ""))
23478
+ onButtonClick: (value, _label, extra) => onCardAction?.(String(value ?? ""), extra)
23362
23479
  })
23363
23480
  })
23364
23481
  }, card)
@@ -23934,6 +24051,7 @@
23934
24051
  onToggleVoicePause,
23935
24052
  voiceLevelSource,
23936
24053
  onBidiTextMessage,
24054
+ onBidiVerificationComplete,
23937
24055
  disclaimerEnabled = false,
23938
24056
  disclaimerText,
23939
24057
  disclaimerPosition = "top",
@@ -24229,11 +24347,13 @@
24229
24347
  // While a voice call is live the body becomes the call screen; when it
24230
24348
  // ends the chat returns with the call's lines kept as messages.
24231
24349
  const showCallView = isVoiceSessionActive;
24232
- // A card button on the call screen: a web address (a payment or check-in
24233
- // link) opens in a new tab, anything else is the caller's next turn.
24234
- const handleVoiceCardAction = reactExports.useCallback(value => {
24235
- if (!openCardLink(value)) onBidiTextMessage?.(value);
24236
- }, [onBidiTextMessage]);
24350
+ // A card button on the call screen: a verify card's confirmed code resumes
24351
+ // the held call over the call, a web address (a payment or check-in link)
24352
+ // opens in a new tab, anything else is the caller's next turn.
24353
+ const handleVoiceCardAction = reactExports.useCallback((value, extra) => routeCallCardAction(value, extra, {
24354
+ resume: onBidiVerificationComplete,
24355
+ say: onBidiTextMessage
24356
+ }), [onBidiTextMessage, onBidiVerificationComplete]);
24237
24357
  // EV-3813: voiceError is an i18n code (lib/voiceErrors.js), resolved the
24238
24358
  // way ChatInput resolves it.
24239
24359
  const voiceErrorText = voiceError ? t(voiceError) === voiceError ? t("voiceUnavailable") : t(voiceError) : null;
@@ -25277,7 +25397,7 @@
25277
25397
  * value by its own test (that constant sat at 0.1.113 while this package was
25278
25398
  * at 0.2.2 precisely because nothing enforced it - EV-2431).
25279
25399
  */
25280
- const WIDGET_VERSION = '0.2.50';
25400
+ const WIDGET_VERSION = '0.2.52';
25281
25401
 
25282
25402
  /**
25283
25403
  * API utility functions
@@ -25703,6 +25823,7 @@
25703
25823
  voiceConclusionForCsat,
25704
25824
  handleVoiceToggle,
25705
25825
  sendBidiTextMessage,
25826
+ sendBidiVerificationComplete,
25706
25827
  bidiMessages,
25707
25828
  isVoicePaused,
25708
25829
  toggleVoicePause,
@@ -25931,6 +26052,7 @@
25931
26052
  onToggleVoicePause: toggleVoicePause,
25932
26053
  voiceLevelSource: voiceLevelSource,
25933
26054
  onBidiTextMessage: sendBidiTextMessage,
26055
+ onBidiVerificationComplete: sendBidiVerificationComplete,
25934
26056
  disclaimerEnabled: widgetConfig.disclaimerEnabled,
25935
26057
  disclaimerText: widgetConfig.disclaimerText,
25936
26058
  disclaimerPosition: widgetConfig.disclaimerPosition,