# Project Context

## Purpose
ROI Theme es un tema WordPress profesional siguiendo Clean Architecture para el sitio analisisdepreciosunitarios.com. Proporciona un sistema de componentes configurables con panel de administración y renderizado frontend dinámico.

## Tech Stack
- **CMS**: WordPress 6.x
- **Lenguaje**: PHP 8.x (strict types)
- **Patrón**: Clean Architecture (Domain, Application, Infrastructure)
- **Frontend**: Bootstrap 5, Bootstrap Icons
- **Base de Datos**: MySQL (tabla normalizada `wp_roi_theme_component_settings`)
- **CLI**: WP-CLI para sincronización de schemas

## Project Conventions

### Code Style
- `declare(strict_types=1)` en todos los archivos PHP
- Namespaces: `ROITheme\[Context]\[Component]\[Layer]`
- Clases finales por defecto
- Propiedades `private`/`protected`
- Escaping WordPress: `esc_html()`, `esc_attr()`, `esc_url()`, `esc_textarea()`

### Nomenclatura (NO NEGOCIABLE)
| Contexto                    | Formato      | Ejemplo                          |
|-----------------------------|--------------|----------------------------------|
| component_name (JSON/BD)    | kebab-case   | "featured-image"                 |
| Nombre archivo schema       | kebab-case   | featured-image.json              |
| Carpeta de módulo           | PascalCase   | FeaturedImage/                   |
| Namespace PHP               | PascalCase   | ROITheme\Public\FeaturedImage\...|
| Clase Renderer/FormBuilder  | PascalCase   | FeaturedImageRenderer            |

### Architecture Patterns
- **Clean Architecture**: Domain → Application → Infrastructure
- Domain NO depende de capas superiores
- Domain NO puede tener WordPress, echo/print, HTML
- Application NO puede tener WordPress
- Infrastructure implementa interfaces de Domain
- DI via constructor (interfaces, no clases concretas)

### Estructura del Tema
```
roi-theme/
├── Schemas/                    # JSON schemas (kebab-case)
├── Shared/                     # Código compartido
│   ├── Domain/Contracts/       # Interfaces
│   ├── Application/UseCases/   # Casos de uso
│   └── Infrastructure/         # Implementaciones
├── Public/[PascalCase]/        # Renderers frontend
├── Admin/[PascalCase]/         # FormBuilders admin
└── functions.php               # Bootstrap
```

### Testing Strategy
- Validación de arquitectura: `php Shared/Infrastructure/Scripts/validate-architecture.php [nombre]`
- Tests unitarios pendientes de implementar

### Git Workflow
- Conventional Commits: `feat:`, `fix:`, `refactor:`, `docs:`
- Branch principal: `main`
- Tags para releases: `v1.0.0`, `v2.0.0`

## Domain Context
El sistema maneja componentes UI configurables para un sitio de análisis de precios unitarios (construcción). Cada componente tiene:
- **Schema JSON**: Define campos configurables
- **Renderer**: Genera HTML + CSS dinámico desde BD
- **FormBuilder**: Panel admin para configurar valores

### Flujo de 5 Fases para Componentes
1. Schema JSON → `Schemas/[nombre].json`
2. Sincronización → `wp roi-theme sync-component [nombre]`
3. Renderer → `Public/[Nombre]/Infrastructure/Ui/[Nombre]Renderer.php`
4. FormBuilder → `Admin/[Nombre]/Infrastructure/Ui/[Nombre]FormBuilder.php`
5. Validación → `validate-architecture.php [nombre]`

## Important Constraints
- CERO CSS hardcodeado en PHP (usar CSSGeneratorService)
- NO usar global $wpdb en Domain/Application
- NO instanciar servicios directamente (usar DI)
- NO modificar campos en BD manualmente
- Variables CSS del tema: `--color-navy-dark`, `--color-orange-primary`

## External Dependencies
- WordPress 6.x core
- Bootstrap 5 (CSS/JS)
- Bootstrap Icons
- WP-CLI (`C:\xampp\php_8.0.30_backup\wp-cli.phar`)

## Referencias Documentación
- Arquitectura: `_planeacion/roi-theme/_arquitectura/`
- Template HTML: `_planeacion/roi-theme/roi-theme-template/index.html`
- Design System: `_planeacion/roi-theme/_arquitectura/01-design-system/`
