iatoolkit 0.8.1__py3-none-any.whl → 0.63.4__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.
- iatoolkit/__init__.py +8 -34
- iatoolkit/base_company.py +14 -3
- iatoolkit/common/routes.py +83 -52
- iatoolkit/common/session_manager.py +0 -1
- iatoolkit/common/util.py +0 -27
- iatoolkit/iatoolkit.py +61 -46
- iatoolkit/infra/llm_client.py +7 -8
- iatoolkit/infra/openai_adapter.py +1 -1
- iatoolkit/infra/redis_session_manager.py +48 -2
- iatoolkit/repositories/database_manager.py +17 -2
- iatoolkit/repositories/models.py +31 -6
- iatoolkit/repositories/profile_repo.py +7 -2
- iatoolkit/services/auth_service.py +188 -0
- iatoolkit/services/branding_service.py +147 -0
- iatoolkit/services/dispatcher_service.py +10 -40
- iatoolkit/services/excel_service.py +15 -15
- iatoolkit/services/history_service.py +3 -12
- iatoolkit/services/jwt_service.py +15 -24
- iatoolkit/services/onboarding_service.py +43 -0
- iatoolkit/services/profile_service.py +97 -44
- iatoolkit/services/query_service.py +124 -81
- iatoolkit/services/tasks_service.py +1 -1
- iatoolkit/services/user_feedback_service.py +67 -31
- iatoolkit/services/user_session_context_service.py +112 -54
- iatoolkit/static/images/fernando.jpeg +0 -0
- iatoolkit/static/js/{chat_feedback.js → chat_feedback_button.js} +6 -11
- iatoolkit/static/js/chat_history_button.js +126 -0
- iatoolkit/static/js/chat_logout_button.js +36 -0
- iatoolkit/static/js/chat_main.js +130 -220
- iatoolkit/static/js/chat_onboarding_button.js +97 -0
- iatoolkit/static/js/chat_prompt_manager.js +94 -0
- iatoolkit/static/js/chat_reload_button.js +52 -0
- iatoolkit/static/styles/chat_iatoolkit.css +329 -507
- iatoolkit/static/styles/chat_modal.css +95 -56
- iatoolkit/static/styles/landing_page.css +182 -0
- iatoolkit/static/styles/onboarding.css +169 -0
- iatoolkit/system_prompts/query_main.prompt +3 -12
- iatoolkit/templates/_company_header.html +20 -0
- iatoolkit/templates/_login_widget.html +40 -0
- iatoolkit/templates/base.html +8 -3
- iatoolkit/templates/change_password.html +54 -37
- iatoolkit/templates/chat.html +149 -66
- iatoolkit/templates/chat_modals.html +47 -18
- iatoolkit/templates/error.html +41 -8
- iatoolkit/templates/forgot_password.html +37 -24
- iatoolkit/templates/index.html +140 -0
- iatoolkit/templates/login_simulation.html +34 -0
- iatoolkit/templates/onboarding_shell.html +105 -0
- iatoolkit/templates/signup.html +64 -66
- iatoolkit/views/base_login_view.py +81 -0
- iatoolkit/views/change_password_view.py +23 -12
- iatoolkit/views/external_login_view.py +61 -28
- iatoolkit/views/{file_store_view.py → file_store_api_view.py} +9 -2
- iatoolkit/views/forgot_password_view.py +23 -13
- iatoolkit/views/history_api_view.py +52 -0
- iatoolkit/views/home_view.py +58 -25
- iatoolkit/views/index_view.py +14 -0
- iatoolkit/views/init_context_api_view.py +68 -0
- iatoolkit/views/llmquery_api_view.py +45 -0
- iatoolkit/views/login_simulation_view.py +81 -0
- iatoolkit/views/login_view.py +118 -34
- iatoolkit/views/logout_api_view.py +45 -0
- iatoolkit/views/{prompt_view.py → prompt_api_view.py} +7 -7
- iatoolkit/views/signup_view.py +38 -29
- iatoolkit/views/{tasks_view.py → tasks_api_view.py} +10 -36
- iatoolkit/views/tasks_review_api_view.py +55 -0
- iatoolkit/views/{user_feedback_view.py → user_feedback_api_view.py} +16 -31
- iatoolkit/views/verify_user_view.py +13 -8
- {iatoolkit-0.8.1.dist-info → iatoolkit-0.63.4.dist-info}/METADATA +2 -2
- iatoolkit-0.63.4.dist-info/RECORD +113 -0
- {iatoolkit-0.8.1.dist-info → iatoolkit-0.63.4.dist-info}/top_level.txt +0 -1
- iatoolkit/common/auth.py +0 -200
- iatoolkit/static/images/arrow_up.png +0 -0
- iatoolkit/static/images/diagrama_iatoolkit.jpg +0 -0
- iatoolkit/static/images/logo_clinica.png +0 -0
- iatoolkit/static/images/logo_iatoolkit.png +0 -0
- iatoolkit/static/images/logo_maxxa.png +0 -0
- iatoolkit/static/images/logo_notaria.png +0 -0
- iatoolkit/static/images/logo_tarjeta.png +0 -0
- iatoolkit/static/images/logo_umayor.png +0 -0
- iatoolkit/static/images/upload.png +0 -0
- iatoolkit/static/js/chat_history.js +0 -117
- iatoolkit/templates/home.html +0 -201
- iatoolkit/templates/login.html +0 -43
- iatoolkit/views/chat_token_request_view.py +0 -98
- iatoolkit/views/chat_view.py +0 -51
- iatoolkit/views/download_file_view.py +0 -58
- iatoolkit/views/external_chat_login_view.py +0 -88
- iatoolkit/views/history_view.py +0 -57
- iatoolkit/views/llmquery_view.py +0 -65
- iatoolkit/views/tasks_review_view.py +0 -83
- iatoolkit-0.8.1.dist-info/RECORD +0 -175
- tests/__init__.py +0 -5
- tests/common/__init__.py +0 -0
- tests/common/test_auth.py +0 -279
- tests/common/test_routes.py +0 -42
- tests/common/test_session_manager.py +0 -59
- tests/common/test_util.py +0 -444
- tests/companies/__init__.py +0 -5
- tests/conftest.py +0 -36
- tests/infra/__init__.py +0 -5
- tests/infra/connectors/__init__.py +0 -5
- tests/infra/connectors/test_google_drive_connector.py +0 -107
- tests/infra/connectors/test_local_file_connector.py +0 -85
- tests/infra/connectors/test_s3_connector.py +0 -95
- tests/infra/test_call_service.py +0 -92
- tests/infra/test_database_manager.py +0 -59
- tests/infra/test_gemini_adapter.py +0 -137
- tests/infra/test_google_chat_app.py +0 -68
- tests/infra/test_llm_client.py +0 -165
- tests/infra/test_llm_proxy.py +0 -122
- tests/infra/test_mail_app.py +0 -94
- tests/infra/test_openai_adapter.py +0 -105
- tests/infra/test_redis_session_manager_service.py +0 -117
- tests/repositories/__init__.py +0 -5
- tests/repositories/test_database_manager.py +0 -87
- tests/repositories/test_document_repo.py +0 -76
- tests/repositories/test_llm_query_repo.py +0 -340
- tests/repositories/test_models.py +0 -38
- tests/repositories/test_profile_repo.py +0 -142
- tests/repositories/test_tasks_repo.py +0 -76
- tests/repositories/test_vs_repo.py +0 -107
- tests/services/__init__.py +0 -5
- tests/services/test_dispatcher_service.py +0 -274
- tests/services/test_document_service.py +0 -181
- tests/services/test_excel_service.py +0 -208
- tests/services/test_file_processor_service.py +0 -121
- tests/services/test_history_service.py +0 -164
- tests/services/test_jwt_service.py +0 -255
- tests/services/test_load_documents_service.py +0 -112
- tests/services/test_mail_service.py +0 -70
- tests/services/test_profile_service.py +0 -379
- tests/services/test_prompt_manager_service.py +0 -190
- tests/services/test_query_service.py +0 -243
- tests/services/test_search_service.py +0 -39
- tests/services/test_sql_service.py +0 -160
- tests/services/test_tasks_service.py +0 -252
- tests/services/test_user_feedback_service.py +0 -389
- tests/services/test_user_session_context_service.py +0 -132
- tests/views/__init__.py +0 -5
- tests/views/test_change_password_view.py +0 -191
- tests/views/test_chat_token_request_view.py +0 -188
- tests/views/test_chat_view.py +0 -98
- tests/views/test_download_file_view.py +0 -149
- tests/views/test_external_chat_login_view.py +0 -120
- tests/views/test_external_login_view.py +0 -102
- tests/views/test_file_store_view.py +0 -128
- tests/views/test_forgot_password_view.py +0 -142
- tests/views/test_history_view.py +0 -336
- tests/views/test_home_view.py +0 -61
- tests/views/test_llm_query_view.py +0 -154
- tests/views/test_login_view.py +0 -114
- tests/views/test_prompt_view.py +0 -111
- tests/views/test_signup_view.py +0 -140
- tests/views/test_tasks_review_view.py +0 -104
- tests/views/test_tasks_view.py +0 -130
- tests/views/test_user_feedback_view.py +0 -214
- tests/views/test_verify_user_view.py +0 -110
- {iatoolkit-0.8.1.dist-info → iatoolkit-0.63.4.dist-info}/WHEEL +0 -0
|
@@ -1,13 +1,154 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
display: inline-block;
|
|
1
|
+
/* Customización de variables de Bootstrap */
|
|
2
|
+
:root {
|
|
3
|
+
--bs-tooltip-bg: #495057; /* Gris carbón, más claro y profesional */
|
|
4
|
+
--bs-tooltip-opacity: 0.95; /* Ligeramente más opaco para mejor legibilidad */
|
|
6
5
|
}
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
h1, h2, h3, h4, h5, h6 {
|
|
8
|
+
font-family: var(--font-family-sans);
|
|
9
|
+
font-weight: var(--weight-semibold);
|
|
10
|
+
line-height: var(--lh-title);
|
|
11
|
+
margin: 0 0 0.6em;
|
|
12
|
+
/* Se define un color base usando la nueva variable de branding */
|
|
13
|
+
color: var(--brand-text-heading-color);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
ul {
|
|
17
|
+
/* Se resetea el padding por defecto del navegador y se aplica uno controlado */
|
|
18
|
+
padding-left: 1.5rem; /* ~24px de indentación para la lista */
|
|
19
|
+
margin-bottom: 1rem; /* Espacio después de que termina la lista */
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
li {
|
|
23
|
+
/* Espacio vertical entre cada elemento de la lista para mejor legibilidad */
|
|
24
|
+
margin-bottom: 0.5rem; /* ~8px */
|
|
25
|
+
padding-left: 0.25rem; /* Pequeño espacio extra entre la viñeta y el texto */
|
|
26
|
+
color: #495057;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Estilo para la viñeta (el punto) de cada elemento de la lista */
|
|
30
|
+
li::marker {
|
|
31
|
+
color: var(--brand-primary-color); /* La viñeta usa el color principal de la marca */
|
|
32
|
+
font-size: 1.1em; /* Ligeramente más grande para que sea más visible */
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.text-muted {
|
|
36
|
+
color: #64748b;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Estos estilos son para las paginas publicas: home, signup, olvide la clave, etc */
|
|
40
|
+
|
|
41
|
+
/* --- Encabezado (top) de company --- */
|
|
42
|
+
.custom-company-header {
|
|
43
|
+
height: 78px;
|
|
44
|
+
margin-bottom: 20px;
|
|
45
|
+
padding: 0 1.5rem; /* Padding interno para que el texto no toque los bordes */
|
|
46
|
+
border-radius: 0.375rem; /* Bordes redondeados para que coincida con los formularios */
|
|
47
|
+
|
|
48
|
+
/* Los estilos de color y sombra se mantienen */
|
|
49
|
+
background-color: var(--brand-header-bg);
|
|
50
|
+
color: var(--brand-header-text);
|
|
51
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); /* Sombra ligeramente más suave */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Estilo específico para el nombre de la marca en el encabezado (Letra más grande) */
|
|
55
|
+
.custom-company-header .brand-name {
|
|
56
|
+
font-size: 1.8rem; /* Tamaño de fuente aumentado */
|
|
57
|
+
font-weight: 600;
|
|
58
|
+
color: inherit;
|
|
59
|
+
text-decoration: none;
|
|
60
|
+
transition: opacity 0.2s ease-in-out;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Efecto hover para el enlace del nombre de la marca */
|
|
64
|
+
.custom-company-header .brand-name:hover {
|
|
65
|
+
opacity: 0.85;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Estilo para el texto "Powered by" --- */
|
|
69
|
+
.custom-company-header .powered-by {
|
|
70
|
+
font-size: 0.9rem;
|
|
71
|
+
font-weight: 400;
|
|
72
|
+
opacity: 0.75; /* Menos prominente que el nombre de la marca */
|
|
73
|
+
color: inherit;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* --- Estilo para el enlace de IAToolkit --- */
|
|
77
|
+
.custom-company-header .iatoolkit-link {
|
|
78
|
+
color: inherit; /* Hereda el color del texto padre */
|
|
79
|
+
text-decoration: none; /* ¡Elimina el subrayado! */
|
|
80
|
+
font-weight: 600; /* Un poco más de peso para diferenciarlo */
|
|
81
|
+
transition: opacity 0.2s ease-in-out;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
.custom-company-header .form-container {
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
gap: 1rem;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* titulo en home */
|
|
92
|
+
.home-title {
|
|
93
|
+
font-size: 3rem;
|
|
94
|
+
font-weight: 700;
|
|
95
|
+
line-height: 1.2;
|
|
96
|
+
color: var(--brand-primary-color);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* contenedor de formularios: login, signup, forgot password, etc. */
|
|
100
|
+
.branded-form-container {
|
|
101
|
+
background-color: #ffffff;
|
|
102
|
+
border: 1px solid #dee2e6;
|
|
103
|
+
border-top: 4px solid #adb5bd;
|
|
104
|
+
border-radius: 0.375rem;
|
|
105
|
+
padding: 2rem;
|
|
106
|
+
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
.branded-form-label {
|
|
111
|
+
font-size: 0.85rem;
|
|
112
|
+
font-weight: 600;
|
|
113
|
+
color: #495057; /* Un gris oscuro profesional */
|
|
114
|
+
text-transform: uppercase;
|
|
115
|
+
letter-spacing: 0.05em; /* Un poco de espacio extra entre letras */
|
|
116
|
+
margin-bottom: 0.3rem;
|
|
117
|
+
display: block;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
/* Efecto de foco brandeado para todos los form-control */
|
|
122
|
+
.form-control:focus {
|
|
123
|
+
border-color: var(--brand-primary-color);
|
|
124
|
+
box-shadow: 0 0 0 0.25rem rgba(var(--brand-primary-color-rgb), 0.25); /* Usa la variable RGB para el shadow */
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.branded-form-title {
|
|
128
|
+
color: var(--brand-primary-color);
|
|
129
|
+
font-size: 1.75rem; /* Un tamaño más prominente */
|
|
130
|
+
font-weight: 700; /* Equivalente a fw-bold de Bootstrap */
|
|
131
|
+
text-align: center;
|
|
132
|
+
margin-bottom: 1.5rem; /* Espacio consistente debajo del título */
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
/* CSS para el chat principal */
|
|
138
|
+
/* esta clase defines los atributos de cada bloque */
|
|
139
|
+
.chat-block {
|
|
140
|
+
padding: 1rem; /* Equivalente a p-3 de Bootstrap */
|
|
141
|
+
border: 1px solid #dee2e6; /* Borde estándar y sutil */
|
|
142
|
+
border-radius: 0.375rem; /* Borde redondeado estándar de Bootstrap */
|
|
143
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.06); /* Sombra suave y unificada */
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
/* sección del encabezado en el chat principal */
|
|
148
|
+
.company-section {
|
|
149
|
+
border-radius: 0.375rem; /* Mismo radio que .chat-block para consistencia */
|
|
150
|
+
background-color: var(--brand-header-bg);
|
|
151
|
+
color: var(--brand-header-text);
|
|
11
152
|
}
|
|
12
153
|
|
|
13
154
|
/* Estilos para el contenedor del chat y mensajes para que exista scroll */
|
|
@@ -16,6 +157,7 @@
|
|
|
16
157
|
overflow-y: auto;
|
|
17
158
|
display: flex;
|
|
18
159
|
flex-direction: column;
|
|
160
|
+
background-color: #fff; /* Fondo blanco para el contenedor del chat */
|
|
19
161
|
}
|
|
20
162
|
.answer-section, .error-section, .document-section {
|
|
21
163
|
max-width: 100%;
|
|
@@ -23,14 +165,24 @@
|
|
|
23
165
|
margin-bottom: 10px;
|
|
24
166
|
}
|
|
25
167
|
|
|
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
168
|
|
|
169
|
+
/* Spinner */
|
|
170
|
+
.spinning {
|
|
171
|
+
animation: spin 1s linear infinite;
|
|
172
|
+
font-size: 15px; /* Tamaño del ícono */
|
|
173
|
+
display: inline-block;
|
|
174
|
+
}
|
|
175
|
+
#spinner .spinner-border {
|
|
176
|
+
color: var(--brand-primary-color);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
@keyframes spin {
|
|
181
|
+
0% { transform: rotate(0deg); }
|
|
182
|
+
100% { transform: rotate(360deg); }
|
|
32
183
|
}
|
|
33
184
|
|
|
185
|
+
|
|
34
186
|
/* Estilos para el modal de archivos y ordenar icono */
|
|
35
187
|
.list-group-item {
|
|
36
188
|
display: flex;
|
|
@@ -44,73 +196,9 @@
|
|
|
44
196
|
.remove-file-btn {
|
|
45
197
|
flex-shrink: 0;
|
|
46
198
|
}
|
|
47
|
-
/* Estilos del header del modal*/
|
|
48
|
-
.modal-header {
|
|
49
|
-
display: flex;
|
|
50
|
-
align-items: center;
|
|
51
|
-
justify-content: space-between;
|
|
52
|
-
width: 100%;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.modal-header .modal-title {
|
|
56
|
-
margin: 0;
|
|
57
|
-
padding: 0;
|
|
58
|
-
flex: 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.modal-header .close {
|
|
62
|
-
margin: 0;
|
|
63
|
-
padding: 0;
|
|
64
|
-
margin-left: auto;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* Titulo del modal */
|
|
68
|
-
.modal-title {
|
|
69
|
-
font-size: 1.5rem;
|
|
70
|
-
font-weight: bold;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/* Para el icono de eliminar del modal */
|
|
75
|
-
.remove-file-btn i {
|
|
76
|
-
color: #c82333
|
|
77
|
-
}
|
|
78
|
-
|
|
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
199
|
|
|
110
200
|
/* Estilo del mensaje ingresado por el usuario */
|
|
111
201
|
#chat-container .message {
|
|
112
|
-
/* Propiedades de layout y forma (se mantienen del original) */
|
|
113
|
-
margin-top: 10px;
|
|
114
202
|
max-width: 75%;
|
|
115
203
|
min-width: fit-content;
|
|
116
204
|
width: fit-content;
|
|
@@ -120,199 +208,70 @@
|
|
|
120
208
|
align-items: center;
|
|
121
209
|
align-self: flex-end;
|
|
122
210
|
text-align: left;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
padding: 15px;
|
|
211
|
+
padding-left: 0.5em;
|
|
212
|
+
color: #202123;
|
|
126
213
|
font-family: Arial, sans-serif;
|
|
127
214
|
font-size: 15px;
|
|
128
|
-
line-height: 1.
|
|
129
|
-
color: #
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
215
|
+
line-height: 1.6;
|
|
216
|
+
background-color: #f7f7f8;
|
|
217
|
+
border: none;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.answer-section {
|
|
221
|
+
align-self: flex-start;
|
|
222
|
+
max-width: 75%;
|
|
223
|
+
padding: 10px 15px;
|
|
224
|
+
font-family: "Inter", Arial, sans-serif;
|
|
225
|
+
font-size: 15px;
|
|
226
|
+
line-height: 1.6;
|
|
227
|
+
word-wrap: break-word;
|
|
228
|
+
}
|
|
143
229
|
|
|
144
230
|
.error-section {
|
|
145
|
-
|
|
146
|
-
align-self: flex-start; /* Alinea a la izquierda, como los mensajes del asistente */
|
|
231
|
+
align-self: flex-start;
|
|
147
232
|
max-width: 75%;
|
|
148
|
-
min-width:
|
|
149
|
-
width: fit-content;
|
|
150
|
-
margin-top: 10px;
|
|
151
|
-
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) */
|
|
161
|
-
font-family: Arial, sans-serif;
|
|
162
|
-
font-size: 15px;
|
|
163
|
-
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 */
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
.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
|
-
}
|
|
233
|
+
min-width: 250px;
|
|
193
234
|
|
|
194
|
-
|
|
235
|
+
color: var(--brand-danger-text, #842029); /* Color de texto de error de la marca */
|
|
236
|
+
background-color: var(--brand-danger-bg, #f8d7da); /* Fondo de error de la marca */
|
|
237
|
+
border: 1px solid var(--brand-danger-border, #f5c2c7); /* Borde de error de la marca */
|
|
238
|
+
font-style: italic;
|
|
239
|
+
font-size: 0.9rem;
|
|
195
240
|
display: flex;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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 */
|
|
241
|
+
align-items: center;
|
|
242
|
+
justify-content: start;
|
|
243
|
+
margin: 10px 0;
|
|
244
|
+
padding: 10px 15px; /* Un poco más de padding lateral */
|
|
245
|
+
opacity: 0.9;
|
|
246
|
+
border-radius: 8px; /* Bordes redondeados */
|
|
247
|
+
word-wrap: break-word; /* Asegura que el texto no se desborde */
|
|
220
248
|
}
|
|
221
249
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
250
|
+
.error-section i {
|
|
251
|
+
color: var(--brand-danger-color, #dc3545); /* Color del icono, el rojo principal */
|
|
252
|
+
font-size: 1.2rem; /* Tamaño del icono */
|
|
253
|
+
margin-right: 10px; /* Espacio entre el icono y el texto */
|
|
254
|
+
flex-shrink: 0; /* Evita que el icono se encoja */
|
|
227
255
|
}
|
|
228
256
|
|
|
229
257
|
#question {
|
|
230
258
|
width: 100%;
|
|
231
259
|
font-size: 15px;
|
|
232
|
-
background: #f8f9fa;
|
|
233
|
-
color: #202123;
|
|
260
|
+
background: #f8f9fa;
|
|
261
|
+
color: #202123;
|
|
234
262
|
border: 1px solid #d1d5db;
|
|
235
|
-
transition:
|
|
263
|
+
transition: all 0.3s ease-in-out;
|
|
236
264
|
}
|
|
237
265
|
|
|
238
266
|
#question:focus {
|
|
239
267
|
outline: none;
|
|
240
|
-
border-color: #
|
|
241
|
-
box-shadow: 0 0
|
|
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 */
|
|
268
|
+
border-color: #80bdff;
|
|
269
|
+
box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
|
|
308
270
|
}
|
|
309
271
|
|
|
310
272
|
/* 1. La caja principal que envuelve toda el área de entrada */
|
|
311
273
|
.input-area {
|
|
312
|
-
background-color: #f8f9fa;
|
|
313
|
-
padding: 10px;
|
|
314
|
-
border-radius: 10px;
|
|
315
|
-
box-shadow: 0 -2px 5px rgba(0,0,0,0.05);
|
|
274
|
+
background-color: var(--brand-prompt-assistant-bg, #f8f9fa);
|
|
316
275
|
}
|
|
317
276
|
|
|
318
277
|
/* 2. La barra "cápsula" que envuelve el texto y los iconos */
|
|
@@ -320,7 +279,7 @@
|
|
|
320
279
|
background-color: #ffffff;
|
|
321
280
|
border: 1px solid #dee2e6;
|
|
322
281
|
border-radius: 1.5rem;
|
|
323
|
-
padding: 0.
|
|
282
|
+
padding: 0.1rem 0.5rem;
|
|
324
283
|
transition: all 0.2s ease-in-out;
|
|
325
284
|
}
|
|
326
285
|
|
|
@@ -330,6 +289,35 @@
|
|
|
330
289
|
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
|
|
331
290
|
}
|
|
332
291
|
|
|
292
|
+
/* Aplica el color secundario de la marca al icono de ver archivos */
|
|
293
|
+
#view-files-button i {
|
|
294
|
+
color: var(--brand-secondary-color, #6c757d);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/* Estilo para mensajes sutiles del sistema (ej. abortado) */
|
|
298
|
+
.system-message {
|
|
299
|
+
color: var(--brand-secondary-color, #6c757d); /* Usa el color secundario o un gris por defecto */
|
|
300
|
+
font-style: italic;
|
|
301
|
+
font-size: 0.9rem;
|
|
302
|
+
display: flex;
|
|
303
|
+
align-items: center;
|
|
304
|
+
justify-content: start;
|
|
305
|
+
margin: 10px 0;
|
|
306
|
+
padding: 10px;
|
|
307
|
+
opacity: 0.8;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
#prompt-assistant-collapse .card {
|
|
312
|
+
border-radius: 1.5rem; /* Mismo radio que el chat-input-bar */
|
|
313
|
+
border: 1px solid var(--brand-prompt-assistant-border, #dee2e6); /* Mismo borde que el chat-input-bar */
|
|
314
|
+
box-shadow: none; /* Eliminamos la sombra por defecto del card */
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
#prompt-assistant-collapse.show .card {
|
|
318
|
+
margin-bottom: 12px !important; /* Anula el mb-2 (8px) para añadir un poco más de espacio */
|
|
319
|
+
}
|
|
320
|
+
|
|
333
321
|
/* 4. El textarea "invisible" en el centro */
|
|
334
322
|
.chat-textarea {
|
|
335
323
|
flex-grow: 1;
|
|
@@ -341,35 +329,42 @@
|
|
|
341
329
|
min-height: 38px;
|
|
342
330
|
}
|
|
343
331
|
|
|
344
|
-
/* 5. Estilo UNIFICADO para
|
|
332
|
+
/* 5. NUEVO Estilo UNIFICADO para los enlaces de iconos de acción */
|
|
333
|
+
.action-icon-style {
|
|
334
|
+
color: #6c757d; /* Color gris estándar por defecto */
|
|
335
|
+
transition: opacity 0.2s ease-in-out;
|
|
336
|
+
}
|
|
337
|
+
.action-icon-style:hover {
|
|
338
|
+
opacity: 0.75; /* Efecto hover sutil */
|
|
339
|
+
}
|
|
345
340
|
.action-icon-style i {
|
|
346
|
-
|
|
347
|
-
font-size: 1.5rem; /* Tamaño uniforme */
|
|
341
|
+
font-size: 1.5rem;
|
|
348
342
|
vertical-align: middle;
|
|
349
|
-
transition: color 0.2s ease-in-out;
|
|
350
343
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
}
|
|
354
|
-
/* Aplica también a los iconos de la barra de entrada */
|
|
344
|
+
|
|
345
|
+
/* Aplica a los iconos de la barra de entrada inferior */
|
|
355
346
|
.chat-input-bar .d-flex a i {
|
|
356
347
|
font-size: 1.5rem;
|
|
357
348
|
vertical-align: middle;
|
|
358
349
|
color: #6c757d;
|
|
359
350
|
transition: color 0.2s ease-in-out;
|
|
360
351
|
}
|
|
352
|
+
|
|
353
|
+
/* Anulación específica para el icono de la varita mágica */
|
|
354
|
+
.chat-input-bar a[href="#prompt-assistant-collapse"] i {
|
|
355
|
+
color: var(--brand-prompt-assistant-icon-color, #6c757d);
|
|
356
|
+
}
|
|
357
|
+
|
|
361
358
|
.chat-input-bar .d-flex a:hover i {
|
|
362
359
|
color: #343a40;
|
|
363
360
|
}
|
|
364
361
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
color: #0d6efd !important; /* Azul (importante para anular) */
|
|
369
|
-
font-size: 1.7rem !important; /* Ligeramente más grande para mayor énfasis */
|
|
362
|
+
/* 6. Anulación específica para el botón de ENVIAR usando su ID (Máxima Prioridad) */
|
|
363
|
+
#send-button i {
|
|
364
|
+
font-size: 1.7rem; /* Ligeramente más grande */
|
|
370
365
|
}
|
|
371
|
-
|
|
372
|
-
|
|
366
|
+
#send-button:hover i {
|
|
367
|
+
filter: brightness(85%); /* Efecto hover genérico que funciona con cualquier color */
|
|
373
368
|
}
|
|
374
369
|
|
|
375
370
|
/* 7. Estilo para el botón de enviar cuando está deshabilitado */
|
|
@@ -384,318 +379,145 @@
|
|
|
384
379
|
}
|
|
385
380
|
}
|
|
386
381
|
|
|
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
382
|
.filepond--credits {
|
|
411
383
|
display: none; /* Ocultar créditos de FilePond */
|
|
412
384
|
}
|
|
413
385
|
|
|
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
386
|
/* Estilo para el input de datos específicos cuando tiene contenido */
|
|
439
387
|
.specific-data-input.has-content {
|
|
440
|
-
background-color: #e9f3ed !important;
|
|
441
|
-
border-color: #198754 !important;
|
|
442
|
-
border-width: 2px !important;
|
|
443
|
-
color: #0a5833 !important;
|
|
444
|
-
font-weight: 500 !important;
|
|
445
|
-
box-shadow: 0 1px 4px rgba(25, 135, 84, 0.2) !important;
|
|
388
|
+
background-color: #e9f3ed !important;
|
|
389
|
+
border-color: #198754 !important;
|
|
390
|
+
border-width: 2px !important;
|
|
391
|
+
color: #0a5833 !important;
|
|
392
|
+
font-weight: 500 !important;
|
|
393
|
+
box-shadow: 0 1px 4px rgba(25, 135, 84, 0.2) !important;
|
|
446
394
|
}
|
|
447
395
|
|
|
448
396
|
/* Ajuste para la etiqueta flotante */
|
|
449
397
|
.specific-data-input.has-content + label {
|
|
450
|
-
color: #0a5833 !important;
|
|
398
|
+
color: #0a5833 !important;
|
|
451
399
|
}
|
|
452
400
|
|
|
453
401
|
/* Estilo para el botón de limpiar */
|
|
454
402
|
.clear-specific-data-button {
|
|
455
403
|
position: absolute;
|
|
456
404
|
top: 50%;
|
|
457
|
-
right: 15px;
|
|
458
|
-
transform: translateY(-50%);
|
|
459
|
-
z-index: 5;
|
|
405
|
+
right: 15px;
|
|
406
|
+
transform: translateY(-50%);
|
|
407
|
+
z-index: 5;
|
|
460
408
|
padding: 0.25rem 0.5rem;
|
|
461
409
|
color: #6c757d;
|
|
462
410
|
background-color: transparent;
|
|
463
|
-
border: none;
|
|
411
|
+
border: none;
|
|
464
412
|
}
|
|
465
413
|
|
|
466
414
|
.clear-specific-data-button:hover {
|
|
467
415
|
color: #212529;
|
|
468
416
|
}
|
|
469
417
|
|
|
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
418
|
.dropdown-menu-soft {
|
|
508
|
-
background-color: #f8f9fa;
|
|
509
|
-
border-color: #dee2e6;
|
|
419
|
+
background-color: var(--brand-prompt-assistant-dropdown-bg, #f8f9fa);
|
|
420
|
+
border-color: var(--brand-prompt-assistant-border, #dee2e6);
|
|
510
421
|
}
|
|
511
422
|
|
|
512
|
-
/* Estilo y efecto para cada opción de la lista */
|
|
513
423
|
.dropdown-menu-soft .dropdown-item {
|
|
514
|
-
transition: all 0.15s ease-in-out;
|
|
424
|
+
transition: all 0.15s ease-in-out;
|
|
515
425
|
}
|
|
516
426
|
|
|
517
427
|
.dropdown-menu-soft .dropdown-item:hover,
|
|
518
428
|
.dropdown-menu-soft .dropdown-item:focus {
|
|
519
|
-
color: #ffffff;
|
|
520
|
-
background-color: #495057;
|
|
521
|
-
padding-left: 1.5rem;
|
|
522
|
-
transition: all 0.15s ease-in-out;
|
|
429
|
+
color: var(--brand-prompt-assistant-item-hover-text, #ffffff);
|
|
430
|
+
background-color: var(--brand-prompt-assistant-item-hover-bg, #495057);
|
|
431
|
+
padding-left: 1.5rem;
|
|
432
|
+
transition: all 0.15s ease-in-out;
|
|
523
433
|
}
|
|
524
434
|
|
|
525
|
-
/* Estilo para las cabeceras de las categorías dentro del menú */
|
|
526
435
|
.dropdown-menu-soft .dropdown-header {
|
|
527
|
-
background-color: #495057;
|
|
528
|
-
color: #ffffff;
|
|
529
|
-
font-weight: 600;
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
font-size: 0.85rem; /* Tamaño de fuente ajustado */
|
|
536
|
-
text-transform: none; /* Texto en formato normal para una apariencia más limpia */
|
|
436
|
+
background-color: var(--brand-prompt-assistant-header-bg, #495057);
|
|
437
|
+
color: var(--brand-prompt-assistant-header-text, #ffffff);
|
|
438
|
+
font-weight: 600;
|
|
439
|
+
margin: 4px;
|
|
440
|
+
padding: 0.4rem 1rem;
|
|
441
|
+
border-radius: 4px;
|
|
442
|
+
font-size: 0.85rem;
|
|
443
|
+
text-transform: none;
|
|
537
444
|
letter-spacing: normal;
|
|
538
|
-
border-bottom: none;
|
|
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;
|
|
445
|
+
border-bottom: none;
|
|
546
446
|
}
|
|
547
447
|
|
|
548
448
|
#clear-selection-button {
|
|
549
449
|
position: absolute;
|
|
550
450
|
top: 50%;
|
|
551
|
-
/* Lo movemos 45px desde la derecha para que no se superponga con la flecha del dropdown */
|
|
552
451
|
right: 45px;
|
|
553
452
|
transform: translateY(-50%);
|
|
554
|
-
z-index: 5;
|
|
453
|
+
z-index: 5;
|
|
555
454
|
padding: 0.25rem 0.5rem;
|
|
556
|
-
color: #6c757d;
|
|
455
|
+
color: #6c757d;
|
|
557
456
|
background-color: transparent;
|
|
558
457
|
}
|
|
559
458
|
|
|
560
459
|
#clear-selection-button:hover {
|
|
561
|
-
color: #212529;
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
/* Estilos para el modal de feedback */
|
|
566
|
-
.icon-spaced {
|
|
567
|
-
margin-right: 10px;
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
.modal-title{
|
|
571
|
-
font-size: 20px;
|
|
572
|
-
font-weight: bold;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
.text-muted{
|
|
576
|
-
font-size:16px;
|
|
577
|
-
text-align: justify;
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
.feedback-text{
|
|
581
|
-
font-size: 16px;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
/* Estilos para el modal de historial */
|
|
585
|
-
|
|
586
|
-
.thead-dark th{
|
|
587
|
-
font-size: 16px;
|
|
588
|
-
font-weight: bold;
|
|
460
|
+
color: #212529;
|
|
589
461
|
}
|
|
590
462
|
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
width: 5%; /* Columna del número */
|
|
463
|
+
#send-button i {
|
|
464
|
+
color: var(--brand-send-button-color);
|
|
594
465
|
}
|
|
595
466
|
|
|
596
|
-
|
|
597
|
-
width: 20%; /* Columna de la fecha */
|
|
598
|
-
}
|
|
467
|
+
/* Estilos personalizados para Toastr usando las variables de Branding */
|
|
599
468
|
|
|
600
|
-
|
|
601
|
-
|
|
469
|
+
/* --- Toast de Información (Usa el color primario de la marca) --- */
|
|
470
|
+
.toast-info {
|
|
471
|
+
/* ¡Importante! Usamos las variables CSS de tu BrandingService */
|
|
472
|
+
background-color: var(--brand-primary-color) !important;
|
|
473
|
+
color: var(--brand-text-on-primary) !important;
|
|
474
|
+
opacity: 0.95 !important;
|
|
602
475
|
}
|
|
603
|
-
|
|
604
|
-
/*
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
justify-content: center;
|
|
608
|
-
align-items: center;
|
|
609
|
-
width: 100%;
|
|
610
|
-
gap: 12px;
|
|
476
|
+
.toast-info .toast-progress {
|
|
477
|
+
/* Usamos un color ligeramente más oscuro o una variante,
|
|
478
|
+
pero para simplificar, podemos empezar con el mismo */
|
|
479
|
+
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
611
480
|
}
|
|
612
481
|
|
|
613
|
-
/*
|
|
614
|
-
.
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
flex-direction: column;
|
|
619
|
-
justify-content: center;
|
|
620
|
-
align-items: center;
|
|
621
|
-
gap: 5px;
|
|
622
|
-
width: 100%;
|
|
482
|
+
/* --- Toast de Éxito (Usa el verde por defecto o uno de marca si lo defines) --- */
|
|
483
|
+
.toast-success {
|
|
484
|
+
background-color: #198754 !important; /* Puedes crear una variable --brand-success-color si quieres */
|
|
485
|
+
color: #ffffff !important;
|
|
486
|
+
opacity: 0.95 !important;
|
|
623
487
|
}
|
|
624
|
-
|
|
625
|
-
.
|
|
626
|
-
text-align: center;
|
|
627
|
-
margin: 2px 0 0 0;
|
|
628
|
-
display: flex;
|
|
629
|
-
flex-direction: row;
|
|
630
|
-
justify-content: center;
|
|
631
|
-
align-items: center;
|
|
632
|
-
gap: 10px;
|
|
633
|
-
width: 100%;
|
|
488
|
+
.toast-success .toast-progress {
|
|
489
|
+
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
634
490
|
}
|
|
635
491
|
|
|
636
|
-
/* ---
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
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 */
|
|
492
|
+
/* --- Toast de Error (Usa el color de peligro de la marca) --- */
|
|
493
|
+
.toast-error {
|
|
494
|
+
background-color: var(--brand-danger-color) !important;
|
|
495
|
+
color: var(--brand-text-on-primary) !important; /* Asumimos texto blanco sobre el color de peligro */
|
|
496
|
+
opacity: 0.95 !important;
|
|
645
497
|
}
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
.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 */
|
|
498
|
+
.toast-error .toast-progress {
|
|
499
|
+
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
653
500
|
}
|
|
654
501
|
|
|
655
|
-
/*
|
|
656
|
-
.
|
|
657
|
-
|
|
502
|
+
/* Opcional: Estilo para el botón de cierre para que contraste bien */
|
|
503
|
+
.toast-close-button {
|
|
504
|
+
color: var(--brand-text-on-primary) !important;
|
|
505
|
+
text-shadow: none !important;
|
|
658
506
|
}
|
|
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
|
-
.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` */
|
|
669
|
-
font-style: normal;
|
|
670
|
-
font-weight: normal;
|
|
671
|
-
line-height: 1;
|
|
672
|
-
-webkit-font-smoothing: antialiased;
|
|
507
|
+
.toast-close-button:hover {
|
|
508
|
+
opacity: 0.8;
|
|
673
509
|
}
|
|
674
510
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
511
|
+
.alert-branded-danger {
|
|
512
|
+
background-color: var(--brand-danger-bg);
|
|
513
|
+
color: var(--brand-danger-text);
|
|
514
|
+
border-color: var(--brand-danger-border);
|
|
679
515
|
}
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
.
|
|
683
|
-
|
|
684
|
-
color: #ffc107; /* Color dorado estándar de Bootstrap */
|
|
516
|
+
/* Asegura que el texto fuerte y los enlaces dentro de la alerta también tomen el color correcto */
|
|
517
|
+
.alert-branded-danger strong,
|
|
518
|
+
.alert-branded-danger .alert-link {
|
|
519
|
+
color: inherit;
|
|
685
520
|
}
|
|
686
521
|
|
|
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
522
|
|
|
694
523
|
|
|
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 */
|
|
701
|
-
}
|