iatoolkit 0.10.1__tar.gz → 0.11.0__tar.gz
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-0.10.1 → iatoolkit-0.11.0}/PKG-INFO +1 -1
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/pyproject.toml +1 -1
- iatoolkit-0.11.0/src/iatoolkit/services/branding_service.py +108 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/history_service.py +1 -1
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/js/chat_history.js +1 -1
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/js/chat_main.js +1 -1
- iatoolkit-0.11.0/src/iatoolkit/static/styles/chat_iatoolkit.css +424 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/styles/chat_modal.css +50 -39
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/chat.html +30 -19
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/chat_modals.html +9 -9
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit.egg-info/PKG-INFO +1 -1
- iatoolkit-0.10.1/src/iatoolkit/services/branding_service.py +0 -70
- iatoolkit-0.10.1/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -701
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/readme.md +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/requirements.txt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/setup.cfg +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/common/auth.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/iatoolkit.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/llm_client.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/mail_app.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/document_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/load_documents_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/search_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/tasks_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/arrow_up.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/diagrama_iatoolkit.jpg +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/logo_clinica.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/logo_iatoolkit.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/logo_maxxa.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/logo_notaria.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/logo_tarjeta.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/logo_umayor.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/images/upload.png +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/js/chat_feedback.js +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/styles/chat_info.css +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/about.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/header.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/home.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/login.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/templates/test.html +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/chat_token_request_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/download_file_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/external_chat_login_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/external_login_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/file_store_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/history_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/llmquery_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/prompt_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/tasks_review_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/tasks_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/user_feedback_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-0.10.1 → iatoolkit-0.11.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Copyright (c) 2024 Fernando Libedinsky
|
|
2
|
+
# Product: IAToolkit
|
|
3
|
+
#
|
|
4
|
+
# IAToolkit is open source software.
|
|
5
|
+
|
|
6
|
+
from iatoolkit.repositories.models import Company
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class BrandingService:
|
|
10
|
+
"""
|
|
11
|
+
Servicio centralizado que gestiona la configuración de branding.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self):
|
|
15
|
+
"""
|
|
16
|
+
Define los estilos de branding por defecto para la aplicación.
|
|
17
|
+
"""
|
|
18
|
+
self._default_branding = {
|
|
19
|
+
# --- Estilos del Encabezado Principal ---
|
|
20
|
+
"header_background_color": "#FFFFFF",
|
|
21
|
+
"header_text_color": "#6C757D",
|
|
22
|
+
"primary_font_weight": "bold",
|
|
23
|
+
"primary_font_size": "1rem",
|
|
24
|
+
"secondary_font_weight": "600",
|
|
25
|
+
"secondary_font_size": "0.875rem",
|
|
26
|
+
"tertiary_font_weight": "normal",
|
|
27
|
+
"tertiary_font_size": "0.75rem",
|
|
28
|
+
"tertiary_opacity": "0.8",
|
|
29
|
+
|
|
30
|
+
# Estilos Globales de la Marca ---
|
|
31
|
+
"brand_primary_color": "#0d6efd", # Azul de Bootstrap por defecto
|
|
32
|
+
"brand_secondary_color": "#6c757d", # Gris de Bootstrap por defecto
|
|
33
|
+
"brand_text_on_primary": "#FFFFFF", # Texto blanco sobre color primario
|
|
34
|
+
"brand_text_on_secondary": "#FFFFFF", # Texto blanco sobre color secundario
|
|
35
|
+
|
|
36
|
+
# Estilos para Alertas de Error ---
|
|
37
|
+
"brand_danger_color": "#dc3545", # Rojo principal para alertas
|
|
38
|
+
"brand_danger_bg": "#f8d7da", # Fondo rojo pálido
|
|
39
|
+
"brand_danger_text": "#842029", # Texto rojo oscuro
|
|
40
|
+
"brand_danger_border": "#f5c2c7", # Borde rojo intermedio
|
|
41
|
+
|
|
42
|
+
# Estilos para Alertas Informativas ---
|
|
43
|
+
"brand_info_bg": "#cff4fc", # Fondo celeste pálido
|
|
44
|
+
"brand_info_text": "#055160", # Texto azul oscuro
|
|
45
|
+
"brand_info_border": "#b6effb",
|
|
46
|
+
|
|
47
|
+
# Color para el botón de Enviar ---
|
|
48
|
+
"send_button_color": "#212529" # Gris oscuro/casi negro por defecto
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
def get_company_branding(self, company: Company | None) -> dict:
|
|
52
|
+
"""
|
|
53
|
+
Retorna los estilos de branding finales para una compañía,
|
|
54
|
+
fusionando los valores por defecto con los personalizados.
|
|
55
|
+
"""
|
|
56
|
+
final_branding_values = self._default_branding.copy()
|
|
57
|
+
|
|
58
|
+
if company and company.branding:
|
|
59
|
+
final_branding_values.update(company.branding)
|
|
60
|
+
|
|
61
|
+
# --- CONSTRUCCIÓN DE ESTILOS Y VARIABLES CSS ---
|
|
62
|
+
header_style = (
|
|
63
|
+
f"background-color: {final_branding_values['header_background_color']}; "
|
|
64
|
+
f"color: {final_branding_values['header_text_color']};"
|
|
65
|
+
)
|
|
66
|
+
primary_text_style = (
|
|
67
|
+
f"font-weight: {final_branding_values['primary_font_weight']}; "
|
|
68
|
+
f"font-size: {final_branding_values['primary_font_size']};"
|
|
69
|
+
)
|
|
70
|
+
secondary_text_style = (
|
|
71
|
+
f"font-weight: {final_branding_values['secondary_font_weight']}; "
|
|
72
|
+
f"font-size: {final_branding_values['secondary_font_size']};"
|
|
73
|
+
)
|
|
74
|
+
tertiary_text_style = (
|
|
75
|
+
f"font-weight: {final_branding_values['tertiary_font_weight']}; "
|
|
76
|
+
f"font-size: {final_branding_values['tertiary_font_size']}; "
|
|
77
|
+
f"opacity: {final_branding_values['tertiary_opacity']};"
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Generamos el bloque de variables CSS
|
|
81
|
+
css_variables = f"""
|
|
82
|
+
:root {{
|
|
83
|
+
--brand-primary-color: {final_branding_values['brand_primary_color']};
|
|
84
|
+
--brand-secondary-color: {final_branding_values['brand_secondary_color']};
|
|
85
|
+
--brand-text-on-primary: {final_branding_values['brand_text_on_primary']};
|
|
86
|
+
--brand-text-on-secondary: {final_branding_values['brand_text_on_secondary']};
|
|
87
|
+
--brand-modal-header-bg: {final_branding_values['header_background_color']};
|
|
88
|
+
--brand-modal-header-text: {final_branding_values['header_text_color']};
|
|
89
|
+
--brand-danger-color: {final_branding_values['brand_danger_color']};
|
|
90
|
+
--brand-danger-bg: {final_branding_values['brand_danger_bg']};
|
|
91
|
+
--brand-danger-text: {final_branding_values['brand_danger_text']};
|
|
92
|
+
--brand-danger-border: {final_branding_values['brand_danger_border']};
|
|
93
|
+
--brand-info-bg: {final_branding_values['brand_info_bg']};
|
|
94
|
+
--brand-info-text: {final_branding_values['brand_info_text']};
|
|
95
|
+
--brand-info-border: {final_branding_values['brand_info_border']};
|
|
96
|
+
|
|
97
|
+
}}
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
"name": company.name if company else "IAToolkit",
|
|
102
|
+
"header_style": header_style,
|
|
103
|
+
"primary_text_style": primary_text_style,
|
|
104
|
+
"secondary_text_style": secondary_text_style,
|
|
105
|
+
"tertiary_text_style": tertiary_text_style,
|
|
106
|
+
"header_text_color": final_branding_values['header_text_color'],
|
|
107
|
+
"css_variables": css_variables
|
|
108
|
+
}
|
|
@@ -36,7 +36,7 @@ class HistoryService:
|
|
|
36
36
|
history = self.llm_query_repo.get_history(company, user_identifier)
|
|
37
37
|
|
|
38
38
|
if not history:
|
|
39
|
-
return {'
|
|
39
|
+
return {'message': 'Historial vacio actualmente', 'history': []}
|
|
40
40
|
|
|
41
41
|
history_list = [query.to_dict() for query in history]
|
|
42
42
|
|
|
@@ -41,7 +41,7 @@ $(document).ready(function () {
|
|
|
41
41
|
} catch (error) {
|
|
42
42
|
console.error("Error al cargar historial:", error);
|
|
43
43
|
const errorHtml = `
|
|
44
|
-
<div class="alert alert-danger alert-dismissible show" role="alert">
|
|
44
|
+
<div class="alert alert-branded-danger alert-dismissible show" role="alert">
|
|
45
45
|
<strong>Error al cargar el historial:</strong> ${error.message}
|
|
46
46
|
<button type="button" class="close" data-dismiss="alert">
|
|
47
47
|
<span>×</span>
|
|
@@ -322,7 +322,7 @@ const displayUserMessage = function(message, isEditable, originalQuestion) {
|
|
|
322
322
|
userMessage.append(messageText);
|
|
323
323
|
|
|
324
324
|
if (isEditable) {
|
|
325
|
-
const editIcon = $('<i>').addClass('bi bi-pencil-fill edit-icon').attr('title', 'Edit query').on('click', function () {
|
|
325
|
+
const editIcon = $('<i>').addClass('p-2 bi bi-pencil-fill edit-icon').attr('title', 'Edit query').on('click', function () {
|
|
326
326
|
$('#question').val(originalQuestion).focus();
|
|
327
327
|
autoResizeTextarea($('#question')[0]);
|
|
328
328
|
updateSendButtonState();
|
|
@@ -0,0 +1,424 @@
|
|
|
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 */
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.alert-branded-danger {
|
|
8
|
+
background-color: var(--brand-danger-bg);
|
|
9
|
+
color: var(--brand-danger-text);
|
|
10
|
+
border-color: var(--brand-danger-border);
|
|
11
|
+
}
|
|
12
|
+
/* Asegura que el texto fuerte y los enlaces dentro de la alerta también tomen el color correcto */
|
|
13
|
+
.alert-branded-danger strong,
|
|
14
|
+
.alert-branded-danger .alert-link {
|
|
15
|
+
color: inherit;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/* esta clase defines los atributos de cada bloque */
|
|
20
|
+
.chat-block {
|
|
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 */
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Estilo para la sección del encabezado */
|
|
28
|
+
.company-section {
|
|
29
|
+
border-radius: 0.375rem; /* Mismo radio que .chat-block para consistencia */
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Spinner */
|
|
33
|
+
.spinning {
|
|
34
|
+
animation: spin 1s linear infinite;
|
|
35
|
+
font-size: 15px; /* Tamaño del ícono */
|
|
36
|
+
display: inline-block;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@keyframes spin {
|
|
40
|
+
0% { transform: rotate(0deg); }
|
|
41
|
+
100% { transform: rotate(360deg); }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Estilos para el contenedor del chat y mensajes para que exista scroll */
|
|
45
|
+
#chat-container {
|
|
46
|
+
max-height: 70vh;
|
|
47
|
+
overflow-y: auto;
|
|
48
|
+
display: flex;
|
|
49
|
+
flex-direction: column;
|
|
50
|
+
background-color: #fff; /* Fondo blanco para el contenedor del chat */
|
|
51
|
+
}
|
|
52
|
+
.answer-section, .error-section, .document-section {
|
|
53
|
+
max-width: 100%;
|
|
54
|
+
word-wrap: break-word;
|
|
55
|
+
margin-bottom: 10px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Estilos para el modal de archivos y ordenar icono */
|
|
59
|
+
.list-group-item {
|
|
60
|
+
display: flex;
|
|
61
|
+
justify-content: space-between;
|
|
62
|
+
align-items: center;
|
|
63
|
+
}
|
|
64
|
+
.file-name-modal {
|
|
65
|
+
flex: 1;
|
|
66
|
+
margin-right: 10px;
|
|
67
|
+
}
|
|
68
|
+
.remove-file-btn {
|
|
69
|
+
flex-shrink: 0;
|
|
70
|
+
}
|
|
71
|
+
/* Estilos del header del modal*/
|
|
72
|
+
.modal-header {
|
|
73
|
+
display: flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: space-between;
|
|
76
|
+
width: 100%;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.modal-header .modal-title {
|
|
80
|
+
margin: 0;
|
|
81
|
+
padding: 0;
|
|
82
|
+
flex: 1;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.modal-header .close {
|
|
86
|
+
margin: 0;
|
|
87
|
+
padding: 0;
|
|
88
|
+
margin-left: auto;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Para el icono de eliminar del modal */
|
|
92
|
+
.remove-file-btn i {
|
|
93
|
+
color: #c82333
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Estilo del mensaje ingresado por el usuario */
|
|
97
|
+
#chat-container .message {
|
|
98
|
+
margin-top: 10px;
|
|
99
|
+
max-width: 75%;
|
|
100
|
+
min-width: fit-content;
|
|
101
|
+
width: fit-content;
|
|
102
|
+
border-radius: 12px 12px 0px 12px;
|
|
103
|
+
word-wrap: break-word;
|
|
104
|
+
display: inline-flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
align-self: flex-end;
|
|
107
|
+
text-align: left;
|
|
108
|
+
padding: 15px;
|
|
109
|
+
font-family: Arial, sans-serif;
|
|
110
|
+
font-size: 15px;
|
|
111
|
+
line-height: 1.5;
|
|
112
|
+
color: #333;
|
|
113
|
+
background-color: #ffffff;
|
|
114
|
+
border: 1px solid #ddd;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
.answer-section {
|
|
119
|
+
color: #202123; /* Texto negro suave */
|
|
120
|
+
font-family: "Inter", Arial, sans-serif; /* Fuente moderna */
|
|
121
|
+
font-size: 16px;
|
|
122
|
+
line-height: 1.6;
|
|
123
|
+
word-wrap: break-word;
|
|
124
|
+
padding-top: 0.5em;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.error-section {
|
|
128
|
+
align-self: flex-start;
|
|
129
|
+
max-width: 75%;
|
|
130
|
+
min-width: fit-content;
|
|
131
|
+
width: fit-content;
|
|
132
|
+
margin-top: 10px;
|
|
133
|
+
display: flex;
|
|
134
|
+
align-items: flex-start;
|
|
135
|
+
gap: 12px;
|
|
136
|
+
background-color: #fff0f0;
|
|
137
|
+
color: #5c0f0f;
|
|
138
|
+
border: 1px solid #ffcccc;
|
|
139
|
+
padding: 12px 18px;
|
|
140
|
+
border-radius: 0 12px 12px 12px;
|
|
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);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.error-section i {
|
|
149
|
+
color: #d32f2f;
|
|
150
|
+
font-size: 1.2em;
|
|
151
|
+
padding-top: 2px;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
#question {
|
|
155
|
+
width: 100%;
|
|
156
|
+
font-size: 15px;
|
|
157
|
+
background: #f8f9fa;
|
|
158
|
+
color: #202123;
|
|
159
|
+
border: 1px solid #d1d5db;
|
|
160
|
+
transition: all 0.3s ease-in-out;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
#question:focus {
|
|
164
|
+
outline: none;
|
|
165
|
+
border-color: #80bdff;
|
|
166
|
+
box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* 1. La caja principal que envuelve toda el área de entrada */
|
|
170
|
+
.input-area {
|
|
171
|
+
background-color: #f8f9fa;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* 2. La barra "cápsula" que envuelve el texto y los iconos */
|
|
175
|
+
.chat-input-bar {
|
|
176
|
+
background-color: #ffffff;
|
|
177
|
+
border: 1px solid #dee2e6;
|
|
178
|
+
border-radius: 1.5rem;
|
|
179
|
+
padding: 0.1rem 0.5rem;
|
|
180
|
+
transition: all 0.2s ease-in-out;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* 3. Efecto de foco para toda la barra */
|
|
184
|
+
.chat-input-bar:focus-within {
|
|
185
|
+
border-color: #86b7fe;
|
|
186
|
+
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
#prompt-assistant-collapse .card {
|
|
190
|
+
border-radius: 1.5rem; /* Mismo radio que el chat-input-bar */
|
|
191
|
+
border: 1px solid #dee2e6; /* Mismo borde que el chat-input-bar */
|
|
192
|
+
box-shadow: none; /* Eliminamos la sombra por defecto del card */
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
#prompt-assistant-collapse.show .card {
|
|
196
|
+
margin-bottom: 12px !important; /* Anula el mb-2 (8px) para añadir un poco más de espacio */
|
|
197
|
+
}
|
|
198
|
+
|
|
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
|
+
|
|
210
|
+
/* 5. NUEVO Estilo UNIFICADO para los enlaces de iconos de acción */
|
|
211
|
+
.action-icon-style {
|
|
212
|
+
color: #6c757d; /* Color gris estándar por defecto */
|
|
213
|
+
transition: opacity 0.2s ease-in-out;
|
|
214
|
+
}
|
|
215
|
+
.action-icon-style:hover {
|
|
216
|
+
opacity: 0.75; /* Efecto hover sutil */
|
|
217
|
+
}
|
|
218
|
+
.action-icon-style i {
|
|
219
|
+
font-size: 1.5rem;
|
|
220
|
+
vertical-align: middle;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/* Aplica a los iconos de la barra de entrada inferior */
|
|
224
|
+
.chat-input-bar .d-flex a i {
|
|
225
|
+
font-size: 1.5rem;
|
|
226
|
+
vertical-align: middle;
|
|
227
|
+
color: #6c757d;
|
|
228
|
+
transition: color 0.2s ease-in-out;
|
|
229
|
+
}
|
|
230
|
+
.chat-input-bar .d-flex a:hover i {
|
|
231
|
+
color: #343a40;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* 6. Anulación específica para el botón de ENVIAR usando su ID (Máxima Prioridad) */
|
|
235
|
+
#send-button i {
|
|
236
|
+
color: var(--brand-send-button-color); /* Usa la variable de branding */
|
|
237
|
+
font-size: 1.7rem; /* Ligeramente más grande */
|
|
238
|
+
}
|
|
239
|
+
#send-button:hover i {
|
|
240
|
+
filter: brightness(85%); /* Efecto hover genérico que funciona con cualquier color */
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* 7. Estilo para el botón de enviar cuando está deshabilitado */
|
|
244
|
+
.send-button-icon.disabled {
|
|
245
|
+
opacity: 0.4;
|
|
246
|
+
pointer-events: none; /* Lo hace no-clicable */
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@media (max-width: 768px) {
|
|
250
|
+
#chat-container {
|
|
251
|
+
height: 68vh;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.filepond--credits {
|
|
256
|
+
display: none; /* Ocultar créditos de FilePond */
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* Estilo para el input de datos específicos cuando tiene contenido */
|
|
260
|
+
.specific-data-input.has-content {
|
|
261
|
+
background-color: #e9f3ed !important;
|
|
262
|
+
border-color: #198754 !important;
|
|
263
|
+
border-width: 2px !important;
|
|
264
|
+
color: #0a5833 !important;
|
|
265
|
+
font-weight: 500 !important;
|
|
266
|
+
box-shadow: 0 1px 4px rgba(25, 135, 84, 0.2) !important;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/* Ajuste para la etiqueta flotante */
|
|
270
|
+
.specific-data-input.has-content + label {
|
|
271
|
+
color: #0a5833 !important;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/* Estilo para el botón de limpiar */
|
|
275
|
+
.clear-specific-data-button {
|
|
276
|
+
position: absolute;
|
|
277
|
+
top: 50%;
|
|
278
|
+
right: 15px;
|
|
279
|
+
transform: translateY(-50%);
|
|
280
|
+
z-index: 5;
|
|
281
|
+
padding: 0.25rem 0.5rem;
|
|
282
|
+
color: #6c757d;
|
|
283
|
+
background-color: transparent;
|
|
284
|
+
border: none;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.clear-specific-data-button:hover {
|
|
288
|
+
color: #212529;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.dropdown-menu-soft {
|
|
292
|
+
background-color: #f8f9fa;
|
|
293
|
+
border-color: #dee2e6;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.dropdown-menu-soft .dropdown-item {
|
|
297
|
+
transition: all 0.15s ease-in-out;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.dropdown-menu-soft .dropdown-item:hover,
|
|
301
|
+
.dropdown-menu-soft .dropdown-item:focus {
|
|
302
|
+
color: #ffffff;
|
|
303
|
+
background-color: #495057;
|
|
304
|
+
padding-left: 1.5rem;
|
|
305
|
+
transition: all 0.15s ease-in-out;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.dropdown-menu-soft .dropdown-header {
|
|
309
|
+
background-color: #495057;
|
|
310
|
+
color: #ffffff;
|
|
311
|
+
font-weight: 600;
|
|
312
|
+
margin: 4px;
|
|
313
|
+
padding: 0.4rem 1rem;
|
|
314
|
+
border-radius: 4px;
|
|
315
|
+
font-size: 0.85rem;
|
|
316
|
+
text-transform: none;
|
|
317
|
+
letter-spacing: normal;
|
|
318
|
+
border-bottom: none;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
#clear-selection-button {
|
|
322
|
+
position: absolute;
|
|
323
|
+
top: 50%;
|
|
324
|
+
right: 45px;
|
|
325
|
+
transform: translateY(-50%);
|
|
326
|
+
z-index: 5;
|
|
327
|
+
padding: 0.25rem 0.5rem;
|
|
328
|
+
color: #6c757d;
|
|
329
|
+
background-color: transparent;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
#clear-selection-button:hover {
|
|
333
|
+
color: #212529;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
/* Estilos para el modal de feedback */
|
|
338
|
+
.icon-spaced {
|
|
339
|
+
margin-right: 10px;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.modal-title{
|
|
343
|
+
font-size: 20px;
|
|
344
|
+
font-weight: bold;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.text-muted{
|
|
348
|
+
font-size:16px;
|
|
349
|
+
text-align: justify;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.feedback-text{
|
|
353
|
+
font-size: 16px;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/* Estilos para el modal de historial */
|
|
357
|
+
|
|
358
|
+
.thead-dark th{
|
|
359
|
+
font-size: 16px;
|
|
360
|
+
font-weight: bold;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
#history-content .table td:nth-child(1) { width: 5%; }
|
|
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%;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.rating-stars-container{
|
|
380
|
+
text-align: center;
|
|
381
|
+
margin: 2px 0 0 0;
|
|
382
|
+
display: flex;
|
|
383
|
+
flex-direction: row;
|
|
384
|
+
justify-content: center;
|
|
385
|
+
align-items: center;
|
|
386
|
+
gap: 10px;
|
|
387
|
+
width: 100%;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/* --- ESTILOS PARA EL WIDGET DE ESTRELLAS DE FEEDBACK --- */
|
|
391
|
+
.rating-stars {
|
|
392
|
+
display: flex;
|
|
393
|
+
justify-content: center;
|
|
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;
|
|
403
|
+
}
|
|
404
|
+
.star:hover {
|
|
405
|
+
transform: scale(1.15);
|
|
406
|
+
}
|
|
407
|
+
.star::before {
|
|
408
|
+
font-family: 'bootstrap-icons';
|
|
409
|
+
content: "\F586";
|
|
410
|
+
font-style: normal;
|
|
411
|
+
font-weight: normal;
|
|
412
|
+
line-height: 1;
|
|
413
|
+
-webkit-font-smoothing: antialiased;
|
|
414
|
+
}
|
|
415
|
+
.star.active::before,
|
|
416
|
+
.star.hover-active::before {
|
|
417
|
+
content: "\F587";
|
|
418
|
+
}
|
|
419
|
+
.star.active,
|
|
420
|
+
.star.hover-active {
|
|
421
|
+
color: #ffc107;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
|
|
@@ -2,10 +2,51 @@
|
|
|
2
2
|
/* Estilos generales para modales */
|
|
3
3
|
/* ######################################################### */
|
|
4
4
|
|
|
5
|
-
/*
|
|
6
|
-
.
|
|
7
|
-
|
|
5
|
+
/* Estilos del header del modal con branding */
|
|
6
|
+
.modal-header.branded {
|
|
7
|
+
background-color: var(--brand-modal-header-bg);
|
|
8
|
+
color: var(--brand-modal-header-text);
|
|
9
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
|
10
|
+
}
|
|
11
|
+
.modal-header.branded .btn-close {
|
|
12
|
+
filter: invert(1) grayscale(100%) brightness(200%); /* Hace el botón de cerrar visible en fondos oscuros */
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Estilos para botones con branding */
|
|
16
|
+
.btn-branded-primary {
|
|
17
|
+
background-color: var(--brand-primary-color);
|
|
18
|
+
border-color: var(--brand-primary-color);
|
|
19
|
+
color: var(--brand-text-on-primary);
|
|
20
|
+
}
|
|
21
|
+
.btn-branded-primary:hover {
|
|
22
|
+
filter: brightness(90%);
|
|
23
|
+
color: var(--brand-text-on-primary);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.btn-branded-secondary {
|
|
27
|
+
background-color: var(--brand-secondary-color);
|
|
28
|
+
border-color: var(--brand-secondary-color);
|
|
29
|
+
color: var(--brand-text-on-secondary);
|
|
8
30
|
}
|
|
31
|
+
.btn-branded-secondary:hover {
|
|
32
|
+
filter: brightness(90%);
|
|
33
|
+
color: var(--brand-text-on-secondary);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Estilos para alertas informativas personalizadas */
|
|
37
|
+
.alert-branded-info {
|
|
38
|
+
background-color: var(--brand-info-bg);
|
|
39
|
+
color: var(--brand-info-text);
|
|
40
|
+
border-color: var(--brand-info-border);
|
|
41
|
+
}
|
|
42
|
+
.alert-branded-info strong,
|
|
43
|
+
.alert-branded-info .alert-link {
|
|
44
|
+
color: inherit;
|
|
45
|
+
}
|
|
46
|
+
.alert-branded-info .bi { /* Asegura que los iconos también tomen el color */
|
|
47
|
+
color: inherit;
|
|
48
|
+
}
|
|
49
|
+
|
|
9
50
|
|
|
10
51
|
/* Título del modal */
|
|
11
52
|
.modal-title{
|
|
@@ -13,11 +54,6 @@
|
|
|
13
54
|
font-weight: bold;
|
|
14
55
|
}
|
|
15
56
|
|
|
16
|
-
/* Texto del modal */
|
|
17
|
-
.text-muted{
|
|
18
|
-
font-size:16px;
|
|
19
|
-
text-align: justify;
|
|
20
|
-
}
|
|
21
57
|
|
|
22
58
|
/* Estilos del header del modal*/
|
|
23
59
|
.modal-header {
|
|
@@ -45,20 +81,17 @@
|
|
|
45
81
|
/* Modal de historial */
|
|
46
82
|
/* ######################################################### */
|
|
47
83
|
|
|
48
|
-
/*
|
|
49
|
-
.thead-
|
|
84
|
+
/* Encabezado de tabla con branding */
|
|
85
|
+
.thead-branded th {
|
|
86
|
+
background-color: var(--brand-primary-color);
|
|
87
|
+
color: var(--brand-text-on-primary);
|
|
50
88
|
font-size: 16px;
|
|
51
89
|
font-weight: bold;
|
|
52
90
|
}
|
|
53
91
|
|
|
54
|
-
/* Control de ancho de columnas en la tabla del historial */
|
|
55
|
-
#history-content .table td:nth-child(1) {
|
|
56
|
-
width: 5%; /* Columna del número */
|
|
57
|
-
}
|
|
58
92
|
|
|
59
|
-
#history-content .table td:nth-child(
|
|
60
|
-
|
|
61
|
-
}
|
|
93
|
+
#history-content .table td:nth-child(1) { width: 5%; }
|
|
94
|
+
#history-content .table td:nth-child(2) { width: 23%; }
|
|
62
95
|
|
|
63
96
|
#history-content .table td:nth-child(3) {
|
|
64
97
|
width: auto; /* Columna de la consulta - ocupa el resto */
|
|
@@ -69,28 +102,6 @@
|
|
|
69
102
|
/* ######################################################### */
|
|
70
103
|
|
|
71
104
|
/* Contenedor de calificación del modal de feedback */
|
|
72
|
-
.rating-container {
|
|
73
|
-
text-align: center;
|
|
74
|
-
margin: 10px 0 0 0;
|
|
75
|
-
display: flex;
|
|
76
|
-
flex-direction: column;
|
|
77
|
-
justify-content: center;
|
|
78
|
-
align-items: center;
|
|
79
|
-
gap: 5px;
|
|
80
|
-
width: 100%;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/* Contenedor de estrellas del modal de feedback */
|
|
84
|
-
.rating-stars-container{
|
|
85
|
-
text-align: center;
|
|
86
|
-
margin: 2px 0 0 0;
|
|
87
|
-
display: flex;
|
|
88
|
-
flex-direction: row;
|
|
89
|
-
justify-content: center;
|
|
90
|
-
align-items: center;
|
|
91
|
-
gap: 10px;
|
|
92
|
-
width: 100%;
|
|
93
|
-
}
|
|
94
105
|
|
|
95
106
|
/* Estilos de las estrellas del modal de feedback */
|
|
96
107
|
.star {
|