# modules/ui/views/landing_view.py import gradio as gr from ...database.sql_db import store_application_request from datetime import datetime import uuid def create_landing_view(): """Crea la vista de landing con tres columnas""" with gr.Blocks() as view: gr.Markdown("# Bienvenido a AIdeaText") with gr.Row(): # Primera columna - Login (25%) with gr.Column(scale=1): gr.Markdown("### Iniciar Sesión") username = gr.Textbox(label="Usuario") password = gr.Textbox(label="Contraseña", type="password") login_button = gr.Button("Ingresar", variant="primary") login_message = gr.Markdown() # Segunda columna - Registro (25%) with gr.Column(scale=1): gr.Markdown("### Solicitud de Acceso") # Campos del formulario name = gr.Textbox( label="Nombre Completo", placeholder="Ej: Juan Pérez" ) email = gr.Textbox( label="Correo Electrónico", placeholder="ejemplo@dominio.com" ) institution = gr.Textbox( label="Institución", placeholder="Universidad, Colegio, Empresa, etc." ) role = gr.Dropdown( choices=[ "Estudiante", "Profesor", "Investigador", "Otro" ], label="Rol", value="Estudiante" ) reason = gr.TextArea( label="¿Por qué te interesa usar AIdeaText?", placeholder="Describe brevemente tu interés en la plataforma...", lines=4 ) register_button = gr.Button( "Enviar Solicitud", variant="secondary" ) register_message = gr.Markdown() def handle_registration(name, email, institution, role, reason): try: # Validaciones básicas if not all([name, email, institution, role, reason]): return gr.Markdown("❌ Todos los campos son obligatorios") if "@" not in email or "." not in email: return gr.Markdown("❌ El correo electrónico no es válido") # Crear y almacenar la solicitud success = store_application_request( name=name, email=email, institution=institution, current_role=role, # Campo en la base de datos desired_role=role, # Campo en la base de datos reason=reason ) if success: return gr.Markdown("✅ Solicitud enviada correctamente. Te contactaremos pronto.") else: return gr.Markdown("❌ Error al enviar la solicitud. Por favor, intenta nuevamente.") except Exception as e: return gr.Markdown(f"❌ Error: {str(e)}") # Conectar el evento del botón register_button.click( fn=handle_registration, inputs=[name, email, institution, role, reason], outputs=register_message ) # Tercera columna - Videos (50%) with gr.Column(scale=2): gr.Markdown("### Videos Tutoriales") with gr.Tabs(): with gr.TabItem("Introducción"): gr.Markdown(""" ### ¿Qué es AIdeaText? AIdeaText es una herramienta avanzada para el análisis y mejora de textos académicos. Utiliza inteligencia artificial para proporcionar retroalimentación en tiempo real sobre la estructura, coherencia y calidad de tus textos. """) with gr.TabItem("Tutorial"): gr.Markdown(""" ### Cómo usar AIdeaText Aprende a utilizar todas las funcionalidades de AIdeaText para mejorar tu escritura académica. """) with gr.TabItem("Ejemplos"): gr.Markdown(""" ### Ejemplos de Uso Mira ejemplos prácticos de cómo AIdeaText puede ayudarte en tus tareas de escritura. """) # Mantener la funcionalidad de navegación existente start_button = gr.Button(visible=False) return view, login_button