holygrail5 1.0.18 → 1.0.20

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 (77) hide show
  1. package/README.md +88 -18
  2. package/config.json +177 -79
  3. package/dist/assets/fonts/suisse-intl-light.woff +0 -0
  4. package/dist/assets/fonts/suisse-intl-light.woff2 +0 -0
  5. package/dist/assets/fonts/suisse-intl-medium.woff +0 -0
  6. package/dist/assets/fonts/suisse-intl-medium.woff2 +0 -0
  7. package/dist/assets/fonts/suisse-intl-regular.woff +0 -0
  8. package/dist/assets/fonts/suisse-intl-regular.woff2 +0 -0
  9. package/dist/assets/fonts/suisse-intl-semibold.woff +0 -0
  10. package/dist/assets/fonts/suisse-intl-semibold.woff2 +0 -0
  11. package/dist/assets/fonts/suisse-works-bold.woff +0 -0
  12. package/dist/assets/fonts/suisse-works-bold.woff2 +0 -0
  13. package/dist/assets/fonts/suisse-works-medium.woff +0 -0
  14. package/dist/assets/fonts/suisse-works-medium.woff2 +0 -0
  15. package/dist/assets/fonts/suisse-works-regular.woff +0 -0
  16. package/dist/assets/fonts/suisse-works-regular.woff2 +0 -0
  17. package/dist/componentes.html +429 -0
  18. package/dist/developer-guide.md +628 -0
  19. package/dist/guide-styles.css +218 -25
  20. package/dist/index.html +953 -708
  21. package/dist/output.css +148 -100
  22. package/dist/skills.html +662 -0
  23. package/dist/themes/dutti-demo.html +689 -25
  24. package/dist/themes/dutti.css +245 -17
  25. package/dist/themes/limited-demo.html +1088 -0
  26. package/dist/themes/limited.css +2493 -0
  27. package/package.json +1 -1
  28. package/src/.data/.previous-values.json +111 -87
  29. package/src/assets/fonts/suisse-intl-light.woff +0 -0
  30. package/src/assets/fonts/suisse-intl-light.woff2 +0 -0
  31. package/src/assets/fonts/suisse-intl-medium.woff +0 -0
  32. package/src/assets/fonts/suisse-intl-medium.woff2 +0 -0
  33. package/src/assets/fonts/suisse-intl-regular.woff +0 -0
  34. package/src/assets/fonts/suisse-intl-regular.woff2 +0 -0
  35. package/src/assets/fonts/suisse-intl-semibold.woff +0 -0
  36. package/src/assets/fonts/suisse-intl-semibold.woff2 +0 -0
  37. package/src/assets/fonts/suisse-works-bold.woff +0 -0
  38. package/src/assets/fonts/suisse-works-bold.woff2 +0 -0
  39. package/src/assets/fonts/suisse-works-medium.woff +0 -0
  40. package/src/assets/fonts/suisse-works-medium.woff2 +0 -0
  41. package/src/assets/fonts/suisse-works-regular.woff +0 -0
  42. package/src/assets/fonts/suisse-works-regular.woff2 +0 -0
  43. package/src/build/asset-manager.js +94 -3
  44. package/src/build/build-orchestrator.js +92 -10
  45. package/src/build/components-generator.js +584 -0
  46. package/src/build/skills-generator.js +492 -0
  47. package/src/build/theme-config-loader.js +58 -0
  48. package/src/build/theme-transformer.js +117 -21
  49. package/src/build/theme-vars-table-generator.js +349 -0
  50. package/src/build/typo-table-generator.js +154 -0
  51. package/src/dev-server.js +67 -31
  52. package/src/docs-generator/guide-styles.css +218 -25
  53. package/src/docs-generator/html-generator.js +274 -260
  54. package/src/docs-generator/sections/colors-section.js +109 -0
  55. package/src/docs-generator/value-tracker.js +154 -0
  56. package/src/generators/utils.js +90 -1
  57. package/src/skills.html +583 -0
  58. package/src/watch-config.js +99 -32
  59. package/themes/{dutti → _base}/_buttons.css +2 -2
  60. package/themes/{dutti → _base}/_checkboxes.css +1 -1
  61. package/themes/_base/_containers.css +174 -0
  62. package/themes/{dutti → _base}/_forms.css +1 -1
  63. package/themes/{dutti → _base}/_inputs.css +55 -10
  64. package/themes/{dutti → _base}/_labels.css +1 -1
  65. package/themes/dutti/README.md +67 -21
  66. package/themes/dutti/_variables.css +7 -1
  67. package/themes/dutti/demo.html +18 -14
  68. package/themes/dutti/theme.css +22 -43
  69. package/themes/dutti/theme.json +86 -0
  70. package/themes/limited/_variables.css +123 -0
  71. package/themes/limited/demo.html +296 -0
  72. package/themes/limited/theme.css +32 -0
  73. package/themes/limited/theme.json +105 -0
  74. /package/themes/{dutti → _base}/_radios.css +0 -0
  75. /package/themes/{dutti → _base}/_switches.css +0 -0
  76. /package/themes/{dutti → _base}/components/_icons.css +0 -0
  77. /package/themes/{dutti → _base}/objects/_grid.css +0 -0
package/README.md CHANGED
@@ -25,7 +25,10 @@ Generador de CSS + guía HTML pensado para design systems ligeros: declaras tu `
25
25
  - [7. CLI y argumentos](#7-cli-y-argumentos)
26
26
  - [8. Guía HTML interactiva](#8-guía-html-interactiva)
27
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)
28
+ - [10. Temas (Dutti, Limited) y demos](#10-temas-dutti-limited-y-demos)
29
+ - [Arquitectura compartida: `themes/_base/`](#arquitectura-compartida-themes_base)
30
+ - [Crear un tema nuevo](#crear-un-tema-nuevo)
31
+ - [Sobrescribir un componente SOLO en un tema](#sobrescribir-un-componente-solo-en-un-tema)
29
32
  - [Flujo de desarrollo de temas](#flujo-de-desarrollo-de-temas)
30
33
  - [11. Arquitectura del sistema](#11-arquitectura-del-sistema)
31
34
  - [Módulos principales](#módulos-principales)
@@ -73,7 +76,7 @@ npm run serve
73
76
  npm run watch # regenera al guardar config.json
74
77
  npm run dev # watch + servidor
75
78
 
76
- # 4) Genera CSS y tema Dutti
79
+ # 4) Genera CSS y todos los temas activos (Dutti, Limited, …)
77
80
  npm run build # genera CSS, HTML, assets y temas automáticamente
78
81
  ```
79
82
 
@@ -99,7 +102,7 @@ npm run build # genera CSS, HTML, assets y temas automáticamente
99
102
  - **`dist/index.html`** → Guía interactiva con navegación sticky, buscador y diffs visuales.
100
103
  - **`dist/guide-styles.css`** → Estilos de la guía de documentación.
101
104
  - **`dist/assets/`** → Imágenes y recursos estáticos.
102
- - **`dist/themes/dutti.css`** + **`dist/themes/dutti-demo.html`** → Cuando `theme.enabled` es `true`.
105
+ - **`dist/themes/<name>.css`** + **`dist/themes/<name>-demo.html`** → Un par de ficheros por cada tema activo en `config.themes[]`. Actualmente se generan `dutti.css` / `dutti-demo.html` y `limited.css` / `limited-demo.html`.
103
106
 
104
107
  ---
105
108
 
@@ -142,13 +145,32 @@ holygrail5/
142
145
  │ ├── dev-server.js # Servidor de desarrollo
143
146
  │ └── watch-config.js # Sistema de watch
144
147
 
145
- ├── themes/
146
- └── dutti/ # Tema de ejemplo
148
+ ├── themes/ # Sistema de temas
149
+ ├── _base/ # Componentes compartidos (fuente única)
150
+ │ │ ├── _buttons.css
151
+ │ │ ├── _inputs.css
152
+ │ │ ├── _labels.css
153
+ │ │ ├── _checkboxes.css
154
+ │ │ ├── _radios.css
155
+ │ │ ├── _switches.css
156
+ │ │ ├── _forms.css
157
+ │ │ ├── _containers.css
158
+ │ │ ├── objects/
159
+ │ │ │ └── _grid.css
160
+ │ │ └── components/
161
+ │ │ └── _icons.css
162
+ │ │
163
+ │ ├── dutti/ # Tema Dutti (paleta neutra + sans-serif)
164
+ │ │ ├── theme.json
165
+ │ │ ├── _variables.css
166
+ │ │ ├── theme.css # @imports a ../_base/*
167
+ │ │ └── demo.html
168
+ │ │
169
+ │ └── limited/ # Tema Limited (dorados + serif)
170
+ │ ├── theme.json
147
171
  │ ├── _variables.css
148
- │ ├── _buttons.css
149
- ├── _inputs.css
150
- │ ├── demo.html
151
- │ └── theme.css
172
+ │ ├── theme.css # @imports a ../_base/*
173
+ └── demo.html
152
174
 
153
175
  ├── tests/ # Tests unitarios
154
176
  │ ├── asset-manager.test.js
@@ -226,7 +248,7 @@ holygrail5/
226
248
  | `grid` | object | Define breakpoints, columnas y gutter por tamaño. |
227
249
  | `aspectRatios` | array | **Opcional**: Define ratios de aspecto como `.hg-aspect-16-9` con fallback automático. |
228
250
  | `typo` | object | Clases de tipografía (obligatorio al menos un breakpoint). |
229
- | `theme` | object | `{ name, enabled }` para combinar temas desde `themes/<name>`. |
251
+ | `themes` | array | Lista de temas a combinar desde `themes/<name>/`. Cada entrada es `{ name, enabled }`. El `BuildOrchestrator` genera un par `dist/themes/<name>.css` + `dist/themes/<name>-demo.html` por cada tema con `enabled: true`. Por compatibilidad hacia atrás se sigue aceptando el antiguo `theme: { name, enabled }` (un único tema). |
230
252
  | `assets` | object | **Opcional**: `{ css: [...], images: [...] }` para configurar qué archivos copiar a `dist/`. |
231
253
 
232
254
  ### 6.3 Configuración de Assets (Opcional)
@@ -330,18 +352,66 @@ node src/docs-generator/variables-cli.js remove -- --hg-typo-font-size-18
330
352
 
331
353
  ---
332
354
 
333
- ## 10. Tema Dutti y demos
355
+ ## 10. Temas (Dutti, Limited) y demos
356
+
357
+ HolyGrail5 soporta **múltiples temas simultáneos** bajo `themes/`. El build recorre el array `config.themes[]` y, para cada entrada con `enabled: true`, produce un par `dist/themes/<name>.css` + `dist/themes/<name>-demo.html`. Por defecto vienen dos temas:
358
+
359
+ - **Dutti** (`themes/dutti/`): paleta neutra con tipografía sans-serif (Suisse Intl).
360
+ - **Limited** (`themes/limited/`): paleta de lujo cálido (dorados + crema) con tipografía 100% serif (Suisse Works).
361
+
362
+ ### Arquitectura compartida: `themes/_base/`
363
+
364
+ Los CSS de componente (`_buttons.css`, `_inputs.css`, `_checkboxes.css`, `_radios.css`, `_switches.css`, `_labels.css`, `_forms.css`, `_containers.css`, `objects/_grid.css`, `components/_icons.css`) viven **una sola vez** en `themes/_base/` y se comparten entre todos los temas. Cada tema aporta únicamente lo que lo hace distinto:
365
+
366
+ - `theme.json` — meta + `tokenOverrides.color` + `componentVars` + `design`
367
+ - `_variables.css` — overrides de `--hg-color-*`, `--hg-typo-font-family-*` y mapeo de componentVars (`--btn-*`, `--input-*`, …) a los tokens base
368
+ - `theme.css` — `@import` de `_variables.css` local + `@import` de los componentes de `../_base/*.css`
369
+ - `demo.html` — demo interactiva con placeholders `HG_THEME_BLOCK` y `HG_TYPO_TABLE` que el build sustituye por las tablas de variables y tipografía del tema
370
+
371
+ Como los componentes de `_base/` consumen `var(--btn-*)`, `var(--input-*)`, etc., cambiar la paleta o la tipografía en el `_variables.css` de un tema se propaga automáticamente sin tocar los componentes.
372
+
373
+ ### Crear un tema nuevo
374
+
375
+ 1. Crea `themes/<nombre>/` con los 4 ficheros descritos arriba (puedes partir copiando `themes/dutti/` o `themes/limited/` y ajustar `theme.json` y `_variables.css`).
376
+ 2. Registra el tema en `config.json`:
377
+
378
+ ```json
379
+ {
380
+ "themes": [
381
+ { "name": "dutti", "enabled": true },
382
+ { "name": "limited", "enabled": true },
383
+ { "name": "<nombre>", "enabled": true }
384
+ ]
385
+ }
386
+ ```
387
+
388
+ 3. Añade una entrada a `THEMES_IN_NAV` en `src/build/theme-transformer.js` (y a los nav estáticos de `src/docs-generator/html-generator.js`, `src/build/skills-generator.js` y `src/skills.html`) para que el nuevo tema aparezca como enlace cruzado en los demos.
389
+ 4. `npm run build` → verifica `dist/themes/<nombre>.css` y `dist/themes/<nombre>-demo.html`.
390
+
391
+ Para guía detallada paso a paso y plantillas completas ver `skills/theme-creator/SKILL.md`.
392
+
393
+ ### Sobrescribir un componente SOLO en un tema
394
+
395
+ La regla es: *"si quieres un componente distinto, machácalo en el tema"*.
396
+
397
+ 1. Copia el CSS de `themes/_base/_inputs.css` a `themes/<nombre>/_inputs.css` y modifícalo.
398
+ 2. En `themes/<nombre>/theme.css` cambia el `@import` para apuntar al fichero local:
399
+
400
+ ```css
401
+ /* antes */
402
+ @import url('../_base/_inputs.css');
403
+ /* después */
404
+ @import url('_inputs.css');
405
+ ```
334
406
 
335
- - El directorio `themes/dutti/` contiene CSS modular (_variables, _buttons, etc.) y un `demo.html` de referencia.
336
- - El `ThemeTransformer` combina el tema en `dist/themes/dutti.css`, transforma el HTML agregando sidebar, header y scripts de Lenis automáticamente.
337
- - Para crear tu propio tema copia la carpeta `themes/dutti`, ajusta los ficheros y actualiza `config.json → theme.name`.
407
+ 3. El resto de componentes sigue heredando de `_base/`. Así evitas duplicar ficheros salvo cuando realmente haya override.
338
408
 
339
409
  ### Flujo de desarrollo de temas
340
410
 
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
411
+ 1. `npm run watch` detecta cambios en `themes/` automáticamente (tanto en `_base/` como en cada tema).
412
+ 2. Los cambios en `demo.html`, `theme.css`, `_variables.css` o en los componentes compartidos se procesan al guardar.
413
+ 3. Los resultados se regeneran en `dist/themes/<name>-demo.html` y `dist/themes/<name>.css`.
414
+ 4. `npm run serve` sirve los demos en tiempo real con navegación cruzada entre todos los temas activos.
345
415
 
346
416
  ---
347
417
 
package/config.json CHANGED
@@ -4,10 +4,16 @@
4
4
  "mobile": "1px",
5
5
  "desktop": "992px"
6
6
  },
7
- "theme": {
8
- "name": "dutti",
9
- "enabled": true
10
- },
7
+ "themes": [
8
+ {
9
+ "name": "dutti",
10
+ "enabled": true
11
+ },
12
+ {
13
+ "name": "limited",
14
+ "enabled": true
15
+ }
16
+ ],
11
17
  "assets": {
12
18
  "css": [
13
19
  {
@@ -28,6 +34,64 @@
28
34
  "source": "src/assets/margen.webp",
29
35
  "dest": "dist/assets/margen.webp"
30
36
  }
37
+ ],
38
+ "fonts": [
39
+ {
40
+ "source": "src/assets/fonts/suisse-intl-light.woff2",
41
+ "dest": "dist/assets/fonts/suisse-intl-light.woff2"
42
+ },
43
+ {
44
+ "source": "src/assets/fonts/suisse-intl-light.woff",
45
+ "dest": "dist/assets/fonts/suisse-intl-light.woff"
46
+ },
47
+ {
48
+ "source": "src/assets/fonts/suisse-intl-regular.woff2",
49
+ "dest": "dist/assets/fonts/suisse-intl-regular.woff2"
50
+ },
51
+ {
52
+ "source": "src/assets/fonts/suisse-intl-regular.woff",
53
+ "dest": "dist/assets/fonts/suisse-intl-regular.woff"
54
+ },
55
+ {
56
+ "source": "src/assets/fonts/suisse-intl-medium.woff2",
57
+ "dest": "dist/assets/fonts/suisse-intl-medium.woff2"
58
+ },
59
+ {
60
+ "source": "src/assets/fonts/suisse-intl-medium.woff",
61
+ "dest": "dist/assets/fonts/suisse-intl-medium.woff"
62
+ },
63
+ {
64
+ "source": "src/assets/fonts/suisse-intl-semibold.woff2",
65
+ "dest": "dist/assets/fonts/suisse-intl-semibold.woff2"
66
+ },
67
+ {
68
+ "source": "src/assets/fonts/suisse-intl-semibold.woff",
69
+ "dest": "dist/assets/fonts/suisse-intl-semibold.woff"
70
+ },
71
+ {
72
+ "source": "src/assets/fonts/suisse-works-regular.woff2",
73
+ "dest": "dist/assets/fonts/suisse-works-regular.woff2"
74
+ },
75
+ {
76
+ "source": "src/assets/fonts/suisse-works-regular.woff",
77
+ "dest": "dist/assets/fonts/suisse-works-regular.woff"
78
+ },
79
+ {
80
+ "source": "src/assets/fonts/suisse-works-medium.woff2",
81
+ "dest": "dist/assets/fonts/suisse-works-medium.woff2"
82
+ },
83
+ {
84
+ "source": "src/assets/fonts/suisse-works-medium.woff",
85
+ "dest": "dist/assets/fonts/suisse-works-medium.woff"
86
+ },
87
+ {
88
+ "source": "src/assets/fonts/suisse-works-bold.woff2",
89
+ "dest": "dist/assets/fonts/suisse-works-bold.woff2"
90
+ },
91
+ {
92
+ "source": "src/assets/fonts/suisse-works-bold.woff",
93
+ "dest": "dist/assets/fonts/suisse-works-bold.woff"
94
+ }
31
95
  ]
32
96
  },
33
97
  "colors": {
@@ -40,27 +104,23 @@
40
104
  "orange": "#B75D0B",
41
105
  "mustard": "#FFE693",
42
106
  "primary": "#000000",
43
- "error": "#b40016",
44
- "info": "#1a32a4",
107
+ "error": "#dd2d01",
108
+ "info": "#2037a6",
45
109
  "success": "#12882C",
46
- "warning": "#ffc700",
110
+ "warning": "#ffce4e",
47
111
  "feel": "#fb9962",
48
112
  "feel-dark": "#c94c07",
49
- "special": "#b99d6b",
50
- "vanilla": "#F4F2ED",
51
113
  "silver": "#87888D",
52
114
  "gold": "#A38A6B",
53
115
  "platinum": "#5B7FA1",
54
- "charcoal": "#1D1D1D",
55
- "bg-light": "#F0F0F0",
56
- "c-bg-light": "#000000",
57
- "sk-grey": "#e3e3e3",
116
+ "bg-light": "#f9f9f9",
58
117
  "bg-cream": "#f4f2ed"
59
118
  },
60
119
  "fontFamilyMap": {
61
- "primary": "arial, sans-serif",
62
- "primary-bold": "\"Arial Bold\", Arial, sans-serif",
63
- "secondary": "\"ms-serif\", serif"
120
+ "primary-light": "\"suisse-light\", Arial, Helvetica, sans-serif",
121
+ "primary-regular": "\"suisse-regular\", Arial, Helvetica, sans-serif",
122
+ "primary-bold": "\"suisse-semibold\", Arial, Helvetica, sans-serif",
123
+ "secondary": "\"suisse-medium\", Arial, Helvetica, sans-serif"
64
124
  },
65
125
  "spacingMap": {
66
126
  "0": "0",
@@ -478,6 +538,16 @@
478
538
  "justify": "justify"
479
539
  }
480
540
  },
541
+ "text-decoration": {
542
+ "property": "text-decoration",
543
+ "class": "text",
544
+ "responsive": false,
545
+ "description": "Decoración del texto (subrayado, etc.)",
546
+ "values": {
547
+ "underline": "underline",
548
+ "none": "none"
549
+ }
550
+ },
481
551
  "position": {
482
552
  "property": "position",
483
553
  "class": "position",
@@ -610,14 +680,26 @@
610
680
  }
611
681
  },
612
682
  "typo": {
683
+ "title-xxl": {
684
+ "fontFamily": "\"suisse-regular\", Arial, Helvetica, sans-serif",
685
+ "fontWeight": "300",
686
+ "mobile": {
687
+ "fontSize": "24px",
688
+ "lineHeight": "1"
689
+ },
690
+ "desktop": {
691
+ "fontSize": "24px",
692
+ "lineHeight": "1"
693
+ }
694
+ },
613
695
  "h2": {
614
- "fontFamily": "arial, sans-serif",
615
- "fontWeight": "900",
696
+ "fontFamily": "\"suisse-semibold\", Arial, Helvetica, sans-serif",
697
+ "fontWeight": "600",
616
698
  "letterSpacing": "0rem",
617
699
  "textTransform": "none",
618
700
  "mobile": {
619
701
  "fontSize": "18px",
620
- "lineHeight": "1.976"
702
+ "lineHeight": "1.2"
621
703
  },
622
704
  "desktop": {
623
705
  "fontSize": "24px",
@@ -625,72 +707,77 @@
625
707
  }
626
708
  },
627
709
  "title-l-b": {
628
- "fontFamily": "arial, sans-serif",
629
- "fontWeight": "700",
630
- "letterSpacing": "0rem",
631
- "textTransform": "uppercase",
710
+ "fontFamily": "\"suisse-regular\", Arial, Helvetica, sans-serif",
711
+ "fontWeight": "300",
632
712
  "mobile": {
633
- "fontSize": "14px",
634
- "lineHeight": "1.2"
713
+ "fontSize": "12px",
714
+ "lineHeight": "1.4"
635
715
  },
636
716
  "desktop": {
637
- "fontSize": "14px",
717
+ "fontSize": "13px",
638
718
  "lineHeight": "1.4"
639
719
  }
640
720
  },
641
721
  "title-l": {
642
- "fontFamily": "arial, sans-serif",
722
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
643
723
  "fontWeight": "100",
724
+ "letterSpacing": "0.16em",
725
+ "textTransform": "uppercase",
644
726
  "mobile": {
645
- "fontSize": "14px",
727
+ "fontSize": "12px",
646
728
  "lineHeight": "1.4"
647
729
  },
648
730
  "desktop": {
649
- "fontSize": "14px",
731
+ "fontSize": "13px",
650
732
  "lineHeight": "1.4"
651
733
  }
652
734
  },
653
735
  "title-m": {
654
- "fontFamily": "arial, sans-serif",
736
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
655
737
  "fontWeight": "100",
738
+ "letterSpacing": "0.16em",
656
739
  "mobile": {
657
740
  "fontSize": "12px",
658
741
  "lineHeight": "1.4"
659
742
  },
660
743
  "desktop": {
661
- "fontSize": "12px",
744
+ "fontSize": "13px",
662
745
  "lineHeight": "1.4"
663
746
  }
664
747
  },
665
- "title-s": {
666
- "fontFamily": "arial, sans-serif",
667
- "fontWeight": "400",
748
+ "title-s-b": {
749
+ "fontFamily": "\"suisse-regular\", Arial, Helvetica, sans-serif",
750
+ "fontWeight": "300",
751
+ "letterSpacing": "0.16em",
668
752
  "mobile": {
669
- "fontSize": "12px",
753
+ "fontSize": "10px",
670
754
  "lineHeight": "1.4"
671
755
  },
672
756
  "desktop": {
673
- "fontSize": "12px",
757
+ "fontSize": "10px",
674
758
  "lineHeight": "1.4"
675
759
  }
676
760
  },
677
- "text-l": {
678
- "fontFamily": "arial, sans-serif",
761
+ "title-s": {
762
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
679
763
  "fontWeight": "100",
764
+ "letterSpacing": "0.16em",
765
+ "textTransform": "uppercase",
680
766
  "mobile": {
681
- "fontSize": "12px",
682
- "lineHeight": "1.5"
767
+ "fontSize": "10px",
768
+ "lineHeight": "1.4"
683
769
  },
684
770
  "desktop": {
685
- "fontSize": "12px",
686
- "lineHeight": "1.5"
771
+ "fontSize": "10px",
772
+ "lineHeight": "1.4"
687
773
  }
688
774
  },
689
- "text-m": {
690
- "fontFamily": "arial, sans-serif",
775
+ "text-l": {
776
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
691
777
  "fontWeight": "100",
778
+ "letterSpacing": "0.04em",
692
779
  "mobile": {
693
- "fontSize": "12px",
780
+ "fontSize": "13px",
694
781
  "lineHeight": "1.5"
695
782
  },
696
783
  "desktop": {
@@ -698,85 +785,96 @@
698
785
  "lineHeight": "1.5"
699
786
  }
700
787
  },
701
- "semantic": {
702
- "fontFamily": "arial, sans-serif",
788
+ "text-m": {
789
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
703
790
  "fontWeight": "100",
791
+ "letterSpacing": "0.04em",
704
792
  "mobile": {
705
- "fontSize": "13px",
706
- "lineHeight": "1"
793
+ "fontSize": "12px",
794
+ "lineHeight": "1.5"
707
795
  },
708
796
  "desktop": {
709
- "fontSize": "13px",
710
- "lineHeight": "1"
797
+ "fontSize": "12px",
798
+ "lineHeight": "1.5"
711
799
  }
712
800
  },
713
801
  "p-tag": {
714
- "fontFamily": "arial, sans-serif",
802
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
715
803
  "fontWeight": "100",
804
+ "letterSpacing": "0.16em",
716
805
  "mobile": {
717
- "fontSize": "8px",
806
+ "fontSize": "9px",
718
807
  "lineHeight": "1"
719
808
  },
720
809
  "desktop": {
721
- "fontSize": "8px",
810
+ "fontSize": "10px",
722
811
  "lineHeight": "1"
723
812
  }
724
813
  },
725
- "suisse-1": {
726
- "fontFamily": "\"ms-serif\", serif",
814
+ "hg-body-l": {
815
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
816
+ "fontWeight": "100",
817
+ "letterSpacing": "0.04em",
727
818
  "mobile": {
728
- "fontSize": "16px",
819
+ "fontSize": "12px",
729
820
  "lineHeight": "1.5"
730
821
  },
731
822
  "desktop": {
732
- "fontSize": "20px",
823
+ "fontSize": "13px",
733
824
  "lineHeight": "1.5"
734
825
  }
735
826
  },
736
- "suisse-2": {
737
- "fontFamily": "\"ms-serif\", serif",
827
+ "hg-body-l-b": {
828
+ "fontFamily": "\"suisse-regular\", Arial, Helvetica, sans-serif",
829
+ "fontWeight": "300",
830
+ "letterSpacing": "0.04em",
738
831
  "mobile": {
739
- "fontSize": "13px",
740
- "lineHeight": "1.1"
832
+ "fontSize": "12px",
833
+ "lineHeight": "1.5"
741
834
  },
742
835
  "desktop": {
743
- "fontSize": "14px",
744
- "lineHeight": "1.1"
836
+ "fontSize": "13px",
837
+ "lineHeight": "1.5"
745
838
  }
746
839
  },
747
- "suisse-body": {
748
- "fontFamily": "\"ms-serif\", serif",
840
+ "hg-body-m": {
841
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
842
+ "fontWeight": "100",
843
+ "letterSpacing": "0.04em",
749
844
  "mobile": {
750
- "fontSize": "10px",
751
- "lineHeight": "1.1"
845
+ "fontSize": "12px",
846
+ "lineHeight": "1.5"
752
847
  },
753
848
  "desktop": {
754
849
  "fontSize": "12px",
755
- "lineHeight": "1.1"
850
+ "lineHeight": "1.5"
756
851
  }
757
852
  },
758
- "hg-body-m": {
759
- "fontFamily": "arial, sans-serif",
760
- "fontWeight": "100",
853
+ "hg-body-m-b": {
854
+ "fontFamily": "\"suisse-regular\", Arial, Helvetica, sans-serif",
855
+ "fontWeight": "300",
856
+ "letterSpacing": "0.04em",
761
857
  "mobile": {
762
858
  "fontSize": "12px",
763
859
  "lineHeight": "1.5"
764
860
  },
765
861
  "desktop": {
766
- "fontSize": "13px",
862
+ "fontSize": "12px",
767
863
  "lineHeight": "1.5"
768
864
  }
769
865
  },
770
- "hg-body-m-b": {
771
- "fontFamily": "arial, sans-serif",
772
- "fontWeight": "400",
866
+ "label-m": {
867
+ "fontFamily": "\"suisse-light\", Arial, Helvetica, sans-serif",
868
+ "fontWeight": "100",
869
+ "letterSpacing": "0.16em",
870
+ "textTransform": "uppercase",
773
871
  "mobile": {
774
872
  "fontSize": "12px",
775
- "lineHeight": "1.5"
873
+ "lineHeight": "1"
776
874
  },
777
875
  "desktop": {
778
- "fontSize": "13px",
779
- "lineHeight": "1.5"
876
+ "fontSize": "12px",
877
+ "lineHeight": "1"
780
878
  }
781
879
  }
782
880
  }