Fase-01: Preparación del entorno y estructura inicial

- Verificación de entorno XAMPP (PHP 8.0.30, Composer 2.9.1, WP-CLI 2.12.0)
- Configuración de Composer con PSR-4 para 24 namespaces
- Configuración de PHPUnit con 140 tests preparados
- Configuración de PHPCS con WordPress Coding Standards
- Scripts de backup y rollback con mejoras de seguridad
- Estructura de contextos (admin/, public/, shared/)
- Schemas JSON para 11 componentes del sistema
- Código fuente inicial con arquitectura limpia en src/
- Documentación de procedimientos de emergencia

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
FrankZamora
2025-11-19 16:34:49 -06:00
parent 677fbd4368
commit 90de6df77c
86 changed files with 16098 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
{
"component_name": "contact-form-section",
"version": "1.0.0",
"description": "Sección de contacto con información y formulario funcional mediante AJAX",
"groups": {
"section": {
"label": "Configuración de la Sección",
"priority": 10,
"fields": {
"show_section": {
"type": "boolean",
"label": "Mostrar sección",
"default": true,
"description": "Activar o desactivar la sección completa"
},
"section_title": {
"type": "text",
"label": "Título de la sección",
"default": "¿Tienes alguna pregunta?",
"required": true,
"description": "Título principal de la sección de contacto"
},
"section_subtitle": {
"type": "textarea",
"label": "Subtítulo",
"default": "Completa el formulario y nuestro equipo te responderá en menos de 24 horas.",
"description": "Descripción o subtítulo de la sección"
}
}
},
"contact_info": {
"label": "Información de Contacto",
"priority": 20,
"fields": {
"phone_enabled": {
"type": "boolean",
"label": "Mostrar teléfono",
"default": true
},
"phone_label": {
"type": "text",
"label": "Etiqueta de teléfono",
"default": "Teléfono"
},
"phone_value": {
"type": "text",
"label": "Número de teléfono",
"default": "+52 55 1234 5678"
},
"email_enabled": {
"type": "boolean",
"label": "Mostrar email",
"default": true
},
"email_label": {
"type": "text",
"label": "Etiqueta de email",
"default": "Email"
},
"email_value": {
"type": "email",
"label": "Dirección de email",
"default": "contacto@example.com"
},
"location_enabled": {
"type": "boolean",
"label": "Mostrar ubicación",
"default": true
},
"location_label": {
"type": "text",
"label": "Etiqueta de ubicación",
"default": "Ubicación"
},
"location_value": {
"type": "text",
"label": "Ubicación",
"default": "Ciudad de México, México"
}
}
},
"form": {
"label": "Configuración del Formulario",
"priority": 30,
"fields": {
"submit_button_text": {
"type": "text",
"label": "Texto del botón",
"default": "Enviar Mensaje",
"required": true,
"description": "Texto del botón de envío"
},
"submit_button_icon": {
"type": "text",
"label": "Ícono del botón",
"default": "bi-send-fill",
"description": "Clase de Bootstrap Icons"
},
"success_message": {
"type": "textarea",
"label": "Mensaje de éxito",
"default": "¡Gracias! Tu mensaje ha sido enviado correctamente. Te responderemos pronto.",
"description": "Mensaje al enviar exitosamente"
},
"error_message": {
"type": "textarea",
"label": "Mensaje de error",
"default": "Hubo un error al enviar el mensaje. Por favor, intenta de nuevo.",
"description": "Mensaje al fallar el envío"
},
"to_email": {
"type": "email",
"label": "Email de destino",
"default": "",
"description": "Email donde se recibirán los mensajes (deja vacío para usar el admin email)"
}
}
},
"styles": {
"label": "Estilos",
"priority": 40,
"fields": {
"background_color": {
"type": "text",
"label": "Clase de fondo",
"default": "bg-secondary bg-opacity-25",
"description": "Clase de Bootstrap para el fondo"
},
"icon_color": {
"type": "color",
"label": "Color de íconos",
"default": "#FF8600",
"description": "Color de los íconos de contacto"
},
"button_bg_color": {
"type": "color",
"label": "Color del botón",
"default": "#FF8600",
"description": "Color de fondo del botón"
},
"button_hover_bg": {
"type": "color",
"label": "Color del botón (hover)",
"default": "#FF6B00",
"description": "Color de fondo del botón al hover"
}
}
}
}
}

View File

@@ -0,0 +1,186 @@
{
"component_name": "contact-modal",
"version": "1.0.0",
"description": "Modal de contacto Bootstrap 5 con formulario AJAX para consultas de clientes",
"groups": {
"general": {
"label": "Configuración General",
"priority": 10,
"fields": {
"modal_title": {
"type": "text",
"label": "Título del modal",
"default": "¿Tienes alguna pregunta?",
"required": true,
"description": "Título que aparece en el encabezado del modal"
},
"modal_description": {
"type": "textarea",
"label": "Descripción",
"default": "Completa el formulario y nuestro equipo te responderá en menos de 24 horas.",
"description": "Texto descriptivo debajo del título"
}
}
},
"form_fields": {
"label": "Campos del Formulario",
"priority": 20,
"fields": {
"fullName": {
"type": "object",
"label": "Campo Nombre Completo",
"default": {
"label": "Nombre completo",
"placeholder": "",
"required": true
},
"fields": {
"label": {"type": "text", "label": "Etiqueta"},
"placeholder": {"type": "text", "label": "Placeholder"},
"required": {"type": "boolean", "label": "Requerido"}
}
},
"company": {
"type": "object",
"label": "Campo Empresa",
"default": {
"label": "Empresa",
"placeholder": "",
"required": false
},
"fields": {
"label": {"type": "text", "label": "Etiqueta"},
"placeholder": {"type": "text", "label": "Placeholder"},
"required": {"type": "boolean", "label": "Requerido"}
}
},
"whatsapp": {
"type": "object",
"label": "Campo WhatsApp",
"default": {
"label": "WhatsApp",
"placeholder": "",
"required": true
},
"fields": {
"label": {"type": "text", "label": "Etiqueta"},
"placeholder": {"type": "text", "label": "Placeholder"},
"required": {"type": "boolean", "label": "Requerido"}
}
},
"email": {
"type": "object",
"label": "Campo Email",
"default": {
"label": "Correo electrónico",
"placeholder": "",
"required": true
},
"fields": {
"label": {"type": "text", "label": "Etiqueta"},
"placeholder": {"type": "text", "label": "Placeholder"},
"required": {"type": "boolean", "label": "Requerido"}
}
},
"comments": {
"type": "object",
"label": "Campo Comentarios",
"default": {
"label": "¿En qué podemos ayudarte?",
"placeholder": "",
"required": false,
"rows": 4
},
"fields": {
"label": {"type": "text", "label": "Etiqueta"},
"placeholder": {"type": "text", "label": "Placeholder"},
"required": {"type": "boolean", "label": "Requerido"},
"rows": {"type": "number", "label": "Filas"}
}
}
}
},
"submit_button": {
"label": "Botón de Envío",
"priority": 30,
"fields": {
"text": {
"type": "text",
"label": "Texto del botón",
"default": "Enviar Mensaje",
"required": true,
"description": "Texto que aparece en el botón de envío"
},
"icon": {
"type": "text",
"label": "Ícono del botón",
"default": "bi-send-fill",
"description": "Clase de Bootstrap Icons (ej: bi-send-fill)"
}
}
},
"messages": {
"label": "Mensajes del Sistema",
"priority": 40,
"fields": {
"success": {
"type": "textarea",
"label": "Mensaje de éxito",
"default": "Mensaje enviado exitosamente. Te responderemos pronto.",
"description": "Mensaje cuando el formulario se envía correctamente"
},
"error": {
"type": "textarea",
"label": "Mensaje de error",
"default": "Error al enviar el mensaje. Por favor intenta nuevamente.",
"description": "Mensaje cuando ocurre un error"
},
"validation_error": {
"type": "textarea",
"label": "Mensaje de validación",
"default": "Por favor completa todos los campos requeridos.",
"description": "Mensaje cuando faltan campos obligatorios"
}
}
},
"settings": {
"label": "Configuración Avanzada",
"priority": 50,
"fields": {
"modal_id": {
"type": "text",
"label": "ID del modal",
"default": "contactModal",
"readonly": true,
"description": "ID HTML del modal (no modificar)"
},
"form_id": {
"type": "text",
"label": "ID del formulario",
"default": "modalContactForm",
"readonly": true,
"description": "ID HTML del formulario (no modificar)"
},
"ajax_action": {
"type": "text",
"label": "Acción AJAX",
"default": "roi_contact_modal_submit",
"readonly": true,
"description": "Nombre de la acción AJAX (no modificar)"
},
"email_to": {
"type": "email",
"label": "Email de destino",
"default": "",
"description": "Email donde se recibirán los mensajes (vacío = admin email)"
},
"email_subject": {
"type": "text",
"label": "Asunto del email",
"default": "Nuevo mensaje de contacto desde el sitio web",
"description": "Asunto del email que se enviará"
}
}
}
}
}

View File

@@ -0,0 +1,208 @@
{
"component_name": "cta-below-content",
"version": "1.0.0",
"description": "Call to Action que se muestra debajo del contenido del post",
"groups": {
"visibility": {
"label": "Visibilidad",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Activar CTA",
"default": true,
"required": true,
"description": "Activa o desactiva el componente de Call to Action"
},
"layout": {
"type": "select",
"label": "Layout del CTA",
"default": "two-column",
"options": {
"two-column": "Dos columnas (texto izquierda, botón derecha)",
"centered": "Centrado",
"stacked": "Apilado"
},
"required": true,
"description": "Distribución del contenido en el CTA"
}
}
},
"content": {
"label": "Contenido",
"priority": 20,
"fields": {
"title": {
"type": "text",
"label": "Título del CTA",
"default": "Accede a 200,000+ Análisis de Precios Unitarios",
"maxlength": 200,
"required": true,
"description": "Título principal que aparece en el CTA"
},
"subtitle": {
"type": "textarea",
"label": "Subtítulo del CTA",
"default": "Consulta estructuras completas, insumos y dosificaciones de los APUs más utilizados en construcción en México.",
"maxlength": 500,
"rows": 3,
"required": true,
"description": "Texto descriptivo que complementa el título"
}
}
},
"button": {
"label": "Configuración del Botón",
"priority": 30,
"fields": {
"button_text": {
"type": "text",
"label": "Texto del botón",
"default": "Ver Catálogo Completo",
"maxlength": 100,
"required": true,
"description": "Texto que aparece en el botón de acción"
},
"button_url": {
"type": "url",
"label": "URL del botón",
"default": "#",
"required": true,
"description": "URL de destino al hacer clic en el botón"
},
"button_target": {
"type": "select",
"label": "Abrir enlace en",
"default": "_self",
"options": {
"_self": "Misma ventana",
"_blank": "Nueva ventana"
},
"description": "Atributo target del enlace del botón"
},
"button_color": {
"type": "select",
"label": "Color del botón",
"default": "light",
"options": {
"light": "Blanco",
"dark": "Negro",
"primary": "Azul",
"success": "Verde",
"danger": "Rojo",
"warning": "Amarillo"
},
"description": "Color de fondo del botón"
},
"button_size": {
"type": "select",
"label": "Tamaño del botón",
"default": "lg",
"options": {
"sm": "Pequeño",
"md": "Mediano",
"lg": "Grande"
},
"description": "Tamaño del botón de acción"
},
"show_icon": {
"type": "boolean",
"label": "Mostrar icono en botón",
"default": true,
"description": "Muestra u oculta el icono de flecha en el botón"
},
"icon_class": {
"type": "text",
"label": "Clase del icono",
"default": "bi bi-arrow-right",
"conditional_logic": {
"field": "show_icon",
"operator": "==",
"value": true
},
"description": "Clase de Bootstrap Icons para el icono del botón"
}
}
},
"styles": {
"label": "Estilos y Colores",
"priority": 40,
"fields": {
"gradient_start_color": {
"type": "color",
"label": "Color de inicio del gradiente",
"default": "#FF8600",
"description": "Color hexadecimal de inicio del gradiente"
},
"gradient_end_color": {
"type": "color",
"label": "Color de fin del gradiente",
"default": "#FFB800",
"description": "Color hexadecimal de fin del gradiente"
},
"gradient_angle": {
"type": "number",
"label": "Ángulo del gradiente",
"default": 135,
"min": 0,
"max": 360,
"description": "Ángulo en grados del gradiente (0-360)"
},
"text_color": {
"type": "color",
"label": "Color del texto",
"default": "#FFFFFF",
"description": "Color del texto del título y subtítulo"
},
"container_classes": {
"type": "text",
"label": "Clases CSS del contenedor",
"default": "my-5 p-4 rounded cta-section",
"description": "Clases CSS adicionales para el contenedor principal"
}
}
},
"advanced": {
"label": "Configuración Avanzada",
"priority": 50,
"fields": {
"animation_enabled": {
"type": "boolean",
"label": "Activar animación de entrada",
"default": false,
"description": "Activa animaciones de entrada para hacer el CTA más llamativo"
},
"animation_type": {
"type": "select",
"label": "Tipo de animación",
"default": "fade-in",
"options": {
"fade-in": "Fade In",
"slide-up": "Slide Up",
"scale": "Scale"
},
"conditional_logic": {
"field": "animation_enabled",
"operator": "==",
"value": true
},
"description": "Tipo de animación de entrada"
},
"animation_duration": {
"type": "number",
"label": "Duración de animación (ms)",
"default": 500,
"min": 100,
"max": 3000,
"step": 50,
"conditional_logic": {
"field": "animation_enabled",
"operator": "==",
"value": true
},
"description": "Duración de la animación en milisegundos"
}
}
}
}
}

View File

@@ -0,0 +1,191 @@
{
"component_name": "cta-box-sidebar",
"version": "1.0.0",
"description": "CTA Box para sidebar con llamado a la acción destacado",
"groups": {
"content": {
"label": "Contenido del CTA",
"priority": 10,
"fields": {
"title": {
"type": "text",
"label": "Título",
"default": "¿Listo para potenciar tus proyectos?",
"maxlength": 100,
"required": true,
"description": "Título principal del CTA box"
},
"description": {
"type": "textarea",
"label": "Descripción",
"default": "Accede a nuestra biblioteca completa de APUs y herramientas profesionales.",
"maxlength": 200,
"required": true,
"description": "Texto descriptivo del CTA"
}
}
},
"button": {
"label": "Configuración del Botón",
"priority": 20,
"fields": {
"button_text": {
"type": "text",
"label": "Texto del botón",
"default": "Solicitar Demo",
"maxlength": 50,
"required": true,
"description": "Texto que aparece en el botón CTA"
},
"button_icon": {
"type": "text",
"label": "Ícono del botón",
"default": "bi-calendar-check",
"description": "Clase de Bootstrap Icons (ej: bi-calendar-check)"
},
"button_action": {
"type": "select",
"label": "Acción del botón",
"default": "modal",
"options": {
"modal": "Abrir Modal",
"link": "Ir a URL",
"custom": "JavaScript Personalizado"
},
"required": true,
"description": "Tipo de acción al hacer clic"
},
"modal_target": {
"type": "text",
"label": "ID del modal",
"default": "#contactModal",
"description": "ID del modal a abrir (si button_action es 'modal')"
},
"link_url": {
"type": "url",
"label": "URL de destino",
"default": "",
"description": "URL del enlace (si button_action es 'link')"
},
"link_target": {
"type": "select",
"label": "Abrir enlace en",
"default": "_self",
"options": {
"_self": "Misma pestaña",
"_blank": "Nueva pestaña"
},
"description": "Target del enlace"
},
"custom_onclick": {
"type": "textarea",
"label": "JavaScript personalizado",
"default": "",
"description": "Código JavaScript para onclick (si button_action es 'custom')"
}
}
},
"config": {
"label": "Configuración General",
"priority": 30,
"fields": {
"height": {
"type": "text",
"label": "Altura del CTA box",
"default": "250px",
"description": "Altura del CTA box (CSS válido)"
},
"show_on_mobile": {
"type": "boolean",
"label": "Mostrar en móviles",
"default": true,
"description": "Mostrar en dispositivos móviles"
},
"custom_css_class": {
"type": "text",
"label": "Clase CSS personalizada",
"default": "",
"description": "Clase CSS adicional para el contenedor"
}
}
},
"styles": {
"label": "Estilos de Color",
"priority": 40,
"fields": {
"background_gradient": {
"type": "boolean",
"label": "Usar gradiente",
"default": false,
"description": "Usar gradiente en vez de color sólido"
},
"background_color": {
"type": "color",
"label": "Color de fondo",
"default": "#FF8600",
"description": "Color de fondo del CTA box"
},
"gradient_start": {
"type": "color",
"label": "Color inicial del gradiente",
"default": "#FF8600",
"description": "Color inicial del gradiente"
},
"gradient_end": {
"type": "color",
"label": "Color final del gradiente",
"default": "#FF6B00",
"description": "Color final del gradiente"
},
"title_color": {
"type": "color",
"label": "Color del título",
"default": "#ffffff",
"description": "Color del texto del título"
},
"description_color": {
"type": "text",
"label": "Color de la descripción",
"default": "rgba(255, 255, 255, 0.95)",
"description": "Color del texto de la descripción"
},
"button_bg_color": {
"type": "color",
"label": "Color de fondo del botón",
"default": "#ffffff",
"description": "Color de fondo del botón"
},
"button_text_color": {
"type": "color",
"label": "Color del texto del botón",
"default": "#FF8600",
"description": "Color del texto del botón"
},
"button_hover_bg": {
"type": "color",
"label": "Color de fondo del botón (hover)",
"default": "#0E2337",
"description": "Color de fondo del botón al hover"
},
"button_hover_text": {
"type": "color",
"label": "Color del texto del botón (hover)",
"default": "#ffffff",
"description": "Color del texto del botón al hover"
},
"shadow_color": {
"type": "text",
"label": "Color de sombra",
"default": "rgba(255, 133, 0, 0.2)",
"description": "Color de la sombra"
},
"border_radius": {
"type": "text",
"label": "Radio del borde",
"default": "8px",
"description": "Radio del borde (CSS válido)"
}
}
}
}
}

View File

@@ -0,0 +1,220 @@
{
"component_name": "footer",
"version": "1.0.0",
"description": "Footer completo del sitio con 3 widgets, newsletter, copyright y redes sociales",
"groups": {
"widget_1": {
"label": "Widget 1",
"priority": 10,
"fields": {
"enabled": {
"type": "boolean",
"label": "Activar widget 1",
"default": true,
"description": "Mostrar u ocultar este widget"
},
"title": {
"type": "text",
"label": "Título del widget",
"default": "Recursos",
"description": "Título de la columna del widget"
},
"links": {
"type": "repeater",
"label": "Enlaces",
"description": "Lista de enlaces del widget",
"default": [
{"text": "Home", "url": "/"},
{"text": "Features", "url": "#features"},
{"text": "Pricing", "url": "#pricing"},
{"text": "FAQs", "url": "#faqs"},
{"text": "About", "url": "#about"}
],
"fields": {
"text": {
"type": "text",
"label": "Texto del enlace",
"required": true
},
"url": {
"type": "text",
"label": "URL",
"required": true
}
}
}
}
},
"widget_2": {
"label": "Widget 2",
"priority": 20,
"fields": {
"enabled": {
"type": "boolean",
"label": "Activar widget 2",
"default": true
},
"title": {
"type": "text",
"label": "Título del widget",
"default": "Servicios"
},
"links": {
"type": "repeater",
"label": "Enlaces",
"default": [
{"text": "Análisis", "url": "#analisis"},
{"text": "Presupuestos", "url": "#presupuestos"},
{"text": "Cotizaciones", "url": "#cotizaciones"},
{"text": "Proyectos", "url": "#proyectos"}
],
"fields": {
"text": {"type": "text", "label": "Texto", "required": true},
"url": {"type": "text", "label": "URL", "required": true}
}
}
}
},
"widget_3": {
"label": "Widget 3",
"priority": 30,
"fields": {
"enabled": {
"type": "boolean",
"label": "Activar widget 3",
"default": true
},
"title": {
"type": "text",
"label": "Título del widget",
"default": "Empresa"
},
"links": {
"type": "repeater",
"label": "Enlaces",
"default": [
{"text": "Acerca de", "url": "#acerca"},
{"text": "Blog", "url": "/blog"},
{"text": "Contacto", "url": "#contacto"},
{"text": "Política de Privacidad", "url": "/privacidad"}
],
"fields": {
"text": {"type": "text", "label": "Texto", "required": true},
"url": {"type": "text", "label": "URL", "required": true}
}
}
}
},
"newsletter": {
"label": "Newsletter",
"priority": 40,
"fields": {
"enabled": {
"type": "boolean",
"label": "Activar newsletter",
"default": true,
"description": "Mostrar u ocultar sección de newsletter"
},
"title": {
"type": "text",
"label": "Título",
"default": "Suscríbete a nuestro newsletter",
"required": true,
"description": "Título de la sección de newsletter"
},
"description": {
"type": "textarea",
"label": "Descripción",
"default": "Recibe actualizaciones mensuales sobre nuestros productos y servicios.",
"description": "Texto descriptivo debajo del título"
},
"placeholder": {
"type": "text",
"label": "Placeholder del email",
"default": "Correo electrónico",
"description": "Texto placeholder del campo de email"
},
"button_text": {
"type": "text",
"label": "Texto del botón",
"default": "Suscribirse",
"required": true,
"description": "Texto del botón de suscripción"
}
}
},
"copyright": {
"label": "Copyright",
"priority": 50,
"fields": {
"text": {
"type": "text",
"label": "Texto de copyright",
"default": "ROI Theme. Todos los derechos reservados.",
"required": true,
"description": "Texto que aparece después del año"
},
"year_auto": {
"type": "boolean",
"label": "Año automático",
"default": true,
"description": "Mostrar el año actual automáticamente"
}
}
},
"social_links": {
"label": "Redes Sociales",
"priority": 60,
"fields": {
"twitter": {
"type": "text",
"label": "Twitter URL",
"default": "",
"description": "URL completa de perfil de Twitter (deja vacío para ocultar)"
},
"instagram": {
"type": "text",
"label": "Instagram URL",
"default": "",
"description": "URL completa de perfil de Instagram"
},
"facebook": {
"type": "text",
"label": "Facebook URL",
"default": "",
"description": "URL completa de página de Facebook"
},
"linkedin": {
"type": "text",
"label": "LinkedIn URL",
"default": "",
"description": "URL completa de perfil o página de LinkedIn"
}
}
},
"styles": {
"label": "Estilos",
"priority": 70,
"fields": {
"background_color": {
"type": "text",
"label": "Clase de fondo",
"default": "bg-dark",
"description": "Clase de Bootstrap para el fondo (ej: bg-dark, bg-secondary)"
},
"text_color": {
"type": "text",
"label": "Clase de color de texto",
"default": "text-white",
"description": "Clase de Bootstrap para el color de texto"
},
"link_hover_color": {
"type": "color",
"label": "Color de enlaces al hover",
"default": "#FF8600",
"description": "Color de los enlaces cuando se pasa el mouse sobre ellos"
}
}
}
}
}

View File

@@ -0,0 +1,410 @@
{
"component_name": "hero-section",
"version": "1.0.0",
"description": "Sección hero con badges de categorías y título H1 con gradiente",
"groups": {
"visibility": {
"label": "Visibilidad",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Mostrar hero section",
"default": true,
"required": true,
"description": "Activa o desactiva la sección hero"
},
"show_on_pages": {
"type": "select",
"label": "Mostrar en",
"default": "posts",
"options": {
"all": "Todas las páginas",
"home": "Solo página de inicio",
"posts": "Solo posts individuales",
"pages": "Solo páginas",
"custom": "Tipos de post específicos"
},
"required": true,
"description": "Define en qué páginas se mostrará la hero section"
},
"custom_post_types": {
"type": "text",
"label": "Tipos de post personalizados",
"default": "",
"placeholder": "Ej: post,page,producto",
"conditional_logic": {
"field": "show_on_pages",
"operator": "==",
"value": "custom"
},
"description": "Slugs de tipos de post separados por comas"
}
}
},
"categories": {
"label": "Badges de Categorías",
"priority": 20,
"fields": {
"show_categories": {
"type": "boolean",
"label": "Mostrar badges de categorías",
"default": true,
"description": "Muestra badges con las categorías del post"
},
"categories_source": {
"type": "select",
"label": "Fuente de categorías",
"default": "post_categories",
"options": {
"post_categories": "Categorías del post",
"post_tags": "Etiquetas del post",
"custom_taxonomy": "Taxonomía personalizada",
"custom_list": "Lista personalizada"
},
"conditional_logic": {
"field": "show_categories",
"operator": "==",
"value": true
},
"required": true,
"description": "Define de dónde obtener las categorías"
},
"custom_taxonomy_name": {
"type": "text",
"label": "Nombre de taxonomía personalizada",
"default": "",
"placeholder": "Ej: project_category",
"conditional_logic": {
"field": "categories_source",
"operator": "==",
"value": "custom_taxonomy"
},
"description": "Slug de la taxonomía personalizada"
},
"custom_categories_list": {
"type": "textarea",
"label": "Lista personalizada de categorías",
"default": "",
"placeholder": "Análisis de Precios|#\nConstrucción|#\nMateriales|#",
"rows": 5,
"conditional_logic": {
"field": "categories_source",
"operator": "==",
"value": "custom_list"
},
"description": "Una categoría por línea en formato: Nombre|URL"
},
"max_categories": {
"type": "number",
"label": "Máximo de categorías a mostrar",
"default": 5,
"min": 1,
"max": 20,
"conditional_logic": {
"field": "show_categories",
"operator": "==",
"value": true
},
"description": "Número máximo de badges a mostrar"
},
"category_icon": {
"type": "text",
"label": "Ícono de categoría",
"default": "bi-folder-fill",
"placeholder": "Ej: bi-folder-fill",
"conditional_logic": {
"field": "show_categories",
"operator": "==",
"value": true
},
"description": "Clase del ícono Bootstrap para los badges"
},
"categories_alignment": {
"type": "select",
"label": "Alineación de categorías",
"default": "center",
"options": {
"left": "Izquierda",
"center": "Centro",
"right": "Derecha"
},
"conditional_logic": {
"field": "show_categories",
"operator": "==",
"value": true
},
"description": "Alineación de los badges de categorías"
}
}
},
"title": {
"label": "Título Principal",
"priority": 30,
"fields": {
"title_source": {
"type": "select",
"label": "Fuente del título",
"default": "post_title",
"options": {
"post_title": "Título del post",
"custom_field": "Campo personalizado",
"custom_text": "Texto personalizado"
},
"required": true,
"description": "Define de dónde obtener el texto del título"
},
"custom_field_name": {
"type": "text",
"label": "Nombre del campo personalizado",
"default": "",
"placeholder": "Ej: hero_title",
"conditional_logic": {
"field": "title_source",
"operator": "==",
"value": "custom_field"
},
"description": "Nombre del custom field de WordPress"
},
"custom_text": {
"type": "textarea",
"label": "Texto personalizado",
"default": "",
"rows": 3,
"maxlength": 500,
"conditional_logic": {
"field": "title_source",
"operator": "==",
"value": "custom_text"
},
"description": "Texto personalizado para el título"
},
"title_tag": {
"type": "select",
"label": "Etiqueta HTML del título",
"default": "h1",
"options": {
"h1": "H1",
"h2": "H2",
"h3": "H3",
"div": "DIV"
},
"description": "Etiqueta HTML para el título"
},
"title_classes": {
"type": "text",
"label": "Clases CSS adicionales",
"default": "display-5 fw-bold",
"placeholder": "Ej: display-5 fw-bold",
"description": "Clases CSS adicionales para el título"
},
"title_alignment": {
"type": "select",
"label": "Alineación del título",
"default": "center",
"options": {
"left": "Izquierda",
"center": "Centro",
"right": "Derecha"
},
"description": "Alineación del título"
},
"enable_gradient": {
"type": "boolean",
"label": "Activar gradiente en el texto",
"default": false,
"description": "Aplica efecto de gradiente al texto del título"
},
"gradient_color_start": {
"type": "color",
"label": "Color inicial del gradiente",
"default": "#1e3a5f",
"conditional_logic": {
"field": "enable_gradient",
"operator": "==",
"value": true
},
"description": "Color de inicio del gradiente"
},
"gradient_color_end": {
"type": "color",
"label": "Color final del gradiente",
"default": "#FF8600",
"conditional_logic": {
"field": "enable_gradient",
"operator": "==",
"value": true
},
"description": "Color final del gradiente"
},
"gradient_direction": {
"type": "select",
"label": "Dirección del gradiente",
"default": "to-right",
"options": {
"to-right": "Izquierda a derecha",
"to-left": "Derecha a izquierda",
"to-bottom": "Arriba a abajo",
"to-top": "Abajo a arriba",
"diagonal": "Diagonal"
},
"conditional_logic": {
"field": "enable_gradient",
"operator": "==",
"value": true
},
"description": "Dirección del gradiente"
}
}
},
"styles": {
"label": "Estilos",
"priority": 40,
"fields": {
"background_type": {
"type": "select",
"label": "Tipo de fondo",
"default": "gradient",
"options": {
"color": "Color sólido",
"gradient": "Gradiente",
"image": "Imagen",
"none": "Sin fondo"
},
"required": true,
"description": "Tipo de fondo para la hero section"
},
"background_color": {
"type": "color",
"label": "Color de fondo",
"default": "#1e3a5f",
"conditional_logic": {
"field": "background_type",
"operator": "==",
"value": "color"
},
"description": "Color sólido de fondo"
},
"gradient_start_color": {
"type": "color",
"label": "Color inicial del gradiente",
"default": "#1e3a5f",
"conditional_logic": {
"field": "background_type",
"operator": "==",
"value": "gradient"
},
"description": "Color de inicio del gradiente de fondo"
},
"gradient_end_color": {
"type": "color",
"label": "Color final del gradiente",
"default": "#2c5282",
"conditional_logic": {
"field": "background_type",
"operator": "==",
"value": "gradient"
},
"description": "Color final del gradiente de fondo"
},
"gradient_angle": {
"type": "number",
"label": "Ángulo del gradiente (grados)",
"default": 135,
"min": 0,
"max": 360,
"conditional_logic": {
"field": "background_type",
"operator": "==",
"value": "gradient"
},
"description": "Ángulo del gradiente en grados (0-360)"
},
"background_image_url": {
"type": "media",
"label": "Imagen de fondo",
"default": "",
"media_type": "image",
"conditional_logic": {
"field": "background_type",
"operator": "==",
"value": "image"
},
"description": "Imagen de fondo para la hero section"
},
"background_overlay": {
"type": "boolean",
"label": "Overlay oscuro sobre imagen",
"default": true,
"conditional_logic": {
"field": "background_type",
"operator": "==",
"value": "image"
},
"description": "Agrega capa oscura sobre la imagen de fondo"
},
"overlay_opacity": {
"type": "number",
"label": "Opacidad del overlay (%)",
"default": 60,
"min": 0,
"max": 100,
"conditional_logic": {
"field": "background_overlay",
"operator": "==",
"value": true
},
"description": "Opacidad de la capa oscura (0-100)"
},
"text_color": {
"type": "color",
"label": "Color del texto",
"default": "#FFFFFF",
"description": "Color del texto del título y elementos"
},
"padding_vertical": {
"type": "select",
"label": "Padding vertical",
"default": "normal",
"options": {
"compact": "Compacto (2rem)",
"normal": "Normal (3rem)",
"spacious": "Espacioso (4rem)",
"extra-spacious": "Extra espacioso (5rem)"
},
"description": "Espaciado vertical de la sección"
},
"margin_bottom": {
"type": "select",
"label": "Margen inferior",
"default": "normal",
"options": {
"none": "Sin margen",
"small": "Pequeño (1rem)",
"normal": "Normal (1.5rem)",
"large": "Grande (2rem)"
},
"description": "Margen inferior de la sección"
},
"category_badge_background": {
"type": "color",
"label": "Fondo de badges",
"default": "rgba(255, 255, 255, 0.2)",
"description": "Color de fondo de los badges de categorías"
},
"category_badge_text_color": {
"type": "color",
"label": "Color del texto de badges",
"default": "#FFFFFF",
"description": "Color del texto en los badges de categorías"
},
"category_badge_blur": {
"type": "boolean",
"label": "Efecto blur en badges",
"default": true,
"description": "Aplica efecto de desenfoque (backdrop-filter) a los badges"
}
}
}
}
}

View File

@@ -0,0 +1,421 @@
{
"component_name": "navbar",
"version": "1.0.0",
"description": "Barra de navegación principal con menú Bootstrap, logo y botón CTA",
"groups": {
"visibility": {
"label": "Visibilidad",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Mostrar navbar",
"default": true,
"required": true,
"description": "Activa o desactiva la barra de navegación"
},
"is_sticky": {
"type": "boolean",
"label": "Navbar fijo (sticky)",
"default": true,
"description": "Mantiene el navbar fijo al hacer scroll"
},
"hide_on_scroll": {
"type": "boolean",
"label": "Ocultar al hacer scroll hacia abajo",
"default": false,
"description": "Oculta el navbar cuando el usuario hace scroll hacia abajo"
},
"show_on_mobile": {
"type": "boolean",
"label": "Mostrar en dispositivos móviles",
"default": true,
"description": "Muestra el navbar en pantallas pequeñas con menú hamburguesa"
}
}
},
"logo": {
"label": "Logo",
"priority": 20,
"fields": {
"logo_type": {
"type": "select",
"label": "Tipo de logo",
"default": "image",
"options": {
"image": "Imagen",
"text": "Texto",
"none": "Sin logo"
},
"required": true,
"description": "Define el tipo de logo a mostrar"
},
"logo_image_url": {
"type": "media",
"label": "Imagen del logo",
"default": "",
"media_type": "image",
"conditional_logic": {
"field": "logo_type",
"operator": "==",
"value": "image"
},
"required": true,
"description": "Sube la imagen del logo (recomendado: PNG transparente)"
},
"logo_image_width": {
"type": "number",
"label": "Ancho del logo (px)",
"default": 150,
"min": 50,
"max": 400,
"conditional_logic": {
"field": "logo_type",
"operator": "==",
"value": "image"
},
"description": "Ancho del logo en píxeles"
},
"logo_text": {
"type": "text",
"label": "Texto del logo",
"default": "",
"maxlength": 50,
"conditional_logic": {
"field": "logo_type",
"operator": "==",
"value": "text"
},
"description": "Texto a mostrar como logo"
},
"logo_link": {
"type": "url",
"label": "Enlace del logo",
"default": "",
"placeholder": "Dejar vacío para usar la URL del home",
"description": "URL de destino al hacer clic en el logo"
},
"logo_position": {
"type": "select",
"label": "Posición del logo",
"default": "left",
"options": {
"left": "Izquierda",
"center": "Centro",
"right": "Derecha"
},
"description": "Posición del logo en el navbar"
}
}
},
"menu": {
"label": "Menú de Navegación",
"priority": 30,
"fields": {
"menu_location": {
"type": "select",
"label": "Ubicación del menú",
"default": "primary",
"options": {
"primary": "Menú Principal",
"secondary": "Menú Secundario",
"custom": "Menú personalizado"
},
"required": true,
"description": "Selecciona qué menú de WordPress mostrar"
},
"custom_menu_id": {
"type": "number",
"label": "ID del menú personalizado",
"default": 0,
"min": 0,
"conditional_logic": {
"field": "menu_location",
"operator": "==",
"value": "custom"
},
"description": "ID del menú personalizado de WordPress"
},
"menu_alignment": {
"type": "select",
"label": "Alineación del menú",
"default": "left",
"options": {
"left": "Izquierda",
"center": "Centro",
"right": "Derecha"
},
"description": "Alineación de los items del menú"
},
"enable_dropdowns": {
"type": "boolean",
"label": "Habilitar menús desplegables",
"default": true,
"description": "Permite submenús desplegables"
},
"dropdown_animation": {
"type": "select",
"label": "Animación de dropdowns",
"default": "fade",
"options": {
"none": "Sin animación",
"fade": "Aparecer gradualmente",
"slide": "Deslizar"
},
"conditional_logic": {
"field": "enable_dropdowns",
"operator": "==",
"value": true
},
"description": "Tipo de animación para los submenús"
},
"mobile_breakpoint": {
"type": "select",
"label": "Breakpoint para menú móvil",
"default": "lg",
"options": {
"sm": "Small (576px)",
"md": "Medium (768px)",
"lg": "Large (992px)",
"xl": "Extra Large (1200px)"
},
"description": "Punto de quiebre para mostrar menú hamburguesa"
}
}
},
"cta_button": {
"label": "Botón CTA (Call to Action)",
"priority": 40,
"fields": {
"button_enabled": {
"type": "boolean",
"label": "Mostrar botón CTA",
"default": true,
"description": "Activa o desactiva el botón de llamada a la acción"
},
"button_text": {
"type": "text",
"label": "Texto del botón",
"default": "Let's Talk",
"maxlength": 30,
"conditional_logic": {
"field": "button_enabled",
"operator": "==",
"value": true
},
"required": true,
"description": "Texto que aparece en el botón"
},
"button_icon": {
"type": "text",
"label": "Ícono del botón",
"default": "bi-lightning-charge-fill",
"placeholder": "Ej: bi-lightning-charge-fill",
"conditional_logic": {
"field": "button_enabled",
"operator": "==",
"value": true
},
"description": "Clase del ícono Bootstrap (dejar vacío para sin ícono)"
},
"button_action_type": {
"type": "select",
"label": "Tipo de acción del botón",
"default": "modal",
"options": {
"modal": "Abrir modal",
"link": "Ir a URL",
"scroll": "Scroll a sección"
},
"conditional_logic": {
"field": "button_enabled",
"operator": "==",
"value": true
},
"required": true,
"description": "Acción que se ejecuta al hacer clic"
},
"button_modal_target": {
"type": "text",
"label": "ID del modal",
"default": "#contactModal",
"placeholder": "#contactModal",
"conditional_logic": {
"field": "button_action_type",
"operator": "==",
"value": "modal"
},
"required": true,
"description": "ID del modal de Bootstrap a abrir (incluir #)"
},
"button_link_url": {
"type": "url",
"label": "URL del enlace",
"default": "",
"placeholder": "https://",
"conditional_logic": {
"field": "button_action_type",
"operator": "==",
"value": "link"
},
"required": true,
"description": "URL de destino del botón"
},
"button_link_target": {
"type": "select",
"label": "Abrir enlace en",
"default": "_self",
"options": {
"_self": "Misma ventana",
"_blank": "Nueva ventana"
},
"conditional_logic": {
"field": "button_action_type",
"operator": "==",
"value": "link"
},
"description": "Destino del enlace"
},
"button_scroll_target": {
"type": "text",
"label": "ID de la sección",
"default": "",
"placeholder": "#contact",
"conditional_logic": {
"field": "button_action_type",
"operator": "==",
"value": "scroll"
},
"required": true,
"description": "ID de la sección a la que hacer scroll (incluir #)"
},
"button_position": {
"type": "select",
"label": "Posición del botón",
"default": "right",
"options": {
"left": "Antes del menú",
"right": "Después del menú"
},
"conditional_logic": {
"field": "button_enabled",
"operator": "==",
"value": true
},
"description": "Ubicación del botón en el navbar"
}
}
},
"styles": {
"label": "Estilos",
"priority": 50,
"fields": {
"background_color": {
"type": "color",
"label": "Color de fondo",
"default": "#1e3a5f",
"description": "Color de fondo del navbar (por defecto: navy primary)"
},
"text_color": {
"type": "color",
"label": "Color del texto",
"default": "#FFFFFF",
"description": "Color del texto de los links del menú"
},
"hover_color": {
"type": "color",
"label": "Color hover",
"default": "#FF8600",
"description": "Color al pasar el mouse sobre los links (por defecto: orange primary)"
},
"active_color": {
"type": "color",
"label": "Color del item activo",
"default": "#FF8600",
"description": "Color del item de menú activo/actual"
},
"button_background": {
"type": "color",
"label": "Color de fondo del botón",
"default": "#FF8600",
"description": "Color de fondo del botón CTA"
},
"button_text_color": {
"type": "color",
"label": "Color del texto del botón",
"default": "#FFFFFF",
"description": "Color del texto del botón CTA"
},
"button_hover_background": {
"type": "color",
"label": "Color hover del botón",
"default": "#FF6B35",
"description": "Color de fondo del botón al hacer hover"
},
"padding_vertical": {
"type": "select",
"label": "Padding vertical",
"default": "normal",
"options": {
"compact": "Compacto (0.5rem)",
"normal": "Normal (1rem)",
"spacious": "Espacioso (1.5rem)"
},
"description": "Espaciado vertical del navbar"
},
"shadow_enabled": {
"type": "boolean",
"label": "Activar sombra",
"default": true,
"description": "Agrega sombra debajo del navbar"
},
"shadow_intensity": {
"type": "select",
"label": "Intensidad de la sombra",
"default": "medium",
"options": {
"light": "Ligera",
"medium": "Media",
"strong": "Fuerte"
},
"conditional_logic": {
"field": "shadow_enabled",
"operator": "==",
"value": true
},
"description": "Intensidad de la sombra del navbar"
},
"border_bottom_enabled": {
"type": "boolean",
"label": "Borde inferior",
"default": false,
"description": "Agrega un borde en la parte inferior del navbar"
},
"border_bottom_color": {
"type": "color",
"label": "Color del borde inferior",
"default": "#FF8600",
"conditional_logic": {
"field": "border_bottom_enabled",
"operator": "==",
"value": true
},
"description": "Color del borde inferior"
},
"border_bottom_width": {
"type": "number",
"label": "Grosor del borde (px)",
"default": 3,
"min": 1,
"max": 10,
"conditional_logic": {
"field": "border_bottom_enabled",
"operator": "==",
"value": true
},
"description": "Grosor del borde inferior en píxeles"
}
}
}
}
}

View File

@@ -0,0 +1,145 @@
{
"component_name": "related-posts",
"version": "1.0.0",
"description": "Posts relacionados al final del contenido principal",
"groups": {
"visibility": {
"label": "Visibilidad",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Activar posts relacionados",
"default": true,
"required": true,
"description": "Activa o desactiva el componente de posts relacionados"
},
"section_title": {
"type": "text",
"label": "Título de la sección",
"default": "Descubre Más Contenido",
"maxlength": 200,
"required": true,
"description": "Título que aparece antes del grid de posts"
}
}
},
"query": {
"label": "Configuración de Consulta",
"priority": 20,
"fields": {
"posts_per_page": {
"type": "number",
"label": "Posts por página",
"default": 12,
"min": 1,
"max": 100,
"required": true,
"description": "Cantidad de posts a mostrar por página"
},
"post_selection": {
"type": "select",
"label": "Criterio de selección",
"default": "category",
"options": {
"category": "Misma categoría",
"tags": "Mismos tags",
"both": "Categoría y tags",
"recent": "Más recientes",
"random": "Aleatorio"
},
"required": true,
"description": "Cómo seleccionar los posts relacionados"
},
"exclude_current_post": {
"type": "boolean",
"label": "Excluir post actual",
"default": true,
"description": "Excluye el post actual de los resultados"
}
}
},
"layout": {
"label": "Diseño y Disposición",
"priority": 30,
"fields": {
"columns": {
"type": "select",
"label": "Número de columnas",
"default": "3",
"options": {
"1": "1 columna",
"2": "2 columnas",
"3": "3 columnas",
"4": "4 columnas"
},
"required": true,
"description": "Número de columnas en el grid"
},
"card_height": {
"type": "select",
"label": "Altura de cards",
"default": "equal",
"options": {
"auto": "Automática",
"equal": "Igual (centrado)"
},
"description": "Controla cómo se muestran las cards"
}
}
},
"pagination": {
"label": "Paginación",
"priority": 40,
"fields": {
"show_pagination": {
"type": "boolean",
"label": "Mostrar paginación",
"default": true,
"description": "Muestra u oculta la paginación"
},
"pagination_position": {
"type": "select",
"label": "Posición de la paginación",
"default": "center",
"options": {
"left": "Izquierda",
"center": "Centro",
"right": "Derecha"
},
"conditional_logic": {
"field": "show_pagination",
"operator": "==",
"value": true
},
"description": "Alineación de la paginación"
}
}
},
"styles": {
"label": "Estilos",
"priority": 50,
"fields": {
"container_classes": {
"type": "text",
"label": "Clases CSS del contenedor",
"default": "my-5 related-posts",
"description": "Clases CSS adicionales para el contenedor principal"
},
"grid_gap": {
"type": "select",
"label": "Espaciado del grid",
"default": "4",
"options": {
"1": "Muy pequeño",
"2": "Pequeño",
"3": "Normal",
"4": "Grande",
"5": "Muy grande"
},
"description": "Espaciado entre cards"
}
}
}
}
}

View File

@@ -0,0 +1,112 @@
{
"component_name": "share-buttons",
"version": "1.0.0",
"description": "Botones para compartir contenido en redes sociales",
"groups": {
"visibility": {
"label": "Visibilidad",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Activar botones de compartir",
"default": true,
"required": true,
"description": "Activa o desactiva los botones de compartir en redes sociales"
},
"show_label": {
"type": "boolean",
"label": "Mostrar etiqueta",
"default": true,
"description": "Muestra u oculta el texto de etiqueta antes de los botones"
},
"label_text": {
"type": "text",
"label": "Texto de etiqueta",
"default": "Compartir:",
"maxlength": 100,
"conditional_logic": {
"field": "show_label",
"operator": "==",
"value": true
},
"description": "Texto que aparece antes de los botones"
}
}
},
"networks": {
"label": "Redes Sociales",
"priority": 20,
"fields": {
"enabled_networks": {
"type": "multiselect",
"label": "Redes sociales habilitadas",
"default": ["facebook", "instagram", "linkedin", "whatsapp", "twitter", "email"],
"options": {
"facebook": "Facebook",
"instagram": "Instagram",
"linkedin": "LinkedIn",
"whatsapp": "WhatsApp",
"twitter": "Twitter / X",
"email": "Email"
},
"required": true,
"description": "Lista de redes sociales que se mostrarán"
},
"show_network_labels": {
"type": "boolean",
"label": "Mostrar nombres de redes",
"default": false,
"description": "Muestra el nombre de la red social junto al icono"
}
}
},
"button_styles": {
"label": "Estilos de Botones",
"priority": 30,
"fields": {
"button_style": {
"type": "select",
"label": "Estilo de botones",
"default": "outline",
"options": {
"outline": "Outline (contorno)",
"solid": "Solid (relleno)"
},
"required": true,
"description": "Estilo visual de los botones"
},
"button_size": {
"type": "select",
"label": "Tamaño de botones",
"default": "sm",
"options": {
"sm": "Pequeño",
"md": "Mediano",
"lg": "Grande"
},
"required": true,
"description": "Tamaño de los botones"
}
}
},
"advanced": {
"label": "Configuración Avanzada",
"priority": 40,
"fields": {
"container_classes": {
"type": "text",
"label": "Clases CSS del contenedor",
"default": "my-5 py-4 border-top",
"description": "Clases CSS adicionales para el contenedor principal"
},
"buttons_wrapper_classes": {
"type": "text",
"label": "Clases CSS del wrapper de botones",
"default": "d-flex gap-2 flex-wrap share-buttons",
"description": "Clases CSS para el wrapper de los botones"
}
}
}
}
}

View File

@@ -0,0 +1,171 @@
{
"component_name": "table-of-contents",
"version": "1.0.0",
"description": "Tabla de contenido con ScrollSpy para navegación lateral",
"groups": {
"visibility": {
"label": "Visibilidad y Comportamiento",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Activar tabla de contenido",
"default": true,
"required": true,
"description": "Activa o desactiva el componente de tabla de contenido"
},
"sticky": {
"type": "boolean",
"label": "Posición sticky",
"default": true,
"description": "Mantiene el TOC visible al hacer scroll"
},
"show_on_mobile": {
"type": "boolean",
"label": "Mostrar en móviles",
"default": false,
"description": "Muestra el TOC en dispositivos móviles"
}
}
},
"config": {
"label": "Configuración General",
"priority": 20,
"fields": {
"title": {
"type": "text",
"label": "Título del TOC",
"default": "Tabla de Contenido",
"maxlength": 100,
"required": true,
"description": "Título que aparece en el encabezado del TOC"
},
"heading_levels": {
"type": "multiselect",
"label": "Niveles de encabezados",
"default": ["h2", "h3"],
"options": {
"h2": "H2",
"h3": "H3",
"h4": "H4",
"h5": "H5",
"h6": "H6"
},
"required": true,
"description": "Niveles de encabezados a incluir en el TOC"
},
"auto_generate": {
"type": "boolean",
"label": "Generar automáticamente",
"default": true,
"description": "Generar TOC desde el contenido del post"
},
"offset_top": {
"type": "number",
"label": "Offset top (px)",
"default": 100,
"min": 0,
"max": 500,
"description": "Offset desde el top para el ScrollSpy"
},
"smooth_scroll": {
"type": "boolean",
"label": "Scroll suave",
"default": true,
"description": "Activar scroll suave al hacer clic en enlaces"
},
"max_height": {
"type": "text",
"label": "Altura máxima",
"default": "calc(100vh - 400px)",
"description": "Altura máxima del contenedor TOC (CSS válido)"
},
"custom_css_class": {
"type": "text",
"label": "Clase CSS personalizada",
"default": "",
"description": "Clase CSS adicional para el contenedor"
}
}
},
"manual_items": {
"label": "Items Manuales",
"priority": 30,
"fields": {
"items": {
"type": "repeater",
"label": "Items del TOC",
"default": [],
"description": "Items manuales si auto_generate es false",
"subfields": {
"text": {
"type": "text",
"label": "Texto del enlace",
"required": true
},
"anchor": {
"type": "text",
"label": "ID del ancla (sin #)",
"required": true
},
"level": {
"type": "number",
"label": "Nivel (2-6)",
"default": 2,
"min": 2,
"max": 6
}
}
}
}
},
"styles": {
"label": "Estilos Personalizados",
"priority": 40,
"fields": {
"background_color": {
"type": "color",
"label": "Color de fondo",
"default": "#ffffff",
"description": "Color de fondo del contenedor"
},
"border_color": {
"type": "color",
"label": "Color de borde",
"default": "#E6E9ED",
"description": "Color del borde del contenedor"
},
"title_color": {
"type": "color",
"label": "Color del título",
"default": "#0E2337",
"description": "Color del texto del título"
},
"link_color": {
"type": "color",
"label": "Color de enlaces",
"default": "#6B7280",
"description": "Color de los enlaces del TOC"
},
"link_hover_color": {
"type": "color",
"label": "Color de enlaces (hover)",
"default": "#0E2337",
"description": "Color de los enlaces al pasar el mouse"
},
"active_border_color": {
"type": "color",
"label": "Color de borde activo",
"default": "#0E2337",
"description": "Color del borde izquierdo del item activo"
},
"active_bg_color": {
"type": "color",
"label": "Color de fondo activo",
"default": "#F9FAFB",
"description": "Color de fondo del item activo"
}
}
}
}
}

View File

@@ -0,0 +1,258 @@
{
"component_name": "top_notification_bar",
"version": "1.0.0",
"description": "Barra de notificación superior con anuncio destacado, ícono y enlace de acción",
"groups": {
"visibility": {
"label": "Visibilidad",
"priority": 10,
"fields": {
"is_enabled": {
"type": "boolean",
"label": "Mostrar barra de notificación",
"default": true,
"required": true,
"description": "Activa o desactiva la barra de notificación superior"
},
"show_on_pages": {
"type": "select",
"label": "Mostrar en",
"default": "all",
"options": {
"all": "Todas las páginas",
"home": "Solo página de inicio",
"posts": "Solo posts individuales",
"pages": "Solo páginas",
"custom": "Páginas específicas"
},
"required": true,
"description": "Define en qué páginas se mostrará la barra"
},
"custom_page_ids": {
"type": "text",
"label": "IDs de páginas específicas",
"default": "",
"placeholder": "Ej: 1,5,10",
"conditional_logic": {
"field": "show_on_pages",
"operator": "==",
"value": "custom"
},
"description": "IDs de páginas separados por comas"
},
"hide_on_mobile": {
"type": "boolean",
"label": "Ocultar en dispositivos móviles",
"default": false,
"description": "Oculta la barra en pantallas menores a 768px"
},
"is_dismissible": {
"type": "boolean",
"label": "Permitir cerrar",
"default": false,
"description": "Agrega botón X para que el usuario pueda cerrar la barra"
},
"dismissible_cookie_days": {
"type": "number",
"label": "Días antes de volver a mostrar",
"default": 7,
"min": 1,
"max": 365,
"conditional_logic": {
"field": "is_dismissible",
"operator": "==",
"value": true
},
"description": "Días que permanece oculta después de cerrarla"
}
}
},
"content": {
"label": "Contenido",
"priority": 20,
"fields": {
"icon_type": {
"type": "select",
"label": "Tipo de ícono",
"default": "bootstrap",
"options": {
"bootstrap": "Bootstrap Icons",
"custom": "Imagen personalizada",
"none": "Sin ícono"
},
"required": true,
"description": "Selecciona el tipo de ícono a mostrar"
},
"bootstrap_icon": {
"type": "text",
"label": "Clase de ícono Bootstrap",
"default": "bi-megaphone-fill",
"placeholder": "Ej: bi-megaphone-fill",
"conditional_logic": {
"field": "icon_type",
"operator": "==",
"value": "bootstrap"
},
"required": true,
"description": "Nombre de la clase del ícono sin el prefijo 'bi' (ej: megaphone-fill)"
},
"custom_icon_url": {
"type": "media",
"label": "Imagen personalizada",
"default": "",
"media_type": "image",
"conditional_logic": {
"field": "icon_type",
"operator": "==",
"value": "custom"
},
"description": "Sube una imagen personalizada (recomendado: PNG 24x24px)"
},
"announcement_label": {
"type": "text",
"label": "Etiqueta del anuncio",
"default": "Nuevo:",
"placeholder": "Ej: Nuevo:, Importante:, Aviso:",
"maxlength": 30,
"required": true,
"description": "Texto destacado en negrita antes del mensaje"
},
"announcement_text": {
"type": "textarea",
"label": "Texto del anuncio",
"default": "Accede a más de 200,000 Análisis de Precios Unitarios actualizados para 2025.",
"maxlength": 200,
"rows": 3,
"required": true,
"description": "Mensaje principal del anuncio (máximo 200 caracteres)"
},
"link_enabled": {
"type": "boolean",
"label": "Mostrar enlace",
"default": true,
"description": "Activa o desactiva el enlace de acción"
},
"link_text": {
"type": "text",
"label": "Texto del enlace",
"default": "Ver Catálogo",
"maxlength": 50,
"conditional_logic": {
"field": "link_enabled",
"operator": "==",
"value": true
},
"required": true,
"description": "Texto del enlace de acción"
},
"link_url": {
"type": "url",
"label": "URL del enlace",
"default": "#",
"placeholder": "https://",
"conditional_logic": {
"field": "link_enabled",
"operator": "==",
"value": true
},
"required": true,
"description": "URL de destino del enlace"
},
"link_target": {
"type": "select",
"label": "Abrir enlace en",
"default": "_self",
"options": {
"_self": "Misma ventana",
"_blank": "Nueva ventana"
},
"conditional_logic": {
"field": "link_enabled",
"operator": "==",
"value": true
},
"description": "Define cómo se abrirá el enlace"
}
}
},
"styles": {
"label": "Estilos",
"priority": 30,
"fields": {
"background_color": {
"type": "color",
"label": "Color de fondo",
"default": "#FF8600",
"description": "Color de fondo de la barra (por defecto: orange primary)"
},
"text_color": {
"type": "color",
"label": "Color del texto",
"default": "#FFFFFF",
"description": "Color del texto del anuncio"
},
"link_color": {
"type": "color",
"label": "Color del enlace",
"default": "#FFFFFF",
"description": "Color del enlace de acción"
},
"font_size": {
"type": "select",
"label": "Tamaño de fuente",
"default": "small",
"options": {
"extra-small": "Muy pequeño (0.75rem)",
"small": "Pequeño (0.875rem)",
"normal": "Normal (1rem)",
"large": "Grande (1.125rem)"
},
"description": "Tamaño del texto del anuncio"
},
"padding_vertical": {
"type": "select",
"label": "Padding vertical",
"default": "normal",
"options": {
"compact": "Compacto (0.5rem)",
"normal": "Normal (0.75rem)",
"spacious": "Espacioso (1rem)"
},
"description": "Espaciado vertical interno de la barra"
},
"text_alignment": {
"type": "select",
"label": "Alineación del texto",
"default": "center",
"options": {
"left": "Izquierda",
"center": "Centro",
"right": "Derecha"
},
"description": "Alineación del contenido de la barra"
},
"animation_enabled": {
"type": "boolean",
"label": "Activar animación",
"default": false,
"description": "Activa animación de entrada al cargar la página"
},
"animation_type": {
"type": "select",
"label": "Tipo de animación",
"default": "slide-down",
"options": {
"slide-down": "Deslizar desde arriba",
"fade-in": "Aparecer gradualmente"
},
"conditional_logic": {
"field": "animation_enabled",
"operator": "==",
"value": true
},
"description": "Tipo de animación de entrada"
}
}
}
}
}