holygrail5 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,24 +8,46 @@ Generador de CSS + guía HTML pensado para design systems ligeros: declaras tu `
8
8
  ---
9
9
 
10
10
  ## Índice
11
- 1. [Instalación](#1-instalación)
12
- 2. [Flujo rápido](#2-flujo-rápido)
13
- 3. [Scripts disponibles](#3-scripts-disponibles)
14
- 4. [¿Qué se genera?](#4-qué-se-genera)
15
- 5. [Configurar `config.json`](#5-configurar-configjson)
16
- 6. [CLI y argumentos](#6-cli-y-argumentos)
17
- 7. [Guía HTML interactiva](#7-guía-html-interactiva)
18
- 8. [Gestión de variables históricas](#8-gestión-de-variables-históricas)
19
- 9. [Tema Dutti y demos](#9-tema-dutti-y-demos)
20
- 10. [Flujo de desarrollo](#10-flujo-de-desarrollo)
21
- 11. [Tests y calidad](#11-tests-y-calidad)
22
- 12. [Documentos complementarios](#12-documentos-complementarios)
23
- 13. [Recursos y soporte](#13-recursos-y-soporte)
24
- 14. [Licencia](#14-licencia)
11
+ - [HolyGrail5](#holygrail5)
12
+ - [Índice](#índice)
13
+ - [1. Instalación](#1-instalación)
14
+ - [2. Flujo rápido](#2-flujo-rápido)
15
+ - [3. Scripts disponibles](#3-scripts-disponibles)
16
+ - [4. ¿Qué se genera?](#4-qué-se-genera)
17
+ - [5. Estructura del proyecto](#5-estructura-del-proyecto)
18
+ - [6. Configurar `config.json`](#6-configurar-configjson)
19
+ - [6.1 Ejemplo mínimo](#61-ejemplo-mínimo)
20
+ - [6.2 Propiedades globales](#62-propiedades-globales)
21
+ - [6.3 Configuración de Assets (Opcional)](#63-configuración-de-assets-opcional)
22
+ - [6.4 Helpers y grid](#64-helpers-y-grid)
23
+ - [6.5 Ratios de Aspecto](#65-ratios-de-aspecto)
24
+ - [6.6 Tipografías](#66-tipografías)
25
+ - [7. CLI y argumentos](#7-cli-y-argumentos)
26
+ - [8. Guía HTML interactiva](#8-guía-html-interactiva)
27
+ - [9. Gestión de variables históricas](#9-gestión-de-variables-históricas)
28
+ - [10. Tema Dutti y demos](#10-tema-dutti-y-demos)
29
+ - [Flujo de desarrollo de temas](#flujo-de-desarrollo-de-temas)
30
+ - [11. Arquitectura del sistema](#11-arquitectura-del-sistema)
31
+ - [Módulos principales](#módulos-principales)
32
+ - [**`BuildOrchestrator`** (`src/build/build-orchestrator.js`)](#buildorchestrator-srcbuildbuild-orchestratorjs)
33
+ - [**`AssetManager`** (`src/build/asset-manager.js`)](#assetmanager-srcbuildasset-managerjs)
34
+ - [**`ThemeTransformer`** (`src/build/theme-transformer.js`)](#themetransformer-srcbuildtheme-transformerjs)
35
+ - [Ventajas de la arquitectura](#ventajas-de-la-arquitectura)
36
+ - [Diagrama de flujo](#diagrama-de-flujo)
37
+ - [12. Tests y calidad](#12-tests-y-calidad)
38
+ - [Suite de tests completa](#suite-de-tests-completa)
39
+ - [13. Documentos complementarios](#13-documentos-complementarios)
40
+ - [Publicación de la guía](#publicación-de-la-guía)
41
+ - [14. Recursos y soporte](#14-recursos-y-soporte)
42
+ - [Contribuir](#contribuir)
43
+ - [15. Licencia](#15-licencia)
44
+ - [Changelog](#changelog)
45
+ - [v1.0.12 - Diciembre 2024](#v1012---diciembre-2024)
25
46
 
26
47
  ---
27
48
 
28
49
  ## 1. Instalación
50
+
29
51
  ```bash
30
52
  # Instalación global
31
53
  npm install -g holygrail5
@@ -35,7 +57,10 @@ npm install holygrail5 --save-dev
35
57
  ```
36
58
  > Requiere Node.js >= 12 (probado hasta v20).
37
59
 
60
+ ---
61
+
38
62
  ## 2. Flujo rápido
63
+
39
64
  ```bash
40
65
  # 1) Genera CSS + guía
41
66
  npx holygrail5
@@ -48,28 +73,113 @@ npm run serve
48
73
  npm run watch # regenera al guardar config.json
49
74
  npm run dev # watch + servidor
50
75
 
51
- # 4) Empaqueta tema Dutti y demo
52
- npm run build # corre generate-css.js + copy-theme-html.js
76
+ # 4) Genera CSS y tema Dutti
77
+ npm run build # genera CSS, HTML, assets y temas automáticamente
53
78
  ```
54
79
 
80
+ ---
81
+
55
82
  ## 3. Scripts disponibles
83
+
56
84
  | Script | Descripción |
57
85
  | ------ | ----------- |
58
- | `npm run build` | Ejecuta `generate-css.js` y copia la demo del tema. |
59
- | `npm run watch` | Observa `config.json` y regenera CSS/HTML. |
86
+ | `npm run build` | Genera CSS, HTML, assets y transforma temas automáticamente usando `BuildOrchestrator`. |
87
+ | `npm run watch` | Observa `config.json`, CSS y temas, regenerando automáticamente al detectar cambios. |
60
88
  | `npm run serve` | Abre el navegador y sirve `dist/` en el puerto 3000. |
61
- | `npm run dev` | Alias práctico: `watch` + `serve`. |
62
- | `npm run test` | Corre los tests de `tests/run-all.js`. |
89
+ | `npm run dev` | Alias práctico: `watch` + `serve` (desarrollo en caliente). |
90
+ | `npm run test` | Ejecuta todos los tests (20 tests unitarios). |
63
91
  | `npm run vars:report` | Informe completo de variables CSS. |
64
92
  | `npm run vars:remove-unused` | Limpia variables históricas no usadas. |
65
93
 
94
+ ---
95
+
66
96
  ## 4. ¿Qué se genera?
67
- - `dist/output.css` → Reset, variables compartidas, helpers de spacing, helpers de layout, grid opcional y tipografías mobile/desktop.
68
- - `dist/index.html` → Guía interactiva con navegación sticky, buscador y diffs visuales.
69
- - `dist/themes/dutti.css` + `dist/themes/dutti-demo.html` cuando `theme.enabled` es `true` (ver [Tema Dutti](#9-tema-dutti-y-demos)).
70
97
 
71
- ## 5. Configurar `config.json`
72
- ### 5.1 Ejemplo mínimo
98
+ - **`dist/output.css`** Reset, variables compartidas, helpers de spacing, helpers de layout, grid opcional, aspect ratios y tipografías mobile/desktop.
99
+ - **`dist/index.html`** Guía interactiva con navegación sticky, buscador y diffs visuales.
100
+ - **`dist/guide-styles.css`** → Estilos de la guía de documentación.
101
+ - **`dist/assets/`** → Imágenes y recursos estáticos.
102
+ - **`dist/themes/dutti.css`** + **`dist/themes/dutti-demo.html`** → Cuando `theme.enabled` es `true`.
103
+
104
+ ---
105
+
106
+ ## 5. Estructura del proyecto
107
+
108
+ ```
109
+ holygrail5/
110
+ ├── config.json # Configuración principal
111
+ ├── generate-css.js # Entry point del build
112
+ ├── package.json # Dependencias y scripts
113
+
114
+ ├── src/
115
+ │ ├── assets/ # Assets estáticos (imágenes)
116
+ │ │ ├── intro.jpg
117
+ │ │ ├── introm.jpg
118
+ │ │ └── margenes.webp
119
+ │ │
120
+ │ ├── build/ # Sistema de build modular
121
+ │ │ ├── asset-manager.js # Gestión de assets
122
+ │ │ ├── build-orchestrator.js # Orquestador principal
123
+ │ │ └── theme-transformer.js # Transformación de temas
124
+ │ │
125
+ │ ├── generators/ # Generadores de CSS
126
+ │ │ ├── grid-generator.js
127
+ │ │ ├── helpers-generator.js
128
+ │ │ ├── reset-generator.js
129
+ │ │ ├── spacing-generator.js
130
+ │ │ ├── typo-generator.js
131
+ │ │ ├── utils.js
132
+ │ │ └── variables-generator.js
133
+ │ │
134
+ │ ├── docs-generator/ # Generación de documentación
135
+ │ │ ├── guide-styles.css
136
+ │ │ ├── html-generator.js
137
+ │ │ ├── variables-cli.js
138
+ │ │ └── variables-tracker.js
139
+ │ │
140
+ │ ├── config-loader.js # Carga y validación de config
141
+ │ ├── css-generator.js # Generador CSS principal
142
+ │ ├── dev-server.js # Servidor de desarrollo
143
+ │ └── watch-config.js # Sistema de watch
144
+
145
+ ├── themes/
146
+ │ └── dutti/ # Tema de ejemplo
147
+ │ ├── _variables.css
148
+ │ ├── _buttons.css
149
+ │ ├── _inputs.css
150
+ │ ├── demo.html
151
+ │ └── theme.css
152
+
153
+ ├── tests/ # Tests unitarios
154
+ │ ├── asset-manager.test.js
155
+ │ ├── build-orchestrator.test.js
156
+ │ ├── theme-transformer.test.js
157
+ │ ├── config-loader.test.js
158
+ │ ├── css-generator.test.js
159
+ │ ├── helpers.test.js
160
+ │ ├── html-generator.test.js
161
+ │ └── run-all.js
162
+
163
+ ├── docs/ # Documentación complementaria
164
+ │ ├── ANALISIS-ARQUITECTURA.md
165
+ │ ├── CHANGELOG-MEJORAS.md
166
+ │ ├── GUIA-USO-OTRO-PROYECTO.md
167
+ │ └── SUPERPROMPT.md
168
+
169
+ └── dist/ # Archivos generados (gitignored)
170
+ ├── output.css
171
+ ├── index.html
172
+ ├── guide-styles.css
173
+ ├── assets/ # Assets copiados
174
+ └── themes/ # Temas generados
175
+ ```
176
+
177
+ ---
178
+
179
+ ## 6. Configurar `config.json`
180
+
181
+ ### 6.1 Ejemplo mínimo
182
+
73
183
  ```jsonc
74
184
  {
75
185
  "prefix": "hg",
@@ -86,6 +196,10 @@ npm run build # corre generate-css.js + copy-theme-html.js
86
196
  "display": { "property": "display", "class": "d", "responsive": true, "values": ["flex", "block", "none"] }
87
197
  },
88
198
  "grid": { "enabled": true, "gutter": "8px", "breakpoints": { "md": { "minWidth": "992px", "columns": 12 } } },
199
+ "aspectRatios": [
200
+ { "class": "aspect-16-9", "width": 16, "height": 9, "description": "Ratio 16:9 (widescreen)" },
201
+ { "class": "aspect-1-1", "width": 1, "height": 1, "description": "Ratio 1:1 (cuadrado)" }
202
+ ],
89
203
  "typo": {
90
204
  "h2": {
91
205
  "fontFamily": "arial, sans-serif",
@@ -97,7 +211,8 @@ npm run build # corre generate-css.js + copy-theme-html.js
97
211
  }
98
212
  ```
99
213
 
100
- ### 5.2 Propiedades globales
214
+ ### 6.2 Propiedades globales
215
+
101
216
  | Campo | Tipo | Descripción |
102
217
  | ----- | ---- | ----------- |
103
218
  | `prefix` | string | Prefijo usado en todas las variables (`--hg-color-*`). |
@@ -109,20 +224,72 @@ npm run build # corre generate-css.js + copy-theme-html.js
109
224
  | `spacingImportant` | string[] | Keys de spacing con `!important`. |
110
225
  | `helpers` | object | Helpers de layout. Permite arrays simples o mapas clave → valor. |
111
226
  | `grid` | object | Define breakpoints, columnas y gutter por tamaño. |
227
+ | `aspectRatios` | array | **Opcional**: Define ratios de aspecto como `.hg-aspect-16-9` con fallback automático. |
112
228
  | `typo` | object | Clases de tipografía (obligatorio al menos un breakpoint). |
113
229
  | `theme` | object | `{ name, enabled }` para combinar temas desde `themes/<name>`. |
230
+ | `assets` | object | **Opcional**: `{ css: [...], images: [...] }` para configurar qué archivos copiar a `dist/`. |
231
+
232
+ ### 6.3 Configuración de Assets (Opcional)
233
+
234
+ Puedes configurar qué archivos CSS e imágenes se copian a `dist/` agregando una sección `assets` en tu `config.json`:
235
+
236
+ ```json
237
+ {
238
+ "assets": {
239
+ "css": [
240
+ {
241
+ "source": "src/docs-generator/guide-styles.css",
242
+ "dest": "dist/guide-styles.css"
243
+ }
244
+ ],
245
+ "images": [
246
+ {
247
+ "source": "src/assets/intro.jpg",
248
+ "dest": "dist/assets/intro.jpg"
249
+ },
250
+ {
251
+ "source": "src/assets/margenes.webp",
252
+ "dest": "dist/assets/margen.webp"
253
+ }
254
+ ]
255
+ }
256
+ }
257
+ ```
258
+
259
+ **Ventajas:**
260
+ - ✅ Configuración sin modificar código
261
+ - ✅ Fácil agregar nuevos assets
262
+ - ✅ Flexible para diferentes proyectos
263
+
264
+ Si no se especifica `assets`, el sistema usa una configuración por defecto.
265
+
266
+ ### 6.4 Helpers y grid
114
267
 
115
- ### 5.3 Helpers y grid
116
268
  - `src/generators/helpers-generator.js` crea clases del tipo `.hg-d-flex`, `.md\:hg-justify-center`, `.hg-gap-16`, etc.
117
269
  - Puedes mezclar helpers basados en `values` y helpers que reutilizan `spacingMap` con `useSpacing: true` (gap, row-gap, column-gap...).
118
270
  - El grid (`grid.enabled=true`) genera utilidades `.row`, `.col-md-6`, offsets, contenedores fluidos y variantes por breakpoint.
119
271
 
120
- ### 5.4 Tipografías
272
+ ### 6.5 Ratios de Aspecto
273
+
274
+ - `src/generators/ratio-generator.js` crea clases de aspect ratio como `.hg-aspect`, `.hg-aspect-16-9`, `.hg-aspect-1-1`, etc.
275
+ - La clase `.hg-aspect` sin sufijo usa el ratio 2:3 por defecto.
276
+ - Usa la propiedad CSS `aspect-ratio` nativa con fallback automático para navegadores antiguos (padding-top).
277
+ - Incluye `.hg-aspect-image` para imágenes/videos con `object-fit: cover`.
278
+ - Incluye `.hg-aspect-content` para posicionar contenido personalizado absolutamente dentro del ratio.
279
+ - Cada ratio se define con `class`, `width`, `height` y `description`.
280
+ - Útil para mantener proporciones consistentes en imágenes, videos y contenedores.
281
+ - Incluye ratios comunes (1:1, 4:3, 16:9) y especializados (separadores 3:1, 7:1, 12:1, 24:1).
282
+
283
+ ### 6.6 Tipografías
284
+
121
285
  - El generador (`src/generators/typo-generator.js`) deduplica valores y crea variables compartidas (`--hg-typo-font-size-24`).
122
286
  - Cada clase admite propiedades base (`fontFamily`, `fontWeight`, `letterSpacing`, `textTransform`) y propiedades por breakpoint (`fontSize`, `lineHeight`).
123
287
  - Los valores px se convierten automáticamente a rem respetando `baseFontSize`.
124
288
 
125
- ## 6. CLI y argumentos
289
+ ---
290
+
291
+ ## 7. CLI y argumentos
292
+
126
293
  `generate-css.js` puede ejecutarse como binario (`holygrail5`) o mediante `node generate-css.js`.
127
294
 
128
295
  Argumentos soportados:
@@ -135,14 +302,21 @@ npx holygrail5 \
135
302
  - Todos los parámetros son opcionales. Si omites alguno, se usan las rutas por defecto (`config.json` y `dist/*`).
136
303
  - El script ajusta automáticamente el `href="output.css"` del HTML si CSS y HTML viven en carpetas distintas.
137
304
 
138
- ## 7. Guía HTML interactiva
305
+ ---
306
+
307
+ ## 8. Guía HTML interactiva
308
+
139
309
  El módulo `src/docs-generator/html-generator.js` produce `dist/index.html` con:
140
- - Resumen visual de colores, tipografías y spacing.
141
- - Detección de cambios: los valores modificados respecto a `.data/.previous-values.json` se resaltan.
142
- - Buscador instantáneo y navegación lateral fija.
143
- - Información de metadata (versión del paquete y último commit disponible).
310
+ - Resumen visual de colores, tipografías y spacing
311
+ - Detección de cambios: los valores modificados respecto a `.data/.previous-values.json` se resaltan
312
+ - Buscador instantáneo y navegación lateral fija
313
+ - Información de metadata (versión del paquete y último commit disponible)
314
+ - ✅ Diseño responsive con smooth scroll (Lenis)
315
+
316
+ ---
317
+
318
+ ## 9. Gestión de variables históricas
144
319
 
145
- ## 8. Gestión de variables históricas
146
320
  El binario `src/docs-generator/variables-cli.js` + el módulo `variables-tracker` guardan un historial en `.data/.historical-variables.json` para que ninguna variable desaparezca sin que lo decidas.
147
321
 
148
322
  Comandos útiles:
@@ -154,35 +328,165 @@ node src/docs-generator/variables-cli.js remove -- --hg-typo-font-size-18
154
328
  ```
155
329
  > Después de borrar variables históricas conviene volver a ejecutar `npm run build` para regenerar el CSS sin referencias huérfanas.
156
330
 
157
- ## 9. Tema Dutti y demos
331
+ ---
332
+
333
+ ## 10. Tema Dutti y demos
334
+
158
335
  - El directorio `themes/dutti/` contiene CSS modular (_variables, _buttons, etc.) y un `demo.html` de referencia.
159
- - `copy-theme-html.js` combina el tema en `dist/themes/dutti.css`, arregla las rutas del demo y añade una sidebar con accesos rápidos.
336
+ - El `ThemeTransformer` combina el tema en `dist/themes/dutti.css`, transforma el HTML agregando sidebar, header y scripts de Lenis automáticamente.
160
337
  - Para crear tu propio tema copia la carpeta `themes/dutti`, ajusta los ficheros y actualiza `config.json → theme.name`.
161
338
 
162
- ## 10. Flujo de desarrollo
163
- 1. `npm run watch` genera `dist/output.css` e `index.html` cada vez que cambias `config.json`.
164
- 2. En paralelo, `npm run serve` levanta un servidor estático sobre `dist/` (puedes usar `npm run dev` para lanzar ambos).
165
- 3. Si trabajas con un tema, modifica los `.css` del tema y vuelve a ejecutar `npm run build` para regenerar el bundle y la demo.
166
- 4. Para trabajar con otros repos o guías, aprovecha los documentos de `docs/` (ver siguiente sección).
339
+ ### Flujo de desarrollo de temas
340
+
341
+ 1. `npm run watch` detecta cambios en `themes/dutti/` automáticamente
342
+ 2. Los cambios en `demo.html` o archivos CSS se procesan al guardar
343
+ 3. El resultado se genera en `dist/themes/dutti-demo.html`
344
+ 4. El servidor de desarrollo (`npm run serve`) sirve los cambios en tiempo real
345
+
346
+ ---
347
+
348
+ ## 11. Arquitectura del sistema
349
+
350
+ HolyGrail5 usa una arquitectura modular y centralizada construida en diciembre 2024:
351
+
352
+ ### Módulos principales
353
+
354
+ #### **`BuildOrchestrator`** (`src/build/build-orchestrator.js`)
355
+ - Coordina todo el proceso de build de forma centralizada
356
+ - Genera CSS, HTML, copia assets y transforma temas
357
+ - Soporta modo watch con cache busting automático
358
+ - ~175 líneas, 100% testeado
359
+
360
+ #### **`AssetManager`** (`src/build/asset-manager.js`)
361
+ - Gestiona la copia de CSS e imágenes a `dist/`
362
+ - Configuración centralizada desde `config.json` o fallback
363
+ - API simple: `copyCSS()`, `copyImages()`, `copyAssets()`
364
+ - Soporte para agregar assets dinámicamente
365
+ - ~153 líneas, 10 tests
366
+
367
+ #### **`ThemeTransformer`** (`src/build/theme-transformer.js`)
368
+ - Transforma HTML de temas agregando sidebar, header y scripts
369
+ - Inyecta Lenis para scroll suave y navegación
370
+ - Manejo dinámico de múltiples temas
371
+ - ~234 líneas, 5 tests
372
+
373
+ ### Ventajas de la arquitectura
374
+
375
+ - ✅ **Sin duplicación de código** (~150 líneas eliminadas)
376
+ - ✅ **Consistencia** entre build y watch
377
+ - ✅ **Testeable** (20 tests unitarios, 100% pasando)
378
+ - ✅ **Mantenible** (responsabilidades claramente separadas)
379
+ - ✅ **Extensible** (fácil agregar nuevas funcionalidades)
380
+
381
+ ### Diagrama de flujo
382
+
383
+ ```
384
+ generate-css.js
385
+
386
+ BuildOrchestrator
387
+ ├── config-loader.js → Carga config.json
388
+ ├── css-generator.js → Genera CSS
389
+ ├── html-generator.js → Genera HTML
390
+ ├── AssetManager → Copia assets
391
+ └── ThemeTransformer → Transforma temas
392
+ ```
393
+
394
+ ---
395
+
396
+ ## 12. Tests y calidad
397
+
398
+ ### Suite de tests completa
399
+
400
+ ```bash
401
+ npm test # Ejecuta todos los tests
402
+ ```
403
+
404
+ **Tests disponibles:**
405
+ - ✅ `config-loader.test.js` - Validación de configuración
406
+ - ✅ `css-generator.test.js` - Generación de CSS
407
+ - ✅ `helpers.test.js` - Utilidades compartidas
408
+ - ✅ `html-generator.test.js` - Generación de HTML
409
+ - ✅ `asset-manager.test.js` - Gestión de assets (10 tests)
410
+ - ✅ `theme-transformer.test.js` - Transformación de temas (5 tests)
411
+ - ✅ `build-orchestrator.test.js` - Orquestador de build (5 tests)
412
+
413
+ **Resultados:**
414
+ ```
415
+ 📊 Resumen Total de Tests de Build:
416
+ ✅ Pasados: 20
417
+ ❌ Fallidos: 0
418
+ 📈 Total: 20
419
+ ```
167
420
 
168
- ## 11. Tests y calidad
169
- - `tests/run-all.js` ejecuta los tests unitarios (`config-loader`, `css-generator`, helpers, html generator...).
170
- - Los tests imprimen resultados en consola para facilitar su lectura sin necesidad de frameworks pesados.
171
- - Puedes integrar ESLint u otras herramientas externas, pero el repo provee funciones puras fáciles de testear en aislamiento.
421
+ Los tests:
422
+ - Imprimen resultados en consola sin necesidad de frameworks pesados
423
+ - Funciones puras fáciles de testear en aislamiento
424
+ - Cobertura completa del sistema de build
425
+ - Se ejecutan en menos de 1 segundo
426
+
427
+ ---
428
+
429
+ ## 13. Documentos complementarios
172
430
 
173
- ## 12. Documentos complementarios
174
431
  | Archivo | Contenido |
175
432
  | ------- | --------- |
176
433
  | `docs/SUPERPROMPT.md` | Prompt detallado para asistentes/IA que necesiten generar HTML usando HolyGrail5. |
177
- | `docs/COMPARACION.md` | Comparativa HolyGrail5 vs alternativas (Tailwind, frameworks legacy, etc.). |
178
434
  | `docs/GUIA-USO-OTRO-PROYECTO.md` | Pasos para integrar HolyGrail5 en proyectos existentes. |
179
- | `docs/` + `dist/index.html` | Puedes publicar la guía como doc estática (GitHub Pages, Netlify, etc.). |
435
+ | `docs/ANALISIS-ARQUITECTURA.md` | Análisis completo de la arquitectura y problemas resueltos. |
436
+ | `docs/CHANGELOG-MEJORAS.md` | Registro detallado de la refactorización de diciembre 2024. |
437
+
438
+ ### Publicación de la guía
439
+
440
+ Puedes publicar `dist/index.html` como documentación estática en:
441
+ - GitHub Pages
442
+ - Netlify (configurado en `netlify.toml`)
443
+ - Vercel
444
+ - Cualquier hosting estático
445
+
446
+ ```bash
447
+ npm run build
448
+ # Publica el contenido de dist/ en tu hosting
449
+ ```
450
+
451
+ ---
452
+
453
+ ## 14. Recursos y soporte
454
+
455
+ - **Repositorio**: [github.com/holygrailcss/holygrail5](https://github.com/holygrailcss/holygrail5)
456
+ - **npm**: [holygrail5](https://www.npmjs.com/package/holygrail5)
457
+ - **Issues y PRs**: Bienvenidos. Sigue el flujo clásico: fork → rama → PR
458
+ - **Documentación**: Ver `docs/` para guías detalladas
459
+
460
+ ### Contribuir
461
+
462
+ 1. Fork el proyecto
463
+ 2. Crea tu rama de feature (`git checkout -b feature/AmazingFeature`)
464
+ 3. Commit tus cambios (`git commit -m 'feat: agregar AmazingFeature'`)
465
+ 4. Push a la rama (`git push origin feature/AmazingFeature`)
466
+ 5. Abre un Pull Request
467
+
468
+ ---
469
+
470
+ ## 15. Licencia
471
+
472
+ MIT © HolyGrail CSS
473
+
474
+ Usa, adapta y comparte libremente mientras conserves la atribución.
475
+
476
+ ---
477
+
478
+ ## Changelog
479
+
480
+ ### v1.0.12 - Diciembre 2024
481
+
482
+ **🎉 Refactorización arquitectural completa**
180
483
 
181
- ## 13. Recursos y soporte
182
- - Repositorio: [github.com/holygrailcss/holygrail5](https://github.com/holygrailcss/holygrail5)
183
- - npm: [holygrail5](https://www.npmjs.com/package/holygrail5)
184
- - Issues y PRs son bienvenidos. Sigue el flujo clásico: fork → rama → PR.
185
- - Si solo necesitas copiar la guía, ejecuta `npm run build` y publica `dist/` en el hosting de tu preferencia.
484
+ - Nueva arquitectura modular con `BuildOrchestrator`, `AssetManager` y `ThemeTransformer`
485
+ - Eliminadas ~150 líneas de código duplicado
486
+ - Assets organizados en `src/assets/` y `dist/assets/`
487
+ - Configuración de assets desde `config.json`
488
+ - 20 tests unitarios agregados (100% pasando)
489
+ - ✅ Sistema de watch mejorado
490
+ - ✅ Documentación actualizada
186
491
 
187
- ## 14. Licencia
188
- MIT © HolyGrail CSS. Usa, adapta y comparte libremente mientras conserves la atribución.
492
+ Ver `docs/CHANGELOG-MEJORAS.md` para detalles completos.