iatoolkit 0.60.2__py3-none-any.whl → 0.61.0__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.

@@ -1,228 +1,176 @@
1
1
  /* static/styles/landing_page.css */
2
2
 
3
- /* --- Configuración General --- */
4
- body {
5
- background-color: #ffffff; /* Cambiado a blanco para que el hero destaque */
3
+ /* --- Variables y Estilos Globales --- */
4
+ :root {
5
+ --website-primary-color: #4A55A2;
6
+ --website-primary-color-dark: #3A448A;
7
+ --website-gradient-start: #4A55A2;
8
+ --website-gradient-end: #7895CB;
9
+ --website-dark-text: #212529;
10
+ --website-light-bg: #f8f9fa;
11
+ --website-muted-text: #6c757d;
6
12
  }
7
13
 
8
- /* --- 1. Barra de Navegación Superior --- */
9
- .landing-navbar {
10
- background-color: var(--brand-primary-color, #0d6efd);
11
- padding: 1rem 1.5rem;
12
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
14
+ body {
15
+ background-color: #fff;
16
+ color: var(--website-dark-text);
17
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
18
+ }
19
+
20
+ /* --- Encabezado Propio (sin usar .navbar) --- */
21
+ .website-header {
22
+ background-color: var(--website-primary-color); /* Color primario del website */
23
+ border-bottom: 1px solid transparent; /* Borde ya no necesario con fondo sólido */
24
+ position: sticky;
25
+ top: 0;
26
+ z-index: 1020;
27
+ padding: 0.75rem 0;
28
+ width: 100%;
13
29
  }
14
30
 
15
- .landing-navbar .navbar-brand {
16
- color: var(--brand-text-on-primary, #FFFFFF);
31
+ .website-brand {
17
32
  font-weight: 700;
18
- font-size: 1.8rem; /* Aumentado el tamaño del texto */
33
+ font-size: 1.75rem;
34
+ color: #ffffff;
19
35
  }
20
36
 
21
- .gradient-text {
22
- /* Define un gradiente como fondo */
23
- background: linear-gradient(90deg, #4F46E5, #818CF8);
24
-
25
- /* Recorta el fondo para que solo sea visible donde hay texto */
26
- -webkit-background-clip: text;
27
- background-clip: text;
28
-
29
- /* Hace que el color del texto sea transparente para que se vea el fondo */
30
- color: transparent;
31
-
32
- /* Asegura que el fondo no se repita */
33
- background-size: 100%;
34
- }
35
-
36
- /* Estilos para el texto de la propuesta de valor */
37
- .value-proposition {
38
- display: flex;
39
- flex-direction: column;
40
- justify-content: center;
41
- height: 100%;
42
- padding-left: 2rem;
43
- }
44
-
45
- /* --- 2. Sección Principal (Hero) --- */
37
+ /* --- Sección Principal (Hero) --- */
46
38
  .hero-section {
47
- padding: 1rem 0;
48
- background-color: #f8f9fa; /* Fondo gris claro para la sección principal */
39
+ padding: 5rem 0;
49
40
  }
50
-
51
41
  .hero-title {
52
- font-size: 3rem;
53
- font-weight: 700;
54
- background: linear-gradient(90deg, #4F46E5, #818CF8);
55
- -webkit-background-clip: text;
56
- -webkit-text-fill-color: transparent;
57
- line-height: 1.1;
58
- letter-spacing: -0.5px;
59
- }
60
-
61
- .hero-bullets {
62
- list-style: none;
63
- padding-left: 2rem;
64
- margin-top: 1.5rem;
65
- }
66
-
67
- .hero-bullets li {
68
- font-size: 1.15rem;
69
- color: #4b5563;
70
- margin-bottom: 0.8rem;
71
- display: flex;
72
- align-items: flex-start;
73
- gap: 0.6rem;
74
- line-height: 1.5;
42
+ font-size: 3.5rem;
43
+ font-weight: 800;
44
+ line-height: 1.2;
45
+ margin-bottom: 1.5rem;
75
46
  }
76
-
77
- .hero-bullets i {
78
- color: #4F46E5;
79
- font-size: 1.3rem;
80
- margin-top: 0.2rem;
47
+ .gradient-text {
48
+ background: linear-gradient(90deg, var(--website-gradient-start), var(--website-gradient-end));
49
+ -webkit-background-clip: text;
50
+ -webkit-text-fill-color: transparent;
51
+ background-clip: text;
52
+ text-fill-color: transparent;
81
53
  }
82
-
83
- .value-proposition .hero-subtitle {
54
+ .hero-bullets {
55
+ list-style: none;
56
+ padding-left: 0;
84
57
  font-size: 1.1rem;
85
- color: #6c757d;
86
- margin-top: 1.5rem;
87
- }
88
-
89
-
90
- .value-proposition .hero-accelerator {
91
- color: var(--brand-primary-color, #0d6efd);
92
- }
93
-
94
- /* --- Estilo para el título del widget de login --- */
95
- .hero-section .bg-light h4 {
96
- color: var(--brand-primary-color, #0d6efd);
97
- }
98
-
99
- .author-section {
100
- background: #ffffff;
101
- }
102
-
103
- .author-card {
104
- background: #f8f9fa;
105
- border: 1px solid #e9ecef;
106
- border-radius: 10px;
107
58
  }
108
-
109
- .author-avatar {
110
- width: 64px;
111
- height: 64px;
112
- border-radius: 50%;
113
- background: var(--brand-primary-color, #0d6efd);
114
- color: var(--brand-text-on-primary, #fff);
115
- display: flex; align-items: center; justify-content: center;
116
- font-size: 2rem;
59
+ .hero-bullets li {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: 0.75rem;
63
+ margin-bottom: 1rem;
64
+ color: var(--website-muted-text);
117
65
  }
118
-
119
- .author-bio {
120
- color: #4b5563;
121
- line-height: 1.6;
66
+ .hero-bullets .bi {
67
+ color: var(--website-primary-color);
68
+ font-size: 1.5rem;
122
69
  }
123
70
 
124
- .author-linkedin {
125
- color: var(--brand-primary-color, #0d6efd);
126
- text-decoration: none;
127
- }
128
- .author-linkedin:hover {
129
- text-decoration: underline;
71
+ /* --- Botón de Llamada a la Acción (CTA) --- */
72
+ .hero-section .btn-primary {
73
+ background-color: var(--website-primary-color);
74
+ border-color: var(--website-primary-color);
75
+ transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out;
130
76
  }
131
-
132
- /* --- Estilo para el texto introductorio del widget --- */
133
- .widget-intro-text {
134
- font-style: italic;
135
- font-size: 0.9rem;
136
- line-height: 1.4;
77
+ .hero-section .btn-primary:hover {
78
+ background-color: var(--website-primary-color-dark);
79
+ border-color: var(--website-primary-color-dark);
137
80
  }
138
81
 
139
- /* --- 3. Sección de Características --- */
82
+ /* --- Sección de Características (Features) --- */
140
83
  .features-section {
141
84
  padding: 5rem 0;
142
- background-color: #ffffff; /* Fondo blanco para esta sección */
85
+ background-color: var(--website-light-bg);
143
86
  }
144
-
145
- /* (El resto del archivo CSS permanece sin cambios) */
146
87
  .feature-item {
147
- text-align: center;
88
+ background-color: #fff;
148
89
  padding: 2rem;
149
- background-color: #f8f9fa; /* Fondo gris claro para cada tarjeta */
150
- border: 1px solid #dee2e6;
151
- border-radius: 0.5rem;
152
- height: 100%; /* CLAVE: Asegura que todas las tarjetas en una fila tengan el mismo alto */
90
+ border-radius: 0.75rem;
91
+ border: 1px solid #e9ecef;
92
+ height: 100%;
93
+ transition: all 0.3s ease;
94
+ }
95
+ .feature-item:hover {
96
+ transform: translateY(-5px);
97
+ box-shadow: 0 8px 25px rgba(0,0,0,0.08);
153
98
  }
154
-
155
99
  .feature-icon {
156
- font-size: 3rem;
157
- color: var(--brand-primary-color); /* Usar color primario para más impacto */
158
- margin-bottom: 1.5rem;
159
- display: inline-block;
100
+ font-size: 2.5rem;
101
+ margin-bottom: 1rem;
102
+ color: var(--website-primary-color);
160
103
  }
161
-
162
104
  .feature-item h3 {
163
- font-size: 1.4rem;
164
105
  font-weight: 600;
165
- margin-bottom: 1rem;
106
+ margin-bottom: 0.5rem;
166
107
  }
167
-
168
108
  .feature-item p {
169
- color: #6c757d;
109
+ color: var(--website-muted-text);
170
110
  }
171
111
 
112
+ /* Estilo especial para la caja de Open Source */
172
113
  .opensource-box {
173
- background-color: #343a40;
174
- color: #f8f9fa;
114
+ background: var(--website-dark-text);
115
+ color: #fff;
175
116
  padding: 2rem;
176
- border-radius: 0.5rem;
177
- height: 100%; /* CLAVE: Asegura que tenga el mismo alto */
117
+ border-radius: 0.75rem;
118
+ height: 100%;
178
119
  display: flex;
179
120
  flex-direction: column;
180
121
  justify-content: space-between;
181
- text-align: center;
122
+ border: 1px solid transparent;
123
+ transition: all 0.3s ease;
182
124
  }
183
-
184
- .opensource-icon {
185
- font-size: 3rem; /* Tamaño consistente con los otros iconos */
186
- color: var(--brand-text-on-primary, #FFFFFF);
187
- opacity: 0.9;
188
- margin-bottom: 1.5rem;
125
+ .opensource-box:hover {
126
+ transform: translateY(-5px);
127
+ box-shadow: 0 8px 25px rgba(0,0,0,0.15);
189
128
  }
190
-
191
- .opensource-content h3 {
192
- font-weight: 600;
193
- font-size: 1.4rem; /* Tamaño consistente */
129
+ .opensource-icon .bi-github {
130
+ font-size: 2.5rem;
194
131
  margin-bottom: 1rem;
195
132
  }
196
-
197
- .opensource-content p {
133
+ .opensource-box h3 {
134
+ font-weight: 600;
135
+ }
136
+ .opensource-box p {
137
+ color: #ced4da;
198
138
  margin-bottom: 1.5rem;
199
- color: #adb5bd;
200
139
  }
201
140
 
202
- .opensource-content .btn {
203
- width: 100%;
141
+ /* --- Sección del Autor --- */
142
+ .author-section {
143
+ background-color: #fff;
204
144
  }
205
-
206
- .pypi-link {
207
- margin-top: 1.5rem;
208
- padding-top: 1.5rem;
209
- border-top: 1px solid #495057;
210
- font-size: 0.9rem;
211
- color: #ced4da;
145
+ .author-card {
146
+ background-color: var(--website-light-bg);
147
+ border-radius: 0.75rem;
148
+ border: 1px solid #e9ecef;
212
149
  }
213
-
214
- .pypi-link code {
215
- background-color: #212529;
216
- padding: 0.2rem 0.5rem;
217
- border-radius: 4px;
218
- color: #e83e8c;
150
+ .author-card h5 {
151
+ color: var(--website-primary-color);
152
+ font-weight: 600;
153
+ }
154
+ .author-bio {
155
+ color: var(--website-muted-text);
156
+ line-height: 1.6;
157
+ }
158
+ .author-linkedin {
159
+ text-decoration: none;
160
+ color: #0077b5;
161
+ font-weight: 500;
162
+ transition: opacity 0.2s;
163
+ }
164
+ .author-linkedin:hover {
165
+ opacity: 0.8;
219
166
  }
220
167
 
221
- /* --- 4. Footer --- */
168
+ /* --- Footer --- */
222
169
  .landing-footer {
223
- background-color: #343a40;
224
- color: #adb5bd;
170
+ background-color: var(--website-light-bg);
171
+ color: var(--website-muted-text);
225
172
  padding: 2rem 0;
226
173
  text-align: center;
227
- font-size: 0.9rem;
174
+ margin-top: 4rem;
175
+ border-top: 1px solid #e9ecef;
228
176
  }
@@ -0,0 +1,15 @@
1
+ <div class="custom-company-header" style="{{ branding.header_style }}">
2
+
3
+ {# Enlace condicional para el nombre de la marca a la izquierda #}
4
+ <a href="{{ url_for('home', company_short_name=company_short_name) }}"
5
+ class="brand-name"
6
+ style="{{ branding.primary_text_style }}">
7
+ {{ branding.name }}
8
+ </a>
9
+
10
+ <span class="powered-by">
11
+ Powered by IAToolkit
12
+ </a>
13
+ </span>
14
+
15
+ </div>
@@ -13,6 +13,8 @@
13
13
  <link rel="stylesheet" href="{{ url_for('static', filename='styles/onboarding.css', _external=True) }}">
14
14
  <link rel="stylesheet" href="{{ url_for('static', filename='styles/chat_modal.css', _external=True) }}">
15
15
  <link rel="stylesheet" href="{{ url_for('static', filename='styles/llm_output.css', _external=True) }}">
16
+
17
+ {% block styles %}{% endblock %}
16
18
  </head>
17
19
  <body class="d-flex flex-column p-3" style="min-height: 100vh;">
18
20
 
@@ -17,8 +17,8 @@
17
17
  <div class="container">
18
18
  <div class="row justify-content-center">
19
19
  <div class="col-lg-6 col-md-8">
20
- <div class="border rounded p-4 p-md-5 shadow-sm bg-light">
21
- <h4 class="form-title fw-bold mb-3 text-center">Crear Nueva Contraseña</h4>
20
+ <div class="branded-form-container">
21
+ <h4 class="branded-form-title">Crear Nueva Contraseña</h4>
22
22
 
23
23
  <p class="text-muted text-center mb-4">
24
24
  Estás cambiando la contraseña para <strong>{{ email }}</strong>.
@@ -52,7 +52,7 @@
52
52
  </form>
53
53
 
54
54
  <div class="text-center mt-4 pt-3" style="border-top: 1px solid #e0e0e0;">
55
- <a href="{{ url_for('index', company_short_name=company_short_name) }}" class="text-muted text-decoration-none fw-semibold">
55
+ <a href="{{ url_for('home', company_short_name=company_short_name) }}" class="text-muted text-decoration-none fw-semibold">
56
56
  <i class="bi bi-arrow-left me-1"></i>Volver al inicio
57
57
  </a>
58
58
  </div>
@@ -12,77 +12,78 @@
12
12
  <link rel="stylesheet" href="{{ url_for('static', filename='styles/onboarding.css', _external=True) }}">
13
13
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
14
14
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
15
- {% endblock %}
15
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css">
16
+
17
+ {% endblock %}
16
18
 
17
19
  <!-- Sección de encabezado con el usuario conectado -->
18
- <div id="company-section" class="company-section d-flex justify-content-between align-items-center px-3 py-2"
19
- style="{{ branding.header_style }}">
20
+ <div id="company-section"
21
+ class="company-section d-flex flex-column flex-md-row justify-content-md-between align-items-center px-3 py-2"
22
+ style="{{ branding.header_style }}">
20
23
 
21
- <!-- Izquierda: Nombre de la Empresa y atribución "Powered by" -->
22
- <div class="d-flex align-items-center">
23
- <span style="{{ branding.primary_text_style }}">
24
- {{ branding.name }}
25
- </span>
26
- <span class="ms-2" data-bs-toggle="tooltip" data-bs-placement="bottom"
27
- title="Powered by IAToolkit ({{ iatoolkit_version }})">
28
- <i class="bi bi-info-circle" style="color: {{ branding.header_text_color }}; opacity: 0.7; font-size: 0.9rem;"></i>
29
- </span>
30
- </div>
24
+ <!-- Fila 1 (Móvil) / Columna Izquierda (Desktop): Nombre de la Empresa -->
25
+ <div class="d-flex align-items-center mb-2 mb-md-0">
26
+ <span style="{{ branding.primary_text_style }}">
27
+ {{ branding.name }}
28
+ </span>
29
+ <span class="ms-2" data-bs-toggle="tooltip" data-bs-placement="bottom"
30
+ title="Powered by IAToolkit ({{ iatoolkit_version }})">
31
+ <i class="bi bi-info-circle" style="color: {{ branding.header_text_color }}; opacity: 0.7; font-size: 0.9rem;"></i>
32
+ </span>
33
+ </div>
31
34
 
32
- <!-- Derecha: Grupo de información y acciones para el usuario -->
33
- <div class="d-flex align-items-center">
34
- <!-- 1. ID de Usuario -->
35
- <span style="{{ branding.secondary_text_style }}">
36
- {{ user_identifier }}
37
- </span>
35
+ <!-- Contenedor para la derecha que agrupa ID de usuario y botones -->
36
+ <div class="d-flex flex-column flex-md-row align-items-center">
38
37
 
39
- <!-- 2. Separador Vertical -->
40
- <div class="vr mx-3"></div>
38
+ <!-- Fila 2 (Móvil) / Parte 1 de la Columna Derecha (Desktop): ID de Usuario -->
39
+ <span style="{{ branding.secondary_text_style }}" class="mb-2 mb-md-0">
40
+ {{ user_identifier }}
41
+ </span>
41
42
 
42
- <!-- 3. Iconos de Acción -->
43
- <a href="javascript:void(0);"
44
- id="history-button"
45
- class="action-icon-style" title="Historial con mis consultas" style="color: {{ branding.header_text_color }};">
46
- <i class="bi bi-clock-history"></i>
47
- </a>
48
- <a href="javascript:void(0);"
49
- id="force-reload-button"
50
- class="ms-3 action-icon-style"
51
- title="Forzar Recarga de Contexto"
52
- style="color: {{ branding.header_text_color }};">
53
- <i class="bi bi-arrow-clockwise"></i>
54
- </a>
55
- <a href="javascript:void(0);"
56
- id="send-feedback-button"
57
- class="ms-3 action-icon-style" title="Tu feedback es muy importante" style="color: {{ branding.header_text_color }};">
58
- <i class="bi bi-emoji-smile"></i>
59
- </a>
60
- <a href="javascript:void(0);"
61
- id="onboarding-button"
62
- class="ms-3 action-icon-style" title="Ver onboarding"
63
- style="color: {{ branding.header_text_color }};">
64
- <i class="bi bi-lightbulb"></i>
65
- </a>
43
+ <!-- Separador Vertical (Solo visible en Desktop) -->
44
+ <div class="vr mx-3 d-none d-md-block"></div>
66
45
 
67
- <!-- Icono de cerrar sesión (al final) -->
68
- <a href="javascript:void(0);"
69
- id="logout-button"
70
- class="ms-3 action-icon-style" title="Cerrar sesión"
71
- style="color: {{ branding.header_text_color }}; !important;">
72
- <i class="bi bi-box-arrow-right"></i>
73
- </a>
46
+ <!-- Fila 3 (Móvil) / Parte 2 de la Columna Derecha (Desktop): Iconos de Acción -->
47
+ <div class="d-flex align-items-center">
48
+ <a href="javascript:void(0);"
49
+ id="history-button"
50
+ class="action-icon-style" title="Historial con mis consultas" style="color: {{ branding.header_text_color }};">
51
+ <i class="bi bi-clock-history"></i>
52
+ </a>
53
+ <a href="javascript:void(0);"
54
+ id="force-reload-button"
55
+ class="ms-3 action-icon-style"
56
+ title="Forzar Recarga de Contexto"
57
+ style="color: {{ branding.header_text_color }};">
58
+ <i class="bi bi-arrow-clockwise"></i>
59
+ </a>
60
+ <a href="javascript:void(0);"
61
+ id="send-feedback-button"
62
+ class="ms-3 action-icon-style" title="Tu feedback es muy importante" style="color: {{ branding.header_text_color }};">
63
+ <i class="bi bi-emoji-smile"></i>
64
+ </a>
65
+ <a href="javascript:void(0);"
66
+ id="onboarding-button"
67
+ class="ms-3 action-icon-style" title="Ver onboarding"
68
+ style="color: {{ branding.header_text_color }};">
69
+ <i class="bi bi-lightbulb"></i>
70
+ </a>
71
+ <a href="javascript:void(0);"
72
+ id="logout-button"
73
+ class="ms-3 action-icon-style" title="Cerrar sesión"
74
+ style="color: {{ branding.header_text_color }}; !important;">
75
+ <i class="bi bi-box-arrow-right"></i>
76
+ </a>
77
+ </div>
78
+ </div>
74
79
  </div>
75
80
 
76
- </div>
77
-
78
81
  <div id="chat-container"
79
82
  class="chat-block mt-2 flex-grow-1"
80
83
  style="overflow-y: auto;">
81
- <div id="chat-messages">
82
- <!-- Mensaje de bienvenida estático -->
83
- <div class="answer-section">
84
- ¡Hola! en que te puedo ayudar hoy?
85
- </div>
84
+ <!-- Mensaje de bienvenida estático -->
85
+ <div class="answer-section">
86
+ ¡Hola! en que te puedo ayudar hoy?
86
87
  </div>
87
88
  </div>
88
89
 
@@ -197,32 +198,20 @@
197
198
  </script>
198
199
 
199
200
  <!-- Carga de los scripts JS externos después de definir las variables globales -->
200
- <script src="{{ url_for('static', filename='js/chat_onboarding_button.js', _external=True) }}"></script>
201
- <script src="{{ url_for('static', filename='js/chat_filepond.js', _external=True) }}"></script>
202
- <script src="{{ url_for('static', filename='js/chat_history_button.js', _external=True) }}"></script>
203
- <script src="{{ url_for('static', filename='js/chat_feedback_button.js', _external=True) }}"></script>
204
- <script src="{{ url_for('static', filename='js/chat_reload_button.js', _external=True) }}"></script>
205
- <script src="{{ url_for('static', filename='js/chat_main.js', _external=True) }}"></script>
206
- <script src="{{ url_for('static', filename='js/chat_logout_button.js', _external=True) }}"></script>
207
- <script src="{{ url_for('static', filename='js/chat_main.js', _external=True) }}"></script>
201
+ <script src="{{ url_for('static', filename='js/chat_onboarding_button.js', _external=True) }}"></script>
202
+ <script src="{{ url_for('static', filename='js/chat_filepond.js', _external=True) }}"></script>
203
+ <script src="{{ url_for('static', filename='js/chat_history_button.js', _external=True) }}"></script>
204
+ <script src="{{ url_for('static', filename='js/chat_feedback_button.js', _external=True) }}"></script>
205
+ <script src="{{ url_for('static', filename='js/chat_reload_button.js', _external=True) }}"></script>
206
+ <script src="{{ url_for('static', filename='js/chat_main.js', _external=True) }}"></script>
207
+ <script src="{{ url_for('static', filename='js/chat_logout_button.js', _external=True) }}"></script>
208
+ <script src="{{ url_for('static', filename='js/chat_prompt_manager.js', _external=True) }}"></script>
209
+ <script src="{{ url_for('static', filename='js/chat_main.js', _external=True) }}"></script>
208
210
 
209
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css">
210
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
211
- <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
211
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
212
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
212
213
 
213
- <script>
214
- document.addEventListener('DOMContentLoaded', function () {
215
- const promptCollapse = document.getElementById('prompt-assistant-collapse');
216
- if (promptCollapse) {
217
- promptCollapse.addEventListener('shown.bs.collapse', function () {
218
- // Desplazar la ventana al final de la página para mantener visible el área de entrada.
219
- window.scrollTo({
220
- top: document.body.scrollHeight,
221
- behavior: 'smooth'
222
- });
223
- });
224
- }
225
- });
214
+ <script>
226
215
 
227
216
  document.addEventListener('DOMContentLoaded', function () {
228
217
  // Inicializar todos los tooltips de la página
@@ -1,15 +1,52 @@
1
1
  {% extends "base.html" %}
2
2
 
3
- {% block title %}Error - IAToolkit{% endblock %}
3
+ {% block title %}Error - {{ company.name }}{% endblock %}
4
+
5
+ {% block styles %}
6
+ {# Carga las variables de CSS y los estilos principales de la marca #}
7
+ <style>
8
+ {{ branding.css_variables | safe }}
9
+ </style>
10
+ <link rel="stylesheet" href="{{ url_for('static', filename='styles/chat_iatoolkit.css') }}">
11
+ {# Enlace a los iconos de Bootstrap para el icono de error #}
12
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
13
+ {% endblock %}
4
14
 
5
15
  {% block content %}
6
- <div class="container vh-100 d-flex justify-content-center align-items-center">
7
- <div class="text-center col-11 col-md-8 col-lg-6 border rounded p-4 shadow-sm bg-light">
8
- <h1 class="text-danger fw-bold">¡Ups! Ha ocurrido un error</h1>
9
- <p class="mt-3 text-muted">
10
- {{ message }}
11
- </p>
12
- <a href="{{ url_for('index', company_short_name=company_short_name) }}" class="btn btn-primary mt-4">Volver al Inicio</a>
16
+
17
+ {# 1. Incluimos el encabezado reutilizable de la empresa #}
18
+ {% include '_company_header.html' %}
19
+
20
+ {# 2. Contenedor principal para el mensaje de error #}
21
+ <div class="container mt-5">
22
+ <div class="row justify-content-center">
23
+ <div class="col-md-8 col-lg-6">
24
+
25
+ {# Usamos una tarjeta para enmarcar el contenido del error #}
26
+ <div class="card shadow-sm text-center border-danger">
27
+ <div class="card-body p-4 p-md-5">
28
+
29
+ {# Icono de error grande y visible #}
30
+ <i class="bi bi-exclamation-triangle-fill text-danger" style="font-size: 4rem;"></i>
31
+
32
+ <h2 class="card-title mt-4">Ha Ocurrido un Error</h2>
33
+
34
+ {# El mensaje de error dinámico que se pasa desde la vista #}
35
+ <p class="text-muted mt-3 mb-4">
36
+ {{ message | default('Lo sentimos, algo salió mal. Por favor, inténtalo de nuevo más tarde.') }}
37
+ </p>
38
+
39
+ {# Botón para volver a la página de inicio de la empresa #}
40
+ <a href="{{ url_for('home', company_short_name=company_short_name) }}"
41
+ class="btn btn-branded-primary px-4">
42
+ Volver al Inicio
43
+ </a>
44
+
45
+ </div>
46
+ </div>
47
+
48
+ </div>
13
49
  </div>
14
50
  </div>
51
+
15
52
  {% endblock %}