Arquitectura interna

La arquitectura de BricksShift tiene una sola idea central: una representación intermedia de tokens (DTIR) desacopla los sistemas origen y destino, permitiendo añadir vectores sin reescribir el motor.


Diagrama

┌──────────┐
│ Scanner  │  Detecta plugins activos, tokens en uso, entorno
└────┬─────┘


┌──────────────┐
│ Parser       │  Lee wp_options, CSS generado, _bricks_data
│ (origen)     │
└────┬─────────┘


┌──────────────┐
│ DTIR (origen)│  Design Token Intermediate Representation
└────┬─────────┘


┌──────────────┐
│ Transformer  │  Aplica mapa Nivel 1 + lógica específica
└────┬─────────┘


┌──────────────┐
│ DTIR (destino)│
└────┬─────────┘


┌──────────────┐        ┌──────────┐
│ Writer       │──────▶ │ Backup   │  Snapshot previo obligatorio
│ (destino)    │        └──────────┘
└────┬─────────┘


┌──────────┐
│ Logger   │  Persiste cada acción en wp_bricksshift_logs
└──────────┘

Capas

Scanner

Detecta el entorno: plugins activos (ACSS, AT, CF), archivos CSS en uploads/, heurísticas para framework "huella". Resultado: un array con disponibilidad de los 7 vectores y razón si alguno está deshabilitado.

Parsers

Uno por sistema origen:

  • ParserACSS — el más complejo. Lee wp_options, CSS generado (ground truth), normaliza nombres entre v3 y el modelo interno.
  • ParserBricks — lee paleta, variables y clases globales de Bricks.
  • ParserBricksAT — decorator sobre ParserBricks. Detecta escala Utopia y valores fluidos.
  • ParserBricksCF — decorator sobre ParserBricks. Agrupa variantes de transparencia.
  • ParserCFFile — lee exports .core/JSON sin necesidad de CF instalado.
  • ParserTailwind — lee CSS con @theme y @layer components.

Todos producen un DTIR.

DTIR (Design Token Intermediate Representation)

Modelo en memoria independiente de origen y destino. Tokens clasificados por categoría (colors, typography, spacing, borders, shadows, other), cada uno con metadata (formato original, si es fluido, etc.). Permite añadir nuevos vectores sin tocar parsers o writers existentes.

Transformer

Motor central. Aplica:

  • Mapa Nivel 1: token a token (identidad si no hay mapeo explícito).
  • Mapa Nivel 2 (solo destinos Tailwind): propiedad CSS → utility Tailwind.
  • Helpers: normalize_colors_for_bricks, make_color_variants_reactive, apply_static_fallbacks, apply_fluid_dual_write, filter_transparency_variants.

Writers

  • WriterBricks — escribe a wp_options con update_option(). Merge con datos existentes, no sobrescritura ciega.
  • WriterTailwind — genera archivos CSS en wp-content/themes/{theme}/bricksshift/.

Backup y Logger

Backup: snapshot obligatorio antes de cualquier escritura. Logger: persiste cada acción en wp_bricksshift_logs para auditoría posterior.


Namespaces PHP

NamespaceClases
BricksShift\Core, Scanner, Backup, Logger, License
BricksShift\Parsers\ParserACSS, ParserBricks, ParserBricksAT, ParserBricksCF, ParserCFFile, ParserTailwind
BricksShift\Transformers\DTIR, Transformer
BricksShift\Writers\WriterBricks, WriterTailwind
BricksShift\Utils\ColorConverter, FluidValue, CSSVariableExtractor
BricksShift\Licensing\LicenseManager, Updater

Decisiones de diseño

  1. El HTML de templates nunca se modifica.
  2. Los valores del destino son siempre los del proyecto origen, nunca defaults.
  3. DTIR como capa de abstracción: añadir nuevos vectores no requiere tocar el motor.
  4. Backup obligatorio antes de cualquier escritura.
  5. Dry-run disponible en todos los vectores.
  6. Writers hacen merge, no sobrescritura.
  7. Parsers AT/CF son decorators sobre ParserBricks, no standalone.
  8. Licencia obligatoria (License::is_active()) para todas las operaciones de conversión.

Ver CLI y hooks →