holygrail5 1.0.19 → 1.0.21
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 +88 -18
- package/config.json +205 -77
- package/dist/assets/fonts/suisse-intl-light.woff +0 -0
- package/dist/assets/fonts/suisse-intl-light.woff2 +0 -0
- package/dist/assets/fonts/suisse-intl-medium.woff +0 -0
- package/dist/assets/fonts/suisse-intl-medium.woff2 +0 -0
- package/dist/assets/fonts/suisse-intl-regular.woff +0 -0
- package/dist/assets/fonts/suisse-intl-regular.woff2 +0 -0
- package/dist/assets/fonts/suisse-intl-semibold.woff +0 -0
- package/dist/assets/fonts/suisse-intl-semibold.woff2 +0 -0
- package/dist/assets/fonts/suisse-works-bold.woff +0 -0
- package/dist/assets/fonts/suisse-works-bold.woff2 +0 -0
- package/dist/assets/fonts/suisse-works-medium.woff +0 -0
- package/dist/assets/fonts/suisse-works-medium.woff2 +0 -0
- package/dist/assets/fonts/suisse-works-regular.woff +0 -0
- package/dist/assets/fonts/suisse-works-regular.woff2 +0 -0
- package/dist/componentes.html +429 -0
- package/dist/developer-guide.md +7 -7
- package/dist/guide-styles.css +197 -25
- package/dist/index.html +807 -689
- package/dist/output.css +217 -114
- package/dist/skills.html +14 -8
- package/dist/themes/dutti-demo.html +713 -19
- package/dist/themes/dutti.css +67 -16
- package/dist/themes/limited-demo.html +1121 -0
- package/dist/themes/limited.css +2493 -0
- package/package.json +1 -1
- package/src/.data/.previous-values.json +151 -84
- package/src/assets/fonts/suisse-intl-light.woff +0 -0
- package/src/assets/fonts/suisse-intl-light.woff2 +0 -0
- package/src/assets/fonts/suisse-intl-medium.woff +0 -0
- package/src/assets/fonts/suisse-intl-medium.woff2 +0 -0
- package/src/assets/fonts/suisse-intl-regular.woff +0 -0
- package/src/assets/fonts/suisse-intl-regular.woff2 +0 -0
- package/src/assets/fonts/suisse-intl-semibold.woff +0 -0
- package/src/assets/fonts/suisse-intl-semibold.woff2 +0 -0
- package/src/assets/fonts/suisse-works-bold.woff +0 -0
- package/src/assets/fonts/suisse-works-bold.woff2 +0 -0
- package/src/assets/fonts/suisse-works-medium.woff +0 -0
- package/src/assets/fonts/suisse-works-medium.woff2 +0 -0
- package/src/assets/fonts/suisse-works-regular.woff +0 -0
- package/src/assets/fonts/suisse-works-regular.woff2 +0 -0
- package/src/build/asset-manager.js +94 -3
- package/src/build/build-orchestrator.js +74 -12
- package/src/build/components-generator.js +584 -0
- package/src/build/skills-generator.js +43 -5
- package/src/build/theme-config-loader.js +58 -0
- package/src/build/theme-transformer.js +109 -16
- package/src/build/theme-vars-table-generator.js +349 -0
- package/src/build/typo-table-generator.js +154 -0
- package/src/docs-generator/guide-styles.css +197 -24
- package/src/docs-generator/html-generator.js +92 -246
- package/src/docs-generator/sections/colors-section.js +109 -0
- package/src/docs-generator/value-tracker.js +154 -0
- package/src/generators/typo-generator.js +2 -1
- package/src/generators/utils.js +90 -1
- package/src/skills.html +1 -0
- package/src/watch-config.js +99 -32
- package/themes/{dutti → _base}/_buttons.css +2 -2
- package/themes/{dutti → _base}/_checkboxes.css +1 -1
- package/themes/{dutti → _base}/_forms.css +1 -1
- package/themes/{dutti → _base}/_inputs.css +55 -10
- package/themes/{dutti → _base}/_labels.css +1 -1
- package/themes/dutti/README.md +67 -21
- package/themes/dutti/_variables.css +7 -1
- package/themes/dutti/demo.html +18 -14
- package/themes/dutti/theme.css +22 -44
- package/themes/dutti/theme.json +86 -0
- package/themes/limited/_variables.css +123 -0
- package/themes/limited/demo.html +296 -0
- package/themes/limited/theme.css +32 -0
- package/themes/limited/theme.json +105 -0
- /package/themes/{dutti → _base}/_containers.css +0 -0
- /package/themes/{dutti → _base}/_radios.css +0 -0
- /package/themes/{dutti → _base}/_switches.css +0 -0
- /package/themes/{dutti → _base}/components/_icons.css +0 -0
- /package/themes/{dutti → _base}/objects/_grid.css +0 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// Generador de la sección "Tipografía" para las demos de tema
|
|
2
|
+
// Lee config.typo y produce una tabla HTML con: clase, family, weight,
|
|
3
|
+
// mobile (size), desktop (size), line-height compartida, preview en vivo.
|
|
4
|
+
// La fuente de verdad es config.json — así el demo siempre refleja
|
|
5
|
+
// exactamente lo que existe en dist/output.css.
|
|
6
|
+
//
|
|
7
|
+
// Nota: el line-height casi siempre coincide entre breakpoints, por
|
|
8
|
+
// eso se muestra en una sola columna. Si mobile y desktop divergen,
|
|
9
|
+
// formatLineHeight cae a mostrar ambos separados por una barra.
|
|
10
|
+
|
|
11
|
+
const { getFontFamilyName } = require('../generators/utils');
|
|
12
|
+
|
|
13
|
+
const SAMPLE_TEXT = 'Aa Bb Cc 123';
|
|
14
|
+
|
|
15
|
+
function escapeHtml(str) {
|
|
16
|
+
if (str === undefined || str === null) return '';
|
|
17
|
+
return String(str)
|
|
18
|
+
.replace(/&/g, '&')
|
|
19
|
+
.replace(/</g, '<')
|
|
20
|
+
.replace(/>/g, '>')
|
|
21
|
+
.replace(/"/g, '"');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function formatSize(bp) {
|
|
25
|
+
if (!bp || !bp.fontSize) return '<span class="hg-typo-empty">—</span>';
|
|
26
|
+
return `<span class="hg-typo-num">${escapeHtml(bp.fontSize)}</span>`;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function formatLineHeight(mobile, desktop) {
|
|
30
|
+
const m = mobile && mobile.lineHeight;
|
|
31
|
+
const d = desktop && desktop.lineHeight;
|
|
32
|
+
if (!m && !d) return '<span class="hg-typo-empty">—</span>';
|
|
33
|
+
if (m && d && m === d) return `<span class="hg-typo-num">${escapeHtml(m)}</span>`;
|
|
34
|
+
// Fallback: valores distintos → mostrar mobile / desktop explícitamente
|
|
35
|
+
return `<span class="hg-typo-num">${escapeHtml(m || '—')}</span> <span class="hg-typo-meta">/ ${escapeHtml(d || '—')}</span>`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function formatFamily(fontFamily, fontFamilyMap) {
|
|
39
|
+
if (!fontFamily) return '—';
|
|
40
|
+
const alias = getFontFamilyName(fontFamily, fontFamilyMap || {});
|
|
41
|
+
// alias puede coincidir con la familia real; si difiere, mostramos ambas
|
|
42
|
+
if (alias && alias !== fontFamily) {
|
|
43
|
+
return `<code>${escapeHtml(alias)}</code> <span class="hg-typo-meta">${escapeHtml(fontFamily)}</span>`;
|
|
44
|
+
}
|
|
45
|
+
return `<code>${escapeHtml(fontFamily)}</code>`;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function generateRow(className, cls, fontFamilyMap) {
|
|
49
|
+
const family = formatFamily(cls.fontFamily, fontFamilyMap);
|
|
50
|
+
const weight = cls.fontWeight ? escapeHtml(cls.fontWeight) : '—';
|
|
51
|
+
const ls = cls.letterSpacing ? escapeHtml(cls.letterSpacing) : '—';
|
|
52
|
+
const tt = cls.textTransform ? escapeHtml(cls.textTransform) : '—';
|
|
53
|
+
|
|
54
|
+
return ` <tr>
|
|
55
|
+
<td class="hg-typo-preview"><span class="${escapeHtml(className)}">${SAMPLE_TEXT}</span></td>
|
|
56
|
+
<td><code>.${escapeHtml(className)}</code></td>
|
|
57
|
+
<td>${family}</td>
|
|
58
|
+
<td>${weight}</td>
|
|
59
|
+
<td>${formatSize(cls.mobile)}</td>
|
|
60
|
+
<td>${formatSize(cls.desktop)}</td>
|
|
61
|
+
<td>${formatLineHeight(cls.mobile, cls.desktop)}</td>
|
|
62
|
+
<td>${ls}</td>
|
|
63
|
+
<td>${tt}</td>
|
|
64
|
+
</tr>`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Genera la sección HTML con la tabla de tipografías.
|
|
69
|
+
* Devuelve string vacío si no hay clases en config.typo (sin romper builds).
|
|
70
|
+
*/
|
|
71
|
+
function generateTypographyHTML(config) {
|
|
72
|
+
const typo = config && config.typo;
|
|
73
|
+
if (!typo || Object.keys(typo).length === 0) return '';
|
|
74
|
+
|
|
75
|
+
const fontFamilyMap = (config && config.fontFamilyMap) || {};
|
|
76
|
+
|
|
77
|
+
const rows = Object.entries(typo)
|
|
78
|
+
.map(([className, cls]) => generateRow(className, cls, fontFamilyMap))
|
|
79
|
+
.join('\n');
|
|
80
|
+
|
|
81
|
+
// Estilos locales: la tabla vive dentro de la demo, no del CSS principal.
|
|
82
|
+
// Mantengo todo en línea para que el snippet sea autocontenido y
|
|
83
|
+
// ThemeTransformer pueda inyectarlo donde encuentre el placeholder.
|
|
84
|
+
return ` <section class="demo-section" id="typography">
|
|
85
|
+
<h2 class="demo-title">Tipografía</h2>
|
|
86
|
+
<p class="mb-24">
|
|
87
|
+
Cada fila usa la clase real generada en <code>dist/output.css</code> a partir de <code>config.json → typo</code>.
|
|
88
|
+
La columna <em>Preview</em> aplica la clase tal cual, así puedes comparar el valor numérico con el render en vivo.
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
<style>
|
|
92
|
+
.hg-typo-table-wrap { overflow-x: auto; }
|
|
93
|
+
.hg-typo-table {
|
|
94
|
+
width: 100%;
|
|
95
|
+
border-collapse: collapse;
|
|
96
|
+
font-family: arial, sans-serif;
|
|
97
|
+
font-size: 13px;
|
|
98
|
+
}
|
|
99
|
+
.hg-typo-table th,
|
|
100
|
+
.hg-typo-table td {
|
|
101
|
+
text-align: left;
|
|
102
|
+
padding: 10px 12px;
|
|
103
|
+
border-bottom: 1px solid var(--hg-color-middle-grey, #a9a9a9);
|
|
104
|
+
vertical-align: middle;
|
|
105
|
+
}
|
|
106
|
+
.hg-typo-table thead th {
|
|
107
|
+
font-weight: 700;
|
|
108
|
+
font-size: 11px;
|
|
109
|
+
text-transform: uppercase;
|
|
110
|
+
letter-spacing: 0.04em;
|
|
111
|
+
color: var(--hg-color-dark-grey, #737373);
|
|
112
|
+
border-bottom: 2px solid var(--hg-color-middle-grey, #a9a9a9);
|
|
113
|
+
background: var(--hg-color-bg-light, #f0f0f0);
|
|
114
|
+
}
|
|
115
|
+
.hg-typo-table tbody tr:hover { background: var(--hg-color-bg-light, #f0f0f0); }
|
|
116
|
+
.hg-typo-table code {
|
|
117
|
+
background: var(--hg-color-bg-light, #f0f0f0);
|
|
118
|
+
padding: 2px 6px;
|
|
119
|
+
border-radius: 3px;
|
|
120
|
+
font-size: 12px;
|
|
121
|
+
}
|
|
122
|
+
.hg-typo-preview {
|
|
123
|
+
min-width: 180px;
|
|
124
|
+
color: var(--hg-color-primary, #1d1d1d);
|
|
125
|
+
}
|
|
126
|
+
.hg-typo-num { font-weight: 700; }
|
|
127
|
+
.hg-typo-meta { color: var(--hg-color-dark-grey, #737373); font-size: 12px; }
|
|
128
|
+
.hg-typo-empty { color: var(--hg-color-middle-grey, #a9a9a9); }
|
|
129
|
+
</style>
|
|
130
|
+
|
|
131
|
+
<div class="hg-typo-table-wrap">
|
|
132
|
+
<table class="hg-typo-table">
|
|
133
|
+
<thead>
|
|
134
|
+
<tr>
|
|
135
|
+
<th>Preview</th>
|
|
136
|
+
<th>Clase</th>
|
|
137
|
+
<th>Font family</th>
|
|
138
|
+
<th>Weight</th>
|
|
139
|
+
<th>Mobile</th>
|
|
140
|
+
<th>Desktop</th>
|
|
141
|
+
<th>Line height</th>
|
|
142
|
+
<th>Letter spacing</th>
|
|
143
|
+
<th>Text transform</th>
|
|
144
|
+
</tr>
|
|
145
|
+
</thead>
|
|
146
|
+
<tbody>
|
|
147
|
+
${rows}
|
|
148
|
+
</tbody>
|
|
149
|
+
</table>
|
|
150
|
+
</div>
|
|
151
|
+
</section>`;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
module.exports = { generateTypographyHTML };
|
|
@@ -1,3 +1,72 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
FUENTES — Suisse Intl (sans) + Suisse Works (serif)
|
|
3
|
+
Convención: una font-family por peso (suisse-light/regular/
|
|
4
|
+
medium/semibold) en lugar de una familia con varios pesos.
|
|
5
|
+
local() permite usar la fuente instalada en el sistema si
|
|
6
|
+
existe, evitando la descarga. font-display: swap evita el
|
|
7
|
+
FOIT — el texto se muestra con la fuente fallback y se
|
|
8
|
+
sustituye al cargar la web. Servimos woff2 (formato moderno,
|
|
9
|
+
más comprimido) con fallback a woff para navegadores muy
|
|
10
|
+
antiguos.
|
|
11
|
+
============================================ */
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: "suisse-light";
|
|
14
|
+
font-weight: 100;
|
|
15
|
+
font-display: swap;
|
|
16
|
+
src: local("SuisseIntl-Light"),
|
|
17
|
+
url('assets/fonts/suisse-intl-light.woff2') format('woff2'),
|
|
18
|
+
url('assets/fonts/suisse-intl-light.woff') format('woff');
|
|
19
|
+
}
|
|
20
|
+
@font-face {
|
|
21
|
+
font-family: "suisse-regular";
|
|
22
|
+
font-weight: 300;
|
|
23
|
+
font-display: swap;
|
|
24
|
+
src: local("SuisseIntl-Regular"),
|
|
25
|
+
url('assets/fonts/suisse-intl-regular.woff2') format('woff2'),
|
|
26
|
+
url('assets/fonts/suisse-intl-regular.woff') format('woff');
|
|
27
|
+
}
|
|
28
|
+
@font-face {
|
|
29
|
+
font-family: "suisse-medium";
|
|
30
|
+
font-weight: 400;
|
|
31
|
+
font-display: swap;
|
|
32
|
+
src: local("SuisseIntl-Medium"),
|
|
33
|
+
url('assets/fonts/suisse-intl-medium.woff2') format('woff2'),
|
|
34
|
+
url('assets/fonts/suisse-intl-medium.woff') format('woff');
|
|
35
|
+
}
|
|
36
|
+
@font-face {
|
|
37
|
+
font-family: "suisse-semibold";
|
|
38
|
+
font-weight: 500;
|
|
39
|
+
font-display: swap;
|
|
40
|
+
src: local("SuisseIntl-SemiBold"),
|
|
41
|
+
url('assets/fonts/suisse-intl-semibold.woff2') format('woff2'),
|
|
42
|
+
url('assets/fonts/suisse-intl-semibold.woff') format('woff');
|
|
43
|
+
}
|
|
44
|
+
/* Suisse Works (serif) — reservado para el tema Limited */
|
|
45
|
+
@font-face {
|
|
46
|
+
font-family: "suisse-works-regular";
|
|
47
|
+
font-weight: 400;
|
|
48
|
+
font-display: swap;
|
|
49
|
+
src: local("SuisseWorks-Regular"),
|
|
50
|
+
url('assets/fonts/suisse-works-regular.woff2') format('woff2'),
|
|
51
|
+
url('assets/fonts/suisse-works-regular.woff') format('woff');
|
|
52
|
+
}
|
|
53
|
+
@font-face {
|
|
54
|
+
font-family: "suisse-works-medium";
|
|
55
|
+
font-weight: 500;
|
|
56
|
+
font-display: swap;
|
|
57
|
+
src: local("SuisseWorks-Medium"),
|
|
58
|
+
url('assets/fonts/suisse-works-medium.woff2') format('woff2'),
|
|
59
|
+
url('assets/fonts/suisse-works-medium.woff') format('woff');
|
|
60
|
+
}
|
|
61
|
+
@font-face {
|
|
62
|
+
font-family: "suisse-works-bold";
|
|
63
|
+
font-weight: 700;
|
|
64
|
+
font-display: swap;
|
|
65
|
+
src: local("SuisseWorks-Bold"),
|
|
66
|
+
url('assets/fonts/suisse-works-bold.woff2') format('woff2'),
|
|
67
|
+
url('assets/fonts/suisse-works-bold.woff') format('woff');
|
|
68
|
+
}
|
|
69
|
+
|
|
1
70
|
/* ============================================
|
|
2
71
|
RESET Y BASE
|
|
3
72
|
============================================ */
|
|
@@ -8,7 +77,7 @@
|
|
|
8
77
|
body {
|
|
9
78
|
margin: 0;
|
|
10
79
|
padding: 0;
|
|
11
|
-
font-family: var(--hg-typo-font-family-primary);
|
|
80
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
12
81
|
}
|
|
13
82
|
|
|
14
83
|
h2 {
|
|
@@ -37,12 +106,12 @@ h2 {
|
|
|
37
106
|
margin-bottom: 40px;
|
|
38
107
|
font-weight: 500;
|
|
39
108
|
color: #000;
|
|
40
|
-
font-family:
|
|
109
|
+
font-family: var(--hg-typo-font-family-primary-bold);
|
|
41
110
|
letter-spacing: 0;
|
|
42
111
|
}
|
|
43
112
|
|
|
44
113
|
.guide-main-content h3 {
|
|
45
|
-
font-family:
|
|
114
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
46
115
|
color: #000;
|
|
47
116
|
font-size: 16px;
|
|
48
117
|
line-height: 28px;
|
|
@@ -57,7 +126,7 @@ h2 {
|
|
|
57
126
|
}
|
|
58
127
|
|
|
59
128
|
.guide-main-content h3 {
|
|
60
|
-
font-family:
|
|
129
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
61
130
|
color: #000;
|
|
62
131
|
font-size: 20px;
|
|
63
132
|
line-height: 28px;
|
|
@@ -110,7 +179,7 @@ h2 {
|
|
|
110
179
|
margin-top: 1rem;
|
|
111
180
|
font-size: 28px;
|
|
112
181
|
color: #000000;
|
|
113
|
-
font-family:
|
|
182
|
+
font-family: var(--hg-typo-font-family-primary-light);
|
|
114
183
|
margin-bottom: 20px;
|
|
115
184
|
|
|
116
185
|
line-height: 1.2;
|
|
@@ -125,7 +194,7 @@ h2 {
|
|
|
125
194
|
margin-top: 1rem;
|
|
126
195
|
font-size: 28px;
|
|
127
196
|
color: #000000;
|
|
128
|
-
font-family:
|
|
197
|
+
font-family: var(--hg-typo-font-family-primary-light);
|
|
129
198
|
margin-bottom: 20px;
|
|
130
199
|
|
|
131
200
|
line-height: 1.2;
|
|
@@ -206,11 +275,14 @@ h2 {
|
|
|
206
275
|
align-items: center;
|
|
207
276
|
}
|
|
208
277
|
.guide-nav a {
|
|
278
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
209
279
|
font-size: 13px;
|
|
210
280
|
color: #666;
|
|
211
281
|
text-decoration: none;
|
|
212
282
|
transition: color 0.2s;
|
|
213
283
|
white-space: nowrap;
|
|
284
|
+
text-transform: uppercase;
|
|
285
|
+
letter-spacing: 0.05em;
|
|
214
286
|
}
|
|
215
287
|
.guide-nav a:hover {
|
|
216
288
|
color: #000;
|
|
@@ -351,6 +423,102 @@ h2 {
|
|
|
351
423
|
overflow: auto;
|
|
352
424
|
}
|
|
353
425
|
|
|
426
|
+
/* ============================================
|
|
427
|
+
VARIABLES CSS — Grid de 3 columnas compacto
|
|
428
|
+
============================================ */
|
|
429
|
+
.guide-variables-grid {
|
|
430
|
+
column-count: 2;
|
|
431
|
+
column-gap: 2rem;
|
|
432
|
+
margin-top: 0;
|
|
433
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
434
|
+
}
|
|
435
|
+
@media (max-width: 720px) {
|
|
436
|
+
.guide-variables-grid { column-count: 1; }
|
|
437
|
+
}
|
|
438
|
+
.guide-variables-group {
|
|
439
|
+
break-inside: avoid;
|
|
440
|
+
-webkit-column-break-inside: avoid;
|
|
441
|
+
page-break-inside: avoid;
|
|
442
|
+
margin: 0 0 1.5rem;
|
|
443
|
+
padding: 0.75rem 1rem;
|
|
444
|
+
border: 1px solid #e9e9e9;
|
|
445
|
+
border-radius: 6px;
|
|
446
|
+
background: #fff;
|
|
447
|
+
display: block;
|
|
448
|
+
}
|
|
449
|
+
.guide-variables-group-title {
|
|
450
|
+
margin: 0 0 0.5rem;
|
|
451
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
452
|
+
font-size: 0.75rem;
|
|
453
|
+
font-weight: 700;
|
|
454
|
+
letter-spacing: 0.06em;
|
|
455
|
+
text-transform: uppercase;
|
|
456
|
+
color: #737373;
|
|
457
|
+
}
|
|
458
|
+
.guide-variables-group-count {
|
|
459
|
+
color: #a9a9a9;
|
|
460
|
+
font-weight: 400;
|
|
461
|
+
margin-left: 0.25rem;
|
|
462
|
+
}
|
|
463
|
+
.guide-variables-group-list {
|
|
464
|
+
display: flex;
|
|
465
|
+
flex-direction: column;
|
|
466
|
+
}
|
|
467
|
+
.guide-variable-item {
|
|
468
|
+
display: flex;
|
|
469
|
+
align-items: center;
|
|
470
|
+
justify-content: space-between;
|
|
471
|
+
gap: 0.75rem;
|
|
472
|
+
padding: 0.4rem 0;
|
|
473
|
+
border-bottom: 1px solid #efefef;
|
|
474
|
+
min-width: 0;
|
|
475
|
+
font-size: 0.72rem;
|
|
476
|
+
}
|
|
477
|
+
.guide-variables-group-list .guide-variable-item:last-child {
|
|
478
|
+
border-bottom: 0;
|
|
479
|
+
}
|
|
480
|
+
.guide-variable-item .guide-variable-name {
|
|
481
|
+
font-weight: 600;
|
|
482
|
+
color: #000;
|
|
483
|
+
word-break: break-all;
|
|
484
|
+
cursor: pointer;
|
|
485
|
+
line-height: 1.3;
|
|
486
|
+
flex: 1 1 auto;
|
|
487
|
+
min-width: 0;
|
|
488
|
+
}
|
|
489
|
+
.guide-variable-item .guide-variable-values {
|
|
490
|
+
display: flex;
|
|
491
|
+
align-items: baseline;
|
|
492
|
+
gap: 0.75rem;
|
|
493
|
+
flex-shrink: 0;
|
|
494
|
+
text-align: right;
|
|
495
|
+
font-size: 0.68rem;
|
|
496
|
+
}
|
|
497
|
+
.guide-variable-item .guide-variable-value {
|
|
498
|
+
color: #333;
|
|
499
|
+
cursor: pointer;
|
|
500
|
+
word-break: break-all;
|
|
501
|
+
max-width: 180px;
|
|
502
|
+
}
|
|
503
|
+
.guide-variable-item .guide-value-center-blue,
|
|
504
|
+
.guide-variable-item .guide-value-center-orange {
|
|
505
|
+
cursor: pointer;
|
|
506
|
+
font-weight: 500;
|
|
507
|
+
white-space: nowrap;
|
|
508
|
+
}
|
|
509
|
+
.guide-variable-item .guide-changed {
|
|
510
|
+
background: transparent;
|
|
511
|
+
}
|
|
512
|
+
.guide-variable-item .guide-variable-swatch {
|
|
513
|
+
display: inline-block;
|
|
514
|
+
width: 14px;
|
|
515
|
+
height: 14px;
|
|
516
|
+
border-radius: 3px;
|
|
517
|
+
border: 1px solid #e3e3e3;
|
|
518
|
+
flex-shrink: 0;
|
|
519
|
+
vertical-align: middle;
|
|
520
|
+
}
|
|
521
|
+
|
|
354
522
|
.guide-table {
|
|
355
523
|
width: 100%;
|
|
356
524
|
border-collapse: collapse;
|
|
@@ -413,7 +581,12 @@ h2 {
|
|
|
413
581
|
padding: 0.75rem;
|
|
414
582
|
min-height: 50px;
|
|
415
583
|
font-size: 1.5rem;
|
|
416
|
-
font-
|
|
584
|
+
/* Dejamos que cada font-family muestre su peso natural. En
|
|
585
|
+
esta convención (una familia por peso) cada @font-face
|
|
586
|
+
declara un único font-weight, así que forzar un weight
|
|
587
|
+
aquí anula la diferencia visual entre light / regular /
|
|
588
|
+
medium / semibold. */
|
|
589
|
+
font-weight: normal;
|
|
417
590
|
}
|
|
418
591
|
|
|
419
592
|
/* Rectángulo de lados afectados (tabla spacing modernas) */
|
|
@@ -506,12 +679,12 @@ h2 {
|
|
|
506
679
|
.guide-layout-class-name {
|
|
507
680
|
font-weight: 600;
|
|
508
681
|
color: #000000;
|
|
509
|
-
font-family:
|
|
682
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
510
683
|
}
|
|
511
684
|
|
|
512
685
|
.guide-text-regular,
|
|
513
686
|
.guide-table .guide-table-value {
|
|
514
|
-
font-family:
|
|
687
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
515
688
|
color: #333;
|
|
516
689
|
font-size: 13px;
|
|
517
690
|
}
|
|
@@ -521,7 +694,7 @@ h2 {
|
|
|
521
694
|
.guide-table .guide-desktop-value,
|
|
522
695
|
.guide-table .guide-value-center-blue {
|
|
523
696
|
font-weight: 500;
|
|
524
|
-
font-family:
|
|
697
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
525
698
|
color: #000000;
|
|
526
699
|
}
|
|
527
700
|
|
|
@@ -529,7 +702,7 @@ h2 {
|
|
|
529
702
|
.guide-layout-property,
|
|
530
703
|
.guide-color-var-name,
|
|
531
704
|
.guide-color-value {
|
|
532
|
-
font-family:
|
|
705
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
533
706
|
color: #666;
|
|
534
707
|
font-size: 13px;
|
|
535
708
|
}
|
|
@@ -553,7 +726,7 @@ h2 {
|
|
|
553
726
|
|
|
554
727
|
.guide-table .guide-value-center-orange {
|
|
555
728
|
font-weight: 500;
|
|
556
|
-
font-family:
|
|
729
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
557
730
|
color: #cc6600;
|
|
558
731
|
}
|
|
559
732
|
|
|
@@ -661,7 +834,7 @@ h2 {
|
|
|
661
834
|
.guide-info-box-code-info {
|
|
662
835
|
padding: 0.125rem 0.375rem;
|
|
663
836
|
border-radius: 3px;
|
|
664
|
-
font-family:
|
|
837
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
665
838
|
font-size: 0.875rem;
|
|
666
839
|
}
|
|
667
840
|
|
|
@@ -671,7 +844,7 @@ h2 {
|
|
|
671
844
|
padding: 1rem;
|
|
672
845
|
border-radius: 4px;
|
|
673
846
|
overflow-x: auto;
|
|
674
|
-
font-family:
|
|
847
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
675
848
|
font-size: 12px;
|
|
676
849
|
border-radius: 24px;
|
|
677
850
|
margin-bottom: 24px;
|
|
@@ -770,18 +943,18 @@ h2 {
|
|
|
770
943
|
============================================ */
|
|
771
944
|
.guide-colors-grid {
|
|
772
945
|
display: grid;
|
|
773
|
-
grid-template-columns: repeat(
|
|
774
|
-
gap:
|
|
946
|
+
grid-template-columns: repeat(10, minmax(0, 1fr));
|
|
947
|
+
gap: 0.75rem;
|
|
775
948
|
margin-top: 2rem;
|
|
776
949
|
padding-inline: 0.5rem;
|
|
777
950
|
padding-bottom: 2rem;
|
|
778
951
|
}
|
|
779
952
|
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
}
|
|
953
|
+
@media (max-width: 1280px) {
|
|
954
|
+
.guide-colors-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
|
|
955
|
+
}
|
|
956
|
+
@media (max-width: 720px) {
|
|
957
|
+
.guide-colors-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
785
958
|
}
|
|
786
959
|
|
|
787
960
|
|
|
@@ -956,7 +1129,7 @@ h2 {
|
|
|
956
1129
|
position: absolute;
|
|
957
1130
|
font-size: 0.875rem;
|
|
958
1131
|
font-weight: 600;
|
|
959
|
-
font-family:
|
|
1132
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
960
1133
|
color: #333;
|
|
961
1134
|
background: white;
|
|
962
1135
|
padding: 0.25rem 0.5rem;
|
|
@@ -1023,7 +1196,7 @@ h2 {
|
|
|
1023
1196
|
}
|
|
1024
1197
|
|
|
1025
1198
|
.guide-typeface-left {
|
|
1026
|
-
font-family: var(--hg-typo-font-family-primary);
|
|
1199
|
+
font-family: var(--hg-typo-font-family-primary-regular);
|
|
1027
1200
|
display: flex;
|
|
1028
1201
|
flex-direction: column;
|
|
1029
1202
|
gap: 2rem;
|
|
@@ -1188,7 +1361,7 @@ h2 {
|
|
|
1188
1361
|
}
|
|
1189
1362
|
|
|
1190
1363
|
.case-study-holygrail-title {
|
|
1191
|
-
font-family:
|
|
1364
|
+
font-family: var(--hg-typo-font-family-primary-light);
|
|
1192
1365
|
font-size: clamp(2.5rem, 12vw, 8rem);
|
|
1193
1366
|
font-weight: 100;
|
|
1194
1367
|
letter-spacing: 0.2em;
|