@omniloy/sofia-sdk 0.0.9 → 0.0.11
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/README.md +84 -73
- package/dist/legacy/webcomponents.es.js +734 -235
- package/dist/legacy/webcomponents.umd.js +734 -235
- package/dist/tailor/webcomponents.es.js +747 -233
- package/dist/tailor/webcomponents.umd.js +747 -233
- package/dist/webcomponents.es.js +742 -231
- package/dist/webcomponents.umd.js +742 -231
- package/package.json +7 -2
|
@@ -12411,11 +12411,9 @@ const Collapse$4 = "طي";
|
|
|
12411
12411
|
const Multilingual$4 = "متعدد اللغات";
|
|
12412
12412
|
const Arabic$4 = "عربي";
|
|
12413
12413
|
const Tamil$4 = "التاميل";
|
|
12414
|
-
const Malayalam$4 = "المالايالامية";
|
|
12415
12414
|
const Telugu$4 = "التيلجو";
|
|
12416
12415
|
const Kannada$4 = "الكانادا";
|
|
12417
12416
|
const Hindi$4 = "الهندية";
|
|
12418
|
-
const Malay$4 = "لغة الملايو";
|
|
12419
12417
|
const Thai$4 = "التايلاندية";
|
|
12420
12418
|
const Filipino$4 = "فلبينية";
|
|
12421
12419
|
const English$4 = "الإنجليزية";
|
|
@@ -12427,6 +12425,9 @@ const Japanese$4 = "اليابانية";
|
|
|
12427
12425
|
const Dictionary$5 = "قاموس";
|
|
12428
12426
|
const Copilot$4 = "امساعد الطيار";
|
|
12429
12427
|
const Reasoning$4 = "التفكير";
|
|
12428
|
+
const Language$5 = "اللغة";
|
|
12429
|
+
const Chat$6 = "الدردشة";
|
|
12430
|
+
const Sources$4 = "المصادر";
|
|
12430
12431
|
const ar = {
|
|
12431
12432
|
Add: Add$4,
|
|
12432
12433
|
"Ask Omniscribe assistant": "اسأل مساعد أومنيسكريب",
|
|
@@ -12440,6 +12441,7 @@ const ar = {
|
|
|
12440
12441
|
"Error searching for devices": "حدث خطأ أثناء البحث عن الأجهزة",
|
|
12441
12442
|
"Fill out report": "املأ التقرير",
|
|
12442
12443
|
"Generate report": "إنشاء تقرير",
|
|
12444
|
+
"Generating patient summary": "مرحباً! امنحني بضع ثوان لإنشاء ملخص المريض.",
|
|
12443
12445
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "مرحباً يا دكتور، أنا مساعدك الشخصي. كيف يمكنني مساعدتك اليوم؟",
|
|
12444
12446
|
History: History$4,
|
|
12445
12447
|
"I'd like to see a summary of the patient's chart": "أود أن أرى ملخصًا لمخطط المريض",
|
|
@@ -12475,7 +12477,6 @@ const ar = {
|
|
|
12475
12477
|
"Wrong Word": "كلمة خاطئة",
|
|
12476
12478
|
"Wrong Words": "كلمات خاطئة",
|
|
12477
12479
|
"You must grant microphone permissions": "يجب منح أذونات الميكروفون",
|
|
12478
|
-
"See list of sources": "عرض قائمة المصادر",
|
|
12479
12480
|
"My source library": "مكتبة المصادر",
|
|
12480
12481
|
"Specify the sources and resources that should guide the AI's responses.": "تشير إلى المصادر والموارد التي ينبغي أن تُوجِّه استجابات الذكاء الاصطناعي.",
|
|
12481
12482
|
"My specialty": "تخصصي",
|
|
@@ -12538,12 +12539,11 @@ const ar = {
|
|
|
12538
12539
|
Multilingual: Multilingual$4,
|
|
12539
12540
|
Arabic: Arabic$4,
|
|
12540
12541
|
Tamil: Tamil$4,
|
|
12541
|
-
Malayalam:
|
|
12542
|
+
"Malay / Malayalam": "لغة الملايو / المالايالامية",
|
|
12542
12543
|
Telugu: Telugu$4,
|
|
12543
12544
|
Kannada: Kannada$4,
|
|
12544
12545
|
Hindi: Hindi$4,
|
|
12545
12546
|
"Bahasa Indonesia": "البهاسا الاندونيسية",
|
|
12546
|
-
Malay: Malay$4,
|
|
12547
12547
|
Thai: Thai$4,
|
|
12548
12548
|
Filipino: Filipino$4,
|
|
12549
12549
|
English: English$4,
|
|
@@ -12570,15 +12570,17 @@ const ar = {
|
|
|
12570
12570
|
"SofIA Scribe": "سوفيا سكرايب",
|
|
12571
12571
|
"Microphone options": "خيارات الميكروفون",
|
|
12572
12572
|
"Select the input microphone": "حدد ميكروفون الإدخال",
|
|
12573
|
-
"Select the input microphone to ensure proper functioning
|
|
12574
|
-
|
|
12575
|
-
"Select the
|
|
12573
|
+
"Select the input microphone to ensure proper functioning": "حدد ميكروفون الإدخال لضمان التشغيل السليم",
|
|
12574
|
+
Language: Language$5,
|
|
12575
|
+
"Select the language options.": "حدد خيارات اللغة.",
|
|
12576
12576
|
"Select the interface language and the language in which the clinical note is generated": "حدد لغة الواجهة واللغة التي يتم بها إنشاء الملاحظة السريرية.",
|
|
12577
12577
|
"Select the language for audio transcription": "حدد اللغة التي سيتم بها نسخ المحادثة مع المريض.",
|
|
12578
12578
|
"Clinical note template": "قالب الملاحظة السريرية",
|
|
12579
|
-
"Customize the clinical note
|
|
12579
|
+
"Customize the clinical note depending on the report you are filling out.": "خصص الملاحظة السريرية حسب التقرير الذي تقوم بملؤه.",
|
|
12580
12580
|
"Clinical dictionary": "قاموس سريري",
|
|
12581
12581
|
"Customize clinical language and medication format": "خصص اللغة السريرية وتنسيق الأدوية.",
|
|
12582
|
+
Chat: Chat$6,
|
|
12583
|
+
"Customize the patient summary and chat sources.": "خصص ملخص المريض ومصادر الدردشة.",
|
|
12582
12584
|
"No custom words added yet": "لا توجد كلمات مخصصة مضافة بعد",
|
|
12583
12585
|
"Custom version": "نسخة مخصصة",
|
|
12584
12586
|
"Word or phrase (e.g: ibuprofeno)": "كلمة أو عبارة (على سبيل المثال: ibuprofeno)",
|
|
@@ -12589,7 +12591,19 @@ const ar = {
|
|
|
12589
12591
|
"Customize how to generate section": 'خصص كيفية توليد قسم "{sectionName}". مثال: "دائماً أضف التاريخ" أو "استخدم مصطلحات تقنية"',
|
|
12590
12592
|
"Save changes": "حفظ التغييرات",
|
|
12591
12593
|
"{count} characters": "{count} حرف",
|
|
12592
|
-
"Sending...": "جارٍ الإرسال..."
|
|
12594
|
+
"Sending...": "جارٍ الإرسال...",
|
|
12595
|
+
"Show patient summary first": "إظهار ملخص المريض أولاً",
|
|
12596
|
+
"Patient summary customization": "تخصيص ملخص المريض",
|
|
12597
|
+
Sources: Sources$4,
|
|
12598
|
+
"Select the sources you want the AI to use for reasoning": "اختر المصادر التي تريد أن تستخدمها الذكي الاصطناعي للتفكير",
|
|
12599
|
+
"Don't leave out relevant information...": "لا تترك المعلومات ذات الصلة...",
|
|
12600
|
+
"File is too large. Maximum size is 5MB": "الملف كبير جداً. الحد الأقصى للحجم هو 5 ميجابايت",
|
|
12601
|
+
"Maximum number of files is 5": "العدد الأقصى للملفات هو 5",
|
|
12602
|
+
"Attach file": "إرفاق ملف",
|
|
12603
|
+
"Error processing file": "خطأ في معالجة الملف",
|
|
12604
|
+
"Unsupported file format": "تنسيق الملف غير مدعوم",
|
|
12605
|
+
"{count} documents": "{count} مستندات",
|
|
12606
|
+
"{count} images": "{count} صور"
|
|
12593
12607
|
};
|
|
12594
12608
|
const Add$3 = "Add";
|
|
12595
12609
|
const Configuration$4 = "Configuration";
|
|
@@ -12620,11 +12634,9 @@ const Collapse$3 = "Collapse";
|
|
|
12620
12634
|
const Multilingual$3 = "Multilingual";
|
|
12621
12635
|
const Arabic$3 = "Arabic";
|
|
12622
12636
|
const Tamil$3 = "Tamil";
|
|
12623
|
-
const Malayalam$3 = "Malayalam";
|
|
12624
12637
|
const Telugu$3 = "Telugu";
|
|
12625
12638
|
const Kannada$3 = "Kannada";
|
|
12626
12639
|
const Hindi$3 = "Hindi";
|
|
12627
|
-
const Malay$3 = "Malay";
|
|
12628
12640
|
const Thai$3 = "Thai";
|
|
12629
12641
|
const Filipino$3 = "Filipino";
|
|
12630
12642
|
const English$3 = "English";
|
|
@@ -12636,6 +12648,11 @@ const Japanese$3 = "Japanese";
|
|
|
12636
12648
|
const Dictionary$4 = "Dictionary";
|
|
12637
12649
|
const Copilot$3 = "Copilot";
|
|
12638
12650
|
const Reasoning$3 = "Reasoning";
|
|
12651
|
+
const Language$4 = "Language";
|
|
12652
|
+
const Chat$5 = "Chat";
|
|
12653
|
+
const Sources$3 = "Sources";
|
|
12654
|
+
const Enabled$1 = "Enabled";
|
|
12655
|
+
const Disabled$1 = "Disabled";
|
|
12639
12656
|
const en = {
|
|
12640
12657
|
Add: Add$3,
|
|
12641
12658
|
"Ask Omniscribe assistant": "Ask Omniscribe assistant",
|
|
@@ -12649,6 +12666,7 @@ const en = {
|
|
|
12649
12666
|
"Error searching for devices": "Error searching for devices",
|
|
12650
12667
|
"Fill out report": "Fill out report",
|
|
12651
12668
|
"Generate report": "Generate report",
|
|
12669
|
+
"Generating patient summary": "Hello! Give me a few seconds to generate the patient summary.",
|
|
12652
12670
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "Hello Doctor, I'm your personal assistant. How can I help you today?",
|
|
12653
12671
|
History: History$3,
|
|
12654
12672
|
"I'd like to see a summary of the patient's chart": "I'd like to see a summary of the patient's chart",
|
|
@@ -12684,7 +12702,6 @@ const en = {
|
|
|
12684
12702
|
"Wrong Word": "Wrong Word",
|
|
12685
12703
|
"Wrong Words": "Wrong Words",
|
|
12686
12704
|
"You must grant microphone permissions": "You must grant microphone permissions",
|
|
12687
|
-
"See list of sources": "See list of sources",
|
|
12688
12705
|
"My source library": "My source library",
|
|
12689
12706
|
"Specify the sources and resources that should guide the AI's responses.": "Specify the sources and resources that should guide the AI's responses.",
|
|
12690
12707
|
"My specialty": "My specialty",
|
|
@@ -12747,12 +12764,11 @@ const en = {
|
|
|
12747
12764
|
Multilingual: Multilingual$3,
|
|
12748
12765
|
Arabic: Arabic$3,
|
|
12749
12766
|
Tamil: Tamil$3,
|
|
12750
|
-
Malayalam: Malayalam
|
|
12767
|
+
"Malay / Malayalam": "Malay / Malayalam",
|
|
12751
12768
|
Telugu: Telugu$3,
|
|
12752
12769
|
Kannada: Kannada$3,
|
|
12753
12770
|
Hindi: Hindi$3,
|
|
12754
12771
|
"Bahasa Indonesia": "Bahasa Indonesia",
|
|
12755
|
-
Malay: Malay$3,
|
|
12756
12772
|
Thai: Thai$3,
|
|
12757
12773
|
Filipino: Filipino$3,
|
|
12758
12774
|
English: English$3,
|
|
@@ -12779,15 +12795,17 @@ const en = {
|
|
|
12779
12795
|
"SofIA Scribe": "SofIA Scribe",
|
|
12780
12796
|
"Microphone options": "Microphone options",
|
|
12781
12797
|
"Select the input microphone": "Select the input microphone",
|
|
12782
|
-
"Select the input microphone to ensure proper functioning
|
|
12783
|
-
|
|
12784
|
-
"Select the
|
|
12798
|
+
"Select the input microphone to ensure proper functioning": "Select the input microphone to ensure proper functioning.",
|
|
12799
|
+
Language: Language$4,
|
|
12800
|
+
"Select the language options.": "Select the language options.",
|
|
12785
12801
|
"Select the interface language and the language in which the clinical note is generated": "Select the interface language and the language in which the clinical note is generated.",
|
|
12786
12802
|
"Select the language for audio transcription": "Select the language for audio transcription.",
|
|
12787
12803
|
"Clinical note template": "Clinical note template",
|
|
12788
|
-
"Customize the clinical note
|
|
12804
|
+
"Customize the clinical note depending on the report you are filling out.": "Customize the clinical note depending on the report you are filling out.",
|
|
12789
12805
|
"Clinical dictionary": "Clinical dictionary",
|
|
12790
12806
|
"Customize clinical language and medication format": "Customize clinical language and medication format.",
|
|
12807
|
+
Chat: Chat$5,
|
|
12808
|
+
"Customize the patient summary and chat sources.": "Customize the patient summary and chat sources.",
|
|
12791
12809
|
"No custom words added yet": "No custom words added yet",
|
|
12792
12810
|
"Custom version": "Custom version",
|
|
12793
12811
|
"Word or phrase (e.g: ibuprofen)": "Word or phrase (e.g: ibuprofen)",
|
|
@@ -12799,7 +12817,21 @@ const en = {
|
|
|
12799
12817
|
"Customize how to generate section": 'Customize how to generate the "{sectionName}" section. Example: "Always include date" or "Use technical terminology"',
|
|
12800
12818
|
"Save changes": "Save changes",
|
|
12801
12819
|
"{count} characters": "{count} characters",
|
|
12802
|
-
"Sending...": "Sending..."
|
|
12820
|
+
"Sending...": "Sending...",
|
|
12821
|
+
"Show patient summary first": "Show patient summary first",
|
|
12822
|
+
"Patient summary customization": "Patient summary customization",
|
|
12823
|
+
Sources: Sources$3,
|
|
12824
|
+
"Select the sources you want the AI to use for reasoning": "Select the sources you want the AI to use for reasoning",
|
|
12825
|
+
"Don't leave out relevant information...": "Don't leave out relevant information...",
|
|
12826
|
+
Enabled: Enabled$1,
|
|
12827
|
+
Disabled: Disabled$1,
|
|
12828
|
+
"File is too large. Maximum size is 5MB": "File is too large. Maximum size is 5MB",
|
|
12829
|
+
"Maximum number of files is 5": "Maximum number of files is 5",
|
|
12830
|
+
"Attach file": "Attach file",
|
|
12831
|
+
"Error processing file": "Error processing file",
|
|
12832
|
+
"Unsupported file format": "Unsupported file format",
|
|
12833
|
+
"{count} documents": "{count} documents",
|
|
12834
|
+
"{count} images": "{count} images"
|
|
12803
12835
|
};
|
|
12804
12836
|
const Add$2 = "Añadir";
|
|
12805
12837
|
const Configuration$3 = "Configuración";
|
|
@@ -12830,11 +12862,9 @@ const Collapse$2 = "Cerrar";
|
|
|
12830
12862
|
const Multilingual$2 = "Plurilingüe";
|
|
12831
12863
|
const Arabic$2 = "Árabe";
|
|
12832
12864
|
const Tamil$2 = "Tamil";
|
|
12833
|
-
const Malayalam$2 = "Malayalam";
|
|
12834
12865
|
const Telugu$2 = "Telugu";
|
|
12835
12866
|
const Kannada$2 = "Canarés";
|
|
12836
12867
|
const Hindi$2 = "Hindi";
|
|
12837
|
-
const Malay$2 = "Malayo";
|
|
12838
12868
|
const Thai$2 = "Tailandés";
|
|
12839
12869
|
const Filipino$2 = "Filipino";
|
|
12840
12870
|
const English$2 = "Inglés";
|
|
@@ -12846,6 +12876,11 @@ const Japanese$2 = "Japonés";
|
|
|
12846
12876
|
const Dictionary$3 = "Diccionario";
|
|
12847
12877
|
const Copilot$2 = "Copilot";
|
|
12848
12878
|
const Reasoning$2 = "Razonamiento";
|
|
12879
|
+
const Language$3 = "Idioma";
|
|
12880
|
+
const Chat$4 = "Chat";
|
|
12881
|
+
const Sources$2 = "Fuentes";
|
|
12882
|
+
const Enabled = "Activado";
|
|
12883
|
+
const Disabled = "Desactivado";
|
|
12849
12884
|
const es = {
|
|
12850
12885
|
Add: Add$2,
|
|
12851
12886
|
"Ask Omniscribe assistant": "Pregunta al asistente Omniscribe",
|
|
@@ -12859,6 +12894,7 @@ const es = {
|
|
|
12859
12894
|
"Error searching for devices": "Error al buscar dispositivos",
|
|
12860
12895
|
"Fill out report": "Rellenar informe",
|
|
12861
12896
|
"Generate report": "Generar informe",
|
|
12897
|
+
"Generating patient summary": "¡Hola! Dame unos segundos para generar el resumen del paciente.",
|
|
12862
12898
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "Hola doctor, soy su asistente personal. ¿En qué le puedo ayudar hoy?",
|
|
12863
12899
|
History: History$2,
|
|
12864
12900
|
"I'd like to see a summary of the patient's chart": "Quiero ver el resumen de la ficha del paciente",
|
|
@@ -12894,7 +12930,6 @@ const es = {
|
|
|
12894
12930
|
"Wrong Word": "Palabra Incorrecta",
|
|
12895
12931
|
"Wrong Words": "Palabras Incorrectas",
|
|
12896
12932
|
"You must grant microphone permissions": "Debes conceder permisos de micrófono",
|
|
12897
|
-
"See list of sources": "Ver Lista de fuentes",
|
|
12898
12933
|
"My source library": "Mi librería de fuentes",
|
|
12899
12934
|
"Specify the sources and resources that should guide the AI's responses.": "Indica las fuentes y recursos que deben orientar las respuestas de la IA.",
|
|
12900
12935
|
"My specialty": "Mi especialidad",
|
|
@@ -12957,12 +12992,11 @@ const es = {
|
|
|
12957
12992
|
Multilingual: Multilingual$2,
|
|
12958
12993
|
Arabic: Arabic$2,
|
|
12959
12994
|
Tamil: Tamil$2,
|
|
12960
|
-
Malayalam: Malayalam
|
|
12995
|
+
"Malay / Malayalam": "Malayo / Malayalam",
|
|
12961
12996
|
Telugu: Telugu$2,
|
|
12962
12997
|
Kannada: Kannada$2,
|
|
12963
12998
|
Hindi: Hindi$2,
|
|
12964
12999
|
"Bahasa Indonesia": "Bahasa Indonesia",
|
|
12965
|
-
Malay: Malay$2,
|
|
12966
13000
|
Thai: Thai$2,
|
|
12967
13001
|
Filipino: Filipino$2,
|
|
12968
13002
|
English: English$2,
|
|
@@ -12989,15 +13023,17 @@ const es = {
|
|
|
12989
13023
|
"SofIA Scribe": "SofIA Escriba",
|
|
12990
13024
|
"Microphone options": "Opciones de micrófono",
|
|
12991
13025
|
"Select the input microphone": "Selecciona el micrófono de entrada",
|
|
12992
|
-
"Select the input microphone to ensure proper functioning
|
|
12993
|
-
|
|
12994
|
-
"Select the
|
|
13026
|
+
"Select the input microphone to ensure proper functioning": "Seleccione el micrófono de entrada para asegurar el buen funcionamiento.",
|
|
13027
|
+
Language: Language$3,
|
|
13028
|
+
"Select the language options.": "Seleccione las opciones de idioma.",
|
|
12995
13029
|
"Select the interface language and the language in which the clinical note is generated": "Selecciona el idioma de la interfaz y en el que se genera la nota clínica.",
|
|
12996
13030
|
"Select the language for audio transcription": "Selecciona el idioma en el que grabará la conversación con el paciente.",
|
|
12997
13031
|
"Clinical note template": "Plantilla de nota clínica",
|
|
12998
|
-
"Customize the clinical note
|
|
13032
|
+
"Customize the clinical note depending on the report you are filling out.": "Personalice la nota clínica dependiendo del informe que esté rellenando.",
|
|
12999
13033
|
"Clinical dictionary": "Diccionario clínico",
|
|
13000
|
-
"Customize clinical language and medication format": "
|
|
13034
|
+
"Customize clinical language and medication format": "Personalice el lenguaje clínico y el formato de los medicamentos.",
|
|
13035
|
+
Chat: Chat$4,
|
|
13036
|
+
"Customize the patient summary and chat sources.": "Personalice el resumen del paciente y las fuentes del chat.",
|
|
13001
13037
|
"No custom words added yet": "No se han añadido palabras personalizadas aún",
|
|
13002
13038
|
"Custom version": "Versión personalizada",
|
|
13003
13039
|
"Word or phrase (e.g: ibuprofeno)": "Palabra o frase (ej: ibuprofeno)",
|
|
@@ -13009,7 +13045,21 @@ const es = {
|
|
|
13009
13045
|
"Customize how to generate section": 'Personaliza cómo generar la sección "{sectionName}". Ejemplo: "Incluye siempre la fecha" o "Usa terminología técnica"',
|
|
13010
13046
|
"Save changes": "Guardar cambios",
|
|
13011
13047
|
"{count} characters": "{count} caracteres",
|
|
13012
|
-
"Sending...": "Enviando..."
|
|
13048
|
+
"Sending...": "Enviando...",
|
|
13049
|
+
"Show patient summary first": "Lo primero que quiero ver es el resumen del paciente.",
|
|
13050
|
+
"Patient summary customization": "Personalización del resumen del paciente",
|
|
13051
|
+
Sources: Sources$2,
|
|
13052
|
+
"Select the sources you want the AI to use for reasoning": "Seleccione las fuentes que quiera que la IA use para razonar",
|
|
13053
|
+
"Don't leave out relevant information...": "No te dejes información relevante...",
|
|
13054
|
+
Enabled,
|
|
13055
|
+
Disabled,
|
|
13056
|
+
"File is too large. Maximum size is 5MB": "El archivo es muy grande. El tamaño máximo es 5MB",
|
|
13057
|
+
"Maximum number of files is 5": "El número máximo de archivos es 5",
|
|
13058
|
+
"Attach file": "Adjuntar archivo",
|
|
13059
|
+
"Error processing file": "Ha habido un error al procesar el fichero",
|
|
13060
|
+
"Unsupported file format": "Fichero no soportado",
|
|
13061
|
+
"{count} documents": "{count} documentos",
|
|
13062
|
+
"{count} images": "{count} imágenes"
|
|
13013
13063
|
};
|
|
13014
13064
|
const Add$1 = "जोड़ें";
|
|
13015
13065
|
const Configuration$2 = "कॉन्फ़िगरेशन";
|
|
@@ -13040,11 +13090,9 @@ const Collapse$1 = "संक्षिप्त करें";
|
|
|
13040
13090
|
const Multilingual$1 = "बहुभाषी";
|
|
13041
13091
|
const Arabic$1 = "अरबी";
|
|
13042
13092
|
const Tamil$1 = "तमिल";
|
|
13043
|
-
const Malayalam$1 = "मलयालम";
|
|
13044
13093
|
const Telugu$1 = "तेलुगु";
|
|
13045
13094
|
const Kannada$1 = "कन्नड़";
|
|
13046
13095
|
const Hindi$1 = "हिंदी";
|
|
13047
|
-
const Malay$1 = "मलय";
|
|
13048
13096
|
const Thai$1 = "थाई";
|
|
13049
13097
|
const Filipino$1 = "फिलिपिनो";
|
|
13050
13098
|
const English$1 = "अंग्रेज़ी";
|
|
@@ -13056,6 +13104,9 @@ const Japanese$1 = "जापानी";
|
|
|
13056
13104
|
const Dictionary$2 = "शब्दकोश";
|
|
13057
13105
|
const Copilot$1 = "कोपायलट";
|
|
13058
13106
|
const Reasoning$1 = "तर्क";
|
|
13107
|
+
const Language$2 = "भाषा";
|
|
13108
|
+
const Chat$3 = "चैट";
|
|
13109
|
+
const Sources$1 = "स्रोत";
|
|
13059
13110
|
const hi = {
|
|
13060
13111
|
Add: Add$1,
|
|
13061
13112
|
"Ask Omniscribe assistant": "Omniscribe सहायक से पूछें",
|
|
@@ -13069,6 +13120,7 @@ const hi = {
|
|
|
13069
13120
|
"Error searching for devices": "उपकरण खोजने में त्रुटि",
|
|
13070
13121
|
"Fill out report": "रिपोर्ट भरें",
|
|
13071
13122
|
"Generate report": "रिपोर्ट बनाएं",
|
|
13123
|
+
"Generating patient summary": "नमस्ते! मुझे रोगी का सारांश तैयार करने के लिए कुछ सेकंड दें।",
|
|
13072
13124
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "नमस्ते डॉक्टर, मैं आपका निजी सहायक हूँ। आज मैं आपकी कैसे मदद कर सकता हूँ?",
|
|
13073
13125
|
History: History$1,
|
|
13074
13126
|
"I'd like to see a summary of the patient's chart": "मैं रोगी के चार्ट का सारांश देखना चाहूंगा",
|
|
@@ -13104,7 +13156,6 @@ const hi = {
|
|
|
13104
13156
|
"Wrong Word": "गलत शब्द",
|
|
13105
13157
|
"Wrong Words": "गलत शब्द",
|
|
13106
13158
|
"You must grant microphone permissions": "आपको माइक्रोफ़ोन की अनुमति देनी होगी",
|
|
13107
|
-
"See list of sources": "स्रोतों की सूची देखें",
|
|
13108
13159
|
"My source library": "मेरी स्रोत लाइब्रेरी",
|
|
13109
13160
|
"Specify the sources and resources that should guide the AI's responses.": "उन स्रोतों और संसाधनों को निर्दिष्ट करें जो AI की प्रतिक्रियाओं का मार्गदर्शन करें।",
|
|
13110
13161
|
"My specialty": "मेरी विशेषज्ञता",
|
|
@@ -13167,12 +13218,11 @@ const hi = {
|
|
|
13167
13218
|
Multilingual: Multilingual$1,
|
|
13168
13219
|
Arabic: Arabic$1,
|
|
13169
13220
|
Tamil: Tamil$1,
|
|
13170
|
-
Malayalam:
|
|
13221
|
+
"Malay / Malayalam": "मलय / मलयालम",
|
|
13171
13222
|
Telugu: Telugu$1,
|
|
13172
13223
|
Kannada: Kannada$1,
|
|
13173
13224
|
Hindi: Hindi$1,
|
|
13174
13225
|
"Bahasa Indonesia": "बहासा इंडोनेशिया",
|
|
13175
|
-
Malay: Malay$1,
|
|
13176
13226
|
Thai: Thai$1,
|
|
13177
13227
|
Filipino: Filipino$1,
|
|
13178
13228
|
English: English$1,
|
|
@@ -13199,15 +13249,17 @@ const hi = {
|
|
|
13199
13249
|
"SofIA Scribe": "SofIA Scribe",
|
|
13200
13250
|
"Microphone options": "माइक्रोफोन विकल्प",
|
|
13201
13251
|
"Select the input microphone": "इनपुट माइक्रोफोन का चयन करें",
|
|
13202
|
-
"Select the input microphone to ensure proper functioning
|
|
13203
|
-
|
|
13204
|
-
"Select the
|
|
13252
|
+
"Select the input microphone to ensure proper functioning": "समुचित कार्य को सुनिश्चित करने के लिए इनपुट माइक्रोफोन का चयन करें",
|
|
13253
|
+
Language: Language$2,
|
|
13254
|
+
"Select the language options.": "भाषा विकल्प चुनें।",
|
|
13205
13255
|
"Select the interface language and the language in which the clinical note is generated": "इंटरफ़ेस भाषा और उस भाषा का चयन करें जिसमें नैदानिक नोट उत्पन्न होता है।",
|
|
13206
13256
|
"Select the language for audio transcription": "ऑडियो प्रतिलेखन के लिए भाषा का चयन करें।",
|
|
13207
13257
|
"Clinical note template": "नैदानिक नोट टेम्पलेट",
|
|
13208
|
-
"Customize the clinical note
|
|
13258
|
+
"Customize the clinical note depending on the report you are filling out.": "आप जो रिपोर्ट भर रहे हैं, उसके आधार पर नैदानिक नोट को अनुकूलित करें।",
|
|
13209
13259
|
"Clinical dictionary": "नैदानिक शब्दकोश",
|
|
13210
13260
|
"Customize clinical language and medication format": "नैदानिक भाषा और दवा प्रारूप को अनुकूलित करें।",
|
|
13261
|
+
Chat: Chat$3,
|
|
13262
|
+
"Customize the patient summary and chat sources.": "रोगी सारांश और चैट स्रोतों को अनुकूलित करें।",
|
|
13211
13263
|
"No custom words added yet": "अभी तक कोई कस्टम शब्द नहीं जोड़ा गया है",
|
|
13212
13264
|
"Custom version": "कस्टम संस्करण",
|
|
13213
13265
|
"Word or phrase (e.g: ibuprofen)": "शब्द या वाक्यांश (जैसे: ibuprofen)",
|
|
@@ -13219,7 +13271,19 @@ const hi = {
|
|
|
13219
13271
|
"Customize how to generate section": '"{sectionName}" अनुभाग कैसे उत्पन्न करें, इसे अनुकूलित करें। उदाहरण: "हमेशा तारीख शामिल करें" या "तकनीकी शब्दावली का उपयोग करें"',
|
|
13220
13272
|
"Save changes": "परिवर्तन सहेजें",
|
|
13221
13273
|
"{count} characters": "{count} वर्ण",
|
|
13222
|
-
"Sending...": "भेजा जा रहा है..."
|
|
13274
|
+
"Sending...": "भेजा जा रहा है...",
|
|
13275
|
+
"Show patient summary first": "पहले रोगी सारांश दिखाएं",
|
|
13276
|
+
"Patient summary customization": "रोगी सारांश अनुकूलन",
|
|
13277
|
+
Sources: Sources$1,
|
|
13278
|
+
"Select the sources you want the AI to use for reasoning": "वे स्रोत चुनें जिन्हें आप चाहते हैं कि AI तर्क के लिए उपयोग करे",
|
|
13279
|
+
"Don't leave out relevant information...": "प्रासंगिक जानकारी को न छोड़ें...",
|
|
13280
|
+
"File is too large. Maximum size is 5MB": "फ़ाइल बहुत बड़ी है। अधिकतम आकार 5MB है",
|
|
13281
|
+
"Maximum number of files is 5": "फ़ाइलों की अधिकतम संख्या 5 है",
|
|
13282
|
+
"Attach file": "फ़ाइल संलग्न करें",
|
|
13283
|
+
"Error processing file": "फ़ाइल प्रोसेसिंग में त्रुटि",
|
|
13284
|
+
"Unsupported file format": "असमर्थित फ़ाइल प्रारूप",
|
|
13285
|
+
"{count} documents": "{count} दस्तावेज़",
|
|
13286
|
+
"{count} images": "{count} चित्र"
|
|
13223
13287
|
};
|
|
13224
13288
|
const Add = "Tambahkan";
|
|
13225
13289
|
const Configuration$1 = "Konfigurasi";
|
|
@@ -13250,11 +13314,9 @@ const Collapse = "Ciutkan";
|
|
|
13250
13314
|
const Multilingual = "Multibahasa";
|
|
13251
13315
|
const Arabic = "Arab";
|
|
13252
13316
|
const Tamil = "Tamil";
|
|
13253
|
-
const Malayalam = "Malayalam";
|
|
13254
13317
|
const Telugu = "Telugu";
|
|
13255
13318
|
const Kannada = "Kannada";
|
|
13256
13319
|
const Hindi = "Hindi";
|
|
13257
|
-
const Malay = "Melayu";
|
|
13258
13320
|
const Thai = "Thai";
|
|
13259
13321
|
const Filipino = "Filipina";
|
|
13260
13322
|
const English = "Bahasa Inggris";
|
|
@@ -13266,6 +13328,9 @@ const Japanese = "Jepang";
|
|
|
13266
13328
|
const Dictionary$1 = "Kamus";
|
|
13267
13329
|
const Copilot = "Copilot";
|
|
13268
13330
|
const Reasoning = "Penalaran";
|
|
13331
|
+
const Language$1 = "Bahasa";
|
|
13332
|
+
const Chat$2 = "Chat";
|
|
13333
|
+
const Sources = "Sumber";
|
|
13269
13334
|
const id = {
|
|
13270
13335
|
Add,
|
|
13271
13336
|
"Ask Omniscribe assistant": "Tanya asisten Omniscribe",
|
|
@@ -13279,6 +13344,7 @@ const id = {
|
|
|
13279
13344
|
"Error searching for devices": "Kesalahan saat mencari perangkat",
|
|
13280
13345
|
"Fill out report": "Isi laporan",
|
|
13281
13346
|
"Generate report": "Menghasilkan laporan",
|
|
13347
|
+
"Generating patient summary": "Halo! Beri saya beberapa detik untuk membuat ringkasan pasien.",
|
|
13282
13348
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "Halo Dokter, saya asisten pribadi Anda. Bagaimana saya bisa membantu Anda hari ini?",
|
|
13283
13349
|
History,
|
|
13284
13350
|
"I'd like to see a summary of the patient's chart": "Saya ingin melihat ringkasan grafik pasien",
|
|
@@ -13314,7 +13380,6 @@ const id = {
|
|
|
13314
13380
|
"Wrong Word": "Kata yang salah",
|
|
13315
13381
|
"Wrong Words": "Kata-kata yang salah",
|
|
13316
13382
|
"You must grant microphone permissions": "Anda harus memberikan izin mikrofon",
|
|
13317
|
-
"See list of sources": "Lihat Daftar Sumber",
|
|
13318
13383
|
"My source library": "Perpustakaan Sumber Saya",
|
|
13319
13384
|
"Specify the sources and resources that should guide the AI's responses.": "Menunjukkan sumber dan sumber daya yang seharusnya memandu respons AI.",
|
|
13320
13385
|
"My specialty": "Spesialisasi Saya",
|
|
@@ -13377,12 +13442,11 @@ const id = {
|
|
|
13377
13442
|
Multilingual,
|
|
13378
13443
|
Arabic,
|
|
13379
13444
|
Tamil,
|
|
13380
|
-
Malayalam,
|
|
13445
|
+
"Malay / Malayalam": "Melayu / Malayalam",
|
|
13381
13446
|
Telugu,
|
|
13382
13447
|
Kannada,
|
|
13383
13448
|
Hindi,
|
|
13384
13449
|
"Bahasa Indonesia": "Bahasa Indonesia",
|
|
13385
|
-
Malay,
|
|
13386
13450
|
Thai,
|
|
13387
13451
|
Filipino,
|
|
13388
13452
|
English,
|
|
@@ -13409,15 +13473,17 @@ const id = {
|
|
|
13409
13473
|
"SofIA Scribe": "SofIA Juru Tulis",
|
|
13410
13474
|
"Microphone options": "Opsi mikrofon",
|
|
13411
13475
|
"Select the input microphone": "Pilih mikrofon input",
|
|
13412
|
-
"Select the input microphone to ensure proper functioning
|
|
13413
|
-
|
|
13414
|
-
"Select the
|
|
13476
|
+
"Select the input microphone to ensure proper functioning": "Pilih mikrofon input untuk memastikan fungsi yang tepat.",
|
|
13477
|
+
Language: Language$1,
|
|
13478
|
+
"Select the language options.": "Pilih opsi bahasa.",
|
|
13415
13479
|
"Select the interface language and the language in which the clinical note is generated": "Pilih bahasa antarmuka dan bahasa di mana catatan klinis dihasilkan.",
|
|
13416
13480
|
"Select the language for audio transcription": "Pilih bahasa untuk transkripsi audio.",
|
|
13417
13481
|
"Clinical note template": "Template catatan klinis",
|
|
13418
|
-
"Customize the clinical note
|
|
13482
|
+
"Customize the clinical note depending on the report you are filling out.": "Sesuaikan catatan klinis tergantung pada laporan yang Anda isi.",
|
|
13419
13483
|
"Clinical dictionary": "Kamus klinis",
|
|
13420
13484
|
"Customize clinical language and medication format": "Sesuaikan bahasa klinis dan format pengobatan.",
|
|
13485
|
+
Chat: Chat$2,
|
|
13486
|
+
"Customize the patient summary and chat sources.": "Sesuaikan ringkasan pasien dan sumber chat.",
|
|
13421
13487
|
"No custom words added yet": "Belum ada kata kustom yang ditambahkan",
|
|
13422
13488
|
"Custom version": "Versi kustom",
|
|
13423
13489
|
"Word or phrase (e.g: ibuprofeno)": "Kata atau frasa (mis: ibuprofeno)",
|
|
@@ -13428,7 +13494,19 @@ const id = {
|
|
|
13428
13494
|
"Customize how to generate section": 'Sesuaikan cara membuat bagian "{sectionName}". Contoh: "Selalu sertakan tanggal" atau "Gunakan terminologi teknis"',
|
|
13429
13495
|
"Save changes": "Simpan perubahan",
|
|
13430
13496
|
"{count} characters": "{count} karakter",
|
|
13431
|
-
"Sending...": "Mengirim..."
|
|
13497
|
+
"Sending...": "Mengirim...",
|
|
13498
|
+
"Show patient summary first": "Tampilkan ringkasan pasien terlebih dahulu",
|
|
13499
|
+
"Patient summary customization": "Penyesuaian ringkasan pasien",
|
|
13500
|
+
Sources,
|
|
13501
|
+
"Select the sources you want the AI to use for reasoning": "Pilih sumber yang ingin Anda gunakan AI untuk penalaran",
|
|
13502
|
+
"Don't leave out relevant information...": "Jangan tinggalkan informasi yang relevan...",
|
|
13503
|
+
"File is too large. Maximum size is 5MB": "File terlalu besar. Ukuran maksimum adalah 5MB",
|
|
13504
|
+
"Maximum number of files is 5": "Jumlah file maksimum adalah 5",
|
|
13505
|
+
"Attach file": "Lampirkan file",
|
|
13506
|
+
"Error processing file": "Kesalahan memproses file",
|
|
13507
|
+
"Unsupported file format": "Format file tidak didukung",
|
|
13508
|
+
"{count} documents": "{count} dokumen",
|
|
13509
|
+
"{count} images": "{count} gambar"
|
|
13432
13510
|
};
|
|
13433
13511
|
var LanguageCode;
|
|
13434
13512
|
(function(LanguageCode2) {
|
|
@@ -13441,27 +13519,27 @@ var LanguageCode;
|
|
|
13441
13519
|
var TranscriptionLanguageCode;
|
|
13442
13520
|
(function(TranscriptionLanguageCode2) {
|
|
13443
13521
|
TranscriptionLanguageCode2["ar"] = "ar";
|
|
13444
|
-
TranscriptionLanguageCode2["
|
|
13522
|
+
TranscriptionLanguageCode2["ca"] = "ca";
|
|
13523
|
+
TranscriptionLanguageCode2["cs"] = "cs";
|
|
13445
13524
|
TranscriptionLanguageCode2["de"] = "de";
|
|
13525
|
+
TranscriptionLanguageCode2["en_GB"] = "en_GB";
|
|
13526
|
+
TranscriptionLanguageCode2["en_US"] = "en_US";
|
|
13446
13527
|
TranscriptionLanguageCode2["es"] = "es";
|
|
13447
|
-
TranscriptionLanguageCode2["fil"] = "fil";
|
|
13448
13528
|
TranscriptionLanguageCode2["fr"] = "fr";
|
|
13449
|
-
TranscriptionLanguageCode2["id"] = "id";
|
|
13450
13529
|
TranscriptionLanguageCode2["hi"] = "hi";
|
|
13530
|
+
TranscriptionLanguageCode2["id"] = "id";
|
|
13531
|
+
TranscriptionLanguageCode2["it"] = "it";
|
|
13451
13532
|
TranscriptionLanguageCode2["ja"] = "ja";
|
|
13452
13533
|
TranscriptionLanguageCode2["kn"] = "kn";
|
|
13453
|
-
TranscriptionLanguageCode2["ml"] = "ml";
|
|
13454
13534
|
TranscriptionLanguageCode2["ms"] = "ms";
|
|
13535
|
+
TranscriptionLanguageCode2["pt"] = "pt";
|
|
13536
|
+
TranscriptionLanguageCode2["sv"] = "sv";
|
|
13455
13537
|
TranscriptionLanguageCode2["ta"] = "ta";
|
|
13456
13538
|
TranscriptionLanguageCode2["te"] = "te";
|
|
13457
13539
|
TranscriptionLanguageCode2["th"] = "th";
|
|
13540
|
+
TranscriptionLanguageCode2["ur"] = "ur";
|
|
13458
13541
|
TranscriptionLanguageCode2["zh"] = "zh";
|
|
13459
|
-
TranscriptionLanguageCode2["
|
|
13460
|
-
TranscriptionLanguageCode2["pt"] = "pt";
|
|
13461
|
-
TranscriptionLanguageCode2["ca"] = "ca";
|
|
13462
|
-
TranscriptionLanguageCode2["eu"] = "eu";
|
|
13463
|
-
TranscriptionLanguageCode2["gl"] = "gl";
|
|
13464
|
-
TranscriptionLanguageCode2["multilingual"] = "";
|
|
13542
|
+
TranscriptionLanguageCode2["multilingual"] = "multi";
|
|
13465
13543
|
})(TranscriptionLanguageCode || (TranscriptionLanguageCode = {}));
|
|
13466
13544
|
LanguageCode.es;
|
|
13467
13545
|
const languages = [
|
|
@@ -13494,25 +13572,31 @@ const languages = [
|
|
|
13494
13572
|
const transcriptionLanguages = [
|
|
13495
13573
|
{ label: "Multilingual", value: TranscriptionLanguageCode.multilingual },
|
|
13496
13574
|
{ label: "Español", value: TranscriptionLanguageCode.es },
|
|
13497
|
-
{
|
|
13575
|
+
{
|
|
13576
|
+
label: "English (US)",
|
|
13577
|
+
value: TranscriptionLanguageCode.en_US
|
|
13578
|
+
},
|
|
13579
|
+
{
|
|
13580
|
+
label: "English (UK)",
|
|
13581
|
+
value: TranscriptionLanguageCode.en_GB
|
|
13582
|
+
},
|
|
13498
13583
|
{ label: "Français", value: TranscriptionLanguageCode.fr },
|
|
13499
13584
|
{ label: "Deutsch", value: TranscriptionLanguageCode.de },
|
|
13500
13585
|
{ label: "Italiano", value: TranscriptionLanguageCode.it },
|
|
13501
13586
|
{ label: "Português", value: TranscriptionLanguageCode.pt },
|
|
13502
13587
|
{ label: "Català", value: TranscriptionLanguageCode.ca },
|
|
13503
|
-
{ label: "Euskera", value: TranscriptionLanguageCode.eu },
|
|
13504
|
-
{ label: "Galego", value: TranscriptionLanguageCode.gl },
|
|
13505
13588
|
{ label: "Arabic", value: TranscriptionLanguageCode.ar },
|
|
13589
|
+
{ label: "Čeština", value: TranscriptionLanguageCode.cs },
|
|
13506
13590
|
{ label: "Bahasa Indonesia", value: TranscriptionLanguageCode.id },
|
|
13507
13591
|
{ label: "Chinese", value: TranscriptionLanguageCode.zh },
|
|
13508
|
-
{ label: "Filipino", value: TranscriptionLanguageCode.fil },
|
|
13509
13592
|
{ label: "Hindi", value: TranscriptionLanguageCode.hi },
|
|
13510
13593
|
{ label: "Japanese", value: TranscriptionLanguageCode.ja },
|
|
13511
13594
|
{ label: "Kannada", value: TranscriptionLanguageCode.kn },
|
|
13512
|
-
{ label: "Malay", value: TranscriptionLanguageCode.ms },
|
|
13513
|
-
{ label: "Malayalam", value: TranscriptionLanguageCode.ml },
|
|
13595
|
+
{ label: "Malay / Malayalam", value: TranscriptionLanguageCode.ms },
|
|
13514
13596
|
{ label: "Tamil", value: TranscriptionLanguageCode.ta },
|
|
13515
13597
|
{ label: "Telugu", value: TranscriptionLanguageCode.te },
|
|
13598
|
+
{ label: "Urdu", value: TranscriptionLanguageCode.ur },
|
|
13599
|
+
{ label: "Svenska", value: TranscriptionLanguageCode.sv },
|
|
13516
13600
|
{ label: "Thai", value: TranscriptionLanguageCode.th }
|
|
13517
13601
|
];
|
|
13518
13602
|
function bind(fn, thisArg) {
|
|
@@ -15991,7 +16075,7 @@ const {
|
|
|
15991
16075
|
getAdapter,
|
|
15992
16076
|
mergeConfig: mergeConfig$1
|
|
15993
16077
|
} = axios;
|
|
15994
|
-
const version$1 = "0.0.
|
|
16078
|
+
const version$1 = "0.0.11";
|
|
15995
16079
|
const handleApiError = async (error) => {
|
|
15996
16080
|
return Promise.reject(error);
|
|
15997
16081
|
};
|
|
@@ -16182,6 +16266,7 @@ var SettingsApiKeys;
|
|
|
16182
16266
|
SettingsApiKeys2["template"] = "template";
|
|
16183
16267
|
SettingsApiKeys2["baseTemplate"] = "baseTemplate";
|
|
16184
16268
|
SettingsApiKeys2["templateId"] = "templateId";
|
|
16269
|
+
SettingsApiKeys2["summary"] = "summary";
|
|
16185
16270
|
})(SettingsApiKeys || (SettingsApiKeys = {}));
|
|
16186
16271
|
const SettingsApi = {
|
|
16187
16272
|
updateSetting: async (key, value) => {
|
|
@@ -16245,7 +16330,8 @@ const SettingsApi = {
|
|
|
16245
16330
|
[SettingsApiKeys.sources]: profileResponse.sources,
|
|
16246
16331
|
[SettingsApiKeys.availableSources]: profileResponse.availableSources,
|
|
16247
16332
|
[SettingsApiKeys.template]: profileResponse.template,
|
|
16248
|
-
[SettingsApiKeys.baseTemplate]: profileResponse.baseTemplate
|
|
16333
|
+
[SettingsApiKeys.baseTemplate]: profileResponse.baseTemplate,
|
|
16334
|
+
[SettingsApiKeys.summary]: profileResponse.summary
|
|
16249
16335
|
};
|
|
16250
16336
|
return mappedResponse;
|
|
16251
16337
|
}
|
|
@@ -16552,6 +16638,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16552
16638
|
const [sources, setSources] = React.useState(null);
|
|
16553
16639
|
const [availableSources, setAvailableSources] = React.useState([]);
|
|
16554
16640
|
const [preferredMicrophone, setPreferredMicrophone] = React.useState(null);
|
|
16641
|
+
const [summary, setSummary] = React.useState(null);
|
|
16555
16642
|
const [templateCustomizations, setTemplateCustomizations] = React.useState({});
|
|
16556
16643
|
const [baseTemplate, setBaseTemplate] = React.useState({});
|
|
16557
16644
|
const [customTemplate, setCustomTemplate] = React.useState(null);
|
|
@@ -16567,7 +16654,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16567
16654
|
const profile = await SettingsApi.getSettings(templateId, toolArgs);
|
|
16568
16655
|
const newDictionary = (profile == null ? void 0 : profile[SettingsApiKeys.dictionary]) || [];
|
|
16569
16656
|
const newLanguage = (profile == null ? void 0 : profile[SettingsApiKeys.language]) || (predefinedLanguage != null ? predefinedLanguage : getUserDefaultLanguage().code);
|
|
16570
|
-
const newTranscriptionLanguage = profile == null ? void 0 : profile[SettingsApiKeys.transcriptionLanguage];
|
|
16657
|
+
const newTranscriptionLanguage = (profile == null ? void 0 : profile[SettingsApiKeys.transcriptionLanguage]) || TranscriptionLanguageCode.multilingual;
|
|
16571
16658
|
const newSources = Array.isArray(profile == null ? void 0 : profile[SettingsApiKeys.sources]) ? profile[SettingsApiKeys.sources] : null;
|
|
16572
16659
|
const newAvailableSources = Array.isArray(profile == null ? void 0 : profile[SettingsApiKeys.availableSources]) ? profile[SettingsApiKeys.availableSources] : [];
|
|
16573
16660
|
const newCustomTemplate = (profile == null ? void 0 : profile[SettingsApiKeys.template]) ? {
|
|
@@ -16590,12 +16677,14 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16590
16677
|
};
|
|
16591
16678
|
}
|
|
16592
16679
|
}
|
|
16680
|
+
const newSummary = (profile == null ? void 0 : profile[SettingsApiKeys.summary]) || null;
|
|
16593
16681
|
setDictionary(newDictionary);
|
|
16594
16682
|
setLanguage(newLanguage);
|
|
16595
16683
|
setTranscriptionLanguage(newTranscriptionLanguage);
|
|
16596
16684
|
setSources(newSources);
|
|
16597
16685
|
setAvailableSources(newAvailableSources);
|
|
16598
16686
|
setPreferredMicrophone(newPreferredMicrophone);
|
|
16687
|
+
setSummary(newSummary);
|
|
16599
16688
|
setCustomTemplate(newCustomTemplate);
|
|
16600
16689
|
setBaseTemplate(newBaseTemplate);
|
|
16601
16690
|
const cache = SettingsCache.getInstance();
|
|
@@ -16661,7 +16750,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16661
16750
|
try {
|
|
16662
16751
|
setTranscriptionLanguage(lang);
|
|
16663
16752
|
SettingsCache.getInstance().setTranscriptionLanguage(lang);
|
|
16664
|
-
const dBLanguage = lang
|
|
16753
|
+
const dBLanguage = lang;
|
|
16665
16754
|
await SettingsApi.updateSetting(SettingsApiKeys.transcriptionLanguage, dBLanguage);
|
|
16666
16755
|
} catch (error) {
|
|
16667
16756
|
logger.settingsError("Error updating transcription language:", error);
|
|
@@ -16676,6 +16765,21 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16676
16765
|
logger.settingsError("Error updating sources:", error);
|
|
16677
16766
|
}
|
|
16678
16767
|
}, []);
|
|
16768
|
+
const updateSummary = React.useCallback(async (summary2) => {
|
|
16769
|
+
try {
|
|
16770
|
+
setSummary(summary2);
|
|
16771
|
+
await SettingsApi.updateSetting(SettingsApiKeys.summary, summary2);
|
|
16772
|
+
} catch (error) {
|
|
16773
|
+
logger.settingsError("Error updating summary:", error);
|
|
16774
|
+
}
|
|
16775
|
+
}, []);
|
|
16776
|
+
const sendSummaryMessage = React.useCallback(() => {
|
|
16777
|
+
if (!summary || !summary.isEnabled) {
|
|
16778
|
+
return;
|
|
16779
|
+
}
|
|
16780
|
+
const event = new CustomEvent("sendSummaryMessage");
|
|
16781
|
+
window.dispatchEvent(event);
|
|
16782
|
+
}, [summary]);
|
|
16679
16783
|
const updatePreferredMicrophone = React.useCallback(async (microphone) => {
|
|
16680
16784
|
try {
|
|
16681
16785
|
setPreferredMicrophone(microphone);
|
|
@@ -16753,6 +16857,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16753
16857
|
templateId: profile[SettingsApiKeys.templateId]
|
|
16754
16858
|
} : null;
|
|
16755
16859
|
const newBaseTemplate = (profile == null ? void 0 : profile[SettingsApiKeys.baseTemplate]) ? profile == null ? void 0 : profile[SettingsApiKeys.baseTemplate] : {};
|
|
16860
|
+
const newSummary = (profile == null ? void 0 : profile[SettingsApiKeys.summary]) || null;
|
|
16756
16861
|
const microphoneData = profile == null ? void 0 : profile[SettingsApiKeys.preferredMicrophone];
|
|
16757
16862
|
let newPreferredMicrophone = null;
|
|
16758
16863
|
if (microphoneData) {
|
|
@@ -16774,6 +16879,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16774
16879
|
setSources(newSources);
|
|
16775
16880
|
setAvailableSources(newAvailableSources);
|
|
16776
16881
|
setPreferredMicrophone(newPreferredMicrophone);
|
|
16882
|
+
setSummary(newSummary);
|
|
16777
16883
|
setCustomTemplate(newCustomTemplate);
|
|
16778
16884
|
setBaseTemplate(newBaseTemplate);
|
|
16779
16885
|
const cache = SettingsCache.getInstance();
|
|
@@ -16858,6 +16964,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16858
16964
|
sources,
|
|
16859
16965
|
availableSources,
|
|
16860
16966
|
preferredMicrophone,
|
|
16967
|
+
summary,
|
|
16861
16968
|
isLoading,
|
|
16862
16969
|
templateId,
|
|
16863
16970
|
toolArgs,
|
|
@@ -16871,6 +16978,8 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16871
16978
|
updateTranscriptionLanguage,
|
|
16872
16979
|
updateSources,
|
|
16873
16980
|
updatePreferredMicrophone,
|
|
16981
|
+
updateSummary,
|
|
16982
|
+
sendSummaryMessage,
|
|
16874
16983
|
updateTemplateCustomizations,
|
|
16875
16984
|
updateBaseTemplate,
|
|
16876
16985
|
updateSettings,
|
|
@@ -16883,6 +16992,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16883
16992
|
sources,
|
|
16884
16993
|
availableSources,
|
|
16885
16994
|
preferredMicrophone,
|
|
16995
|
+
summary,
|
|
16886
16996
|
isLoading,
|
|
16887
16997
|
templateId,
|
|
16888
16998
|
toolArgs,
|
|
@@ -16896,6 +17006,8 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
16896
17006
|
updateTranscriptionLanguage,
|
|
16897
17007
|
updateSources,
|
|
16898
17008
|
updatePreferredMicrophone,
|
|
17009
|
+
updateSummary,
|
|
17010
|
+
sendSummaryMessage,
|
|
16899
17011
|
updateTemplateCustomizations,
|
|
16900
17012
|
updateBaseTemplate,
|
|
16901
17013
|
updateSettings,
|
|
@@ -93905,7 +94017,7 @@ function parseAnthropicStreamedToolCalls(content2) {
|
|
|
93905
94017
|
};
|
|
93906
94018
|
});
|
|
93907
94019
|
}
|
|
93908
|
-
function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessage = false
|
|
94020
|
+
function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessage = false }) {
|
|
93909
94021
|
var _a2;
|
|
93910
94022
|
const [isHovered, setIsHovered] = reactExports.useState(false);
|
|
93911
94023
|
const { appointmentData, runId } = useLangGraphContext();
|
|
@@ -93923,7 +94035,7 @@ function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessag
|
|
|
93923
94035
|
const hasActualContent = contentString.length > 0;
|
|
93924
94036
|
if (!isLastMessage && !isToolResult && !contentString.length && !message.content && !reasoning)
|
|
93925
94037
|
return null;
|
|
93926
|
-
return jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-message-container", onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: isToolResult ? jsxRuntimeExports.jsx(ToolResult, { message }) : jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-message-calls-container", children: [isLastMessage && isLoading &&
|
|
94038
|
+
return jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-message-container", onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: isToolResult ? jsxRuntimeExports.jsx(ToolResult, { message }) : jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-message-calls-container", children: [isLastMessage && isLoading && contentString.length === 0 && jsxRuntimeExports.jsx(AssistantMessageLoading, {}), contentString.length > 0 && jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-markdown-container", children: jsxRuntimeExports.jsx(MarkdownText, { children: contentString }) }), jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: hasAnthropicToolCalls && isLastMessage && jsxRuntimeExports.jsx(ToolCalls, { toolCalls: anthropicStreamedToolCalls }) || hasToolCalls && isLastMessage && jsxRuntimeExports.jsx(ToolCalls, { toolCalls: message.tool_calls }) }), jsxRuntimeExports.jsx(CustomComponent, { message, thread }), hasActualContent && jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-commands-container", children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta == null ? void 0 : meta.branch, branchOptions: meta == null ? void 0 : meta.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { disabled: hasAnthropicToolCalls && isLastMessage || hasToolCalls, content: contentString, isLoading, isAiMessage: true, handleRegenerate: () => handleRegenerate(parentCheckpoint), isLastMessage: isLastAiMessage, isHovered, runId: runId || void 0 })] })] }) });
|
|
93927
94039
|
}
|
|
93928
94040
|
const textareaVariants = cva("omniscribe_textarea-general", {
|
|
93929
94041
|
variants: {
|
|
@@ -93941,6 +94053,98 @@ const Textarea = reactExports.forwardRef((_w, ref) => {
|
|
|
93941
94053
|
return jsxRuntimeExports.jsx("textarea", __spreadValues({ ref, "data-slot": "textarea", className: textareaVariants({ variant, className }) }, props));
|
|
93942
94054
|
});
|
|
93943
94055
|
Textarea.displayName = "Textarea";
|
|
94056
|
+
const MessageImagesContext = reactExports.createContext(void 0);
|
|
94057
|
+
const MessageImagesProvider = ({ children }) => {
|
|
94058
|
+
const [messageImages, setMessageImagesMap] = reactExports.useState(/* @__PURE__ */ new Map());
|
|
94059
|
+
const messageImagesRef = reactExports.useRef(messageImages);
|
|
94060
|
+
reactExports.useEffect(() => {
|
|
94061
|
+
messageImagesRef.current = messageImages;
|
|
94062
|
+
});
|
|
94063
|
+
reactExports.useEffect(() => {
|
|
94064
|
+
return () => {
|
|
94065
|
+
messageImagesRef.current.forEach((images) => {
|
|
94066
|
+
images.forEach((image2) => {
|
|
94067
|
+
if (image2.previewUrl) {
|
|
94068
|
+
URL.revokeObjectURL(image2.previewUrl);
|
|
94069
|
+
}
|
|
94070
|
+
});
|
|
94071
|
+
});
|
|
94072
|
+
};
|
|
94073
|
+
}, []);
|
|
94074
|
+
const setMessageImages = reactExports.useCallback((messageId, images) => {
|
|
94075
|
+
setMessageImagesMap((prev) => {
|
|
94076
|
+
const newMap = new Map(prev);
|
|
94077
|
+
newMap.set(messageId, images);
|
|
94078
|
+
return newMap;
|
|
94079
|
+
});
|
|
94080
|
+
}, []);
|
|
94081
|
+
const getMessageImages = reactExports.useCallback((messageId) => {
|
|
94082
|
+
return messageImages.get(messageId) || [];
|
|
94083
|
+
}, [messageImages]);
|
|
94084
|
+
const clearMessageImages = reactExports.useCallback((messageId) => {
|
|
94085
|
+
const images = messageImages.get(messageId);
|
|
94086
|
+
if (images) {
|
|
94087
|
+
images.forEach((image2) => {
|
|
94088
|
+
if (image2.previewUrl) {
|
|
94089
|
+
URL.revokeObjectURL(image2.previewUrl);
|
|
94090
|
+
}
|
|
94091
|
+
});
|
|
94092
|
+
}
|
|
94093
|
+
setMessageImagesMap((prev) => {
|
|
94094
|
+
const newMap = new Map(prev);
|
|
94095
|
+
newMap.delete(messageId);
|
|
94096
|
+
return newMap;
|
|
94097
|
+
});
|
|
94098
|
+
}, [messageImages]);
|
|
94099
|
+
const value = reactExports.useMemo(() => ({
|
|
94100
|
+
messageImages,
|
|
94101
|
+
setMessageImages,
|
|
94102
|
+
getMessageImages,
|
|
94103
|
+
clearMessageImages
|
|
94104
|
+
}), [messageImages, setMessageImages, getMessageImages, clearMessageImages]);
|
|
94105
|
+
return jsxRuntimeExports.jsx(MessageImagesContext.Provider, { value, children });
|
|
94106
|
+
};
|
|
94107
|
+
const useMessageImages = () => {
|
|
94108
|
+
const context = reactExports.useContext(MessageImagesContext);
|
|
94109
|
+
if (!context) {
|
|
94110
|
+
throw new Error("useMessageImages must be used within a MessageImagesProvider");
|
|
94111
|
+
}
|
|
94112
|
+
return context;
|
|
94113
|
+
};
|
|
94114
|
+
const DocumentIcon = ({ width = 24, height = 24, className }) => {
|
|
94115
|
+
return jsxRuntimeExports.jsxs("svg", { fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", width, height, viewBox: "0 0 24 24", className, children: [jsxRuntimeExports.jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), jsxRuntimeExports.jsx("polyline", { points: "14 2 14 8 20 8" }), jsxRuntimeExports.jsx("line", { x1: "16", y1: "13", x2: "8", y2: "13" }), jsxRuntimeExports.jsx("line", { x1: "16", y1: "17", x2: "8", y2: "17" }), jsxRuntimeExports.jsx("polyline", { points: "10 9 9 9 8 9" })] });
|
|
94116
|
+
};
|
|
94117
|
+
const MessageImages = ({ uploadedFiles, className = "" }) => {
|
|
94118
|
+
const [loadedImages, setLoadedImages] = reactExports.useState(/* @__PURE__ */ new Set());
|
|
94119
|
+
const [failedImages, setFailedImages] = reactExports.useState(/* @__PURE__ */ new Set());
|
|
94120
|
+
const { formatMessage: formatMessage2 } = useIntl();
|
|
94121
|
+
const handleImageLoad = (index2) => {
|
|
94122
|
+
setLoadedImages((prev) => new Set(prev).add(index2));
|
|
94123
|
+
};
|
|
94124
|
+
const handleImageError = (index2) => {
|
|
94125
|
+
setFailedImages((prev) => new Set(prev).add(index2));
|
|
94126
|
+
};
|
|
94127
|
+
if (uploadedFiles.length === 0) {
|
|
94128
|
+
return null;
|
|
94129
|
+
}
|
|
94130
|
+
const imageFiles = uploadedFiles.filter((file) => file.type === "image");
|
|
94131
|
+
const documentFiles = uploadedFiles.filter((file) => file.type === "document");
|
|
94132
|
+
if (imageFiles.length === 0 && documentFiles.length === 0) {
|
|
94133
|
+
return null;
|
|
94134
|
+
}
|
|
94135
|
+
return jsxRuntimeExports.jsxs("div", { className: `omniscribe_message-files ${className}`, children: [imageFiles.length > 0 && jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-images", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_message-images-grid", children: imageFiles.map((file, index2) => {
|
|
94136
|
+
const imageUrl = file.previewUrl;
|
|
94137
|
+
if (!imageUrl) {
|
|
94138
|
+
return jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-error", title: "Image could not be displayed", children: jsxRuntimeExports.jsx("span", { children: "📷" }) }, file.id);
|
|
94139
|
+
}
|
|
94140
|
+
const isLoaded = loadedImages.has(index2);
|
|
94141
|
+
const hasFailed = failedImages.has(index2);
|
|
94142
|
+
return jsxRuntimeExports.jsxs("div", { className: `omniscribe_message-image-container ${imageFiles.length > 1 ? "omniscribe_message-image-container-multiple" : "omniscribe_message-image-container-single"}`, children: [!isLoaded && !hasFailed && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-loading", children: jsxRuntimeExports.jsx("span", { children: "Loading..." }) }), hasFailed ? jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-image-error", title: "Failed to load image", children: [jsxRuntimeExports.jsx("span", { children: "📷" }), jsxRuntimeExports.jsx("small", { children: "Image unavailable" })] }) : jsxRuntimeExports.jsx("img", { src: imageUrl, alt: `Attached image ${index2 + 1}`, className: "omniscribe_message-image", onLoad: () => handleImageLoad(index2), onError: () => handleImageError(index2), title: `Image ${index2 + 1}`, style: { display: isLoaded ? "block" : "none" } }), imageFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-counter", children: index2 + 1 })] }, file.id);
|
|
94143
|
+
}) }), imageFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-images-count", children: formatMessage2({ id: "{count} images", defaultMessage: "{count} images" }, { count: imageFiles.length }) })] }), documentFiles.length > 0 && jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-documents", children: [documentFiles.map((file) => jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-document", title: `Document: ${file.file.name}`, children: [jsxRuntimeExports.jsx(DocumentIcon, { width: 24, height: 24 }), jsxRuntimeExports.jsx("div", { className: "omniscribe_message-document-info", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_message-document-name", children: file.file.name || "Unknown file" }) })] }, file.id)), documentFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-documents-count", children: formatMessage2({
|
|
94144
|
+
id: "{count} documents",
|
|
94145
|
+
defaultMessage: "{count} documents"
|
|
94146
|
+
}, { count: documentFiles.length }) })] })] });
|
|
94147
|
+
};
|
|
93944
94148
|
function EditableContent({ value, setValue, onSubmit, chatHistoryOpen = false }) {
|
|
93945
94149
|
const handleKeyDown = (e) => {
|
|
93946
94150
|
if ((e.metaKey || e.ctrlKey) && e.key === "Enter") {
|
|
@@ -93959,6 +94163,9 @@ function HumanMessage2({ message, isLoading, isLastHumanMessage = false, chatHis
|
|
|
93959
94163
|
const [isEditing, setIsEditing] = reactExports.useState(false);
|
|
93960
94164
|
const [value, setValue] = reactExports.useState("");
|
|
93961
94165
|
const contentString = getContentString(message.content);
|
|
94166
|
+
const { getMessageImages } = useMessageImages();
|
|
94167
|
+
const messageImages = getMessageImages(message.id || "");
|
|
94168
|
+
const hasMessageFiles = messageImages.length > 0;
|
|
93962
94169
|
const handleSubmitEdit = () => {
|
|
93963
94170
|
setIsEditing(false);
|
|
93964
94171
|
const newMessage = { type: "human", content: value };
|
|
@@ -93976,7 +94183,7 @@ function HumanMessage2({ message, isLoading, isLastHumanMessage = false, chatHis
|
|
|
93976
94183
|
}
|
|
93977
94184
|
});
|
|
93978
94185
|
};
|
|
93979
|
-
return jsxRuntimeExports.jsx("div", { className: `omniscribe_human-message-container ${isEditing ? "omniscribe_human-message-container-editing" : "omniscribe_human-message-container-no-editing"}`, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-subcontainer ${isEditing && "omniscribe_human-message-subcontainer-editing"}`, children: [isEditing ? jsxRuntimeExports.jsx(EditableContent, { value, setValue, onSubmit: handleSubmitEdit, chatHistoryOpen }) : jsxRuntimeExports.jsx("p", { className: "omniscribe_human-message-content-text", children: contentString }), jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-command-container ${isEditing && "omniscribe_human-message-command-container-editing"}`, children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta == null ? void 0 : meta.branch, branchOptions: meta == null ? void 0 : meta.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { isLoading, content: contentString, isEditing, setIsEditing: (c2) => {
|
|
94186
|
+
return jsxRuntimeExports.jsx("div", { className: `omniscribe_human-message-container ${isEditing ? "omniscribe_human-message-container-editing" : "omniscribe_human-message-container-no-editing"}`, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-subcontainer ${isEditing && "omniscribe_human-message-subcontainer-editing"}`, children: [isEditing ? jsxRuntimeExports.jsx(EditableContent, { value, setValue, onSubmit: handleSubmitEdit, chatHistoryOpen }) : jsxRuntimeExports.jsxs("div", { className: "omniscribe_human-message-content", children: [hasMessageFiles && jsxRuntimeExports.jsx(MessageImages, { uploadedFiles: messageImages }), jsxRuntimeExports.jsx("p", { className: "omniscribe_human-message-content-text", children: contentString })] }), jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-command-container ${isEditing && "omniscribe_human-message-command-container-editing"}`, children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta == null ? void 0 : meta.branch, branchOptions: meta == null ? void 0 : meta.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { isLoading, content: contentString, isEditing, setIsEditing: (c2) => {
|
|
93980
94187
|
if (c2) {
|
|
93981
94188
|
setValue(contentString);
|
|
93982
94189
|
}
|
|
@@ -94509,7 +94716,7 @@ const GradientBox = ({ children, colors, className = "omniscribe_gradient-box" }
|
|
|
94509
94716
|
};
|
|
94510
94717
|
return jsxRuntimeExports.jsx("div", { className, style: gradient, children });
|
|
94511
94718
|
};
|
|
94512
|
-
const PredefinedQuestions = ({ handleSubmit, messages }) => {
|
|
94719
|
+
const PredefinedQuestions = ({ handleSubmit, messages, isAutoSendingSummary }) => {
|
|
94513
94720
|
const contentClassName = "text-p omniscribe_predefined-questions-content";
|
|
94514
94721
|
const { formatMessage: formatMessage2 } = useIntl();
|
|
94515
94722
|
const data = [
|
|
@@ -94519,54 +94726,16 @@ const PredefinedQuestions = ({ handleSubmit, messages }) => {
|
|
|
94519
94726
|
}),
|
|
94520
94727
|
formatMessage2({ id: "What shouldn't I overlook today?" })
|
|
94521
94728
|
];
|
|
94729
|
+
if (isAutoSendingSummary || messages > 0) {
|
|
94730
|
+
return null;
|
|
94731
|
+
}
|
|
94522
94732
|
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_predefined-questions-container", children: [jsxRuntimeExports.jsx("span", { className: "text-p-semi omniscribe_predefined-questions-span omniscribe_predefined-title", children: formatMessage2({
|
|
94523
94733
|
id: "Hello Doctor, I'm your personal assistant. How can I help you today?"
|
|
94524
|
-
}) }),
|
|
94734
|
+
}) }), data.map((text2) => jsxRuntimeExports.jsx("div", { className: "omniscribe_predefined-questions-msg-container whitespace-wrap", children: jsxRuntimeExports.jsx(GradientBox, { children: jsxRuntimeExports.jsx(Button, { onClick: (e) => handleSubmit(e, text2), className: contentClassName, rounded: "omniscribe_predefined-questions-btn-rounded", whitespace: "", variant: "empty", size: "empty", children: text2 }) }) }, text2))] });
|
|
94525
94735
|
};
|
|
94526
|
-
const
|
|
94527
|
-
return jsxRuntimeExports.jsx("svg", { width, height, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className, children: jsxRuntimeExports.jsx("path", { d: "M14 4.1L12 6M5.1 8l-2.9-.8M6 12l-1.9 2M7.2 2.2L8 5.1M9.037 9.69a.498.498 0 01.653-.653l11 4.5a.5.5 0 01-.074.949l-4.349 1.041a1 1 0 00-.74.739l-1.04 4.35a.5.5 0 01-.95.074z" }) });
|
|
94528
|
-
};
|
|
94529
|
-
const sleep = async (ms) => {
|
|
94530
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
94531
|
-
};
|
|
94532
|
-
const Modal = ({ visible, setModalVisible, className = "", title, children, scroll = true }) => {
|
|
94533
|
-
const [show, setShow] = reactExports.useState(false);
|
|
94534
|
-
const popupRef = reactExports.useRef(null);
|
|
94535
|
-
const { dragHandlers, dragStyle } = useDraggable(!visible);
|
|
94536
|
-
const handleCloseModal = async () => {
|
|
94537
|
-
setShow(false);
|
|
94538
|
-
await sleep(350);
|
|
94539
|
-
setModalVisible(false);
|
|
94540
|
-
};
|
|
94541
|
-
const handleOverlayClick = (e) => {
|
|
94542
|
-
if (e.target === e.currentTarget) {
|
|
94543
|
-
handleCloseModal();
|
|
94544
|
-
}
|
|
94545
|
-
};
|
|
94546
|
-
reactExports.useEffect(() => {
|
|
94547
|
-
if (visible)
|
|
94548
|
-
setTimeout(() => setShow(true), 10);
|
|
94549
|
-
}, [visible]);
|
|
94550
|
-
if (!visible)
|
|
94551
|
-
return null;
|
|
94552
|
-
return jsxRuntimeExports.jsx("div", { className: "omniscribe_modal-overlay", onClick: handleOverlayClick, children: jsxRuntimeExports.jsx("div", { className: `omniscribe_modal-container ${show ? "omniscribe_modal-container-show" : "omniscribe_modal-container-hide"} ${className} ${scroll ? "omniscribe_modal-container-scroll" : ""}`, ref: popupRef, onClick: (e) => e.stopPropagation(), style: dragStyle, children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_modal-subcontainer", children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_modal-title-container", onMouseDown: dragHandlers.onMouseDown, children: [jsxRuntimeExports.jsx("h2", { className: "omniscribe_modal-title", children: title }), jsxRuntimeExports.jsx("button", { id: "closeModalDictionaryButton", className: "omniscribe_modal-button", "aria-label": "Cerrar", onClick: handleCloseModal, children: jsxRuntimeExports.jsx(XIcon, { strokeWidth: 4 }) })] }), children] }) }) });
|
|
94553
|
-
};
|
|
94554
|
-
const cn = (...classes) => {
|
|
94555
|
-
return classes.filter(Boolean).join(" ");
|
|
94556
|
-
};
|
|
94557
|
-
const SourcesModal = ({ isOpen, onClose, sources, selectedSources, onToggleSource, onSave, onSelectAll, setModalVisible, isSaving = false }) => {
|
|
94736
|
+
const SummaryLoading = () => {
|
|
94558
94737
|
const { formatMessage: formatMessage2 } = useIntl();
|
|
94559
|
-
|
|
94560
|
-
return null;
|
|
94561
|
-
return jsxRuntimeExports.jsx(Modal, { setModalVisible, className: "omniscribe_modal-sources", visible: isOpen, title: formatMessage2({ id: "My source library" }), children: jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_header_description", children: [jsxRuntimeExports.jsx(MousePointerClickIcon, { width: 16, height: 16, className: "omniscribe_icon_blue" }), formatMessage2({
|
|
94562
|
-
id: `Specify the sources and resources that should guide the AI's responses.`
|
|
94563
|
-
})] }), jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_filter_section", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_filter_buttons", children: jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_all", onClick: onSelectAll, children: formatMessage2({ id: "All" }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_count", children: formatMessage2({
|
|
94564
|
-
id: "sourcesSelected",
|
|
94565
|
-
defaultMessage: "{selected} of {total} selected"
|
|
94566
|
-
}, {
|
|
94567
|
-
selected: selectedSources.length,
|
|
94568
|
-
total: sources.length
|
|
94569
|
-
}) })] }), jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_container scrollbar-pretty", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_list", children: sources.map((source) => jsxRuntimeExports.jsx("div", { onClick: () => onToggleSource(source), className: cn("omniscribe_source_item", selectedSources.some((s2) => s2.url === source.url) && "omniscribe_source_item_selected"), children: jsxRuntimeExports.jsx("div", { className: "omniscribe_source_content", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_source_title_container", children: jsxRuntimeExports.jsx("a", { href: source.url, target: "_blank", rel: "noopener noreferrer", onClick: (e) => e.stopPropagation(), className: "omniscribe_source_link", children: formatMessage2({ id: source.title }) }) }) }) }, source.title)) }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_footer", children: [jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_outline", onClick: onClose, disabled: isSaving, children: formatMessage2({ id: "Cancel" }) }), jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_primary", onClick: onSave, disabled: isSaving, children: isSaving ? formatMessage2({ id: "Saving" }) : formatMessage2({ id: "Save" }) })] })] })] }) });
|
|
94738
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_auto-summary-container", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_auto-summary-text", children: formatMessage2({ id: "Generating patient summary" }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_auto-summary-loading", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_loading-dots", children: jsxRuntimeExports.jsx("span", {}) }) })] });
|
|
94570
94739
|
};
|
|
94571
94740
|
var ChatSourceCategory;
|
|
94572
94741
|
(function(ChatSourceCategory2) {
|
|
@@ -94574,9 +94743,6 @@ var ChatSourceCategory;
|
|
|
94574
94743
|
ChatSourceCategory2["DrugInfoDomains"] = "drug_info_domains";
|
|
94575
94744
|
ChatSourceCategory2["MedicalResearchDomains"] = "medical_research_domains";
|
|
94576
94745
|
})(ChatSourceCategory || (ChatSourceCategory = {}));
|
|
94577
|
-
const BookTextIcon = ({ className, width = 16, height = 16, stroke = "currentColor" }) => {
|
|
94578
|
-
return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M2.66699 13V2.99998C2.66699 2.55795 2.84259 2.13403 3.15515 1.82147C3.46771 1.50891 3.89163 1.33331 4.33366 1.33331H12.667C12.8438 1.33331 13.0134 1.40355 13.1384 1.52858C13.2634 1.6536 13.3337 1.82317 13.3337 1.99998V14C13.3337 14.1768 13.2634 14.3464 13.1384 14.4714C13.0134 14.5964 12.8438 14.6666 12.667 14.6666H4.33366C3.89163 14.6666 3.46771 14.4911 3.15515 14.1785C2.84259 13.8659 2.66699 13.442 2.66699 13ZM2.66699 13C2.66699 12.558 2.84259 12.134 3.15515 11.8215C3.46771 11.5089 3.89163 11.3333 4.33366 11.3333H13.3337", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M5.33301 8.66667L7.99967 4L10.6663 8.66667", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M6.06641 7.33331H9.86641", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
|
|
94579
|
-
};
|
|
94580
94746
|
class InputValidator {
|
|
94581
94747
|
// JSON Validation
|
|
94582
94748
|
static validateJson(input) {
|
|
@@ -95307,55 +95473,51 @@ const getCurrentDateTime = () => {
|
|
|
95307
95473
|
const human_readable = `${weekday}, ${dayFormatted} ${monthName} ${year} ${hourFormatted}:${minuteFormatted} ${gmtOffset}`;
|
|
95308
95474
|
return `${iso_local} (${human_readable})`;
|
|
95309
95475
|
};
|
|
95310
|
-
const
|
|
95311
|
-
return
|
|
95312
|
-
};
|
|
95313
|
-
const getCurrentResponseMessages = (messages) => {
|
|
95314
|
-
let lastHumanIndex = -1;
|
|
95315
|
-
for (let index2 = messages.length - 1; index2 >= 0; index2 -= 1) {
|
|
95316
|
-
if (messages[index2].type === "human") {
|
|
95317
|
-
lastHumanIndex = index2;
|
|
95318
|
-
break;
|
|
95319
|
-
}
|
|
95320
|
-
}
|
|
95321
|
-
return messages.slice(lastHumanIndex + 1);
|
|
95476
|
+
const CloseIcon = ({ width = 24, height = 24, className }) => {
|
|
95477
|
+
return jsxRuntimeExports.jsxs("svg", { fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", width, height, viewBox: "0 0 24 24", className, children: [jsxRuntimeExports.jsx("path", { d: "M18 6L6 18" }), jsxRuntimeExports.jsx("path", { d: "M6 6l12 12" })] });
|
|
95322
95478
|
};
|
|
95323
|
-
const
|
|
95324
|
-
|
|
95325
|
-
if (msg.type !== "ai")
|
|
95326
|
-
return false;
|
|
95327
|
-
return hasMessageContent(msg);
|
|
95328
|
-
});
|
|
95329
|
-
};
|
|
95330
|
-
const getLastAiMessage = (messages) => {
|
|
95331
|
-
if (!(messages == null ? void 0 : messages.length))
|
|
95479
|
+
const FilePreview = ({ files, onRemove, chatHistoryOpen = false }) => {
|
|
95480
|
+
if (files.length === 0)
|
|
95332
95481
|
return null;
|
|
95333
|
-
const
|
|
95334
|
-
|
|
95482
|
+
const imageFiles = files.filter((f2) => f2.type === "image");
|
|
95483
|
+
const documentFiles = files.filter((f2) => f2.type === "document");
|
|
95484
|
+
return jsxRuntimeExports.jsxs("div", { className: `omniscribe_file-preview-container ${chatHistoryOpen ? "omniscribe_file-preview-container-history-open" : ""}`, children: [documentFiles.map((file) => jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-preview-document", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_file-preview-document-icon", children: jsxRuntimeExports.jsx(DocumentIcon, { width: 24, height: 24 }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-preview-document-info", children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_file-preview-document-title", children: file.file.name }), jsxRuntimeExports.jsx("span", { className: "omniscribe_file-preview-document-type", children: getFileExtension(file.file.name).toUpperCase() })] }), jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_file-preview-remove-btn", onClick: () => onRemove(file.id), "aria-label": "Remove file", children: jsxRuntimeExports.jsx(CloseIcon, { width: 12, height: 12 }) })] }, file.id)), imageFiles.map((file) => jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-preview-image", children: [file.previewUrl ? jsxRuntimeExports.jsx("img", { src: file.previewUrl, alt: file.file.name, className: "omniscribe_file-preview-image-img" }) : jsxRuntimeExports.jsx("div", { className: "omniscribe_file-preview-image-placeholder" }), jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_file-preview-remove-btn omniscribe_file-preview-remove-btn--image", onClick: () => onRemove(file.id), "aria-label": "Remove image", children: jsxRuntimeExports.jsx(CloseIcon, { width: 10, height: 10 }) })] }, file.id))] });
|
|
95485
|
+
};
|
|
95486
|
+
function getFileExtension(filename) {
|
|
95487
|
+
const parts = filename.split(".");
|
|
95488
|
+
return parts.length > 1 ? parts[parts.length - 1] : "";
|
|
95489
|
+
}
|
|
95490
|
+
const WarningIcon = ({ className, width = 24, height = 24, strokeWidth = 2 }) => {
|
|
95491
|
+
return jsxRuntimeExports.jsxs("svg", { fill: "none", width, height, viewBox: "0 0 24 24", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth, className, children: [jsxRuntimeExports.jsx("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }), jsxRuntimeExports.jsx("path", { d: "M12 9v4" }), jsxRuntimeExports.jsx("path", { d: "m12 17 .01 0" })] });
|
|
95335
95492
|
};
|
|
95336
|
-
|
|
95337
|
-
const [firstTokenReceived, setFirstTokenReceived] = reactExports.useState(false);
|
|
95493
|
+
function FileLimitBanner({ message, onClose, isVisible }) {
|
|
95338
95494
|
reactExports.useEffect(() => {
|
|
95339
|
-
|
|
95340
|
-
|
|
95341
|
-
|
|
95342
|
-
|
|
95495
|
+
if (isVisible) {
|
|
95496
|
+
const timer = setTimeout(() => {
|
|
95497
|
+
onClose();
|
|
95498
|
+
}, 5e3);
|
|
95499
|
+
return () => clearTimeout(timer);
|
|
95343
95500
|
}
|
|
95344
|
-
|
|
95345
|
-
|
|
95346
|
-
|
|
95347
|
-
|
|
95348
|
-
|
|
95349
|
-
|
|
95350
|
-
|
|
95351
|
-
|
|
95352
|
-
|
|
95353
|
-
|
|
95354
|
-
|
|
95355
|
-
|
|
95356
|
-
|
|
95357
|
-
|
|
95358
|
-
|
|
95501
|
+
}, [isVisible]);
|
|
95502
|
+
if (!isVisible)
|
|
95503
|
+
return null;
|
|
95504
|
+
return jsxRuntimeExports.jsx("div", { className: "omniscribe_file-limit-banner", children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-limit-banner-content", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_file-limit-banner-icon", children: jsxRuntimeExports.jsx(WarningIcon, { width: 20, height: 20 }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_file-limit-banner-message", children: message }), jsxRuntimeExports.jsx("button", { className: "omniscribe_file-limit-banner-close", onClick: onClose, type: "button", children: jsxRuntimeExports.jsx(XIcon, {}) })] }) });
|
|
95505
|
+
}
|
|
95506
|
+
const MAX_FILES = 5;
|
|
95507
|
+
const MAX_FILE_SIZE = 5 * 1024 * 1024;
|
|
95508
|
+
const SUPPORTED_FILE_TYPES = [
|
|
95509
|
+
// Images
|
|
95510
|
+
"image/jpeg",
|
|
95511
|
+
"image/jpg",
|
|
95512
|
+
"image/png",
|
|
95513
|
+
"image/gif",
|
|
95514
|
+
"image/webp",
|
|
95515
|
+
// 'image/svg+xml', // Removed: SVG can contain malicious JavaScript
|
|
95516
|
+
// Documents
|
|
95517
|
+
"application/pdf"
|
|
95518
|
+
];
|
|
95519
|
+
const isFileTypeSupported = (fileType) => {
|
|
95520
|
+
return SUPPORTED_FILE_TYPES.includes(fileType) || fileType.startsWith("image/");
|
|
95359
95521
|
};
|
|
95360
95522
|
function StickyToBottomContent(props) {
|
|
95361
95523
|
const context = useStickToBottomContext();
|
|
@@ -95368,6 +95530,23 @@ function ScrollToBottom$1(props) {
|
|
|
95368
95530
|
return null;
|
|
95369
95531
|
return jsxRuntimeExports.jsxs(Button, { variant: "outline", className: props.className, onClick: () => scrollToBottom(), children: [jsxRuntimeExports.jsx(ArrowDownIcon, { className: "omniscribe_thread-down-btn" }), jsxRuntimeExports.jsx("span", { children: formatMessage2({ id: "Scroll down" }) })] });
|
|
95370
95532
|
}
|
|
95533
|
+
function getAutoSummarySessionKey(patientId, doctorId) {
|
|
95534
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
95535
|
+
return `sofia-auto-summary:${patientId != null ? patientId : ""}:${doctorId != null ? doctorId : ""}:${today}`;
|
|
95536
|
+
}
|
|
95537
|
+
function isAutoSummarySent(patientId, doctorId) {
|
|
95538
|
+
try {
|
|
95539
|
+
return sessionStorage.getItem(getAutoSummarySessionKey(patientId, doctorId)) === "true";
|
|
95540
|
+
} catch (e) {
|
|
95541
|
+
return false;
|
|
95542
|
+
}
|
|
95543
|
+
}
|
|
95544
|
+
function markAutoSummarySent(patientId, doctorId) {
|
|
95545
|
+
try {
|
|
95546
|
+
sessionStorage.setItem(getAutoSummarySessionKey(patientId, doctorId), "true");
|
|
95547
|
+
} catch (e) {
|
|
95548
|
+
}
|
|
95549
|
+
}
|
|
95371
95550
|
const Thread = () => {
|
|
95372
95551
|
const { appointmentData, chatHistoryOpen } = useLangGraphContext();
|
|
95373
95552
|
const { disableAllActions } = useApiConfigContext();
|
|
@@ -95379,27 +95558,32 @@ const Thread = () => {
|
|
|
95379
95558
|
});
|
|
95380
95559
|
const chatApi = useChatApi();
|
|
95381
95560
|
const stream = useStreamContext();
|
|
95382
|
-
const { availableSources, sources: settingsSources,
|
|
95561
|
+
const { availableSources, sources: settingsSources, summary } = useSettingsContext();
|
|
95383
95562
|
const messages = stream.messages;
|
|
95384
95563
|
const isLoading = stream.isLoading;
|
|
95385
|
-
const { firstTokenReceived, setFirstTokenReceived } = useMessageLoadingState(messages);
|
|
95386
95564
|
const lastError = reactExports.useRef(void 0);
|
|
95387
95565
|
const textareaRef = reactExports.useRef(null);
|
|
95388
|
-
const
|
|
95389
|
-
const
|
|
95566
|
+
const fileInputRef = reactExports.useRef(null);
|
|
95567
|
+
const handleSubmitRef = reactExports.useRef(null);
|
|
95568
|
+
const [uploadedFiles, setUploadedFiles] = reactExports.useState([]);
|
|
95569
|
+
const [showFileLimitBanner, setShowFileLimitBanner] = reactExports.useState(false);
|
|
95570
|
+
const [bannerMessage, setBannerMessage] = reactExports.useState("");
|
|
95571
|
+
const uploadedFilesRef = reactExports.useRef([]);
|
|
95572
|
+
const formatMessageRef = reactExports.useRef(null);
|
|
95573
|
+
const autoSummaryLoadingStarted = reactExports.useRef(false);
|
|
95574
|
+
const [autoSummaryCancelled, setAutoSummaryCancelled] = reactExports.useState(false);
|
|
95575
|
+
const [isAutoSendingSummary, setIsAutoSendingSummary] = reactExports.useState(false);
|
|
95390
95576
|
const [inputIsValid, setInputIsValid] = reactExports.useState(() => InputValidator.validate(input.value, { maxLength: inputMaxLength }).isValid);
|
|
95577
|
+
reactExports.useEffect(() => {
|
|
95578
|
+
uploadedFilesRef.current = uploadedFiles;
|
|
95579
|
+
}, [uploadedFiles]);
|
|
95391
95580
|
const [selectedSources, setSelectedSources] = reactExports.useState(() => Array.isArray(settingsSources) ? settingsSources : availableSources);
|
|
95392
95581
|
const { setToastState } = useToastContext();
|
|
95393
|
-
const
|
|
95394
|
-
|
|
95395
|
-
|
|
95396
|
-
|
|
95397
|
-
|
|
95398
|
-
setSelectedSources([]);
|
|
95399
|
-
} else {
|
|
95400
|
-
setSelectedSources([...availableSources]);
|
|
95401
|
-
}
|
|
95402
|
-
};
|
|
95582
|
+
const { setMessageImages } = useMessageImages();
|
|
95583
|
+
reactExports.useEffect(() => {
|
|
95584
|
+
const sources = Array.isArray(settingsSources) ? settingsSources : availableSources;
|
|
95585
|
+
setSelectedSources(sources);
|
|
95586
|
+
}, [settingsSources, availableSources]);
|
|
95403
95587
|
const handleTranscriptionUpdate = (text2) => {
|
|
95404
95588
|
const newText = input.value.length ? `${input.value} ${text2}` : text2;
|
|
95405
95589
|
input.setValue(newText);
|
|
@@ -95409,20 +95593,108 @@ const Thread = () => {
|
|
|
95409
95593
|
input.onChange(e);
|
|
95410
95594
|
setInputIsValid(InputValidator.validate(e.target.value, { maxLength: inputMaxLength }).isValid);
|
|
95411
95595
|
};
|
|
95412
|
-
const
|
|
95413
|
-
|
|
95596
|
+
const handleAttachClick = () => {
|
|
95597
|
+
var _a2;
|
|
95598
|
+
(_a2 = fileInputRef.current) == null ? void 0 : _a2.click();
|
|
95599
|
+
};
|
|
95600
|
+
const handleFileSelect = async (e) => {
|
|
95601
|
+
const files = e.target.files;
|
|
95602
|
+
if (!files)
|
|
95414
95603
|
return;
|
|
95415
|
-
|
|
95416
|
-
|
|
95417
|
-
|
|
95418
|
-
|
|
95419
|
-
|
|
95420
|
-
|
|
95421
|
-
|
|
95422
|
-
|
|
95604
|
+
const filesArray = Array.from(files);
|
|
95605
|
+
const totalFiles = uploadedFiles.length + filesArray.length;
|
|
95606
|
+
const oversizedFiles = filesArray.filter((file) => file.size > MAX_FILE_SIZE);
|
|
95607
|
+
const hasOversizedFiles = oversizedFiles.length > 0;
|
|
95608
|
+
const unsupportedFiles = filesArray.filter((file) => !isFileTypeSupported(file.type));
|
|
95609
|
+
const hasUnsupportedFiles = unsupportedFiles.length > 0;
|
|
95610
|
+
const exceedsFileCount = totalFiles > MAX_FILES;
|
|
95611
|
+
let message = "";
|
|
95612
|
+
if (hasUnsupportedFiles) {
|
|
95613
|
+
message = formatMessage2({ id: "Unsupported file format" });
|
|
95614
|
+
} else if (hasOversizedFiles) {
|
|
95615
|
+
message = formatMessage2({ id: "File is too large. Maximum size is 5MB" });
|
|
95616
|
+
} else if (exceedsFileCount) {
|
|
95617
|
+
message = formatMessage2({ id: "Maximum number of files is 5" });
|
|
95618
|
+
}
|
|
95619
|
+
if (hasUnsupportedFiles || hasOversizedFiles || exceedsFileCount) {
|
|
95620
|
+
setBannerMessage(message);
|
|
95621
|
+
setShowFileLimitBanner(true);
|
|
95622
|
+
if (fileInputRef.current) {
|
|
95623
|
+
fileInputRef.current.value = "";
|
|
95624
|
+
}
|
|
95625
|
+
return;
|
|
95626
|
+
}
|
|
95627
|
+
const newFiles = [];
|
|
95628
|
+
for (const file of filesArray) {
|
|
95629
|
+
try {
|
|
95630
|
+
const isImage = file.type.startsWith("image/");
|
|
95631
|
+
const uploadedFile = {
|
|
95632
|
+
id: v4(),
|
|
95633
|
+
file,
|
|
95634
|
+
type: isImage ? "image" : "document"
|
|
95635
|
+
};
|
|
95636
|
+
if (isImage) {
|
|
95637
|
+
uploadedFile.previewUrl = URL.createObjectURL(file);
|
|
95638
|
+
}
|
|
95639
|
+
const base64Data = await fileToBase64(file);
|
|
95640
|
+
uploadedFile.processedData = isImage ? {
|
|
95641
|
+
type: "image",
|
|
95642
|
+
source_type: "base64",
|
|
95643
|
+
data: base64Data,
|
|
95644
|
+
mime_type: file.type
|
|
95645
|
+
} : {
|
|
95646
|
+
type: "file",
|
|
95647
|
+
source_type: "base64",
|
|
95648
|
+
data: base64Data,
|
|
95649
|
+
mime_type: file.type,
|
|
95650
|
+
filename: file.name
|
|
95651
|
+
};
|
|
95652
|
+
newFiles.push(uploadedFile);
|
|
95653
|
+
} catch (error) {
|
|
95654
|
+
logger.error("Failed to process file:", file.name, error);
|
|
95655
|
+
newFiles.forEach((f2) => {
|
|
95656
|
+
if (f2.previewUrl) {
|
|
95657
|
+
URL.revokeObjectURL(f2.previewUrl);
|
|
95658
|
+
}
|
|
95659
|
+
});
|
|
95660
|
+
setBannerMessage(formatMessage2({ id: "Error processing file" }));
|
|
95661
|
+
setShowFileLimitBanner(true);
|
|
95662
|
+
if (fileInputRef.current) {
|
|
95663
|
+
fileInputRef.current.value = "";
|
|
95664
|
+
}
|
|
95665
|
+
return;
|
|
95666
|
+
}
|
|
95667
|
+
}
|
|
95668
|
+
setUploadedFiles((prev) => [...prev, ...newFiles]);
|
|
95669
|
+
if (fileInputRef.current) {
|
|
95670
|
+
fileInputRef.current.value = "";
|
|
95423
95671
|
}
|
|
95424
95672
|
};
|
|
95425
|
-
const
|
|
95673
|
+
const handleFileRemove = (id2) => {
|
|
95674
|
+
setUploadedFiles((prev) => {
|
|
95675
|
+
const fileToRemove = prev.find((f2) => f2.id === id2);
|
|
95676
|
+
if (fileToRemove == null ? void 0 : fileToRemove.previewUrl) {
|
|
95677
|
+
URL.revokeObjectURL(fileToRemove.previewUrl);
|
|
95678
|
+
}
|
|
95679
|
+
return prev.filter((f2) => f2.id !== id2);
|
|
95680
|
+
});
|
|
95681
|
+
};
|
|
95682
|
+
const fileToBase64 = (file) => {
|
|
95683
|
+
return new Promise((resolve, reject) => {
|
|
95684
|
+
const reader = new FileReader();
|
|
95685
|
+
reader.onload = () => {
|
|
95686
|
+
const base64String = reader.result;
|
|
95687
|
+
const base64Data = base64String.split(",")[1];
|
|
95688
|
+
resolve(base64Data);
|
|
95689
|
+
};
|
|
95690
|
+
reader.onerror = (error) => {
|
|
95691
|
+
logger.error("Failed to read file:", file.name, error);
|
|
95692
|
+
reject(new Error(`Failed to read file: ${file.name}`));
|
|
95693
|
+
};
|
|
95694
|
+
reader.readAsDataURL(file);
|
|
95695
|
+
});
|
|
95696
|
+
};
|
|
95697
|
+
const handleSubmit = (e, predefinedText, isAutoSummary) => {
|
|
95426
95698
|
var _a2;
|
|
95427
95699
|
e.preventDefault();
|
|
95428
95700
|
const inputValidation = input.validate();
|
|
@@ -95431,19 +95703,21 @@ const Thread = () => {
|
|
|
95431
95703
|
return;
|
|
95432
95704
|
if (predefinedText && !InputValidator.validate(predefinedText).isValid)
|
|
95433
95705
|
return;
|
|
95434
|
-
setFirstTokenReceived(false);
|
|
95435
95706
|
const newHumanMessage = {
|
|
95436
|
-
id: v4(),
|
|
95707
|
+
id: isAutoSummary ? `${DO_NOT_RENDER_ID_PREFIX}${v4()}` : v4(),
|
|
95437
95708
|
type: "human",
|
|
95438
95709
|
content: predefinedText != null ? predefinedText : input.value
|
|
95439
95710
|
};
|
|
95711
|
+
if (uploadedFiles.length > 0) {
|
|
95712
|
+
setMessageImages(newHumanMessage.id || "", uploadedFiles);
|
|
95713
|
+
}
|
|
95440
95714
|
const toolMessages = ensureToolCallsHaveResponses(stream.messages);
|
|
95441
95715
|
const _b = ((_a2 = appointmentData == null ? void 0 : appointmentData.patientData) == null ? void 0 : _a2.extraData) || {}, { patient_medical_notes, medical_practice } = _b, restOfExtraData = __objRest(_b, ["patient_medical_notes", "medical_practice"]);
|
|
95442
95716
|
const newPatientData = {
|
|
95443
95717
|
info: restOfExtraData,
|
|
95444
95718
|
"Full Name:": "Sam Test",
|
|
95445
95719
|
"Birth Date:": "01/01/1990",
|
|
95446
|
-
"
|
|
95720
|
+
"Mobile:": "600000006",
|
|
95447
95721
|
"Address:": "456 Avenida Inventada, Ciudad Y",
|
|
95448
95722
|
patientId: appointmentData == null ? void 0 : appointmentData.patientId,
|
|
95449
95723
|
doctorId: appointmentData == null ? void 0 : appointmentData.doctorId
|
|
@@ -95466,8 +95740,9 @@ const Thread = () => {
|
|
|
95466
95740
|
logger.warn(`Unknown source category: ${source.category} for source: ${source.title}`);
|
|
95467
95741
|
}
|
|
95468
95742
|
});
|
|
95743
|
+
const messageFiles = uploadedFiles.map((file) => file.processedData).filter(Boolean);
|
|
95469
95744
|
const data = {
|
|
95470
|
-
values: {
|
|
95745
|
+
values: __spreadValues({
|
|
95471
95746
|
messages: [...toolMessages, newHumanMessage],
|
|
95472
95747
|
drug_info_domains: drugInfoDomains,
|
|
95473
95748
|
clinical_guidelines_domains: clinicalGuidelinesDomains,
|
|
@@ -95478,8 +95753,9 @@ const Thread = () => {
|
|
|
95478
95753
|
medical_practice: medical_practice != null ? medical_practice : "Atención Primaria",
|
|
95479
95754
|
patient_medical_notes,
|
|
95480
95755
|
doctor_id: appointmentData == null ? void 0 : appointmentData.doctorId,
|
|
95481
|
-
current_datetime: getCurrentDateTime()
|
|
95482
|
-
|
|
95756
|
+
current_datetime: getCurrentDateTime(),
|
|
95757
|
+
prompt_summary: (summary == null ? void 0 : summary.isEnabled) ? (summary == null ? void 0 : summary.prompt) || "" : ""
|
|
95758
|
+
}, messageFiles.length > 0 && { files: messageFiles }),
|
|
95483
95759
|
options: {
|
|
95484
95760
|
streamMode: ["values"],
|
|
95485
95761
|
optimisticValues: (prev) => {
|
|
@@ -95496,9 +95772,9 @@ const Thread = () => {
|
|
|
95496
95772
|
};
|
|
95497
95773
|
chatApi.submitMessages(stream, data);
|
|
95498
95774
|
input.reset();
|
|
95775
|
+
setUploadedFiles([]);
|
|
95499
95776
|
};
|
|
95500
95777
|
const handleRegenerate = (parentCheckpoint) => {
|
|
95501
|
-
setFirstTokenReceived(false);
|
|
95502
95778
|
const data = {
|
|
95503
95779
|
values: void 0,
|
|
95504
95780
|
options: {
|
|
@@ -95533,6 +95809,53 @@ const Thread = () => {
|
|
|
95533
95809
|
} catch (e) {
|
|
95534
95810
|
}
|
|
95535
95811
|
}, [stream.error, formatMessage2, setToastState]);
|
|
95812
|
+
reactExports.useEffect(() => {
|
|
95813
|
+
handleSubmitRef.current = handleSubmit;
|
|
95814
|
+
formatMessageRef.current = formatMessage2;
|
|
95815
|
+
}, [handleSubmit, formatMessage2]);
|
|
95816
|
+
reactExports.useEffect(() => {
|
|
95817
|
+
const patientId = appointmentData == null ? void 0 : appointmentData.patientId;
|
|
95818
|
+
const doctorId = appointmentData == null ? void 0 : appointmentData.doctorId;
|
|
95819
|
+
if (!isAutoSummarySent(patientId, doctorId) && !isLoading && (summary == null ? void 0 : summary.isEnabled) && handleSubmitRef.current && formatMessageRef.current) {
|
|
95820
|
+
markAutoSummarySent(patientId, doctorId);
|
|
95821
|
+
autoSummaryLoadingStarted.current = false;
|
|
95822
|
+
setAutoSummaryCancelled(false);
|
|
95823
|
+
setIsAutoSendingSummary(true);
|
|
95824
|
+
const summaryMessage = formatMessageRef.current({
|
|
95825
|
+
id: "I'd like to see a summary of the patient's chart"
|
|
95826
|
+
});
|
|
95827
|
+
handleSubmitRef.current({ preventDefault: () => {
|
|
95828
|
+
} }, summaryMessage, true);
|
|
95829
|
+
}
|
|
95830
|
+
}, [
|
|
95831
|
+
isLoading,
|
|
95832
|
+
summary == null ? void 0 : summary.isEnabled,
|
|
95833
|
+
appointmentData == null ? void 0 : appointmentData.patientId,
|
|
95834
|
+
appointmentData == null ? void 0 : appointmentData.doctorId
|
|
95835
|
+
]);
|
|
95836
|
+
reactExports.useEffect(() => {
|
|
95837
|
+
if (isAutoSendingSummary && !isLoading && messages.length > 0) {
|
|
95838
|
+
const hasAIResponseWithContent = messages.some((msg) => msg.type === "ai" && msg.content && String(msg.content).trim().length > 0);
|
|
95839
|
+
if (hasAIResponseWithContent) {
|
|
95840
|
+
setIsAutoSendingSummary(false);
|
|
95841
|
+
}
|
|
95842
|
+
}
|
|
95843
|
+
}, [isAutoSendingSummary, isLoading, messages]);
|
|
95844
|
+
reactExports.useEffect(() => {
|
|
95845
|
+
if (!isAutoSendingSummary)
|
|
95846
|
+
return;
|
|
95847
|
+
if (isLoading) {
|
|
95848
|
+
autoSummaryLoadingStarted.current = true;
|
|
95849
|
+
return;
|
|
95850
|
+
}
|
|
95851
|
+
if (autoSummaryLoadingStarted.current) {
|
|
95852
|
+
const hasAIResponseWithContent = messages.some((msg) => msg.type === "ai" && msg.content && String(msg.content).trim().length > 0);
|
|
95853
|
+
if (!hasAIResponseWithContent) {
|
|
95854
|
+
setAutoSummaryCancelled(true);
|
|
95855
|
+
setIsAutoSendingSummary(false);
|
|
95856
|
+
}
|
|
95857
|
+
}
|
|
95858
|
+
}, [isAutoSendingSummary, isLoading, messages]);
|
|
95536
95859
|
reactExports.useEffect(() => {
|
|
95537
95860
|
const sources = Array.isArray(settingsSources) ? settingsSources : availableSources;
|
|
95538
95861
|
setSelectedSources(sources);
|
|
@@ -95543,21 +95866,36 @@ const Thread = () => {
|
|
|
95543
95866
|
textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;
|
|
95544
95867
|
}
|
|
95545
95868
|
}, [input.value]);
|
|
95546
|
-
|
|
95869
|
+
reactExports.useEffect(() => {
|
|
95870
|
+
return () => {
|
|
95871
|
+
uploadedFilesRef.current.forEach((file) => {
|
|
95872
|
+
if (file.previewUrl) {
|
|
95873
|
+
URL.revokeObjectURL(file.previewUrl);
|
|
95874
|
+
}
|
|
95875
|
+
});
|
|
95876
|
+
};
|
|
95877
|
+
}, []);
|
|
95878
|
+
const renderedMessages = reactExports.useMemo(() => {
|
|
95547
95879
|
const filteredMessages = messages.filter((m2) => {
|
|
95548
95880
|
var _a2;
|
|
95549
95881
|
return !((_a2 = m2.id) == null ? void 0 : _a2.startsWith(DO_NOT_RENDER_ID_PREFIX));
|
|
95550
95882
|
});
|
|
95551
|
-
const
|
|
95552
|
-
|
|
95553
|
-
|
|
95883
|
+
const finalMessages = autoSummaryCancelled ? filteredMessages.filter((msg) => {
|
|
95884
|
+
if (msg.type === "human")
|
|
95885
|
+
return true;
|
|
95886
|
+
const aiIndex = filteredMessages.indexOf(msg);
|
|
95887
|
+
const hasHumanBefore = filteredMessages.slice(0, aiIndex).some((m2) => m2.type === "human");
|
|
95888
|
+
return hasHumanBefore;
|
|
95889
|
+
}) : filteredMessages;
|
|
95890
|
+
const lastHumanIndex = finalMessages.map((m2, i) => m2.type === "human" ? i : -1).filter((i) => i !== -1).pop();
|
|
95891
|
+
const lastAiIndex = finalMessages.map((m2, i) => m2.type === "ai" ? i : -1).filter((i) => i !== -1).pop();
|
|
95892
|
+
return finalMessages.map((message, index2) => {
|
|
95554
95893
|
const isLastHuman = message.type === "human" && index2 === lastHumanIndex;
|
|
95555
95894
|
const isLastAi = message.type === "ai" && index2 === lastAiIndex;
|
|
95556
|
-
return message.type === "human" ? jsxRuntimeExports.jsx(HumanMessage2, { message, isLoading, isLastHumanMessage: isLastHuman, chatHistoryOpen }, message.id || `${message.type}-${index2}`) : jsxRuntimeExports.jsx(AssistantMessage, { message, isLoading, handleRegenerate, isLastAiMessage: isLastAi
|
|
95895
|
+
return message.type === "human" ? jsxRuntimeExports.jsx(HumanMessage2, { message, isLoading, isLastHumanMessage: isLastHuman, chatHistoryOpen }, message.id || `${message.type}-${index2}`) : jsxRuntimeExports.jsx(AssistantMessage, { message, isLoading, handleRegenerate, isLastAiMessage: isLastAi }, message.id || `${message.type}-${index2}`);
|
|
95557
95896
|
});
|
|
95558
|
-
}, [messages, isLoading,
|
|
95559
|
-
|
|
95560
|
-
}), side: "top", children: jsxRuntimeExports.jsx(Button, { variant: "ghost", onClick: () => setIsSourcesModalOpen(true), disabled: !availableSources.length, style: { marginInline: "4px" }, children: jsxRuntimeExports.jsx(BookTextIcon, { width: 16, height: 16, stroke: selectedSources.length > 0 ? "#105bdb" : "#2b303aff" }) }) }) : jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-no-sources" }), jsxRuntimeExports.jsx(Textarea, { ref: textareaRef, rows: 1, value: input.value, variant: "secondary", onChange: handleInputChange, onKeyDown: (e) => {
|
|
95897
|
+
}, [messages, isLoading, handleRegenerate, chatHistoryOpen]);
|
|
95898
|
+
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(FileLimitBanner, { message: bannerMessage, isVisible: showFileLimitBanner, onClose: () => setShowFileLimitBanner(false) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-container ", children: [jsxRuntimeExports.jsx("div", { className: `omniscribe_thread-container-history-cont ${chatHistoryOpen && "omniscribe_thread-container-history-cont-open"}`, children: jsxRuntimeExports.jsx("div", { className: `omniscribe_thread-container-history-subcont ${chatHistoryOpen ? "omniscribe_thread-container-history-subcont-open" : "omniscribe_thread-container-history-subcont-close"}`, children: jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-container-history-content", children: jsxRuntimeExports.jsx(ThreadHistory, { chatHistoryOpen, newDisabled: disableAllActions || isLoading }) }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-content-container", children: jsxRuntimeExports.jsx(StickToBottom, { className: "omniscribe_thread-stick-to-bottom", children: jsxRuntimeExports.jsx(StickyToBottomContent, { className: "omniscribe_thread-stick-to-bottom-content no-scrollbar", contentClassName: "omniscribe_thread-stick-to-bottom-content-class", content: jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: isAutoSendingSummary ? jsxRuntimeExports.jsx(SummaryLoading, {}) : jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(PredefinedQuestions, { handleSubmit, messages: renderedMessages.length, isAutoSendingSummary: false }), renderedMessages] }) }), footer: jsxRuntimeExports.jsxs("div", { className: `omniscribe_thread-footer-container ${chatHistoryOpen ? "omniscribe_footer-size-decrease" : ""}`, children: [jsxRuntimeExports.jsx(ScrollToBottom$1, { className: "omniscribe_thread-footer-scroll-to-bottom" }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-container", children: [uploadedFiles.length > 0 && jsxRuntimeExports.jsx(FilePreview, { files: uploadedFiles, onRemove: handleFileRemove, chatHistoryOpen }), jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "omniscribe_thread-footer-form", children: [jsxRuntimeExports.jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: "image/*,.pdf", onChange: handleFileSelect, style: { display: "none" } }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-content", children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-left-btns", children: [jsxRuntimeExports.jsx(Tooltip, { message: formatMessage2({ id: "Attach file" }), side: "top", children: jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_thread-attach-btn", onClick: handleAttachClick, disabled: uploadedFiles.length >= MAX_FILES, children: jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntimeExports.jsx("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" }) }) }) }), jsxRuntimeExports.jsx(Textarea, { ref: textareaRef, rows: 1, value: input.value, variant: "secondary", onChange: handleInputChange, onKeyDown: (e) => {
|
|
95561
95899
|
if (e.key === "Enter" && !e.shiftKey && !e.metaKey) {
|
|
95562
95900
|
e.preventDefault();
|
|
95563
95901
|
const el = e.target;
|
|
@@ -95568,12 +95906,12 @@ const Thread = () => {
|
|
|
95568
95906
|
id: "Write your question..."
|
|
95569
95907
|
}) })] }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-btns-container", children: [jsxRuntimeExports.jsx(MicrophoneButton, { onTextUpdate: handleTranscriptionUpdate }), stream.isLoading ? jsxRuntimeExports.jsx(Button, { onClick: () => stream.stop(), children: jsxRuntimeExports.jsx(SquareIcon, {}) }, "stop") : jsxRuntimeExports.jsx(Button, { type: "submit", size: "sm", className: "omniscribe_thread-footer-form-btn", disabled: disableAllActions || isLoading || !input.value.length || !inputIsValid, children: formatMessage2({
|
|
95570
95908
|
id: "Send"
|
|
95571
|
-
}) })] })] }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-info", children: formatMessage2({
|
|
95909
|
+
}) })] })] })] })] }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-info", children: formatMessage2({
|
|
95572
95910
|
id: "SofIA may make mistakes. Consider checking important information."
|
|
95573
|
-
}) })] }) }) }) })
|
|
95911
|
+
}) })] }) }) }) })] })] });
|
|
95574
95912
|
};
|
|
95575
|
-
const Chat = () => {
|
|
95576
|
-
return jsxRuntimeExports.jsx(Thread, {});
|
|
95913
|
+
const Chat$1 = () => {
|
|
95914
|
+
return jsxRuntimeExports.jsx(MessageImagesProvider, { children: jsxRuntimeExports.jsx(Thread, {}) });
|
|
95577
95915
|
};
|
|
95578
95916
|
const Toast = () => {
|
|
95579
95917
|
const { message, visible, setToastState, title, variation, duration } = useToastContext();
|
|
@@ -96455,6 +96793,9 @@ const updateTransformedTranscriptions = async (segments, setState, appointmentDa
|
|
|
96455
96793
|
});
|
|
96456
96794
|
}
|
|
96457
96795
|
};
|
|
96796
|
+
const sleep = async (ms) => {
|
|
96797
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
96798
|
+
};
|
|
96458
96799
|
const TranscriptionApi = {
|
|
96459
96800
|
createTranscription: async (data) => {
|
|
96460
96801
|
try {
|
|
@@ -96942,7 +97283,7 @@ const ReportButton = ({ onFillClick }) => {
|
|
|
96942
97283
|
};
|
|
96943
97284
|
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_report-button-container", children: [renderContent(), jsxRuntimeExports.jsx(LoadingModal, { isLoading: transcriptorLoader || generating || loading, message: loading ? "Por favor espera mientras rellenamos con el reporte" : void 0 })] });
|
|
96944
97285
|
};
|
|
96945
|
-
const CustomSelect = ({ options, onChange, selectedNumber = 0 }) => {
|
|
97286
|
+
const CustomSelect = ({ options, onChange, selectedNumber = 0, maxVisibleItems }) => {
|
|
96946
97287
|
const dropdownRef = reactExports.useRef(null);
|
|
96947
97288
|
const [selected, setSelected] = reactExports.useState(options[selectedNumber]);
|
|
96948
97289
|
const [isOpen, setIsOpen] = reactExports.useState(false);
|
|
@@ -96982,7 +97323,9 @@ const CustomSelect = ({ options, onChange, selectedNumber = 0 }) => {
|
|
|
96982
97323
|
height: "calc(var(--spacing) * 5)",
|
|
96983
97324
|
color: "var(--color-gray-900)",
|
|
96984
97325
|
marginLeft: "calc(var(--spacing) * 2)"
|
|
96985
|
-
} })] }), isOpen && jsxRuntimeExports.jsx("div", { className: "omniscribe_select-content-container", children: jsxRuntimeExports.jsx("ul", { className: "omniscribe_select-content-ul scrollbar-pretty",
|
|
97326
|
+
} })] }), isOpen && jsxRuntimeExports.jsx("div", { className: "omniscribe_select-content-container", children: jsxRuntimeExports.jsx("ul", { className: "omniscribe_select-content-ul scrollbar-pretty", style: maxVisibleItems ? {
|
|
97327
|
+
maxHeight: `calc(var(--spacing) * ${maxVisibleItems * 11} + var(--spacing) * 2)`
|
|
97328
|
+
} : void 0, children: options.map((option) => {
|
|
96986
97329
|
var _a2;
|
|
96987
97330
|
return jsxRuntimeExports.jsxs("li", { onMouseDown: (e) => {
|
|
96988
97331
|
e.stopPropagation();
|
|
@@ -97123,38 +97466,45 @@ const MicrophoneIcon = ({ className, width = 16, height = 16, stroke = "#4A5364"
|
|
|
97123
97466
|
const LanguageIcon = ({ className, width = 16, height = 17, stroke = "#4A5364" }) => {
|
|
97124
97467
|
return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 17", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M7.99967 15.1667C11.6816 15.1667 14.6663 12.1819 14.6663 8.50004C14.6663 4.81814 11.6816 1.83337 7.99967 1.83337C4.31778 1.83337 1.33301 4.81814 1.33301 8.50004C1.33301 12.1819 4.31778 15.1667 7.99967 15.1667Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M7.99967 1.83337C6.28783 3.63081 5.33301 6.01787 5.33301 8.50004C5.33301 10.9822 6.28783 13.3693 7.99967 15.1667C9.71152 13.3693 10.6663 10.9822 10.6663 8.50004C10.6663 6.01787 9.71152 3.63081 7.99967 1.83337Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M1.33301 8.5H14.6663", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
|
|
97125
97468
|
};
|
|
97469
|
+
const ChatIcon = ({ className, width = 16, height = 16, strokeWidth = 1, stroke = "currentColor" }) => {
|
|
97470
|
+
return jsxRuntimeExports.jsxs("svg", { width, height, viewBox: "0 0 16 16", fill: "none", stroke, strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", className, children: [jsxRuntimeExports.jsx("path", { d: "M1.99462 10.8951C2.09265 11.1424 2.11447 11.4133 2.05729 11.6731L1.34729 13.8664C1.32441 13.9777 1.33033 14.0929 1.36447 14.2012C1.39862 14.3095 1.45987 14.4073 1.5424 14.4853C1.62494 14.5633 1.72603 14.6189 1.83609 14.6469C1.94615 14.6749 2.06153 14.6742 2.17129 14.6451L4.44662 13.9798C4.69177 13.9312 4.94564 13.9524 5.17929 14.0411C6.60288 14.7059 8.21553 14.8466 9.73272 14.4383C11.2499 14.0299 12.5741 13.0989 13.4718 11.8094C14.3694 10.5198 14.7827 8.95472 14.6388 7.39015C14.4949 5.82557 13.8031 4.36209 12.6853 3.25791C11.5676 2.15373 10.0958 1.47981 8.52955 1.35504C6.96333 1.23028 5.40338 1.6627 4.12492 2.57601C2.84646 3.48931 1.93164 4.82481 1.54189 6.34687C1.15213 7.86894 1.31247 9.47975 1.99462 10.8951Z" }), jsxRuntimeExports.jsx("path", { d: "M5.3335 8H5.34016" }), jsxRuntimeExports.jsx("path", { d: "M8 8H8.00667" }), jsxRuntimeExports.jsx("path", { d: "M10.6665 8H10.6732" })] });
|
|
97471
|
+
};
|
|
97126
97472
|
const DocumentTemplateIcon = ({ className, width = 16, height = 17, stroke = "#252A32" }) => {
|
|
97127
97473
|
return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 17", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M13.3333 2.5H2.66667C2.29848 2.5 2 2.79848 2 3.16667V6.5C2 6.86819 2.29848 7.16667 2.66667 7.16667H13.3333C13.7015 7.16667 14 6.86819 14 6.5V3.16667C14 2.79848 13.7015 2.5 13.3333 2.5Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M6 9.83337H2.66667C2.29848 9.83337 2 10.1319 2 10.5V13.8334C2 14.2016 2.29848 14.5 2.66667 14.5H6C6.36819 14.5 6.66667 14.2016 6.66667 13.8334V10.5C6.66667 10.1319 6.36819 9.83337 6 9.83337Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M13.333 9.83337H9.99967C9.63148 9.83337 9.33301 10.1319 9.33301 10.5V13.8334C9.33301 14.2016 9.63148 14.5 9.99967 14.5H13.333C13.7012 14.5 13.9997 14.2016 13.9997 13.8334V10.5C13.9997 10.1319 13.7012 9.83337 13.333 9.83337Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
|
|
97128
97474
|
};
|
|
97475
|
+
const BookTextIcon = ({ className, width = 16, height = 16, stroke = "currentColor" }) => {
|
|
97476
|
+
return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M2.66699 13V2.99998C2.66699 2.55795 2.84259 2.13403 3.15515 1.82147C3.46771 1.50891 3.89163 1.33331 4.33366 1.33331H12.667C12.8438 1.33331 13.0134 1.40355 13.1384 1.52858C13.2634 1.6536 13.3337 1.82317 13.3337 1.99998V14C13.3337 14.1768 13.2634 14.3464 13.1384 14.4714C13.0134 14.5964 12.8438 14.6666 12.667 14.6666H4.33366C3.89163 14.6666 3.46771 14.4911 3.15515 14.1785C2.84259 13.8659 2.66699 13.442 2.66699 13ZM2.66699 13C2.66699 12.558 2.84259 12.134 3.15515 11.8215C3.46771 11.5089 3.89163 11.3333 4.33366 11.3333H13.3337", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M5.33301 8.66667L7.99967 4L10.6663 8.66667", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M6.06641 7.33331H9.86641", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
|
|
97477
|
+
};
|
|
97129
97478
|
const CONFIG_OPTIONS = [
|
|
97479
|
+
{
|
|
97480
|
+
id: "language",
|
|
97481
|
+
titleId: "Language",
|
|
97482
|
+
descriptionId: "Select the language options.",
|
|
97483
|
+
IconComponent: LanguageIcon
|
|
97484
|
+
},
|
|
97130
97485
|
{
|
|
97131
97486
|
id: "microphone",
|
|
97132
97487
|
titleId: "Microphone",
|
|
97133
|
-
descriptionId: "Select the input microphone to ensure proper functioning
|
|
97134
|
-
IconComponent: MicrophoneIcon
|
|
97135
|
-
isImplemented: true
|
|
97488
|
+
descriptionId: "Select the input microphone to ensure proper functioning",
|
|
97489
|
+
IconComponent: MicrophoneIcon
|
|
97136
97490
|
},
|
|
97137
97491
|
{
|
|
97138
|
-
id: "
|
|
97139
|
-
titleId: "
|
|
97140
|
-
descriptionId: "
|
|
97141
|
-
IconComponent:
|
|
97142
|
-
isImplemented: true
|
|
97492
|
+
id: "chat",
|
|
97493
|
+
titleId: "Chat",
|
|
97494
|
+
descriptionId: "Customize the patient summary and chat sources.",
|
|
97495
|
+
IconComponent: ChatIcon
|
|
97143
97496
|
},
|
|
97144
97497
|
{
|
|
97145
97498
|
id: "template",
|
|
97146
97499
|
titleId: "Clinical note template",
|
|
97147
|
-
descriptionId: "Customize the clinical note
|
|
97148
|
-
IconComponent: DocumentTemplateIcon
|
|
97149
|
-
isImplemented: true
|
|
97150
|
-
// Now implemented
|
|
97500
|
+
descriptionId: "Customize the clinical note depending on the report you are filling out.",
|
|
97501
|
+
IconComponent: DocumentTemplateIcon
|
|
97151
97502
|
},
|
|
97152
97503
|
{
|
|
97153
97504
|
id: "dictionary",
|
|
97154
97505
|
titleId: "Clinical dictionary",
|
|
97155
97506
|
descriptionId: "Customize clinical language and medication format",
|
|
97156
|
-
IconComponent: BookTextIcon
|
|
97157
|
-
isImplemented: true
|
|
97507
|
+
IconComponent: BookTextIcon
|
|
97158
97508
|
}
|
|
97159
97509
|
];
|
|
97160
97510
|
const CONFIG_UI_CONSTANTS = {
|
|
@@ -97184,7 +97534,6 @@ const useConfigurationLogic = () => {
|
|
|
97184
97534
|
const IconComponent = option.IconComponent;
|
|
97185
97535
|
return {
|
|
97186
97536
|
id: option.id,
|
|
97187
|
-
isImplemented: option.isImplemented,
|
|
97188
97537
|
title: formatMessage2({ id: option.titleId }),
|
|
97189
97538
|
description: formatMessage2({ id: option.descriptionId }),
|
|
97190
97539
|
icon: reactExports.createElement(IconComponent, {
|
|
@@ -97421,7 +97770,7 @@ const LanguageSelector = () => {
|
|
|
97421
97770
|
const { code: code2 } = await getLanguageByCode(value);
|
|
97422
97771
|
await updateLanguage(code2);
|
|
97423
97772
|
};
|
|
97424
|
-
return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: langOptions, onChange: handleLanguageChange, selectedNumber, className: "w-full" }) });
|
|
97773
|
+
return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: langOptions, onChange: handleLanguageChange, selectedNumber, className: "w-full", maxVisibleItems: 3 }) });
|
|
97425
97774
|
};
|
|
97426
97775
|
const TranscriptionLanguageSelector = () => {
|
|
97427
97776
|
const { updateTranscriptionLanguage, transcriptionLanguage } = useSettingsContext();
|
|
@@ -97438,7 +97787,7 @@ const TranscriptionLanguageSelector = () => {
|
|
|
97438
97787
|
logger.settingsError("Error updating transcription language:", error);
|
|
97439
97788
|
}
|
|
97440
97789
|
};
|
|
97441
|
-
return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "transcription-language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: transcriptionLanguageOptions, onChange: handleTranscriptionLanguageChange, selectedNumber: getSelectedIndex, className: "w-full" }) });
|
|
97790
|
+
return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "transcription-language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: transcriptionLanguageOptions, onChange: handleTranscriptionLanguageChange, selectedNumber: getSelectedIndex, className: "w-full", maxVisibleItems: 4 }) });
|
|
97442
97791
|
};
|
|
97443
97792
|
const ConfigSection = ({ description, children, className = "" }) => {
|
|
97444
97793
|
return jsxRuntimeExports.jsxs("div", { className: `omniscribe_config-language-section ${className}`.trim(), children: [description && jsxRuntimeExports.jsx("p", { className: "omniscribe_config-subscreen-description", children: description }), children] });
|
|
@@ -97446,14 +97795,163 @@ const ConfigSection = ({ description, children, className = "" }) => {
|
|
|
97446
97795
|
const Language = ({ onBack }) => {
|
|
97447
97796
|
const { formatMessage: formatMessage2 } = useIntl();
|
|
97448
97797
|
const { chatApp } = useApiConfigContext();
|
|
97449
|
-
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage2({ id: "Language
|
|
97798
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage2({ id: "Language" }), onBack }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-subscreen-content", children: [jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage2({
|
|
97450
97799
|
id: "Select the interface language and the language in which the clinical note is generated"
|
|
97451
97800
|
}), children: jsxRuntimeExports.jsx(LanguageSelector, {}) }), !chatApp && jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage2({
|
|
97452
97801
|
id: "Select the language for audio transcription"
|
|
97453
97802
|
}), children: jsxRuntimeExports.jsx(TranscriptionLanguageSelector, {}) })] }), jsxRuntimeExports.jsx(VersionSection, {})] });
|
|
97454
97803
|
};
|
|
97455
|
-
|
|
97456
|
-
|
|
97804
|
+
const Toggle = ({ checked, onChange, label, enabledText = "Enabled", disabledText = "Disabled", disabled = false, className = "", id: id2 }) => {
|
|
97805
|
+
const handleClick = () => {
|
|
97806
|
+
if (!disabled) {
|
|
97807
|
+
onChange(!checked);
|
|
97808
|
+
}
|
|
97809
|
+
};
|
|
97810
|
+
const handleKeyDown = (e) => {
|
|
97811
|
+
if ((e.key === "Enter" || e.key === " ") && !disabled) {
|
|
97812
|
+
e.preventDefault();
|
|
97813
|
+
onChange(!checked);
|
|
97814
|
+
}
|
|
97815
|
+
};
|
|
97816
|
+
return jsxRuntimeExports.jsxs("div", { className: `omniscribe_toggle-container ${className}`.trim(), children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_toggle-label", children: label }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_toggle-wrapper", children: [jsxRuntimeExports.jsx("div", { className: `omniscribe_toggle-switch ${checked ? "omniscribe_toggle-switch-checked" : ""} ${disabled ? "omniscribe_toggle-switch-disabled" : ""}`.trim(), onClick: handleClick, onKeyDown: handleKeyDown, role: "switch", "aria-checked": checked, "aria-labelledby": id2, tabIndex: disabled ? -1 : 0, children: jsxRuntimeExports.jsx("div", { className: "omniscribe_toggle-thumb" }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_toggle-status", children: checked ? enabledText : disabledText })] })] });
|
|
97817
|
+
};
|
|
97818
|
+
const Separator = (_F) => {
|
|
97819
|
+
var _G = _F, { className = "", orientation = "horizontal", decorative = true } = _G, props = __objRest(_G, ["className", "orientation", "decorative"]);
|
|
97820
|
+
return jsxRuntimeExports.jsx("div", __spreadValues({ className: `omniscribe_separator omniscribe_separator--${orientation} ${className}`.trim(), role: !decorative ? "separator" : void 0, "aria-orientation": !decorative ? orientation : void 0 }, props));
|
|
97821
|
+
};
|
|
97822
|
+
const ExternalLinkIcon = ({ className, onClick }) => jsxRuntimeExports.jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", className, onClick, style: { cursor: onClick ? "pointer" : "default" }, children: [jsxRuntimeExports.jsx("path", { d: "M7.5 1.5H10.5V4.5", stroke: "#105BDB", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M5 7L10.5 1.5", stroke: "#105BDB", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M9 6.5V9.5C9 9.76522 8.89464 10.0196 8.70711 10.2071C8.51957 10.3946 8.26522 10.5 8 10.5H2.5C2.23478 10.5 1.98043 10.3946 1.79289 10.2071C1.60536 10.0196 1.5 9.76522 1.5 9.5V4C1.5 3.73478 1.60536 3.48043 1.79289 3.29289C1.98043 3.10536 2.23478 3 2.5 3H5.5", stroke: "#105BDB", strokeLinecap: "round", strokeLinejoin: "round" })] });
|
|
97823
|
+
const SourceItem = ({ source, onToggle }) => {
|
|
97824
|
+
const handleIconClick = () => {
|
|
97825
|
+
if (source.url) {
|
|
97826
|
+
window.open(source.url, "_blank", "noopener,noreferrer");
|
|
97827
|
+
}
|
|
97828
|
+
};
|
|
97829
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_source-item", children: [jsxRuntimeExports.jsxs("label", { className: "omniscribe_source-label", children: [jsxRuntimeExports.jsx("input", { type: "checkbox", checked: source.selected, onChange: () => onToggle(source.id), className: "omniscribe_source-checkbox" }), jsxRuntimeExports.jsx("span", { className: "omniscribe_source-name", children: source.name })] }), jsxRuntimeExports.jsx(ExternalLinkIcon, { className: "omniscribe_source-external-icon", onClick: handleIconClick })] });
|
|
97830
|
+
};
|
|
97831
|
+
const chatSourceToSource = (chatSource, selected) => __spreadProps(__spreadValues({}, chatSource), {
|
|
97832
|
+
selected
|
|
97833
|
+
});
|
|
97834
|
+
const SourceSelector = ({ sources, onSourceToggle, isPromptActive = false }) => {
|
|
97835
|
+
const { formatMessage: formatMessage2 } = useIntl();
|
|
97836
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_source-selector", children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_source-selector-title", children: formatMessage2({ id: "Sources" }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_source-selector-description", children: formatMessage2({
|
|
97837
|
+
id: "Select the sources you want the AI to use for reasoning"
|
|
97838
|
+
}) }), jsxRuntimeExports.jsx("div", { className: `omniscribe_source-list ${isPromptActive ? "omniscribe_source-list--compact" : ""}`.trim(), children: sources.map((source) => jsxRuntimeExports.jsx(SourceItem, { source: {
|
|
97839
|
+
id: source.url || source.title || "unknown",
|
|
97840
|
+
// Use URL as primary ID for toggle functionality
|
|
97841
|
+
name: source.title,
|
|
97842
|
+
// Map title to name
|
|
97843
|
+
selected: source.selected,
|
|
97844
|
+
url: source.url
|
|
97845
|
+
// Pass URL for external links
|
|
97846
|
+
}, onToggle: onSourceToggle }, source.url || source.title || "unknown")) })] });
|
|
97847
|
+
};
|
|
97848
|
+
const PromptCustomization = ({ localPrompt, characterCount, maxCharacters, onPromptChange, onPromptBlur }) => {
|
|
97849
|
+
const { formatMessage: formatMessage2 } = useIntl();
|
|
97850
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-prompt-section", children: [jsxRuntimeExports.jsx("h3", { className: "omniscribe_chat-prompt-title", children: formatMessage2({ id: "Patient summary customization" }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-prompt-container", children: [jsxRuntimeExports.jsx("textarea", { className: "omniscribe_chat-prompt-textarea", value: localPrompt, onChange: onPromptChange, onBlur: onPromptBlur, placeholder: formatMessage2({
|
|
97851
|
+
id: "Don't leave out relevant information..."
|
|
97852
|
+
}), rows: 4 }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-character-count", children: [characterCount, "/", maxCharacters, " ", formatMessage2({ id: "{count} characters" }, { count: "" }).replace(/\d+ /, "")] })] })] });
|
|
97853
|
+
};
|
|
97854
|
+
const useDebounce = (value, delay) => {
|
|
97855
|
+
const [debouncedValue, setDebouncedValue] = reactExports.useState(value);
|
|
97856
|
+
reactExports.useEffect(() => {
|
|
97857
|
+
const handler = setTimeout(() => {
|
|
97858
|
+
setDebouncedValue(value);
|
|
97859
|
+
}, delay);
|
|
97860
|
+
return () => {
|
|
97861
|
+
clearTimeout(handler);
|
|
97862
|
+
};
|
|
97863
|
+
}, [value, delay]);
|
|
97864
|
+
return debouncedValue;
|
|
97865
|
+
};
|
|
97866
|
+
const Chat = ({ onBack }) => {
|
|
97867
|
+
const { formatMessage: formatMessage2 } = useIntl();
|
|
97868
|
+
const { summary, updateSummary, availableSources = [], sources: settingsSources = [], updateSources } = useSettingsContext();
|
|
97869
|
+
const [selectedSources, setSelectedSources] = reactExports.useState(() => Array.isArray(settingsSources) && settingsSources.length > 0 ? settingsSources : availableSources);
|
|
97870
|
+
const isSavingSourcesRef = reactExports.useRef(false);
|
|
97871
|
+
const pendingSourcesRef = reactExports.useRef(null);
|
|
97872
|
+
const [characterCount, setCharacterCount] = reactExports.useState(0);
|
|
97873
|
+
const [localPrompt, setLocalPrompt] = reactExports.useState("");
|
|
97874
|
+
const [isInitialized, setIsInitialized] = reactExports.useState(false);
|
|
97875
|
+
const maxCharacters = 1e3;
|
|
97876
|
+
const currentSummary = reactExports.useMemo(() => ({
|
|
97877
|
+
prompt: typeof (summary == null ? void 0 : summary.prompt) === "string" ? summary.prompt : "",
|
|
97878
|
+
isEnabled: typeof (summary == null ? void 0 : summary.isEnabled) === "boolean" ? summary.isEnabled : false
|
|
97879
|
+
}), [summary]);
|
|
97880
|
+
const debouncedPrompt = useDebounce(localPrompt, 500);
|
|
97881
|
+
reactExports.useEffect(() => {
|
|
97882
|
+
setLocalPrompt(currentSummary.prompt);
|
|
97883
|
+
setCharacterCount(currentSummary.prompt.length);
|
|
97884
|
+
setIsInitialized(true);
|
|
97885
|
+
}, [summary]);
|
|
97886
|
+
reactExports.useEffect(() => {
|
|
97887
|
+
if (isInitialized && debouncedPrompt !== currentSummary.prompt && updateSummary && !(debouncedPrompt === "" && currentSummary.prompt !== "")) {
|
|
97888
|
+
const newConfig = __spreadProps(__spreadValues({}, currentSummary), { prompt: debouncedPrompt });
|
|
97889
|
+
updateSummary(newConfig).catch((error) => {
|
|
97890
|
+
logger.settingsError("Error updating summary prompt:", error);
|
|
97891
|
+
});
|
|
97892
|
+
}
|
|
97893
|
+
}, [debouncedPrompt, currentSummary, updateSummary, isInitialized]);
|
|
97894
|
+
const handleToggleChange = async (enabled) => {
|
|
97895
|
+
if (!updateSummary)
|
|
97896
|
+
return;
|
|
97897
|
+
const newConfig = __spreadProps(__spreadValues({}, currentSummary), { isEnabled: enabled });
|
|
97898
|
+
try {
|
|
97899
|
+
await updateSummary(newConfig);
|
|
97900
|
+
} catch (error) {
|
|
97901
|
+
logger.settingsError("Error updating summary toggle:", error);
|
|
97902
|
+
}
|
|
97903
|
+
};
|
|
97904
|
+
const handlePromptChange = (e) => {
|
|
97905
|
+
const value = e.target.value;
|
|
97906
|
+
if (value.length <= maxCharacters) {
|
|
97907
|
+
setLocalPrompt(value);
|
|
97908
|
+
setCharacterCount(value.length);
|
|
97909
|
+
}
|
|
97910
|
+
};
|
|
97911
|
+
const handlePromptBlur = async () => {
|
|
97912
|
+
if (localPrompt !== currentSummary.prompt && updateSummary) {
|
|
97913
|
+
const newConfig = __spreadProps(__spreadValues({}, currentSummary), { prompt: localPrompt });
|
|
97914
|
+
try {
|
|
97915
|
+
await updateSummary(newConfig);
|
|
97916
|
+
} catch (error) {
|
|
97917
|
+
logger.settingsError("Error updating summary on blur:", error);
|
|
97918
|
+
}
|
|
97919
|
+
}
|
|
97920
|
+
};
|
|
97921
|
+
const saveSourcesNow = async (sources) => {
|
|
97922
|
+
isSavingSourcesRef.current = true;
|
|
97923
|
+
try {
|
|
97924
|
+
await updateSources(sources);
|
|
97925
|
+
} catch (error) {
|
|
97926
|
+
logger.settingsError("Error saving sources:", error);
|
|
97927
|
+
} finally {
|
|
97928
|
+
isSavingSourcesRef.current = false;
|
|
97929
|
+
if (pendingSourcesRef.current) {
|
|
97930
|
+
const next = pendingSourcesRef.current;
|
|
97931
|
+
pendingSourcesRef.current = null;
|
|
97932
|
+
saveSourcesNow(next);
|
|
97933
|
+
}
|
|
97934
|
+
}
|
|
97935
|
+
};
|
|
97936
|
+
const handleSourceToggle = (sourceUrl) => {
|
|
97937
|
+
const source = availableSources.find((s2) => s2.url === sourceUrl);
|
|
97938
|
+
if (!source)
|
|
97939
|
+
return;
|
|
97940
|
+
setSelectedSources((prev) => {
|
|
97941
|
+
const isSelected = prev.some((s2) => s2.url === sourceUrl);
|
|
97942
|
+
const next = isSelected ? prev.filter((s2) => s2.url !== sourceUrl) : [...prev, source];
|
|
97943
|
+
if (isSavingSourcesRef.current) {
|
|
97944
|
+
pendingSourcesRef.current = next;
|
|
97945
|
+
} else {
|
|
97946
|
+
saveSourcesNow(next);
|
|
97947
|
+
}
|
|
97948
|
+
return next;
|
|
97949
|
+
});
|
|
97950
|
+
};
|
|
97951
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage2({ id: "Chat" }), onBack }), jsxRuntimeExports.jsx("div", { className: "omniscribe_config-subscreen-content", children: jsxRuntimeExports.jsx(ConfigSection, { children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-config", children: [jsxRuntimeExports.jsx(Toggle, { checked: currentSummary.isEnabled, onChange: handleToggleChange, label: formatMessage2({ id: "Show patient summary first" }), enabledText: formatMessage2({ id: "Enabled" }), disabledText: formatMessage2({ id: "Disabled" }) }), currentSummary.isEnabled && jsxRuntimeExports.jsx(PromptCustomization, { localPrompt, characterCount, maxCharacters, onPromptChange: handlePromptChange, onPromptBlur: handlePromptBlur }), availableSources && availableSources.length > 0 && jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Separator, {}), jsxRuntimeExports.jsx(SourceSelector, { sources: availableSources.map((source) => chatSourceToSource(source, selectedSources.some((s2) => s2.url === source.url))), onSourceToggle: handleSourceToggle, isPromptActive: currentSummary.isEnabled })] })] }) }) })] });
|
|
97952
|
+
};
|
|
97953
|
+
function Input(_H) {
|
|
97954
|
+
var _I = _H, { className = "omniscribe_input", type = "text", error, showError = true, errorClassName = "omniscribe_input-error", isValid = true } = _I, props = __objRest(_I, ["className", "type", "error", "showError", "errorClassName", "isValid"]);
|
|
97457
97955
|
const inputClassName = `${className} ${!isValid && error ? "invalid" : ""}`.trim();
|
|
97458
97956
|
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_input-container", children: [jsxRuntimeExports.jsx("input", __spreadValues({ type, "data-slot": "input", className: inputClassName, "aria-invalid": !isValid, "aria-describedby": error && showError ? `${props.id}-error` : void 0 }, props)), showError && error && jsxRuntimeExports.jsx("span", { id: `${props.id}-error`, className: errorClassName, role: "alert", "aria-live": "polite", children: error })] });
|
|
97459
97957
|
}
|
|
@@ -97739,7 +98237,7 @@ const useTemplateLogic = (onBack) => {
|
|
|
97739
98237
|
});
|
|
97740
98238
|
}
|
|
97741
98239
|
const templateString = JSON.stringify(modifiedTemplate);
|
|
97742
|
-
|
|
98240
|
+
const templateId = contextTemplateId;
|
|
97743
98241
|
const settingsToUpdate = {
|
|
97744
98242
|
template: templateString
|
|
97745
98243
|
};
|
|
@@ -97795,6 +98293,7 @@ const useScreenRenderers = (handleBackToMain) => {
|
|
|
97795
98293
|
const screenRenderers = reactExports.useMemo(() => ({
|
|
97796
98294
|
microphone: () => jsxRuntimeExports.jsx(Microphone, { onBack: handleBackToMain }),
|
|
97797
98295
|
language: () => jsxRuntimeExports.jsx(Language, { onBack: handleBackToMain }),
|
|
98296
|
+
chat: () => jsxRuntimeExports.jsx(Chat, { onBack: handleBackToMain }),
|
|
97798
98297
|
template: () => jsxRuntimeExports.jsx(Template, { onBack: handleBackToMain }),
|
|
97799
98298
|
dictionary: () => jsxRuntimeExports.jsx(Dictionary, { onBack: handleBackToMain })
|
|
97800
98299
|
}), [handleBackToMain]);
|
|
@@ -97838,7 +98337,7 @@ const App = ({ title }) => {
|
|
|
97838
98337
|
if (showConfig) {
|
|
97839
98338
|
return jsxRuntimeExports.jsx(Configuration, {});
|
|
97840
98339
|
}
|
|
97841
|
-
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(AudioRecorder, { isChat: shouldShowChat }), jsxRuntimeExports.jsx("div", { className: shouldShowChat ? "omniscribe_visible" : "omniscribe_hidden", children: jsxRuntimeExports.jsx(Chat, {}) })] });
|
|
98340
|
+
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(AudioRecorder, { isChat: shouldShowChat }), jsxRuntimeExports.jsx("div", { className: shouldShowChat ? "omniscribe_visible" : "omniscribe_hidden", children: jsxRuntimeExports.jsx(Chat$1, {}) })] });
|
|
97842
98341
|
};
|
|
97843
98342
|
return jsxRuntimeExports.jsx(OmniscribeContainer, { width: WIDTH, height: HEIGHT, children: jsxRuntimeExports.jsxs(OmniscribeLayout, { children: [jsxRuntimeExports.jsx(MinimizeButton, { title }), jsxRuntimeExports.jsx(UtilityButtons, { isChat, setIsChat, showConfig, setShowConfig }), renderContent(), (toast == null ? void 0 : toast.visible) && jsxRuntimeExports.jsx(Toast, {})] }) });
|
|
97844
98343
|
};
|
|
@@ -100116,7 +100615,7 @@ const zig$1 = /* @__PURE__ */ _mergeNamespaces({
|
|
|
100116
100615
|
__proto__: null,
|
|
100117
100616
|
default: zig
|
|
100118
100617
|
}, [zigExports]);
|
|
100119
|
-
const injectedCss = "/* Source: index.css */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap');\n\n#Omniscribe {\n font-family: 'Lato', sans-serif;\n /* define colors */\n --active: #0a3785;\n --background-primary: #e7effd;\n --warning: #ffc107;\n --grey-50: #f9fafb;\n --grey-100: #f6f7f9;\n --grey-200: #e5e7eb;\n --grey-700: #6f7d95;\n --grey-800: #4a5364;\n --grey-900: #111827;\n --active-black: #252a32;\n --placeholder: #a4adbc;\n --line: #e5e7ec;\n --custom-black: #13161a;\n --primary: #105bdb;\n --border: #e5e7ec;\n --white: #fdfdfd;\n --omni: #daf2ff;\n --omni-secondary: rgba(219, 219, 219, 0.75);\n --primary-button: #132caa;\n --primary-text: #36a3cf;\n --primary-900: #061044;\n --blue-100: #dbeafe;\n --blue-200: #bfdbfe;\n --blue-500: #105bdb;\n --blue-600: #2563eb;\n --blue-700: #1d4ed8;\n --report: var(--primary-button);\n --gray: #616161;\n --black: #1b2125;\n --sky-blue: #dbecff;\n --blue: #5886ba;\n --blue-600: #0b1962;\n --background: #f3f3f3bb;\n --foreground: oklch(0.145 0 0);\n --primary: #061044;\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --light-border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.87 0 0);\n --radius: 0.625rem;\n /* TEXT */\n --text-3xs: 8px;\n --text-3xs--line-height: calc(0.5 / 0.25);\n --text-2xs: 10px;\n --text-2xs--line-height: calc(0.75 / 0.5);\n --text-xs: 12px;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 14px;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 16px;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 18px;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 20px;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 22px;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 24px;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 26px;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 28px;\n --text-5xl--line-height: 1;\n --text-6xl: 30px;\n --text-6xl--line-height: 1;\n --text-7xl: 32px;\n --text-7xl--line-height: 1;\n --text-8xl: 34px;\n --text-8xl--line-height: 1;\n --text-9xl: 46px;\n --text-9xl--line-height: 1;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n /* custom colors */\n --color-white: var(--white);\n --color-light-border: var(--light-border);\n --color-omni: var(--omni);\n --color-report: var(--report);\n --color-omni-secondary: var(--omni-secondary);\n --color-primary-text: var(--primary-text);\n --color-primary-900: var(--primary-900);\n --color-blue-500: var(--blue-500);\n --color-gray: var(--gray);\n --color-black: var(--black);\n --color-sky-blue: var(--sky-blue);\n --color-cream: var(--cream);\n --color-pink: var(--pink);\n --color-blue: var(--blue);\n --color-blue-600: var(--blue-600);\n --color-sky-blue-100: var(--sky-blue-100);\n --color-white-2: var(--white-2);\n --color-primary-700: var(--primary-700);\n --color-primary-500: var(--primary-500);\n --color-neutral-800: var(--neutral-800);\n --color-blue-2: var(--blue-2);\n --color-light-blue: var(--light-blue);\n --color-primary-100: var(--primary-100);\n --color-primary-300: var(--primary-300);\n --color-black-2: var(--black-2);\n --color-primary-button: var(--primary-button);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: #f3f4f6;\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-zinc-900: oklch(21% 0.006 285.885);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n /* rounded */\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n /* spacing */\n --spacing-layout-w: var(--layout-w);\n --spacing-layout-h: var(--layout-h);\n --spacing: 0.25rem;\n /* size */\n --container-md: 28rem;\n --container-xl: 36rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n\n --tracking-tight: -0.025em;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n a,\n p,\n textarea,\n button,\n span,\n h1,\n h2,\n h3,\n h4,\n h5,\n div {\n font-family: 'Lato', sans-serif;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n .no-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n .shadow-inner-right {\n box-shadow: inset -9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .shadow-inner-left {\n box-shadow: inset 9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .annotation {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-normal);\n }\n .annotation-semi {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .annotation-bold {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .info {\n font-size: var(--text-2xs);\n font-weight: var(--font-weight-normal);\n }\n .info-semi {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .info-bold {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .text-p {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-normal);\n }\n .text-p-semi {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .text-p-bold {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .omniscribe_shadow-xl {\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n }\n .scrollbar-pretty {\n &::-webkit-scrollbar {\n width: 6px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background-color: var(--omni-secondary);\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n\n .omniscribe_visible {\n visibility: visible;\n display: flex;\n flex: 1;\n }\n .omniscribe_hidden {\n display: none;\n height: 0;\n }\n\n .omniscribe_animate-spin {\n animation: spin 1s linear infinite;\n }\n}\n\n\n/* Source: modules/audio-recorder/components/audio-visualizer/AudioVisualizer.css */\n.omniscribe_audio-visualizer-container {\n display: flex;\n border-radius: var(--radius-md);\n width: calc(var(--spacing) * 60);\n align-items: center;\n justify-content: center;\n height: 60px;\n background: transparent;\n overflow: hidden;\n}\n\n.omniscribe_audio-visualizer-subcontainer {\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_audio-visualizer-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding-inline: 1px;\n margin-top: 0.25rem;\n}\n\n.omniscribe_audio-visualizer-item {\n width: 2px;\n height: 2px;\n background-color: rgba(48, 54, 68, 0.85);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 50ms;\n}\n\n.lk-audio-bar-visualizer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n background: var(--lk-bg);\n gap: var(--lk-va-bar-gap, 24px);\n}\n.lk-audio-bar-visualizer > .lk-audio-bar {\n transform-origin: 'center';\n height: 100%;\n width: var(--lk-va-bar-width, 12px);\n border-radius: var(--lk-va-bar-border-radius, 32px);\n background-color: var(--lk-va-bar-bg, rgba(136, 136, 136, 0.2));\n transition: background-color 0.25s ease-out;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='speaking'] > .lk-audio-bar,\n.lk-audio-bar-visualizer > .lk-audio-bar.lk-highlighted,\n.lk-audio-bar-visualizer > [data-lk-highlighted='true'] {\n background-color: var(--lk-fg, rgb(136, 136, 136));\n transition: none;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='thinking'] {\n transition: background-color 0.15s ease-out;\n}\n\n\n/* Source: modules/audio-recorder/components/content-container/content-containter.css */\n.omniscribe_audio-content-container {\n background-color: var(--white);\n width: -webkit-fill-available;\n flex: 1 1 0 !important;\n min-height: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n overflow: hidden !important;\n}\n\n.omniscribe_audio-content-messages {\n color: var(--black);\n}\n\n.omniscribe_transcription-footer-container {\n position: sticky;\n display: flex;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-bottom: calc(var(--spacing) * 3);\n}\n\n.omniscribe_audio-content-render {\n color: var(--black);\n font-weight: var(--font-weight-medium);\n padding-block: 0.5rem;\n padding-inline: 0.75rem;\n margin-bottom: 0.25rem;\n}\n\n.omniscribe_patient {\n color: #db10c1;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_doctor {\n color: var(--blue-500);\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_speaker {\n color: #28a745;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_transcription {\n color: var(--black);\n}\n\n.omniscribe_transcription-down-btn-container {\n background-color: white;\n}\n\n.omniscribe_transcription-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Chrome, Safari, Edge (Webkit) */\n.omniscribe_audio-content-container > div::-webkit-scrollbar {\n width: 6px !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-thumb {\n border-radius: 10px !important;\n background-color: var(--omni-secondary) !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-track {\n background-color: transparent !important;\n}\n\n/* Firefox */\n.omniscribe_audio-content-container > div {\n scrollbar-width: thin !important;\n scrollbar-color: var(--omni-secondary) transparent !important;\n}\n\n\n/* Source: modules/audio-recorder/components/recorder-counter/RecorderCounter.css */\n.omniscribe_audio-recorder-timer {\n color: var(--blue-500);\n font-weight: 600; /* SemiBold */\n font-style: normal; /* SemiBold is a weight, not a style */\n font-size: var(--font-size-400); /* design token */\n line-height: var(--line-height-400); /* design token */\n letter-spacing: 0;\n text-align: center;\n}\n\n\n/* Source: modules/audio-recorder/components/report-button/ReportButton.css */\n.omniscribe_report-button-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n}\n.omniscribe_report-button-width {\n max-height: 32px;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width {\n max-height: 32px;\n background-color: var(--blue-500) !important;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width:hover {\n background-color: #0c48ad !important; /* darker shade of blue */\n}\n\n\n/* Source: modules/audio-recorder/components/toggle-record/ToggleRecord.css */\n.omniscribe_record-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.omniscribe_record-button-classname {\n background-color: transparent;\n border: none;\n padding: 4px;\n}\n\n.omniscribe_record-button {\n background-color: var(--primary-button);\n border-radius: 50%;\n cursor: pointer;\n width: 56px;\n height: 56px;\n align-items: center;\n justify-content: center;\n display: flex;\n transition-duration: 300ms;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_record-button-enabled {\n opacity: 100%;\n pointer-events: auto;\n scale: 110%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-not-enabled {\n opacity: 50%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-disabled {\n opacity: 50%;\n background-color: dimgray;\n pointer-events: none;\n}\n\n.omniscribe_record-enabled {\n width: 50px;\n height: 50px;\n background-color: var(--primary-button);\n animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n position: absolute;\n z-index: -1;\n border-radius: calc(infinity * 1px);\n opacity: 100%;\n}\n\n@keyframes ping {\n 75%,\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n\n/* Source: modules/audio-recorder/section/AudioRecorder.css */\n.omniscribe_audio-recorder {\n align-items: center;\n padding-block: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n background-color: var(--white);\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\n[dir='ltr'] .omniscribe_audio-recorder {\n border-bottom-left-radius: 12px;\n}\n\n[dir='rtl'] .omniscribe_audio-recorder {\n border-bottom-right-radius: 12px;\n border-bottom-left-radius: 0px;\n}\n\n.omniscribe_audio-recorder-container {\n display: flex;\n align-items: center;\n border: solid 1px var(--light-border);\n background-color: var(--white);\n max-height: 42px;\n border-radius: 9999px;\n border-width: 1px;\n justify-content: space-between;\n margin-bottom: 5px;\n flex: 1;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n padding-inline: calc(var(--spacing) * 2);\n}\n\n.omniscribe_audio-recorder-audio-container {\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: center;\n}\n\n.omniscribe_audio-recorder-refresh-btn {\n cursor: pointer;\n background-color: #f6f7f9;\n border-radius: 100px;\n transition:\n transform 0.3s ease,\n opacity 0.3s ease,\n background-color 0.3s ease;\n transform: scale(1);\n}\n.omniscribe_audio-recorder-refresh-btn-enabled {\n pointer-events: auto;\n opacity: 1;\n\n &:hover {\n transform: scale(1.15);\n }\n}\n.omniscribe_audio-recorder-refresh-btn-disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n.omniscribe_audio-recorder-audio-content-container {\n border: 1px solid #e5e7ec;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex: 1;\n border-radius: 8px;\n margin-top: 18px;\n padding-top: 8px;\n padding-inline: calc(var(--spacing) * 4);\n padding-bottom: 8px;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n}\n.omniscribe_audio-recorder-footer {\n border-top: 1px solid #e5e7ec;\n padding-top: 16px;\n margin-top: 12px;\n display: flex;\n width: 100%;\n}\n.omniscribe_audio-recorder-footer-content {\n padding-inline: calc(var(--spacing) * 4);\n width: 100%;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n.omniscribe_audio-recorder-audio-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n padding-block: 8px;\n}\n\n.omniscribe_audio-recorder-audio-star-icons {\n display: flex;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_audio-recorder-audio-feedback {\n color: #4a5364;\n}\n\n.omniscribe_audio-recorder-refresh-icon {\n color: #252a32;\n}\n\n.omniscribe_audio-recorder-star-icon {\n cursor: pointer;\n display: inline-block;\n}\n\n.omniscribe_audio-recorder-audio-star-container {\n position: relative;\n}\n\n\n/* Source: modules/chat/components/MicrophoneButton.css */\n/* Microphone Button Styles */\n.microphone-button {\n transition: all 150ms ease;\n border: none !important;\n background-color: white !important;\n box-shadow: none !important;\n margin-right: 3px;\n}\n\n.microphone-button--recording {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background-color: red !important;\n}\n\n/* Pulse animation for recording state */\n@keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n\n\n/* Source: modules/chat/components/SourcesModal.css */\n/* SourcesModal CSS Styles */\n\n/* Modal container */\n.omniscribe_modal-sources {\n width: 100%;\n right: 10px;\n bottom: 100px;\n}\n\n.omniscribe_header_description {\n font-size: 0.875rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n color: #6b7280;\n margin-top: 0.25rem;\n}\n\n.omniscribe_icon_blue {\n color: var(--blue-500);\n}\n\n/* Filter section */\n.omniscribe_filter_section {\n padding: 1.5rem 0 0 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.omniscribe_filter_buttons {\n display: flex;\n gap: 0.5rem;\n margin-bottom: 1rem;\n}\n\n.omniscribe_button_all {\n padding: 0.25rem 0.75rem;\n color: var(--blue-700);\n border: 1px solid var(--blue-700);\n background-color: var(--blue-100);\n border-radius: 9999px;\n font-size: 0.875rem;\n cursor: pointer;\n transition: all 0.2s;\n font-family: inherit;\n}\n\n.omniscribe_button_all:hover {\n background-color: var(--blue-200);\n color: var(--blue-700);\n}\n\n.omniscribe_button_specialty {\n padding: 0.25rem 0.75rem;\n font-size: 0.875rem;\n font-weight: 700;\n color: #4b5563;\n background-color: #f6f7f9;\n border: 1px solid #d1d5db;\n border-radius: 9999px;\n cursor: not-allowed;\n opacity: 0.6;\n font-family: inherit;\n}\n\n.omniscribe_sources_count {\n font-size: 0.75rem;\n color: #6b7280;\n margin-bottom: 1rem;\n}\n\n/* Sources list section */\n.omniscribe_sources_container {\n padding: 0 0 1rem 0;\n max-height: 20rem;\n overflow-y: auto;\n}\n\n.omniscribe_sources_list {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n/* Source item */\n.omniscribe_source_item {\n padding: 0.75rem;\n border-radius: 8px;\n border: 1px solid var(--grey-200);\n cursor: pointer;\n transition: all 0.2s;\n background-color: white;\n margin: 0 0 0.5rem 0;\n}\n\n.omniscribe_source_item_selected {\n border-color: var(--blue-500);\n background-color: #eff6ff;\n}\n\n.omniscribe_source_content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.omniscribe_source_title_container {\n flex: 1;\n}\n\n.omniscribe_source_link {\n font-weight: 700;\n font-size: 14px;\n color: var(--blue-600) !important;\n text-decoration: none;\n transition: color 0.2s;\n}\n\n.omniscribe_source_link:hover {\n color: var(--blue-700) !important;\n}\n\n/* Footer section */\n.omniscribe_footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem 0 0 0;\n border-top: 1px solid var(--grey-200);\n margin-top: 1rem;\n}\n\n.omniscribe_button_outline {\n padding: 0.5rem 1rem;\n border: 1px solid #d1d5db;\n background-color: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n font-size: 0.875rem;\n font-weight: 500;\n font-family: inherit;\n}\n\n.omniscribe_button_outline:hover {\n background-color: var(--color-gray-100);\n border-color: #9ca3af;\n}\n\n.omniscribe_button_primary {\n padding: 0.5rem 1rem;\n background-color: var(--blue-500);\n color: white;\n border: 1px solid var(--blue-500);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n font-size: 0.875rem;\n font-weight: 500;\n font-family: inherit;\n}\n\n.omniscribe_button_primary:hover {\n background-color: var(--blue-600);\n border-color: var(--blue-600);\n}\n\n/* Utility classes */\n.omniscribe_hidden {\n display: none;\n}\n\n\n/* Source: modules/chat/components/thread/Thread.css */\n.omniscribe_thread-container {\n flex: 1;\n border-style: none;\n display: flex;\n overflow: hidden;\n background: transparent;\n bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n margin-block: calc(var(--spacing) * 0) /* 0rem = 0px */;\n right: 20px;\n border-bottom-left-radius: 12px;\n width: 100%;\n}\n\n.omniscribe_thread-container-history-cont {\n position: relative;\n display: flex;\n width: 0%;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-container-history-cont-open {\n width: 33%;\n}\n\n.omniscribe_thread-container-history-subcont {\n position: absolute;\n width: 100%;\n height: 100%;\n border-right-width: 1px;\n border-color: var(--color-slate-200)\n /* oklch(92.9% 0.013 255.508) = #e2e8f0 */;\n overflow: hidden;\n z-index: 20;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n.omniscribe_thread-container-history-subcont-open {\n translate: calc(var(--spacing) * 0);\n}\n\n.omniscribe_thread-container-history-subcont-close {\n translate: calc(300px * -1);\n}\n\n.omniscribe_thread-container-history-content {\n position: relative;\n height: 100%;\n width: 100%;\n}\n\n.omniscribe_thread-content-container {\n display: flex;\n flex: 1;\n width: 100%;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-content-btn-container {\n top: 0;\n left: 0;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 3);\n padding: calc(var(--spacing) * 2);\n padding-left: calc(var(--spacing) * 4);\n z-index: 10;\n}\n.omniscribe_absolute {\n position: absolute;\n}\n\n.omniscribe_relative {\n position: relative;\n}\n\n.omniscribe_thread-content-btn {\n background-color: #b2c3d6;\n}\n.omniscribe_thread-content-btn:hover {\n background-color: var(--color-gray-100);\n}\n\n.omniscribe_thread-content-btn-started-container {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: calc(var(--spacing) * 2);\n position: relative;\n}\n\n.omniscribe_thread-content-btn-started-subcontainer {\n position: absolute;\n left: 0;\n z-index: 10;\n top: calc(var(--spacing) * 2);\n}\n\n.omniscribe_thread-stick-to-bottom {\n font-size: 14px;\n}\n.omniscribe_thread-stick-to-bottom-content {\n position: absolute;\n inset: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n display: grid;\n grid-template-rows: 1fr auto;\n}\n\n.omniscribe_thread-stick-to-bottom-content-class {\n padding-bottom: calc(var(--spacing) * 13);\n display: flex;\n flex-direction: column;\n padding-left: calc(var(--spacing) * 4);\n padding-right: calc(var(--spacing) * 4);\n min-width: 0;\n}\n\n.omniscribe_thread-footer-container {\n position: sticky;\n display: flex;\n background-color: white;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-inline: calc(var(--spacing) * 4);\n padding-top: calc(var(--spacing) * 1);\n border-bottom: 1px solid #e5e7ec;\n border-bottom-left-radius: 0.5rem;\n}\n\n.omniscribe_thread-footer-scroll-to-bottom {\n position: fixed;\n bottom: 17%;\n}\n.omniscribe_thread-footer-form-container {\n background-color: white;\n border-radius: 1rem;\n border: solid 1px var(--border);\n box-shadow: 0px 4px 4px 0px #00000040;\n margin-inline: auto;\n margin-bottom: calc(0.25rem /* 4px */ * 2);\n width: 100%;\n max-width: 48rem;\n position: relative;\n z-index: 10;\n}\n.omniscribe_thread-footer-form {\n display: grid;\n grid-template-rows: 1fr auto;\n max-width: var(--container-3xl) /* 48rem = 768px */;\n margin-inline: auto;\n}\n.omniscribe_thread-footer-textarea {\n resize: none;\n width: 100%;\n min-height: 20px;\n max-height: 56px;\n height: 20px;\n padding: 0 !important;\n overflow-y: auto;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n.omniscribe_thread-footer-form-content {\n position: relative;\n display: flex;\n align-items: center;\n right: 0;\n bottom: 0;\n width: 100%;\n padding-block: 6px;\n}\n.omniscribe_thread-footer-form-btn {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n}\n.omniscribe_thread-footer-form-left-btns {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.omniscribe_thread-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n.omniscribe_thread-footer-btns-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n}\n\n.omniscribe_thread-footer-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n margin-bottom: 8px;\n}\n\n.omniscribe_thread-no-sources {\n width: 10px;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenu.css */\n.omniscribe_link-menu-container {\n width: 18rem;\n border-radius: 0.5rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n border: 1px solid var(--grey-200);\n background-color: #ffffff;\n}\n\n.omniscribe_link-menu-navigation {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: var(--grey-50);\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n\n.omniscribe_nav-button {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0.125rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n color: #6b7280;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_nav-button:hover {\n background-color: var(--color-gray-100);\n color: #374151;\n}\n\n.omniscribe_nav-button:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow: 0 0 0 2px #3b82f6;\n}\n\n.omniscribe_nav-button:active {\n background-color: var(--grey-200);\n}\n\n.omniscribe_nav-icon {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n.omniscribe_page-indicator {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: #4b5563;\n}\n\n.omniscribe_link-menu-content {\n padding: 0.375rem;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenuCard.css */\n.omniscribe_card-link {\n display: block;\n border-radius: 0.5rem;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 200ms;\n background-color: #ffffff;\n border: 1px solid var(--grey-200);\n text-decoration: none;\n}\n\n.omniscribe_card {\n border: 0;\n box-shadow: none;\n border-radius: 0.5rem;\n margin: 0;\n padding: 0;\n}\n\n.omniscribe_card:hover {\n background-color: var(--grey-50);\n}\n\n.omniscribe_card-header {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: rgba(249, 250, 251, 0.5);\n}\n\n.omniscribe_favicon {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-icon {\n width: 1rem;\n height: 1rem;\n border-radius: 0.125rem;\n background-color: #d1d5db;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-text {\n font-size: 8px;\n font-weight: 700;\n color: var(--grey-600);\n text-transform: uppercase;\n}\n\n.omniscribe_card-title {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: var(--grey-800);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n min-width: 0;\n margin: 0;\n}\n\n.omniscribe_card-content {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.omniscribe_card-content > * + * {\n margin-top: 0.25rem;\n}\n\n.omniscribe_link-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n color: var(--color-activeblack, #000000);\n line-height: 1.375;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.omniscribe_snippet-text {\n font-size: 0.75rem;\n line-height: 1rem;\n color: #4b5563;\n line-height: 1.625;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupPill.css */\n.omniscribe_pill-container {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n margin-left: 0.125rem;\n margin-right: 0.125rem;\n}\n\n.omniscribe_pill-button {\n display: inline-flex;\n align-items: center;\n border-radius: 9999px;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n background-color: var(--blue-100);\n color: var(--blue-700);\n border: 1px solid var(--blue-200);\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.omniscribe_pill-button:hover {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-button:focus {\n background-color: var(--blue-200);\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow:\n 0 0 0 2px #3b82f6,\n 0 0 0 4px rgba(59, 130, 246, 0.1);\n}\n\n.omniscribe_pill-button--active {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-domain {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (min-width: 640px) {\n .omniscribe_pill-domain {\n max-width: 200px;\n }\n}\n\n.omniscribe_pill-counter {\n margin-left: 0.375rem;\n background-color: var(--blue-200);\n color: #1e40af;\n border-radius: 9999px;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n font-size: 10px;\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_menu-portal {\n position: absolute;\n z-index: 100;\n}\n\n\n/* Source: modules/chat/components/thread/components/PredefinedQuestions.css */\n.omniscribe_predefined-questions-container {\n margin-top: calc(var(--spacing) * 2) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n display: flex;\n flex-direction: column;\n}\n.omniscribe_predefined-questions-span {\n color: var(--black);\n}\n\n.omniscribe_predefined-title {\n margin-bottom: 8px;\n}\n\n.omniscribe_predefined-questions-msg-container {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_predefined-questions-content {\n background-color: #ecf9ff !important;\n text-align: left;\n padding-top: 4px;\n padding-right: 16px;\n padding-bottom: 4px;\n padding-left: 16px;\n border-radius: 4px;\n width: fit-content;\n height: fit-content;\n}\n\n.omniscribe_predefined-questions-btn-rounded {\n border-radius: 8px;\n}\n\n\n/* Source: modules/chat/components/thread/components/history/ThreadHistory.css */\n.omniscribe_thread-list-container {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-list-content {\n padding-bottom: calc(var(--spacing) * 16);\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.omniscribe_thread-list-item {\n width: 100%;\n padding-inline: 0;\n}\n\n.omniscribe_thread-list-btn {\n text-align: left;\n align-items: center !important;\n justify-content: flex-start !important;\n width: calc(100% - var(--spacing) * 2);\n border-radius: 4px !important;\n margin-bottom: 4px;\n font-weight: var(--font-weight-normal);\n padding-inline: calc(var(--spacing) * 1) !important;\n}\n\n.omniscribe_thread-list-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--Text-Active, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-loading {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n align-items: flex-start;\n justify-content: flex-start;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-history-loading-skeleton {\n width: 100%;\n height: calc(var(--spacing) * 10);\n}\n\n.omniscribe_thread-history-container {\n display: flex;\n flex-direction: column;\n border-right: 1px solid #e5e7ec;\n align-items: flex-start;\n justify-content: flex-start;\n /* gap: calc(var(--spacing) * 6); */\n height: 100%;\n flex-shrink: 0;\n}\n\n.omniscribe_thread-history-button-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* space between left group and back button */\n width: 92%;\n /* padding-top: calc(var(--spacing) * 2); */\n background: var(--Greyscale-100, #f6f7f9);\n /* padding-inline: calc(var(--spacing) * 2); */\n padding: 8px;\n}\n\n/* Flex container for the left group */\n.omniscribe_thread-history-left-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n /* space between icon and text */\n}\n\n.omniscribe_thread-history-left-text {\n color: var(--Greyscale-900, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1);\n background-color: color-mix(in oklab, var(--blue) 40%, transparent);\n width: stretch;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill-available;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_thread-history-no-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n width: 100%;\n}\n\n.omniscribe_thread-history-chat-started-btn {\n border: none;\n background: transparent;\n padding: 0px;\n display: flex;\n flex-direction: row;\n gap: calc(var(--spacing) * 2);\n align-items: center;\n cursor: pointer;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-history-chat-started-btn-text {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n font-weight: var(--font-weight-semibold);\n letter-spacing: var(--tracking-tight);\n}\n\n.omniscribe_thread-history-title {\n color: var(--Button-Primary-Active, #105bdb);\n font-family: var(--Font-Family-Omniscribe, Lato);\n font-size: var(--Font-Size-font-size-100, 12px) !important;\n font-style: normal;\n line-height: var(--Font-Line-Height-line-height-100, 14.4px) !important;\n /* 120% */\n letter-spacing: var(\n --Font-Letter-Spacing-letter-spacing-100,\n 0.05px\n ) !important;\n cursor: pointer;\n padding-inline: calc(var(--spacing) * 2) !important;\n}\n\n.omniscribe_thread-history-btn {\n border-radius: var(--Radius-radius-small, 4px) !important;\n background-color: var(--Greyscale-300, #e5e7ec) !important;\n cursor: pointer;\n\n &:hover {\n background-color: var(--Greyscale-300, #e5e7ec);\n }\n}\n\n.omniscribe_thread-tooltip {\n padding: calc(0.25rem /* 4px */ * 4);\n}\n\n\n/* Source: modules/chat/components/thread/components/markdown-text.css */\n.omniscribe_markdown-code-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 4) /* 1rem = 16px */;\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--color-zinc-900)\n /* oklch(21% 0.006 285.885) = #18181b */;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n color: var(--white);\n}\n\n.omniscribe_markdown-code-span {\n text-transform: lowercase;\n & > span {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n }\n}\n\n.omniscribe_markdown-h1 {\n margin-bottom: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-4xl) /* 2.25rem = 36px */;\n line-height: var(--text-4xl--line-height) /* calc(2.5 / 2.25) ≈ 1.1111 */;\n font-weight: var(--font-weight-extrabold) /* 800 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h2 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-3xl) /* 1.875rem = 30px */;\n line-height: var(--text-3xl--line-height) /* calc(2.25 / 1.875) ≈ 1.2 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h3 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-2xl);\n line-height: var(--text-2xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h4 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-xl);\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h5 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-size: var(--text-lg);\n line-height: var(--text-lg--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h6 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-p {\n margin-block: calc(var(--spacing) * 2.5);\n line-height: calc(var(--spacing) * 5);\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-a {\n color: var(--primary);\n font-weight: var(--font-weight-medium) /* 500 */;\n text-decoration-line: underline;\n text-underline-offset: 4px;\n overflow-wrap: break-word;\n}\n\n.omniscribe_markdown-blockquote {\n border-left-width: 2px;\n padding-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n font-style: italic;\n}\n\n.omniscribe_markdown-ul {\n list-style-type: disc;\n padding-inline-start: 20px;\n word-break: break-word;\n & > li {\n margin-top: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-ol {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n margin-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n list-style-type: decimal;\n & > li {\n margin-top: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-hr {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n border-bottom-width: 1px;\n}\n.omniscribe_markdown-table {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n width: 100%;\n border-collapse: separate;\n border-spacing: calc(var(--spacing) * 0) /* 0rem = 0px */;\n overflow-y: auto;\n}\n.omniscribe_markdown-th {\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n font-weight: var(--font-weight-bold) /* 700 */;\n &:first-child {\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child {\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-td {\n border-bottom-width: 1px;\n border-left-width: 1px;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n &:last-child {\n border-right-width: 1px;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-tr {\n margin: calc(var(--spacing) * 0) /* 0rem = 0px */;\n &:first-child {\n border-top-width: 1px;\n }\n &:last-child > td:first-child {\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child > td:last-child {\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n}\n\n.omniscribe_markdown-sup {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n & > a {\n text-decoration-line: none;\n }\n}\n\n.omniscribe_markdown-pre {\n overflow-x: auto;\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--black);\n padding: calc(var(--spacing) * 4) /* 1rem = 16px */;\n color: var(--white);\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_markdown-code {\n border-radius: 0.25rem /* 4px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n}\n\n.omniscribe_markdown-link {\n color: var(--color-primary); /* text-primary */\n font-weight: 500; /* font-medium */\n text-decoration: underline; /* underline */\n text-underline-offset: 4px; /* underline-offset-4 */\n word-wrap: break-word; /* break-words */\n}\n\n.omniscribe_markdown-link:hover {\n color: var(--color-primary-dark); /* hover:text-primary-dark */\n}\n\n.omniscribe_assistant-markdown-container strong,\n.omniscribe_assistant-markdown-container b {\n font-weight: bold !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessage.css */\n.omniscribe_assistant-message-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n width: 100%;\n}\n\n.omniscribe_assistant-message-calls-container {\n display: flex;\n flex-direction: column;\n max-width: 100%;\n}\n\n.omniscribe_assistant-markdown-container {\n padding-block: calc(var(--spacing) * 0.5) /* 0.25rem = 4px */;\n}\n\n.omniscribe_assistant-commands-container {\n display: flex;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n align-items: center;\n margin-right: auto;\n}\n.omniscribe_assistant-message-container:hover,\n.omniscribe_assistant-message-container:focus {\n .omniscribe_assistant-commands-container {\n opacity: 100%;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessageLoading.css */\n.omniscribe_assistant-message-loading-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n margin-top: 3px;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_assistant-message-loading {\n display: flex;\n align-items: center;\n border-radius: var(--radius-2xl) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 1);\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n height: calc(var(--spacing) * 8) /* 2rem = 32px */;\n}\n.omniscribe_assistant-message-loading-dot {\n width: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n height: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n border-radius: calc(infinity * 1px);\n animation: loadingFade 2s infinite;\n background-color: color-mix(in oklab, var(--foreground) 50%, transparent);\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(1) {\n animation-delay: 0.2s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(2) {\n animation-delay: 0.4s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n@keyframes loadingFade {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.8;\n }\n 100% {\n opacity: 0;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/BranchSwitcher.css */\n.omniscribe_brand-switcher-container {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_brand-switcher-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_brand-switcher-btn {\n width: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n height: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n padding: calc(0.25rem /* 4px */ * 1) /* 0.25rem = 4px */;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/CommandBar.css */\n.omniscribe_command-bar-container {\n display: flex;\n align-items: center;\n padding-right: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n transition: opacity 0.2s ease-in-out;\n}\n\n.omniscribe_command-bar-container.omniscribe_command-bar-hidden {\n opacity: 0;\n pointer-events: none;\n}\n\n.thumbs.active {\n color: var(--blue-500);\n}\n\n.omniscribe_feedback-button-container {\n position: relative;\n display: inline-block;\n}\n\n.omniscribe_command-bar-container-icon-color,\n.thumbs {\n color: #4a5364;\n}\n\n.omniscribe_command-bar-container svg {\n width: 12px !important;\n height: 12px !important;\n}\n\n.omniscribe_command-bar-container .omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 0.5) !important;\n}\n\n.omniscribe_command-bar-container .tooltip-base {\n padding: 0.25rem 0.5rem;\n}\n\n.omniscribe_command-bar-container .tooltip-trigger {\n padding: 1px;\n margin: 1px;\n}\n\n.omniscribe_command-bar-container .omniscribe_button-size-icon {\n height: calc(var(--spacing) * 3);\n width: calc(var(--spacing) * 3);\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/HumanMessage.css */\n.omniscribe_human-message-container {\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n.omniscribe_human-message-container-editing {\n width: 100%;\n max-width: var(--container-xl) /* 36rem = 576px */;\n}\n.omniscribe_human-message-container-no-editing {\n max-width: 100%;\n}\n\n.omniscribe_human-message-command-container {\n display: flex;\n gap: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n align-items: center;\n margin-left: auto;\n}\n.omniscribe_human-message-command-container-editing {\n opacity: 100%;\n}\n\n.omniscribe_human-message-container:focus,\n.omniscribe_human-message-container:hover {\n .omniscribe_human-message-command-container {\n opacity: 100%;\n }\n}\n\n.omniscribe_human-message-subcontainer {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.omniscribe_human-message-subcontainer-editing {\n width: 100%;\n}\n\n.omniscribe_human-message-content-text {\n text-align: right;\n padding-top: 4px;\n padding-bottom: 4px;\n padding-inline: calc(var(--spacing) * 2);\n border-radius: var(--radius-3xl);\n background-color: #f6f7f9;\n font-weight: 500;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n margin: 0;\n}\n.omniscribe_human-message-textarea {\n min-height: 2.5rem !important; /* 40px */\n max-height: 12rem !important; /* 192px - Allow more vertical space */\n min-width: 200px !important; /* Minimum width for usability */\n resize: both; /* Allow controlled resizing in both directions */\n width: 100%;\n overflow: auto; /* Enable scroll when content exceeds max dimensions */\n\n &:focus-visible {\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n}\n\n.omniscribe_human-message-textarea-chat-history-close {\n max-width: 100% !important;\n}\n\n.omniscribe_human-message-textarea-chat-history-open {\n max-width: 385px !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ReasoningSection.css */\n.omniscribe_assistant-reasoning-section {\n margin-top: 12px;\n border-left: 3px solid #e5e7eb;\n padding-left: 12px;\n background-color: #f9fafb;\n border-radius: 4px;\n padding: 8px 12px;\n}\n\n.omniscribe_assistant-reasoning-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px 0;\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n width: 100%;\n text-align: left;\n}\n\n.omniscribe_assistant-reasoning-arrow {\n display: inline-block;\n transition: transform 0.2s ease-in-out;\n transform: rotate(0deg);\n}\n\n.omniscribe_assistant-reasoning-arrow--expanded {\n transform: rotate(90deg);\n}\n\n.omniscribe_assistant-reasoning-summary {\n margin-top: 8px;\n font-size: 14px;\n color: #374151;\n line-height: 1.5;\n}\n\n.omniscribe_assistant-reasoning-summary-item {\n margin: 8px 0;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolCalls.css */\n.omniscribe_tool-calls-container {\n margin-block-start: calc(calc(var(--spacing) * 4) * var(0));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(0)));\n width: 100%;\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_tool-calls-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 100%;\n flex-wrap: wrap;\n gap: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n}\n.omniscribe_tool-calls-h3 {\n font-weight: var(--font-weight-bold);\n color: var(--color-gray-900) /* oklch(21% 0.034 264.665) = #101828 */;\n word-break: break-all;\n font-size: 14px;\n margin: 0;\n}\n\n.omniscribe_tool-calls-item-args {\n align-items: flex-start;\n flex-wrap: wrap;\n}\n.omniscribe_tool-calls-item-args-text {\n word-break: break-all;\n margin-right: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n padding-block: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_tool-calls-item-args-code {\n background-color: var(--color-gray-50);\n border-radius: 0.25rem /* 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n word-break: break-all;\n}\n\n.omniscribe_tool-calls-pre {\n font-size: 12px;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolResults.css */\n/* ToolResult Component Styles */\n\n.omniscribe_tool-result {\n margin-top: 2px;\n border: 1px solid var(--grey-200);\n border-radius: 0.5rem !important; /* !rounded-lg */\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n overflow: hidden; /* overflow-hidden */\n width: 100%;\n}\n\n.omniscribe_tool-result-header {\n background-color: var(--grey-50); /* bg-gray-50 */\n padding-left: 1rem; /* px-4 */\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex; /* flex */\n align-items: center; /* items-center */\n justify-content: space-between; /* justify-between */\n}\n\n.omniscribe_tool-result-header--expanded {\n border-bottom: 1px solid var(--grey-200);\n}\n\n.omniscribe_tool-result-header-content {\n display: flex; /* flex */\n align-items: center; /* items-center */\n gap: 0.5rem; /* gap-2 */\n min-width: 0; /* min-w-0 */\n}\n\n.omniscribe_tool-result-title {\n font-weight: 500; /* font-medium */\n color: var(--grey-900);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; /* truncate */\n margin: 0;\n font-size: 14px;\n}\n\n.omniscribe_expand-button {\n padding: 0.25rem; /* p-1 */\n flex-shrink: 0; /* flex-shrink-0 */\n}\n\n.omniscribe_expand-icon {\n width: 1.25rem; /* w-5 */\n height: 1.25rem; /* h-5 */\n}\n\n.omniscribe_tool-result-content {\n padding: 1rem; /* p-4 */\n background-color: #ffffff; /* bg-white */\n max-height: 24rem; /* max-h-96 */\n overflow-y: auto; /* overflow-y-auto */\n}\n\n.omniscribe_tool-result-content > * + * {\n margin-top: 0.5rem; /* space-y-2 */\n}\n\n/* Scrollbar styles for webkit browsers */\n.omniscribe_tool-result-content::-webkit-scrollbar {\n width: 8px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-track {\n background: #f1f5f9;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n\n.omniscribe_result-card {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n border: 1px solid var(--color-gray-100);\n padding-top: 0.5rem !important; /* !py-2 */\n padding-bottom: 0.5rem !important;\n gap: 0 !important; /* !gap-0 */\n}\n\n.omniscribe_result-card-header {\n padding-top: 0.5rem !important; /* !pt-2 */\n padding-left: 0.5rem !important; /* !px-2 */\n padding-right: 0.5rem !important;\n padding-bottom: 0 !important; /* !pb-0 */\n}\n\n.omniscribe_result-card-title {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n font-weight: 600; /* font-semibold */\n}\n\n.omniscribe_result-link {\n color: var(--blue-600);\n text-decoration: none;\n transition-property: color, text-decoration;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_result-link:hover {\n text-decoration: underline; /* hover:underline */\n color: #1e40af; /* hover:text-blue-800 */\n}\n\n.omniscribe_result-card-content {\n padding: 0.5rem !important; /* !p-2 */\n padding-top: 0 !important; /* !pt-0 */\n}\n\n.omniscribe_result-description {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #374151; /* text-gray-700 */\n line-height: 1.625; /* leading-relaxed */\n word-break: break-all; /* break-all */\n display: -webkit-box;\n -webkit-line-clamp: 2; /* line-clamp-2 */\n -webkit-box-orient: vertical;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms; /* transition-all duration-150 ease-in-out */\n transition-timing-function: cubic-bezier(0.4, 0, 0.6, 1); /* ease-in-out */\n}\n\n.omniscribe_result-description:hover {\n -webkit-line-clamp: unset; /* hover:line-clamp-none */\n display: block;\n}\n\n.omniscribe_result-source {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #6b7280; /* text-gray-500 */\n margin-top: 0.25rem; /* mt-1 */\n padding-top: 0.25rem; /* pt-1 */\n border-top: 1px solid var(--color-gray-100);\n}\n\n.omniscribe_string-result {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n white-space: pre-wrap; /* whitespace-pre-wrap */\n background-color: var(--grey-50);\n padding: 0.75rem; /* p-3 */\n border-radius: 0.375rem; /* rounded-md */\n border: 1px solid var(--grey-200);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo,\n monospace; /* pre tag font */\n}\n\n\n/* Source: modules/chat/components/thread/components/tooltip-icon-button.css */\n.omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 1);\n /* width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6); */\n}\n\n.omniscribe_tooltip-icon-button-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: none;\n}\n\n\n/* Source: modules/configuration/section/Configuration.css */\n.omniscribe_config-content {\n width: 650px;\n max-height: 590px;\n opacity: 1;\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n overflow: visible;\n}\n\n.omniscribe_config-list {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n.omniscribe_config-item {\n width: 100%;\n height: 75px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n opacity: 1;\n padding: 10px 22px 10px 16px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.omniscribe_config-item:hover {\n background-color: #f9fafb;\n}\n\n.omniscribe_config-item:focus {\n outline: none;\n background-color: #f3f4f6;\n}\n\n.omniscribe_config-item:last-child {\n border-bottom: none;\n}\n\n.omniscribe_config-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n}\n\n.omniscribe_config-icon {\n color: #4a5364;\n}\n\n.omniscribe_config-item-content {\n flex: 1;\n margin-left: 16px;\n margin-right: 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_config-item-title {\n margin: 0;\n font-weight: 700;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #252a32;\n}\n\n.omniscribe_config-item-description {\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #4a5364;\n}\n\n.omniscribe_config-item-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n flex-shrink: 0;\n}\n\n/* Sub-screen styles */\n.omniscribe_config-subscreen-header {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 16px 12px;\n color: #13161a;\n font-size: 14px;\n font-style: normal;\n font-weight: 700;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-back-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_config-subscreen-title {\n margin: 0;\n font-size: 14px;\n font-weight: 700;\n color: #13161a;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-subscreen-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-top: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n}\n\n.omniscribe_config-subscreen-content.no-border {\n border-top: none;\n}\n\n.omniscribe_config-subscreen-content-template {\n flex: 1;\n overflow: hidden;\n}\n\n.omniscribe_config-section-label {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #374151;\n line-height: 1.4;\n}\n\n.omniscribe_config-language-section {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_config-language-section-title {\n font-size: 16px;\n font-weight: 600;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.omniscribe_config-subscreen-description {\n margin: 0 0 0 0;\n font-size: 14px;\n line-height: 18px;\n color: #13161a;\n font-weight: 400;\n}\n\n/* Dictionary Options View Styles */\n.omniscribe_config-dictionary-section {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.omniscribe_config-dictionary-add-section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.omniscribe_config-dictionary-input-row {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n\n.omniscribe_config-dictionary-input {\n height: 32px;\n border: 1px solid #e5e8eb !important;\n border-radius: 8px !important;\n padding: 0 12px !important;\n font-size: 14px !important;\n line-height: 1.4 !important;\n background-color: #ffffff !important;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease !important;\n}\n\n.omniscribe_config-dictionary-input:focus {\n outline: none !important;\n border-color: #4f46e5 !important;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-input::placeholder {\n color: #9ca3af !important;\n font-size: 14px !important;\n}\n\n.omniscribe_config-dictionary-input.error {\n border-color: #dc3545 !important;\n background-color: #fff5f5 !important;\n}\n\n.omniscribe_config-dictionary-input.error:focus {\n border-color: #dc3545 !important;\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-add-btn {\n width: 32px;\n height: 32px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--primary);\n border: 1px solid var(--primary);\n border-radius: 8px;\n color: var(--primary-foreground);\n cursor: pointer;\n transition: all 0.2s ease;\n margin-top: 0;\n font-size: 0;\n}\n\n.omniscribe_config-dictionary-add-btn:hover:not(:disabled) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n border-color: color-mix(in oklab, var(--primary) 90%, transparent);\n}\n\n.omniscribe_config-dictionary-add-btn:disabled {\n background-color: #e5e8eb;\n border-color: #e5e8eb;\n color: #9ca3af;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n\n.omniscribe_config-dictionary-list {\n display: flex;\n padding-top: 16px;\n flex-direction: column;\n gap: 8px;\n max-height: 410px;\n overflow-y: auto;\n margin-top: 4px;\n}\n\n.omniscribe_config-dictionary-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background-color: #f9fafb;\n border: 1px solid #e5e8eb;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.omniscribe_config-dictionary-row:hover {\n background-color: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.omniscribe_config-dictionary-cell {\n flex: 1;\n font-size: 14px;\n line-height: 20px;\n color: #374151;\n word-break: break-word;\n font-weight: 500;\n}\n\n.omniscribe_config-dictionary-arrow {\n color: #9ca3af;\n font-size: 16px;\n font-weight: 600;\n flex-shrink: 0;\n margin: 0 4px;\n}\n\n.omniscribe_config-dictionary-delete-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 6px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_config-dictionary-delete-btn:hover {\n background-color: #fee2e2;\n color: #dc2626;\n transform: scale(1.05);\n}\n\n.omniscribe_config-dictionary-empty {\n padding: 40px 16px;\n margin-top: 16px;\n text-align: center;\n color: #6b7280;\n font-size: 14px;\n line-height: 20px;\n background-color: #f9fafb;\n border: 2px dashed #e5e8eb;\n border-radius: 12px;\n font-style: italic;\n}\n\n/* Template specific styles */\n.omniscribe_template-field {\n background: white;\n border-bottom: 1px solid #e1e8ed;\n margin-bottom: 0;\n}\n\n.omniscribe_template-field:last-child {\n border-bottom: none;\n}\n\n.omniscribe_template-field-header {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n background: #ffffff;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_template-field-icon {\n margin-right: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon svg {\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon.expanded svg {\n transform: rotate(90deg);\n}\n\n.omniscribe_template-field-label {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #2c3e50;\n}\n\n.omniscribe_template-field-content {\n padding: 16px;\n background: white;\n}\n\n.omniscribe_template-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 300px;\n /* Prevent excessive vertical expansion */\n padding: 12px;\n border: 1px solid #e1e8ed;\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n background: white;\n box-sizing: border-box;\n overflow-y: auto;\n /* Enable scroll when content exceeds max height */\n}\n\n.omniscribe_template-textarea:focus {\n outline: none;\n border-color: #3498db;\n box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n}\n\n.omniscribe_template-character-count {\n margin-top: 8px;\n font-size: 12px;\n color: #95a5a6;\n display: flex;\n}\n\n.omniscribe_template-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e1e8ed;\n background: white;\n margin-top: 18px;\n margin-bottom: 50px;\n}\n\n/* Template fields container */\n.omniscribe_template-fields {\n display: flex;\n flex-direction: column;\n max-height: 400px;\n overflow-y: auto;\n background: white;\n}\n\n/* Improved scrollbar for template fields */\n.omniscribe_template-fields::-webkit-scrollbar {\n width: 6px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n.omniscribe_config-version-section {\n background: #F6F7F9;\n color: #4A5364;\n padding: 16px 8px 16px 24px;\n font-weight: 500;\n line-height: 16.8px;\n font-size: 12px;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n/* Source: modules/layout/components/MinimizeButton/MinimizeButton.css */\n.omniscribe_minimize-button-container {\n position: absolute;\n top: -1px;\n left: 0;\n transform: translateX(-100%);\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n height: auto;\n max-height: 400px;\n min-height: 180px;\n}\n.omniscribe_minimize-button-subcontainer {\n position: relative;\n background-color: color-mix(in oklab, rgb(15, 15, 15) 65%, transparent);\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n backdrop-filter: sepia(1%);\n cursor: pointer;\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 400ms;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_minimize-button-subcontainer:hover {\n background-color: color-mix(in oklab, rgb(15, 15, 15) 85%, transparent);\n}\n.omniscribe_minimize-button-content {\n display: flex;\n rotate: calc(90deg * -2);\n gap: 10px;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n width: 100%;\n align-items: center;\n justify-content: center;\n position: relative;\n flex-wrap: nowrap;\n padding: 12px;\n min-height: 180px;\n max-height: 400px;\n}\n\n.omniscribe_minimize-button-span {\n font-weight: 400;\n font-size: var(--text-lg) /* 1.125rem = 18px */;\n line-height: var(--text-lg--line-height) /* calc(1.75 / 1.125) ≈ 1.5556 */;\n flex-wrap: nowrap;\n color: var(--white);\n display: flex;\n white-space: nowrap;\n text-align: center;\n}\n\n[dir='ltr'] .omniscribe_minimize-button-container {\n left: 0;\n transform: translateX(-100%);\n}\n\n[dir='ltr'] .omniscribe_minimize-button-subcontainer {\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n}\n\n[dir='rtl'] .omniscribe_minimize-button-container {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n[dir='rtl'] .omniscribe_minimize-button-subcontainer {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeContainer/OmniscribeContainer.css */\n.omniscribe_container {\n isolation: isolate;\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n z-index: 80;\n}\n\n[dir='ltr'] .omniscribe_container {\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n}\n\n[dir='rtl'] .omniscribe_container {\n left: 0;\n right: auto;\n border-top-right-radius: 30px;\n border-bottom-right-radius: 30px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeLayout/OmniscribeLayout.css */\n.omniscribe_layout {\n position: fixed;\n width: var(--layout-w);\n background: var(--white);\n bottom: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 500ms;\n transition-property: transform, translate, scale, rotate;\n display: flex;\n flex-direction: column;\n height: var(--layout-h);\n min-width: 500px;\n min-height: 500px;\n right: 0;\n}\n\n[dir='rtl'] .omniscribe_layout {\n left: 0;\n right: auto;\n border-bottom-right-radius: 12px;\n}\n\n[dir='ltr'] .omniscribe_layout {\n right: 0;\n border-bottom-left-radius: 12px;\n}\n\n.omniscribe_layout-open {\n background: var(--white);\n translate: 0;\n}\n\n.omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n[dir='rtl'] .omniscribe_layout-close {\n translate: calc(var(--layout-w) * -1);\n}\n\n[dir='ltr'] .omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n\n/* Source: modules/utility-section/section/UtilityButtons.css */\n.omniscribe_utility-btns-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: #ffffff;\n padding: 16px;\n overflow: hidden;\n background: linear-gradient(90deg, #ffffff 0%, #f5f8fe 50%, #e7effd 100%);\n align-self: stretch;\n}\n\n.omniscribe_utility-btns-left,\n.omniscribe_utility-btns-right {\n display: flex;\n flex-direction: row;\n gap: 4px;\n align-items: center;\n}\n\n.omniscribe_utility-btn-right {\n border-radius: var(--Radius-radius-round, 99999px) !important;\n background-color: var(--Greyscale-100, #f6f7f9) !important;\n border: none !important;\n}\n\n.omniscribe_connected-buttons {\n display: flex;\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n overflow: hidden;\n}\n\n.omniscribe_connected-btn-left,\n.omniscribe_connected-btn-right {\n border: none !important;\n border-radius: 0 !important;\n}\n\n.omniscribe_connected-btn-left {\n border-right: 1px solid var(--Stroke-greyscale-Active, #e5e7ec) !important;\n}\n\n.omniscribe_utility-btns {\n cursor: pointer;\n transition-duration: 300ms;\n background-color: color-mix(in oklab, var(--white) 30%, transparent);\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n position: relative;\n padding: 8px;\n display: flex;\n align-items: center;\n\n &:hover {\n background-color: var(--Greyscale-100, #f6f7f9);\n }\n}\n\n.omniscribe_utility-btns-pointer {\n pointer-events: auto;\n}\n\n.omniscribe_utility-btns-no-pointer {\n pointer-events: none;\n background-color: var(--white);\n}\n\n.omniscribe_utility-btns-no-pointer-opacity {\n pointer-events: none;\n opacity: 50%;\n}\n\n.omniscribe_utility-btns-opacity {\n background-color: var(--white);\n opacity: 100%;\n}\n\n.omniscribe_utility-btns-active {\n background-color: var(--Greyscale-100, #f6f7f9);\n border: 1px solid var(--Stroke-greyscale-Active, #105bdb);\n}\n\n.omniscribe_btn-label {\n margin-left: 6px;\n font-size: 14px;\n color: #212529;\n font-weight: 500;\n}\n\n.omniscribe_btn-label-active {\n color: #105bdb;\n}\n\n.omniscribe_icon {\n color: var(--active-black);\n}\n\n.omniscribe_icon-active {\n color: #105bdb;\n}\n\n.omniscribe_config-view {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.omniscribe_config-close-btn {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #000000;\n width: 32px;\n height: 32px;\n}\n\n.omniscribe_config-title {\n margin: 0;\n color: #000000;\n font-size: 16px;\n font-weight: 700;\n line-height: 19.2px;\n}\n\n\n/* Source: shared/components/Card.css */\n.omniscribe_card {\n background-color: var(--color-card, #ffffff);\n color: var(--color-card-foreground, #000000);\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n border-radius: 0.75rem;\n border: 1px solid var(--color-border, var(--grey-200));\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n\n.omniscribe_card-header {\n container-type: inline-size;\n container-name: card-header;\n display: grid;\n grid-auto-rows: min-content;\n grid-template-rows: auto auto;\n align-items: start;\n gap: 0.375rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n/* When card-header has card-action, adjust grid layout */\n.omniscribe_card-header:has([data-slot='card-action']) {\n grid-template-columns: 1fr auto;\n}\n\n/* When card-header has border-b class, add padding bottom */\n.omniscribe_card-header.border-b {\n padding-bottom: 1.5rem;\n}\n\n.omniscribe_card-title {\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_card-description {\n color: var(--color-muted-foreground, #6b7280);\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n.omniscribe_card-action {\n grid-column-start: 2;\n grid-row: span 2 / span 2;\n grid-row-start: 1;\n align-self: start;\n justify-self: end;\n}\n\n.omniscribe_card-content {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer {\n display: flex;\n align-items: center;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer.border-t {\n padding-top: 1.5rem;\n}\n\n\n/* Source: shared/components/button.css */\n.omniscribe_button {\n border: none;\n background: transparent;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 2);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &:disabled {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 50%;\n }\n & svg {\n pointer-events: none;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: calc(var(--spacing) * 4) /* 1rem = 16px */;\n height: calc(var(--spacing) * 4) /* 1rem = 16px */;\n }\n &:focus-visible {\n border-color: var(--ring);\n box-shadow: 0 0 0 calc(3px + var(--tw-ring-offset-width))\n color-mix(in oklab, var(--ring) 50%, transparent);\n }\n &[aria-invalid='true'] {\n border-color: var(--destructive);\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n\n.omniscribe_button-variant-default {\n background-color: var(--primary);\n color: var(--primary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n}\n.omniscribe_button-variant-destructive {\n background-color: var(--destructive);\n color: var(--white);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n.omniscribe_button-variant-outline {\n border: solid 1px var(--input);\n background-color: var(--background);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n}\n.omniscribe_button-variant-icon {\n align-items: center;\n border-radius: 100%;\n padding: 10px;\n & svg {\n pointer-events: auto;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: auto;\n height: auto;\n }\n}\n.omniscribe_button-variant-secondadry {\n background-color: var(--secondary);\n color: var(--secondary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n}\n.omniscribe_button-variant-ghost:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n}\n.omniscribe_button-variant-empty {\n cursor: pointer;\n}\n.omniscribe_button-variant-primary {\n cursor: pointer;\n background-color: color-mix(in oklab, var(--primary-button) 80%, transparent);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px !important;\n color: var(--white);\n &:hover {\n background-color: color-mix(\n in oklab,\n var(--primary-button) 60%,\n transparent\n );\n }\n}\n.omniscribe_button-size-default {\n height: calc(var(--spacing) * 9);\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 2);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 3) /* 0.75rem = 12px */;\n }\n}\n.omniscribe_button-size-sm {\n height: calc(var(--spacing) * 8);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n gap: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n padding-inline: calc(var(--spacing) * 3);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n}\n\n.omniscribe_button-size-lg {\n height: calc(var(--spacing) * 10);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n padding-inline: calc(var(--spacing) * 6);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n}\n\n.omniscribe_button-size-icon {\n height: calc(var(--spacing) * 5);\n width: calc(var(--spacing) * 5);\n}\n.omniscribe_button-size-padding {\n padding: calc(var(--spacing) * 2);\n min-width: calc(var(--spacing) * 40);\n}\n\n.omniscribe_button-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n}\n.omniscribe_button-whitespace {\n white-space: nowrap;\n}\n.omniscribe_button-rounded {\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n.omniscribe_button-disabled {\n pointer-events: none;\n}\n.omniscribe_button-loading {\n opacity: 50%;\n}\n.omniscribe_button-animate-spin {\n animation: spin 1s linear infinite;\n}\n.omniscribe_button-variant-report {\n cursor: pointer;\n background-color: var(--report);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px;\n color: var(--white);\n &:hover {\n background-color: color-mix(in oklab, var(--report) 60%, transparent);\n }\n}\n\n\n/* Source: shared/components/feedback-modal.css */\n.omniscribe_feedback-modal {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-top: 8px;\n min-width: 200px;\n width: 200px;\n transform-origin: top left;\n}\n\n.omniscribe_feedback-input-container {\n position: relative;\n display: flex;\n align-items: flex-end;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n}\n\n.omniscribe_feedback-textarea {\n flex: 1;\n border: transparent;\n border-radius: 8px;\n padding: 12px 12px 12px 12px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.2s;\n resize: none;\n min-height: 20px;\n max-height: 200px;\n overflow-y: auto;\n font-family: inherit;\n line-height: 1.4;\n width: 100%;\n box-sizing: border-box;\n}\n.omniscribe_feedback-textarea-padding {\n margin-bottom: 34px;\n padding-bottom: 0px !important;\n}\n\n.omniscribe_feedback-icons {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_feedback-icons:has(.omniscribe_feedback-send) {\n bottom: 8px;\n top: auto;\n transform: none;\n}\n\n.omniscribe_feedback-close {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-close:hover {\n background-color: #f3f4f6;\n color: #374151;\n}\n\n.omniscribe_feedback-close svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-send {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--blue-500);\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-send:hover {\n background-color: #f0f7ff;\n color: #0d47a1;\n}\n\n.omniscribe_feedback-send svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-confirmation {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-top: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n.omniscribe_feedback-confirmation-icon {\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Right-positioned modal styles */\n.omniscribe_feedback-modal-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-left: 8px;\n width: 200px;\n transform-origin: bottom left;\n}\n\n.omniscribe_feedback-sending-center {\n top: 100%;\n left: 0;\n}\n\n.omniscribe_feedback-sending-right {\n bottom: 0;\n left: 40%;\n}\n\n.omniscribe_feedback-sending {\n position: absolute;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n}\n.omniscribe_feedback-confirmation-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n@keyframes fadeInOut {\n 0% {\n opacity: 0;\n transform: translateY(-10px);\n }\n 10% {\n opacity: 1;\n transform: translateY(0);\n }\n 90% {\n opacity: 1;\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateY(-10px);\n }\n}\n\n\n/* Source: shared/components/gradient-box.css */\n.omniscribe_gradient-box {\n border-radius: 8px;\n padding: 1px;\n width: fit-content;\n}\n\n\n/* Source: shared/components/input.css */\n.omniscribe_input {\n height: calc(var(--spacing) * 9);\n width: 100%;\n display: flex;\n border-radius: calc(var(--radius));\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-base) /* 1rem = 16px */;\n line-height: var(--text-base--line-height);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &::file-selector-button {\n color: var(--foreground);\n display: inline-flex;\n height: calc(var(--spacing) * 7);\n border: none;\n background-color: transparent;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n font-weight: var(--font-weight-medium);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n &::selection {\n background-color: var(--primary);\n color: var(--primary-foreground);\n }\n &:disabled {\n pointer-events: none;\n cursor: not-allowed;\n opacity: 50%;\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n @media (width >= 48rem /* 768px */) {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n }\n}\n\n.omniscribe_input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_input.invalid {\n border-color: #dc3545;\n background-color: #fff5f5;\n box-shadow: 0 0 0 0.125rem rgba(220, 53, 69, 0.25);\n}\n\n.omniscribe_input-error {\n color: #dc3545;\n font-size: 10px;\n margin-block: 0.25rem;\n display: block;\n line-height: 1;\n}\n\n\n/* Source: shared/components/loading-modal.css */\n.omniscribe_loading-modal-container {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n.omniscribe_loading-modal-subcontainer {\n background-color: var(--white);\n padding: calc(var(--spacing) * 8);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n text-align: center;\n max-width: var(--container-md);\n}\n.omniscribe_loading-modal-msg {\n font-size: var(--text-xl) /* 1.25rem = 20px */;\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin-bottom: calc(var(--spacing) * 4);\n}\n.omniscribe_loading-modal-spin {\n display: inline-block;\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n border: solid 4px var(--color-gray-200);\n border-top-color: var(--blue-500);\n border-radius: calc(infinity * 1px);\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n\n/* Source: shared/components/modal.css */\n.omniscribe_modal-overlay {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n\n.omniscribe_modal-container {\n position: relative;\n background-color: var(--white);\n z-index: 100;\n border-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n padding: calc(var(--spacing) * 5);\n transition-duration: 300ms;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n max-width: 90vw;\n max-height: 90vh;\n}\n.omniscribe_modal-container-scroll {\n overflow: auto;\n}\n\n.omniscribe_modal-container-show {\n opacity: 100%;\n}\n\n.omniscribe_modal-container-hide {\n opacity: 0%;\n}\n\n.omniscribe_modal-subcontainer {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_modal-title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--spacing) * 2);\n}\n\n.omniscribe_modal-title {\n font-size: var(--text-3xl); /* 1.875rem = 30px */\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin: 0;\n}\n\n.omniscribe_modal-button {\n border: none;\n background: transparent;\n line-height: var(--text-2xl--line-height);\n cursor: pointer;\n color: var(--black);\n}\n\n@media (min-width: 768px) {\n .omniscribe_modal-container {\n max-width: 60vw;\n }\n}\n\n/* Large screens: desktop */\n@media (min-width: 1024px) {\n .omniscribe_modal-container {\n max-width: 50vw;\n }\n}\n\n/* Very large screens: large desktop and ultra-wide */\n@media (min-width: 1440px) {\n .omniscribe_modal-container {\n max-width: 40vw;\n }\n}\n\n/* Intermediate breakpoint: large tablets */\n@media (min-width: 640px) and (max-width: 767px) {\n .omniscribe_modal-container {\n max-width: 70vw;\n }\n}\n\n\n/* Source: shared/components/select.css */\n.omniscribe_select-container {\n position: relative;\n width: 100%;\n padding-block: calc(var(--spacing) * 3);\n}\n.omniscribe_select-button {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--spacing) * 3);\n background-color: var(--white);\n border-radius: var(--Radius-radius-medium, 8px);\n border: solid 1px var(--light-border);\n cursor: pointer;\n}\n.omniscribe_select-text {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n}\n.omniscribe_select-content-container {\n position: absolute;\n width: 100%;\n margin-top: calc(var(--spacing) * 2);\n border: solid 1px var(--light-border);\n background-color: var(--white);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n bottom: calc(var(--spacing) * 15);\n padding-inline: calc(var(--spacing) * 1);\n padding-block: calc(var(--spacing) * 0.5);\n z-index: 9999;\n}\n.omniscribe_select-content-ul {\n overflow-y: scroll;\n max-height: calc(var(--spacing) * 80);\n padding-inline: 5px;\n}\n.omniscribe_select-content-li {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--spacing) * 3);\n cursor: pointer;\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n}\n.omniscribe_select-check-icon {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n color: var(--color-slate-500) /* oklch(55.4% 0.046 257.417) = #62748e */;\n}\n.omniscribe_select-content-li-span {\n display: flex;\n align-items: center;\n gap: calc(0.25rem /* 4px */ * 2);\n}\n\n\n/* Source: shared/components/skeleton.css */\n.omniscribe_skeleton {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n\n\n/* Source: shared/components/textarea.css */\n.omniscribe_textarea-default {\n display: flex;\n min-height: calc(var(--spacing) * 16);\n width: -webkit-fill-available;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 2);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n &::placeholder {\n color: var(--muted-foreground);\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n }\n &:focus-visible {\n border-color: var(--ring);\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n }\n}\n\n.omniscribe_textarea-secondary {\n padding: calc(var(--spacing) * 3.5);\n padding-bottom: calc(var(--spacing) * 0);\n border-style: none;\n background-color: transparent;\n resize: none;\n &:focus {\n outline-style: none;\n }\n}\n.omniscribe_textarea-general {\n font-family: 'Lato', sans-serif;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n\n/* Source: shared/components/toast.css */\n.omniscribe_toast-container {\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n top: calc(var(--spacing) * -30);\n border-radius: var(--radius);\n padding: calc(var(--spacing) * 4);\n height: fit-content;\n transition-duration: 500ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: calc(var(--spacing) * 120);\n}\n\n.omniscribe_toast-container-danger {\n background-color: var(--color-red-500);\n}\n.omniscribe_toast-container-black {\n background-color: var(--black);\n}\n.omniscribe_toast-container-show {\n right: calc(var(--spacing) * 10);\n}\n.omniscribe_toast-container-hide {\n right: -100%;\n}\n.omniscribe_toast-subcontainer {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 100ms;\n display: flex;\n flex-direction: column;\n color: var(--white);\n}\n.omniscribe_toast-title {\n font-size: 18px;\n font-weight: var(--font-weight-bold);\n}\n.omniscribe_toast-msg {\n font-size: 16px;\n}\n\n\n/* Source: shared/components/tooltip.css */\n.tooltip-base {\n position: fixed;\n z-index: 9999;\n border-radius: 0.375rem; /* rounded-md */\n background-color: #111827;\n padding: 0.5rem 0.75rem; /* px-3 py-2 */\n font-size: 0.875rem; /* text-sm */\n font-family: 'Lato', sans-serif;\n color: #ffffff; /* text-white */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow-lg */\n transition: opacity 0.2s ease-in-out; /* transition-opacity duration-200 */\n pointer-events: none;\n user-select: none;\n word-wrap: break-word;\n line-height: 1.4;\n}\n\n/* Tooltip Arrow Styles */\n.tooltip-arrow {\n position: absolute;\n width: 0.5rem; /* w-2 */\n height: 0.5rem; /* h-2 */\n background-color: #111827;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning for each side */\n.tooltip-arrow-top {\n bottom: -0.25rem; /* bottom-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-bottom {\n top: -0.25rem; /* top-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-left {\n right: -0.25rem; /* right-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-right {\n left: -0.25rem; /* left-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Width classes based on message length */\n.tooltip-width-auto {\n width: auto;\n white-space: nowrap;\n}\n\n.tooltip-width-200 {\n width: auto;\n max-width: 200px;\n}\n\n.tooltip-width-xs {\n width: auto;\n max-width: 20rem; /* max-w-xs */\n}\n\n.tooltip-width-sm {\n width: auto;\n max-width: 24rem; /* max-w-sm */\n}\n\n.tooltip-width-400 {\n width: auto;\n max-width: 400px;\n}\n\n/* Trigger container styles */\n.tooltip-trigger {\n display: inline-block;\n}\n\n/* Animation classes */\n.tooltip-enter {\n opacity: 0;\n transform: scale(0.95);\n}\n\n.tooltip-enter-active {\n opacity: 1;\n transform: scale(1);\n transition:\n opacity 0.2s ease-in-out,\n transform 0.2s ease-in-out;\n}\n\n.tooltip-exit {\n opacity: 1;\n transform: scale(1);\n}\n\n.tooltip-exit-active {\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity 0.15s ease-in-out,\n transform 0.15s ease-in-out;\n}\n\n/* Dark theme variant */\n.tooltip-dark {\n background-color: #1f2937; /* bg-gray-800 */\n color: var(--grey-50);\n}\n\n.tooltip-dark .tooltip-arrow {\n background-color: #1f2937;\n}\n\n/* Light theme variant */\n.tooltip-light {\n background-color: #ffffff;\n color: #374151; /* text-gray-700 */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.tooltip-light .tooltip-arrow {\n background-color: #ffffff;\n}\n\n/* Responsive breakpoints */\n@media (max-width: 640px) {\n .tooltip-base {\n max-width: calc(100vw - 2rem);\n font-size: 0.8125rem; /* Slightly smaller on mobile */\n }\n\n .tooltip-width-400,\n .tooltip-width-sm,\n .tooltip-width-xs {\n max-width: calc(100vw - 2rem);\n }\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .tooltip-base {\n border: 2px solid #ffffff;\n }\n\n .tooltip-light {\n border: 2px solid #000000;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .tooltip-base,\n .tooltip-enter-active,\n .tooltip-exit-active {\n transition: none;\n }\n}\n";
|
|
100618
|
+
const injectedCss = "/* Source: index.css */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap');\n\n#Omniscribe {\n font-family: 'Lato', sans-serif;\n /* define colors */\n --active: #0a3785;\n --background-primary: #e7effd;\n --warning: #ffc107;\n --grey-50: #f9fafb;\n --grey-100: #f6f7f9;\n --grey-200: #e5e7eb;\n --grey-700: #6f7d95;\n --grey-800: #4a5364;\n --grey-900: #111827;\n --active-black: #252a32;\n --placeholder: #a4adbc;\n --line: #e5e7ec;\n --custom-black: #13161a;\n --primary: #105bdb;\n --border: #e5e7ec;\n --white: #fdfdfd;\n --omni: #daf2ff;\n --omni-secondary: rgba(219, 219, 219, 0.75);\n --primary-button: #132caa;\n --primary-text: #36a3cf;\n --primary-900: #061044;\n --blue-100: #dbeafe;\n --blue-200: #bfdbfe;\n --blue-500: #105bdb;\n --blue-600: #2563eb;\n --blue-700: #1d4ed8;\n --report: var(--primary-button);\n --gray: #616161;\n --black: #1b2125;\n --sky-blue: #dbecff;\n --blue: #5886ba;\n --blue-600: #0b1962;\n --background: #f3f3f3bb;\n --foreground: oklch(0.145 0 0);\n --primary: #061044;\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --light-border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.87 0 0);\n --radius: 0.625rem;\n /* TEXT */\n --text-3xs: 8px;\n --text-3xs--line-height: calc(0.5 / 0.25);\n --text-2xs: 10px;\n --text-2xs--line-height: calc(0.75 / 0.5);\n --text-xs: 12px;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 14px;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 16px;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 18px;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 20px;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 22px;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 24px;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 26px;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 28px;\n --text-5xl--line-height: 1;\n --text-6xl: 30px;\n --text-6xl--line-height: 1;\n --text-7xl: 32px;\n --text-7xl--line-height: 1;\n --text-8xl: 34px;\n --text-8xl--line-height: 1;\n --text-9xl: 46px;\n --text-9xl--line-height: 1;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n /* custom colors */\n --color-white: var(--white);\n --color-light-border: var(--light-border);\n --color-omni: var(--omni);\n --color-report: var(--report);\n --color-omni-secondary: var(--omni-secondary);\n --color-primary-text: var(--primary-text);\n --color-primary-900: var(--primary-900);\n --color-blue-500: var(--blue-500);\n --color-gray: var(--gray);\n --color-black: var(--black);\n --color-sky-blue: var(--sky-blue);\n --color-cream: var(--cream);\n --color-pink: var(--pink);\n --color-blue: var(--blue);\n --color-blue-600: var(--blue-600);\n --color-sky-blue-100: var(--sky-blue-100);\n --color-white-2: var(--white-2);\n --color-primary-700: var(--primary-700);\n --color-primary-500: var(--primary-500);\n --color-neutral-800: var(--neutral-800);\n --color-blue-2: var(--blue-2);\n --color-light-blue: var(--light-blue);\n --color-primary-100: var(--primary-100);\n --color-primary-300: var(--primary-300);\n --color-black-2: var(--black-2);\n --color-primary-button: var(--primary-button);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: #f3f4f6;\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-zinc-900: oklch(21% 0.006 285.885);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n /* rounded */\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n /* spacing */\n --spacing-layout-w: var(--layout-w);\n --spacing-layout-h: var(--layout-h);\n --spacing: 0.25rem;\n /* size */\n --container-md: 28rem;\n --container-xl: 36rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n\n --tracking-tight: -0.025em;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n a,\n p,\n textarea,\n button,\n span,\n h1,\n h2,\n h3,\n h4,\n h5,\n div {\n font-family: 'Lato', sans-serif;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n .no-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n .shadow-inner-right {\n box-shadow: inset -9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .shadow-inner-left {\n box-shadow: inset 9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .annotation {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-normal);\n }\n .annotation-semi {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .annotation-bold {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .info {\n font-size: var(--text-2xs);\n font-weight: var(--font-weight-normal);\n }\n .info-semi {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .info-bold {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .text-p {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-normal);\n }\n .text-p-semi {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .text-p-bold {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .omniscribe_shadow-xl {\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n }\n .scrollbar-pretty {\n &::-webkit-scrollbar {\n width: 6px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background-color: var(--omni-secondary);\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n\n .omniscribe_visible {\n visibility: visible;\n display: flex;\n flex: 1;\n }\n .omniscribe_hidden {\n display: none;\n height: 0;\n }\n\n .omniscribe_animate-spin {\n animation: spin 1s linear infinite;\n }\n}\n\n\n/* Source: modules/audio-recorder/components/audio-visualizer/AudioVisualizer.css */\n.omniscribe_audio-visualizer-container {\n display: flex;\n border-radius: var(--radius-md);\n width: calc(var(--spacing) * 60);\n align-items: center;\n justify-content: center;\n height: 60px;\n background: transparent;\n overflow: hidden;\n}\n\n.omniscribe_audio-visualizer-subcontainer {\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_audio-visualizer-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding-inline: 1px;\n margin-top: 0.25rem;\n}\n\n.omniscribe_audio-visualizer-item {\n width: 2px;\n height: 2px;\n background-color: rgba(48, 54, 68, 0.85);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 50ms;\n}\n\n.lk-audio-bar-visualizer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n background: var(--lk-bg);\n gap: var(--lk-va-bar-gap, 24px);\n}\n.lk-audio-bar-visualizer > .lk-audio-bar {\n transform-origin: 'center';\n height: 100%;\n width: var(--lk-va-bar-width, 12px);\n border-radius: var(--lk-va-bar-border-radius, 32px);\n background-color: var(--lk-va-bar-bg, rgba(136, 136, 136, 0.2));\n transition: background-color 0.25s ease-out;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='speaking'] > .lk-audio-bar,\n.lk-audio-bar-visualizer > .lk-audio-bar.lk-highlighted,\n.lk-audio-bar-visualizer > [data-lk-highlighted='true'] {\n background-color: var(--lk-fg, rgb(136, 136, 136));\n transition: none;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='thinking'] {\n transition: background-color 0.15s ease-out;\n}\n\n\n/* Source: modules/audio-recorder/components/content-container/content-containter.css */\n.omniscribe_audio-content-container {\n background-color: var(--white);\n width: -webkit-fill-available;\n flex: 1 1 0 !important;\n min-height: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n overflow: hidden !important;\n}\n\n.omniscribe_audio-content-messages {\n color: var(--black);\n}\n\n.omniscribe_transcription-footer-container {\n position: sticky;\n display: flex;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-bottom: calc(var(--spacing) * 3);\n}\n\n.omniscribe_audio-content-render {\n color: var(--black);\n font-weight: var(--font-weight-medium);\n padding-block: 0.5rem;\n padding-inline: 0.75rem;\n margin-bottom: 0.25rem;\n}\n\n.omniscribe_patient {\n color: #db10c1;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_doctor {\n color: var(--blue-500);\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_speaker {\n color: #28a745;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_transcription {\n color: var(--black);\n}\n\n.omniscribe_transcription-down-btn-container {\n background-color: white;\n}\n\n.omniscribe_transcription-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Chrome, Safari, Edge (Webkit) */\n.omniscribe_audio-content-container > div::-webkit-scrollbar {\n width: 6px !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-thumb {\n border-radius: 10px !important;\n background-color: var(--omni-secondary) !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-track {\n background-color: transparent !important;\n}\n\n/* Firefox */\n.omniscribe_audio-content-container > div {\n scrollbar-width: thin !important;\n scrollbar-color: var(--omni-secondary) transparent !important;\n}\n\n\n/* Source: modules/audio-recorder/components/recorder-counter/RecorderCounter.css */\n.omniscribe_audio-recorder-timer {\n color: var(--blue-500);\n font-weight: 600; /* SemiBold */\n font-style: normal; /* SemiBold is a weight, not a style */\n font-size: var(--font-size-400); /* design token */\n line-height: var(--line-height-400); /* design token */\n letter-spacing: 0;\n text-align: center;\n}\n\n\n/* Source: modules/audio-recorder/components/report-button/ReportButton.css */\n.omniscribe_report-button-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n}\n.omniscribe_report-button-width {\n max-height: 32px;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width {\n max-height: 32px;\n background-color: var(--blue-500) !important;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width:hover {\n background-color: #0c48ad !important; /* darker shade of blue */\n}\n\n\n/* Source: modules/audio-recorder/components/toggle-record/ToggleRecord.css */\n.omniscribe_record-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.omniscribe_record-button-classname {\n background-color: transparent;\n border: none;\n padding: 4px;\n}\n\n.omniscribe_record-button {\n background-color: var(--primary-button);\n border-radius: 50%;\n cursor: pointer;\n width: 56px;\n height: 56px;\n align-items: center;\n justify-content: center;\n display: flex;\n transition-duration: 300ms;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_record-button-enabled {\n opacity: 100%;\n pointer-events: auto;\n scale: 110%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-not-enabled {\n opacity: 50%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-disabled {\n opacity: 50%;\n background-color: dimgray;\n pointer-events: none;\n}\n\n.omniscribe_record-enabled {\n width: 50px;\n height: 50px;\n background-color: var(--primary-button);\n animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n position: absolute;\n z-index: -1;\n border-radius: calc(infinity * 1px);\n opacity: 100%;\n}\n\n@keyframes ping {\n 75%,\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n\n/* Source: modules/audio-recorder/section/AudioRecorder.css */\n.omniscribe_audio-recorder {\n align-items: center;\n padding-block: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n background-color: var(--white);\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\n[dir='ltr'] .omniscribe_audio-recorder {\n border-bottom-left-radius: 12px;\n}\n\n[dir='rtl'] .omniscribe_audio-recorder {\n border-bottom-right-radius: 12px;\n border-bottom-left-radius: 0px;\n}\n\n.omniscribe_audio-recorder-container {\n display: flex;\n align-items: center;\n border: solid 1px var(--light-border);\n background-color: var(--white);\n max-height: 42px;\n border-radius: 9999px;\n border-width: 1px;\n justify-content: space-between;\n margin-bottom: 5px;\n flex: 1;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n padding-inline: calc(var(--spacing) * 2);\n}\n\n.omniscribe_audio-recorder-audio-container {\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: center;\n}\n\n.omniscribe_audio-recorder-refresh-btn {\n cursor: pointer;\n background-color: #f6f7f9;\n border-radius: 100px;\n transition:\n transform 0.3s ease,\n opacity 0.3s ease,\n background-color 0.3s ease;\n transform: scale(1);\n}\n.omniscribe_audio-recorder-refresh-btn-enabled {\n pointer-events: auto;\n opacity: 1;\n\n &:hover {\n transform: scale(1.15);\n }\n}\n.omniscribe_audio-recorder-refresh-btn-disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n.omniscribe_audio-recorder-audio-content-container {\n border: 1px solid #e5e7ec;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex: 1;\n border-radius: 8px;\n margin-top: 18px;\n padding-top: 8px;\n padding-inline: calc(var(--spacing) * 4);\n padding-bottom: 8px;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n}\n.omniscribe_audio-recorder-footer {\n border-top: 1px solid #e5e7ec;\n padding-top: 16px;\n margin-top: 12px;\n display: flex;\n width: 100%;\n}\n.omniscribe_audio-recorder-footer-content {\n padding-inline: calc(var(--spacing) * 4);\n width: 100%;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n.omniscribe_audio-recorder-audio-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n padding-block: 8px;\n}\n\n.omniscribe_audio-recorder-audio-star-icons {\n display: flex;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_audio-recorder-audio-feedback {\n color: #4a5364;\n}\n\n.omniscribe_audio-recorder-refresh-icon {\n color: #252a32;\n}\n\n.omniscribe_audio-recorder-star-icon {\n cursor: pointer;\n display: inline-block;\n}\n\n.omniscribe_audio-recorder-audio-star-container {\n position: relative;\n}\n\n\n/* Source: modules/chat/components/MicrophoneButton.css */\n/* Microphone Button Styles */\n.microphone-button {\n transition: all 150ms ease;\n border: none !important;\n background-color: white !important;\n box-shadow: none !important;\n margin-right: 3px;\n}\n\n.microphone-button--recording {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background-color: red !important;\n}\n\n/* Pulse animation for recording state */\n@keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n\n\n/* Source: modules/chat/components/thread/Thread.css */\n.omniscribe_thread-container {\n flex: 1;\n border-style: none;\n display: flex;\n overflow: hidden;\n background: transparent;\n bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n margin-block: calc(var(--spacing) * 0) /* 0rem = 0px */;\n right: 20px;\n border-bottom-left-radius: 12px;\n width: 100%;\n}\n\n.omniscribe_thread-container-history-cont {\n position: relative;\n display: flex;\n width: 0%;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-container-history-cont-open {\n width: 33%;\n}\n\n.omniscribe_thread-container-history-subcont {\n position: absolute;\n width: 100%;\n height: 100%;\n border-right-width: 1px;\n border-color: var(--color-slate-200)\n /* oklch(92.9% 0.013 255.508) = #e2e8f0 */;\n overflow: hidden;\n z-index: 20;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n.omniscribe_thread-container-history-subcont-open {\n translate: calc(var(--spacing) * 0);\n}\n\n.omniscribe_thread-container-history-subcont-close {\n translate: calc(300px * -1);\n}\n\n.omniscribe_thread-container-history-content {\n position: relative;\n height: 100%;\n width: 100%;\n}\n\n.omniscribe_thread-content-container {\n display: flex;\n flex: 1;\n width: 100%;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-content-btn-container {\n top: 0;\n left: 0;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 3);\n padding: calc(var(--spacing) * 2);\n padding-left: calc(var(--spacing) * 4);\n z-index: 10;\n}\n.omniscribe_absolute {\n position: absolute;\n}\n\n.omniscribe_relative {\n position: relative;\n}\n\n.omniscribe_thread-content-btn {\n background-color: #b2c3d6;\n}\n.omniscribe_thread-content-btn:hover {\n background-color: var(--color-gray-100);\n}\n\n.omniscribe_thread-content-btn-started-container {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: calc(var(--spacing) * 2);\n position: relative;\n}\n\n.omniscribe_thread-content-btn-started-subcontainer {\n position: absolute;\n left: 0;\n z-index: 10;\n top: calc(var(--spacing) * 2);\n}\n\n.omniscribe_thread-stick-to-bottom {\n font-size: 14px;\n}\n.omniscribe_thread-stick-to-bottom-content {\n position: absolute;\n inset: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n display: grid;\n grid-template-rows: 1fr auto;\n}\n\n.omniscribe_thread-stick-to-bottom-content-class {\n padding-bottom: calc(var(--spacing) * 13);\n display: flex;\n flex-direction: column;\n padding-left: calc(var(--spacing) * 4);\n padding-right: calc(var(--spacing) * 4);\n min-width: 0;\n padding-top: 12px;\n position: relative;\n}\n\n.omniscribe_thread-footer-container {\n position: sticky;\n display: flex;\n background-color: white;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-inline: calc(var(--spacing) * 4);\n padding-top: calc(var(--spacing) * 1);\n border-bottom: 1px solid #e5e7ec;\n border-bottom-left-radius: 0.5rem;\n}\n\n.omniscribe_thread-footer-scroll-to-bottom {\n position: fixed;\n bottom: 17%;\n}\n.omniscribe_thread-footer-form-container {\n background-color: white;\n border-radius: 1rem;\n border: solid 1px var(--border);\n box-shadow: 0px 4px 4px 0px #00000040;\n margin-inline: auto;\n margin-bottom: calc(0.25rem /* 4px */ * 2);\n width: 100%;\n max-width: 48rem;\n position: relative;\n z-index: 10;\n}\n\n.omniscribe_thread-footer-form {\n display: grid;\n grid-template-rows: 1fr auto;\n max-width: var(--container-3xl) /* 48rem = 768px */;\n margin-inline: auto;\n}\n\n.omniscribe_thread-footer-textarea {\n resize: none;\n width: 100%;\n min-height: 20px;\n max-height: 56px;\n height: 20px;\n padding: 0 !important;\n overflow-y: auto;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n.omniscribe_thread-footer-form-content {\n position: relative;\n display: flex;\n align-items: center;\n right: 0;\n bottom: 0;\n width: 100%;\n padding-block: 6px;\n}\n.omniscribe_thread-footer-form-btn {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n}\n.omniscribe_thread-footer-form-left-btns {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.omniscribe_thread-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n.omniscribe_thread-footer-btns-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n}\n\n.omniscribe_thread-footer-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n margin-bottom: 8px;\n}\n\n.omniscribe_thread-no-sources {\n width: 10px;\n}\n\n/* Attach file button */\n.omniscribe_thread-attach-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 8px;\n background-color: transparent;\n color: var(--color-gray-500, #6b7280);\n cursor: pointer;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n padding: 0;\n margin-left: 8px;\n margin-right: 8px;\n flex-shrink: 0;\n}\n\n.omniscribe_thread-attach-btn:hover {\n background-color: var(--color-gray-100, #f3f4f6);\n color: var(--color-gray-700, #374151);\n}\n\n.omniscribe_thread-attach-btn:disabled {\n background-color: transparent;\n color: var(--color-gray-300, #d1d5db);\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.omniscribe_thread-attach-btn:disabled:hover {\n background-color: transparent;\n color: var(--color-gray-300, #d1d5db);\n}\n\n\n/* Source: modules/chat/components/thread/components/FileLimitBanner.css */\n/* File Limit Banner */\n.omniscribe_file-limit-banner {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n background-color: #dc2626;\n color: white;\n border-radius: 12px;\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);\n animation:\n slideInFromTop 0.3s ease-out,\n slideOutToTop 0.3s ease-in 4.7s;\n animation-fill-mode: forwards;\n width: auto;\n max-width: 90vw;\n padding: 0;\n margin: 0 auto;\n}\n\n.omniscribe_file-limit-banner-content {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 20px;\n gap: 12px;\n white-space: nowrap;\n}\n\n.omniscribe_file-limit-banner-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: white;\n}\n\n.omniscribe_file-limit-banner-message {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n text-align: center;\n}\n\n.omniscribe_file-limit-banner-close {\n background: none;\n border: none;\n color: white;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.omniscribe_file-limit-banner-close:hover {\n background-color: rgba(255, 255, 255, 0.2);\n}\n\n.omniscribe_file-limit-banner-close svg {\n width: 16px;\n height: 16px;\n}\n\n/* Animations */\n@keyframes slideInFromTop {\n 0% {\n opacity: 0;\n transform: translateX(-50%) translateY(-20px);\n }\n 100% {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n}\n\n@keyframes slideOutToTop {\n 0% {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateX(-50%) translateY(-20px);\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/FilePreview.css */\n/* File Preview Container */\n.omniscribe_file-preview-container {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 8px;\n width: 580px;\n padding: 12px 16px;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Force scroll in any context */\n position: relative;\n z-index: 1;\n /* Ensure scroll works even with parent containers that have overflow hidden */\n min-height: 104px; /* minimum height for content */\n}\n\n.omniscribe_file-preview-container-history-open {\n width: 372px;\n}\n\n/* Custom scrollbar */\n.omniscribe_file-preview-container::-webkit-scrollbar {\n height: 6px;\n}\n\n.omniscribe_file-preview-container::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.omniscribe_file-preview-container::-webkit-scrollbar-thumb {\n background-color: #d1d5db;\n border-radius: 3px;\n}\n\n.omniscribe_file-preview-container::-webkit-scrollbar-thumb:hover {\n background-color: #9ca3af;\n}\n\n/* Individual image thumbnail */\n.omniscribe_file-preview-image {\n position: relative;\n width: 80px;\n height: 80px;\n border-radius: 12px;\n background-color: #e8edf5;\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.omniscribe_file-preview-image-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 12px;\n}\n\n.omniscribe_file-preview-image-placeholder {\n width: 100%;\n height: 100%;\n background-color: #e8edf5;\n border-radius: 12px;\n}\n\n/* Document card */\n.omniscribe_file-preview-document {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background-color: white;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 16px;\n min-width: 220px;\n max-width: 280px;\n max-height: 56px;\n position: relative;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n flex-shrink: 0;\n}\n\n.omniscribe_file-preview-document-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n background-color: #dc2626;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.omniscribe_file-preview-document-icon svg {\n color: white;\n}\n\n.omniscribe_file-preview-document-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n flex: 1;\n padding-right: 24px;\n}\n\n.omniscribe_file-preview-document-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--color-gray-900, #111827);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n}\n\n.omniscribe_file-preview-document-type {\n font-size: 12px;\n color: #dc2626;\n font-weight: 500;\n}\n\n/* Remove button */\n.omniscribe_file-preview-remove-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n border-radius: 50%;\n background-color: #2563eb;\n color: white;\n cursor: pointer;\n padding: 0;\n transition: background-color 0.2s ease;\n z-index: 1;\n}\n\n.omniscribe_file-preview-remove-btn:hover {\n background-color: #1d4ed8;\n}\n\n.omniscribe_file-preview-remove-btn--image {\n top: 6px;\n right: 6px;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenu.css */\n.omniscribe_link-menu-container {\n width: 18rem;\n border-radius: 0.5rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n border: 1px solid var(--grey-200);\n background-color: #ffffff;\n}\n\n.omniscribe_link-menu-navigation {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: var(--grey-50);\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n\n.omniscribe_nav-button {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0.125rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n color: #6b7280;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_nav-button:hover {\n background-color: var(--color-gray-100);\n color: #374151;\n}\n\n.omniscribe_nav-button:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow: 0 0 0 2px #3b82f6;\n}\n\n.omniscribe_nav-button:active {\n background-color: var(--grey-200);\n}\n\n.omniscribe_nav-icon {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n.omniscribe_page-indicator {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: #4b5563;\n}\n\n.omniscribe_link-menu-content {\n padding: 0.375rem;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenuCard.css */\n.omniscribe_card-link {\n display: block;\n border-radius: 0.5rem;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 200ms;\n background-color: #ffffff;\n border: 1px solid var(--grey-200);\n text-decoration: none;\n}\n\n.omniscribe_card {\n border: 0;\n box-shadow: none;\n border-radius: 0.5rem;\n margin: 0;\n padding: 0;\n}\n\n.omniscribe_card:hover {\n background-color: var(--grey-50);\n}\n\n.omniscribe_card-header {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: rgba(249, 250, 251, 0.5);\n}\n\n.omniscribe_favicon {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-icon {\n width: 1rem;\n height: 1rem;\n border-radius: 0.125rem;\n background-color: #d1d5db;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-text {\n font-size: 8px;\n font-weight: 700;\n color: var(--grey-600);\n text-transform: uppercase;\n}\n\n.omniscribe_card-title {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: var(--grey-800);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n min-width: 0;\n margin: 0;\n}\n\n.omniscribe_card-content {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.omniscribe_card-content > * + * {\n margin-top: 0.25rem;\n}\n\n.omniscribe_link-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n color: var(--color-activeblack, #000000);\n line-height: 1.375;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.omniscribe_snippet-text {\n font-size: 0.75rem;\n line-height: 1rem;\n color: #4b5563;\n line-height: 1.625;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupPill.css */\n.omniscribe_pill-container {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n margin-left: 0.125rem;\n margin-right: 0.125rem;\n}\n\n.omniscribe_pill-button {\n display: inline-flex;\n align-items: center;\n border-radius: 9999px;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n background-color: var(--blue-100);\n color: var(--blue-700);\n border: 1px solid var(--blue-200);\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.omniscribe_pill-button:hover {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-button:focus {\n background-color: var(--blue-200);\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow:\n 0 0 0 2px #3b82f6,\n 0 0 0 4px rgba(59, 130, 246, 0.1);\n}\n\n.omniscribe_pill-button--active {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-domain {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (min-width: 640px) {\n .omniscribe_pill-domain {\n max-width: 200px;\n }\n}\n\n.omniscribe_pill-counter {\n margin-left: 0.375rem;\n background-color: var(--blue-200);\n color: #1e40af;\n border-radius: 9999px;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n font-size: 10px;\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_menu-portal {\n position: absolute;\n z-index: 100;\n}\n\n\n/* Source: modules/chat/components/thread/components/PredefinedQuestions.css */\n.omniscribe_predefined-questions-container {\n margin-top: calc(var(--spacing) * 2) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n display: flex;\n flex-direction: column;\n}\n.omniscribe_predefined-questions-span {\n color: var(--black);\n}\n\n.omniscribe_predefined-title {\n margin-bottom: 8px;\n}\n\n.omniscribe_predefined-questions-msg-container {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_predefined-questions-content {\n background-color: #ecf9ff !important;\n text-align: left;\n padding-top: 4px;\n padding-right: 16px;\n padding-bottom: 4px;\n padding-left: 16px;\n border-radius: 4px;\n width: fit-content;\n height: fit-content;\n}\n\n.omniscribe_predefined-questions-btn-rounded {\n border-radius: 8px;\n}\n\n\n/* Source: modules/chat/components/thread/components/SummaryLoading.css */\n/* Auto-summary loading styles */\n.omniscribe_auto-summary-container {\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n flex-direction: column;\n padding: 20px;\n z-index: 1000;\n pointer-events: none;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_auto-summary-text {\n font-size: 18px;\n text-align: center;\n margin-bottom: 20px;\n font-weight: 500;\n color: #2b303a;\n}\n\n.omniscribe_auto-summary-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Loading dots animation */\n.omniscribe_loading-dots {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_loading-dots::after {\n content: '';\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-dot-flashing 1.4s infinite linear;\n}\n\n.omniscribe_loading-dots::before {\n content: '';\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-dot-flashing 1.4s infinite linear;\n animation-delay: -0.16s;\n margin-right: 4px;\n}\n\n.omniscribe_loading-dots span {\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-dot-flashing 1.4s infinite linear;\n animation-delay: -0.32s;\n margin-right: 4px;\n}\n\n@keyframes omniscribe-dot-flashing {\n 0%,\n 80%,\n 100% {\n opacity: 0;\n }\n 40% {\n opacity: 1;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/history/ThreadHistory.css */\n.omniscribe_thread-list-container {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-list-content {\n padding-bottom: calc(var(--spacing) * 16);\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.omniscribe_thread-list-item {\n width: 100%;\n padding-inline: 0;\n}\n\n.omniscribe_thread-list-btn {\n text-align: left;\n align-items: center !important;\n justify-content: flex-start !important;\n width: calc(100% - var(--spacing) * 2);\n border-radius: 4px !important;\n margin-bottom: 4px;\n font-weight: var(--font-weight-normal);\n padding-inline: calc(var(--spacing) * 1) !important;\n}\n\n.omniscribe_thread-list-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--Text-Active, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-loading {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n align-items: flex-start;\n justify-content: flex-start;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-history-loading-skeleton {\n width: 100%;\n height: calc(var(--spacing) * 10);\n}\n\n.omniscribe_thread-history-container {\n display: flex;\n flex-direction: column;\n border-right: 1px solid #e5e7ec;\n align-items: flex-start;\n justify-content: flex-start;\n /* gap: calc(var(--spacing) * 6); */\n height: 100%;\n flex-shrink: 0;\n}\n\n.omniscribe_thread-history-button-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* space between left group and back button */\n width: 92%;\n /* padding-top: calc(var(--spacing) * 2); */\n background: var(--Greyscale-100, #f6f7f9);\n /* padding-inline: calc(var(--spacing) * 2); */\n padding: 8px;\n}\n\n/* Flex container for the left group */\n.omniscribe_thread-history-left-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n /* space between icon and text */\n}\n\n.omniscribe_thread-history-left-text {\n color: var(--Greyscale-900, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1);\n background-color: color-mix(in oklab, var(--blue) 40%, transparent);\n width: stretch;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill-available;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_thread-history-no-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n width: 100%;\n}\n\n.omniscribe_thread-history-chat-started-btn {\n border: none;\n background: transparent;\n padding: 0px;\n display: flex;\n flex-direction: row;\n gap: calc(var(--spacing) * 2);\n align-items: center;\n cursor: pointer;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-history-chat-started-btn-text {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n font-weight: var(--font-weight-semibold);\n letter-spacing: var(--tracking-tight);\n}\n\n.omniscribe_thread-history-title {\n color: var(--Button-Primary-Active, #105bdb);\n font-family: var(--Font-Family-Omniscribe, Lato);\n font-size: var(--Font-Size-font-size-100, 12px) !important;\n font-style: normal;\n line-height: var(--Font-Line-Height-line-height-100, 14.4px) !important;\n /* 120% */\n letter-spacing: var(\n --Font-Letter-Spacing-letter-spacing-100,\n 0.05px\n ) !important;\n cursor: pointer;\n padding-inline: calc(var(--spacing) * 2) !important;\n}\n\n.omniscribe_thread-history-btn {\n border-radius: var(--Radius-radius-small, 4px) !important;\n background-color: var(--Greyscale-300, #e5e7ec) !important;\n cursor: pointer;\n\n &:hover {\n background-color: var(--Greyscale-300, #e5e7ec);\n }\n}\n\n.omniscribe_thread-tooltip {\n padding: calc(0.25rem /* 4px */ * 4);\n}\n\n\n/* Source: modules/chat/components/thread/components/markdown-text.css */\n.omniscribe_markdown-code-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 4) /* 1rem = 16px */;\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--color-zinc-900)\n /* oklch(21% 0.006 285.885) = #18181b */;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n color: var(--white);\n}\n\n.omniscribe_markdown-code-span {\n text-transform: lowercase;\n & > span {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n }\n}\n\n.omniscribe_markdown-h1 {\n margin-bottom: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-4xl) /* 2.25rem = 36px */;\n line-height: var(--text-4xl--line-height) /* calc(2.5 / 2.25) ≈ 1.1111 */;\n font-weight: var(--font-weight-extrabold) /* 800 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h2 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-3xl) /* 1.875rem = 30px */;\n line-height: var(--text-3xl--line-height) /* calc(2.25 / 1.875) ≈ 1.2 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h3 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-2xl);\n line-height: var(--text-2xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h4 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-xl);\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h5 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-size: var(--text-lg);\n line-height: var(--text-lg--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h6 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-p {\n margin-block: calc(var(--spacing) * 2.5);\n line-height: calc(var(--spacing) * 5);\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-a {\n color: var(--primary);\n font-weight: var(--font-weight-medium) /* 500 */;\n text-decoration-line: underline;\n text-underline-offset: 4px;\n overflow-wrap: break-word;\n}\n\n.omniscribe_markdown-blockquote {\n border-left-width: 2px;\n padding-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n font-style: italic;\n}\n\n.omniscribe_markdown-ul {\n list-style-type: disc;\n padding-inline-start: 20px;\n word-break: break-word;\n & > li {\n margin-top: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-ol {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n margin-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n list-style-type: decimal;\n & > li {\n margin-top: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-hr {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n border-bottom-width: 1px;\n}\n.omniscribe_markdown-table {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n width: 100%;\n border-collapse: separate;\n border-spacing: calc(var(--spacing) * 0) /* 0rem = 0px */;\n overflow-y: auto;\n}\n.omniscribe_markdown-th {\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n font-weight: var(--font-weight-bold) /* 700 */;\n &:first-child {\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child {\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-td {\n border-bottom-width: 1px;\n border-left-width: 1px;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n &:last-child {\n border-right-width: 1px;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-tr {\n margin: calc(var(--spacing) * 0) /* 0rem = 0px */;\n &:first-child {\n border-top-width: 1px;\n }\n &:last-child > td:first-child {\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child > td:last-child {\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n}\n\n.omniscribe_markdown-sup {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n & > a {\n text-decoration-line: none;\n }\n}\n\n.omniscribe_markdown-pre {\n overflow-x: auto;\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--black);\n padding: calc(var(--spacing) * 4) /* 1rem = 16px */;\n color: var(--white);\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_markdown-code {\n border-radius: 0.25rem /* 4px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n}\n\n.omniscribe_markdown-link {\n color: var(--color-primary); /* text-primary */\n font-weight: 500; /* font-medium */\n text-decoration: underline; /* underline */\n text-underline-offset: 4px; /* underline-offset-4 */\n word-wrap: break-word; /* break-words */\n}\n\n.omniscribe_markdown-link:hover {\n color: var(--color-primary-dark); /* hover:text-primary-dark */\n}\n\n.omniscribe_assistant-markdown-container strong,\n.omniscribe_assistant-markdown-container b {\n font-weight: bold !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessage.css */\n.omniscribe_assistant-message-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n width: 100%;\n}\n\n.omniscribe_assistant-message-calls-container {\n display: flex;\n flex-direction: column;\n max-width: 100%;\n}\n\n.omniscribe_assistant-markdown-container {\n padding-block: calc(var(--spacing) * 0.5) /* 0.25rem = 4px */;\n}\n\n.omniscribe_assistant-commands-container {\n display: flex;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n align-items: center;\n margin-right: auto;\n}\n.omniscribe_assistant-message-container:hover,\n.omniscribe_assistant-message-container:focus {\n .omniscribe_assistant-commands-container {\n opacity: 100%;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessageLoading.css */\n.omniscribe_assistant-message-loading-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n margin-top: 3px;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_assistant-message-loading {\n display: flex;\n align-items: center;\n border-radius: var(--radius-2xl) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 1);\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n height: calc(var(--spacing) * 8) /* 2rem = 32px */;\n}\n.omniscribe_assistant-message-loading-dot {\n width: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n height: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n border-radius: calc(infinity * 1px);\n animation: loadingFade 2s infinite;\n background-color: color-mix(in oklab, var(--foreground) 50%, transparent);\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(1) {\n animation-delay: 0.2s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(2) {\n animation-delay: 0.4s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n@keyframes loadingFade {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.8;\n }\n 100% {\n opacity: 0;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/BranchSwitcher.css */\n.omniscribe_brand-switcher-container {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_brand-switcher-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_brand-switcher-btn {\n width: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n height: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n padding: calc(0.25rem /* 4px */ * 1) /* 0.25rem = 4px */;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/CommandBar.css */\n.omniscribe_command-bar-container {\n display: flex;\n align-items: center;\n padding-right: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n transition: opacity 0.2s ease-in-out;\n}\n\n.omniscribe_command-bar-container.omniscribe_command-bar-hidden {\n opacity: 0;\n pointer-events: none;\n}\n\n.thumbs.active {\n color: var(--blue-500);\n}\n\n.omniscribe_feedback-button-container {\n position: relative;\n display: inline-block;\n}\n\n.omniscribe_command-bar-container-icon-color,\n.thumbs {\n color: #4a5364;\n}\n\n.omniscribe_command-bar-container svg {\n width: 12px !important;\n height: 12px !important;\n}\n\n.omniscribe_command-bar-container .omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 0.5) !important;\n}\n\n.omniscribe_command-bar-container .tooltip-base {\n padding: 0.25rem 0.5rem;\n}\n\n.omniscribe_command-bar-container .tooltip-trigger {\n padding: 1px;\n margin: 1px;\n}\n\n.omniscribe_command-bar-container .omniscribe_button-size-icon {\n height: calc(var(--spacing) * 3);\n width: calc(var(--spacing) * 3);\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/HumanMessage.css */\n.omniscribe_human-message-container {\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n.omniscribe_human-message-container-editing {\n width: 100%;\n max-width: var(--container-xl) /* 36rem = 576px */;\n}\n.omniscribe_human-message-container-no-editing {\n max-width: 100%;\n}\n\n.omniscribe_human-message-command-container {\n display: flex;\n gap: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n align-items: center;\n margin-left: auto;\n}\n.omniscribe_human-message-command-container-editing {\n opacity: 100%;\n}\n\n.omniscribe_human-message-container:focus,\n.omniscribe_human-message-container:hover {\n .omniscribe_human-message-command-container {\n opacity: 100%;\n }\n}\n\n.omniscribe_human-message-subcontainer {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.omniscribe_human-message-subcontainer-editing {\n width: 100%;\n}\n\n.omniscribe_human-message-content {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n}\n\n.omniscribe_human-message-content-text {\n text-align: right;\n padding-top: 4px;\n padding-bottom: 4px;\n padding-inline: calc(var(--spacing) * 2);\n border-radius: var(--radius-3xl);\n background-color: #f6f7f9;\n font-weight: 500;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n margin: 0;\n}\n.omniscribe_human-message-textarea {\n min-height: 2.5rem !important; /* 40px */\n max-height: 12rem !important; /* 192px - Allow more vertical space */\n min-width: 200px !important; /* Minimum width for usability */\n resize: both; /* Allow controlled resizing in both directions */\n width: 100%;\n overflow: auto; /* Enable scroll when content exceeds max dimensions */\n\n &:focus-visible {\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n}\n\n.omniscribe_human-message-textarea-chat-history-close {\n max-width: 100% !important;\n}\n\n.omniscribe_human-message-textarea-chat-history-open {\n max-width: 385px !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/MessageImages.css */\n/* Message Files Container (for both images and documents) */\n.omniscribe_message-files {\n margin-top: 8px;\n margin-bottom: 4px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Message Images Container */\n.omniscribe_message-images {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_message-images-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n max-width: 100%;\n}\n\n/* Individual Image Container */\n.omniscribe_message-image-container {\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid #e0e0e0;\n cursor: pointer;\n transition:\n transform 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.omniscribe_message-image-container:hover {\n transform: scale(1.02);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n.omniscribe_message-image-container-single {\n max-width: 200px;\n max-height: 200px;\n}\n\n.omniscribe_message-image-container-multiple {\n width: 80px;\n height: 80px;\n flex-shrink: 0;\n}\n\n/* Image Element */\n.omniscribe_message-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.omniscribe_message-image-container-single .omniscribe_message-image {\n max-width: 200px;\n max-height: 200px;\n width: auto;\n height: auto;\n}\n\n/* Loading State */\n.omniscribe_message-image-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 60px;\n background-color: #f8f9fa;\n color: #6c757d;\n font-size: 12px;\n border-radius: 8px;\n}\n\n/* Error State */\n.omniscribe_message-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 60px;\n background-color: #f8f9fa;\n color: #6c757d;\n font-size: 12px;\n border-radius: 8px;\n text-align: center;\n cursor: default;\n}\n\n.omniscribe_message-image-error span {\n font-size: 20px;\n margin-bottom: 4px;\n}\n\n.omniscribe_message-image-error small {\n font-size: 10px;\n}\n\n/* Image Counter for Multiple Images */\n.omniscribe_message-image-counter {\n position: absolute;\n top: 4px;\n right: 4px;\n background-color: rgba(0, 0, 0, 0.7);\n color: white;\n font-size: 10px;\n font-weight: bold;\n padding: 2px 6px;\n border-radius: 12px;\n min-width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Images Count */\n.omniscribe_message-images-count {\n margin-top: 4px;\n font-size: 11px;\n color: #6c757d;\n font-style: italic;\n}\n\n/* Modal for Full-Size Images */\n.omniscribe_message-image-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_message-image-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n}\n\n.omniscribe_message-image-modal-content {\n position: relative;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_message-image-modal-img {\n max-width: 100%;\n max-height: 100%;\n border-radius: 8px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n}\n\n.omniscribe_message-image-modal-close {\n position: absolute;\n top: -10px;\n right: -10px;\n background-color: #fff;\n border: none;\n border-radius: 50%;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-size: 18px;\n font-weight: bold;\n color: #333;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_message-image-modal-close:hover {\n background-color: #f5f5f5;\n}\n\n/* Message Documents Container */\n.omniscribe_message-documents {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_message-document {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border-radius: 8px;\n background-color: #f8f9fa;\n border: 1px solid #e0e0e0;\n transition: background-color 0.2s ease;\n max-width: 280px;\n}\n\n.omniscribe_message-document:hover {\n background-color: #f0f0f0;\n}\n\n.omniscribe_message-document-icon {\n font-size: 24px;\n flex-shrink: 0;\n}\n\n.omniscribe_message-document-info {\n flex: 1;\n min-width: 0;\n}\n\n.omniscribe_message-document-name {\n font-weight: 500;\n font-size: 13px;\n color: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.omniscribe_message-document-size {\n font-size: 11px;\n color: #6c757d;\n}\n\n.omniscribe_message-documents-count {\n margin-top: 4px;\n font-size: 11px;\n color: #6c757d;\n font-style: italic;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ReasoningSection.css */\n.omniscribe_assistant-reasoning-section {\n margin-top: 12px;\n border-left: 3px solid #e5e7eb;\n padding-left: 12px;\n background-color: #f9fafb;\n border-radius: 4px;\n padding: 8px 12px;\n}\n\n.omniscribe_assistant-reasoning-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px 0;\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n width: 100%;\n text-align: left;\n}\n\n.omniscribe_assistant-reasoning-arrow {\n display: inline-block;\n transition: transform 0.2s ease-in-out;\n transform: rotate(0deg);\n}\n\n.omniscribe_assistant-reasoning-arrow--expanded {\n transform: rotate(90deg);\n}\n\n.omniscribe_assistant-reasoning-summary {\n margin-top: 8px;\n font-size: 14px;\n color: #374151;\n line-height: 1.5;\n}\n\n.omniscribe_assistant-reasoning-summary-item {\n margin: 8px 0;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolCalls.css */\n.omniscribe_tool-calls-container {\n margin-block-start: calc(calc(var(--spacing) * 4) * var(0));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(0)));\n width: 100%;\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_tool-calls-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 100%;\n flex-wrap: wrap;\n gap: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n}\n.omniscribe_tool-calls-h3 {\n font-weight: var(--font-weight-bold);\n color: var(--color-gray-900) /* oklch(21% 0.034 264.665) = #101828 */;\n word-break: break-all;\n font-size: 14px;\n margin: 0;\n}\n\n.omniscribe_tool-calls-item-args {\n align-items: flex-start;\n flex-wrap: wrap;\n}\n.omniscribe_tool-calls-item-args-text {\n word-break: break-all;\n margin-right: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n padding-block: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_tool-calls-item-args-code {\n background-color: var(--color-gray-50);\n border-radius: 0.25rem /* 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n word-break: break-all;\n}\n\n.omniscribe_tool-calls-pre {\n font-size: 12px;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolResults.css */\n/* ToolResult Component Styles */\n\n.omniscribe_tool-result {\n margin-top: 2px;\n border: 1px solid var(--grey-200);\n border-radius: 0.5rem !important; /* !rounded-lg */\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n overflow: hidden; /* overflow-hidden */\n width: 100%;\n}\n\n.omniscribe_tool-result-header {\n background-color: var(--grey-50); /* bg-gray-50 */\n padding-left: 1rem; /* px-4 */\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex; /* flex */\n align-items: center; /* items-center */\n justify-content: space-between; /* justify-between */\n}\n\n.omniscribe_tool-result-header--expanded {\n border-bottom: 1px solid var(--grey-200);\n}\n\n.omniscribe_tool-result-header-content {\n display: flex; /* flex */\n align-items: center; /* items-center */\n gap: 0.5rem; /* gap-2 */\n min-width: 0; /* min-w-0 */\n}\n\n.omniscribe_tool-result-title {\n font-weight: 500; /* font-medium */\n color: var(--grey-900);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; /* truncate */\n margin: 0;\n font-size: 14px;\n}\n\n.omniscribe_expand-button {\n padding: 0.25rem; /* p-1 */\n flex-shrink: 0; /* flex-shrink-0 */\n}\n\n.omniscribe_expand-icon {\n width: 1.25rem; /* w-5 */\n height: 1.25rem; /* h-5 */\n}\n\n.omniscribe_tool-result-content {\n padding: 1rem; /* p-4 */\n background-color: #ffffff; /* bg-white */\n max-height: 24rem; /* max-h-96 */\n overflow-y: auto; /* overflow-y-auto */\n}\n\n.omniscribe_tool-result-content > * + * {\n margin-top: 0.5rem; /* space-y-2 */\n}\n\n/* Scrollbar styles for webkit browsers */\n.omniscribe_tool-result-content::-webkit-scrollbar {\n width: 8px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-track {\n background: #f1f5f9;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n\n.omniscribe_result-card {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n border: 1px solid var(--color-gray-100);\n padding-top: 0.5rem !important; /* !py-2 */\n padding-bottom: 0.5rem !important;\n gap: 0 !important; /* !gap-0 */\n}\n\n.omniscribe_result-card-header {\n padding-top: 0.5rem !important; /* !pt-2 */\n padding-left: 0.5rem !important; /* !px-2 */\n padding-right: 0.5rem !important;\n padding-bottom: 0 !important; /* !pb-0 */\n}\n\n.omniscribe_result-card-title {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n font-weight: 600; /* font-semibold */\n}\n\n.omniscribe_result-link {\n color: var(--blue-600);\n text-decoration: none;\n transition-property: color, text-decoration;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_result-link:hover {\n text-decoration: underline; /* hover:underline */\n color: #1e40af; /* hover:text-blue-800 */\n}\n\n.omniscribe_result-card-content {\n padding: 0.5rem !important; /* !p-2 */\n padding-top: 0 !important; /* !pt-0 */\n}\n\n.omniscribe_result-description {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #374151; /* text-gray-700 */\n line-height: 1.625; /* leading-relaxed */\n word-break: break-all; /* break-all */\n display: -webkit-box;\n -webkit-line-clamp: 2; /* line-clamp-2 */\n -webkit-box-orient: vertical;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms; /* transition-all duration-150 ease-in-out */\n transition-timing-function: cubic-bezier(0.4, 0, 0.6, 1); /* ease-in-out */\n}\n\n.omniscribe_result-description:hover {\n -webkit-line-clamp: unset; /* hover:line-clamp-none */\n display: block;\n}\n\n.omniscribe_result-source {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #6b7280; /* text-gray-500 */\n margin-top: 0.25rem; /* mt-1 */\n padding-top: 0.25rem; /* pt-1 */\n border-top: 1px solid var(--color-gray-100);\n}\n\n.omniscribe_string-result {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n white-space: pre-wrap; /* whitespace-pre-wrap */\n background-color: var(--grey-50);\n padding: 0.75rem; /* p-3 */\n border-radius: 0.375rem; /* rounded-md */\n border: 1px solid var(--grey-200);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo,\n monospace; /* pre tag font */\n}\n\n\n/* Source: modules/chat/components/thread/components/tooltip-icon-button.css */\n.omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 1);\n /* width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6); */\n}\n\n.omniscribe_tooltip-icon-button-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: none;\n}\n\n\n/* Source: modules/configuration/components/chat/Chat.css */\n.omniscribe_chat-config {\n display: flex;\n flex-direction: column;\n gap: 24px;\n min-height: 0; /* Permite que los hijos controlen su altura */\n flex: 1; /* Toma el espacio disponible */\n}\n\n/* Espaciado específico para el separador en el contexto de chat */\n.omniscribe_chat-config .omniscribe_separator {\n margin: 8px 0; /* Margen vertical consistente */\n}\n\n.omniscribe_chat-prompt-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-right: 16px;\n}\n\n.omniscribe_chat-prompt-textarea {\n width: 100%;\n height: 74px;\n padding: 8px;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n color: #374151;\n background-color: white;\n resize: none;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.omniscribe_chat-prompt-textarea::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.omniscribe_chat-character-count {\n font-size: 12px;\n color: #6b7280;\n align-self: flex-start;\n}\n\n\n/* Source: modules/configuration/components/chat/PromptCustomization.css */\n.omniscribe_chat-prompt-title {\n font-size: 14px;\n font-weight: 400;\n color: #252a32;\n line-height: 14.4px;\n margin: 0 0 12px 0;\n}\n\n.omniscribe_chat-prompt-container {\n position: relative;\n}\n\n.omniscribe_chat-prompt-textarea {\n width: 100%;\n min-height: 80px;\n padding: 12px;\n border: 1px solid var(--border-color, #ddd);\n border-radius: 8px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.4;\n resize: none;\n transition: border-color 0.2s ease;\n}\n\n.omniscribe_chat-prompt-textarea:focus {\n outline: none;\n border-color: var(--primary-color, #007bff);\n box-shadow: 0 0 0 2px var(--primary-color-alpha, rgba(0, 123, 255, 0.1));\n}\n\n.omniscribe_chat-character-count {\n font-size: 12px;\n color: var(--text-secondary, #666);\n margin-top: 6px;\n text-align: right;\n}\n\n\n/* Source: modules/configuration/components/chat/SourceItem.css */\n.omniscribe_source-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.omniscribe_source-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n}\n\n.omniscribe_source-checkbox {\n width: 16px;\n height: 16px;\n accent-color: #105bdb;\n cursor: pointer;\n}\n\n.omniscribe_source-name {\n flex: 1;\n font-size: 12px;\n color: #374151;\n}\n/* Removed link styles for source name - now handled by icon button only */\n.omniscribe_source-external-icon {\n width: 12px;\n height: 12px;\n stroke: #105bdb;\n cursor: pointer;\n transition: stroke 0.2s;\n flex-shrink: 0;\n}\n\n.omniscribe_source-external-icon:hover {\n stroke: #0d47a1;\n}\n\n.omniscribe_source-checkbox:checked + .omniscribe_source-name {\n font-weight: 500;\n color: #1f2937;\n}\n\n\n/* Source: modules/configuration/components/chat/SourceSelector.css */\n.omniscribe_source-selector {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 24px;\n min-height: 0;\n flex: 1;\n max-width: 100%;\n box-sizing: border-box;\n}\n\n.omniscribe_source-selector-title {\n font-size: 16px;\n font-weight: 500;\n color: #252a32;\n margin: 0;\n}\n\n.omniscribe_source-selector-description {\n font-size: 14px;\n color: #6b7280;\n line-height: 1.5;\n margin: 0;\n}\n\n.omniscribe_source-list {\n width: 100%;\n max-width: 100%;\n min-height: 120px;\n max-height: 300px;\n border-radius: 12px;\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n background: #ffffff;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow-y: auto;\n flex: 1;\n box-sizing: border-box;\n}\n\n.omniscribe_source-list--compact {\n max-height: 120px;\n}\n\n\n/* Source: modules/configuration/section/Configuration.css */\n.omniscribe_config-content {\n width: 650px;\n max-height: 590px;\n opacity: 1;\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.omniscribe_config-list {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n.omniscribe_config-item {\n width: 100%;\n height: 75px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n opacity: 1;\n padding: 10px 22px 10px 16px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.omniscribe_config-item:hover {\n background-color: #f9fafb;\n}\n\n.omniscribe_config-item:focus {\n outline: none;\n background-color: #f3f4f6;\n}\n\n.omniscribe_config-item:last-child {\n border-bottom: none;\n}\n\n.omniscribe_config-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n}\n\n.omniscribe_config-icon {\n color: #4a5364;\n}\n\n.omniscribe_config-item-content {\n flex: 1;\n margin-left: 16px;\n margin-right: 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_config-item-title {\n margin: 0;\n font-weight: 700;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #252a32;\n}\n\n.omniscribe_config-item-description {\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #4a5364;\n}\n\n.omniscribe_config-item-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n flex-shrink: 0;\n}\n\n/* Sub-screen styles */\n.omniscribe_config-subscreen-header {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 16px 12px;\n color: #13161a;\n font-size: 14px;\n font-style: normal;\n font-weight: 700;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-back-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_config-subscreen-title {\n margin: 0;\n font-size: 14px;\n font-weight: 700;\n color: #13161a;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-subscreen-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-top: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n min-height: 0; /* Permite que los hijos se compriman */\n box-sizing: border-box; /* Incluye padding en el cálculo */\n}\n\n.omniscribe_config-subscreen-content.no-border {\n border-top: none;\n}\n\n.omniscribe_config-subscreen-content-template {\n flex: 1;\n}\n\n.omniscribe_config-section-label {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #374151;\n line-height: 1.4;\n}\n\n.omniscribe_config-language-section {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_config-language-section-title {\n font-size: 16px;\n font-weight: 600;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.omniscribe_config-subscreen-description {\n margin: 0 0 0 0;\n font-size: 14px;\n line-height: 18px;\n color: #13161a;\n font-weight: 400;\n}\n\n/* Dictionary Options View Styles */\n.omniscribe_config-dictionary-section {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.omniscribe_config-dictionary-add-section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.omniscribe_config-dictionary-input-row {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n\n.omniscribe_config-dictionary-input {\n height: 32px;\n border: 1px solid #e5e8eb !important;\n border-radius: 8px !important;\n padding: 0 12px !important;\n font-size: 14px !important;\n line-height: 1.4 !important;\n background-color: #ffffff !important;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease !important;\n}\n\n.omniscribe_config-dictionary-input:focus {\n outline: none !important;\n border-color: #4f46e5 !important;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-input::placeholder {\n color: #9ca3af !important;\n font-size: 14px !important;\n}\n\n.omniscribe_config-dictionary-input.error {\n border-color: #dc3545 !important;\n background-color: #fff5f5 !important;\n}\n\n.omniscribe_config-dictionary-input.error:focus {\n border-color: #dc3545 !important;\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-add-btn {\n width: 32px;\n height: 32px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--primary);\n border: 1px solid var(--primary);\n border-radius: 8px;\n color: var(--primary-foreground);\n cursor: pointer;\n transition: all 0.2s ease;\n margin-top: 0;\n font-size: 0;\n}\n\n.omniscribe_config-dictionary-add-btn:hover:not(:disabled) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n border-color: color-mix(in oklab, var(--primary) 90%, transparent);\n}\n\n.omniscribe_config-dictionary-add-btn:disabled {\n background-color: #e5e8eb;\n border-color: #e5e8eb;\n color: #9ca3af;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n\n.omniscribe_config-dictionary-list {\n display: flex;\n padding-top: 16px;\n flex-direction: column;\n gap: 8px;\n max-height: 410px;\n overflow-y: auto;\n margin-top: 4px;\n}\n\n.omniscribe_config-dictionary-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background-color: #f9fafb;\n border: 1px solid #e5e8eb;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.omniscribe_config-dictionary-row:hover {\n background-color: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.omniscribe_config-dictionary-cell {\n flex: 1;\n font-size: 14px;\n line-height: 20px;\n color: #374151;\n word-break: break-word;\n font-weight: 500;\n}\n\n.omniscribe_config-dictionary-arrow {\n color: #9ca3af;\n font-size: 16px;\n font-weight: 600;\n flex-shrink: 0;\n margin: 0 4px;\n}\n\n.omniscribe_config-dictionary-delete-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 6px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_config-dictionary-delete-btn:hover {\n background-color: #fee2e2;\n color: #dc2626;\n transform: scale(1.05);\n}\n\n.omniscribe_config-dictionary-empty {\n padding: 40px 16px;\n margin-top: 16px;\n text-align: center;\n color: #6b7280;\n font-size: 14px;\n line-height: 20px;\n background-color: #f9fafb;\n border: 2px dashed #e5e8eb;\n border-radius: 12px;\n font-style: italic;\n}\n\n/* Template specific styles */\n.omniscribe_template-field {\n background: white;\n border-bottom: 1px solid #e1e8ed;\n margin-bottom: 0;\n}\n\n.omniscribe_template-field:last-child {\n border-bottom: none;\n}\n\n.omniscribe_template-field-header {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n background: #ffffff;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_template-field-icon {\n margin-right: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon svg {\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon.expanded svg {\n transform: rotate(90deg);\n}\n\n.omniscribe_template-field-label {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #2c3e50;\n}\n\n.omniscribe_template-field-content {\n padding: 16px;\n background: white;\n}\n\n.omniscribe_template-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 300px;\n /* Prevent excessive vertical expansion */\n padding: 12px;\n border: 1px solid #e1e8ed;\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n background: white;\n box-sizing: border-box;\n overflow-y: auto;\n /* Enable scroll when content exceeds max height */\n}\n\n.omniscribe_template-textarea:focus {\n outline: none;\n border-color: #3498db;\n box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n}\n\n.omniscribe_template-character-count {\n margin-top: 8px;\n font-size: 12px;\n color: #95a5a6;\n display: flex;\n}\n\n.omniscribe_template-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e1e8ed;\n background: white;\n margin-top: 18px;\n margin-bottom: 50px;\n}\n\n/* Template fields container */\n.omniscribe_template-fields {\n display: flex;\n flex-direction: column;\n max-height: 370px;\n overflow-y: auto;\n background: white;\n}\n\n/* Improved scrollbar for template fields */\n.omniscribe_template-fields::-webkit-scrollbar {\n width: 6px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n.omniscribe_config-version-section {\n background: #f6f7f9;\n color: #4a5364;\n padding: 16px 8px 16px 24px;\n font-weight: 500;\n line-height: 16.8px;\n font-size: 12px;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n\n/* Source: modules/layout/components/MinimizeButton/MinimizeButton.css */\n.omniscribe_minimize-button-container {\n position: absolute;\n top: -1px;\n left: 0;\n transform: translateX(-100%);\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n height: auto;\n max-height: 400px;\n min-height: 180px;\n}\n.omniscribe_minimize-button-subcontainer {\n position: relative;\n background-color: color-mix(in oklab, rgb(15, 15, 15) 65%, transparent);\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n backdrop-filter: sepia(1%);\n cursor: pointer;\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 400ms;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_minimize-button-subcontainer:hover {\n background-color: color-mix(in oklab, rgb(15, 15, 15) 85%, transparent);\n}\n.omniscribe_minimize-button-content {\n display: flex;\n rotate: calc(90deg * -2);\n gap: 10px;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n width: 100%;\n align-items: center;\n justify-content: center;\n position: relative;\n flex-wrap: nowrap;\n padding: 12px;\n min-height: 180px;\n max-height: 400px;\n}\n\n.omniscribe_minimize-button-span {\n font-weight: 400;\n font-size: var(--text-lg) /* 1.125rem = 18px */;\n line-height: var(--text-lg--line-height) /* calc(1.75 / 1.125) ≈ 1.5556 */;\n flex-wrap: nowrap;\n color: var(--white);\n display: flex;\n white-space: nowrap;\n text-align: center;\n}\n\n[dir='ltr'] .omniscribe_minimize-button-container {\n left: 0;\n transform: translateX(-100%);\n}\n\n[dir='ltr'] .omniscribe_minimize-button-subcontainer {\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n}\n\n[dir='rtl'] .omniscribe_minimize-button-container {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n[dir='rtl'] .omniscribe_minimize-button-subcontainer {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeContainer/OmniscribeContainer.css */\n.omniscribe_container {\n isolation: isolate;\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n z-index: 80;\n}\n\n[dir='ltr'] .omniscribe_container {\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n}\n\n[dir='rtl'] .omniscribe_container {\n left: 0;\n right: auto;\n border-top-right-radius: 30px;\n border-bottom-right-radius: 30px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeLayout/OmniscribeLayout.css */\n.omniscribe_layout {\n position: fixed;\n width: var(--layout-w);\n background: var(--white);\n bottom: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 500ms;\n transition-property: transform, translate, scale, rotate;\n display: flex;\n flex-direction: column;\n height: var(--layout-h);\n min-width: 500px;\n min-height: 500px;\n right: 0;\n}\n\n[dir='rtl'] .omniscribe_layout {\n left: 0;\n right: auto;\n border-bottom-right-radius: 12px;\n}\n\n[dir='ltr'] .omniscribe_layout {\n right: 0;\n border-bottom-left-radius: 12px;\n}\n\n.omniscribe_layout-open {\n background: var(--white);\n translate: 0;\n}\n\n.omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n[dir='rtl'] .omniscribe_layout-close {\n translate: calc(var(--layout-w) * -1);\n}\n\n[dir='ltr'] .omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n\n/* Source: modules/utility-section/section/UtilityButtons.css */\n.omniscribe_utility-btns-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: #ffffff;\n padding: 16px;\n overflow: hidden;\n background: linear-gradient(90deg, #ffffff 0%, #f5f8fe 50%, #e7effd 100%);\n align-self: stretch;\n}\n\n.omniscribe_utility-btns-left,\n.omniscribe_utility-btns-right {\n display: flex;\n flex-direction: row;\n gap: 4px;\n align-items: center;\n}\n\n.omniscribe_utility-btn-right {\n border-radius: var(--Radius-radius-round, 99999px) !important;\n background-color: var(--Greyscale-100, #f6f7f9) !important;\n border: none !important;\n}\n\n.omniscribe_connected-buttons {\n display: flex;\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n overflow: hidden;\n}\n\n.omniscribe_connected-btn-left,\n.omniscribe_connected-btn-right {\n border: none !important;\n border-radius: 0 !important;\n}\n\n.omniscribe_connected-btn-left {\n border-right: 1px solid var(--Stroke-greyscale-Active, #e5e7ec) !important;\n}\n\n.omniscribe_utility-btns {\n cursor: pointer;\n transition-duration: 300ms;\n background-color: color-mix(in oklab, var(--white) 30%, transparent);\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n position: relative;\n padding: 8px;\n display: flex;\n align-items: center;\n\n &:hover {\n background-color: var(--Greyscale-100, #f6f7f9);\n }\n}\n\n.omniscribe_utility-btns-pointer {\n pointer-events: auto;\n}\n\n.omniscribe_utility-btns-no-pointer {\n pointer-events: none;\n background-color: var(--white);\n}\n\n.omniscribe_utility-btns-no-pointer-opacity {\n pointer-events: none;\n opacity: 50%;\n}\n\n.omniscribe_utility-btns-opacity {\n background-color: var(--white);\n opacity: 100%;\n}\n\n.omniscribe_utility-btns-active {\n background-color: var(--Greyscale-100, #f6f7f9);\n border: 1px solid var(--Stroke-greyscale-Active, #105bdb);\n}\n\n.omniscribe_btn-label {\n margin-left: 6px;\n font-size: 14px;\n color: #212529;\n font-weight: 500;\n}\n\n.omniscribe_btn-label-active {\n color: #105bdb;\n}\n\n.omniscribe_icon {\n color: var(--active-black);\n}\n\n.omniscribe_icon-active {\n color: #105bdb;\n}\n\n.omniscribe_config-view {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.omniscribe_config-close-btn {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #000000;\n width: 32px;\n height: 32px;\n}\n\n.omniscribe_config-title {\n margin: 0;\n color: #000000;\n font-size: 16px;\n font-weight: 700;\n line-height: 19.2px;\n}\n\n\n/* Source: shared/components/Card.css */\n.omniscribe_card {\n background-color: var(--color-card, #ffffff);\n color: var(--color-card-foreground, #000000);\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n border-radius: 0.75rem;\n border: 1px solid var(--color-border, var(--grey-200));\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n\n.omniscribe_card-header {\n container-type: inline-size;\n container-name: card-header;\n display: grid;\n grid-auto-rows: min-content;\n grid-template-rows: auto auto;\n align-items: start;\n gap: 0.375rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n/* When card-header has card-action, adjust grid layout */\n.omniscribe_card-header:has([data-slot='card-action']) {\n grid-template-columns: 1fr auto;\n}\n\n/* When card-header has border-b class, add padding bottom */\n.omniscribe_card-header.border-b {\n padding-bottom: 1.5rem;\n}\n\n.omniscribe_card-title {\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_card-description {\n color: var(--color-muted-foreground, #6b7280);\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n.omniscribe_card-action {\n grid-column-start: 2;\n grid-row: span 2 / span 2;\n grid-row-start: 1;\n align-self: start;\n justify-self: end;\n}\n\n.omniscribe_card-content {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer {\n display: flex;\n align-items: center;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer.border-t {\n padding-top: 1.5rem;\n}\n\n\n/* Source: shared/components/button.css */\n.omniscribe_button {\n border: none;\n background: transparent;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 2);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &:disabled {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 50%;\n }\n & svg {\n pointer-events: none;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: calc(var(--spacing) * 4) /* 1rem = 16px */;\n height: calc(var(--spacing) * 4) /* 1rem = 16px */;\n }\n &:focus-visible {\n border-color: var(--ring);\n box-shadow: 0 0 0 calc(3px + var(--tw-ring-offset-width))\n color-mix(in oklab, var(--ring) 50%, transparent);\n }\n &[aria-invalid='true'] {\n border-color: var(--destructive);\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n\n.omniscribe_button-variant-default {\n background-color: var(--primary);\n color: var(--primary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n}\n.omniscribe_button-variant-destructive {\n background-color: var(--destructive);\n color: var(--white);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n.omniscribe_button-variant-outline {\n border: solid 1px var(--input);\n background-color: var(--background);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n}\n.omniscribe_button-variant-icon {\n align-items: center;\n border-radius: 100%;\n padding: 10px;\n & svg {\n pointer-events: auto;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: auto;\n height: auto;\n }\n}\n.omniscribe_button-variant-secondadry {\n background-color: var(--secondary);\n color: var(--secondary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n}\n.omniscribe_button-variant-ghost:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n}\n.omniscribe_button-variant-empty {\n cursor: pointer;\n}\n.omniscribe_button-variant-primary {\n cursor: pointer;\n background-color: color-mix(in oklab, var(--primary-button) 80%, transparent);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px !important;\n color: var(--white);\n &:hover {\n background-color: color-mix(\n in oklab,\n var(--primary-button) 60%,\n transparent\n );\n }\n}\n.omniscribe_button-size-default {\n height: calc(var(--spacing) * 9);\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 2);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 3) /* 0.75rem = 12px */;\n }\n}\n.omniscribe_button-size-sm {\n height: calc(var(--spacing) * 8);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n gap: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n padding-inline: calc(var(--spacing) * 3);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n}\n\n.omniscribe_button-size-lg {\n height: calc(var(--spacing) * 10);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n padding-inline: calc(var(--spacing) * 6);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n}\n\n.omniscribe_button-size-icon {\n height: calc(var(--spacing) * 5);\n width: calc(var(--spacing) * 5);\n}\n.omniscribe_button-size-padding {\n padding: calc(var(--spacing) * 2);\n min-width: calc(var(--spacing) * 40);\n}\n\n.omniscribe_button-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n}\n.omniscribe_button-whitespace {\n white-space: nowrap;\n}\n.omniscribe_button-rounded {\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n.omniscribe_button-disabled {\n pointer-events: none;\n}\n.omniscribe_button-loading {\n opacity: 50%;\n}\n.omniscribe_button-animate-spin {\n animation: spin 1s linear infinite;\n}\n.omniscribe_button-variant-report {\n cursor: pointer;\n background-color: var(--report);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px;\n color: var(--white);\n &:hover {\n background-color: color-mix(in oklab, var(--report) 60%, transparent);\n }\n}\n\n\n/* Source: shared/components/feedback-modal.css */\n.omniscribe_feedback-modal {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-top: 8px;\n min-width: 200px;\n width: 200px;\n transform-origin: top left;\n}\n\n.omniscribe_feedback-input-container {\n position: relative;\n display: flex;\n align-items: flex-end;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n}\n\n.omniscribe_feedback-textarea {\n flex: 1;\n border: transparent;\n border-radius: 8px;\n padding: 12px 12px 12px 12px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.2s;\n resize: none;\n min-height: 20px;\n max-height: 200px;\n overflow-y: auto;\n font-family: inherit;\n line-height: 1.4;\n width: 100%;\n box-sizing: border-box;\n}\n.omniscribe_feedback-textarea-padding {\n margin-bottom: 34px;\n padding-bottom: 0px !important;\n}\n\n.omniscribe_feedback-icons {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_feedback-icons:has(.omniscribe_feedback-send) {\n bottom: 8px;\n top: auto;\n transform: none;\n}\n\n.omniscribe_feedback-close {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-close:hover {\n background-color: #f3f4f6;\n color: #374151;\n}\n\n.omniscribe_feedback-close svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-send {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--blue-500);\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-send:hover {\n background-color: #f0f7ff;\n color: #0d47a1;\n}\n\n.omniscribe_feedback-send svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-confirmation {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-top: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n.omniscribe_feedback-confirmation-icon {\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Right-positioned modal styles */\n.omniscribe_feedback-modal-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-left: 8px;\n width: 200px;\n transform-origin: bottom left;\n}\n\n.omniscribe_feedback-sending-center {\n top: 100%;\n left: 0;\n}\n\n.omniscribe_feedback-sending-right {\n bottom: 0;\n left: 40%;\n}\n\n.omniscribe_feedback-sending {\n position: absolute;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n}\n.omniscribe_feedback-confirmation-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n@keyframes fadeInOut {\n 0% {\n opacity: 0;\n transform: translateY(-10px);\n }\n 10% {\n opacity: 1;\n transform: translateY(0);\n }\n 90% {\n opacity: 1;\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateY(-10px);\n }\n}\n\n\n/* Source: shared/components/gradient-box.css */\n.omniscribe_gradient-box {\n border-radius: 8px;\n padding: 1px;\n width: fit-content;\n}\n\n\n/* Source: shared/components/input.css */\n.omniscribe_input {\n height: calc(var(--spacing) * 9);\n width: 100%;\n display: flex;\n border-radius: calc(var(--radius));\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-base) /* 1rem = 16px */;\n line-height: var(--text-base--line-height);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &::file-selector-button {\n color: var(--foreground);\n display: inline-flex;\n height: calc(var(--spacing) * 7);\n border: none;\n background-color: transparent;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n font-weight: var(--font-weight-medium);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n &::selection {\n background-color: var(--primary);\n color: var(--primary-foreground);\n }\n &:disabled {\n pointer-events: none;\n cursor: not-allowed;\n opacity: 50%;\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n @media (width >= 48rem /* 768px */) {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n }\n}\n\n.omniscribe_input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_input.invalid {\n border-color: #dc3545;\n background-color: #fff5f5;\n box-shadow: 0 0 0 0.125rem rgba(220, 53, 69, 0.25);\n}\n\n.omniscribe_input-error {\n color: #dc3545;\n font-size: 10px;\n margin-block: 0.25rem;\n display: block;\n line-height: 1;\n}\n\n\n/* Source: shared/components/loading-modal.css */\n.omniscribe_loading-modal-container {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n.omniscribe_loading-modal-subcontainer {\n background-color: var(--white);\n padding: calc(var(--spacing) * 8);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n text-align: center;\n max-width: var(--container-md);\n}\n.omniscribe_loading-modal-msg {\n font-size: var(--text-xl) /* 1.25rem = 20px */;\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin-bottom: calc(var(--spacing) * 4);\n}\n.omniscribe_loading-modal-spin {\n display: inline-block;\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n border: solid 4px var(--color-gray-200);\n border-top-color: var(--blue-500);\n border-radius: calc(infinity * 1px);\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n\n/* Source: shared/components/modal.css */\n.omniscribe_modal-overlay {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n\n.omniscribe_modal-container {\n position: relative;\n background-color: var(--white);\n z-index: 100;\n border-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n padding: calc(var(--spacing) * 5);\n transition-duration: 300ms;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n max-width: 90vw;\n max-height: 90vh;\n}\n.omniscribe_modal-container-scroll {\n overflow: auto;\n}\n\n.omniscribe_modal-container-show {\n opacity: 100%;\n}\n\n.omniscribe_modal-container-hide {\n opacity: 0%;\n}\n\n.omniscribe_modal-subcontainer {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_modal-title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--spacing) * 2);\n}\n\n.omniscribe_modal-title {\n font-size: var(--text-3xl); /* 1.875rem = 30px */\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin: 0;\n}\n\n.omniscribe_modal-button {\n border: none;\n background: transparent;\n line-height: var(--text-2xl--line-height);\n cursor: pointer;\n color: var(--black);\n}\n\n@media (min-width: 768px) {\n .omniscribe_modal-container {\n max-width: 60vw;\n }\n}\n\n/* Large screens: desktop */\n@media (min-width: 1024px) {\n .omniscribe_modal-container {\n max-width: 50vw;\n }\n}\n\n/* Very large screens: large desktop and ultra-wide */\n@media (min-width: 1440px) {\n .omniscribe_modal-container {\n max-width: 40vw;\n }\n}\n\n/* Intermediate breakpoint: large tablets */\n@media (min-width: 640px) and (max-width: 767px) {\n .omniscribe_modal-container {\n max-width: 70vw;\n }\n}\n\n\n/* Source: shared/components/select.css */\n.omniscribe_select-container {\n position: relative;\n width: 100%;\n padding-block: calc(var(--spacing) * 3);\n}\n.omniscribe_select-button {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--spacing) * 3);\n background-color: var(--white);\n border-radius: var(--Radius-radius-medium, 8px);\n border: solid 1px var(--light-border);\n cursor: pointer;\n}\n.omniscribe_select-text {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n}\n.omniscribe_select-content-container {\n position: absolute;\n width: 100%;\n margin-top: calc(var(--spacing) * 2);\n border: solid 1px var(--light-border);\n background-color: var(--white);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n bottom: calc(var(--spacing) * 15);\n padding-inline: calc(var(--spacing) * 1);\n padding-block: calc(var(--spacing) * 0.5);\n z-index: 9999;\n}\n.omniscribe_select-content-ul {\n overflow-y: scroll;\n max-height: calc(var(--spacing) * 80);\n padding-inline: 5px;\n}\n.omniscribe_select-content-li {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--spacing) * 3);\n cursor: pointer;\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n}\n.omniscribe_select-check-icon {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n color: var(--color-slate-500) /* oklch(55.4% 0.046 257.417) = #62748e */;\n}\n.omniscribe_select-content-li-span {\n display: flex;\n align-items: center;\n gap: calc(0.25rem /* 4px */ * 2);\n}\n\n\n/* Source: shared/components/separator.css */\n/* Separator Component Styles */\n.omniscribe_separator {\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n flex-shrink: 0;\n}\n\n.omniscribe_separator--horizontal {\n height: 0;\n width: 100%;\n border-top: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n border-right: none;\n border-bottom: none;\n border-left: none;\n}\n\n.omniscribe_separator--vertical {\n width: 0;\n height: 100%;\n border-left: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n border-top: none;\n border-right: none;\n border-bottom: none;\n}\n\n\n/* Source: shared/components/skeleton.css */\n.omniscribe_skeleton {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n\n\n/* Source: shared/components/textarea.css */\n.omniscribe_textarea-default {\n display: flex;\n min-height: calc(var(--spacing) * 16);\n width: -webkit-fill-available;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 2);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n &::placeholder {\n color: var(--muted-foreground);\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n }\n &:focus-visible {\n border-color: var(--ring);\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n }\n}\n\n.omniscribe_textarea-secondary {\n padding: calc(var(--spacing) * 3.5);\n padding-bottom: calc(var(--spacing) * 0);\n border-style: none;\n background-color: transparent;\n resize: none;\n &:focus {\n outline-style: none;\n }\n}\n.omniscribe_textarea-general {\n font-family: 'Lato', sans-serif;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n\n/* Source: shared/components/toast.css */\n.omniscribe_toast-container {\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n top: calc(var(--spacing) * -30);\n border-radius: var(--radius);\n padding: calc(var(--spacing) * 4);\n height: fit-content;\n transition-duration: 500ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: calc(var(--spacing) * 120);\n}\n\n.omniscribe_toast-container-danger {\n background-color: var(--color-red-500);\n}\n.omniscribe_toast-container-black {\n background-color: var(--black);\n}\n.omniscribe_toast-container-show {\n right: calc(var(--spacing) * 10);\n}\n.omniscribe_toast-container-hide {\n right: -100%;\n}\n.omniscribe_toast-subcontainer {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 100ms;\n display: flex;\n flex-direction: column;\n color: var(--white);\n}\n.omniscribe_toast-title {\n font-size: 18px;\n font-weight: var(--font-weight-bold);\n}\n.omniscribe_toast-msg {\n font-size: 16px;\n}\n\n\n/* Source: shared/components/toggle.css */\n.omniscribe_toggle-container {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n flex-direction: column;\n}\n\n.omniscribe_toggle-label {\n font-size: 14px;\n font-weight: 400;\n color: #374151;\n flex: 1;\n}\n\n.omniscribe_toggle-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.omniscribe_toggle-switch {\n position: relative;\n width: 29px;\n height: 16px;\n background-color: #d1d5db;\n border-radius: 8px;\n border: none;\n cursor: pointer;\n transition: background-color 0.2s ease;\n outline: none;\n}\n\n.omniscribe_toggle-switch:focus-visible {\n box-shadow: 0 0 0 2px #132caa;\n}\n\n.omniscribe_toggle-switch-checked {\n background-color: #132caa;\n}\n\n.omniscribe_toggle-switch-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omniscribe_toggle-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 12px;\n height: 12px;\n background-color: white;\n border-radius: 50%;\n transition: transform 0.2s ease;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.omniscribe_toggle-switch-checked .omniscribe_toggle-thumb {\n transform: translateX(13px);\n}\n\n.omniscribe_toggle-status {\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n min-width: 70px;\n}\n\n.omniscribe_toggle-switch-checked + .omniscribe_toggle-status {\n color: #4a5364;\n}\n\n\n/* Source: shared/components/tooltip.css */\n.tooltip-base {\n position: fixed;\n z-index: 9999;\n border-radius: 0.375rem; /* rounded-md */\n background-color: #111827;\n padding: 0.5rem 0.75rem; /* px-3 py-2 */\n font-size: 0.875rem; /* text-sm */\n font-family: 'Lato', sans-serif;\n color: #ffffff; /* text-white */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow-lg */\n transition: opacity 0.2s ease-in-out; /* transition-opacity duration-200 */\n pointer-events: none;\n user-select: none;\n word-wrap: break-word;\n line-height: 1.4;\n}\n\n/* Tooltip Arrow Styles */\n.tooltip-arrow {\n position: absolute;\n width: 0.5rem; /* w-2 */\n height: 0.5rem; /* h-2 */\n background-color: #111827;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning for each side */\n.tooltip-arrow-top {\n bottom: -0.25rem; /* bottom-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-bottom {\n top: -0.25rem; /* top-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-left {\n right: -0.25rem; /* right-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-right {\n left: -0.25rem; /* left-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Width classes based on message length */\n.tooltip-width-auto {\n width: auto;\n white-space: nowrap;\n}\n\n.tooltip-width-200 {\n width: auto;\n max-width: 200px;\n}\n\n.tooltip-width-xs {\n width: auto;\n max-width: 20rem; /* max-w-xs */\n}\n\n.tooltip-width-sm {\n width: auto;\n max-width: 24rem; /* max-w-sm */\n}\n\n.tooltip-width-400 {\n width: auto;\n max-width: 400px;\n}\n\n/* Trigger container styles */\n.tooltip-trigger {\n display: inline-block;\n}\n\n/* Animation classes */\n.tooltip-enter {\n opacity: 0;\n transform: scale(0.95);\n}\n\n.tooltip-enter-active {\n opacity: 1;\n transform: scale(1);\n transition:\n opacity 0.2s ease-in-out,\n transform 0.2s ease-in-out;\n}\n\n.tooltip-exit {\n opacity: 1;\n transform: scale(1);\n}\n\n.tooltip-exit-active {\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity 0.15s ease-in-out,\n transform 0.15s ease-in-out;\n}\n\n/* Dark theme variant */\n.tooltip-dark {\n background-color: #1f2937; /* bg-gray-800 */\n color: var(--grey-50);\n}\n\n.tooltip-dark .tooltip-arrow {\n background-color: #1f2937;\n}\n\n/* Light theme variant */\n.tooltip-light {\n background-color: #ffffff;\n color: #374151; /* text-gray-700 */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.tooltip-light .tooltip-arrow {\n background-color: #ffffff;\n}\n\n/* Responsive breakpoints */\n@media (max-width: 640px) {\n .tooltip-base {\n max-width: calc(100vw - 2rem);\n font-size: 0.8125rem; /* Slightly smaller on mobile */\n }\n\n .tooltip-width-400,\n .tooltip-width-sm,\n .tooltip-width-xs {\n max-width: calc(100vw - 2rem);\n }\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .tooltip-base {\n border: 2px solid #ffffff;\n }\n\n .tooltip-light {\n border: 2px solid #000000;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .tooltip-base,\n .tooltip-enter-active,\n .tooltip-exit-active {\n transition: none;\n }\n}\n";
|
|
100120
100619
|
const injectedCss$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
100121
100620
|
__proto__: null,
|
|
100122
100621
|
default: injectedCss
|