iatoolkit 0.10.0__py3-none-any.whl → 0.10.2__py3-none-any.whl

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.

Potentially problematic release.


This version of iatoolkit might be problematic. Click here for more details.

@@ -20,9 +20,14 @@ class BrandingService:
20
20
  "header_background_color": "#FFFFFF", # Fondo blanco por defecto
21
21
  "header_text_color": "#6C757D", # Color de texto 'muted' de Bootstrap
22
22
 
23
- # Estilos para el nombre de la compañía
24
- "company_name_font_weight": "bold", # Nombre en negrita por defecto
25
- "company_name_font_size": "1rem", # Tamaño de fuente estándar
23
+ # Estilos para el texto primario (ej. nombre de la compañía)
24
+ "primary_font_weight": "bold",
25
+ "primary_font_size": "1rem",
26
+
27
+ # Estilos para el texto secundario (ej. ID de usuario)
28
+ "secondary_font_weight": "600", # Semibold
29
+ "secondary_font_size": "0.875rem" # Equivale a la clase 'small' de Bootstrap
30
+
26
31
  }
27
32
 
28
33
  def get_company_branding(self, company: Company | None) -> dict:
@@ -48,13 +53,19 @@ class BrandingService:
48
53
  f"background-color: {final_branding_values['header_background_color']}; "
49
54
  f"color: {final_branding_values['header_text_color']};"
50
55
  )
51
- company_name_style = (
52
- f"font-weight: {final_branding_values['company_name_font_weight']}; "
53
- f"font-size: {final_branding_values['company_name_font_size']};"
56
+ primary_text_style = (
57
+ f"font-weight: {final_branding_values['primary_font_weight']}; "
58
+ f"font-size: {final_branding_values['primary_font_size']};"
59
+ )
60
+ secondary_text_style = (
61
+ f"font-weight: {final_branding_values['secondary_font_weight']}; "
62
+ f"font-size: {final_branding_values['secondary_font_size']};"
54
63
  )
55
64
 
56
65
  return {
57
66
  "name": company.name if company else "IAToolkit",
58
67
  "header_style": header_style,
59
- "company_name_style": company_name_style
68
+ "header_text_color": final_branding_values['header_text_color'],
69
+ "primary_text_style": primary_text_style,
70
+ "secondary_text_style": secondary_text_style
60
71
  }
@@ -16,6 +16,8 @@
16
16
  overflow-y: auto;
17
17
  display: flex;
18
18
  flex-direction: column;
19
+ background-color: #fff; /* Fondo blanco para el contenedor del chat */
20
+ box-shadow: 0 0 10px rgba(0,0,0,0.1); /* Sombra sutil */
19
21
  }
20
22
  .answer-section, .error-section, .document-section {
21
23
  max-width: 100%;
@@ -23,14 +25,6 @@
23
25
  margin-bottom: 10px;
24
26
  }
25
27
 
26
- .input-container {
27
- flex: 1;
28
- display: flex;
29
- /* Organiza los elementos internos (la fila de inputs y el textarea) uno sobre otro */
30
- flex-direction: column;
31
-
32
- }
33
-
34
28
  /* Estilos para el modal de archivos y ordenar icono */
35
29
  .list-group-item {
36
30
  display: flex;
@@ -64,52 +58,13 @@
64
58
  margin-left: auto;
65
59
  }
66
60
 
67
- /* Titulo del modal */
68
- .modal-title {
69
- font-size: 1.5rem;
70
- font-weight: bold;
71
- }
72
-
73
-
74
61
  /* Para el icono de eliminar del modal */
75
62
  .remove-file-btn i {
76
63
  color: #c82333
77
64
  }
78
65
 
79
- /* Modern Header Mejorado */
80
- .modern-header {
81
- display: flex;
82
- justify-content: space-between;
83
- align-items: center;
84
- padding: 12px 30px; /* Espaciado optimizado */
85
- background: linear-gradient(90deg, #3388ff, #003399); /* Azul más claro al inicio */
86
- color: #ffffff; /* Texto blanco */
87
- box-shadow: 0 3px 5px rgba(0, 0, 0, 0.08); /* Sombra más sutil */
88
- position: sticky;
89
- top: 0;
90
- z-index: 1000;
91
- border-bottom: 1px solid rgba(255, 255, 255, 0.2); /* Línea blanca sutil abajo */
92
- }
93
-
94
- /* Ajustar el contenedor del logo */
95
- .modern-header .logo-section {
96
- display: flex;
97
- align-items: center; /* Centra verticalmente la imagen dentro del header */
98
- max-height: 100%; /* Asegura que siga el tamaño del contenedor */
99
- }
100
-
101
- /* Estilo general para la imagen del logo */
102
- .modern-header .logo-section img {
103
- max-height: 60px; /* Ajusta el tamaño máximo del logo */
104
- max-width: 100%; /* Evita desbordamiento horizontal */
105
- height: auto; /* Mantiene la proporción de la imagen */
106
- object-fit: contain; /* Evita deformaciones */
107
- }
108
-
109
-
110
66
  /* Estilo del mensaje ingresado por el usuario */
111
67
  #chat-container .message {
112
- /* Propiedades de layout y forma (se mantienen del original) */
113
68
  margin-top: 10px;
114
69
  max-width: 75%;
115
70
  min-width: fit-content;
@@ -120,15 +75,13 @@
120
75
  align-items: center;
121
76
  align-self: flex-end;
122
77
  text-align: left;
123
-
124
- /* Propiedades estéticas (adoptadas de .llm-output) */
125
78
  padding: 15px;
126
79
  font-family: Arial, sans-serif;
127
80
  font-size: 15px;
128
81
  line-height: 1.5;
129
82
  color: #333;
130
- background-color: #ffffff; /* Fondo blanco para consistencia */
131
- border: 1px solid #ddd; /* Borde sutil como en las tablas */
83
+ background-color: #ffffff;
84
+ border: 1px solid #ddd;
132
85
  }
133
86
 
134
87
 
@@ -142,169 +95,45 @@
142
95
  }
143
96
 
144
97
  .error-section {
145
- /* Layout y Alineación (Burbuja a la izquierda) */
146
- align-self: flex-start; /* Alinea a la izquierda, como los mensajes del asistente */
98
+ align-self: flex-start;
147
99
  max-width: 75%;
148
- min-width: fit-content; /* Se ajusta al contenido mínimo */
100
+ min-width: fit-content;
149
101
  width: fit-content;
150
102
  margin-top: 10px;
151
103
  display: flex;
152
- align-items: flex-start; /* Alinea el ícono con la primera línea de texto */
153
- gap: 12px; /* Un espaciado más generoso entre el ícono y el texto */
154
-
155
- /* Estilo Visual de Burbuja de Error */
156
- background-color: #fff0f0; /* Un rojo muy pálido y suave */
157
- color: #5c0f0f; /* Texto en un rojo oscuro para buena legibilidad */
158
- border: 1px solid #ffcccc; /* Borde en un tono de rojo ligeramente más oscuro */
159
- padding: 12px 18px; /* Espaciado interno optimizado */
160
- border-radius: 0 12px 12px 12px; /* Forma de burbuja (esquina superior izquierda recta) */
104
+ align-items: flex-start;
105
+ gap: 12px;
106
+ background-color: #fff0f0;
107
+ color: #5c0f0f;
108
+ border: 1px solid #ffcccc;
109
+ padding: 12px 18px;
110
+ border-radius: 0 12px 12px 12px;
161
111
  font-family: Arial, sans-serif;
162
112
  font-size: 15px;
163
113
  line-height: 1.5;
164
- word-wrap: break-word; /* Mantenemos el ajuste de texto */
165
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); /* Sombra muy sutil para darle profundidad */
114
+ word-wrap: break-word;
115
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
166
116
  }
167
117
 
168
118
  .error-section i {
169
- color: #d32f2f; /* Un rojo más vibrante para el ícono, para que destaque */
170
- font-size: 1.2em; /* Ícono un poco más grande para mayor impacto visual */
171
- padding-top: 2px; /* Pequeño ajuste para alinear visualmente mejor con el texto */
172
- }
173
-
174
-
175
- .list-unstyled {
176
- margin: 0;
177
- padding: 0;
178
- list-style: none;
179
- }
180
-
181
- /* Ajustes generales para la sección de validación */
182
- .document-section {
183
- display: flex;
184
- border-radius: 15px;
185
- margin-top: 10px;
186
- padding: 10px;
187
- text-align: left;
188
- background-color: #ffffff; /* Fondo blanco */
189
- flex-direction: column; /* Asegura que las filas se apilen verticalmente */
190
- max-width: 70%;
191
- border: 1px solid #d6d6d6; /* Borde neutro */
192
- }
193
-
194
- .row {
195
- display: flex;
196
- flex-wrap: nowrap; /* Evitar que los elementos salten de línea */
197
- }
198
-
199
- .col-auto {
200
- display: inline-block; /* Asegura que ocupen solo el ancho necesario */
201
- }
202
-
203
- .document-section .rejection-reasons {
204
- flex: 1;
205
- margin-top: 10px;
206
- margin-left: 25px;
207
- display: block;
208
- }
209
-
210
- .rejection-reasons ul {
211
- margin-left: 15px; /* Sangría para las listas */
212
- padding: 0;
213
- list-style: disc; /* Estilo de punto para las viñetas */
214
- }
215
-
216
- .document-section ul {
217
- margin-left: 10px; /* Sangría para listas */
218
- padding: 0;
219
- list-style: disc inside; /* Estilo de viñetas alineadas */
220
- }
221
-
222
-
223
- .input-container {
224
- width: 100%;
225
- display: flex;
226
- justify-content: center;
119
+ color: #d32f2f;
120
+ font-size: 1.2em;
121
+ padding-top: 2px;
227
122
  }
228
123
 
229
124
  #question {
230
125
  width: 100%;
231
126
  font-size: 15px;
232
- background: #f8f9fa; /* Fondo gris claro */
233
- color: #202123; /* Texto oscuro */
127
+ background: #f8f9fa;
128
+ color: #202123;
234
129
  border: 1px solid #d1d5db;
235
- transition: border-color 0.2s ease-in-out;
130
+ transition: all 0.3s ease-in-out;
236
131
  }
237
132
 
238
133
  #question:focus {
239
134
  outline: none;
240
- border-color: #0084ff; /* Azul vibrante */
241
- box-shadow: 0 0 5px rgba(0, 132, 255, 0.3);
242
- }
243
-
244
-
245
- .filepond--panel {
246
- padding: 0; /* Elimina cualquier relleno adicional del contenedor */
247
- }
248
-
249
- /* bordered drop area */
250
- .filepond--panel-root {
251
- background-color: transparent;
252
- }
253
-
254
- /* Contenedor de los archivos cargados (FilePond) */
255
- .filepond-container {
256
- width: 100%; /* Se estira todo lo que pueda */
257
- border: 2px dashed #adb5bd; /* Gris, igual al textarea */
258
- border-radius: 5px; /* Igual que el textarea */
259
- padding: 10px;
260
- min-height: 70px; /* Mantiene altura mínima */
261
- max-height: 200px; /* Evita que crezca demasiado */
262
- overflow-y: auto; /* Permite scroll si es necesario */
263
- background-color: #f8f9fa; /* Gris claro, igual al textarea */
264
- display: flex;
265
- align-items: center;
266
- justify-content: center;
267
- text-align: center;
268
- color: #6c757d; /* Color de prompt_llm.txt sutil */
269
- }
270
-
271
- .filepond--item {
272
- width: calc(40% - 0.5em);/* Ancho dinámico basado en el contenido */
273
- border-radius: 5px; /* Bordes curvados */
274
- text-align: left; /* Alinea el prompt_llm.txt a la izquierda */
275
- white-space: nowrap; /* Evita dividir el prompt_llm.txt en varias líneas */
276
- overflow: hidden; /* Oculta cualquier desbordamiento */
277
- text-overflow: ellipsis; /* Muestra puntos suspensivos si el prompt_llm.txt es muy largo */
278
- }
279
-
280
- .filepond--drop-label {
281
- display: none; /* Opcional: Oculta el mensaje de arrastrar y soltar si no lo necesitas */
282
- }
283
-
284
- /* the text color of the file status and info labels */
285
- .filepond--file {
286
- color: black;
287
- background-color: #d1e3f1;
288
- }
289
-
290
- .custom-confirm-button {
291
- background-color: #0066cc;
292
- color: white; /* Color del prompt_llm.txt */
293
- border: none; /* Sin borde */
294
- box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Sombra */
295
- }
296
-
297
- .custom-confirm-button:hover {
298
- background-color: #0066cc; /* Color al pasar el mouse */
299
- }
300
-
301
- .custom-cancel-button {
302
- background-color: #dc3545; /* Color de fondo (rojo) */
303
- color: white; /* Color del prompt_llm.txt */
304
- }
305
-
306
- .custom-cancel-button:hover {
307
- background-color: #c82333; /* Color al pasar el mouse */
135
+ border-color: #80bdff;
136
+ box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
308
137
  }
309
138
 
310
139
  /* 1. La caja principal que envuelve toda el área de entrada */
@@ -341,17 +170,20 @@
341
170
  min-height: 38px;
342
171
  }
343
172
 
344
- /* 5. Estilo UNIFICADO para todos los iconos de acción secundarios */
173
+ /* 5. NUEVO Estilo UNIFICADO para los enlaces de iconos de acción */
174
+ .action-icon-style {
175
+ color: #6c757d; /* Color gris estándar por defecto */
176
+ transition: opacity 0.2s ease-in-out;
177
+ }
178
+ .action-icon-style:hover {
179
+ opacity: 0.75; /* Efecto hover sutil */
180
+ }
345
181
  .action-icon-style i {
346
- color: #6c757d; /* Color gris estándar DIRECTAMENTE al icono */
347
- font-size: 1.5rem; /* Tamaño uniforme */
182
+ font-size: 1.5rem;
348
183
  vertical-align: middle;
349
- transition: color 0.2s ease-in-out;
350
- }
351
- .action-icon-style:hover i {
352
- color: #343a40; /* El color del icono cambia en hover */
353
184
  }
354
- /* Aplica también a los iconos de la barra de entrada */
185
+
186
+ /* Aplica a los iconos de la barra de entrada inferior */
355
187
  .chat-input-bar .d-flex a i {
356
188
  font-size: 1.5rem;
357
189
  vertical-align: middle;
@@ -362,7 +194,6 @@
362
194
  color: #343a40;
363
195
  }
364
196
 
365
-
366
197
  /* 6. Anulación de color y tamaño para el botón de ENVIAR */
367
198
  .send-button-icon i {
368
199
  color: #0d6efd !important; /* Azul (importante para anular) */
@@ -384,181 +215,85 @@
384
215
  }
385
216
  }
386
217
 
387
- .edit-icon {
388
- margin-left: 8px; /* Ajusta según el espacio deseado */
389
- }
390
-
391
- .message:hover .edit-icon {
392
- color: #007bff; /* Un color azul que contrasta bien con el fondo blanco */
393
- }
394
-
395
- #chat-container {
396
- background-color: #fff; /* Fondo blanco para el contenedor del chat */
397
- box-shadow: 0 0 10px rgba(0,0,0,0.1); /* Sombra sutil */
398
- }
399
-
400
- #question {
401
- transition: box-shadow 0.3s ease-in-out;
402
- }
403
-
404
- #question:focus {
405
- border-color: #80bdff;
406
- box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
407
- }
408
-
409
-
410
218
  .filepond--credits {
411
219
  display: none; /* Ocultar créditos de FilePond */
412
220
  }
413
221
 
414
- /* Si FilePond sigue mostrando algo, intentar ocultarlo más agresivamente. */
415
- /* Se accede al contenedor principal de FilePond que se crea automáticamente */
416
- .filepond--root {
417
- display: none;
418
- visibility: hidden;
419
- height: 0;
420
- width: 0;
421
- overflow: hidden;
422
- position: absolute; /* Sacarlo del flujo del documento */
423
- left: -9999px; /* Moverlo fuera de la pantalla */
424
- }
425
-
426
- /* Estilos para la barra de tareas*/
427
- .company-section {
428
- padding: 10px;
429
- background-color: #f8f9fa;
430
- border-radius: 10px;
431
- border: 1px solid #e9ecef;
432
- margin-right: 10px;
433
- margin-bottom: 5px;
434
- text-align: right
435
- }
436
-
437
-
438
222
  /* Estilo para el input de datos específicos cuando tiene contenido */
439
223
  .specific-data-input.has-content {
440
- background-color: #e9f3ed !important; /* Fondo verde muy pálido */
441
- border-color: #198754 !important; /* Borde en verde 'success' */
442
- border-width: 2px !important; /* Borde más grueso */
443
- color: #0a5833 !important; /* Texto en verde oscuro */
444
- font-weight: 500 !important; /* Fuente un poco más gruesa */
445
- box-shadow: 0 1px 4px rgba(25, 135, 84, 0.2) !important; /* Sombra sutil y más suave */
224
+ background-color: #e9f3ed !important;
225
+ border-color: #198754 !important;
226
+ border-width: 2px !important;
227
+ color: #0a5833 !important;
228
+ font-weight: 500 !important;
229
+ box-shadow: 0 1px 4px rgba(25, 135, 84, 0.2) !important;
446
230
  }
447
231
 
448
232
  /* Ajuste para la etiqueta flotante */
449
233
  .specific-data-input.has-content + label {
450
- color: #0a5833 !important; /* Aseguramos que el color de la etiqueta coincida */
234
+ color: #0a5833 !important;
451
235
  }
452
236
 
453
237
  /* Estilo para el botón de limpiar */
454
238
  .clear-specific-data-button {
455
239
  position: absolute;
456
240
  top: 50%;
457
- right: 15px; /* Lo mueve desde la derecha */
458
- transform: translateY(-50%); /* Lo centra verticalmente */
459
- z-index: 5; /* Se asegura de que esté por encima del input */
241
+ right: 15px;
242
+ transform: translateY(-50%);
243
+ z-index: 5;
460
244
  padding: 0.25rem 0.5rem;
461
245
  color: #6c757d;
462
246
  background-color: transparent;
463
- border: none; /* Aseguramos que no tenga borde */
247
+ border: none;
464
248
  }
465
249
 
466
250
  .clear-specific-data-button:hover {
467
251
  color: #212529;
468
252
  }
469
253
 
470
-
471
- /* Estilo personalizado para un input más suave */
472
- .form-control-soft {
473
- background-color: #f8f9fa; /* Fondo gris muy claro, como en la opción 2 */
474
- border-color: #dee2e6; /* Un borde inicial muy sutil */
475
- transition: all 0.2s ease-in-out; /* Transición suave para los efectos */
476
- }
477
-
478
- /* Efecto al hacer clic (focus) */
479
- .form-control-soft:focus {
480
- border-color: #198754; /* El borde toma el color verde 'success' de Bootstrap */
481
- box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); /* Resplandor a juego con el borde verde */
482
- color: #000;
483
- }
484
-
485
- .btn-dropdown-soft {
486
- background-color: #f8f9fa; /* Mismo fondo gris claro que el input */
487
- border: 1px solid #dee2e6; /* Borde inicial sutil */
488
- color: #495057; /* Color de texto estándar */
489
- transition: all 0.2s ease-in-out; /* Transición suave */
490
- height: 100%; /* Asegura que tenga la misma altura que el input de al lado */
491
- }
492
-
493
- /* Efecto cuando el menú está abierto (similar al :focus del input) */
494
- .btn-dropdown-soft[aria-expanded="true"] {
495
- background-color: #ffffff;
496
- border-color: #198754; /* Borde verde 'success' */
497
- box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); /* Resplandor verde */
498
- }
499
-
500
- /* Pequeño ajuste al pasar el ratón para que no cambie de color a menos que esté activo */
501
- .btn-dropdown-soft:hover {
502
- background-color: #f8f9fa;
503
- border-color: #ced4da;
504
- }
505
-
506
- /* 2. Estilo para el menú desplegable y sus ítems */
507
254
  .dropdown-menu-soft {
508
255
  background-color: #f8f9fa;
509
256
  border-color: #dee2e6;
510
257
  }
511
258
 
512
- /* Estilo y efecto para cada opción de la lista */
513
259
  .dropdown-menu-soft .dropdown-item {
514
- transition: all 0.15s ease-in-out; /* Transición para el efecto hover */
260
+ transition: all 0.15s ease-in-out;
515
261
  }
516
262
 
517
263
  .dropdown-menu-soft .dropdown-item:hover,
518
264
  .dropdown-menu-soft .dropdown-item:focus {
519
- color: #ffffff; /* Nuevo color de texto: blanco */
520
- background-color: #495057; /* Nuevo color de fondo: verde oscuro */
521
- padding-left: 1.5rem; /* Mantenemos el efecto de indentación */
522
- transition: all 0.15s ease-in-out; /* Mantenemos la transición suave */
265
+ color: #ffffff;
266
+ background-color: #495057;
267
+ padding-left: 1.5rem;
268
+ transition: all 0.15s ease-in-out;
523
269
  }
524
270
 
525
- /* Estilo para las cabeceras de las categorías dentro del menú */
526
271
  .dropdown-menu-soft .dropdown-header {
527
- background-color: #495057; /* Gris oscuro estándar de Bootstrap, muy legible */
528
- color: #ffffff; /* Texto en blanco para un contraste nítido */
529
- font-weight: 600; /* Grosor semibold, ideal para este contraste */
530
-
531
- /* Pequeños ajustes para un look pulido */
532
- margin: 4px; /* Un pequeño margen para que "respire" */
533
- padding: 0.4rem 1rem; /* Espaciado interno equilibrado */
534
- border-radius: 4px; /* Bordes sutilmente redondeados */
535
- font-size: 0.85rem; /* Tamaño de fuente ajustado */
536
- text-transform: none; /* Texto en formato normal para una apariencia más limpia */
272
+ background-color: #495057;
273
+ color: #ffffff;
274
+ font-weight: 600;
275
+ margin: 4px;
276
+ padding: 0.4rem 1rem;
277
+ border-radius: 4px;
278
+ font-size: 0.85rem;
279
+ text-transform: none;
537
280
  letter-spacing: normal;
538
- border-bottom: none; /* Nos aseguramos de quitar cualquier línea inferior */
539
- }
540
-
541
-
542
- /* Estilo para el texto de placeholder */
543
- .form-control-soft::placeholder {
544
- color: #6c757d; /* Color de texto gris estándar */
545
- opacity: 1;
281
+ border-bottom: none;
546
282
  }
547
283
 
548
284
  #clear-selection-button {
549
285
  position: absolute;
550
286
  top: 50%;
551
- /* Lo movemos 45px desde la derecha para que no se superponga con la flecha del dropdown */
552
287
  right: 45px;
553
288
  transform: translateY(-50%);
554
- z-index: 5; /* Asegura que esté por encima del botón principal */
289
+ z-index: 5;
555
290
  padding: 0.25rem 0.5rem;
556
- color: #6c757d; /* Color gris estándar */
291
+ color: #6c757d;
557
292
  background-color: transparent;
558
293
  }
559
294
 
560
295
  #clear-selection-button:hover {
561
- color: #212529; /* Se oscurece un poco al pasar el mouse */
296
+ color: #212529;
562
297
  }
563
298
 
564
299
 
@@ -588,27 +323,9 @@
588
323
  font-weight: bold;
589
324
  }
590
325
 
591
- /* Control de ancho de columnas en la tabla del historial */
592
- #history-content .table td:nth-child(1) {
593
- width: 5%; /* Columna del número */
594
- }
595
-
596
- #history-content .table td:nth-child(2) {
597
- width: 20%; /* Columna de la fecha */
598
- }
599
-
600
- #history-content .table td:nth-child(3) {
601
- width: auto; /* Columna de la consulta - ocupa el resto */
602
- }
603
-
604
- /* Botones de feedback y historial */
605
- .buttons-container {
606
- display: flex;
607
- justify-content: center;
608
- align-items: center;
609
- width: 100%;
610
- gap: 12px;
611
- }
326
+ #history-content .table td:nth-child(1) { width: 5%; }
327
+ #history-content .table td:nth-child(2) { width: 20%; }
328
+ #history-content .table td:nth-child(3) { width: auto; }
612
329
 
613
330
  /* Contenedor de calificación con estrellas */
614
331
  .rating-container {
@@ -634,68 +351,35 @@
634
351
  }
635
352
 
636
353
  /* --- ESTILOS PARA EL WIDGET DE ESTRELLAS DE FEEDBACK --- */
637
-
638
- /* Contenedor para alinear las estrellas y darles espacio */
639
354
  .rating-stars {
640
355
  display: flex;
641
- justify-content: center; /* Centra las estrellas en el modal */
642
- gap: 5px; /* Espacio entre las estrellas */
643
- margin-bottom: 15px; /* Espacio debajo de las estrellas */
644
- padding-top: 5px; /* Espacio superior para que no se peguen al texto */
356
+ justify-content: center;
357
+ gap: 5px;
358
+ margin-bottom: 15px;
359
+ padding-top: 5px;
645
360
  }
646
-
647
- /* Estilo base para cada estrella */
648
361
  .star {
649
- font-size: 2rem; /* Tamaño de las estrellas */
650
- color: #adb5bd; /* Color de las estrellas inactivas (gris) */
651
- cursor: pointer; /* Cursor de mano para indicar que son clickeables */
652
- transition: color 0.2s, transform 0.2s; /* Transición suave para el color y el tamaño */
362
+ font-size: 2rem;
363
+ color: #adb5bd;
364
+ cursor: pointer;
365
+ transition: color 0.2s, transform 0.2s;
653
366
  }
654
-
655
- /* Efecto visual al pasar el mouse por encima */
656
367
  .star:hover {
657
- transform: scale(1.15); /* Agranda un poco la estrella */
368
+ transform: scale(1.15);
658
369
  }
659
-
660
- /*
661
- * La magia principal ocurre aquí.
662
- * Usamos el pseudo-elemento ::before para controlar qué ícono de Bootstrap se muestra.
663
- */
664
-
665
- /* Por defecto, todas las estrellas muestran el ícono de estrella VACÍA (`bi-star`) */
666
370
  .star::before {
667
- font-family: 'bootstrap-icons'; /* Asegúrate de que la fuente de íconos esté disponible */
668
- content: "\F586"; /* Código Unicode para el ícono `bi-star` */
371
+ font-family: 'bootstrap-icons';
372
+ content: "\F586";
669
373
  font-style: normal;
670
374
  font-weight: normal;
671
375
  line-height: 1;
672
376
  -webkit-font-smoothing: antialiased;
673
377
  }
674
-
675
- /* Cuando una estrella tiene la clase .active (seleccionada) o .hover-active (bajo el cursor)... */
676
378
  .star.active::before,
677
379
  .star.hover-active::before {
678
- content: "\F587"; /* ...cambia el contenido al ícono de estrella LLENA (`bi-star-fill`) */
380
+ content: "\F587";
679
381
  }
680
-
681
- /* Color para las estrellas seleccionadas o bajo el cursor */
682
382
  .star.active,
683
383
  .star.hover-active {
684
- color: #ffc107; /* Color dorado estándar de Bootstrap */
685
- }
686
-
687
- /*
688
- * para que la altura de un boton coincida con la altura de un componente .form-floating
689
- */
690
- .btn-form-floating-height {
691
- height: calc(3.5rem + 2px) !important;
692
- }
693
-
694
-
695
- /* Estilo específico para el botón de Enviar */
696
- .send-button-icon i {
697
- color: #0d6efd; /* Azul de Bootstrap */
698
- }
699
- .send-button-icon:hover i {
700
- color: #0b5ed7; /* Azul más oscuro en hover */
384
+ color: #ffc107;
701
385
  }
@@ -8,15 +8,14 @@
8
8
  style="{{ branding.header_style }}">
9
9
 
10
10
  <!-- Izquierda: Nombre de la Empresa -->
11
- <span style="{{ branding.company_name_style }}">
11
+ <span style="{{ branding.primary_text_style }}">
12
12
  {{ branding.name }}
13
13
  </span>
14
14
 
15
- <!-- Derecha: Grupo de iconos de acción -->
16
15
  <!-- Derecha: Grupo de información y acciones del usuario -->
17
16
  <div class="d-flex align-items-center">
18
17
  <!-- 1. ID de Usuario -->
19
- <span class="small fw-semibold">
18
+ <span style="{{ branding.secondary_text_style }}">
20
19
  {{ external_user_id or user.email }}
21
20
  </span>
22
21
 
@@ -25,23 +24,24 @@
25
24
 
26
25
  <!-- 3. Iconos de Acción -->
27
26
  <a href="javascript:void(0);" id="history-button"
28
- class="action-icon-style" title="Historial con mis consultas" style="color: inherit;">
27
+ class="action-icon-style" title="Historial con mis consultas" style="color: {{ branding.header_text_color }};">
29
28
  <i class="bi bi-clock-history"></i>
30
29
  </a>
31
30
  <a href="javascript:void(0);" id="send-feedback-button"
32
- class="ms-3 action-icon-style" title="Tu feedback es muy importante" style="color: inherit;">
31
+ class="ms-3 action-icon-style" title="Tu feedback es muy importante" style="color: {{ branding.header_text_color }};">
33
32
  <i class="bi bi-emoji-smile"></i>
34
33
  </a>
35
34
 
36
- <!-- 4. Powered by (con mayor separación) -->
37
- <span class="text-muted ms-4" style="font-size: 0.75rem;">
38
- Powered by <strong>IAToolkit</strong>
35
+ <!-- 4. Powered by (oculto en un tooltip) -->
36
+ <span class="ms-4" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Powered by IAToolkit">
37
+ <i class="bi bi-info-circle" style="color: {{ branding.header_text_color }}; opacity: 0.7; font-size: 0.9rem;"></i>
39
38
  </span>
40
39
 
40
+
41
41
  <!-- 5. Icono de cerrar sesión (al final) -->
42
42
  {% if user.email %}
43
43
  <a href="{{ url_for('logout', company_short_name=company_short_name) }}"
44
- class="ms-3 action-icon-style" title="Cerrar sesión" style="color: inherit;">
44
+ class="ms-3 action-icon-style" title="Cerrar sesión" style="color: {{ branding.header_text_color }} !important;">
45
45
  <i class="bi bi-box-arrow-right"></i>
46
46
  </a>
47
47
  {% endif %}
@@ -186,5 +186,12 @@
186
186
  });
187
187
  }
188
188
  });
189
+ document.addEventListener('DOMContentLoaded', function () {
190
+ // Inicializar todos los tooltips de la página
191
+ var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
192
+ var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
193
+ return new bootstrap.Tooltip(tooltipTriggerEl)
194
+ })
195
+ });
189
196
  </script>
190
197
  {% endblock %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -36,7 +36,7 @@ iatoolkit/repositories/tasks_repo.py,sha256=icVO_r2oPagGnnBhwVFzznnvEEU2EAx-2dlW
36
36
  iatoolkit/repositories/vs_repo.py,sha256=UkpmQQiocgM5IwRBmmWhw3HHzHP6zK1nN3J3TcQgjhc,5300
37
37
  iatoolkit/services/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
38
38
  iatoolkit/services/benchmark_service.py,sha256=CdbFYyS3FHFhNzWQEa9ZNjUlmON10DT1nKNbZQ1EUi8,5880
39
- iatoolkit/services/branding_service.py,sha256=q0K0r-HlR055lrlEinDGfUBsVxw4cZAqxwpr1BlC3U8,2226
39
+ iatoolkit/services/branding_service.py,sha256=I6MgPe2T1JaeyKqysXSNQINGBrrpxuWoWd3ZZVEfvKs,2709
40
40
  iatoolkit/services/dispatcher_service.py,sha256=ykR1ye6McyCCuaBgwH6r3-PqcLAr4v4ApkPazMSBzbs,14040
41
41
  iatoolkit/services/document_service.py,sha256=nMXrNtbHQuc9pSaten0LvKY0kT8_WngBDmZJUP3jNPw,5936
42
42
  iatoolkit/services/excel_service.py,sha256=CJGhu7cQl9J6y_ZWSJ-M63Xm-RXR9Zs66oOR2NJErZQ,3868
@@ -66,7 +66,7 @@ iatoolkit/static/js/chat_feedback.js,sha256=_izl49hFEUZYREcJoaPukpTs0YjDgJYUu-Qf
66
66
  iatoolkit/static/js/chat_filepond.js,sha256=mzXafm7a506EpM37KATTK3zvAswO1E0KSUY1vKbwuRc,3163
67
67
  iatoolkit/static/js/chat_history.js,sha256=_bmwmMl9DL37FWJgoSS74j3LSqckD93C6fktB9-PxZk,3901
68
68
  iatoolkit/static/js/chat_main.js,sha256=zVDERp3_WZBTeP3N-gCf0IVTWbKToUB6L_lUaEi56A8,15149
69
- iatoolkit/static/styles/chat_iatoolkit.css,sha256=ZPQAgLT0HIeXjZC_EY8xACmVdjEp7spdPKFsTTIB-k0,20283
69
+ iatoolkit/static/styles/chat_iatoolkit.css,sha256=hZBe2KRfcszlyR6UO6hDbfMqhpECKn_maXMjcR5ld_M,8400
70
70
  iatoolkit/static/styles/chat_info.css,sha256=17DbgoNYE21VYWfb5L9-QLCpD2R1idK4imKRLwXtJLY,1058
71
71
  iatoolkit/static/styles/chat_modal.css,sha256=67qwltu-QS-sU0d_fSeTIiXwcNjfAnQQtmsgStx-ezk,3047
72
72
  iatoolkit/static/styles/llm_output.css,sha256=AlxgRSOleeCk2dLAqFWVaQ-jwZiJjcpC5rHuUv3T6VU,2312
@@ -76,7 +76,7 @@ iatoolkit/system_prompts/sql_rules.prompt,sha256=y4nURVnb9AyFwt-lrbMNBHHtZlhk6kC
76
76
  iatoolkit/templates/about.html,sha256=ciC08grUVz5qLzdzDDqDX31xirg5PrJIRYabWpV9oA8,294
77
77
  iatoolkit/templates/base.html,sha256=LXXB8oPrcBFkf2pLfOSyAaSh66kHbs4SEujpFL3h9Nw,2163
78
78
  iatoolkit/templates/change_password.html,sha256=DFfQSFcZ2YJZNFis2IXfzEKStxTf4i9f4eQ_6GiyNs8,2342
79
- iatoolkit/templates/chat.html,sha256=eoVL36szgDMhDy0Sm-6TUlSRsJj-w8tqPpXt4JiR4xg,8600
79
+ iatoolkit/templates/chat.html,sha256=Zuc7i_omW4OW0htl4t8sdYKK3NboNTsnIpcHV4wfoeU,9156
80
80
  iatoolkit/templates/chat_modals.html,sha256=9OtJHRMeBup8zojPnUqSl7Fd5StPdvOZMs2MiJPqVFY,5704
81
81
  iatoolkit/templates/error.html,sha256=BNF-7z8AYL5vF4ZMUFMrOBt8c85kCFrm9qSHn9EiHWg,540
82
82
  iatoolkit/templates/forgot_password.html,sha256=1lUbKg9CKnQdnySplceY_pibwYne1-mOlM38fqI1kW8,1563
@@ -104,7 +104,7 @@ iatoolkit/views/tasks_review_view.py,sha256=keLsLCyOTTlcoIapnB_lbuSvLwrPVZVpBiFC
104
104
  iatoolkit/views/tasks_view.py,sha256=a3anTXrJTTvbQuc6PSpOzidLKQFL4hWa7PI2Cppcz8w,4110
105
105
  iatoolkit/views/user_feedback_view.py,sha256=G37zmP8P4LvZrSymNJ5iFXhLZg1A3BEwRfTpH1Iam5w,2652
106
106
  iatoolkit/views/verify_user_view.py,sha256=a3q4wHJ8mKAEmgbNTOcnX4rMikROjOR3mHvCr30qGGA,2351
107
- iatoolkit-0.10.0.dist-info/METADATA,sha256=n-AWALIm00-dTTRuRVMcP1-kD7bKctNh4vgrkGYdPKU,9301
108
- iatoolkit-0.10.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
- iatoolkit-0.10.0.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
110
- iatoolkit-0.10.0.dist-info/RECORD,,
107
+ iatoolkit-0.10.2.dist-info/METADATA,sha256=sHrK0vERhSpig941JIOiEb6uXRs-lVRr2RxwpMbFZoY,9301
108
+ iatoolkit-0.10.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
+ iatoolkit-0.10.2.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
110
+ iatoolkit-0.10.2.dist-info/RECORD,,