holygrail5 1.0.2 → 1.0.3

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.
Files changed (3) hide show
  1. package/README.md +145 -195
  2. package/package.json +1 -1
  3. package/src/guide.js +32 -0
package/README.md CHANGED
@@ -1,47 +1,55 @@
1
1
  # HolyGrail5
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/holygrail5.svg)](https://www.npmjs.com/package/holygrail5)
4
+ [![npm downloads](https://img.shields.io/npm/dm/holygrail5.svg)](https://www.npmjs.com/package/holygrail5)
5
+
3
6
  Framework CSS generator con Node.js que genera CSS optimizado con variables CSS compartidas desde un archivo JSON de configuración.
4
7
 
5
- ## ⚖️ En resumen
8
+ ## 📦 Instalación
6
9
 
7
- | Aspecto | Solo Tailwind | Híbrido |
8
- |--------------------------|-------------------------------------------------------------------------------|---------------------------------------------------------------------|
9
- | Velocidad de desarrollo | 🔥 Muy alta | 🔥 Alta |
10
- | Consistencia visual | ⚠️ Difícil mantener si hay muchas utilidades | ✅ Mantienes branding y coherencia |
11
- | Escalabilidad | ⚠️ Costoso en proyectos grandes | ✅ Fácil de mantener |
12
- | Curva de aprendizaje | Media | Baja si ya vienes de BEM/SCSS |
13
- | Control sobre design system | ❌ Limitado | ✅ Total |
14
- | Performance CSS final | ✅ Muy buena | ✅ Muy buena |
10
+ ```bash
11
+ # Instalación global
12
+ npm install -g holygrail5
15
13
 
14
+ # Instalación local
15
+ npm install holygrail5
16
+ ```
16
17
 
18
+ ## 🚀 Inicio Rápido
17
19
 
18
- ## ✨ Características
20
+ ```bash
21
+ # 1. Generar CSS y HTML
22
+ npx holygrail5
23
+
24
+ # 2. Ver la guía interactiva
25
+ npm run serve
26
+ # Abre http://localhost:3000/index.html
27
+ ```
28
+
29
+ ## ✨ Características Principales
19
30
 
20
31
  - 🎨 **CSS optimizado** con variables CSS compartidas (mínimas y eficientes)
21
32
  - 📱 **Soporte responsive** con breakpoints personalizables (mobile/desktop)
22
33
  - 🔧 **Configuración simple** mediante JSON
23
34
  - 📊 **Guía HTML interactiva** generada automáticamente con detección de cambios
24
- - 🎯 **Variables compartidas** basadas en valores únicos
25
- - 🔄 **Conversión automática** de px a rem
26
- - 🛠️ **Helpers de spacing** (padding y margin) estilo Tailwind con propiedades lógicas (RTL)
35
+ - 🛠️ **Helpers de spacing** estilo Tailwind con propiedades lógicas (RTL)
27
36
  - 🎨 **Sistema de colores** con variables CSS
28
37
  - 📐 **Helpers de layout** (display, flexbox, alignment, gap)
29
38
  - 👀 **Modo watch** para desarrollo con regeneración automática
30
- - ✅ **Validación robusta** de configuración
31
- - 🧪 **Suite de tests** incluida
32
39
  - 🔍 **Gestión de variables CSS** con historial persistente
33
40
 
34
- ## 📦 Instalación
41
+ ## ⚖️ ¿Por qué HolyGrail5?
35
42
 
36
- ```bash
37
- # Instalación global
38
- npm install -g holygrail5
39
-
40
- # Instalación local
41
- npm install holygrail5
42
- ```
43
+ | Aspecto | Solo Tailwind | HolyGrail5 (Híbrido) |
44
+ |--------------------------|-------------------------------------------------------------------------------|---------------------------------------------------------------------|
45
+ | Velocidad de desarrollo | 🔥 Muy alta | 🔥 Alta |
46
+ | Consistencia visual | ⚠️ Difícil mantener si hay muchas utilidades | ✅ Mantienes branding y coherencia |
47
+ | Escalabilidad | ⚠️ Costoso en proyectos grandes | ✅ Fácil de mantener |
48
+ | Curva de aprendizaje | Media | Baja si ya vienes de BEM/SCSS |
49
+ | Control sobre design system | ❌ Limitado | ✅ Total |
50
+ | Performance CSS final | ✅ Muy buena | ✅ Muy buena |
43
51
 
44
- ## 🚀 Uso
52
+ ## 📖 Uso
45
53
 
46
54
  ### CLI
47
55
 
@@ -65,7 +73,7 @@ const css = generateCSS(config);
65
73
  const html = generateHTML(config);
66
74
  ```
67
75
 
68
- ### Desarrollo
76
+ ### Scripts de Desarrollo
69
77
 
70
78
  ```bash
71
79
  # Modo watch (regenera automáticamente al cambiar config.json)
@@ -81,7 +89,7 @@ npm run serve
81
89
  npm run start
82
90
  ```
83
91
 
84
- **Nota:** El servidor sirve desde `dist/` como raíz, así que la URL será `http://localhost:3000/index.html` (sin mostrar "dist" en la URL).
92
+ > **Nota:** El servidor sirve desde `dist/` como raíz, así que la URL será `http://localhost:3000/index.html` (sin mostrar "dist" en la URL).
85
93
 
86
94
  ## ⚙️ Configuración
87
95
 
@@ -105,8 +113,7 @@ npm run start
105
113
  "4": "4px",
106
114
  "8": "8px",
107
115
  "16": "16px",
108
- "24": "24px",
109
- "32": "32px"
116
+ "24": "24px"
110
117
  },
111
118
  "spacingImportant": ["0"],
112
119
  "colors": {
@@ -121,17 +128,7 @@ npm run start
121
128
  "class": "d",
122
129
  "responsive": true,
123
130
  "description": "Tipo de caja de renderizado",
124
- "values": ["contents", "inline", "inline-block", "block", "flex", "inline-flex", "none"]
125
- },
126
- "flex-direction": {
127
- "property": "flex-direction",
128
- "class": "flex",
129
- "responsive": true,
130
- "description": "Dirección del eje principal",
131
- "values": {
132
- "row": "row",
133
- "column": "column"
134
- }
131
+ "values": ["flex", "block", "none"]
135
132
  }
136
133
  },
137
134
  "classes": {
@@ -153,7 +150,7 @@ npm run start
153
150
  }
154
151
  ```
155
152
 
156
- ### Propiedades globales
153
+ ### Propiedades Globales
157
154
 
158
155
  | Propiedad | Tipo | Default | Descripción |
159
156
  |-----------|------|---------|-------------|
@@ -168,7 +165,7 @@ npm run start
168
165
  | `helpers` | object | - | Helpers de layout (display, flexbox, etc.) |
169
166
  | `classes` | object | **Requerido** | Clases CSS de tipografía a generar |
170
167
 
171
- ### Propiedades de clases
168
+ ### Propiedades de Clases
172
169
 
173
170
  **Base (aplicadas a todos los breakpoints):**
174
171
 
@@ -178,62 +175,10 @@ npm run start
178
175
  - `textTransform`: Transformación (none, uppercase, lowercase)
179
176
 
180
177
  **Responsive (por breakpoint):**
178
+
181
179
  - `mobile`: `{ fontSize: "18px", lineHeight: "1.2" }`
182
180
  - `desktop`: `{ fontSize: "24px", lineHeight: "1.5" }`
183
181
 
184
- ## 📄 Salida
185
-
186
- ### `dist/output.css`
187
-
188
- CSS generado con estructura organizada:
189
-
190
- 1. **Reset CSS Mínimo** - Normalización básica
191
- 2. **Variables CSS Compartidas** (`:root`) - Variables para:
192
-
193
- - Font families
194
- - Font sizes
195
- - Line heights
196
- - Font weights
197
- - Letter spacing
198
- - Text transform
199
- - Spacing values
200
- - Colors
201
- 3. **Helpers de Spacing (Mobile)** - Padding y margin con propiedades lógicas
202
- 4. **Helpers de Spacing (Desktop)** - Versiones `md:` con media queries
203
- 5. **Layout Helpers** - Display, flexbox, alignment, gap
204
- 6. **Tipografías (Mobile)** - Clases responsive para mobile
205
- 7. **Tipografías (Desktop)** - Clases responsive para desktop
206
- - Font families
207
- - Font sizes
208
- - Line heights
209
- - Font weights
210
- - Letter spacing
211
- - Text transform
212
- - Spacing values
213
- - Colors
214
- 3. **Helpers de Spacing (Mobile)** - Padding y margin con propiedades lógicas
215
- 4. **Helpers de Spacing (Desktop)** - Versiones `md:` con media queries
216
- 5. **Layout Helpers** - Display, flexbox, alignment, gap
217
- 6. **Tipografías (Mobile)** - Clases responsive para mobile
218
- 7. **Tipografías (Desktop)** - Clases responsive para desktop
219
-
220
- ### `dist/index.html`
221
-
222
- Guía HTML interactiva generada en la carpeta `dist/` con:
223
-
224
- - 🎨 **Sección de Colores** - Grid visual con preview de colores
225
- - 🔤 **Font Families** - Tabla con preview de fuentes
226
- - 📝 **Clases de Tipografía** - Tabla completa con preview y valores responsive
227
- - 🔗 **Variables CSS Compartidas** - Todas las variables generadas
228
- - 📏 **Helpers de Spacing** - Tabla con clases y variables
229
- - 📐 **Helpers de Layout** - Tabla con clases base y responsive (`md:`)
230
- - 📱 **Breakpoints** - Configuración de breakpoints
231
- - 🔍 **Búsqueda en tiempo real** - Filtra y resalta contenido
232
- - 🎯 **Detección de cambios** - Valores modificados se resaltan en verde
233
- - 📌 **Header sticky** - Navegación siempre visible
234
- - 📋 **Menú lateral** - Navegación rápida entre secciones
235
- - 📊 **Metadata** - Último commit y versión del package
236
-
237
182
  ## 🎯 Helpers de Spacing
238
183
 
239
184
  Genera clases estilo Tailwind para padding y margin con **propiedades lógicas** para soporte RTL automático:
@@ -335,40 +280,64 @@ Genera helpers para display, flexbox, alignment y gap:
335
280
  }
336
281
  ```
337
282
 
283
+ ## 📄 Archivos Generados
284
+
285
+ ### `dist/output.css`
286
+
287
+ CSS generado con estructura organizada:
288
+
289
+ 1. **Reset CSS Mínimo** - Normalización básica
290
+ 2. **Variables CSS Compartidas** (`:root`) - Variables para:
291
+ - Font families, font sizes, line heights
292
+ - Font weights, letter spacing, text transform
293
+ - Spacing values, colors
294
+ 3. **Helpers de Spacing (Mobile)** - Padding y margin con propiedades lógicas
295
+ 4. **Helpers de Spacing (Desktop)** - Versiones `md:` con media queries
296
+ 5. **Layout Helpers** - Display, flexbox, alignment, gap
297
+ 6. **Tipografías (Mobile)** - Clases responsive para mobile
298
+ 7. **Tipografías (Desktop)** - Clases responsive para desktop
299
+
300
+ ### `dist/index.html`
301
+
302
+ Guía HTML interactiva generada automáticamente con:
303
+
304
+ - 🎨 **Grid de colores** - Visualización de la paleta de colores con preview
305
+ - 🔤 **Font Families** - Tabla con preview de fuentes
306
+ - 📝 **Clases de Tipografía** - Tabla completa con preview y valores responsive
307
+ - 🔗 **Variables CSS Compartidas** - Todas las variables generadas
308
+ - 📏 **Helpers de Spacing** - Tabla con clases y variables
309
+ - 📐 **Helpers de Layout** - Tabla con clases base y responsive (`md:`)
310
+ - 📱 **Breakpoints** - Configuración de breakpoints
311
+ - 🔍 **Búsqueda en tiempo real** - Filtra y resalta contenido
312
+ - 🎯 **Detección de cambios** - Valores modificados se resaltan en verde
313
+ - 📌 **Header sticky** - Navegación siempre visible
314
+ - 📋 **Menú lateral** - Navegación rápida con scroll suave
315
+ - 📊 **Metadata** - Último commit y versión del package
316
+
338
317
  ## 🔍 Gestión de Variables CSS
339
318
 
340
319
  El generador mantiene un historial de todas las variables CSS generadas en `.data/.historical-variables.json` para que nunca se eliminen automáticamente, incluso si se borran las clases que las usaban.
341
320
 
342
- ### Comandos disponibles
321
+ ### Comandos Disponibles
343
322
 
344
323
  ```bash
345
324
  # Listar variables no usadas
346
325
  npm run vars:list
347
- # o
348
- node src/cli-variables.js list
349
326
 
350
327
  # Ver reporte completo de variables
351
328
  npm run vars:report
352
- # o
353
- node src/cli-variables.js report
354
329
 
355
330
  # Eliminar una variable específica del historial
356
331
  npm run vars:remove -- --hg-typo-font-size-18
357
- # o
358
- node src/cli-variables.js remove --hg-typo-font-size-18
359
332
 
360
333
  # Eliminar todas las variables no usadas del historial
361
334
  npm run vars:remove-all-unused
362
- # o
363
- node src/cli-variables.js remove-all-unused
364
335
 
365
336
  # Mostrar todas las variables históricas almacenadas
366
337
  npm run vars:show-all
367
- # o
368
- node src/cli-variables.js show-all
369
338
  ```
370
339
 
371
- ### Ejemplo de uso
340
+ ### Ejemplo de Uso
372
341
 
373
342
  ```bash
374
343
  # 1. Generar CSS
@@ -384,7 +353,7 @@ npm run vars:remove-all-unused
384
353
  npm run generate
385
354
  ```
386
355
 
387
- ### Opciones avanzadas
356
+ ### Opciones Avanzadas
388
357
 
389
358
  ```bash
390
359
  # Especificar ruta personalizada del CSS
@@ -410,38 +379,43 @@ node src/cli-variables.js list --history=./.data/.custom-variables.json
410
379
  | `npm run vars:remove-all-unused` | Elimina todas las variables no usadas |
411
380
  | `npm run vars:show-all` | Muestra todas las variables históricas |
412
381
 
413
- ## 🏗️ Estructura del proyecto
382
+ ## 🔑 Características Técnicas
414
383
 
415
- ```
416
- holygrail5/
417
- ├── generator.js # Orquestador principal
418
- ├── config.json # Configuración del proyecto
419
- ├── package.json # Dependencias y scripts
420
- ├── README.md # Este archivo
421
- ├── .data/ # Archivos de estado (gitignored)
422
- │ ├── .previous-values.json # Valores previos para detección de cambios
423
- │ └── .historical-variables.json # Historial de variables CSS
424
- ├── dist/ # Archivos generados (gitignored)
425
- │ ├── output.css # CSS generado
426
- │ └── index.html # Guía HTML interactiva
427
- ├── src/
428
- │ ├── config.js # Carga y validación de configuración
429
- │ ├── parser.js # Generación de CSS desde JSON
430
- │ ├── guide.js # Generación de guía HTML interactiva
431
- │ ├── utils.js # Utilidades compartidas (px→rem, etc.)
432
- │ ├── variables-manager.js # Gestión de variables CSS históricas
433
- │ ├── cli-variables.js # CLI para gestión de variables
434
- │ ├── watch.js # Modo watch para desarrollo
435
- │ └── dev.js # Script de desarrollo (watch + servidor)
436
- └── tests/
437
- ├── run-all.js # Ejecutor de todos los tests
438
- ├── config.test.js # Tests de configuración
439
- ├── parser.test.js # Tests del parseador
440
- ├── guide.test.js # Tests de la guía HTML
441
- └── utils.test.js # Tests de utilidades
442
- ```
384
+ ### Variables Compartidas
385
+
386
+ Las variables se generan basándose en **valores únicos**, no en clases:
443
387
 
444
- ## 🎨 Ejemplo de CSS generado
388
+ - Múltiples clases con `fontWeight: "900"` → una sola variable `--hg-typo-font-weight-900`
389
+ - Optimiza el CSS eliminando duplicados
390
+ - Historial persistente en `.data/.historical-variables.json`
391
+
392
+ ### Conversión px → rem
393
+
394
+ - `fontSize` en JSON: `"18px"` → CSS: `1.125rem` (usando `baseFontSize: 16`)
395
+ - Nombre de variable mantiene el valor original: `--hg-typo-font-size-18`
396
+ - Conversión automática para todos los valores en píxeles
397
+
398
+ ### Nombres de Variables
399
+
400
+ Patrón: `--{prefix}-{category}-{propiedad}-{valor}`
401
+
402
+ Ejemplos:
403
+
404
+ - `--hg-typo-font-family-primary`
405
+ - `--hg-typo-font-size-18`
406
+ - `--hg-spacing-4`
407
+ - `--hg-color-white`
408
+
409
+ ### Propiedades Lógicas (RTL)
410
+
411
+ Los helpers de spacing usan propiedades lógicas para soporte RTL automático:
412
+
413
+ - `pr-4` → `padding-inline-end` (no `padding-right`)
414
+ - `pl-4` → `padding-inline-start` (no `padding-left`)
415
+ - `mr-8` → `margin-inline-end` (no `margin-right`)
416
+ - `ml-8` → `margin-inline-start` (no `margin-left`)
417
+
418
+ ## 🎨 Ejemplo de CSS Generado
445
419
 
446
420
  ```css
447
421
  /* Reset CSS Mínimo */
@@ -503,66 +477,38 @@ html {
503
477
  }
504
478
  ```
505
479
 
506
- ## 🔑 Características técnicas
480
+ ## 🏗️ Estructura del Proyecto
507
481
 
508
- #### Variables compartidas
509
-
510
- Las variables se generan basándose en **valores únicos**, no en clases:
511
-
512
- - Múltiples clases con `fontWeight: "900"` → una sola variable `--hg-typo-font-weight-900`
513
- - Optimiza el CSS eliminando duplicados
514
- - Historial persistente en `.data/.historical-variables.json`
515
-
516
- #### Conversión px rem
517
-
518
- - `fontSize` en JSON: `"18px"` → CSS: `1.125rem` (usando `baseFontSize: 16`)
519
- - Nombre de variable mantiene el valor original: `--hg-typo-font-size-18`
520
- - Conversión automática para todos los valores en píxeles
521
-
522
- #### Nombres de variables
523
-
524
- Patrón: `--{prefix}-{category}-{propiedad}-{valor}`
525
-
526
- Ejemplos:
527
-
528
- - `--hg-typo-font-family-primary`
529
- - `--hg-typo-font-size-18`
530
- - `--hg-spacing-4`
531
- - `--hg-color-white`
532
-
533
- #### Propiedades lógicas (RTL)
534
-
535
- Los helpers de spacing usan propiedades lógicas para soporte RTL automático:
536
-
537
- - `pr-4` → `padding-inline-end` (no `padding-right`)
538
- - `pl-4` → `padding-inline-start` (no `padding-left`)
539
- - `mr-8` → `margin-inline-end` (no `margin-right`)
540
- - `ml-8` → `margin-inline-start` (no `margin-left`)
541
-
542
- ## 📊 Guía HTML Interactiva
543
-
544
- La guía HTML generada en `dist/index.html` incluye:
545
-
546
- #### Características
547
-
548
- - 🎨 **Grid de colores** - Visualización de la paleta de colores con preview
549
- - 🔤 **Font Families** - Tabla con preview de fuentes
550
- - 📝 **Tipografía** - Tabla completa con preview y valores mobile/desktop
551
- - 🔗 **Variables CSS** - Todas las variables generadas con valores
552
- - 📏 **Helpers de Spacing** - Clases y variables de padding/margin
553
- - 📐 **Helpers de Layout** - Display, flexbox, alignment, gap
554
- - 📱 **Breakpoints** - Configuración de breakpoints
555
-
556
- #### Funcionalidades interactivas
557
-
558
- - 🔍 **Búsqueda en tiempo real** - Filtra y resalta contenido en todas las tablas
559
- - 🎯 **Detección de cambios** - Valores modificados se resaltan en verde
560
- - 📌 **Header sticky** - Navegación y búsqueda siempre visibles
561
- - 📋 **Menú lateral** - Navegación rápida con scroll suave
562
- - 📊 **Metadata** - Último commit de Git y versión del package
563
- - 🔄 **Cache busting** - Timestamp en CSS para forzar recarga
482
+ ```
483
+ holygrail5/
484
+ ├── generator.js # Orquestador principal
485
+ ├── config.json # Configuración del proyecto
486
+ ├── package.json # Dependencias y scripts
487
+ ├── README.md # Este archivo
488
+ ├── .data/ # Archivos de estado (gitignored)
489
+ │ ├── .previous-values.json # Valores previos para detección de cambios
490
+ │ └── .historical-variables.json # Historial de variables CSS
491
+ ├── dist/ # Archivos generados (gitignored)
492
+ │ ├── output.css # CSS generado
493
+ │ └── index.html # Guía HTML interactiva
494
+ ├── src/
495
+ │ ├── config.js # Carga y validación de configuración
496
+ │ ├── parser.js # Generación de CSS desde JSON
497
+ │ ├── guide.js # Generación de guía HTML interactiva
498
+ │ ├── utils.js # Utilidades compartidas (px→rem, etc.)
499
+ │ ├── variables-manager.js # Gestión de variables CSS históricas
500
+ │ ├── cli-variables.js # CLI para gestión de variables
501
+ │ ├── watch.js # Modo watch para desarrollo
502
+ │ └── dev.js # Script de desarrollo (watch + servidor)
503
+ └── tests/
504
+ ├── run-all.js # Ejecutor de todos los tests
505
+ ├── config.test.js # Tests de configuración
506
+ ├── parser.test.js # Tests del parseador
507
+ ├── guide.test.js # Tests de la guía HTML
508
+ └── utils.test.js # Tests de utilidades
509
+ ```
564
510
 
565
- ## 🐛 Solución de problemas
511
+ ## 🐛 Solución de Problemas
566
512
 
567
513
  **Error: "Archivo de configuración no encontrado"**
568
514
 
@@ -595,14 +541,17 @@ Para desplegar en GitHub Pages, puedes:
595
541
  2. O crear un workflow de GitHub Actions que genere los archivos en `docs/` automáticamente
596
542
 
597
543
  **Opción 1 - Usar dist/ directamente:**
544
+
598
545
  - En Settings → Pages, selecciona la rama y carpeta `dist/`
599
546
 
600
547
  **Opción 2 - Workflow automático:**
548
+
601
549
  - Crea `.github/workflows/deploy.yml` que ejecute `npm run generate` y copie archivos a `docs/`
602
550
 
603
551
  ## 📚 Recursos
604
552
 
605
553
  - **Repositorio**: [GitHub](https://github.com/holygrailcss/holygrail5.git)
554
+ - **npm**: [holygrail5](https://www.npmjs.com/package/holygrail5)
606
555
  - **Licencia**: MIT
607
556
  - **Node.js**: Requiere >=12.0.0
608
557
 
@@ -617,6 +566,7 @@ Para desplegar en GitHub Pages, puedes:
617
566
  ## 📝 Changelog
618
567
 
619
568
  ### v1.0.2
569
+
620
570
  - ✅ Sistema de colores con variables CSS
621
571
  - ✅ Helpers de layout (display, flexbox, alignment, gap)
622
572
  - ✅ Propiedades lógicas para soporte RTL
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "holygrail5",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Framework CSS generator con Node.js - Genera CSS optimizado con variables CSS desde un archivo JSON de configuración",
5
5
  "main": "generator.js",
6
6
  "bin": {
package/src/guide.js CHANGED
@@ -1146,6 +1146,7 @@ function generateHTML(configData, previousValuesPath = null) {
1146
1146
  background: white;
1147
1147
  border-right: 1px solid #e0e0e0;
1148
1148
  padding: 2rem 0;
1149
+ padding-bottom: 120px;
1149
1150
  overflow-y: auto;
1150
1151
  z-index: 100;
1151
1152
  box-shadow: 2px 0 8px rgba(0,0,0,0.05);
@@ -1167,6 +1168,28 @@ function generateHTML(configData, previousValuesPath = null) {
1167
1168
  .sidebar-nav {
1168
1169
  padding: 0 1rem;
1169
1170
  }
1171
+
1172
+ .sidebar-footer {
1173
+ position: absolute;
1174
+ bottom: 0;
1175
+ left: 0;
1176
+ right: 0;
1177
+ padding: 1rem 1.5rem .5rem 1.5rem;
1178
+ border-top: 1px solid #e0e0e0;
1179
+ background: white;
1180
+ }
1181
+
1182
+ .sidebar-badges {
1183
+ display: flex;
1184
+ flex-direction: column;
1185
+ gap: 0.5rem;
1186
+ align-items: flex-start;
1187
+ }
1188
+
1189
+ .sidebar-badges img {
1190
+ height: 20px;
1191
+ width: auto;
1192
+ }
1170
1193
 
1171
1194
  .menu-item {
1172
1195
  display: block;
@@ -1315,6 +1338,15 @@ function generateHTML(configData, previousValuesPath = null) {
1315
1338
  <nav class="sidebar-nav">
1316
1339
  ${menuHTML}
1317
1340
  </nav>
1341
+
1342
+ <div class="sidebar-footer">
1343
+ <div class="sidebar-badges">
1344
+ <a href="https://www.npmjs.com/package/holygrail5" target="_blank" rel="noopener noreferrer">
1345
+ <img src="https://img.shields.io/npm/v/holygrail5.svg" alt="npm version" />
1346
+ </a>
1347
+
1348
+ </div>
1349
+ </div>
1318
1350
  </aside>
1319
1351
 
1320
1352
  <main class="main-content">