holygrail5 1.0.5 → 1.0.7
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 +467 -0
- package/config.json +172 -1
- package/generator.js +21 -1
- package/package.json +7 -4
- package/src/dev.js +3 -2
- package/src/guide.js +36 -42
- package/src/parser.js +156 -85
- package/src/utils.js +81 -1
- package/themes/dutti/README.md +380 -0
- package/themes/dutti/_buttons.css +113 -0
- package/themes/dutti/_checkboxes.css +68 -0
- package/themes/dutti/_forms.css +62 -0
- package/themes/dutti/_inputs.css +84 -0
- package/themes/dutti/_labels.css +28 -0
- package/themes/dutti/_radios.css +64 -0
- package/themes/dutti/_switches.css +70 -0
- package/themes/dutti/_variables.css +86 -0
- package/themes/dutti/demo.html +429 -0
- package/themes/dutti/theme.css +30 -0
package/README.md
CHANGED
|
@@ -578,4 +578,471 @@ Para desplegar en GitHub Pages, puedes:
|
|
|
578
578
|
|
|
579
579
|
---
|
|
580
580
|
|
|
581
|
+
## 🚀 ¿Por qué HolyGrail5? Evolución desde HolyGrail CSS (SASS)
|
|
582
|
+
|
|
583
|
+
### El Problema con SASS
|
|
584
|
+
|
|
585
|
+
HolyGrail CSS original se basaba en **SASS/SCSS**, lo que presentaba varios desafíos:
|
|
586
|
+
|
|
587
|
+
#### Limitaciones de SASS
|
|
588
|
+
|
|
589
|
+
1. **Dependencia de compilación**: Requiere herramientas de build (Gulp, Webpack, etc.) y procesos de compilación
|
|
590
|
+
2. **Curva de aprendizaje**: Necesitas conocer SASS/SCSS para personalizar
|
|
591
|
+
3. **Configuración compleja**: Variables SASS dispersas en múltiples archivos
|
|
592
|
+
4. **Sin documentación automática**: No genera guías visuales de las clases disponibles
|
|
593
|
+
5. **Mantenimiento manual**: Cambios en variables requieren editar código SASS directamente
|
|
594
|
+
6. **Sin historial**: No hay gestión automática de variables no usadas
|
|
595
|
+
7. **Menos portable**: Depende del ecosistema SASS y sus herramientas
|
|
596
|
+
|
|
597
|
+
### La Solución: HolyGrail5
|
|
598
|
+
|
|
599
|
+
HolyGrail5 nace de la necesidad de **simplificar, modernizar y potenciar** el framework original.
|
|
600
|
+
|
|
601
|
+
#### Ventajas Clave de HolyGrail5
|
|
602
|
+
|
|
603
|
+
##### 1. **Configuración Declarativa con JSON**
|
|
604
|
+
|
|
605
|
+
**Antes (SASS):**
|
|
606
|
+
```scss
|
|
607
|
+
// Variables dispersas en múltiples archivos
|
|
608
|
+
$font-size-mobile: 18px;
|
|
609
|
+
$font-size-desktop: 24px;
|
|
610
|
+
$spacing-16: 16px;
|
|
611
|
+
// ... más variables en diferentes archivos
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
**Ahora (JSON):**
|
|
615
|
+
```json
|
|
616
|
+
{
|
|
617
|
+
"classes": {
|
|
618
|
+
"h2": {
|
|
619
|
+
"mobile": { "fontSize": "18px" },
|
|
620
|
+
"desktop": { "fontSize": "24px" }
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"spacingMap": { "16": "16px" }
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
✅ **Ventaja**: Todo en un solo archivo, fácil de entender y modificar
|
|
628
|
+
|
|
629
|
+
##### 2. **Sin Dependencias de Build Complejas**
|
|
630
|
+
|
|
631
|
+
**Antes (SASS):**
|
|
632
|
+
- Requiere Gulp/Webpack/Grunt
|
|
633
|
+
- Configuración de compilación
|
|
634
|
+
- Dependencias de Node.js específicas
|
|
635
|
+
- Procesos de build complejos
|
|
636
|
+
|
|
637
|
+
**Ahora (HolyGrail5):**
|
|
638
|
+
```bash
|
|
639
|
+
npm run generate
|
|
640
|
+
# ¡Listo! CSS generado
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
✅ **Ventaja**: Un solo comando, sin configuración de build
|
|
644
|
+
|
|
645
|
+
##### 3. **Guía Interactiva Automática**
|
|
646
|
+
|
|
647
|
+
**Antes (SASS):**
|
|
648
|
+
- Documentación manual
|
|
649
|
+
- Sin preview visual
|
|
650
|
+
- Difícil saber qué clases están disponibles
|
|
651
|
+
|
|
652
|
+
**Ahora (HolyGrail5):**
|
|
653
|
+
- Guía HTML generada automáticamente
|
|
654
|
+
- Preview visual de todas las clases
|
|
655
|
+
- Búsqueda en tiempo real
|
|
656
|
+
- Detección de cambios
|
|
657
|
+
|
|
658
|
+
✅ **Ventaja**: Documentación siempre actualizada y visual
|
|
659
|
+
|
|
660
|
+
##### 4. **Gestión Inteligente de Variables**
|
|
661
|
+
|
|
662
|
+
**Antes (SASS):**
|
|
663
|
+
- Variables se eliminan si no se usan
|
|
664
|
+
- Puede romper CSS personalizado
|
|
665
|
+
- Sin historial
|
|
666
|
+
|
|
667
|
+
**Ahora (HolyGrail5):**
|
|
668
|
+
- Historial persistente de variables
|
|
669
|
+
- Nunca se eliminan automáticamente
|
|
670
|
+
- Comandos para gestionar variables no usadas
|
|
671
|
+
- Protege tu CSS personalizado
|
|
672
|
+
|
|
673
|
+
✅ **Ventaja**: Seguridad y control total sobre las variables
|
|
674
|
+
|
|
675
|
+
##### 5. **Variables CSS Nativas (No SASS)**
|
|
676
|
+
|
|
677
|
+
**Antes (SASS):**
|
|
678
|
+
```scss
|
|
679
|
+
// Variables SASS (solo en compilación)
|
|
680
|
+
$primary-color: #000000;
|
|
681
|
+
.my-class {
|
|
682
|
+
color: $primary-color; // Compilado a CSS estático
|
|
683
|
+
}
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
**Ahora (HolyGrail5):**
|
|
687
|
+
```css
|
|
688
|
+
/* Variables CSS nativas (runtime) */
|
|
689
|
+
:root {
|
|
690
|
+
--hg-color-primary: #000000;
|
|
691
|
+
}
|
|
692
|
+
.my-class {
|
|
693
|
+
color: var(--hg-color-primary); // Cambiable en runtime
|
|
694
|
+
}
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
✅ **Ventaja**: Variables CSS nativas, modificables en runtime, mejor rendimiento
|
|
698
|
+
|
|
699
|
+
##### 6. **Optimización Automática**
|
|
700
|
+
|
|
701
|
+
**Antes (SASS):**
|
|
702
|
+
- Duplicación de valores en múltiples lugares
|
|
703
|
+
- CSS más pesado
|
|
704
|
+
- Sin deduplicación automática
|
|
705
|
+
|
|
706
|
+
**Ahora (HolyGrail5):**
|
|
707
|
+
- Variables compartidas automáticamente
|
|
708
|
+
- Un valor único → una variable CSS
|
|
709
|
+
- CSS más pequeño y eficiente
|
|
710
|
+
|
|
711
|
+
✅ **Ventaja**: CSS optimizado automáticamente, menos código
|
|
712
|
+
|
|
713
|
+
##### 7. **Modo Watch Integrado**
|
|
714
|
+
|
|
715
|
+
**Antes (SASS):**
|
|
716
|
+
- Requiere configurar watch en Gulp/Webpack
|
|
717
|
+
- Configuración adicional necesaria
|
|
718
|
+
|
|
719
|
+
**Ahora (HolyGrail5):**
|
|
720
|
+
```bash
|
|
721
|
+
npm run watch
|
|
722
|
+
# Regenera automáticamente al cambiar config.json
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
✅ **Ventaja**: Watch listo para usar, sin configuración
|
|
726
|
+
|
|
727
|
+
##### 8. **Portabilidad y Simplicidad**
|
|
728
|
+
|
|
729
|
+
**Antes (SASS):**
|
|
730
|
+
- Múltiples archivos SASS
|
|
731
|
+
- Estructura compleja
|
|
732
|
+
- Dependencias de herramientas de build
|
|
733
|
+
|
|
734
|
+
**Ahora (HolyGrail5):**
|
|
735
|
+
- Un solo archivo JSON de configuración
|
|
736
|
+
- Estructura simple y clara
|
|
737
|
+
- Solo Node.js (sin SASS, Gulp, etc.)
|
|
738
|
+
|
|
739
|
+
✅ **Ventaja**: Más fácil de entender, mantener y compartir
|
|
740
|
+
|
|
741
|
+
##### 9. **Mejor para Equipos**
|
|
742
|
+
|
|
743
|
+
**Antes (SASS):**
|
|
744
|
+
- Solo desarrolladores que conocen SASS pueden modificar
|
|
745
|
+
- Cambios requieren conocimiento técnico
|
|
746
|
+
|
|
747
|
+
**Ahora (HolyGrail5):**
|
|
748
|
+
- Cualquiera puede editar JSON
|
|
749
|
+
- Cambios visibles inmediatamente
|
|
750
|
+
- Menos barrera de entrada
|
|
751
|
+
|
|
752
|
+
✅ **Ventaja**: Colaboración más fácil, menos dependencia de desarrolladores
|
|
753
|
+
|
|
754
|
+
##### 10. **Ecosistema Moderno**
|
|
755
|
+
|
|
756
|
+
**Antes (SASS):**
|
|
757
|
+
- Tecnología más antigua
|
|
758
|
+
- Menos integración con herramientas modernas
|
|
759
|
+
- Ecosistema SASS en declive
|
|
760
|
+
|
|
761
|
+
**Ahora (HolyGrail5):**
|
|
762
|
+
- Tecnología moderna (Node.js, JSON, CSS Variables)
|
|
763
|
+
- Mejor integración con herramientas actuales
|
|
764
|
+
- Alineado con estándares web modernos
|
|
765
|
+
|
|
766
|
+
✅ **Ventaja**: Framework preparado para el futuro
|
|
767
|
+
|
|
768
|
+
##### 11. **Separación de Componentes y Flexibilidad**
|
|
769
|
+
|
|
770
|
+
**Antes (HolyGrail CSS con Angular):**
|
|
771
|
+
- Framework acoplado a Angular
|
|
772
|
+
- Componentes incluidos (botones, cards, etc.) que aumentaban el peso
|
|
773
|
+
- CSS pesado con estilos de componentes que no siempre se usaban
|
|
774
|
+
- Difícil integrar otras librerías de componentes
|
|
775
|
+
- Dependencia de Angular y sus componentes
|
|
776
|
+
|
|
777
|
+
**Ahora (HolyGrail5):**
|
|
778
|
+
- **Solo CSS puro**: Sin dependencias de frameworks
|
|
779
|
+
- **Sin componentes incluidos**: Solo clases de utilidad y layout
|
|
780
|
+
- **CSS ligero**: Solo lo esencial (tipografía, spacing, layout, grid)
|
|
781
|
+
- **Integración flexible**: Puedes usar cualquier librería de componentes
|
|
782
|
+
- **Compatible con MDS de Inditex**: Diseñado para trabajar junto con sistemas de componentes externos
|
|
783
|
+
|
|
784
|
+
✅ **Ventaja**: Framework ligero, flexible y compatible con cualquier librería de componentes
|
|
785
|
+
|
|
786
|
+
##### 12. **Maquetación con IA**
|
|
787
|
+
|
|
788
|
+
**Antes (SASS + Angular):**
|
|
789
|
+
- Estructura compleja difícil de entender para IA
|
|
790
|
+
- Código SASS disperso
|
|
791
|
+
- Componentes acoplados
|
|
792
|
+
- Difícil generar código automáticamente
|
|
793
|
+
|
|
794
|
+
**Ahora (HolyGrail5):**
|
|
795
|
+
- **Configuración JSON clara**: Fácil de entender y generar por IA
|
|
796
|
+
- **Clases semánticas**: Nomenclatura clara y predecible
|
|
797
|
+
- **Superprompt disponible**: Guía completa para que IA genere código correcto
|
|
798
|
+
- **Estructura simple**: Patrones claros y repetibles
|
|
799
|
+
|
|
800
|
+
✅ **Ventaja**: Perfecto para maquetación asistida por IA, generación automática de código
|
|
801
|
+
|
|
802
|
+
### Separación de Responsabilidades
|
|
803
|
+
|
|
804
|
+
HolyGrail5 adopta una **filosofía de separación de responsabilidades**:
|
|
805
|
+
|
|
806
|
+
#### Lo que INCLUYE HolyGrail5:
|
|
807
|
+
- ✅ Sistema de tipografía
|
|
808
|
+
- ✅ Helpers de spacing (padding, margin)
|
|
809
|
+
- ✅ Helpers de layout (flexbox, grid)
|
|
810
|
+
- ✅ Sistema de grid responsive
|
|
811
|
+
- ✅ Variables CSS para colores
|
|
812
|
+
- ✅ Reset CSS mínimo
|
|
813
|
+
|
|
814
|
+
#### Lo que NO incluye (y por qué es mejor):
|
|
815
|
+
- ❌ Componentes UI (botones, cards, modales, etc.)
|
|
816
|
+
- ❌ Estilos de formularios
|
|
817
|
+
- ❌ Estilos de navegación
|
|
818
|
+
- ❌ Estilos específicos de Angular/React/Vue
|
|
819
|
+
|
|
820
|
+
**Razón**: Esto permite:
|
|
821
|
+
1. **Usar MDS de Inditex** u otras librerías de componentes sin conflictos
|
|
822
|
+
2. **CSS más ligero**: Solo lo esencial
|
|
823
|
+
3. **Flexibilidad total**: Eliges tus propios componentes
|
|
824
|
+
4. **Mejor mantenimiento**: Cada cosa en su lugar
|
|
825
|
+
|
|
826
|
+
### Integración con MDS de Inditex
|
|
827
|
+
|
|
828
|
+
HolyGrail5 está diseñado para trabajar **perfectamente** junto con MDS (Massimo Dutti System) de Inditex:
|
|
829
|
+
|
|
830
|
+
```html
|
|
831
|
+
<!-- Usa HolyGrail5 para layout y spacing -->
|
|
832
|
+
<div class="row">
|
|
833
|
+
<div class="col-xs-12 col-md-6">
|
|
834
|
+
<!-- Usa componentes MDS para UI -->
|
|
835
|
+
<mds-button variant="primary">Botón MDS</mds-button>
|
|
836
|
+
</div>
|
|
837
|
+
</div>
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
**Ventajas de esta combinación:**
|
|
841
|
+
- ✅ HolyGrail5 maneja el layout y estructura
|
|
842
|
+
- ✅ MDS proporciona los componentes UI
|
|
843
|
+
- ✅ Sin conflictos de estilos
|
|
844
|
+
- ✅ Mejor de ambos mundos
|
|
845
|
+
|
|
846
|
+
### Maquetación con IA
|
|
847
|
+
|
|
848
|
+
HolyGrail5 es **ideal para maquetación asistida por IA** gracias a:
|
|
849
|
+
|
|
850
|
+
1. **Superprompt disponible**: Guía completa (`SUPERPROMPT.md`) que permite a la IA entender el sistema
|
|
851
|
+
2. **Nomenclatura clara**: Clases predecibles y semánticas
|
|
852
|
+
3. **Patrones simples**: Estructura fácil de seguir
|
|
853
|
+
4. **Configuración JSON**: Fácil de generar y modificar automáticamente
|
|
854
|
+
|
|
855
|
+
**Ejemplo de uso con IA:**
|
|
856
|
+
```
|
|
857
|
+
Prompt: "Crea una página de restaurante con header, hero, menú de platos y footer usando HolyGrail5"
|
|
858
|
+
|
|
859
|
+
La IA puede:
|
|
860
|
+
- Consultar SUPERPROMPT.md para entender las clases
|
|
861
|
+
- Generar HTML con las clases correctas
|
|
862
|
+
- Usar el grid system apropiado
|
|
863
|
+
- Aplicar spacing y layout helpers correctamente
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
✅ **Ventaja**: Acelera el desarrollo con generación automática de código
|
|
867
|
+
|
|
868
|
+
### Comparación Directa
|
|
869
|
+
|
|
870
|
+
| Característica | HolyGrail CSS (SASS) | HolyGrail5 | ¿Por qué HolyGrail5 es mejor? |
|
|
871
|
+
|----------------|----------------------|------------|------------------------------|
|
|
872
|
+
| **Configuración** | Múltiples archivos SASS dispersos | Un solo archivo JSON (`config.json`) | ✅ **Simplicidad**: Todo en un lugar, fácil de entender y modificar |
|
|
873
|
+
| **Compilación** | Requiere Gulp/Webpack y configuración compleja | `npm run generate` (comando simple) | ✅ **Sin complejidad**: No necesitas configurar build tools |
|
|
874
|
+
| **Variables** | Variables SASS (compiladas, estáticas) | Variables CSS nativas (runtime, dinámicas) | ✅ **Flexibilidad**: Puedes cambiar valores en runtime con JavaScript |
|
|
875
|
+
| **Documentación** | Manual, requiere mantenimiento | Automática (HTML interactivo generado) | ✅ **Siempre actualizada**: Se genera automáticamente desde la configuración |
|
|
876
|
+
| **Gestión de variables** | Manual, propenso a errores | Automática con historial y herramientas CLI | ✅ **Seguridad**: Herramientas para detectar y eliminar variables no usadas |
|
|
877
|
+
| **Curva de aprendizaje** | Media-Alta (requiere conocer SASS) | Baja (solo JSON, fácil de entender) | ✅ **Accesibilidad**: Cualquiera puede editar sin conocimientos técnicos avanzados |
|
|
878
|
+
| **Portabilidad** | Media (depende de SASS y build tools) | Alta (solo Node.js, sin dependencias complejas) | ✅ **Fácil de mover**: Menos dependencias, más portable |
|
|
879
|
+
| **Optimización** | Manual (debes optimizar tú mismo) | Automática (elimina código no usado) | ✅ **Rendimiento**: CSS más pequeño automáticamente |
|
|
880
|
+
| **Watch mode** | Requiere configuración en Gulp/Webpack | Integrado (`npm run watch`) | ✅ **Desarrollo rápido**: Watch mode listo para usar |
|
|
881
|
+
| **Accesibilidad** | Solo desarrolladores con conocimientos SASS | Cualquiera puede editar (diseñadores, PMs, etc.) | ✅ **Colaboración**: Más personas pueden contribuir |
|
|
882
|
+
| **Componentes** | Incluidos (botones, cards, modales, etc.) | Separados (solo utilidades) | ✅ **Ligereza**: No incluye código que no uses |
|
|
883
|
+
| **Peso CSS** | Pesado (cientos de clases de componentes) | Ligero (solo utilidades esenciales) | ✅ **Rendimiento**: CSS más pequeño = páginas más rápidas |
|
|
884
|
+
| **Integración** | Acoplado a Angular | Compatible con cualquier librería | ✅ **Flexibilidad**: Puedes usar MDS, Material, Bootstrap, etc. |
|
|
885
|
+
| **Maquetación IA** | Difícil (estructura compleja) | Optimizado (JSON claro, superprompt) | ✅ **Futuro**: Perfecto para generación automática de código |
|
|
886
|
+
|
|
887
|
+
### Casos de Uso Ideales para HolyGrail5
|
|
888
|
+
|
|
889
|
+
✅ **Perfecto para:**
|
|
890
|
+
- Proyectos que buscan simplicidad
|
|
891
|
+
- Equipos con diferentes niveles técnicos
|
|
892
|
+
- Proyectos que necesitan documentación automática
|
|
893
|
+
- Aplicaciones que requieren variables CSS en runtime
|
|
894
|
+
- Proyectos que quieren evitar dependencias de build complejas
|
|
895
|
+
- Design systems que necesitan mantenimiento fácil
|
|
896
|
+
- **Proyectos que usan MDS de Inditex u otras librerías de componentes**
|
|
897
|
+
- **Maquetación asistida por IA**
|
|
898
|
+
- **Proyectos que necesitan CSS ligero sin componentes incluidos**
|
|
899
|
+
|
|
900
|
+
### Migración desde HolyGrail CSS (SASS)
|
|
901
|
+
|
|
902
|
+
Si vienes de HolyGrail CSS (SASS), la migración es sencilla:
|
|
903
|
+
|
|
904
|
+
1. **Extrae tus variables SASS** → Conviértelas a `config.json`
|
|
905
|
+
2. **Mantén tus clases HTML** → Son compatibles
|
|
906
|
+
3. **Regenera el CSS** → `npm run generate`
|
|
907
|
+
4. **Disfruta de las nuevas características** → Guía interactiva, watch mode, etc.
|
|
908
|
+
|
|
909
|
+
### Arquitectura Ligera y Flexible
|
|
910
|
+
|
|
911
|
+
#### El Problema del Framework Anterior
|
|
912
|
+
|
|
913
|
+
El framework original (HolyGrail CSS) incluía:
|
|
914
|
+
- **Componentes de Angular**: Botones, cards, modales, etc.
|
|
915
|
+
- **CSS pesado**: Estilos de componentes que no siempre se necesitaban
|
|
916
|
+
- **Acoplamiento**: Dependencia de Angular y sus componentes
|
|
917
|
+
- **Poco flexible**: Difícil usar otras librerías de componentes
|
|
918
|
+
|
|
919
|
+
**Ejemplos de clases incluidas en el framework antiguo (que aumentaban el peso):**
|
|
920
|
+
```css
|
|
921
|
+
/* Formularios acoplados a Angular */
|
|
922
|
+
.form-input-label-2
|
|
923
|
+
.form-input-label-2.has-ico-pre
|
|
924
|
+
.form-input-label-2.has-ico-post
|
|
925
|
+
.validation-error-messages
|
|
926
|
+
|
|
927
|
+
/* Botones y links específicos */
|
|
928
|
+
.btn
|
|
929
|
+
.link-line
|
|
930
|
+
.link-svg-pre
|
|
931
|
+
.link-svg-post
|
|
932
|
+
|
|
933
|
+
/* Componentes de navegación */
|
|
934
|
+
.header-account-back
|
|
935
|
+
.mn-mainmenu
|
|
936
|
+
.mn-mainbar
|
|
937
|
+
.tabs-mini
|
|
938
|
+
|
|
939
|
+
/* Componentes UI */
|
|
940
|
+
.tooltip-sm
|
|
941
|
+
.toast
|
|
942
|
+
.md-accordion
|
|
943
|
+
.md-toggle
|
|
944
|
+
.bottom-sheet
|
|
945
|
+
.tag-product
|
|
946
|
+
.list-state
|
|
947
|
+
|
|
948
|
+
/* Soporte RTL específico */
|
|
949
|
+
.is-rtl .form-input-label-2
|
|
950
|
+
.is-rtl .btn
|
|
951
|
+
.is-rtl .tooltip-sm
|
|
952
|
+
/* ... y cientos más */
|
|
953
|
+
```
|
|
954
|
+
|
|
955
|
+
**Problema**: Estas clases ocupaban espacio en el CSS final aunque no se usaran, y creaban conflictos al intentar usar otras librerías de componentes como MDS.
|
|
956
|
+
|
|
957
|
+
#### La Solución: Separación de Responsabilidades
|
|
958
|
+
|
|
959
|
+
HolyGrail5 adopta el principio de **"hacer una cosa y hacerla bien"**:
|
|
960
|
+
|
|
961
|
+
**HolyGrail5 se enfoca en:**
|
|
962
|
+
- Layout y estructura (grid, flexbox)
|
|
963
|
+
- Spacing y tipografía
|
|
964
|
+
- Variables CSS compartidas
|
|
965
|
+
- Helpers de utilidad
|
|
966
|
+
|
|
967
|
+
**NO incluye:**
|
|
968
|
+
- Componentes UI (botones, cards, etc.)
|
|
969
|
+
- Estilos de formularios
|
|
970
|
+
- Estilos específicos de frameworks
|
|
971
|
+
|
|
972
|
+
**Resultado:**
|
|
973
|
+
- ✅ CSS más ligero (solo lo esencial)
|
|
974
|
+
- ✅ Compatible con MDS de Inditex
|
|
975
|
+
- ✅ Compatible con cualquier librería de componentes
|
|
976
|
+
- ✅ Flexibilidad total para elegir tus componentes
|
|
977
|
+
|
|
978
|
+
### Integración con MDS de Inditex
|
|
979
|
+
|
|
980
|
+
HolyGrail5 está diseñado específicamente para trabajar junto con **MDS (Massimo Dutti System)** de Inditex:
|
|
981
|
+
|
|
982
|
+
```html
|
|
983
|
+
<!-- Layout con HolyGrail5 -->
|
|
984
|
+
<div class="row">
|
|
985
|
+
<div class="col-xs-12 col-md-6 p-16">
|
|
986
|
+
<!-- Componentes de MDS -->
|
|
987
|
+
<mds-button variant="primary">Reservar Mesa</mds-button>
|
|
988
|
+
<mds-card>
|
|
989
|
+
<mds-card-header>Título</mds-card-header>
|
|
990
|
+
<mds-card-content>Contenido</mds-card-content>
|
|
991
|
+
</mds-card>
|
|
992
|
+
</div>
|
|
993
|
+
</div>
|
|
994
|
+
```
|
|
995
|
+
|
|
996
|
+
**Ventajas:**
|
|
997
|
+
- ✅ Sin conflictos de estilos
|
|
998
|
+
- ✅ HolyGrail5 maneja layout, MDS maneja componentes
|
|
999
|
+
- ✅ Mejor de ambos mundos
|
|
1000
|
+
- ✅ CSS optimizado y ligero
|
|
1001
|
+
|
|
1002
|
+
### Maquetación con IA
|
|
1003
|
+
|
|
1004
|
+
HolyGrail5 es **perfecto para maquetación asistida por IA**:
|
|
1005
|
+
|
|
1006
|
+
#### ¿Por qué funciona tan bien con IA?
|
|
1007
|
+
|
|
1008
|
+
1. **Superprompt disponible**: `SUPERPROMPT.md` contiene toda la información necesaria
|
|
1009
|
+
2. **Nomenclatura clara**: Clases predecibles y semánticas
|
|
1010
|
+
3. **Patrones simples**: Estructura fácil de seguir
|
|
1011
|
+
4. **Configuración JSON**: Fácil de generar automáticamente
|
|
1012
|
+
5. **Sin complejidad**: No hay componentes acoplados que confundan a la IA
|
|
1013
|
+
|
|
1014
|
+
#### Ejemplo de Uso con IA
|
|
1015
|
+
|
|
1016
|
+
```
|
|
1017
|
+
Prompt para IA:
|
|
1018
|
+
"Crea una página de restaurante con header sticky, hero section,
|
|
1019
|
+
grid de 6 platos destacados, sección sobre nosotros y footer,
|
|
1020
|
+
usando HolyGrail5 según SUPERPROMPT.md"
|
|
1021
|
+
|
|
1022
|
+
La IA puede:
|
|
1023
|
+
✅ Generar HTML con las clases correctas
|
|
1024
|
+
✅ Usar el grid system apropiado
|
|
1025
|
+
✅ Aplicar spacing helpers correctamente
|
|
1026
|
+
✅ Crear layouts responsive
|
|
1027
|
+
✅ Integrar con componentes MDS si es necesario
|
|
1028
|
+
```
|
|
1029
|
+
|
|
1030
|
+
**Resultado**: Desarrollo más rápido y código consistente generado automáticamente.
|
|
1031
|
+
|
|
1032
|
+
### Conclusión
|
|
1033
|
+
|
|
1034
|
+
HolyGrail5 representa la **evolución natural** del framework original, eliminando las complejidades de SASS, separando los componentes pesados de Angular, y aprovechando las capacidades modernas de CSS y JavaScript.
|
|
1035
|
+
|
|
1036
|
+
**Es más simple, más ligero, más potente y más accesible**, manteniendo la filosofía de diseño que hizo grande a HolyGrail CSS, pero adaptado a las necesidades actuales:
|
|
1037
|
+
|
|
1038
|
+
- ✅ **Sin dependencias pesadas**: No incluye componentes Angular
|
|
1039
|
+
- ✅ **CSS ligero**: Solo utilidades esenciales
|
|
1040
|
+
- ✅ **Flexible**: Compatible con MDS de Inditex y cualquier librería
|
|
1041
|
+
- ✅ **IA-friendly**: Optimizado para maquetación asistida por IA
|
|
1042
|
+
- ✅ **Moderno**: Variables CSS nativas, JSON, Node.js
|
|
1043
|
+
|
|
1044
|
+
**En resumen**: HolyGrail5 es HolyGrail CSS **mejorado, simplificado, modernizado y optimizado** para el desarrollo web actual, con especial atención a la flexibilidad, ligereza y compatibilidad con sistemas de componentes externos.
|
|
1045
|
+
|
|
1046
|
+
---
|
|
1047
|
+
|
|
581
1048
|
**Hecho con ❤️ por HolyGrail CSS**
|
package/config.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"secondary": "\"ms-serif\", serif"
|
|
7
7
|
},
|
|
8
8
|
"breakpoints": {
|
|
9
|
-
"mobile": "
|
|
9
|
+
"mobile": "1px",
|
|
10
10
|
"desktop": "992px"
|
|
11
11
|
},
|
|
12
12
|
"spacingMap": {
|
|
@@ -46,6 +46,10 @@
|
|
|
46
46
|
"spacingImportant": [
|
|
47
47
|
"0"
|
|
48
48
|
],
|
|
49
|
+
"theme": {
|
|
50
|
+
"name": "dutti",
|
|
51
|
+
"enabled": true
|
|
52
|
+
},
|
|
49
53
|
"grid": {
|
|
50
54
|
"enabled": true,
|
|
51
55
|
"gutter": "8px",
|
|
@@ -235,7 +239,174 @@
|
|
|
235
239
|
"responsive": true,
|
|
236
240
|
"description": "Espacio entre filas y columnas",
|
|
237
241
|
"useSpacing": true
|
|
242
|
+
},
|
|
243
|
+
"text-align": {
|
|
244
|
+
"property": "text-align",
|
|
245
|
+
"class": "text",
|
|
246
|
+
"responsive": true,
|
|
247
|
+
"description": "Alineación del texto",
|
|
248
|
+
"values": {
|
|
249
|
+
"left": "left",
|
|
250
|
+
"center": "center",
|
|
251
|
+
"right": "right",
|
|
252
|
+
"justify": "justify"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"position": {
|
|
256
|
+
"property": "position",
|
|
257
|
+
"class": "position",
|
|
258
|
+
"responsive": true,
|
|
259
|
+
"description": "Tipo de posicionamiento",
|
|
260
|
+
"values": {
|
|
261
|
+
"static": "static",
|
|
262
|
+
"relative": "relative",
|
|
263
|
+
"absolute": "absolute",
|
|
264
|
+
"fixed": "fixed",
|
|
265
|
+
"sticky": "sticky"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"overflow": {
|
|
269
|
+
"property": "overflow",
|
|
270
|
+
"class": "overflow",
|
|
271
|
+
"responsive": true,
|
|
272
|
+
"description": "Control de desbordamiento",
|
|
273
|
+
"values": {
|
|
274
|
+
"auto": "auto",
|
|
275
|
+
"hidden": "hidden",
|
|
276
|
+
"visible": "visible",
|
|
277
|
+
"scroll": "scroll"
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"overflow-x": {
|
|
281
|
+
"property": "overflow-x",
|
|
282
|
+
"class": "overflow-x",
|
|
283
|
+
"responsive": true,
|
|
284
|
+
"description": "Control de desbordamiento horizontal",
|
|
285
|
+
"values": {
|
|
286
|
+
"auto": "auto",
|
|
287
|
+
"hidden": "hidden",
|
|
288
|
+
"visible": "visible",
|
|
289
|
+
"scroll": "scroll"
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"overflow-y": {
|
|
293
|
+
"property": "overflow-y",
|
|
294
|
+
"class": "overflow-y",
|
|
295
|
+
"responsive": true,
|
|
296
|
+
"description": "Control de desbordamiento vertical",
|
|
297
|
+
"values": {
|
|
298
|
+
"auto": "auto",
|
|
299
|
+
"hidden": "hidden",
|
|
300
|
+
"visible": "visible",
|
|
301
|
+
"scroll": "scroll"
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"visibility": {
|
|
305
|
+
"property": "visibility",
|
|
306
|
+
"class": "visibility",
|
|
307
|
+
"responsive": true,
|
|
308
|
+
"description": "Visibilidad del elemento",
|
|
309
|
+
"values": {
|
|
310
|
+
"visible": "visible",
|
|
311
|
+
"hidden": "hidden",
|
|
312
|
+
"collapse": "collapse"
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
"opacity": {
|
|
316
|
+
"property": "opacity",
|
|
317
|
+
"class": "opacity",
|
|
318
|
+
"responsive": true,
|
|
319
|
+
"description": "Transparencia del elemento",
|
|
320
|
+
"values": {
|
|
321
|
+
"0": "0",
|
|
322
|
+
"25": "0.25",
|
|
323
|
+
"50": "0.5",
|
|
324
|
+
"75": "0.75",
|
|
325
|
+
"100": "1"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"z-index": {
|
|
329
|
+
"property": "z-index",
|
|
330
|
+
"class": "z",
|
|
331
|
+
"responsive": true,
|
|
332
|
+
"description": "Nivel de apilamiento",
|
|
333
|
+
"values": {
|
|
334
|
+
"0": "0",
|
|
335
|
+
"10": "10",
|
|
336
|
+
"20": "20",
|
|
337
|
+
"30": "30",
|
|
338
|
+
"40": "40",
|
|
339
|
+
"50": "50",
|
|
340
|
+
"auto": "auto"
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"cursor": {
|
|
344
|
+
"property": "cursor",
|
|
345
|
+
"class": "cursor",
|
|
346
|
+
"responsive": false,
|
|
347
|
+
"description": "Tipo de cursor",
|
|
348
|
+
"values": {
|
|
349
|
+
"auto": "auto",
|
|
350
|
+
"default": "default",
|
|
351
|
+
"pointer": "pointer",
|
|
352
|
+
"not-allowed": "not-allowed",
|
|
353
|
+
"wait": "wait",
|
|
354
|
+
"text": "text",
|
|
355
|
+
"move": "move",
|
|
356
|
+
"grab": "grab",
|
|
357
|
+
"grabbing": "grabbing"
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
"object-fit": {
|
|
361
|
+
"property": "object-fit",
|
|
362
|
+
"class": "object",
|
|
363
|
+
"responsive": true,
|
|
364
|
+
"description": "Ajuste de objeto (imágenes)",
|
|
365
|
+
"values": {
|
|
366
|
+
"contain": "contain",
|
|
367
|
+
"cover": "cover",
|
|
368
|
+
"fill": "fill",
|
|
369
|
+
"none": "none",
|
|
370
|
+
"scale-down": "scale-down"
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
"height": {
|
|
374
|
+
"property": "height",
|
|
375
|
+
"class": "h",
|
|
376
|
+
"responsive": true,
|
|
377
|
+
"description": "Altura del elemento",
|
|
378
|
+
"values": {
|
|
379
|
+
"auto": "auto",
|
|
380
|
+
"100-percent": "100%",
|
|
381
|
+
"100vh": "100vh",
|
|
382
|
+
"100svh": "100svh",
|
|
383
|
+
"100lvh": "100lvh",
|
|
384
|
+
"100dvh": "100dvh",
|
|
385
|
+
"50-percent": "50%",
|
|
386
|
+
"75-percent": "75%",
|
|
387
|
+
"fit-content": "fit-content",
|
|
388
|
+
"min-content": "min-content",
|
|
389
|
+
"max-content": "max-content"
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
"min-height": {
|
|
395
|
+
"property": "min-height",
|
|
396
|
+
"class": "min-h",
|
|
397
|
+
"responsive": true,
|
|
398
|
+
"description": "Altura mínima del elemento",
|
|
399
|
+
"values": {
|
|
400
|
+
"0": "0",
|
|
401
|
+
"100-percent": "100%",
|
|
402
|
+
"100vh": "100vh",
|
|
403
|
+
"100svh": "100svh",
|
|
404
|
+
"100lvh": "100lvh",
|
|
405
|
+
"100dvh": "100dvh",
|
|
406
|
+
"fit-content": "fit-content"
|
|
407
|
+
}
|
|
238
408
|
}
|
|
409
|
+
|
|
239
410
|
},
|
|
240
411
|
"classes": {
|
|
241
412
|
"h2": {
|
package/generator.js
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
// Orquestador principal - Genera CSS y HTML desde JSON
|
|
4
4
|
|
|
5
5
|
const path = require('path');
|
|
6
|
+
const fs = require('fs');
|
|
6
7
|
const { loadConfig } = require('./src/config');
|
|
7
8
|
const { generateCSS } = require('./src/parser');
|
|
8
9
|
const { generateHTML } = require('./src/guide');
|
|
9
|
-
const { writeFile } = require('./src/utils');
|
|
10
|
+
const { writeFile, combineThemeCSS } = require('./src/utils');
|
|
10
11
|
|
|
11
12
|
// Ejecución principal
|
|
12
13
|
if (require.main === module) {
|
|
@@ -47,6 +48,25 @@ if (require.main === module) {
|
|
|
47
48
|
|
|
48
49
|
writeFile(htmlPath, htmlContent, 'HTML');
|
|
49
50
|
|
|
51
|
+
// Generar tema combinado en dist si está habilitado
|
|
52
|
+
if (configData.theme && configData.theme.enabled && configData.theme.name) {
|
|
53
|
+
const themeName = configData.theme.name;
|
|
54
|
+
const themeSourceDir = path.join(__dirname, 'themes', themeName);
|
|
55
|
+
const outputDir = path.dirname(outputPath);
|
|
56
|
+
const themeOutputPath = path.join(outputDir, 'themes', `${themeName}.css`);
|
|
57
|
+
|
|
58
|
+
if (fs.existsSync(themeSourceDir)) {
|
|
59
|
+
try {
|
|
60
|
+
const combinedCSS = combineThemeCSS(themeSourceDir);
|
|
61
|
+
writeFile(themeOutputPath, combinedCSS, `Tema '${themeName}' combinado`);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.warn(`⚠️ No se pudo generar el tema '${themeName}':`, error.message);
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
console.warn(`⚠️ El tema '${themeName}' no existe en ${themeSourceDir}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
50
70
|
console.log('\n🎉 Generación completada exitosamente!');
|
|
51
71
|
} catch (error) {
|
|
52
72
|
console.error('❌ Error:', error.message);
|