iatoolkit 0.11.0__py3-none-any.whl → 0.71.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.
- iatoolkit/__init__.py +2 -6
- iatoolkit/base_company.py +9 -29
- iatoolkit/cli_commands.py +1 -1
- iatoolkit/common/routes.py +96 -52
- iatoolkit/common/session_manager.py +2 -1
- iatoolkit/common/util.py +17 -27
- iatoolkit/company_registry.py +1 -2
- iatoolkit/iatoolkit.py +97 -53
- iatoolkit/infra/llm_client.py +15 -20
- iatoolkit/infra/llm_proxy.py +38 -10
- iatoolkit/infra/openai_adapter.py +1 -1
- iatoolkit/infra/redis_session_manager.py +48 -2
- iatoolkit/locales/en.yaml +167 -0
- iatoolkit/locales/es.yaml +163 -0
- iatoolkit/repositories/database_manager.py +23 -3
- iatoolkit/repositories/document_repo.py +1 -1
- iatoolkit/repositories/models.py +35 -10
- iatoolkit/repositories/profile_repo.py +3 -2
- iatoolkit/repositories/vs_repo.py +26 -20
- iatoolkit/services/auth_service.py +193 -0
- iatoolkit/services/branding_service.py +70 -25
- iatoolkit/services/company_context_service.py +155 -0
- iatoolkit/services/configuration_service.py +133 -0
- iatoolkit/services/dispatcher_service.py +80 -105
- iatoolkit/services/document_service.py +5 -2
- iatoolkit/services/embedding_service.py +146 -0
- iatoolkit/services/excel_service.py +30 -26
- iatoolkit/services/file_processor_service.py +4 -12
- iatoolkit/services/history_service.py +7 -16
- iatoolkit/services/i18n_service.py +104 -0
- iatoolkit/services/jwt_service.py +18 -29
- iatoolkit/services/language_service.py +83 -0
- iatoolkit/services/load_documents_service.py +100 -113
- iatoolkit/services/mail_service.py +9 -4
- iatoolkit/services/profile_service.py +152 -76
- iatoolkit/services/prompt_manager_service.py +20 -16
- iatoolkit/services/query_service.py +208 -96
- iatoolkit/services/search_service.py +11 -4
- iatoolkit/services/sql_service.py +57 -25
- iatoolkit/services/tasks_service.py +1 -1
- iatoolkit/services/user_feedback_service.py +72 -34
- iatoolkit/services/user_session_context_service.py +112 -54
- iatoolkit/static/images/fernando.jpeg +0 -0
- iatoolkit/static/js/chat_feedback_button.js +80 -0
- iatoolkit/static/js/chat_help_content.js +124 -0
- iatoolkit/static/js/chat_history_button.js +110 -0
- iatoolkit/static/js/chat_logout_button.js +36 -0
- iatoolkit/static/js/chat_main.js +135 -222
- iatoolkit/static/js/chat_onboarding_button.js +103 -0
- iatoolkit/static/js/chat_prompt_manager.js +94 -0
- iatoolkit/static/js/chat_reload_button.js +35 -0
- iatoolkit/static/styles/chat_iatoolkit.css +289 -210
- iatoolkit/static/styles/chat_modal.css +63 -77
- iatoolkit/static/styles/chat_public.css +107 -0
- iatoolkit/static/styles/landing_page.css +182 -0
- iatoolkit/static/styles/onboarding.css +176 -0
- iatoolkit/system_prompts/query_main.prompt +5 -22
- iatoolkit/templates/_company_header.html +20 -0
- iatoolkit/templates/_login_widget.html +42 -0
- iatoolkit/templates/base.html +40 -20
- iatoolkit/templates/change_password.html +57 -36
- iatoolkit/templates/chat.html +180 -86
- iatoolkit/templates/chat_modals.html +138 -68
- iatoolkit/templates/error.html +44 -8
- iatoolkit/templates/forgot_password.html +40 -23
- iatoolkit/templates/index.html +145 -0
- iatoolkit/templates/login_simulation.html +45 -0
- iatoolkit/templates/onboarding_shell.html +107 -0
- iatoolkit/templates/signup.html +63 -65
- iatoolkit/views/base_login_view.py +91 -0
- iatoolkit/views/change_password_view.py +56 -31
- iatoolkit/views/embedding_api_view.py +65 -0
- iatoolkit/views/external_login_view.py +61 -28
- iatoolkit/views/{file_store_view.py → file_store_api_view.py} +10 -3
- iatoolkit/views/forgot_password_view.py +27 -21
- iatoolkit/views/help_content_api_view.py +54 -0
- iatoolkit/views/history_api_view.py +56 -0
- iatoolkit/views/home_view.py +50 -23
- iatoolkit/views/index_view.py +14 -0
- iatoolkit/views/init_context_api_view.py +74 -0
- iatoolkit/views/llmquery_api_view.py +58 -0
- iatoolkit/views/login_simulation_view.py +93 -0
- iatoolkit/views/login_view.py +130 -37
- iatoolkit/views/logout_api_view.py +49 -0
- iatoolkit/views/profile_api_view.py +46 -0
- iatoolkit/views/{prompt_view.py → prompt_api_view.py} +10 -10
- iatoolkit/views/signup_view.py +41 -36
- iatoolkit/views/{tasks_view.py → tasks_api_view.py} +10 -36
- iatoolkit/views/tasks_review_api_view.py +55 -0
- iatoolkit/views/user_feedback_api_view.py +60 -0
- iatoolkit/views/verify_user_view.py +34 -29
- {iatoolkit-0.11.0.dist-info → iatoolkit-0.71.2.dist-info}/METADATA +41 -23
- iatoolkit-0.71.2.dist-info/RECORD +122 -0
- iatoolkit-0.71.2.dist-info/licenses/LICENSE +21 -0
- 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_feedback.js +0 -115
- iatoolkit/static/js/chat_history.js +0 -117
- iatoolkit/static/styles/chat_info.css +0 -53
- iatoolkit/templates/header.html +0 -31
- iatoolkit/templates/home.html +0 -199
- iatoolkit/templates/login.html +0 -43
- iatoolkit/templates/test.html +0 -9
- iatoolkit/views/chat_token_request_view.py +0 -98
- iatoolkit/views/chat_view.py +0 -58
- iatoolkit/views/download_file_view.py +0 -58
- iatoolkit/views/external_chat_login_view.py +0 -95
- iatoolkit/views/history_view.py +0 -57
- iatoolkit/views/llmquery_view.py +0 -65
- iatoolkit/views/tasks_review_view.py +0 -83
- iatoolkit/views/user_feedback_view.py +0 -74
- iatoolkit-0.11.0.dist-info/RECORD +0 -110
- {iatoolkit-0.11.0.dist-info → iatoolkit-0.71.2.dist-info}/WHEEL +0 -0
- {iatoolkit-0.11.0.dist-info → iatoolkit-0.71.2.dist-info}/top_level.txt +0 -0
|
@@ -4,98 +4,135 @@
|
|
|
4
4
|
--bs-tooltip-opacity: 0.95; /* Ligeramente más opaco para mejor legibilidad */
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
|
|
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);
|
|
11
14
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
ul {
|
|
17
|
+
padding-left: 1.5rem; /* ~24px de indentación para la lista */
|
|
18
|
+
margin-bottom: 1rem; /* Espacio después de que termina la lista */
|
|
16
19
|
}
|
|
17
20
|
|
|
21
|
+
li {
|
|
22
|
+
margin-bottom: 0.5rem;
|
|
23
|
+
padding-left: 0.25rem; /* Pequeño espacio extra entre la viñeta y el texto */
|
|
24
|
+
}
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
padding: 1rem; /* Equivalente a p-3 de Bootstrap */
|
|
22
|
-
border: 1px solid #dee2e6; /* Borde estándar y sutil */
|
|
23
|
-
border-radius: 0.375rem; /* Borde redondeado estándar de Bootstrap */
|
|
24
|
-
box-shadow: 0 2px 8px rgba(0,0,0,0.06); /* Sombra suave y unificada */
|
|
26
|
+
.text-muted {
|
|
27
|
+
color: #64748b;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
|
-
/*
|
|
28
|
-
.
|
|
29
|
-
|
|
30
|
+
/* Estilos para botones con branding */
|
|
31
|
+
.btn-branded-primary {
|
|
32
|
+
background-color: var(--brand-primary-color);
|
|
33
|
+
border-color: var(--brand-primary-color);
|
|
34
|
+
color: var(--brand-text-on-primary);
|
|
35
|
+
}
|
|
36
|
+
.btn-branded-primary:hover {
|
|
37
|
+
background-color: var(--brand-text-on-primary);
|
|
38
|
+
color: var(--brand-primary-color);
|
|
39
|
+
border-color: var(--brand-primary-color);
|
|
30
40
|
}
|
|
31
41
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
.btn-branded-secondary {
|
|
43
|
+
background-color: var(--brand-secondary-color);
|
|
44
|
+
border-color: var(--brand-secondary-color);
|
|
45
|
+
color: var(--brand-text-on-secondary);
|
|
46
|
+
}
|
|
47
|
+
.btn-branded-secondary:hover {
|
|
48
|
+
background-color: var(--brand-text-on-secondary);
|
|
49
|
+
color: var(--brand-secondary-color);
|
|
50
|
+
border-color: var(--brand-secondary-color);
|
|
37
51
|
}
|
|
38
52
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
.chat-layout-container {
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
height: 100dvh;
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
padding-top: 1rem;
|
|
59
|
+
padding-bottom: 0.2rem;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
/* sección del encabezado en el chat principal */
|
|
64
|
+
.company-section {
|
|
65
|
+
border-radius: 0.375rem; /* Mismo radio que .chat-block para consistencia */
|
|
66
|
+
background-color: var(--brand-header-bg);
|
|
67
|
+
color: var(--brand-header-text);
|
|
42
68
|
}
|
|
43
69
|
|
|
44
70
|
/* Estilos para el contenedor del chat y mensajes para que exista scroll */
|
|
45
71
|
#chat-container {
|
|
46
|
-
|
|
72
|
+
flex-grow: 1;
|
|
47
73
|
overflow-y: auto;
|
|
48
74
|
display: flex;
|
|
49
75
|
flex-direction: column;
|
|
50
76
|
background-color: #fff; /* Fondo blanco para el contenedor del chat */
|
|
51
77
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
78
|
+
|
|
79
|
+
/* CSS para el chat principal */
|
|
80
|
+
/* esta clase defines los atributos de cada bloque */
|
|
81
|
+
.chat-block {
|
|
82
|
+
padding: 1rem;
|
|
83
|
+
border: 1px solid #dee2e6;
|
|
84
|
+
border-radius: 0.375rem; /* Borde redondeado estándar de Bootstrap */
|
|
85
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.06); /* Sombra suave y unificada */
|
|
56
86
|
}
|
|
57
87
|
|
|
58
|
-
/*
|
|
59
|
-
.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
88
|
+
/* El textarea "invisible" en el centro */
|
|
89
|
+
.chat-textarea {
|
|
90
|
+
flex-grow: 1;
|
|
91
|
+
background: transparent !important;
|
|
92
|
+
border: none !important;
|
|
93
|
+
box-shadow: none !important;
|
|
94
|
+
resize: none;
|
|
95
|
+
max-height: 150px;
|
|
96
|
+
min-height: 38px;
|
|
63
97
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
98
|
+
|
|
99
|
+
/* La barra "cápsula" que envuelve el texto y los iconos */
|
|
100
|
+
.chat-input-bar {
|
|
101
|
+
background-color: #ffffff;
|
|
102
|
+
border: 1px solid #dee2e6;
|
|
103
|
+
border-radius: 1rem;
|
|
104
|
+
padding: 0.1rem 0.5rem;
|
|
105
|
+
transition: all 0.2s ease-in-out;
|
|
67
106
|
}
|
|
68
|
-
|
|
69
|
-
|
|
107
|
+
|
|
108
|
+
/* Efecto de foco para toda la barra */
|
|
109
|
+
.chat-input-bar:focus-within {
|
|
110
|
+
border-color: #86b7fe;
|
|
111
|
+
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
|
|
70
112
|
}
|
|
71
|
-
/*
|
|
72
|
-
.
|
|
73
|
-
|
|
74
|
-
align-items: center;
|
|
75
|
-
justify-content: space-between;
|
|
76
|
-
width: 100%;
|
|
113
|
+
/* La caja principal que envuelve toda el área de entrada */
|
|
114
|
+
.input-area {
|
|
115
|
+
background-color: var(--brand-prompt-assistant-bg, #f8f9fa);
|
|
77
116
|
}
|
|
78
117
|
|
|
79
|
-
.modal-header .modal-title {
|
|
80
|
-
margin: 0;
|
|
81
|
-
padding: 0;
|
|
82
|
-
flex: 1;
|
|
83
|
-
}
|
|
84
118
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
119
|
+
#question {
|
|
120
|
+
width: 100%;
|
|
121
|
+
font-size: 15px;
|
|
122
|
+
background: #f8f9fa;
|
|
123
|
+
color: #202123;
|
|
124
|
+
border: 1px solid #d1d5db;
|
|
125
|
+
transition: all 0.3s ease-in-out;
|
|
89
126
|
}
|
|
90
127
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
color: #
|
|
128
|
+
#question:focus {
|
|
129
|
+
outline: none;
|
|
130
|
+
border-color: #80bdff;
|
|
131
|
+
box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
|
|
94
132
|
}
|
|
95
133
|
|
|
96
134
|
/* Estilo del mensaje ingresado por el usuario */
|
|
97
135
|
#chat-container .message {
|
|
98
|
-
margin-top: 10px;
|
|
99
136
|
max-width: 75%;
|
|
100
137
|
min-width: fit-content;
|
|
101
138
|
width: fit-content;
|
|
@@ -105,90 +142,129 @@
|
|
|
105
142
|
align-items: center;
|
|
106
143
|
align-self: flex-end;
|
|
107
144
|
text-align: left;
|
|
108
|
-
padding:
|
|
145
|
+
padding-left: 0.5em;
|
|
146
|
+
color: #202123;
|
|
109
147
|
font-family: Arial, sans-serif;
|
|
110
148
|
font-size: 15px;
|
|
111
|
-
line-height: 1.
|
|
112
|
-
color: #
|
|
113
|
-
|
|
114
|
-
|
|
149
|
+
line-height: 1.6;
|
|
150
|
+
background-color: #f7f7f8;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.answer-section, .error-section {
|
|
154
|
+
max-width: 100%;
|
|
155
|
+
word-wrap: break-word;
|
|
156
|
+
margin-bottom: 10px;
|
|
115
157
|
}
|
|
116
158
|
|
|
117
159
|
|
|
118
160
|
.answer-section {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
161
|
+
align-self: flex-start;
|
|
162
|
+
max-width: 75%;
|
|
163
|
+
padding: 10px 15px;
|
|
164
|
+
font-family: "Inter", Arial, sans-serif;
|
|
165
|
+
font-size: 15px;
|
|
122
166
|
line-height: 1.6;
|
|
123
167
|
word-wrap: break-word;
|
|
124
|
-
padding-top: 0.5em;
|
|
125
168
|
}
|
|
126
169
|
|
|
127
170
|
.error-section {
|
|
128
171
|
align-self: flex-start;
|
|
129
172
|
max-width: 75%;
|
|
130
|
-
min-width:
|
|
131
|
-
|
|
132
|
-
|
|
173
|
+
min-width: 250px;
|
|
174
|
+
|
|
175
|
+
color: var(--brand-danger-text, #842029); /* Color de texto de error de la marca */
|
|
176
|
+
background-color: var(--brand-danger-bg, #f8d7da); /* Fondo de error de la marca */
|
|
177
|
+
border: 1px solid var(--brand-danger-border, #f5c2c7); /* Borde de error de la marca */
|
|
178
|
+
font-style: italic;
|
|
179
|
+
font-size: 0.9rem;
|
|
133
180
|
display: flex;
|
|
134
|
-
align-items:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
font-family: Arial, sans-serif;
|
|
142
|
-
font-size: 15px;
|
|
143
|
-
line-height: 1.5;
|
|
144
|
-
word-wrap: break-word;
|
|
145
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
|
181
|
+
align-items: center;
|
|
182
|
+
justify-content: start;
|
|
183
|
+
margin: 10px 0;
|
|
184
|
+
padding: 10px 15px; /* Un poco más de padding lateral */
|
|
185
|
+
opacity: 0.9;
|
|
186
|
+
border-radius: 8px; /* Bordes redondeados */
|
|
187
|
+
word-wrap: break-word; /* Asegura que el texto no se desborde */
|
|
146
188
|
}
|
|
147
189
|
|
|
148
190
|
.error-section i {
|
|
149
|
-
color: #
|
|
150
|
-
font-size: 1.
|
|
151
|
-
|
|
191
|
+
color: var(--brand-danger-color, #dc3545); /* Color del icono, el rojo principal */
|
|
192
|
+
font-size: 1.2rem; /* Tamaño del icono */
|
|
193
|
+
margin-right: 10px; /* Espacio entre el icono y el texto */
|
|
194
|
+
flex-shrink: 0; /* Evita que el icono se encoja */
|
|
152
195
|
}
|
|
153
196
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
197
|
+
/* Estilo para mensajes sutiles del sistema (ej. abortado) */
|
|
198
|
+
.system-message {
|
|
199
|
+
color: var(--brand-secondary-color, #6c757d); /* Usa el color secundario o un gris por defecto */
|
|
200
|
+
font-style: italic;
|
|
201
|
+
font-size: 0.9rem;
|
|
202
|
+
display: flex;
|
|
203
|
+
align-items: center;
|
|
204
|
+
justify-content: start;
|
|
205
|
+
margin: 10px 0;
|
|
206
|
+
padding: 10px;
|
|
207
|
+
opacity: 0.8;
|
|
161
208
|
}
|
|
162
209
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
210
|
+
/* Spinner */
|
|
211
|
+
.spinning {
|
|
212
|
+
animation: spin 1s linear infinite;
|
|
213
|
+
font-size: 15px; /* Tamaño del ícono */
|
|
214
|
+
display: inline-block;
|
|
215
|
+
}
|
|
216
|
+
#spinner .spinner-border {
|
|
217
|
+
color: var(--brand-primary-color);
|
|
167
218
|
}
|
|
168
219
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
220
|
+
@keyframes spin {
|
|
221
|
+
0% { transform: rotate(0deg); }
|
|
222
|
+
100% { transform: rotate(360deg); }
|
|
172
223
|
}
|
|
173
224
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
225
|
+
|
|
226
|
+
/* Estilos para el modal de archivos y ordenar icono */
|
|
227
|
+
.list-group-item {
|
|
228
|
+
display: flex;
|
|
229
|
+
justify-content: space-between;
|
|
230
|
+
align-items: center;
|
|
231
|
+
|
|
232
|
+
border: none;
|
|
233
|
+
/* separador sutil solo en la parte inferior */
|
|
234
|
+
border-bottom: 1px solid #e9ecef; /* Un gris muy claro estándar */
|
|
235
|
+
padding: 0.5rem 0.75rem;
|
|
236
|
+
|
|
237
|
+
/* animación suave para el cambio de fondo */
|
|
238
|
+
transition: background-color 0.2s ease-in-out;
|
|
181
239
|
}
|
|
182
240
|
|
|
183
|
-
/*
|
|
184
|
-
.
|
|
185
|
-
|
|
186
|
-
|
|
241
|
+
/* Al pasar el ratón, cambiamos el fondo para dar feedback */
|
|
242
|
+
.list-group-item:hover {
|
|
243
|
+
background-color: #f8f9fa; /* Un gris de fondo muy sutil */
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Eliminamos el borde del último elemento para un acabado limpio */
|
|
247
|
+
.list-group-item:last-child {
|
|
248
|
+
border-bottom: none;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.file-name-modal {
|
|
252
|
+
flex: 1;
|
|
253
|
+
margin-right: 10px;
|
|
254
|
+
}
|
|
255
|
+
.remove-file-btn {
|
|
256
|
+
flex-shrink: 0;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
/* Aplica el color secundario de la marca al icono de ver archivos */
|
|
261
|
+
#view-files-button i {
|
|
262
|
+
color: var(--brand-secondary-color, #6c757d);
|
|
187
263
|
}
|
|
188
264
|
|
|
189
265
|
#prompt-assistant-collapse .card {
|
|
190
|
-
border-radius:
|
|
191
|
-
border: 1px solid #dee2e6; /* Mismo borde que el chat-input-bar */
|
|
266
|
+
border-radius: 1rem; /* Mismo radio que el chat-input-bar */
|
|
267
|
+
border: 1px solid var(--brand-prompt-assistant-border, #dee2e6); /* Mismo borde que el chat-input-bar */
|
|
192
268
|
box-shadow: none; /* Eliminamos la sombra por defecto del card */
|
|
193
269
|
}
|
|
194
270
|
|
|
@@ -196,18 +272,8 @@
|
|
|
196
272
|
margin-bottom: 12px !important; /* Anula el mb-2 (8px) para añadir un poco más de espacio */
|
|
197
273
|
}
|
|
198
274
|
|
|
199
|
-
/* 4. El textarea "invisible" en el centro */
|
|
200
|
-
.chat-textarea {
|
|
201
|
-
flex-grow: 1;
|
|
202
|
-
background: transparent !important;
|
|
203
|
-
border: none !important;
|
|
204
|
-
box-shadow: none !important;
|
|
205
|
-
resize: none;
|
|
206
|
-
max-height: 150px;
|
|
207
|
-
min-height: 38px;
|
|
208
|
-
}
|
|
209
275
|
|
|
210
|
-
/*
|
|
276
|
+
/* Estilo UNIFICADO para los enlaces de iconos de acción */
|
|
211
277
|
.action-icon-style {
|
|
212
278
|
color: #6c757d; /* Color gris estándar por defecto */
|
|
213
279
|
transition: opacity 0.2s ease-in-out;
|
|
@@ -227,13 +293,18 @@
|
|
|
227
293
|
color: #6c757d;
|
|
228
294
|
transition: color 0.2s ease-in-out;
|
|
229
295
|
}
|
|
296
|
+
|
|
297
|
+
/* Anulación específica para el icono de la varita mágica */
|
|
298
|
+
.chat-input-bar a[href="#prompt-assistant-collapse"] i {
|
|
299
|
+
color: var(--brand-prompt-assistant-icon-color, #6c757d);
|
|
300
|
+
}
|
|
301
|
+
|
|
230
302
|
.chat-input-bar .d-flex a:hover i {
|
|
231
303
|
color: #343a40;
|
|
232
304
|
}
|
|
233
305
|
|
|
234
|
-
/*
|
|
306
|
+
/* Anulación específica para el botón de ENVIAR usando su ID (Máxima Prioridad) */
|
|
235
307
|
#send-button i {
|
|
236
|
-
color: var(--brand-send-button-color); /* Usa la variable de branding */
|
|
237
308
|
font-size: 1.7rem; /* Ligeramente más grande */
|
|
238
309
|
}
|
|
239
310
|
#send-button:hover i {
|
|
@@ -246,12 +317,6 @@
|
|
|
246
317
|
pointer-events: none; /* Lo hace no-clicable */
|
|
247
318
|
}
|
|
248
319
|
|
|
249
|
-
@media (max-width: 768px) {
|
|
250
|
-
#chat-container {
|
|
251
|
-
height: 68vh;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
320
|
.filepond--credits {
|
|
256
321
|
display: none; /* Ocultar créditos de FilePond */
|
|
257
322
|
}
|
|
@@ -289,8 +354,8 @@
|
|
|
289
354
|
}
|
|
290
355
|
|
|
291
356
|
.dropdown-menu-soft {
|
|
292
|
-
background-color: #f8f9fa;
|
|
293
|
-
border-color: #dee2e6;
|
|
357
|
+
background-color: var(--brand-prompt-assistant-dropdown-bg, #f8f9fa);
|
|
358
|
+
border-color: var(--brand-prompt-assistant-border, #dee2e6);
|
|
294
359
|
}
|
|
295
360
|
|
|
296
361
|
.dropdown-menu-soft .dropdown-item {
|
|
@@ -299,15 +364,15 @@
|
|
|
299
364
|
|
|
300
365
|
.dropdown-menu-soft .dropdown-item:hover,
|
|
301
366
|
.dropdown-menu-soft .dropdown-item:focus {
|
|
302
|
-
color: #ffffff;
|
|
303
|
-
background-color: #495057;
|
|
367
|
+
color: var(--brand-prompt-assistant-item-hover-text, #ffffff);
|
|
368
|
+
background-color: var(--brand-prompt-assistant-item-hover-bg, #495057);
|
|
304
369
|
padding-left: 1.5rem;
|
|
305
370
|
transition: all 0.15s ease-in-out;
|
|
306
371
|
}
|
|
307
372
|
|
|
308
373
|
.dropdown-menu-soft .dropdown-header {
|
|
309
|
-
background-color: #495057;
|
|
310
|
-
color: #ffffff;
|
|
374
|
+
background-color: var(--brand-prompt-assistant-header-bg, #495057);
|
|
375
|
+
color: var(--brand-prompt-assistant-header-text, #ffffff);
|
|
311
376
|
font-weight: 600;
|
|
312
377
|
margin: 4px;
|
|
313
378
|
padding: 0.4rem 1rem;
|
|
@@ -318,6 +383,30 @@
|
|
|
318
383
|
border-bottom: none;
|
|
319
384
|
}
|
|
320
385
|
|
|
386
|
+
/* estilos para el selector de prompts */
|
|
387
|
+
.prompt-select-button {
|
|
388
|
+
color: #202123;
|
|
389
|
+
border: 2px solid var(--brand-primary-color);
|
|
390
|
+
border-radius: 0.25rem; /* Estilos de botón estándar */
|
|
391
|
+
padding: 0.5rem 1rem;
|
|
392
|
+
cursor: pointer;
|
|
393
|
+
text-align: center;
|
|
394
|
+
font-weight: 500;
|
|
395
|
+
|
|
396
|
+
/* Transición suave para el cambio en hover */
|
|
397
|
+
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.prompt-select-button:hover {
|
|
401
|
+
background-color: var(--brand-primary-color);
|
|
402
|
+
color: var(--brand-text-on-primary);
|
|
403
|
+
|
|
404
|
+
/* Marca el borde con un glow limpio */
|
|
405
|
+
border-color: var(--brand-primary-color);
|
|
406
|
+
box-shadow: 0 0 0 3px rgba( var(--brand-primary-rgb), 0.25 );
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/* estilo de la x que limpia el prompt seleccionado */
|
|
321
410
|
#clear-selection-button {
|
|
322
411
|
position: absolute;
|
|
323
412
|
top: 50%;
|
|
@@ -330,95 +419,85 @@
|
|
|
330
419
|
}
|
|
331
420
|
|
|
332
421
|
#clear-selection-button:hover {
|
|
333
|
-
color: #
|
|
422
|
+
color: #ffffff;
|
|
423
|
+
background-color: #6c757d;
|
|
424
|
+
border-radius: 0.25rem;
|
|
334
425
|
}
|
|
335
426
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
.icon-spaced {
|
|
339
|
-
margin-right: 10px;
|
|
427
|
+
#send-button i {
|
|
428
|
+
color: var(--brand-send-button-color);
|
|
340
429
|
}
|
|
341
430
|
|
|
342
|
-
|
|
343
|
-
font-size: 20px;
|
|
344
|
-
font-weight: bold;
|
|
345
|
-
}
|
|
431
|
+
/* Estilos personalizados para Toastr usando las variables de Branding */
|
|
346
432
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
433
|
+
/* --- Toast de Información (Usa el color primario de la marca) --- */
|
|
434
|
+
.toast-info {
|
|
435
|
+
/* ¡Importante! Usamos las variables CSS de tu BrandingService */
|
|
436
|
+
background-color: var(--brand-primary-color) !important;
|
|
437
|
+
color: var(--brand-text-on-primary) !important;
|
|
438
|
+
opacity: 0.95 !important;
|
|
350
439
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
440
|
+
.toast-info .toast-progress {
|
|
441
|
+
/* Usamos un color ligeramente más oscuro o una variante,
|
|
442
|
+
pero para simplificar, podemos empezar con el mismo */
|
|
443
|
+
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
354
444
|
}
|
|
355
445
|
|
|
356
|
-
/*
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
446
|
+
/* --- Toast de Éxito (Usa el verde por defecto o uno de marca si lo defines) --- */
|
|
447
|
+
.toast-success {
|
|
448
|
+
background-color: #198754 !important; /* Puedes crear una variable --brand-success-color si quieres */
|
|
449
|
+
color: #ffffff !important;
|
|
450
|
+
opacity: 0.95 !important;
|
|
361
451
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
#history-content .table td:nth-child(2) { width: 20%; }
|
|
365
|
-
#history-content .table td:nth-child(3) { width: auto; }
|
|
366
|
-
|
|
367
|
-
/* Contenedor de calificación con estrellas */
|
|
368
|
-
.rating-container {
|
|
369
|
-
text-align: center;
|
|
370
|
-
margin: 10px 0 0 0;
|
|
371
|
-
display: flex;
|
|
372
|
-
flex-direction: column;
|
|
373
|
-
justify-content: center;
|
|
374
|
-
align-items: center;
|
|
375
|
-
gap: 5px;
|
|
376
|
-
width: 100%;
|
|
452
|
+
.toast-success .toast-progress {
|
|
453
|
+
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
377
454
|
}
|
|
378
455
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
width: 100%;
|
|
456
|
+
/* --- Toast de Error (Usa el color de peligro de la marca) --- */
|
|
457
|
+
.toast-error{
|
|
458
|
+
background-color: var(--brand-danger-color) !important;
|
|
459
|
+
color: var(--brand-text-on-primary) !important; /* Asumimos texto blanco sobre el color de peligro */
|
|
460
|
+
opacity: 0.95 !important;
|
|
461
|
+
}
|
|
462
|
+
.toast-error .toast-progress {
|
|
463
|
+
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
388
464
|
}
|
|
389
465
|
|
|
390
|
-
/*
|
|
391
|
-
.
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
gap: 5px;
|
|
395
|
-
margin-bottom: 15px;
|
|
396
|
-
padding-top: 5px;
|
|
397
|
-
}
|
|
398
|
-
.star {
|
|
399
|
-
font-size: 2rem;
|
|
400
|
-
color: #adb5bd;
|
|
401
|
-
cursor: pointer;
|
|
402
|
-
transition: color 0.2s, transform 0.2s;
|
|
466
|
+
/* Opcional: Estilo para el botón de cierre para que contraste bien */
|
|
467
|
+
.toast-close-button {
|
|
468
|
+
color: var(--brand-text-on-primary) !important;
|
|
469
|
+
text-shadow: none !important;
|
|
403
470
|
}
|
|
404
|
-
.
|
|
405
|
-
|
|
471
|
+
.toast-close-button:hover {
|
|
472
|
+
opacity: 0.8;
|
|
406
473
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
line-height: 1;
|
|
413
|
-
-webkit-font-smoothing: antialiased;
|
|
474
|
+
|
|
475
|
+
.alert-branded-danger {
|
|
476
|
+
background-color: var(--brand-danger-bg);
|
|
477
|
+
color: var(--brand-danger-text);
|
|
478
|
+
border-color: var(--brand-danger-border);
|
|
414
479
|
}
|
|
415
|
-
|
|
416
|
-
.
|
|
417
|
-
|
|
480
|
+
/* Asegura que el texto fuerte y los enlaces dentro de la alerta también tomen el color correcto */
|
|
481
|
+
.alert-branded-danger strong,
|
|
482
|
+
.alert-branded-danger .alert-link {
|
|
483
|
+
color: inherit;
|
|
418
484
|
}
|
|
419
|
-
|
|
420
|
-
.
|
|
421
|
-
color: #
|
|
485
|
+
|
|
486
|
+
.edit-pencil {
|
|
487
|
+
color: var(--brand-secondary-color, #6c757d); /* Color secundario por defecto */
|
|
488
|
+
cursor: pointer;
|
|
489
|
+
opacity: 0.6;
|
|
490
|
+
text-decoration: none;
|
|
491
|
+
/* Transición suave para todos los cambios (color, opacidad, tamaño) */
|
|
492
|
+
transition: all 0.25s ease-in-out;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.edit-pencil:hover {
|
|
496
|
+
opacity: 1;
|
|
497
|
+
transform: scale(1.2);
|
|
498
|
+
color: var(--brand-primary-color, #4C6A8D);
|
|
499
|
+
cursor: pointer;
|
|
422
500
|
}
|
|
423
501
|
|
|
424
502
|
|
|
503
|
+
|