AIdeaText commited on
Commit
98e7849
·
verified ·
1 Parent(s): aee73dc

Update modules/ui/views/landing_view.py

Browse files
Files changed (1) hide show
  1. modules/ui/views/landing_view.py +106 -90
modules/ui/views/landing_view.py CHANGED
@@ -22,118 +22,134 @@ def get_asset_path(filename, asset_type='img_logo'):
22
  return str(asset_path)
23
 
24
  def create_landing_view():
25
- """Crea la vista de landing con header y distribución 25-75"""
26
  # Para el logo
27
  logo_path = get_asset_path('Logo_300x300.png', 'img_logo')
 
 
28
 
29
  with gr.Blocks(
30
  css="""
31
- /* Variables de color corporativo */
32
- :root {
33
- --color-primary: rgb(174, 0, 37); /* Rojo corporativo */
34
- --color-secondary: rgb(7, 60, 99); /* Azul corporativo */
35
- }
36
-
37
- /* Estilos del header */
38
- #header-logo {
39
- text-align: center;
40
- padding: 2rem 0;
41
- margin-bottom: 2rem;
42
- }
43
- #header-logo img {
44
- max-width: 200px;
45
- height: auto;
46
- }
47
-
48
- /* Contenedor principal */
49
- .container {
50
- max-width: 1400px;
51
- margin: 0 auto;
52
- padding: 0 1rem;
53
- }
54
-
55
- /* Estilos de formularios */
56
- .gr-form {
57
- border: 1px solid #e0e0e0;
58
- padding: 20px;
59
- border-radius: 8px;
60
- background-color: #ffffff;
61
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
62
- }
63
-
64
- /* Estilos de botones */
65
- .primary-btn {
66
- background-color: var(--color-primary) !important;
67
- color: white !important;
68
- }
69
- .secondary-btn {
70
- background-color: var(--color-secondary) !important;
71
- color: white !important;
72
- }
73
-
74
- /* Tabs personalizados */
75
- .tabs {
76
- border-bottom-color: var(--color-secondary);
77
- }
78
- .tab-selected {
79
- color: var(--color-primary) !important;
80
- border-color: var(--color-primary) !important;
81
- }
82
  """
83
  ) as view:
84
  # Header con logo
85
  with gr.Column(elem_id="header-logo"):
86
- gr.Image(
87
- value=logo_path,
88
- label=None,
89
- show_label=False,
90
- container=False,
91
- height=200
92
- )
93
 
94
  with gr.Row(elem_classes="container"):
95
- # Primera columna - Tabs de Login y Registro (25%)
96
- with gr.Column(scale=1): # scale=1 de 4 = 25%
97
  with gr.Tabs() as tabs:
98
  # Tab de Login
99
  with gr.TabItem("Iniciar Sesión", elem_classes="gr-form"):
100
- with gr.Column():
101
- username = gr.Textbox(
102
- label="Usuario",
103
- placeholder="Ingrese su usuario"
104
- )
105
- password = gr.Textbox(
106
- label="Contraseña",
107
- type="password",
108
- placeholder="Ingrese su contraseña"
109
- )
110
  login_button = gr.Button(
111
  "Ingresar",
112
  variant="primary",
113
- elem_classes="primary-btn"
114
  )
115
  login_message = gr.Markdown()
116
 
117
- # [Tab de Registro igual pero con los nuevos estilos...]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
 
119
- # Segunda columna - Videos (75%)
120
- with gr.Column(scale=3): # scale=3 de 4 = 75%
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  with gr.Tabs():
122
  with gr.TabItem("Introducción"):
123
- # Contenedor para imágenes/videos con mejor estilo
124
- with gr.Box():
125
- gr.Markdown("""
126
- ### ¿Qué es AIdeaText?
127
- AIdeaText es una avanzada aplicación web diseñada para mejorar
128
- las habilidades de redacción y comprensión lectora a través
129
- del análisis visual de textos potenciado por distintas tecnologías
130
- de inteligencia artificial.
131
- """)
132
- # Aquí puedes agregar imágenes o videos con mejor diseño
133
-
134
- # [Resto de los tabs con el mismo estilo...]
 
 
 
 
 
 
 
 
135
 
136
  # Mantener la funcionalidad de navegación existente
137
- start_button = gr.Button(visible=False)
138
-
139
- return view, login_button
 
22
  return str(asset_path)
23
 
24
  def create_landing_view():
25
+ """Crea la vista de landing con tres columnas y header"""
26
  # Para el logo
27
  logo_path = get_asset_path('Logo_300x300.png', 'img_logo')
28
+ # Para iconos de social media.
29
+ social_icon_path = get_asset_path('twitter.png', 'img_social-media')
30
 
31
  with gr.Blocks(
32
  css="""
33
+ #header-logo {text-align: center; padding: 2rem 0;}
34
+ #header-logo img {max-width: 200px; height: auto;}
35
+ .container {max-width: 1200px; margin: 0 auto;}
36
+ .gr-form {border: 1px solid #e0e0e0; padding: 20px; border-radius: 8px;}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  """
38
  ) as view:
39
  # Header con logo
40
  with gr.Column(elem_id="header-logo"):
41
+ gr.HTML("""
42
+ <div>
43
+ <img src="/logo.png" alt="AIdeaText Logo"/>
44
+ </div>
45
+ <h1 style="margin-top: 1rem;">Bienvenido a AIdeaText</h1>
46
+ """)
 
47
 
48
  with gr.Row(elem_classes="container"):
49
+ # Primera columna - Tabs de Login y Registro (50%)
50
+ with gr.Column(scale=1):
51
  with gr.Tabs() as tabs:
52
  # Tab de Login
53
  with gr.TabItem("Iniciar Sesión", elem_classes="gr-form"):
 
 
 
 
 
 
 
 
 
 
54
  login_button = gr.Button(
55
  "Ingresar",
56
  variant="primary",
57
+ scale=0
58
  )
59
  login_message = gr.Markdown()
60
 
61
+ # Tab de Registro
62
+ with gr.TabItem("Solicitud de Acceso", elem_classes="gr-form"):
63
+ with gr.Column():
64
+ name = gr.Textbox(
65
+ label="Nombre Completo",
66
+ placeholder="Ej: Juan Pérez"
67
+ )
68
+ email = gr.Textbox(
69
+ label="Correo Electrónico",
70
+ placeholder="[email protected]"
71
+ )
72
+ institution = gr.Textbox(
73
+ label="Institución",
74
+ placeholder="Universidad, Colegio, Empresa, etc."
75
+ )
76
+ role = gr.Dropdown(
77
+ choices=[
78
+ "Estudiante",
79
+ "Profesor",
80
+ "Investigador",
81
+ "Otro"
82
+ ],
83
+ label="Rol",
84
+ value="Estudiante"
85
+ )
86
+ reason = gr.TextArea(
87
+ label="¿Por qué te interesa usar AIdeaText?",
88
+ placeholder="Describe brevemente tu interés en la plataforma...",
89
+ lines=4
90
+ )
91
+ register_button = gr.Button(
92
+ "Enviar Solicitud",
93
+ variant="secondary",
94
+ scale=0
95
+ )
96
+ register_message = gr.Markdown()
97
+
98
+ def handle_registration(name, email, institution, role, reason):
99
+ try:
100
+ if not all([name, email, institution, role, reason]):
101
+ return gr.Markdown("❌ Todos los campos son obligatorios")
102
+
103
+ if "@" not in email or "." not in email:
104
+ return gr.Markdown("❌ El correo electrónico no es válido")
105
+
106
+ success = store_application_request(
107
+ name=name,
108
+ email=email,
109
+ institution=institution,
110
+ current_role=role,
111
+ desired_role=role,
112
+ reason=reason
113
+ )
114
 
115
+ if success:
116
+ return gr.Markdown("✅ Solicitud enviada correctamente. Te contactaremos pronto.")
117
+ else:
118
+ return gr.Markdown("❌ Error al enviar la solicitud. Por favor, intenta nuevamente.")
119
+
120
+ except Exception as e:
121
+ return gr.Markdown(f"❌ Error: {str(e)}")
122
+
123
+ register_button.click(
124
+ fn=handle_registration,
125
+ inputs=[name, email, institution, role, reason],
126
+ outputs=register_message
127
+ )
128
+
129
+ # Segunda columna - Videos (50%)
130
+ with gr.Column(scale=1):
131
  with gr.Tabs():
132
  with gr.TabItem("Introducción"):
133
+ gr.Markdown("""
134
+ ### ¿Qué es AIdeaText?
135
+ AIdeaText es una avanzada aplicación web diseñada para mejorar las habilidades de redacción
136
+ y comprensión lectora a través del análisis visual de textos potenciado por distintas tecnologías
137
+ de inteligencia artificial.
138
+ """)
139
+
140
+ with gr.TabItem("Tutorial"):
141
+ gr.Markdown("""
142
+ ### Cómo usar AIdeaText
143
+ Aprende a utilizar todas las funcionalidades de AIdeaText
144
+ para mejorar tu escritura académica.
145
+ """)
146
+
147
+ with gr.TabItem("Ejemplos"):
148
+ gr.Markdown("""
149
+ ### Ejemplos de Uso
150
+ Mira ejemplos prácticos de cómo AIdeaText puede ayudarte
151
+ en tus tareas de escritura.
152
+ """)
153
 
154
  # Mantener la funcionalidad de navegación existente
155
+ start_button = gr.Button(visible=False)