Migración completa a Clean Architecture con componentes funcionales
- Reorganización de estructura: Admin/, Public/, Shared/, Schemas/ - 12 componentes migrados: TopNotificationBar, Navbar, CtaLetsTalk, Hero, FeaturedImage, TableOfContents, CtaBoxSidebar, SocialShare, CtaPost, RelatedPost, ContactForm, Footer - Panel de administración con tabs Bootstrap 5 funcionales - Schemas JSON para configuración de componentes - Renderers dinámicos con CSSGeneratorService (cero CSS hardcodeado) - FormBuilders para UI admin con Design System consistente - Fix: Bootstrap JS cargado en header para tabs funcionales - Fix: buildTextInput maneja valores mixed (bool/string) - Eliminación de estructura legacy (src/, admin/, assets/css/componente-*) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
403
schemas/contact-form.json
Normal file
403
schemas/contact-form.json
Normal file
@@ -0,0 +1,403 @@
|
||||
{
|
||||
"component_name": "contact-form",
|
||||
"version": "1.0.0",
|
||||
"description": "Formulario de contacto con envio a webhook configurable (antes del footer)",
|
||||
"groups": {
|
||||
"visibility": {
|
||||
"label": "Visibilidad",
|
||||
"priority": 10,
|
||||
"fields": {
|
||||
"is_enabled": {
|
||||
"type": "boolean",
|
||||
"label": "Activar componente",
|
||||
"default": true,
|
||||
"editable": true,
|
||||
"required": true
|
||||
},
|
||||
"show_on_desktop": {
|
||||
"type": "boolean",
|
||||
"label": "Mostrar en escritorio",
|
||||
"default": true,
|
||||
"editable": true,
|
||||
"description": "Muestra el componente en pantallas >= 992px"
|
||||
},
|
||||
"show_on_mobile": {
|
||||
"type": "boolean",
|
||||
"label": "Mostrar en movil",
|
||||
"default": true,
|
||||
"editable": true,
|
||||
"description": "Muestra el componente en pantallas < 992px"
|
||||
},
|
||||
"show_on_pages": {
|
||||
"type": "select",
|
||||
"label": "Mostrar en",
|
||||
"default": "all",
|
||||
"editable": true,
|
||||
"options": ["all", "posts", "pages"],
|
||||
"description": "Tipos de contenido donde se muestra"
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"label": "Contenido",
|
||||
"priority": 20,
|
||||
"fields": {
|
||||
"section_title": {
|
||||
"type": "text",
|
||||
"label": "Titulo de seccion",
|
||||
"default": "¿Tienes alguna pregunta?",
|
||||
"editable": true
|
||||
},
|
||||
"section_description": {
|
||||
"type": "textarea",
|
||||
"label": "Descripcion",
|
||||
"default": "Completa el formulario y nuestro equipo te responderá en menos de 24 horas.",
|
||||
"editable": true
|
||||
},
|
||||
"submit_button_text": {
|
||||
"type": "text",
|
||||
"label": "Texto boton enviar",
|
||||
"default": "Enviar Mensaje",
|
||||
"editable": true
|
||||
},
|
||||
"submit_button_icon": {
|
||||
"type": "text",
|
||||
"label": "Icono boton",
|
||||
"default": "bi-send-fill",
|
||||
"editable": true,
|
||||
"description": "Clase de Bootstrap Icons"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contact_info": {
|
||||
"label": "Info de Contacto",
|
||||
"priority": 30,
|
||||
"fields": {
|
||||
"show_contact_info": {
|
||||
"type": "boolean",
|
||||
"label": "Mostrar info contacto",
|
||||
"default": true,
|
||||
"editable": true
|
||||
},
|
||||
"phone_label": {
|
||||
"type": "text",
|
||||
"label": "Label telefono",
|
||||
"default": "Teléfono",
|
||||
"editable": true
|
||||
},
|
||||
"phone_value": {
|
||||
"type": "text",
|
||||
"label": "Numero telefono",
|
||||
"default": "+52 55 1234 5678",
|
||||
"editable": true
|
||||
},
|
||||
"email_label": {
|
||||
"type": "text",
|
||||
"label": "Label email",
|
||||
"default": "Email",
|
||||
"editable": true
|
||||
},
|
||||
"email_value": {
|
||||
"type": "text",
|
||||
"label": "Direccion email",
|
||||
"default": "contacto@apumexico.com",
|
||||
"editable": true
|
||||
},
|
||||
"location_label": {
|
||||
"type": "text",
|
||||
"label": "Label ubicacion",
|
||||
"default": "Ubicación",
|
||||
"editable": true
|
||||
},
|
||||
"location_value": {
|
||||
"type": "text",
|
||||
"label": "Direccion ubicacion",
|
||||
"default": "Ciudad de México, México",
|
||||
"editable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"form_labels": {
|
||||
"label": "Labels del Formulario",
|
||||
"priority": 30,
|
||||
"fields": {
|
||||
"fullname_placeholder": {
|
||||
"type": "text",
|
||||
"label": "Placeholder nombre",
|
||||
"default": "Nombre completo *",
|
||||
"editable": true
|
||||
},
|
||||
"company_placeholder": {
|
||||
"type": "text",
|
||||
"label": "Placeholder empresa",
|
||||
"default": "Empresa",
|
||||
"editable": true
|
||||
},
|
||||
"whatsapp_placeholder": {
|
||||
"type": "text",
|
||||
"label": "Placeholder WhatsApp",
|
||||
"default": "WhatsApp *",
|
||||
"editable": true
|
||||
},
|
||||
"email_placeholder": {
|
||||
"type": "text",
|
||||
"label": "Placeholder email",
|
||||
"default": "Correo electrónico *",
|
||||
"editable": true
|
||||
},
|
||||
"message_placeholder": {
|
||||
"type": "text",
|
||||
"label": "Placeholder mensaje",
|
||||
"default": "¿En qué podemos ayudarte?",
|
||||
"editable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"label": "Integracion",
|
||||
"priority": 40,
|
||||
"fields": {
|
||||
"webhook_url": {
|
||||
"type": "url",
|
||||
"label": "URL del Webhook",
|
||||
"default": "",
|
||||
"editable": true,
|
||||
"description": "URL donde se enviaran los datos del formulario (no visible en frontend)",
|
||||
"secret": true
|
||||
},
|
||||
"webhook_method": {
|
||||
"type": "select",
|
||||
"label": "Metodo HTTP",
|
||||
"default": "POST",
|
||||
"editable": true,
|
||||
"options": ["POST", "GET"]
|
||||
},
|
||||
"include_page_url": {
|
||||
"type": "boolean",
|
||||
"label": "Incluir URL de pagina",
|
||||
"default": true,
|
||||
"editable": true,
|
||||
"description": "Envia la URL de la pagina donde se envio el formulario"
|
||||
},
|
||||
"include_timestamp": {
|
||||
"type": "boolean",
|
||||
"label": "Incluir timestamp",
|
||||
"default": true,
|
||||
"editable": true,
|
||||
"description": "Envia fecha/hora del envio"
|
||||
}
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"label": "Mensajes",
|
||||
"priority": 40,
|
||||
"fields": {
|
||||
"success_message": {
|
||||
"type": "textarea",
|
||||
"label": "Mensaje exito",
|
||||
"default": "¡Gracias por contactarnos! Te responderemos pronto.",
|
||||
"editable": true
|
||||
},
|
||||
"error_message": {
|
||||
"type": "textarea",
|
||||
"label": "Mensaje error",
|
||||
"default": "Hubo un error al enviar el mensaje. Por favor intenta de nuevo.",
|
||||
"editable": true
|
||||
},
|
||||
"sending_message": {
|
||||
"type": "text",
|
||||
"label": "Mensaje enviando",
|
||||
"default": "Enviando...",
|
||||
"editable": true
|
||||
},
|
||||
"validation_required": {
|
||||
"type": "text",
|
||||
"label": "Error campo requerido",
|
||||
"default": "Este campo es obligatorio",
|
||||
"editable": true
|
||||
},
|
||||
"validation_email": {
|
||||
"type": "text",
|
||||
"label": "Error email invalido",
|
||||
"default": "Por favor ingresa un email válido",
|
||||
"editable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"colors": {
|
||||
"label": "Colores",
|
||||
"priority": 50,
|
||||
"fields": {
|
||||
"section_bg_color": {
|
||||
"type": "color",
|
||||
"label": "Fondo seccion",
|
||||
"default": "rgba(108, 117, 125, 0.25)",
|
||||
"editable": true,
|
||||
"description": "bg-secondary bg-opacity-25"
|
||||
},
|
||||
"title_color": {
|
||||
"type": "color",
|
||||
"label": "Color titulo",
|
||||
"default": "#212529",
|
||||
"editable": true
|
||||
},
|
||||
"description_color": {
|
||||
"type": "color",
|
||||
"label": "Color descripcion",
|
||||
"default": "#212529",
|
||||
"editable": true
|
||||
},
|
||||
"icon_color": {
|
||||
"type": "color",
|
||||
"label": "Color iconos",
|
||||
"default": "#FF8600",
|
||||
"editable": true
|
||||
},
|
||||
"info_label_color": {
|
||||
"type": "color",
|
||||
"label": "Color labels info",
|
||||
"default": "#212529",
|
||||
"editable": true
|
||||
},
|
||||
"info_value_color": {
|
||||
"type": "color",
|
||||
"label": "Color valores info",
|
||||
"default": "#6c757d",
|
||||
"editable": true,
|
||||
"description": "text-muted"
|
||||
},
|
||||
"input_border_color": {
|
||||
"type": "color",
|
||||
"label": "Borde inputs",
|
||||
"default": "#dee2e6",
|
||||
"editable": true
|
||||
},
|
||||
"input_focus_border": {
|
||||
"type": "color",
|
||||
"label": "Borde inputs focus",
|
||||
"default": "#FF8600",
|
||||
"editable": true
|
||||
},
|
||||
"button_bg_color": {
|
||||
"type": "color",
|
||||
"label": "Fondo boton",
|
||||
"default": "#FF8600",
|
||||
"editable": true
|
||||
},
|
||||
"button_text_color": {
|
||||
"type": "color",
|
||||
"label": "Texto boton",
|
||||
"default": "#ffffff",
|
||||
"editable": true
|
||||
},
|
||||
"button_hover_bg": {
|
||||
"type": "color",
|
||||
"label": "Fondo boton hover",
|
||||
"default": "#e67a00",
|
||||
"editable": true
|
||||
},
|
||||
"success_bg_color": {
|
||||
"type": "color",
|
||||
"label": "Fondo mensaje exito",
|
||||
"default": "#d1e7dd",
|
||||
"editable": true
|
||||
},
|
||||
"success_text_color": {
|
||||
"type": "color",
|
||||
"label": "Texto mensaje exito",
|
||||
"default": "#0f5132",
|
||||
"editable": true
|
||||
},
|
||||
"error_bg_color": {
|
||||
"type": "color",
|
||||
"label": "Fondo mensaje error",
|
||||
"default": "#f8d7da",
|
||||
"editable": true
|
||||
},
|
||||
"error_text_color": {
|
||||
"type": "color",
|
||||
"label": "Texto mensaje error",
|
||||
"default": "#842029",
|
||||
"editable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"label": "Espaciado",
|
||||
"priority": 60,
|
||||
"fields": {
|
||||
"section_padding_y": {
|
||||
"type": "text",
|
||||
"label": "Padding vertical",
|
||||
"default": "3rem",
|
||||
"editable": true,
|
||||
"description": "py-5 de Bootstrap"
|
||||
},
|
||||
"section_margin_top": {
|
||||
"type": "text",
|
||||
"label": "Margen superior",
|
||||
"default": "3rem",
|
||||
"editable": true,
|
||||
"description": "mt-5 de Bootstrap"
|
||||
},
|
||||
"title_margin_bottom": {
|
||||
"type": "text",
|
||||
"label": "Margen inf. titulo",
|
||||
"default": "0.75rem",
|
||||
"editable": true,
|
||||
"description": "mb-3 de Bootstrap"
|
||||
},
|
||||
"description_margin_bottom": {
|
||||
"type": "text",
|
||||
"label": "Margen inf. descripcion",
|
||||
"default": "1.5rem",
|
||||
"editable": true,
|
||||
"description": "mb-4 de Bootstrap"
|
||||
},
|
||||
"form_gap": {
|
||||
"type": "text",
|
||||
"label": "Espacio entre campos",
|
||||
"default": "1rem",
|
||||
"editable": true,
|
||||
"description": "g-3 de Bootstrap"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visual_effects": {
|
||||
"label": "Efectos Visuales",
|
||||
"priority": 70,
|
||||
"fields": {
|
||||
"input_border_radius": {
|
||||
"type": "text",
|
||||
"label": "Radio inputs",
|
||||
"default": "6px",
|
||||
"editable": true
|
||||
},
|
||||
"button_border_radius": {
|
||||
"type": "text",
|
||||
"label": "Radio boton",
|
||||
"default": "6px",
|
||||
"editable": true
|
||||
},
|
||||
"button_padding": {
|
||||
"type": "text",
|
||||
"label": "Padding boton",
|
||||
"default": "0.75rem 2rem",
|
||||
"editable": true
|
||||
},
|
||||
"transition_duration": {
|
||||
"type": "text",
|
||||
"label": "Duracion transicion",
|
||||
"default": "0.3s",
|
||||
"editable": true
|
||||
},
|
||||
"textarea_rows": {
|
||||
"type": "text",
|
||||
"label": "Filas textarea",
|
||||
"default": "4",
|
||||
"editable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user