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:
FrankZamora
2025-11-25 21:20:06 -06:00
parent 90de6df77c
commit 0846a3bf03
224 changed files with 21670 additions and 17816 deletions

View File

@@ -0,0 +1,252 @@
{
"component_name": "cta-box-sidebar",
"version": "1.0.0",
"description": "Caja CTA en sidebar para captar leads con título, descripción y botón de acción",
"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 móvil",
"default": false,
"editable": true,
"description": "Muestra el componente en pantallas < 992px"
},
"show_on_pages": {
"type": "select",
"label": "Mostrar en",
"default": "posts",
"editable": true,
"options": ["all", "posts", "pages"],
"description": "Tipos de contenido donde se muestra"
}
}
},
"content": {
"label": "Contenido",
"priority": 20,
"fields": {
"title": {
"type": "text",
"label": "Título",
"default": "¿Listo para potenciar tus proyectos?",
"editable": true
},
"description": {
"type": "textarea",
"label": "Descripción",
"default": "Accede a nuestra biblioteca completa de APUs y herramientas profesionales.",
"editable": true
},
"button_text": {
"type": "text",
"label": "Texto del botón",
"default": "Solicitar Demo",
"editable": true
},
"button_icon": {
"type": "text",
"label": "Icono del botón",
"default": "bi bi-calendar-check",
"editable": true,
"description": "Clase Bootstrap Icons (ej: bi bi-calendar-check)"
},
"button_action": {
"type": "select",
"label": "Acción del botón",
"default": "modal",
"editable": true,
"options": ["modal", "link", "scroll"],
"description": "Comportamiento al hacer clic"
},
"button_link": {
"type": "url",
"label": "URL del botón",
"default": "#contactModal",
"editable": true,
"description": "URL o ID del modal (ej: #contactModal)"
}
}
},
"typography": {
"label": "Tipografía",
"priority": 30,
"fields": {
"title_font_size": {
"type": "text",
"label": "Tamaño título",
"default": "1.25rem",
"editable": true
},
"title_font_weight": {
"type": "text",
"label": "Peso título",
"default": "700",
"editable": true
},
"description_font_size": {
"type": "text",
"label": "Tamaño descripción",
"default": "0.9rem",
"editable": true
},
"button_font_size": {
"type": "text",
"label": "Tamaño texto botón",
"default": "1rem",
"editable": true
},
"button_font_weight": {
"type": "text",
"label": "Peso texto botón",
"default": "700",
"editable": true
}
}
},
"colors": {
"label": "Colores",
"priority": 40,
"fields": {
"background_color": {
"type": "color",
"label": "Fondo contenedor",
"default": "#FF8600",
"editable": true
},
"title_color": {
"type": "color",
"label": "Color título",
"default": "#ffffff",
"editable": true
},
"description_color": {
"type": "color",
"label": "Color descripción",
"default": "rgba(255, 255, 255, 0.95)",
"editable": true
},
"button_background_color": {
"type": "color",
"label": "Fondo botón",
"default": "#ffffff",
"editable": true
},
"button_text_color": {
"type": "color",
"label": "Color texto botón",
"default": "#FF8600",
"editable": true
},
"button_hover_background": {
"type": "color",
"label": "Fondo botón hover",
"default": "#1e3a5f",
"editable": true,
"description": "Color navy-primary del Design System"
},
"button_hover_text_color": {
"type": "color",
"label": "Texto botón hover",
"default": "#ffffff",
"editable": true
}
}
},
"spacing": {
"label": "Espaciado",
"priority": 50,
"fields": {
"container_padding": {
"type": "text",
"label": "Padding contenedor",
"default": "24px",
"editable": true
},
"title_margin_bottom": {
"type": "text",
"label": "Margen inferior título",
"default": "1rem",
"editable": true
},
"description_margin_bottom": {
"type": "text",
"label": "Margen inferior descripción",
"default": "1rem",
"editable": true
},
"button_padding": {
"type": "text",
"label": "Padding botón",
"default": "0.75rem 1.5rem",
"editable": true
},
"icon_margin_right": {
"type": "text",
"label": "Margen derecho icono",
"default": "0.5rem",
"editable": true
}
}
},
"visual_effects": {
"label": "Efectos Visuales",
"priority": 60,
"fields": {
"border_radius": {
"type": "text",
"label": "Radio de borde contenedor",
"default": "8px",
"editable": true
},
"box_shadow": {
"type": "text",
"label": "Sombra contenedor",
"default": "0 4px 12px rgba(255, 133, 0, 0.2)",
"editable": true
},
"button_border_radius": {
"type": "text",
"label": "Radio de borde botón",
"default": "8px",
"editable": true
},
"transition_duration": {
"type": "text",
"label": "Duración transición",
"default": "0.3s",
"editable": true
}
}
},
"behavior": {
"label": "Comportamiento",
"priority": 70,
"fields": {
"text_align": {
"type": "select",
"label": "Alineación texto",
"default": "center",
"editable": true,
"options": ["left", "center", "right"]
}
}
}
}
}