@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
|
@@ -16955,11 +16955,9 @@ const Collapse$4 = "طي";
|
|
|
16955
16955
|
const Multilingual$4 = "متعدد اللغات";
|
|
16956
16956
|
const Arabic$4 = "عربي";
|
|
16957
16957
|
const Tamil$4 = "التاميل";
|
|
16958
|
-
const Malayalam$4 = "المالايالامية";
|
|
16959
16958
|
const Telugu$4 = "التيلجو";
|
|
16960
16959
|
const Kannada$4 = "الكانادا";
|
|
16961
16960
|
const Hindi$4 = "الهندية";
|
|
16962
|
-
const Malay$4 = "لغة الملايو";
|
|
16963
16961
|
const Thai$4 = "التايلاندية";
|
|
16964
16962
|
const Filipino$4 = "فلبينية";
|
|
16965
16963
|
const English$4 = "الإنجليزية";
|
|
@@ -16971,6 +16969,9 @@ const Japanese$4 = "اليابانية";
|
|
|
16971
16969
|
const Dictionary$5 = "قاموس";
|
|
16972
16970
|
const Copilot$4 = "امساعد الطيار";
|
|
16973
16971
|
const Reasoning$4 = "التفكير";
|
|
16972
|
+
const Language$5 = "اللغة";
|
|
16973
|
+
const Chat$6 = "الدردشة";
|
|
16974
|
+
const Sources$4 = "المصادر";
|
|
16974
16975
|
const ar = {
|
|
16975
16976
|
Add: Add$4,
|
|
16976
16977
|
"Ask Omniscribe assistant": "اسأل مساعد أومنيسكريب",
|
|
@@ -16984,6 +16985,7 @@ const ar = {
|
|
|
16984
16985
|
"Error searching for devices": "حدث خطأ أثناء البحث عن الأجهزة",
|
|
16985
16986
|
"Fill out report": "املأ التقرير",
|
|
16986
16987
|
"Generate report": "إنشاء تقرير",
|
|
16988
|
+
"Generating patient summary": "مرحباً! امنحني بضع ثوان لإنشاء ملخص المريض.",
|
|
16987
16989
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "مرحباً يا دكتور، أنا مساعدك الشخصي. كيف يمكنني مساعدتك اليوم؟",
|
|
16988
16990
|
History: History$4,
|
|
16989
16991
|
"I'd like to see a summary of the patient's chart": "أود أن أرى ملخصًا لمخطط المريض",
|
|
@@ -17019,7 +17021,6 @@ const ar = {
|
|
|
17019
17021
|
"Wrong Word": "كلمة خاطئة",
|
|
17020
17022
|
"Wrong Words": "كلمات خاطئة",
|
|
17021
17023
|
"You must grant microphone permissions": "يجب منح أذونات الميكروفون",
|
|
17022
|
-
"See list of sources": "عرض قائمة المصادر",
|
|
17023
17024
|
"My source library": "مكتبة المصادر",
|
|
17024
17025
|
"Specify the sources and resources that should guide the AI's responses.": "تشير إلى المصادر والموارد التي ينبغي أن تُوجِّه استجابات الذكاء الاصطناعي.",
|
|
17025
17026
|
"My specialty": "تخصصي",
|
|
@@ -17082,12 +17083,11 @@ const ar = {
|
|
|
17082
17083
|
Multilingual: Multilingual$4,
|
|
17083
17084
|
Arabic: Arabic$4,
|
|
17084
17085
|
Tamil: Tamil$4,
|
|
17085
|
-
Malayalam:
|
|
17086
|
+
"Malay / Malayalam": "لغة الملايو / المالايالامية",
|
|
17086
17087
|
Telugu: Telugu$4,
|
|
17087
17088
|
Kannada: Kannada$4,
|
|
17088
17089
|
Hindi: Hindi$4,
|
|
17089
17090
|
"Bahasa Indonesia": "البهاسا الاندونيسية",
|
|
17090
|
-
Malay: Malay$4,
|
|
17091
17091
|
Thai: Thai$4,
|
|
17092
17092
|
Filipino: Filipino$4,
|
|
17093
17093
|
English: English$4,
|
|
@@ -17114,15 +17114,17 @@ const ar = {
|
|
|
17114
17114
|
"SofIA Scribe": "سوفيا سكرايب",
|
|
17115
17115
|
"Microphone options": "خيارات الميكروفون",
|
|
17116
17116
|
"Select the input microphone": "حدد ميكروفون الإدخال",
|
|
17117
|
-
"Select the input microphone to ensure proper functioning
|
|
17118
|
-
|
|
17119
|
-
"Select the
|
|
17117
|
+
"Select the input microphone to ensure proper functioning": "حدد ميكروفون الإدخال لضمان التشغيل السليم",
|
|
17118
|
+
Language: Language$5,
|
|
17119
|
+
"Select the language options.": "حدد خيارات اللغة.",
|
|
17120
17120
|
"Select the interface language and the language in which the clinical note is generated": "حدد لغة الواجهة واللغة التي يتم بها إنشاء الملاحظة السريرية.",
|
|
17121
17121
|
"Select the language for audio transcription": "حدد اللغة التي سيتم بها نسخ المحادثة مع المريض.",
|
|
17122
17122
|
"Clinical note template": "قالب الملاحظة السريرية",
|
|
17123
|
-
"Customize the clinical note
|
|
17123
|
+
"Customize the clinical note depending on the report you are filling out.": "خصص الملاحظة السريرية حسب التقرير الذي تقوم بملؤه.",
|
|
17124
17124
|
"Clinical dictionary": "قاموس سريري",
|
|
17125
17125
|
"Customize clinical language and medication format": "خصص اللغة السريرية وتنسيق الأدوية.",
|
|
17126
|
+
Chat: Chat$6,
|
|
17127
|
+
"Customize the patient summary and chat sources.": "خصص ملخص المريض ومصادر الدردشة.",
|
|
17126
17128
|
"No custom words added yet": "لا توجد كلمات مخصصة مضافة بعد",
|
|
17127
17129
|
"Custom version": "نسخة مخصصة",
|
|
17128
17130
|
"Word or phrase (e.g: ibuprofeno)": "كلمة أو عبارة (على سبيل المثال: ibuprofeno)",
|
|
@@ -17134,6 +17136,18 @@ const ar = {
|
|
|
17134
17136
|
"Save changes": "حفظ التغييرات",
|
|
17135
17137
|
"{count} characters": "{count} حرف",
|
|
17136
17138
|
"Sending...": "جارٍ الإرسال...",
|
|
17139
|
+
"Show patient summary first": "إظهار ملخص المريض أولاً",
|
|
17140
|
+
"Patient summary customization": "تخصيص ملخص المريض",
|
|
17141
|
+
Sources: Sources$4,
|
|
17142
|
+
"Select the sources you want the AI to use for reasoning": "اختر المصادر التي تريد أن تستخدمها الذكي الاصطناعي للتفكير",
|
|
17143
|
+
"Don't leave out relevant information...": "لا تترك المعلومات ذات الصلة...",
|
|
17144
|
+
"File is too large. Maximum size is 5MB": "الملف كبير جداً. الحد الأقصى للحجم هو 5 ميجابايت",
|
|
17145
|
+
"Maximum number of files is 5": "العدد الأقصى للملفات هو 5",
|
|
17146
|
+
"Attach file": "إرفاق ملف",
|
|
17147
|
+
"Error processing file": "خطأ في معالجة الملف",
|
|
17148
|
+
"Unsupported file format": "تنسيق الملف غير مدعوم",
|
|
17149
|
+
"{count} documents": "{count} مستندات",
|
|
17150
|
+
"{count} images": "{count} صور",
|
|
17137
17151
|
};
|
|
17138
17152
|
|
|
17139
17153
|
const Add$3 = "Add";
|
|
@@ -17165,11 +17179,9 @@ const Collapse$3 = "Collapse";
|
|
|
17165
17179
|
const Multilingual$3 = "Multilingual";
|
|
17166
17180
|
const Arabic$3 = "Arabic";
|
|
17167
17181
|
const Tamil$3 = "Tamil";
|
|
17168
|
-
const Malayalam$3 = "Malayalam";
|
|
17169
17182
|
const Telugu$3 = "Telugu";
|
|
17170
17183
|
const Kannada$3 = "Kannada";
|
|
17171
17184
|
const Hindi$3 = "Hindi";
|
|
17172
|
-
const Malay$3 = "Malay";
|
|
17173
17185
|
const Thai$3 = "Thai";
|
|
17174
17186
|
const Filipino$3 = "Filipino";
|
|
17175
17187
|
const English$3 = "English";
|
|
@@ -17181,6 +17193,11 @@ const Japanese$3 = "Japanese";
|
|
|
17181
17193
|
const Dictionary$4 = "Dictionary";
|
|
17182
17194
|
const Copilot$3 = "Copilot";
|
|
17183
17195
|
const Reasoning$3 = "Reasoning";
|
|
17196
|
+
const Language$4 = "Language";
|
|
17197
|
+
const Chat$5 = "Chat";
|
|
17198
|
+
const Sources$3 = "Sources";
|
|
17199
|
+
const Enabled$1 = "Enabled";
|
|
17200
|
+
const Disabled$1 = "Disabled";
|
|
17184
17201
|
const en = {
|
|
17185
17202
|
Add: Add$3,
|
|
17186
17203
|
"Ask Omniscribe assistant": "Ask Omniscribe assistant",
|
|
@@ -17194,6 +17211,7 @@ const en = {
|
|
|
17194
17211
|
"Error searching for devices": "Error searching for devices",
|
|
17195
17212
|
"Fill out report": "Fill out report",
|
|
17196
17213
|
"Generate report": "Generate report",
|
|
17214
|
+
"Generating patient summary": "Hello! Give me a few seconds to generate the patient summary.",
|
|
17197
17215
|
"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?",
|
|
17198
17216
|
History: History$3,
|
|
17199
17217
|
"I'd like to see a summary of the patient's chart": "I'd like to see a summary of the patient's chart",
|
|
@@ -17229,7 +17247,6 @@ const en = {
|
|
|
17229
17247
|
"Wrong Word": "Wrong Word",
|
|
17230
17248
|
"Wrong Words": "Wrong Words",
|
|
17231
17249
|
"You must grant microphone permissions": "You must grant microphone permissions",
|
|
17232
|
-
"See list of sources": "See list of sources",
|
|
17233
17250
|
"My source library": "My source library",
|
|
17234
17251
|
"Specify the sources and resources that should guide the AI's responses.": "Specify the sources and resources that should guide the AI's responses.",
|
|
17235
17252
|
"My specialty": "My specialty",
|
|
@@ -17292,12 +17309,11 @@ const en = {
|
|
|
17292
17309
|
Multilingual: Multilingual$3,
|
|
17293
17310
|
Arabic: Arabic$3,
|
|
17294
17311
|
Tamil: Tamil$3,
|
|
17295
|
-
Malayalam: Malayalam
|
|
17312
|
+
"Malay / Malayalam": "Malay / Malayalam",
|
|
17296
17313
|
Telugu: Telugu$3,
|
|
17297
17314
|
Kannada: Kannada$3,
|
|
17298
17315
|
Hindi: Hindi$3,
|
|
17299
17316
|
"Bahasa Indonesia": "Bahasa Indonesia",
|
|
17300
|
-
Malay: Malay$3,
|
|
17301
17317
|
Thai: Thai$3,
|
|
17302
17318
|
Filipino: Filipino$3,
|
|
17303
17319
|
English: English$3,
|
|
@@ -17324,15 +17340,17 @@ const en = {
|
|
|
17324
17340
|
"SofIA Scribe": "SofIA Scribe",
|
|
17325
17341
|
"Microphone options": "Microphone options",
|
|
17326
17342
|
"Select the input microphone": "Select the input microphone",
|
|
17327
|
-
"Select the input microphone to ensure proper functioning
|
|
17328
|
-
|
|
17329
|
-
"Select the
|
|
17343
|
+
"Select the input microphone to ensure proper functioning": "Select the input microphone to ensure proper functioning.",
|
|
17344
|
+
Language: Language$4,
|
|
17345
|
+
"Select the language options.": "Select the language options.",
|
|
17330
17346
|
"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.",
|
|
17331
17347
|
"Select the language for audio transcription": "Select the language for audio transcription.",
|
|
17332
17348
|
"Clinical note template": "Clinical note template",
|
|
17333
|
-
"Customize the clinical note
|
|
17349
|
+
"Customize the clinical note depending on the report you are filling out.": "Customize the clinical note depending on the report you are filling out.",
|
|
17334
17350
|
"Clinical dictionary": "Clinical dictionary",
|
|
17335
17351
|
"Customize clinical language and medication format": "Customize clinical language and medication format.",
|
|
17352
|
+
Chat: Chat$5,
|
|
17353
|
+
"Customize the patient summary and chat sources.": "Customize the patient summary and chat sources.",
|
|
17336
17354
|
"No custom words added yet": "No custom words added yet",
|
|
17337
17355
|
"Custom version": "Custom version",
|
|
17338
17356
|
"Word or phrase (e.g: ibuprofen)": "Word or phrase (e.g: ibuprofen)",
|
|
@@ -17345,6 +17363,20 @@ const en = {
|
|
|
17345
17363
|
"Save changes": "Save changes",
|
|
17346
17364
|
"{count} characters": "{count} characters",
|
|
17347
17365
|
"Sending...": "Sending...",
|
|
17366
|
+
"Show patient summary first": "Show patient summary first",
|
|
17367
|
+
"Patient summary customization": "Patient summary customization",
|
|
17368
|
+
Sources: Sources$3,
|
|
17369
|
+
"Select the sources you want the AI to use for reasoning": "Select the sources you want the AI to use for reasoning",
|
|
17370
|
+
"Don't leave out relevant information...": "Don't leave out relevant information...",
|
|
17371
|
+
Enabled: Enabled$1,
|
|
17372
|
+
Disabled: Disabled$1,
|
|
17373
|
+
"File is too large. Maximum size is 5MB": "File is too large. Maximum size is 5MB",
|
|
17374
|
+
"Maximum number of files is 5": "Maximum number of files is 5",
|
|
17375
|
+
"Attach file": "Attach file",
|
|
17376
|
+
"Error processing file": "Error processing file",
|
|
17377
|
+
"Unsupported file format": "Unsupported file format",
|
|
17378
|
+
"{count} documents": "{count} documents",
|
|
17379
|
+
"{count} images": "{count} images",
|
|
17348
17380
|
};
|
|
17349
17381
|
|
|
17350
17382
|
const Add$2 = "Añadir";
|
|
@@ -17376,11 +17408,9 @@ const Collapse$2 = "Cerrar";
|
|
|
17376
17408
|
const Multilingual$2 = "Plurilingüe";
|
|
17377
17409
|
const Arabic$2 = "Árabe";
|
|
17378
17410
|
const Tamil$2 = "Tamil";
|
|
17379
|
-
const Malayalam$2 = "Malayalam";
|
|
17380
17411
|
const Telugu$2 = "Telugu";
|
|
17381
17412
|
const Kannada$2 = "Canarés";
|
|
17382
17413
|
const Hindi$2 = "Hindi";
|
|
17383
|
-
const Malay$2 = "Malayo";
|
|
17384
17414
|
const Thai$2 = "Tailandés";
|
|
17385
17415
|
const Filipino$2 = "Filipino";
|
|
17386
17416
|
const English$2 = "Inglés";
|
|
@@ -17392,6 +17422,11 @@ const Japanese$2 = "Japonés";
|
|
|
17392
17422
|
const Dictionary$3 = "Diccionario";
|
|
17393
17423
|
const Copilot$2 = "Copilot";
|
|
17394
17424
|
const Reasoning$2 = "Razonamiento";
|
|
17425
|
+
const Language$3 = "Idioma";
|
|
17426
|
+
const Chat$4 = "Chat";
|
|
17427
|
+
const Sources$2 = "Fuentes";
|
|
17428
|
+
const Enabled = "Activado";
|
|
17429
|
+
const Disabled = "Desactivado";
|
|
17395
17430
|
const es = {
|
|
17396
17431
|
Add: Add$2,
|
|
17397
17432
|
"Ask Omniscribe assistant": "Pregunta al asistente Omniscribe",
|
|
@@ -17405,6 +17440,7 @@ const es = {
|
|
|
17405
17440
|
"Error searching for devices": "Error al buscar dispositivos",
|
|
17406
17441
|
"Fill out report": "Rellenar informe",
|
|
17407
17442
|
"Generate report": "Generar informe",
|
|
17443
|
+
"Generating patient summary": "¡Hola! Dame unos segundos para generar el resumen del paciente.",
|
|
17408
17444
|
"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?",
|
|
17409
17445
|
History: History$2,
|
|
17410
17446
|
"I'd like to see a summary of the patient's chart": "Quiero ver el resumen de la ficha del paciente",
|
|
@@ -17440,7 +17476,6 @@ const es = {
|
|
|
17440
17476
|
"Wrong Word": "Palabra Incorrecta",
|
|
17441
17477
|
"Wrong Words": "Palabras Incorrectas",
|
|
17442
17478
|
"You must grant microphone permissions": "Debes conceder permisos de micrófono",
|
|
17443
|
-
"See list of sources": "Ver Lista de fuentes",
|
|
17444
17479
|
"My source library": "Mi librería de fuentes",
|
|
17445
17480
|
"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.",
|
|
17446
17481
|
"My specialty": "Mi especialidad",
|
|
@@ -17503,12 +17538,11 @@ const es = {
|
|
|
17503
17538
|
Multilingual: Multilingual$2,
|
|
17504
17539
|
Arabic: Arabic$2,
|
|
17505
17540
|
Tamil: Tamil$2,
|
|
17506
|
-
Malayalam: Malayalam
|
|
17541
|
+
"Malay / Malayalam": "Malayo / Malayalam",
|
|
17507
17542
|
Telugu: Telugu$2,
|
|
17508
17543
|
Kannada: Kannada$2,
|
|
17509
17544
|
Hindi: Hindi$2,
|
|
17510
17545
|
"Bahasa Indonesia": "Bahasa Indonesia",
|
|
17511
|
-
Malay: Malay$2,
|
|
17512
17546
|
Thai: Thai$2,
|
|
17513
17547
|
Filipino: Filipino$2,
|
|
17514
17548
|
English: English$2,
|
|
@@ -17535,15 +17569,17 @@ const es = {
|
|
|
17535
17569
|
"SofIA Scribe": "SofIA Escriba",
|
|
17536
17570
|
"Microphone options": "Opciones de micrófono",
|
|
17537
17571
|
"Select the input microphone": "Selecciona el micrófono de entrada",
|
|
17538
|
-
"Select the input microphone to ensure proper functioning
|
|
17539
|
-
|
|
17540
|
-
"Select the
|
|
17572
|
+
"Select the input microphone to ensure proper functioning": "Seleccione el micrófono de entrada para asegurar el buen funcionamiento.",
|
|
17573
|
+
Language: Language$3,
|
|
17574
|
+
"Select the language options.": "Seleccione las opciones de idioma.",
|
|
17541
17575
|
"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.",
|
|
17542
17576
|
"Select the language for audio transcription": "Selecciona el idioma en el que grabará la conversación con el paciente.",
|
|
17543
17577
|
"Clinical note template": "Plantilla de nota clínica",
|
|
17544
|
-
"Customize the clinical note
|
|
17578
|
+
"Customize the clinical note depending on the report you are filling out.": "Personalice la nota clínica dependiendo del informe que esté rellenando.",
|
|
17545
17579
|
"Clinical dictionary": "Diccionario clínico",
|
|
17546
|
-
"Customize clinical language and medication format": "
|
|
17580
|
+
"Customize clinical language and medication format": "Personalice el lenguaje clínico y el formato de los medicamentos.",
|
|
17581
|
+
Chat: Chat$4,
|
|
17582
|
+
"Customize the patient summary and chat sources.": "Personalice el resumen del paciente y las fuentes del chat.",
|
|
17547
17583
|
"No custom words added yet": "No se han añadido palabras personalizadas aún",
|
|
17548
17584
|
"Custom version": "Versión personalizada",
|
|
17549
17585
|
"Word or phrase (e.g: ibuprofeno)": "Palabra o frase (ej: ibuprofeno)",
|
|
@@ -17556,6 +17592,20 @@ const es = {
|
|
|
17556
17592
|
"Save changes": "Guardar cambios",
|
|
17557
17593
|
"{count} characters": "{count} caracteres",
|
|
17558
17594
|
"Sending...": "Enviando...",
|
|
17595
|
+
"Show patient summary first": "Lo primero que quiero ver es el resumen del paciente.",
|
|
17596
|
+
"Patient summary customization": "Personalización del resumen del paciente",
|
|
17597
|
+
Sources: Sources$2,
|
|
17598
|
+
"Select the sources you want the AI to use for reasoning": "Seleccione las fuentes que quiera que la IA use para razonar",
|
|
17599
|
+
"Don't leave out relevant information...": "No te dejes información relevante...",
|
|
17600
|
+
Enabled,
|
|
17601
|
+
Disabled,
|
|
17602
|
+
"File is too large. Maximum size is 5MB": "El archivo es muy grande. El tamaño máximo es 5MB",
|
|
17603
|
+
"Maximum number of files is 5": "El número máximo de archivos es 5",
|
|
17604
|
+
"Attach file": "Adjuntar archivo",
|
|
17605
|
+
"Error processing file": "Ha habido un error al procesar el fichero",
|
|
17606
|
+
"Unsupported file format": "Fichero no soportado",
|
|
17607
|
+
"{count} documents": "{count} documentos",
|
|
17608
|
+
"{count} images": "{count} imágenes",
|
|
17559
17609
|
};
|
|
17560
17610
|
|
|
17561
17611
|
const Add$1 = "जोड़ें";
|
|
@@ -17587,11 +17637,9 @@ const Collapse$1 = "संक्षिप्त करें";
|
|
|
17587
17637
|
const Multilingual$1 = "बहुभाषी";
|
|
17588
17638
|
const Arabic$1 = "अरबी";
|
|
17589
17639
|
const Tamil$1 = "तमिल";
|
|
17590
|
-
const Malayalam$1 = "मलयालम";
|
|
17591
17640
|
const Telugu$1 = "तेलुगु";
|
|
17592
17641
|
const Kannada$1 = "कन्नड़";
|
|
17593
17642
|
const Hindi$1 = "हिंदी";
|
|
17594
|
-
const Malay$1 = "मलय";
|
|
17595
17643
|
const Thai$1 = "थाई";
|
|
17596
17644
|
const Filipino$1 = "फिलिपिनो";
|
|
17597
17645
|
const English$1 = "अंग्रेज़ी";
|
|
@@ -17603,6 +17651,9 @@ const Japanese$1 = "जापानी";
|
|
|
17603
17651
|
const Dictionary$2 = "शब्दकोश";
|
|
17604
17652
|
const Copilot$1 = "कोपायलट";
|
|
17605
17653
|
const Reasoning$1 = "तर्क";
|
|
17654
|
+
const Language$2 = "भाषा";
|
|
17655
|
+
const Chat$3 = "चैट";
|
|
17656
|
+
const Sources$1 = "स्रोत";
|
|
17606
17657
|
const hi = {
|
|
17607
17658
|
Add: Add$1,
|
|
17608
17659
|
"Ask Omniscribe assistant": "Omniscribe सहायक से पूछें",
|
|
@@ -17616,6 +17667,7 @@ const hi = {
|
|
|
17616
17667
|
"Error searching for devices": "उपकरण खोजने में त्रुटि",
|
|
17617
17668
|
"Fill out report": "रिपोर्ट भरें",
|
|
17618
17669
|
"Generate report": "रिपोर्ट बनाएं",
|
|
17670
|
+
"Generating patient summary": "नमस्ते! मुझे रोगी का सारांश तैयार करने के लिए कुछ सेकंड दें।",
|
|
17619
17671
|
"Hello Doctor, I'm your personal assistant. How can I help you today?": "नमस्ते डॉक्टर, मैं आपका निजी सहायक हूँ। आज मैं आपकी कैसे मदद कर सकता हूँ?",
|
|
17620
17672
|
History: History$1,
|
|
17621
17673
|
"I'd like to see a summary of the patient's chart": "मैं रोगी के चार्ट का सारांश देखना चाहूंगा",
|
|
@@ -17651,7 +17703,6 @@ const hi = {
|
|
|
17651
17703
|
"Wrong Word": "गलत शब्द",
|
|
17652
17704
|
"Wrong Words": "गलत शब्द",
|
|
17653
17705
|
"You must grant microphone permissions": "आपको माइक्रोफ़ोन की अनुमति देनी होगी",
|
|
17654
|
-
"See list of sources": "स्रोतों की सूची देखें",
|
|
17655
17706
|
"My source library": "मेरी स्रोत लाइब्रेरी",
|
|
17656
17707
|
"Specify the sources and resources that should guide the AI's responses.": "उन स्रोतों और संसाधनों को निर्दिष्ट करें जो AI की प्रतिक्रियाओं का मार्गदर्शन करें।",
|
|
17657
17708
|
"My specialty": "मेरी विशेषज्ञता",
|
|
@@ -17714,12 +17765,11 @@ const hi = {
|
|
|
17714
17765
|
Multilingual: Multilingual$1,
|
|
17715
17766
|
Arabic: Arabic$1,
|
|
17716
17767
|
Tamil: Tamil$1,
|
|
17717
|
-
Malayalam:
|
|
17768
|
+
"Malay / Malayalam": "मलय / मलयालम",
|
|
17718
17769
|
Telugu: Telugu$1,
|
|
17719
17770
|
Kannada: Kannada$1,
|
|
17720
17771
|
Hindi: Hindi$1,
|
|
17721
17772
|
"Bahasa Indonesia": "बहासा इंडोनेशिया",
|
|
17722
|
-
Malay: Malay$1,
|
|
17723
17773
|
Thai: Thai$1,
|
|
17724
17774
|
Filipino: Filipino$1,
|
|
17725
17775
|
English: English$1,
|
|
@@ -17746,15 +17796,17 @@ const hi = {
|
|
|
17746
17796
|
"SofIA Scribe": "SofIA Scribe",
|
|
17747
17797
|
"Microphone options": "माइक्रोफोन विकल्प",
|
|
17748
17798
|
"Select the input microphone": "इनपुट माइक्रोफोन का चयन करें",
|
|
17749
|
-
"Select the input microphone to ensure proper functioning
|
|
17750
|
-
|
|
17751
|
-
"Select the
|
|
17799
|
+
"Select the input microphone to ensure proper functioning": "समुचित कार्य को सुनिश्चित करने के लिए इनपुट माइक्रोफोन का चयन करें",
|
|
17800
|
+
Language: Language$2,
|
|
17801
|
+
"Select the language options.": "भाषा विकल्प चुनें।",
|
|
17752
17802
|
"Select the interface language and the language in which the clinical note is generated": "इंटरफ़ेस भाषा और उस भाषा का चयन करें जिसमें नैदानिक नोट उत्पन्न होता है।",
|
|
17753
17803
|
"Select the language for audio transcription": "ऑडियो प्रतिलेखन के लिए भाषा का चयन करें।",
|
|
17754
17804
|
"Clinical note template": "नैदानिक नोट टेम्पलेट",
|
|
17755
|
-
"Customize the clinical note
|
|
17805
|
+
"Customize the clinical note depending on the report you are filling out.": "आप जो रिपोर्ट भर रहे हैं, उसके आधार पर नैदानिक नोट को अनुकूलित करें।",
|
|
17756
17806
|
"Clinical dictionary": "नैदानिक शब्दकोश",
|
|
17757
17807
|
"Customize clinical language and medication format": "नैदानिक भाषा और दवा प्रारूप को अनुकूलित करें।",
|
|
17808
|
+
Chat: Chat$3,
|
|
17809
|
+
"Customize the patient summary and chat sources.": "रोगी सारांश और चैट स्रोतों को अनुकूलित करें।",
|
|
17758
17810
|
"No custom words added yet": "अभी तक कोई कस्टम शब्द नहीं जोड़ा गया है",
|
|
17759
17811
|
"Custom version": "कस्टम संस्करण",
|
|
17760
17812
|
"Word or phrase (e.g: ibuprofen)": "शब्द या वाक्यांश (जैसे: ibuprofen)",
|
|
@@ -17767,6 +17819,18 @@ const hi = {
|
|
|
17767
17819
|
"Save changes": "परिवर्तन सहेजें",
|
|
17768
17820
|
"{count} characters": "{count} वर्ण",
|
|
17769
17821
|
"Sending...": "भेजा जा रहा है...",
|
|
17822
|
+
"Show patient summary first": "पहले रोगी सारांश दिखाएं",
|
|
17823
|
+
"Patient summary customization": "रोगी सारांश अनुकूलन",
|
|
17824
|
+
Sources: Sources$1,
|
|
17825
|
+
"Select the sources you want the AI to use for reasoning": "वे स्रोत चुनें जिन्हें आप चाहते हैं कि AI तर्क के लिए उपयोग करे",
|
|
17826
|
+
"Don't leave out relevant information...": "प्रासंगिक जानकारी को न छोड़ें...",
|
|
17827
|
+
"File is too large. Maximum size is 5MB": "फ़ाइल बहुत बड़ी है। अधिकतम आकार 5MB है",
|
|
17828
|
+
"Maximum number of files is 5": "फ़ाइलों की अधिकतम संख्या 5 है",
|
|
17829
|
+
"Attach file": "फ़ाइल संलग्न करें",
|
|
17830
|
+
"Error processing file": "फ़ाइल प्रोसेसिंग में त्रुटि",
|
|
17831
|
+
"Unsupported file format": "असमर्थित फ़ाइल प्रारूप",
|
|
17832
|
+
"{count} documents": "{count} दस्तावेज़",
|
|
17833
|
+
"{count} images": "{count} चित्र",
|
|
17770
17834
|
};
|
|
17771
17835
|
|
|
17772
17836
|
const Add = "Tambahkan";
|
|
@@ -17798,11 +17862,9 @@ const Collapse = "Ciutkan";
|
|
|
17798
17862
|
const Multilingual = "Multibahasa";
|
|
17799
17863
|
const Arabic = "Arab";
|
|
17800
17864
|
const Tamil = "Tamil";
|
|
17801
|
-
const Malayalam = "Malayalam";
|
|
17802
17865
|
const Telugu = "Telugu";
|
|
17803
17866
|
const Kannada = "Kannada";
|
|
17804
17867
|
const Hindi = "Hindi";
|
|
17805
|
-
const Malay = "Melayu";
|
|
17806
17868
|
const Thai = "Thai";
|
|
17807
17869
|
const Filipino = "Filipina";
|
|
17808
17870
|
const English = "Bahasa Inggris";
|
|
@@ -17814,6 +17876,9 @@ const Japanese = "Jepang";
|
|
|
17814
17876
|
const Dictionary$1 = "Kamus";
|
|
17815
17877
|
const Copilot = "Copilot";
|
|
17816
17878
|
const Reasoning = "Penalaran";
|
|
17879
|
+
const Language$1 = "Bahasa";
|
|
17880
|
+
const Chat$2 = "Chat";
|
|
17881
|
+
const Sources = "Sumber";
|
|
17817
17882
|
const id = {
|
|
17818
17883
|
Add,
|
|
17819
17884
|
"Ask Omniscribe assistant": "Tanya asisten Omniscribe",
|
|
@@ -17827,6 +17892,7 @@ const id = {
|
|
|
17827
17892
|
"Error searching for devices": "Kesalahan saat mencari perangkat",
|
|
17828
17893
|
"Fill out report": "Isi laporan",
|
|
17829
17894
|
"Generate report": "Menghasilkan laporan",
|
|
17895
|
+
"Generating patient summary": "Halo! Beri saya beberapa detik untuk membuat ringkasan pasien.",
|
|
17830
17896
|
"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?",
|
|
17831
17897
|
History,
|
|
17832
17898
|
"I'd like to see a summary of the patient's chart": "Saya ingin melihat ringkasan grafik pasien",
|
|
@@ -17862,7 +17928,6 @@ const id = {
|
|
|
17862
17928
|
"Wrong Word": "Kata yang salah",
|
|
17863
17929
|
"Wrong Words": "Kata-kata yang salah",
|
|
17864
17930
|
"You must grant microphone permissions": "Anda harus memberikan izin mikrofon",
|
|
17865
|
-
"See list of sources": "Lihat Daftar Sumber",
|
|
17866
17931
|
"My source library": "Perpustakaan Sumber Saya",
|
|
17867
17932
|
"Specify the sources and resources that should guide the AI's responses.": "Menunjukkan sumber dan sumber daya yang seharusnya memandu respons AI.",
|
|
17868
17933
|
"My specialty": "Spesialisasi Saya",
|
|
@@ -17925,12 +17990,11 @@ const id = {
|
|
|
17925
17990
|
Multilingual,
|
|
17926
17991
|
Arabic,
|
|
17927
17992
|
Tamil,
|
|
17928
|
-
Malayalam,
|
|
17993
|
+
"Malay / Malayalam": "Melayu / Malayalam",
|
|
17929
17994
|
Telugu,
|
|
17930
17995
|
Kannada,
|
|
17931
17996
|
Hindi,
|
|
17932
17997
|
"Bahasa Indonesia": "Bahasa Indonesia",
|
|
17933
|
-
Malay,
|
|
17934
17998
|
Thai,
|
|
17935
17999
|
Filipino,
|
|
17936
18000
|
English,
|
|
@@ -17957,15 +18021,17 @@ const id = {
|
|
|
17957
18021
|
"SofIA Scribe": "SofIA Juru Tulis",
|
|
17958
18022
|
"Microphone options": "Opsi mikrofon",
|
|
17959
18023
|
"Select the input microphone": "Pilih mikrofon input",
|
|
17960
|
-
"Select the input microphone to ensure proper functioning
|
|
17961
|
-
|
|
17962
|
-
"Select the
|
|
18024
|
+
"Select the input microphone to ensure proper functioning": "Pilih mikrofon input untuk memastikan fungsi yang tepat.",
|
|
18025
|
+
Language: Language$1,
|
|
18026
|
+
"Select the language options.": "Pilih opsi bahasa.",
|
|
17963
18027
|
"Select the interface language and the language in which the clinical note is generated": "Pilih bahasa antarmuka dan bahasa di mana catatan klinis dihasilkan.",
|
|
17964
18028
|
"Select the language for audio transcription": "Pilih bahasa untuk transkripsi audio.",
|
|
17965
18029
|
"Clinical note template": "Template catatan klinis",
|
|
17966
|
-
"Customize the clinical note
|
|
18030
|
+
"Customize the clinical note depending on the report you are filling out.": "Sesuaikan catatan klinis tergantung pada laporan yang Anda isi.",
|
|
17967
18031
|
"Clinical dictionary": "Kamus klinis",
|
|
17968
18032
|
"Customize clinical language and medication format": "Sesuaikan bahasa klinis dan format pengobatan.",
|
|
18033
|
+
Chat: Chat$2,
|
|
18034
|
+
"Customize the patient summary and chat sources.": "Sesuaikan ringkasan pasien dan sumber chat.",
|
|
17969
18035
|
"No custom words added yet": "Belum ada kata kustom yang ditambahkan",
|
|
17970
18036
|
"Custom version": "Versi kustom",
|
|
17971
18037
|
"Word or phrase (e.g: ibuprofeno)": "Kata atau frasa (mis: ibuprofeno)",
|
|
@@ -17977,6 +18043,18 @@ const id = {
|
|
|
17977
18043
|
"Save changes": "Simpan perubahan",
|
|
17978
18044
|
"{count} characters": "{count} karakter",
|
|
17979
18045
|
"Sending...": "Mengirim...",
|
|
18046
|
+
"Show patient summary first": "Tampilkan ringkasan pasien terlebih dahulu",
|
|
18047
|
+
"Patient summary customization": "Penyesuaian ringkasan pasien",
|
|
18048
|
+
Sources,
|
|
18049
|
+
"Select the sources you want the AI to use for reasoning": "Pilih sumber yang ingin Anda gunakan AI untuk penalaran",
|
|
18050
|
+
"Don't leave out relevant information...": "Jangan tinggalkan informasi yang relevan...",
|
|
18051
|
+
"File is too large. Maximum size is 5MB": "File terlalu besar. Ukuran maksimum adalah 5MB",
|
|
18052
|
+
"Maximum number of files is 5": "Jumlah file maksimum adalah 5",
|
|
18053
|
+
"Attach file": "Lampirkan file",
|
|
18054
|
+
"Error processing file": "Kesalahan memproses file",
|
|
18055
|
+
"Unsupported file format": "Format file tidak didukung",
|
|
18056
|
+
"{count} documents": "{count} dokumen",
|
|
18057
|
+
"{count} images": "{count} gambar",
|
|
17980
18058
|
};
|
|
17981
18059
|
|
|
17982
18060
|
var LanguageCode;
|
|
@@ -17990,27 +18068,27 @@ var LanguageCode;
|
|
|
17990
18068
|
var TranscriptionLanguageCode;
|
|
17991
18069
|
(function(TranscriptionLanguageCode2) {
|
|
17992
18070
|
TranscriptionLanguageCode2["ar"] = "ar";
|
|
17993
|
-
TranscriptionLanguageCode2["
|
|
18071
|
+
TranscriptionLanguageCode2["ca"] = "ca";
|
|
18072
|
+
TranscriptionLanguageCode2["cs"] = "cs";
|
|
17994
18073
|
TranscriptionLanguageCode2["de"] = "de";
|
|
18074
|
+
TranscriptionLanguageCode2["en_GB"] = "en_GB";
|
|
18075
|
+
TranscriptionLanguageCode2["en_US"] = "en_US";
|
|
17995
18076
|
TranscriptionLanguageCode2["es"] = "es";
|
|
17996
|
-
TranscriptionLanguageCode2["fil"] = "fil";
|
|
17997
18077
|
TranscriptionLanguageCode2["fr"] = "fr";
|
|
17998
|
-
TranscriptionLanguageCode2["id"] = "id";
|
|
17999
18078
|
TranscriptionLanguageCode2["hi"] = "hi";
|
|
18079
|
+
TranscriptionLanguageCode2["id"] = "id";
|
|
18080
|
+
TranscriptionLanguageCode2["it"] = "it";
|
|
18000
18081
|
TranscriptionLanguageCode2["ja"] = "ja";
|
|
18001
18082
|
TranscriptionLanguageCode2["kn"] = "kn";
|
|
18002
|
-
TranscriptionLanguageCode2["ml"] = "ml";
|
|
18003
18083
|
TranscriptionLanguageCode2["ms"] = "ms";
|
|
18084
|
+
TranscriptionLanguageCode2["pt"] = "pt";
|
|
18085
|
+
TranscriptionLanguageCode2["sv"] = "sv";
|
|
18004
18086
|
TranscriptionLanguageCode2["ta"] = "ta";
|
|
18005
18087
|
TranscriptionLanguageCode2["te"] = "te";
|
|
18006
18088
|
TranscriptionLanguageCode2["th"] = "th";
|
|
18089
|
+
TranscriptionLanguageCode2["ur"] = "ur";
|
|
18007
18090
|
TranscriptionLanguageCode2["zh"] = "zh";
|
|
18008
|
-
TranscriptionLanguageCode2["
|
|
18009
|
-
TranscriptionLanguageCode2["pt"] = "pt";
|
|
18010
|
-
TranscriptionLanguageCode2["ca"] = "ca";
|
|
18011
|
-
TranscriptionLanguageCode2["eu"] = "eu";
|
|
18012
|
-
TranscriptionLanguageCode2["gl"] = "gl";
|
|
18013
|
-
TranscriptionLanguageCode2["multilingual"] = "";
|
|
18091
|
+
TranscriptionLanguageCode2["multilingual"] = "multi";
|
|
18014
18092
|
})(TranscriptionLanguageCode || (TranscriptionLanguageCode = {}));
|
|
18015
18093
|
LanguageCode.es;
|
|
18016
18094
|
const languages = [
|
|
@@ -18043,25 +18121,31 @@ const languages = [
|
|
|
18043
18121
|
const transcriptionLanguages = [
|
|
18044
18122
|
{ label: "Multilingual", value: TranscriptionLanguageCode.multilingual },
|
|
18045
18123
|
{ label: "Español", value: TranscriptionLanguageCode.es },
|
|
18046
|
-
{
|
|
18124
|
+
{
|
|
18125
|
+
label: "English (US)",
|
|
18126
|
+
value: TranscriptionLanguageCode.en_US
|
|
18127
|
+
},
|
|
18128
|
+
{
|
|
18129
|
+
label: "English (UK)",
|
|
18130
|
+
value: TranscriptionLanguageCode.en_GB
|
|
18131
|
+
},
|
|
18047
18132
|
{ label: "Français", value: TranscriptionLanguageCode.fr },
|
|
18048
18133
|
{ label: "Deutsch", value: TranscriptionLanguageCode.de },
|
|
18049
18134
|
{ label: "Italiano", value: TranscriptionLanguageCode.it },
|
|
18050
18135
|
{ label: "Português", value: TranscriptionLanguageCode.pt },
|
|
18051
18136
|
{ label: "Català", value: TranscriptionLanguageCode.ca },
|
|
18052
|
-
{ label: "Euskera", value: TranscriptionLanguageCode.eu },
|
|
18053
|
-
{ label: "Galego", value: TranscriptionLanguageCode.gl },
|
|
18054
18137
|
{ label: "Arabic", value: TranscriptionLanguageCode.ar },
|
|
18138
|
+
{ label: "Čeština", value: TranscriptionLanguageCode.cs },
|
|
18055
18139
|
{ label: "Bahasa Indonesia", value: TranscriptionLanguageCode.id },
|
|
18056
18140
|
{ label: "Chinese", value: TranscriptionLanguageCode.zh },
|
|
18057
|
-
{ label: "Filipino", value: TranscriptionLanguageCode.fil },
|
|
18058
18141
|
{ label: "Hindi", value: TranscriptionLanguageCode.hi },
|
|
18059
18142
|
{ label: "Japanese", value: TranscriptionLanguageCode.ja },
|
|
18060
18143
|
{ label: "Kannada", value: TranscriptionLanguageCode.kn },
|
|
18061
|
-
{ label: "Malay", value: TranscriptionLanguageCode.ms },
|
|
18062
|
-
{ label: "Malayalam", value: TranscriptionLanguageCode.ml },
|
|
18144
|
+
{ label: "Malay / Malayalam", value: TranscriptionLanguageCode.ms },
|
|
18063
18145
|
{ label: "Tamil", value: TranscriptionLanguageCode.ta },
|
|
18064
18146
|
{ label: "Telugu", value: TranscriptionLanguageCode.te },
|
|
18147
|
+
{ label: "Urdu", value: TranscriptionLanguageCode.ur },
|
|
18148
|
+
{ label: "Svenska", value: TranscriptionLanguageCode.sv },
|
|
18065
18149
|
{ label: "Thai", value: TranscriptionLanguageCode.th }
|
|
18066
18150
|
];
|
|
18067
18151
|
|
|
@@ -21910,7 +21994,7 @@ const {
|
|
|
21910
21994
|
mergeConfig: mergeConfig$1
|
|
21911
21995
|
} = axios;
|
|
21912
21996
|
|
|
21913
|
-
const version$1 = "0.0.
|
|
21997
|
+
const version$1 = "0.0.11";
|
|
21914
21998
|
|
|
21915
21999
|
const handleApiError = async (error) => {
|
|
21916
22000
|
return Promise.reject(error);
|
|
@@ -22104,6 +22188,7 @@ var SettingsApiKeys;
|
|
|
22104
22188
|
SettingsApiKeys2["template"] = "template";
|
|
22105
22189
|
SettingsApiKeys2["baseTemplate"] = "baseTemplate";
|
|
22106
22190
|
SettingsApiKeys2["templateId"] = "templateId";
|
|
22191
|
+
SettingsApiKeys2["summary"] = "summary";
|
|
22107
22192
|
})(SettingsApiKeys || (SettingsApiKeys = {}));
|
|
22108
22193
|
const SettingsApi = {
|
|
22109
22194
|
updateSetting: async (key, value) => {
|
|
@@ -22164,7 +22249,8 @@ const SettingsApi = {
|
|
|
22164
22249
|
[SettingsApiKeys.sources]: profileResponse.sources,
|
|
22165
22250
|
[SettingsApiKeys.availableSources]: profileResponse.availableSources,
|
|
22166
22251
|
[SettingsApiKeys.template]: profileResponse.template,
|
|
22167
|
-
[SettingsApiKeys.baseTemplate]: profileResponse.baseTemplate
|
|
22252
|
+
[SettingsApiKeys.baseTemplate]: profileResponse.baseTemplate,
|
|
22253
|
+
[SettingsApiKeys.summary]: profileResponse.summary
|
|
22168
22254
|
};
|
|
22169
22255
|
return mappedResponse;
|
|
22170
22256
|
}
|
|
@@ -22474,6 +22560,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22474
22560
|
const [sources, setSources] = React.useState(null);
|
|
22475
22561
|
const [availableSources, setAvailableSources] = React.useState([]);
|
|
22476
22562
|
const [preferredMicrophone, setPreferredMicrophone] = React.useState(null);
|
|
22563
|
+
const [summary, setSummary] = React.useState(null);
|
|
22477
22564
|
const [templateCustomizations, setTemplateCustomizations] = React.useState({});
|
|
22478
22565
|
const [baseTemplate, setBaseTemplate] = React.useState({});
|
|
22479
22566
|
const [customTemplate, setCustomTemplate] = React.useState(null);
|
|
@@ -22489,7 +22576,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22489
22576
|
const profile = await SettingsApi.getSettings(templateId, toolArgs);
|
|
22490
22577
|
const newDictionary = profile?.[SettingsApiKeys.dictionary] || [];
|
|
22491
22578
|
const newLanguage = profile?.[SettingsApiKeys.language] || (predefinedLanguage ?? getUserDefaultLanguage().code);
|
|
22492
|
-
const newTranscriptionLanguage = profile?.[SettingsApiKeys.transcriptionLanguage];
|
|
22579
|
+
const newTranscriptionLanguage = profile?.[SettingsApiKeys.transcriptionLanguage] || TranscriptionLanguageCode.multilingual;
|
|
22493
22580
|
const newSources = Array.isArray(profile?.[SettingsApiKeys.sources]) ? profile[SettingsApiKeys.sources] : null;
|
|
22494
22581
|
const newAvailableSources = Array.isArray(profile?.[SettingsApiKeys.availableSources]) ? profile[SettingsApiKeys.availableSources] : [];
|
|
22495
22582
|
const newCustomTemplate = profile?.[SettingsApiKeys.template] ? {
|
|
@@ -22512,12 +22599,14 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22512
22599
|
};
|
|
22513
22600
|
}
|
|
22514
22601
|
}
|
|
22602
|
+
const newSummary = profile?.[SettingsApiKeys.summary] || null;
|
|
22515
22603
|
setDictionary(newDictionary);
|
|
22516
22604
|
setLanguage(newLanguage);
|
|
22517
22605
|
setTranscriptionLanguage(newTranscriptionLanguage);
|
|
22518
22606
|
setSources(newSources);
|
|
22519
22607
|
setAvailableSources(newAvailableSources);
|
|
22520
22608
|
setPreferredMicrophone(newPreferredMicrophone);
|
|
22609
|
+
setSummary(newSummary);
|
|
22521
22610
|
setCustomTemplate(newCustomTemplate);
|
|
22522
22611
|
setBaseTemplate(newBaseTemplate);
|
|
22523
22612
|
const cache = SettingsCache.getInstance();
|
|
@@ -22583,7 +22672,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22583
22672
|
try {
|
|
22584
22673
|
setTranscriptionLanguage(lang);
|
|
22585
22674
|
SettingsCache.getInstance().setTranscriptionLanguage(lang);
|
|
22586
|
-
const dBLanguage = lang
|
|
22675
|
+
const dBLanguage = lang;
|
|
22587
22676
|
await SettingsApi.updateSetting(SettingsApiKeys.transcriptionLanguage, dBLanguage);
|
|
22588
22677
|
} catch (error) {
|
|
22589
22678
|
logger.settingsError("Error updating transcription language:", error);
|
|
@@ -22598,6 +22687,21 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22598
22687
|
logger.settingsError("Error updating sources:", error);
|
|
22599
22688
|
}
|
|
22600
22689
|
}, []);
|
|
22690
|
+
const updateSummary = React.useCallback(async (summary2) => {
|
|
22691
|
+
try {
|
|
22692
|
+
setSummary(summary2);
|
|
22693
|
+
await SettingsApi.updateSetting(SettingsApiKeys.summary, summary2);
|
|
22694
|
+
} catch (error) {
|
|
22695
|
+
logger.settingsError("Error updating summary:", error);
|
|
22696
|
+
}
|
|
22697
|
+
}, []);
|
|
22698
|
+
const sendSummaryMessage = React.useCallback(() => {
|
|
22699
|
+
if (!summary || !summary.isEnabled) {
|
|
22700
|
+
return;
|
|
22701
|
+
}
|
|
22702
|
+
const event = new CustomEvent("sendSummaryMessage");
|
|
22703
|
+
window.dispatchEvent(event);
|
|
22704
|
+
}, [summary]);
|
|
22601
22705
|
const updatePreferredMicrophone = React.useCallback(async (microphone) => {
|
|
22602
22706
|
try {
|
|
22603
22707
|
setPreferredMicrophone(microphone);
|
|
@@ -22675,6 +22779,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22675
22779
|
templateId: profile[SettingsApiKeys.templateId]
|
|
22676
22780
|
} : null;
|
|
22677
22781
|
const newBaseTemplate = profile?.[SettingsApiKeys.baseTemplate] ? profile?.[SettingsApiKeys.baseTemplate] : {};
|
|
22782
|
+
const newSummary = profile?.[SettingsApiKeys.summary] || null;
|
|
22678
22783
|
const microphoneData = profile?.[SettingsApiKeys.preferredMicrophone];
|
|
22679
22784
|
let newPreferredMicrophone = null;
|
|
22680
22785
|
if (microphoneData) {
|
|
@@ -22696,6 +22801,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22696
22801
|
setSources(newSources);
|
|
22697
22802
|
setAvailableSources(newAvailableSources);
|
|
22698
22803
|
setPreferredMicrophone(newPreferredMicrophone);
|
|
22804
|
+
setSummary(newSummary);
|
|
22699
22805
|
setCustomTemplate(newCustomTemplate);
|
|
22700
22806
|
setBaseTemplate(newBaseTemplate);
|
|
22701
22807
|
const cache = SettingsCache.getInstance();
|
|
@@ -22779,6 +22885,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22779
22885
|
sources,
|
|
22780
22886
|
availableSources,
|
|
22781
22887
|
preferredMicrophone,
|
|
22888
|
+
summary,
|
|
22782
22889
|
isLoading,
|
|
22783
22890
|
templateId,
|
|
22784
22891
|
toolArgs,
|
|
@@ -22792,6 +22899,8 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22792
22899
|
updateTranscriptionLanguage,
|
|
22793
22900
|
updateSources,
|
|
22794
22901
|
updatePreferredMicrophone,
|
|
22902
|
+
updateSummary,
|
|
22903
|
+
sendSummaryMessage,
|
|
22795
22904
|
updateTemplateCustomizations,
|
|
22796
22905
|
updateBaseTemplate,
|
|
22797
22906
|
updateSettings,
|
|
@@ -22804,6 +22913,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22804
22913
|
sources,
|
|
22805
22914
|
availableSources,
|
|
22806
22915
|
preferredMicrophone,
|
|
22916
|
+
summary,
|
|
22807
22917
|
isLoading,
|
|
22808
22918
|
templateId,
|
|
22809
22919
|
toolArgs,
|
|
@@ -22817,6 +22927,8 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
|
|
|
22817
22927
|
updateTranscriptionLanguage,
|
|
22818
22928
|
updateSources,
|
|
22819
22929
|
updatePreferredMicrophone,
|
|
22930
|
+
updateSummary,
|
|
22931
|
+
sendSummaryMessage,
|
|
22820
22932
|
updateTemplateCustomizations,
|
|
22821
22933
|
updateBaseTemplate,
|
|
22822
22934
|
updateSettings,
|
|
@@ -122766,7 +122878,7 @@ function parseAnthropicStreamedToolCalls(content) {
|
|
|
122766
122878
|
};
|
|
122767
122879
|
});
|
|
122768
122880
|
}
|
|
122769
|
-
function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessage = false
|
|
122881
|
+
function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessage = false }) {
|
|
122770
122882
|
const [isHovered, setIsHovered] = reactExports.useState(false);
|
|
122771
122883
|
const { appointmentData, runId } = useLangGraphContext();
|
|
122772
122884
|
const contentStringNotFormated = getContentString(message.content);
|
|
@@ -122783,7 +122895,7 @@ function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessag
|
|
|
122783
122895
|
const hasActualContent = contentString.length > 0;
|
|
122784
122896
|
if (!isLastMessage && !isToolResult && !contentString.length && !message.content && !reasoning)
|
|
122785
122897
|
return null;
|
|
122786
|
-
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 &&
|
|
122898
|
+
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?.branch, branchOptions: 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 })] })] }) });
|
|
122787
122899
|
}
|
|
122788
122900
|
|
|
122789
122901
|
const textareaVariants = cva("omniscribe_textarea-general", {
|
|
@@ -122802,6 +122914,102 @@ const Textarea = reactExports.forwardRef(({ className, variant, ...props }, ref)
|
|
|
122802
122914
|
});
|
|
122803
122915
|
Textarea.displayName = "Textarea";
|
|
122804
122916
|
|
|
122917
|
+
const MessageImagesContext = reactExports.createContext(void 0);
|
|
122918
|
+
const MessageImagesProvider = ({ children }) => {
|
|
122919
|
+
const [messageImages, setMessageImagesMap] = reactExports.useState(/* @__PURE__ */ new Map());
|
|
122920
|
+
const messageImagesRef = reactExports.useRef(messageImages);
|
|
122921
|
+
reactExports.useEffect(() => {
|
|
122922
|
+
messageImagesRef.current = messageImages;
|
|
122923
|
+
});
|
|
122924
|
+
reactExports.useEffect(() => {
|
|
122925
|
+
return () => {
|
|
122926
|
+
messageImagesRef.current.forEach((images) => {
|
|
122927
|
+
images.forEach((image) => {
|
|
122928
|
+
if (image.previewUrl) {
|
|
122929
|
+
URL.revokeObjectURL(image.previewUrl);
|
|
122930
|
+
}
|
|
122931
|
+
});
|
|
122932
|
+
});
|
|
122933
|
+
};
|
|
122934
|
+
}, []);
|
|
122935
|
+
const setMessageImages = reactExports.useCallback((messageId, images) => {
|
|
122936
|
+
setMessageImagesMap((prev) => {
|
|
122937
|
+
const newMap = new Map(prev);
|
|
122938
|
+
newMap.set(messageId, images);
|
|
122939
|
+
return newMap;
|
|
122940
|
+
});
|
|
122941
|
+
}, []);
|
|
122942
|
+
const getMessageImages = reactExports.useCallback((messageId) => {
|
|
122943
|
+
return messageImages.get(messageId) || [];
|
|
122944
|
+
}, [messageImages]);
|
|
122945
|
+
const clearMessageImages = reactExports.useCallback((messageId) => {
|
|
122946
|
+
const images = messageImages.get(messageId);
|
|
122947
|
+
if (images) {
|
|
122948
|
+
images.forEach((image) => {
|
|
122949
|
+
if (image.previewUrl) {
|
|
122950
|
+
URL.revokeObjectURL(image.previewUrl);
|
|
122951
|
+
}
|
|
122952
|
+
});
|
|
122953
|
+
}
|
|
122954
|
+
setMessageImagesMap((prev) => {
|
|
122955
|
+
const newMap = new Map(prev);
|
|
122956
|
+
newMap.delete(messageId);
|
|
122957
|
+
return newMap;
|
|
122958
|
+
});
|
|
122959
|
+
}, [messageImages]);
|
|
122960
|
+
const value = reactExports.useMemo(() => ({
|
|
122961
|
+
messageImages,
|
|
122962
|
+
setMessageImages,
|
|
122963
|
+
getMessageImages,
|
|
122964
|
+
clearMessageImages
|
|
122965
|
+
}), [messageImages, setMessageImages, getMessageImages, clearMessageImages]);
|
|
122966
|
+
return jsxRuntimeExports.jsx(MessageImagesContext.Provider, { value, children });
|
|
122967
|
+
};
|
|
122968
|
+
|
|
122969
|
+
const useMessageImages = () => {
|
|
122970
|
+
const context = reactExports.useContext(MessageImagesContext);
|
|
122971
|
+
if (!context) {
|
|
122972
|
+
throw new Error("useMessageImages must be used within a MessageImagesProvider");
|
|
122973
|
+
}
|
|
122974
|
+
return context;
|
|
122975
|
+
};
|
|
122976
|
+
|
|
122977
|
+
const DocumentIcon = ({ width = 24, height = 24, className }) => {
|
|
122978
|
+
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" })] });
|
|
122979
|
+
};
|
|
122980
|
+
|
|
122981
|
+
const MessageImages = ({ uploadedFiles, className = "" }) => {
|
|
122982
|
+
const [loadedImages, setLoadedImages] = reactExports.useState(/* @__PURE__ */ new Set());
|
|
122983
|
+
const [failedImages, setFailedImages] = reactExports.useState(/* @__PURE__ */ new Set());
|
|
122984
|
+
const { formatMessage } = useIntl();
|
|
122985
|
+
const handleImageLoad = (index) => {
|
|
122986
|
+
setLoadedImages((prev) => new Set(prev).add(index));
|
|
122987
|
+
};
|
|
122988
|
+
const handleImageError = (index) => {
|
|
122989
|
+
setFailedImages((prev) => new Set(prev).add(index));
|
|
122990
|
+
};
|
|
122991
|
+
if (uploadedFiles.length === 0) {
|
|
122992
|
+
return null;
|
|
122993
|
+
}
|
|
122994
|
+
const imageFiles = uploadedFiles.filter((file) => file.type === "image");
|
|
122995
|
+
const documentFiles = uploadedFiles.filter((file) => file.type === "document");
|
|
122996
|
+
if (imageFiles.length === 0 && documentFiles.length === 0) {
|
|
122997
|
+
return null;
|
|
122998
|
+
}
|
|
122999
|
+
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, index) => {
|
|
123000
|
+
const imageUrl = file.previewUrl;
|
|
123001
|
+
if (!imageUrl) {
|
|
123002
|
+
return jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-error", title: "Image could not be displayed", children: jsxRuntimeExports.jsx("span", { children: "📷" }) }, file.id);
|
|
123003
|
+
}
|
|
123004
|
+
const isLoaded = loadedImages.has(index);
|
|
123005
|
+
const hasFailed = failedImages.has(index);
|
|
123006
|
+
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 ${index + 1}`, className: "omniscribe_message-image", onLoad: () => handleImageLoad(index), onError: () => handleImageError(index), title: `Image ${index + 1}`, style: { display: isLoaded ? "block" : "none" } }), imageFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-counter", children: index + 1 })] }, file.id);
|
|
123007
|
+
}) }), imageFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-images-count", children: formatMessage({ 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: formatMessage({
|
|
123008
|
+
id: "{count} documents",
|
|
123009
|
+
defaultMessage: "{count} documents"
|
|
123010
|
+
}, { count: documentFiles.length }) })] })] });
|
|
123011
|
+
};
|
|
123012
|
+
|
|
122805
123013
|
function EditableContent({ value, setValue, onSubmit, chatHistoryOpen = false }) {
|
|
122806
123014
|
const handleKeyDown = (e) => {
|
|
122807
123015
|
if ((e.metaKey || e.ctrlKey) && e.key === "Enter") {
|
|
@@ -122819,6 +123027,9 @@ function HumanMessage({ message, isLoading, isLastHumanMessage = false, chatHist
|
|
|
122819
123027
|
const [isEditing, setIsEditing] = reactExports.useState(false);
|
|
122820
123028
|
const [value, setValue] = reactExports.useState("");
|
|
122821
123029
|
const contentString = getContentString(message.content);
|
|
123030
|
+
const { getMessageImages } = useMessageImages();
|
|
123031
|
+
const messageImages = getMessageImages(message.id || "");
|
|
123032
|
+
const hasMessageFiles = messageImages.length > 0;
|
|
122822
123033
|
const handleSubmitEdit = () => {
|
|
122823
123034
|
setIsEditing(false);
|
|
122824
123035
|
const newMessage = { type: "human", content: value };
|
|
@@ -122836,7 +123047,7 @@ function HumanMessage({ message, isLoading, isLastHumanMessage = false, chatHist
|
|
|
122836
123047
|
}
|
|
122837
123048
|
});
|
|
122838
123049
|
};
|
|
122839
|
-
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?.branch, branchOptions: meta?.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { isLoading, content: contentString, isEditing, setIsEditing: (c) => {
|
|
123050
|
+
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?.branch, branchOptions: meta?.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { isLoading, content: contentString, isEditing, setIsEditing: (c) => {
|
|
122840
123051
|
if (c) {
|
|
122841
123052
|
setValue(contentString);
|
|
122842
123053
|
}
|
|
@@ -123427,7 +123638,7 @@ const GradientBox = ({ children, colors, className = "omniscribe_gradient-box" }
|
|
|
123427
123638
|
return jsxRuntimeExports.jsx("div", { className, style: gradient, children });
|
|
123428
123639
|
};
|
|
123429
123640
|
|
|
123430
|
-
const PredefinedQuestions = ({ handleSubmit, messages }) => {
|
|
123641
|
+
const PredefinedQuestions = ({ handleSubmit, messages, isAutoSendingSummary }) => {
|
|
123431
123642
|
const contentClassName = "text-p omniscribe_predefined-questions-content";
|
|
123432
123643
|
const { formatMessage } = useIntl();
|
|
123433
123644
|
const data = [
|
|
@@ -123437,58 +123648,17 @@ const PredefinedQuestions = ({ handleSubmit, messages }) => {
|
|
|
123437
123648
|
}),
|
|
123438
123649
|
formatMessage({ id: "What shouldn't I overlook today?" })
|
|
123439
123650
|
];
|
|
123651
|
+
if (isAutoSendingSummary || messages > 0) {
|
|
123652
|
+
return null;
|
|
123653
|
+
}
|
|
123440
123654
|
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: formatMessage({
|
|
123441
123655
|
id: "Hello Doctor, I'm your personal assistant. How can I help you today?"
|
|
123442
|
-
}) }),
|
|
123656
|
+
}) }), data.map((text) => jsxRuntimeExports.jsx("div", { className: "omniscribe_predefined-questions-msg-container whitespace-wrap", children: jsxRuntimeExports.jsx(GradientBox, { children: jsxRuntimeExports.jsx(Button, { onClick: (e) => handleSubmit(e, text), className: contentClassName, rounded: "omniscribe_predefined-questions-btn-rounded", whitespace: "", variant: "empty", size: "empty", children: text }) }) }, text))] });
|
|
123443
123657
|
};
|
|
123444
123658
|
|
|
123445
|
-
const
|
|
123446
|
-
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" }) });
|
|
123447
|
-
};
|
|
123448
|
-
|
|
123449
|
-
const sleep = async (ms) => {
|
|
123450
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
123451
|
-
};
|
|
123452
|
-
|
|
123453
|
-
const Modal = ({ visible, setModalVisible, className = "", title, children, scroll = true }) => {
|
|
123454
|
-
const [show, setShow] = reactExports.useState(false);
|
|
123455
|
-
const popupRef = reactExports.useRef(null);
|
|
123456
|
-
const { dragHandlers, dragStyle } = useDraggable(!visible);
|
|
123457
|
-
const handleCloseModal = async () => {
|
|
123458
|
-
setShow(false);
|
|
123459
|
-
await sleep(350);
|
|
123460
|
-
setModalVisible(false);
|
|
123461
|
-
};
|
|
123462
|
-
const handleOverlayClick = (e) => {
|
|
123463
|
-
if (e.target === e.currentTarget) {
|
|
123464
|
-
handleCloseModal();
|
|
123465
|
-
}
|
|
123466
|
-
};
|
|
123467
|
-
reactExports.useEffect(() => {
|
|
123468
|
-
if (visible)
|
|
123469
|
-
setTimeout(() => setShow(true), 10);
|
|
123470
|
-
}, [visible]);
|
|
123471
|
-
if (!visible)
|
|
123472
|
-
return null;
|
|
123473
|
-
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] }) }) });
|
|
123474
|
-
};
|
|
123475
|
-
|
|
123476
|
-
const cn = (...classes) => {
|
|
123477
|
-
return classes.filter(Boolean).join(" ");
|
|
123478
|
-
};
|
|
123479
|
-
const SourcesModal = ({ isOpen, onClose, sources, selectedSources, onToggleSource, onSave, onSelectAll, setModalVisible, isSaving = false }) => {
|
|
123659
|
+
const SummaryLoading = () => {
|
|
123480
123660
|
const { formatMessage } = useIntl();
|
|
123481
|
-
|
|
123482
|
-
return null;
|
|
123483
|
-
return jsxRuntimeExports.jsx(Modal, { setModalVisible, className: "omniscribe_modal-sources", visible: isOpen, title: formatMessage({ 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" }), formatMessage({
|
|
123484
|
-
id: `Specify the sources and resources that should guide the AI's responses.`
|
|
123485
|
-
})] }), 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: formatMessage({ id: "All" }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_count", children: formatMessage({
|
|
123486
|
-
id: "sourcesSelected",
|
|
123487
|
-
defaultMessage: "{selected} of {total} selected"
|
|
123488
|
-
}, {
|
|
123489
|
-
selected: selectedSources.length,
|
|
123490
|
-
total: sources.length
|
|
123491
|
-
}) })] }), 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((s) => s.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: formatMessage({ id: source.title }) }) }) }) }, source.title)) }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_footer", children: [jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_outline", onClick: onClose, disabled: isSaving, children: formatMessage({ id: "Cancel" }) }), jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_primary", onClick: onSave, disabled: isSaving, children: isSaving ? formatMessage({ id: "Saving" }) : formatMessage({ id: "Save" }) })] })] })] }) });
|
|
123661
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_auto-summary-container", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_auto-summary-text", children: formatMessage({ id: "Generating patient summary" }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_auto-summary-loading", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_loading-dots", children: jsxRuntimeExports.jsx("span", {}) }) })] });
|
|
123492
123662
|
};
|
|
123493
123663
|
|
|
123494
123664
|
var ChatSourceCategory;
|
|
@@ -123498,10 +123668,6 @@ var ChatSourceCategory;
|
|
|
123498
123668
|
ChatSourceCategory2["MedicalResearchDomains"] = "medical_research_domains";
|
|
123499
123669
|
})(ChatSourceCategory || (ChatSourceCategory = {}));
|
|
123500
123670
|
|
|
123501
|
-
const BookTextIcon = ({ className, width = 16, height = 16, stroke = "currentColor" }) => {
|
|
123502
|
-
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" })] });
|
|
123503
|
-
};
|
|
123504
|
-
|
|
123505
123671
|
class InputValidator {
|
|
123506
123672
|
// JSON Validation
|
|
123507
123673
|
static validateJson(input) {
|
|
@@ -124243,58 +124409,56 @@ const getCurrentDateTime = () => {
|
|
|
124243
124409
|
return `${iso_local} (${human_readable})`;
|
|
124244
124410
|
};
|
|
124245
124411
|
|
|
124246
|
-
const
|
|
124247
|
-
return
|
|
124412
|
+
const CloseIcon = ({ width = 24, height = 24, className }) => {
|
|
124413
|
+
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" })] });
|
|
124248
124414
|
};
|
|
124249
|
-
|
|
124250
|
-
|
|
124251
|
-
|
|
124252
|
-
if (messages[index].type === "human") {
|
|
124253
|
-
lastHumanIndex = index;
|
|
124254
|
-
break;
|
|
124255
|
-
}
|
|
124256
|
-
}
|
|
124257
|
-
return messages.slice(lastHumanIndex + 1);
|
|
124258
|
-
};
|
|
124259
|
-
const currentResponseHasContent = (messages) => {
|
|
124260
|
-
return getCurrentResponseMessages(messages).some((msg) => {
|
|
124261
|
-
if (msg.type !== "ai")
|
|
124262
|
-
return false;
|
|
124263
|
-
return hasMessageContent(msg);
|
|
124264
|
-
});
|
|
124265
|
-
};
|
|
124266
|
-
const getLastAiMessage = (messages) => {
|
|
124267
|
-
if (!messages?.length)
|
|
124415
|
+
|
|
124416
|
+
const FilePreview = ({ files, onRemove, chatHistoryOpen = false }) => {
|
|
124417
|
+
if (files.length === 0)
|
|
124268
124418
|
return null;
|
|
124269
|
-
const
|
|
124270
|
-
|
|
124419
|
+
const imageFiles = files.filter((f) => f.type === "image");
|
|
124420
|
+
const documentFiles = files.filter((f) => f.type === "document");
|
|
124421
|
+
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))] });
|
|
124422
|
+
};
|
|
124423
|
+
function getFileExtension(filename) {
|
|
124424
|
+
const parts = filename.split(".");
|
|
124425
|
+
return parts.length > 1 ? parts[parts.length - 1] : "";
|
|
124426
|
+
}
|
|
124427
|
+
|
|
124428
|
+
const WarningIcon = ({ className, width = 24, height = 24, strokeWidth = 2 }) => {
|
|
124429
|
+
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" })] });
|
|
124271
124430
|
};
|
|
124272
124431
|
|
|
124273
|
-
|
|
124274
|
-
const [firstTokenReceived, setFirstTokenReceived] = reactExports.useState(false);
|
|
124432
|
+
function FileLimitBanner({ message, onClose, isVisible }) {
|
|
124275
124433
|
reactExports.useEffect(() => {
|
|
124276
|
-
|
|
124277
|
-
|
|
124278
|
-
|
|
124279
|
-
|
|
124434
|
+
if (isVisible) {
|
|
124435
|
+
const timer = setTimeout(() => {
|
|
124436
|
+
onClose();
|
|
124437
|
+
}, 5e3);
|
|
124438
|
+
return () => clearTimeout(timer);
|
|
124280
124439
|
}
|
|
124281
|
-
|
|
124282
|
-
|
|
124283
|
-
|
|
124284
|
-
|
|
124285
|
-
|
|
124286
|
-
|
|
124287
|
-
|
|
124288
|
-
|
|
124289
|
-
|
|
124290
|
-
|
|
124291
|
-
|
|
124292
|
-
|
|
124293
|
-
|
|
124294
|
-
|
|
124295
|
-
|
|
124440
|
+
}, [isVisible]);
|
|
124441
|
+
if (!isVisible)
|
|
124442
|
+
return null;
|
|
124443
|
+
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, {}) })] }) });
|
|
124444
|
+
}
|
|
124445
|
+
|
|
124446
|
+
const MAX_FILES = 5;
|
|
124447
|
+
const MAX_FILE_SIZE = 5 * 1024 * 1024;
|
|
124448
|
+
const SUPPORTED_FILE_TYPES = [
|
|
124449
|
+
// Images
|
|
124450
|
+
"image/jpeg",
|
|
124451
|
+
"image/jpg",
|
|
124452
|
+
"image/png",
|
|
124453
|
+
"image/gif",
|
|
124454
|
+
"image/webp",
|
|
124455
|
+
// 'image/svg+xml', // Removed: SVG can contain malicious JavaScript
|
|
124456
|
+
// Documents
|
|
124457
|
+
"application/pdf"
|
|
124458
|
+
];
|
|
124459
|
+
const isFileTypeSupported = (fileType) => {
|
|
124460
|
+
return SUPPORTED_FILE_TYPES.includes(fileType) || fileType.startsWith("image/");
|
|
124296
124461
|
};
|
|
124297
|
-
|
|
124298
124462
|
function StickyToBottomContent(props) {
|
|
124299
124463
|
const context = useStickToBottomContext();
|
|
124300
124464
|
return jsxRuntimeExports.jsxs("div", { ref: context.scrollRef, className: props.className, children: [jsxRuntimeExports.jsx("div", { ref: context.contentRef, className: props.contentClassName, children: props.content }), props.footer] });
|
|
@@ -124306,6 +124470,23 @@ function ScrollToBottom$1(props) {
|
|
|
124306
124470
|
return null;
|
|
124307
124471
|
return jsxRuntimeExports.jsxs(Button, { variant: "outline", className: props.className, onClick: () => scrollToBottom(), children: [jsxRuntimeExports.jsx(ArrowDownIcon, { className: "omniscribe_thread-down-btn" }), jsxRuntimeExports.jsx("span", { children: formatMessage({ id: "Scroll down" }) })] });
|
|
124308
124472
|
}
|
|
124473
|
+
function getAutoSummarySessionKey(patientId, doctorId) {
|
|
124474
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
124475
|
+
return `sofia-auto-summary:${patientId ?? ""}:${doctorId ?? ""}:${today}`;
|
|
124476
|
+
}
|
|
124477
|
+
function isAutoSummarySent(patientId, doctorId) {
|
|
124478
|
+
try {
|
|
124479
|
+
return sessionStorage.getItem(getAutoSummarySessionKey(patientId, doctorId)) === "true";
|
|
124480
|
+
} catch {
|
|
124481
|
+
return false;
|
|
124482
|
+
}
|
|
124483
|
+
}
|
|
124484
|
+
function markAutoSummarySent(patientId, doctorId) {
|
|
124485
|
+
try {
|
|
124486
|
+
sessionStorage.setItem(getAutoSummarySessionKey(patientId, doctorId), "true");
|
|
124487
|
+
} catch {
|
|
124488
|
+
}
|
|
124489
|
+
}
|
|
124309
124490
|
const Thread = () => {
|
|
124310
124491
|
const { appointmentData, chatHistoryOpen } = useLangGraphContext();
|
|
124311
124492
|
const { disableAllActions } = useApiConfigContext();
|
|
@@ -124317,27 +124498,31 @@ const Thread = () => {
|
|
|
124317
124498
|
});
|
|
124318
124499
|
const chatApi = useChatApi();
|
|
124319
124500
|
const stream = useStreamContext();
|
|
124320
|
-
const { availableSources, sources: settingsSources,
|
|
124501
|
+
const { availableSources, sources: settingsSources, summary } = useSettingsContext();
|
|
124321
124502
|
const messages = stream.messages;
|
|
124322
124503
|
const isLoading = stream.isLoading;
|
|
124323
|
-
const { firstTokenReceived, setFirstTokenReceived } = useMessageLoadingState(messages);
|
|
124324
124504
|
const lastError = reactExports.useRef(void 0);
|
|
124325
124505
|
const textareaRef = reactExports.useRef(null);
|
|
124326
|
-
const
|
|
124327
|
-
const
|
|
124506
|
+
const fileInputRef = reactExports.useRef(null);
|
|
124507
|
+
const handleSubmitRef = reactExports.useRef(null);
|
|
124508
|
+
const [uploadedFiles, setUploadedFiles] = reactExports.useState([]);
|
|
124509
|
+
const [showFileLimitBanner, setShowFileLimitBanner] = reactExports.useState(false);
|
|
124510
|
+
const [bannerMessage, setBannerMessage] = reactExports.useState("");
|
|
124511
|
+
const uploadedFilesRef = reactExports.useRef([]);
|
|
124512
|
+
const formatMessageRef = reactExports.useRef(null);
|
|
124513
|
+
const autoSummaryLoadingStarted = reactExports.useRef(false);
|
|
124514
|
+
const [autoSummaryCancelled, setAutoSummaryCancelled] = reactExports.useState(false);
|
|
124515
|
+
const [isAutoSendingSummary, setIsAutoSendingSummary] = reactExports.useState(false);
|
|
124328
124516
|
const [inputIsValid, setInputIsValid] = reactExports.useState(() => InputValidator.validate(input.value, { maxLength: inputMaxLength }).isValid);
|
|
124517
|
+
reactExports.useEffect(() => {
|
|
124518
|
+
uploadedFilesRef.current = uploadedFiles;
|
|
124519
|
+
}, [uploadedFiles]);
|
|
124329
124520
|
const [selectedSources, setSelectedSources] = reactExports.useState(() => Array.isArray(settingsSources) ? settingsSources : availableSources);
|
|
124330
124521
|
const { setToastState } = useToastContext();
|
|
124331
|
-
|
|
124332
|
-
|
|
124333
|
-
|
|
124334
|
-
|
|
124335
|
-
if (selectedSources.length === availableSources.length) {
|
|
124336
|
-
setSelectedSources([]);
|
|
124337
|
-
} else {
|
|
124338
|
-
setSelectedSources([...availableSources]);
|
|
124339
|
-
}
|
|
124340
|
-
};
|
|
124522
|
+
reactExports.useEffect(() => {
|
|
124523
|
+
const sources = Array.isArray(settingsSources) ? settingsSources : availableSources;
|
|
124524
|
+
setSelectedSources(sources);
|
|
124525
|
+
}, [settingsSources, availableSources]);
|
|
124341
124526
|
const handleTranscriptionUpdate = (text) => {
|
|
124342
124527
|
const newText = input.value.length ? `${input.value} ${text}` : text;
|
|
124343
124528
|
input.setValue(newText);
|
|
@@ -124347,20 +124532,107 @@ const Thread = () => {
|
|
|
124347
124532
|
input.onChange(e);
|
|
124348
124533
|
setInputIsValid(InputValidator.validate(e.target.value, { maxLength: inputMaxLength }).isValid);
|
|
124349
124534
|
};
|
|
124350
|
-
const
|
|
124351
|
-
|
|
124535
|
+
const handleAttachClick = () => {
|
|
124536
|
+
fileInputRef.current?.click();
|
|
124537
|
+
};
|
|
124538
|
+
const handleFileSelect = async (e) => {
|
|
124539
|
+
const files = e.target.files;
|
|
124540
|
+
if (!files)
|
|
124352
124541
|
return;
|
|
124353
|
-
|
|
124354
|
-
|
|
124355
|
-
|
|
124356
|
-
|
|
124357
|
-
|
|
124358
|
-
|
|
124359
|
-
|
|
124360
|
-
|
|
124542
|
+
const filesArray = Array.from(files);
|
|
124543
|
+
const totalFiles = uploadedFiles.length + filesArray.length;
|
|
124544
|
+
const oversizedFiles = filesArray.filter((file) => file.size > MAX_FILE_SIZE);
|
|
124545
|
+
const hasOversizedFiles = oversizedFiles.length > 0;
|
|
124546
|
+
const unsupportedFiles = filesArray.filter((file) => !isFileTypeSupported(file.type));
|
|
124547
|
+
const hasUnsupportedFiles = unsupportedFiles.length > 0;
|
|
124548
|
+
const exceedsFileCount = totalFiles > MAX_FILES;
|
|
124549
|
+
let message = "";
|
|
124550
|
+
if (hasUnsupportedFiles) {
|
|
124551
|
+
message = formatMessage({ id: "Unsupported file format" });
|
|
124552
|
+
} else if (hasOversizedFiles) {
|
|
124553
|
+
message = formatMessage({ id: "File is too large. Maximum size is 5MB" });
|
|
124554
|
+
} else if (exceedsFileCount) {
|
|
124555
|
+
message = formatMessage({ id: "Maximum number of files is 5" });
|
|
124556
|
+
}
|
|
124557
|
+
if (hasUnsupportedFiles || hasOversizedFiles || exceedsFileCount) {
|
|
124558
|
+
setBannerMessage(message);
|
|
124559
|
+
setShowFileLimitBanner(true);
|
|
124560
|
+
if (fileInputRef.current) {
|
|
124561
|
+
fileInputRef.current.value = "";
|
|
124562
|
+
}
|
|
124563
|
+
return;
|
|
124564
|
+
}
|
|
124565
|
+
const newFiles = [];
|
|
124566
|
+
for (const file of filesArray) {
|
|
124567
|
+
try {
|
|
124568
|
+
const isImage = file.type.startsWith("image/");
|
|
124569
|
+
const uploadedFile = {
|
|
124570
|
+
id: v4(),
|
|
124571
|
+
file,
|
|
124572
|
+
type: isImage ? "image" : "document"
|
|
124573
|
+
};
|
|
124574
|
+
if (isImage) {
|
|
124575
|
+
uploadedFile.previewUrl = URL.createObjectURL(file);
|
|
124576
|
+
}
|
|
124577
|
+
const base64Data = await fileToBase64(file);
|
|
124578
|
+
uploadedFile.processedData = isImage ? {
|
|
124579
|
+
type: "image",
|
|
124580
|
+
source_type: "base64",
|
|
124581
|
+
data: base64Data,
|
|
124582
|
+
mime_type: file.type
|
|
124583
|
+
} : {
|
|
124584
|
+
type: "file",
|
|
124585
|
+
source_type: "base64",
|
|
124586
|
+
data: base64Data,
|
|
124587
|
+
mime_type: file.type,
|
|
124588
|
+
filename: file.name
|
|
124589
|
+
};
|
|
124590
|
+
newFiles.push(uploadedFile);
|
|
124591
|
+
} catch (error) {
|
|
124592
|
+
logger.error("Failed to process file:", file.name, error);
|
|
124593
|
+
newFiles.forEach((f) => {
|
|
124594
|
+
if (f.previewUrl) {
|
|
124595
|
+
URL.revokeObjectURL(f.previewUrl);
|
|
124596
|
+
}
|
|
124597
|
+
});
|
|
124598
|
+
setBannerMessage(formatMessage({ id: "Error processing file" }));
|
|
124599
|
+
setShowFileLimitBanner(true);
|
|
124600
|
+
if (fileInputRef.current) {
|
|
124601
|
+
fileInputRef.current.value = "";
|
|
124602
|
+
}
|
|
124603
|
+
return;
|
|
124604
|
+
}
|
|
124605
|
+
}
|
|
124606
|
+
setUploadedFiles((prev) => [...prev, ...newFiles]);
|
|
124607
|
+
if (fileInputRef.current) {
|
|
124608
|
+
fileInputRef.current.value = "";
|
|
124361
124609
|
}
|
|
124362
124610
|
};
|
|
124363
|
-
const
|
|
124611
|
+
const handleFileRemove = (id) => {
|
|
124612
|
+
setUploadedFiles((prev) => {
|
|
124613
|
+
const fileToRemove = prev.find((f) => f.id === id);
|
|
124614
|
+
if (fileToRemove?.previewUrl) {
|
|
124615
|
+
URL.revokeObjectURL(fileToRemove.previewUrl);
|
|
124616
|
+
}
|
|
124617
|
+
return prev.filter((f) => f.id !== id);
|
|
124618
|
+
});
|
|
124619
|
+
};
|
|
124620
|
+
const fileToBase64 = (file) => {
|
|
124621
|
+
return new Promise((resolve, reject) => {
|
|
124622
|
+
const reader = new FileReader();
|
|
124623
|
+
reader.onload = () => {
|
|
124624
|
+
const base64String = reader.result;
|
|
124625
|
+
const base64Data = base64String.split(",")[1];
|
|
124626
|
+
resolve(base64Data);
|
|
124627
|
+
};
|
|
124628
|
+
reader.onerror = (error) => {
|
|
124629
|
+
logger.error("Failed to read file:", file.name, error);
|
|
124630
|
+
reject(new Error(`Failed to read file: ${file.name}`));
|
|
124631
|
+
};
|
|
124632
|
+
reader.readAsDataURL(file);
|
|
124633
|
+
});
|
|
124634
|
+
};
|
|
124635
|
+
const handleSubmit = (e, predefinedText, isAutoSummary) => {
|
|
124364
124636
|
e.preventDefault();
|
|
124365
124637
|
const inputValidation = input.validate();
|
|
124366
124638
|
const invalidInput = !inputValidation.isValid || inputValidation.error;
|
|
@@ -124368,9 +124640,8 @@ const Thread = () => {
|
|
|
124368
124640
|
return;
|
|
124369
124641
|
if (predefinedText && !InputValidator.validate(predefinedText).isValid)
|
|
124370
124642
|
return;
|
|
124371
|
-
setFirstTokenReceived(false);
|
|
124372
124643
|
const newHumanMessage = {
|
|
124373
|
-
id: v4(),
|
|
124644
|
+
id: isAutoSummary ? `${DO_NOT_RENDER_ID_PREFIX}${v4()}` : v4(),
|
|
124374
124645
|
type: "human",
|
|
124375
124646
|
content: predefinedText ?? input.value
|
|
124376
124647
|
};
|
|
@@ -124380,7 +124651,7 @@ const Thread = () => {
|
|
|
124380
124651
|
info: restOfExtraData,
|
|
124381
124652
|
"Full Name:": "Sam Test",
|
|
124382
124653
|
"Birth Date:": "01/01/1990",
|
|
124383
|
-
"
|
|
124654
|
+
"Mobile:": "600000006",
|
|
124384
124655
|
"Address:": "456 Avenida Inventada, Ciudad Y",
|
|
124385
124656
|
patientId: appointmentData?.patientId,
|
|
124386
124657
|
doctorId: appointmentData?.doctorId
|
|
@@ -124403,6 +124674,7 @@ const Thread = () => {
|
|
|
124403
124674
|
logger.warn(`Unknown source category: ${source.category} for source: ${source.title}`);
|
|
124404
124675
|
}
|
|
124405
124676
|
});
|
|
124677
|
+
const messageFiles = uploadedFiles.map((file) => file.processedData).filter(Boolean);
|
|
124406
124678
|
const data = {
|
|
124407
124679
|
values: {
|
|
124408
124680
|
messages: [...toolMessages, newHumanMessage],
|
|
@@ -124416,7 +124688,9 @@ const Thread = () => {
|
|
|
124416
124688
|
medical_practice: medical_practice ?? "Atención Primaria",
|
|
124417
124689
|
patient_medical_notes,
|
|
124418
124690
|
doctor_id: appointmentData?.doctorId,
|
|
124419
|
-
current_datetime: getCurrentDateTime()
|
|
124691
|
+
current_datetime: getCurrentDateTime(),
|
|
124692
|
+
prompt_summary: summary?.isEnabled ? summary?.prompt || "" : "",
|
|
124693
|
+
...messageFiles.length > 0 && { files: messageFiles }
|
|
124420
124694
|
},
|
|
124421
124695
|
options: {
|
|
124422
124696
|
streamMode: ["values"],
|
|
@@ -124432,9 +124706,14 @@ const Thread = () => {
|
|
|
124432
124706
|
};
|
|
124433
124707
|
chatApi.submitMessages(stream, data);
|
|
124434
124708
|
input.reset();
|
|
124709
|
+
uploadedFiles.forEach((file) => {
|
|
124710
|
+
if (file.previewUrl) {
|
|
124711
|
+
URL.revokeObjectURL(file.previewUrl);
|
|
124712
|
+
}
|
|
124713
|
+
});
|
|
124714
|
+
setUploadedFiles([]);
|
|
124435
124715
|
};
|
|
124436
124716
|
const handleRegenerate = (parentCheckpoint) => {
|
|
124437
|
-
setFirstTokenReceived(false);
|
|
124438
124717
|
const data = {
|
|
124439
124718
|
values: void 0,
|
|
124440
124719
|
options: {
|
|
@@ -124469,6 +124748,53 @@ const Thread = () => {
|
|
|
124469
124748
|
} catch {
|
|
124470
124749
|
}
|
|
124471
124750
|
}, [stream.error, formatMessage, setToastState]);
|
|
124751
|
+
reactExports.useEffect(() => {
|
|
124752
|
+
handleSubmitRef.current = handleSubmit;
|
|
124753
|
+
formatMessageRef.current = formatMessage;
|
|
124754
|
+
}, [handleSubmit, formatMessage]);
|
|
124755
|
+
reactExports.useEffect(() => {
|
|
124756
|
+
const patientId = appointmentData?.patientId;
|
|
124757
|
+
const doctorId = appointmentData?.doctorId;
|
|
124758
|
+
if (!isAutoSummarySent(patientId, doctorId) && !isLoading && summary?.isEnabled && handleSubmitRef.current && formatMessageRef.current) {
|
|
124759
|
+
markAutoSummarySent(patientId, doctorId);
|
|
124760
|
+
autoSummaryLoadingStarted.current = false;
|
|
124761
|
+
setAutoSummaryCancelled(false);
|
|
124762
|
+
setIsAutoSendingSummary(true);
|
|
124763
|
+
const summaryMessage = formatMessageRef.current({
|
|
124764
|
+
id: "I'd like to see a summary of the patient's chart"
|
|
124765
|
+
});
|
|
124766
|
+
handleSubmitRef.current({ preventDefault: () => {
|
|
124767
|
+
} }, summaryMessage, true);
|
|
124768
|
+
}
|
|
124769
|
+
}, [
|
|
124770
|
+
isLoading,
|
|
124771
|
+
summary?.isEnabled,
|
|
124772
|
+
appointmentData?.patientId,
|
|
124773
|
+
appointmentData?.doctorId
|
|
124774
|
+
]);
|
|
124775
|
+
reactExports.useEffect(() => {
|
|
124776
|
+
if (isAutoSendingSummary && !isLoading && messages.length > 0) {
|
|
124777
|
+
const hasAIResponseWithContent = messages.some((msg) => msg.type === "ai" && msg.content && String(msg.content).trim().length > 0);
|
|
124778
|
+
if (hasAIResponseWithContent) {
|
|
124779
|
+
setIsAutoSendingSummary(false);
|
|
124780
|
+
}
|
|
124781
|
+
}
|
|
124782
|
+
}, [isAutoSendingSummary, isLoading, messages]);
|
|
124783
|
+
reactExports.useEffect(() => {
|
|
124784
|
+
if (!isAutoSendingSummary)
|
|
124785
|
+
return;
|
|
124786
|
+
if (isLoading) {
|
|
124787
|
+
autoSummaryLoadingStarted.current = true;
|
|
124788
|
+
return;
|
|
124789
|
+
}
|
|
124790
|
+
if (autoSummaryLoadingStarted.current) {
|
|
124791
|
+
const hasAIResponseWithContent = messages.some((msg) => msg.type === "ai" && msg.content && String(msg.content).trim().length > 0);
|
|
124792
|
+
if (!hasAIResponseWithContent) {
|
|
124793
|
+
setAutoSummaryCancelled(true);
|
|
124794
|
+
setIsAutoSendingSummary(false);
|
|
124795
|
+
}
|
|
124796
|
+
}
|
|
124797
|
+
}, [isAutoSendingSummary, isLoading, messages]);
|
|
124472
124798
|
reactExports.useEffect(() => {
|
|
124473
124799
|
const sources = Array.isArray(settingsSources) ? settingsSources : availableSources;
|
|
124474
124800
|
setSelectedSources(sources);
|
|
@@ -124479,33 +124805,50 @@ const Thread = () => {
|
|
|
124479
124805
|
textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;
|
|
124480
124806
|
}
|
|
124481
124807
|
}, [input.value]);
|
|
124482
|
-
|
|
124808
|
+
reactExports.useEffect(() => {
|
|
124809
|
+
return () => {
|
|
124810
|
+
uploadedFilesRef.current.forEach((file) => {
|
|
124811
|
+
if (file.previewUrl) {
|
|
124812
|
+
URL.revokeObjectURL(file.previewUrl);
|
|
124813
|
+
}
|
|
124814
|
+
});
|
|
124815
|
+
};
|
|
124816
|
+
}, []);
|
|
124817
|
+
const renderedMessages = reactExports.useMemo(() => {
|
|
124483
124818
|
const filteredMessages = messages.filter((m) => !m.id?.startsWith(DO_NOT_RENDER_ID_PREFIX));
|
|
124484
|
-
const
|
|
124485
|
-
|
|
124486
|
-
|
|
124819
|
+
const finalMessages = autoSummaryCancelled ? filteredMessages.filter((msg) => {
|
|
124820
|
+
if (msg.type === "human")
|
|
124821
|
+
return true;
|
|
124822
|
+
const aiIndex = filteredMessages.indexOf(msg);
|
|
124823
|
+
const hasHumanBefore = filteredMessages.slice(0, aiIndex).some((m) => m.type === "human");
|
|
124824
|
+
return hasHumanBefore;
|
|
124825
|
+
}) : filteredMessages;
|
|
124826
|
+
const lastHumanIndex = finalMessages.map((m, i) => m.type === "human" ? i : -1).filter((i) => i !== -1).pop();
|
|
124827
|
+
const lastAiIndex = finalMessages.map((m, i) => m.type === "ai" ? i : -1).filter((i) => i !== -1).pop();
|
|
124828
|
+
return finalMessages.map((message, index) => {
|
|
124487
124829
|
const isLastHuman = message.type === "human" && index === lastHumanIndex;
|
|
124488
124830
|
const isLastAi = message.type === "ai" && index === lastAiIndex;
|
|
124489
|
-
return message.type === "human" ? jsxRuntimeExports.jsx(HumanMessage, { message, isLoading, isLastHumanMessage: isLastHuman, chatHistoryOpen }, message.id || `${message.type}-${index}`) : jsxRuntimeExports.jsx(AssistantMessage, { message, isLoading, handleRegenerate, isLastAiMessage: isLastAi
|
|
124831
|
+
return message.type === "human" ? jsxRuntimeExports.jsx(HumanMessage, { message, isLoading, isLastHumanMessage: isLastHuman, chatHistoryOpen }, message.id || `${message.type}-${index}`) : jsxRuntimeExports.jsx(AssistantMessage, { message, isLoading, handleRegenerate, isLastAiMessage: isLastAi }, message.id || `${message.type}-${index}`);
|
|
124490
124832
|
});
|
|
124491
|
-
}, [messages, isLoading,
|
|
124492
|
-
|
|
124493
|
-
}), side: "top", children: jsxRuntimeExports.jsx(Button, { variant: "ghost", type: "button", 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) => {
|
|
124833
|
+
}, [messages, isLoading, handleRegenerate, chatHistoryOpen]);
|
|
124834
|
+
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: formatMessage({ 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) => {
|
|
124494
124835
|
if (e.key === "Enter" && !e.shiftKey && !e.metaKey) {
|
|
124495
124836
|
e.preventDefault();
|
|
124496
|
-
|
|
124837
|
+
const el = e.target;
|
|
124838
|
+
const form = el?.closest("form");
|
|
124839
|
+
form?.requestSubmit();
|
|
124497
124840
|
}
|
|
124498
124841
|
}, maxLength: inputMaxLength, className: "omniscribe_thread-footer-textarea no-scrollbar", placeholder: formatMessage({
|
|
124499
124842
|
id: "Write your question..."
|
|
124500
|
-
}) })] }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-btns-container", children: [jsxRuntimeExports.jsx(MicrophoneButton, { onTextUpdate: handleTranscriptionUpdate }), stream.isLoading ? jsxRuntimeExports.jsx(Button, {
|
|
124843
|
+
}) })] }), 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: formatMessage({
|
|
124501
124844
|
id: "Send"
|
|
124502
|
-
}) })] })] }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-info", children: formatMessage({
|
|
124845
|
+
}) })] })] })] })] }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-info", children: formatMessage({
|
|
124503
124846
|
id: "SofIA may make mistakes. Consider checking important information."
|
|
124504
|
-
}) })] }) }) }) })
|
|
124847
|
+
}) })] }) }) }) })] })] });
|
|
124505
124848
|
};
|
|
124506
124849
|
|
|
124507
|
-
const Chat = () => {
|
|
124508
|
-
return jsxRuntimeExports.jsx(Thread, {});
|
|
124850
|
+
const Chat$1 = () => {
|
|
124851
|
+
return jsxRuntimeExports.jsx(MessageImagesProvider, { children: jsxRuntimeExports.jsx(Thread, {}) });
|
|
124509
124852
|
};
|
|
124510
124853
|
|
|
124511
124854
|
const Toast = () => {
|
|
@@ -125402,6 +125745,10 @@ const updateTransformedTranscriptions = async (segments, setState, appointmentDa
|
|
|
125402
125745
|
}
|
|
125403
125746
|
};
|
|
125404
125747
|
|
|
125748
|
+
const sleep = async (ms) => {
|
|
125749
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
125750
|
+
};
|
|
125751
|
+
|
|
125405
125752
|
const TranscriptionApi = {
|
|
125406
125753
|
createTranscription: async (data) => {
|
|
125407
125754
|
try {
|
|
@@ -125906,7 +126253,7 @@ const ReportButton = ({ onFillClick }) => {
|
|
|
125906
126253
|
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 })] });
|
|
125907
126254
|
};
|
|
125908
126255
|
|
|
125909
|
-
const CustomSelect = ({ options, onChange, selectedNumber = 0 }) => {
|
|
126256
|
+
const CustomSelect = ({ options, onChange, selectedNumber = 0, maxVisibleItems }) => {
|
|
125910
126257
|
const dropdownRef = reactExports.useRef(null);
|
|
125911
126258
|
const [selected, setSelected] = reactExports.useState(options[selectedNumber]);
|
|
125912
126259
|
const [isOpen, setIsOpen] = reactExports.useState(false);
|
|
@@ -125946,7 +126293,9 @@ const CustomSelect = ({ options, onChange, selectedNumber = 0 }) => {
|
|
|
125946
126293
|
height: "calc(var(--spacing) * 5)",
|
|
125947
126294
|
color: "var(--color-gray-900)",
|
|
125948
126295
|
marginLeft: "calc(var(--spacing) * 2)"
|
|
125949
|
-
} })] }), isOpen && jsxRuntimeExports.jsx("div", { className: "omniscribe_select-content-container", children: jsxRuntimeExports.jsx("ul", { className: "omniscribe_select-content-ul scrollbar-pretty",
|
|
126296
|
+
} })] }), isOpen && jsxRuntimeExports.jsx("div", { className: "omniscribe_select-content-container", children: jsxRuntimeExports.jsx("ul", { className: "omniscribe_select-content-ul scrollbar-pretty", style: maxVisibleItems ? {
|
|
126297
|
+
maxHeight: `calc(var(--spacing) * ${maxVisibleItems * 11} + var(--spacing) * 2)`
|
|
126298
|
+
} : void 0, children: options.map((option) => jsxRuntimeExports.jsxs("li", { onMouseDown: (e) => {
|
|
125950
126299
|
e.stopPropagation();
|
|
125951
126300
|
e.preventDefault();
|
|
125952
126301
|
}, onClick: (e) => handleChangeSelect(option, e), className: "omniscribe_select-content-li", children: [jsxRuntimeExports.jsxs("span", { className: "omniscribe_select-content-li-span", children: [option.icon ?? null, formatMessage({
|
|
@@ -126098,39 +126447,48 @@ const LanguageIcon = ({ className, width = 16, height = 17, stroke = "#4A5364" }
|
|
|
126098
126447
|
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" })] });
|
|
126099
126448
|
};
|
|
126100
126449
|
|
|
126450
|
+
const ChatIcon = ({ className, width = 16, height = 16, strokeWidth = 1, stroke = "currentColor" }) => {
|
|
126451
|
+
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" })] });
|
|
126452
|
+
};
|
|
126453
|
+
|
|
126101
126454
|
const DocumentTemplateIcon = ({ className, width = 16, height = 17, stroke = "#252A32" }) => {
|
|
126102
126455
|
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" })] });
|
|
126103
126456
|
};
|
|
126104
126457
|
|
|
126458
|
+
const BookTextIcon = ({ className, width = 16, height = 16, stroke = "currentColor" }) => {
|
|
126459
|
+
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" })] });
|
|
126460
|
+
};
|
|
126461
|
+
|
|
126105
126462
|
const CONFIG_OPTIONS = [
|
|
126463
|
+
{
|
|
126464
|
+
id: "language",
|
|
126465
|
+
titleId: "Language",
|
|
126466
|
+
descriptionId: "Select the language options.",
|
|
126467
|
+
IconComponent: LanguageIcon
|
|
126468
|
+
},
|
|
126106
126469
|
{
|
|
126107
126470
|
id: "microphone",
|
|
126108
126471
|
titleId: "Microphone",
|
|
126109
|
-
descriptionId: "Select the input microphone to ensure proper functioning
|
|
126110
|
-
IconComponent: MicrophoneIcon
|
|
126111
|
-
isImplemented: true
|
|
126472
|
+
descriptionId: "Select the input microphone to ensure proper functioning",
|
|
126473
|
+
IconComponent: MicrophoneIcon
|
|
126112
126474
|
},
|
|
126113
126475
|
{
|
|
126114
|
-
id: "
|
|
126115
|
-
titleId: "
|
|
126116
|
-
descriptionId: "
|
|
126117
|
-
IconComponent:
|
|
126118
|
-
isImplemented: true
|
|
126476
|
+
id: "chat",
|
|
126477
|
+
titleId: "Chat",
|
|
126478
|
+
descriptionId: "Customize the patient summary and chat sources.",
|
|
126479
|
+
IconComponent: ChatIcon
|
|
126119
126480
|
},
|
|
126120
126481
|
{
|
|
126121
126482
|
id: "template",
|
|
126122
126483
|
titleId: "Clinical note template",
|
|
126123
|
-
descriptionId: "Customize the clinical note
|
|
126124
|
-
IconComponent: DocumentTemplateIcon
|
|
126125
|
-
isImplemented: true
|
|
126126
|
-
// Now implemented
|
|
126484
|
+
descriptionId: "Customize the clinical note depending on the report you are filling out.",
|
|
126485
|
+
IconComponent: DocumentTemplateIcon
|
|
126127
126486
|
},
|
|
126128
126487
|
{
|
|
126129
126488
|
id: "dictionary",
|
|
126130
126489
|
titleId: "Clinical dictionary",
|
|
126131
126490
|
descriptionId: "Customize clinical language and medication format",
|
|
126132
|
-
IconComponent: BookTextIcon
|
|
126133
|
-
isImplemented: true
|
|
126491
|
+
IconComponent: BookTextIcon
|
|
126134
126492
|
}
|
|
126135
126493
|
];
|
|
126136
126494
|
const CONFIG_UI_CONSTANTS = {
|
|
@@ -126160,7 +126518,6 @@ const useConfigurationLogic = () => {
|
|
|
126160
126518
|
const IconComponent = option.IconComponent;
|
|
126161
126519
|
return {
|
|
126162
126520
|
id: option.id,
|
|
126163
|
-
isImplemented: option.isImplemented,
|
|
126164
126521
|
title: formatMessage({ id: option.titleId }),
|
|
126165
126522
|
description: formatMessage({ id: option.descriptionId }),
|
|
126166
126523
|
icon: reactExports.createElement(IconComponent, {
|
|
@@ -126403,7 +126760,7 @@ const LanguageSelector = () => {
|
|
|
126403
126760
|
const { code } = await getLanguageByCode(value);
|
|
126404
126761
|
await updateLanguage(code);
|
|
126405
126762
|
};
|
|
126406
|
-
return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: langOptions, onChange: handleLanguageChange, selectedNumber, className: "w-full" }) });
|
|
126763
|
+
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 }) });
|
|
126407
126764
|
};
|
|
126408
126765
|
|
|
126409
126766
|
const TranscriptionLanguageSelector = () => {
|
|
@@ -126421,7 +126778,7 @@ const TranscriptionLanguageSelector = () => {
|
|
|
126421
126778
|
logger.settingsError("Error updating transcription language:", error);
|
|
126422
126779
|
}
|
|
126423
126780
|
};
|
|
126424
|
-
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" }) });
|
|
126781
|
+
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 }) });
|
|
126425
126782
|
};
|
|
126426
126783
|
|
|
126427
126784
|
const ConfigSection = ({ description, children, className = "" }) => {
|
|
@@ -126431,13 +126788,169 @@ const ConfigSection = ({ description, children, className = "" }) => {
|
|
|
126431
126788
|
const Language = ({ onBack }) => {
|
|
126432
126789
|
const { formatMessage } = useIntl();
|
|
126433
126790
|
const { chatApp } = useApiConfigContext();
|
|
126434
|
-
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage({ id: "Language
|
|
126791
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage({ id: "Language" }), onBack }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-subscreen-content", children: [jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage({
|
|
126435
126792
|
id: "Select the interface language and the language in which the clinical note is generated"
|
|
126436
126793
|
}), children: jsxRuntimeExports.jsx(LanguageSelector, {}) }), !chatApp && jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage({
|
|
126437
126794
|
id: "Select the language for audio transcription"
|
|
126438
126795
|
}), children: jsxRuntimeExports.jsx(TranscriptionLanguageSelector, {}) })] }), jsxRuntimeExports.jsx(VersionSection, {})] });
|
|
126439
126796
|
};
|
|
126440
126797
|
|
|
126798
|
+
const Toggle = ({ checked, onChange, label, enabledText = "Enabled", disabledText = "Disabled", disabled = false, className = "", id }) => {
|
|
126799
|
+
const handleClick = () => {
|
|
126800
|
+
if (!disabled) {
|
|
126801
|
+
onChange(!checked);
|
|
126802
|
+
}
|
|
126803
|
+
};
|
|
126804
|
+
const handleKeyDown = (e) => {
|
|
126805
|
+
if ((e.key === "Enter" || e.key === " ") && !disabled) {
|
|
126806
|
+
e.preventDefault();
|
|
126807
|
+
onChange(!checked);
|
|
126808
|
+
}
|
|
126809
|
+
};
|
|
126810
|
+
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": id, tabIndex: disabled ? -1 : 0, children: jsxRuntimeExports.jsx("div", { className: "omniscribe_toggle-thumb" }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_toggle-status", children: checked ? enabledText : disabledText })] })] });
|
|
126811
|
+
};
|
|
126812
|
+
|
|
126813
|
+
const Separator = ({ className = "", orientation = "horizontal", decorative = true, ...props }) => {
|
|
126814
|
+
return jsxRuntimeExports.jsx("div", { className: `omniscribe_separator omniscribe_separator--${orientation} ${className}`.trim(), role: !decorative ? "separator" : void 0, "aria-orientation": !decorative ? orientation : void 0, ...props });
|
|
126815
|
+
};
|
|
126816
|
+
|
|
126817
|
+
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" })] });
|
|
126818
|
+
|
|
126819
|
+
const SourceItem = ({ source, onToggle }) => {
|
|
126820
|
+
const handleIconClick = () => {
|
|
126821
|
+
if (source.url) {
|
|
126822
|
+
window.open(source.url, "_blank", "noopener,noreferrer");
|
|
126823
|
+
}
|
|
126824
|
+
};
|
|
126825
|
+
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 })] });
|
|
126826
|
+
};
|
|
126827
|
+
|
|
126828
|
+
const chatSourceToSource = (chatSource, selected) => ({
|
|
126829
|
+
...chatSource,
|
|
126830
|
+
selected
|
|
126831
|
+
});
|
|
126832
|
+
const SourceSelector = ({ sources, onSourceToggle, isPromptActive = false }) => {
|
|
126833
|
+
const { formatMessage } = useIntl();
|
|
126834
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_source-selector", children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_source-selector-title", children: formatMessage({ id: "Sources" }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_source-selector-description", children: formatMessage({
|
|
126835
|
+
id: "Select the sources you want the AI to use for reasoning"
|
|
126836
|
+
}) }), jsxRuntimeExports.jsx("div", { className: `omniscribe_source-list ${isPromptActive ? "omniscribe_source-list--compact" : ""}`.trim(), children: sources.map((source) => jsxRuntimeExports.jsx(SourceItem, { source: {
|
|
126837
|
+
id: source.url || source.title || "unknown",
|
|
126838
|
+
// Use URL as primary ID for toggle functionality
|
|
126839
|
+
name: source.title,
|
|
126840
|
+
// Map title to name
|
|
126841
|
+
selected: source.selected,
|
|
126842
|
+
url: source.url
|
|
126843
|
+
// Pass URL for external links
|
|
126844
|
+
}, onToggle: onSourceToggle }, source.url || source.title || "unknown")) })] });
|
|
126845
|
+
};
|
|
126846
|
+
|
|
126847
|
+
const PromptCustomization = ({ localPrompt, characterCount, maxCharacters, onPromptChange, onPromptBlur }) => {
|
|
126848
|
+
const { formatMessage } = useIntl();
|
|
126849
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-prompt-section", children: [jsxRuntimeExports.jsx("h3", { className: "omniscribe_chat-prompt-title", children: formatMessage({ 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: formatMessage({
|
|
126850
|
+
id: "Don't leave out relevant information..."
|
|
126851
|
+
}), rows: 4 }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-character-count", children: [characterCount, "/", maxCharacters, " ", formatMessage({ id: "{count} characters" }, { count: "" }).replace(/\d+ /, "")] })] })] });
|
|
126852
|
+
};
|
|
126853
|
+
|
|
126854
|
+
const useDebounce = (value, delay) => {
|
|
126855
|
+
const [debouncedValue, setDebouncedValue] = reactExports.useState(value);
|
|
126856
|
+
reactExports.useEffect(() => {
|
|
126857
|
+
const handler = setTimeout(() => {
|
|
126858
|
+
setDebouncedValue(value);
|
|
126859
|
+
}, delay);
|
|
126860
|
+
return () => {
|
|
126861
|
+
clearTimeout(handler);
|
|
126862
|
+
};
|
|
126863
|
+
}, [value, delay]);
|
|
126864
|
+
return debouncedValue;
|
|
126865
|
+
};
|
|
126866
|
+
const Chat = ({ onBack }) => {
|
|
126867
|
+
const { formatMessage } = useIntl();
|
|
126868
|
+
const { summary, updateSummary, availableSources = [], sources: settingsSources = [], updateSources } = useSettingsContext();
|
|
126869
|
+
const [selectedSources, setSelectedSources] = reactExports.useState(() => Array.isArray(settingsSources) && settingsSources.length > 0 ? settingsSources : availableSources);
|
|
126870
|
+
const isSavingSourcesRef = reactExports.useRef(false);
|
|
126871
|
+
const pendingSourcesRef = reactExports.useRef(null);
|
|
126872
|
+
const [characterCount, setCharacterCount] = reactExports.useState(0);
|
|
126873
|
+
const [localPrompt, setLocalPrompt] = reactExports.useState("");
|
|
126874
|
+
const [isInitialized, setIsInitialized] = reactExports.useState(false);
|
|
126875
|
+
const maxCharacters = 1e3;
|
|
126876
|
+
const currentSummary = reactExports.useMemo(() => ({
|
|
126877
|
+
prompt: typeof summary?.prompt === "string" ? summary.prompt : "",
|
|
126878
|
+
isEnabled: typeof summary?.isEnabled === "boolean" ? summary.isEnabled : false
|
|
126879
|
+
}), [summary]);
|
|
126880
|
+
const debouncedPrompt = useDebounce(localPrompt, 500);
|
|
126881
|
+
reactExports.useEffect(() => {
|
|
126882
|
+
setLocalPrompt(currentSummary.prompt);
|
|
126883
|
+
setCharacterCount(currentSummary.prompt.length);
|
|
126884
|
+
setIsInitialized(true);
|
|
126885
|
+
}, [summary]);
|
|
126886
|
+
reactExports.useEffect(() => {
|
|
126887
|
+
if (isInitialized && debouncedPrompt !== currentSummary.prompt && updateSummary && !(debouncedPrompt === "" && currentSummary.prompt !== "")) {
|
|
126888
|
+
const newConfig = { ...currentSummary, prompt: debouncedPrompt };
|
|
126889
|
+
updateSummary(newConfig).catch((error) => {
|
|
126890
|
+
logger.settingsError("Error updating summary prompt:", error);
|
|
126891
|
+
});
|
|
126892
|
+
}
|
|
126893
|
+
}, [debouncedPrompt, currentSummary, updateSummary, isInitialized]);
|
|
126894
|
+
const handleToggleChange = async (enabled) => {
|
|
126895
|
+
if (!updateSummary)
|
|
126896
|
+
return;
|
|
126897
|
+
const newConfig = { ...currentSummary, isEnabled: enabled };
|
|
126898
|
+
try {
|
|
126899
|
+
await updateSummary(newConfig);
|
|
126900
|
+
} catch (error) {
|
|
126901
|
+
logger.settingsError("Error updating summary toggle:", error);
|
|
126902
|
+
}
|
|
126903
|
+
};
|
|
126904
|
+
const handlePromptChange = (e) => {
|
|
126905
|
+
const value = e.target.value;
|
|
126906
|
+
if (value.length <= maxCharacters) {
|
|
126907
|
+
setLocalPrompt(value);
|
|
126908
|
+
setCharacterCount(value.length);
|
|
126909
|
+
}
|
|
126910
|
+
};
|
|
126911
|
+
const handlePromptBlur = async () => {
|
|
126912
|
+
if (localPrompt !== currentSummary.prompt && updateSummary) {
|
|
126913
|
+
const newConfig = { ...currentSummary, prompt: localPrompt };
|
|
126914
|
+
try {
|
|
126915
|
+
await updateSummary(newConfig);
|
|
126916
|
+
} catch (error) {
|
|
126917
|
+
logger.settingsError("Error updating summary on blur:", error);
|
|
126918
|
+
}
|
|
126919
|
+
}
|
|
126920
|
+
};
|
|
126921
|
+
const saveSourcesNow = async (sources) => {
|
|
126922
|
+
isSavingSourcesRef.current = true;
|
|
126923
|
+
try {
|
|
126924
|
+
await updateSources(sources);
|
|
126925
|
+
} catch (error) {
|
|
126926
|
+
logger.settingsError("Error saving sources:", error);
|
|
126927
|
+
} finally {
|
|
126928
|
+
isSavingSourcesRef.current = false;
|
|
126929
|
+
if (pendingSourcesRef.current) {
|
|
126930
|
+
const next = pendingSourcesRef.current;
|
|
126931
|
+
pendingSourcesRef.current = null;
|
|
126932
|
+
saveSourcesNow(next);
|
|
126933
|
+
}
|
|
126934
|
+
}
|
|
126935
|
+
};
|
|
126936
|
+
const handleSourceToggle = (sourceUrl) => {
|
|
126937
|
+
const source = availableSources.find((s) => s.url === sourceUrl);
|
|
126938
|
+
if (!source)
|
|
126939
|
+
return;
|
|
126940
|
+
setSelectedSources((prev) => {
|
|
126941
|
+
const isSelected = prev.some((s) => s.url === sourceUrl);
|
|
126942
|
+
const next = isSelected ? prev.filter((s) => s.url !== sourceUrl) : [...prev, source];
|
|
126943
|
+
if (isSavingSourcesRef.current) {
|
|
126944
|
+
pendingSourcesRef.current = next;
|
|
126945
|
+
} else {
|
|
126946
|
+
saveSourcesNow(next);
|
|
126947
|
+
}
|
|
126948
|
+
return next;
|
|
126949
|
+
});
|
|
126950
|
+
};
|
|
126951
|
+
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage({ 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: formatMessage({ id: "Show patient summary first" }), enabledText: formatMessage({ id: "Enabled" }), disabledText: formatMessage({ 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((s) => s.url === source.url))), onSourceToggle: handleSourceToggle, isPromptActive: currentSummary.isEnabled })] })] }) }) })] });
|
|
126952
|
+
};
|
|
126953
|
+
|
|
126441
126954
|
function Input({ className = "omniscribe_input", type = "text", error, showError = true, errorClassName = "omniscribe_input-error", isValid = true, ...props }) {
|
|
126442
126955
|
const inputClassName = `${className} ${!isValid && error ? "invalid" : ""}`.trim();
|
|
126443
126956
|
return jsxRuntimeExports.jsxs("div", { className: "omniscribe_input-container", children: [jsxRuntimeExports.jsx("input", { 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 })] });
|
|
@@ -126735,7 +127248,7 @@ const useTemplateLogic = (onBack) => {
|
|
|
126735
127248
|
});
|
|
126736
127249
|
}
|
|
126737
127250
|
const templateString = JSON.stringify(modifiedTemplate);
|
|
126738
|
-
|
|
127251
|
+
const templateId = contextTemplateId;
|
|
126739
127252
|
const settingsToUpdate = {
|
|
126740
127253
|
template: templateString
|
|
126741
127254
|
};
|
|
@@ -126793,6 +127306,7 @@ const useScreenRenderers = (handleBackToMain) => {
|
|
|
126793
127306
|
const screenRenderers = reactExports.useMemo(() => ({
|
|
126794
127307
|
microphone: () => jsxRuntimeExports.jsx(Microphone, { onBack: handleBackToMain }),
|
|
126795
127308
|
language: () => jsxRuntimeExports.jsx(Language, { onBack: handleBackToMain }),
|
|
127309
|
+
chat: () => jsxRuntimeExports.jsx(Chat, { onBack: handleBackToMain }),
|
|
126796
127310
|
template: () => jsxRuntimeExports.jsx(Template, { onBack: handleBackToMain }),
|
|
126797
127311
|
dictionary: () => jsxRuntimeExports.jsx(Dictionary, { onBack: handleBackToMain })
|
|
126798
127312
|
}), [handleBackToMain]);
|
|
@@ -126838,7 +127352,7 @@ const App = ({ title }) => {
|
|
|
126838
127352
|
if (showConfig) {
|
|
126839
127353
|
return jsxRuntimeExports.jsx(Configuration, {});
|
|
126840
127354
|
}
|
|
126841
|
-
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(AudioRecorder, { isChat: shouldShowChat }), jsxRuntimeExports.jsx("div", { className: shouldShowChat ? "omniscribe_visible" : "omniscribe_hidden", children: jsxRuntimeExports.jsx(Chat, {}) })] });
|
|
127355
|
+
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, {}) })] });
|
|
126842
127356
|
};
|
|
126843
127357
|
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?.visible && jsxRuntimeExports.jsx(Toast, {})] }) });
|
|
126844
127358
|
};
|
|
@@ -129689,7 +130203,7 @@ const zig$1 = /*#__PURE__*/_mergeNamespaces({
|
|
|
129689
130203
|
default: zig
|
|
129690
130204
|
}, [zigExports]);
|
|
129691
130205
|
|
|
129692
|
-
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";
|
|
130206
|
+
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";
|
|
129693
130207
|
|
|
129694
130208
|
const injectedCss$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
129695
130209
|
__proto__: null,
|