holygrail5 1.0.21 → 1.0.22
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 +72 -0
- package/config.json +47 -1
- package/dist/assets/fonts/SuisseIntlMono-Bold-WebS.woff +0 -0
- package/dist/assets/fonts/SuisseIntlMono-Bold-WebS.woff2 +0 -0
- package/dist/assets/fonts/SuisseIntlMono-Regular-WebS.woff +0 -0
- package/dist/assets/fonts/SuisseIntlMono-Regular-WebS.woff2 +0 -0
- package/dist/developer-guide.md +4 -0
- package/dist/guide-styles.css +16 -0
- package/dist/index.html +67 -21
- package/dist/output.css +74 -36
- package/dist/skills.html +5 -1
- package/dist/themes/dutti-demo.html +22 -0
- package/dist/themes/dutti.css +2 -0
- package/dist/themes/limited-demo.html +22 -0
- package/package.json +2 -2
- package/src/.data/.previous-values.json +33 -1
- package/src/assets/fonts/SuisseIntlMono-Bold-WebS.woff +0 -0
- package/src/assets/fonts/SuisseIntlMono-Bold-WebS.woff2 +0 -0
- package/src/assets/fonts/SuisseIntlMono-Regular-WebS.woff +0 -0
- package/src/assets/fonts/SuisseIntlMono-Regular-WebS.woff2 +0 -0
- package/src/build/theme-transformer.js +10 -3
- package/src/dev-server.js +28 -13
- package/src/docs-generator/guide-styles.css +16 -0
- package/src/docs-generator/html-generator.js +76 -66
- package/src/docs-generator/sections/colors-section.js +15 -5
- package/src/generators/typo-generator.js +1 -2
- package/src/generators/utils.js +15 -0
- package/themes/dutti/README.md +17 -0
- package/themes/dutti/_variables.css +2 -0
package/dist/output.css
CHANGED
|
@@ -60,6 +60,8 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
60
60
|
--hg-typo-font-family-primary-regular: "suisse-regular", Arial, Helvetica, sans-serif;
|
|
61
61
|
--hg-typo-font-family-primary-bold: "suisse-semibold", Arial, Helvetica, sans-serif;
|
|
62
62
|
--hg-typo-font-family-secondary: "suisse-medium", Arial, Helvetica, sans-serif;
|
|
63
|
+
--hg-typo-font-family-mono-regular: "suisse-mono-regular", Consolas, Menlo, Monaco, "Courier New", monospace;
|
|
64
|
+
--hg-typo-font-family-mono-bold: "suisse-mono-bold", Consolas, Menlo, Monaco, "Courier New", monospace;
|
|
63
65
|
--hg-typo-line-height-1: 1;
|
|
64
66
|
--hg-typo-line-height-1-976: 1.976;
|
|
65
67
|
--hg-typo-line-height-1-2: 1.2;
|
|
@@ -2214,14 +2216,14 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2214
2216
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2215
2217
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2216
2218
|
font-size: var(--hg-typo-font-size-24);
|
|
2217
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2219
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2218
2220
|
}
|
|
2219
2221
|
|
|
2220
2222
|
.h2 {
|
|
2221
2223
|
font-family: var(--hg-typo-font-family-primary-bold);
|
|
2222
2224
|
font-weight: var(--hg-typo-font-weight-600);
|
|
2223
2225
|
font-size: var(--hg-typo-font-size-18);
|
|
2224
|
-
line-height: var(--hg-typo-line-height-1-2)
|
|
2226
|
+
line-height: var(--hg-typo-line-height-1-2);
|
|
2225
2227
|
letter-spacing: var(--hg-typo-letter-spacing-0);
|
|
2226
2228
|
text-transform: var(--hg-typo-text-transform-none);
|
|
2227
2229
|
}
|
|
@@ -2230,14 +2232,14 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2230
2232
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2231
2233
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2232
2234
|
font-size: var(--hg-typo-font-size-12);
|
|
2233
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2235
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2234
2236
|
}
|
|
2235
2237
|
|
|
2236
2238
|
.title-l {
|
|
2237
2239
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2238
2240
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2239
2241
|
font-size: var(--hg-typo-font-size-12);
|
|
2240
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2242
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2241
2243
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2242
2244
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2243
2245
|
}
|
|
@@ -2246,7 +2248,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2246
2248
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2247
2249
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2248
2250
|
font-size: var(--hg-typo-font-size-12);
|
|
2249
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2251
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2250
2252
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2251
2253
|
}
|
|
2252
2254
|
|
|
@@ -2254,7 +2256,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2254
2256
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2255
2257
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2256
2258
|
font-size: var(--hg-typo-font-size-10);
|
|
2257
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2259
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2258
2260
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2259
2261
|
}
|
|
2260
2262
|
|
|
@@ -2262,7 +2264,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2262
2264
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2263
2265
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2264
2266
|
font-size: var(--hg-typo-font-size-10);
|
|
2265
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2267
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2266
2268
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2267
2269
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2268
2270
|
}
|
|
@@ -2271,7 +2273,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2271
2273
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2272
2274
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2273
2275
|
font-size: var(--hg-typo-font-size-13);
|
|
2274
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2276
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2275
2277
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2276
2278
|
}
|
|
2277
2279
|
|
|
@@ -2279,7 +2281,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2279
2281
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2280
2282
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2281
2283
|
font-size: var(--hg-typo-font-size-12);
|
|
2282
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2284
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2283
2285
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2284
2286
|
}
|
|
2285
2287
|
|
|
@@ -2287,7 +2289,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2287
2289
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2288
2290
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2289
2291
|
font-size: var(--hg-typo-font-size-9);
|
|
2290
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2292
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2291
2293
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2292
2294
|
}
|
|
2293
2295
|
|
|
@@ -2295,7 +2297,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2295
2297
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2296
2298
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2297
2299
|
font-size: var(--hg-typo-font-size-12);
|
|
2298
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2300
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2299
2301
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2300
2302
|
}
|
|
2301
2303
|
|
|
@@ -2303,7 +2305,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2303
2305
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2304
2306
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2305
2307
|
font-size: var(--hg-typo-font-size-12);
|
|
2306
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2308
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2307
2309
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2308
2310
|
}
|
|
2309
2311
|
|
|
@@ -2311,7 +2313,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2311
2313
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2312
2314
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2313
2315
|
font-size: var(--hg-typo-font-size-12);
|
|
2314
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2316
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2315
2317
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2316
2318
|
}
|
|
2317
2319
|
|
|
@@ -2319,7 +2321,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2319
2321
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2320
2322
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2321
2323
|
font-size: var(--hg-typo-font-size-12);
|
|
2322
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2324
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2323
2325
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2324
2326
|
}
|
|
2325
2327
|
|
|
@@ -2327,7 +2329,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2327
2329
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2328
2330
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2329
2331
|
font-size: var(--hg-typo-font-size-12);
|
|
2330
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2332
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2331
2333
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2332
2334
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2333
2335
|
}
|
|
@@ -2336,7 +2338,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2336
2338
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2337
2339
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2338
2340
|
font-size: var(--hg-typo-font-size-12);
|
|
2339
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2341
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2340
2342
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2341
2343
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2342
2344
|
}
|
|
@@ -2345,7 +2347,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2345
2347
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2346
2348
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2347
2349
|
font-size: var(--hg-typo-font-size-10);
|
|
2348
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2350
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2349
2351
|
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2350
2352
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2351
2353
|
}
|
|
@@ -2354,7 +2356,25 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2354
2356
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2355
2357
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2356
2358
|
font-size: var(--hg-typo-font-size-10);
|
|
2357
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2359
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2360
|
+
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2361
|
+
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2362
|
+
}
|
|
2363
|
+
|
|
2364
|
+
.label-mono {
|
|
2365
|
+
font-family: var(--hg-typo-font-family-suisse-mono-regular);
|
|
2366
|
+
font-weight: var(--hg-typo-font-weight-400);
|
|
2367
|
+
font-size: var(--hg-typo-font-size-10);
|
|
2368
|
+
line-height: var(--hg-typo-line-height-1-2);
|
|
2369
|
+
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2370
|
+
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2371
|
+
}
|
|
2372
|
+
|
|
2373
|
+
.label-mono-b {
|
|
2374
|
+
font-family: var(--hg-typo-font-family-suisse-mono-bold);
|
|
2375
|
+
font-weight: var(--hg-typo-font-weight-700);
|
|
2376
|
+
font-size: var(--hg-typo-font-size-10);
|
|
2377
|
+
line-height: var(--hg-typo-line-height-1-2);
|
|
2358
2378
|
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2359
2379
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2360
2380
|
}
|
|
@@ -2368,14 +2388,14 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2368
2388
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2369
2389
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2370
2390
|
font-size: var(--hg-typo-font-size-24);
|
|
2371
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2391
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2372
2392
|
}
|
|
2373
2393
|
|
|
2374
2394
|
.h2 {
|
|
2375
2395
|
font-family: var(--hg-typo-font-family-primary-bold);
|
|
2376
2396
|
font-weight: var(--hg-typo-font-weight-600);
|
|
2377
2397
|
font-size: var(--hg-typo-font-size-24);
|
|
2378
|
-
line-height: var(--hg-typo-line-height-1-2)
|
|
2398
|
+
line-height: var(--hg-typo-line-height-1-2);
|
|
2379
2399
|
letter-spacing: var(--hg-typo-letter-spacing-0);
|
|
2380
2400
|
text-transform: var(--hg-typo-text-transform-none);
|
|
2381
2401
|
}
|
|
@@ -2384,14 +2404,14 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2384
2404
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2385
2405
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2386
2406
|
font-size: var(--hg-typo-font-size-13);
|
|
2387
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2407
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2388
2408
|
}
|
|
2389
2409
|
|
|
2390
2410
|
.title-l {
|
|
2391
2411
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2392
2412
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2393
2413
|
font-size: var(--hg-typo-font-size-13);
|
|
2394
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2414
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2395
2415
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2396
2416
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2397
2417
|
}
|
|
@@ -2400,7 +2420,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2400
2420
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2401
2421
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2402
2422
|
font-size: var(--hg-typo-font-size-13);
|
|
2403
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2423
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2404
2424
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2405
2425
|
}
|
|
2406
2426
|
|
|
@@ -2408,7 +2428,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2408
2428
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2409
2429
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2410
2430
|
font-size: var(--hg-typo-font-size-10);
|
|
2411
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2431
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2412
2432
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2413
2433
|
}
|
|
2414
2434
|
|
|
@@ -2416,7 +2436,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2416
2436
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2417
2437
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2418
2438
|
font-size: var(--hg-typo-font-size-10);
|
|
2419
|
-
line-height: var(--hg-typo-line-height-1-4)
|
|
2439
|
+
line-height: var(--hg-typo-line-height-1-4);
|
|
2420
2440
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2421
2441
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2422
2442
|
}
|
|
@@ -2425,7 +2445,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2425
2445
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2426
2446
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2427
2447
|
font-size: var(--hg-typo-font-size-13);
|
|
2428
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2448
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2429
2449
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2430
2450
|
}
|
|
2431
2451
|
|
|
@@ -2433,7 +2453,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2433
2453
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2434
2454
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2435
2455
|
font-size: var(--hg-typo-font-size-12);
|
|
2436
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2456
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2437
2457
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2438
2458
|
}
|
|
2439
2459
|
|
|
@@ -2441,7 +2461,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2441
2461
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2442
2462
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2443
2463
|
font-size: var(--hg-typo-font-size-10);
|
|
2444
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2464
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2445
2465
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2446
2466
|
}
|
|
2447
2467
|
|
|
@@ -2449,7 +2469,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2449
2469
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2450
2470
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2451
2471
|
font-size: var(--hg-typo-font-size-13);
|
|
2452
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2472
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2453
2473
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2454
2474
|
}
|
|
2455
2475
|
|
|
@@ -2457,7 +2477,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2457
2477
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2458
2478
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2459
2479
|
font-size: var(--hg-typo-font-size-13);
|
|
2460
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2480
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2461
2481
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2462
2482
|
}
|
|
2463
2483
|
|
|
@@ -2465,7 +2485,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2465
2485
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2466
2486
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2467
2487
|
font-size: var(--hg-typo-font-size-12);
|
|
2468
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2488
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2469
2489
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2470
2490
|
}
|
|
2471
2491
|
|
|
@@ -2473,7 +2493,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2473
2493
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2474
2494
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2475
2495
|
font-size: var(--hg-typo-font-size-12);
|
|
2476
|
-
line-height: var(--hg-typo-line-height-1-5)
|
|
2496
|
+
line-height: var(--hg-typo-line-height-1-5);
|
|
2477
2497
|
letter-spacing: var(--hg-typo-letter-spacing-0-04em);
|
|
2478
2498
|
}
|
|
2479
2499
|
|
|
@@ -2481,7 +2501,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2481
2501
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2482
2502
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2483
2503
|
font-size: var(--hg-typo-font-size-12);
|
|
2484
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2504
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2485
2505
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2486
2506
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2487
2507
|
}
|
|
@@ -2490,7 +2510,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2490
2510
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2491
2511
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2492
2512
|
font-size: var(--hg-typo-font-size-12);
|
|
2493
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2513
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2494
2514
|
letter-spacing: var(--hg-typo-letter-spacing-0-16em);
|
|
2495
2515
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2496
2516
|
}
|
|
@@ -2499,7 +2519,7 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2499
2519
|
font-family: var(--hg-typo-font-family-primary-light);
|
|
2500
2520
|
font-weight: var(--hg-typo-font-weight-100);
|
|
2501
2521
|
font-size: var(--hg-typo-font-size-10);
|
|
2502
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2522
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2503
2523
|
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2504
2524
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2505
2525
|
}
|
|
@@ -2508,7 +2528,25 @@ p, h1, h2, h3, h4, h5, h6 {
|
|
|
2508
2528
|
font-family: var(--hg-typo-font-family-primary-regular);
|
|
2509
2529
|
font-weight: var(--hg-typo-font-weight-300);
|
|
2510
2530
|
font-size: var(--hg-typo-font-size-10);
|
|
2511
|
-
line-height: var(--hg-typo-line-height-1)
|
|
2531
|
+
line-height: var(--hg-typo-line-height-1);
|
|
2532
|
+
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2533
|
+
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2534
|
+
}
|
|
2535
|
+
|
|
2536
|
+
.label-mono {
|
|
2537
|
+
font-family: var(--hg-typo-font-family-suisse-mono-regular);
|
|
2538
|
+
font-weight: var(--hg-typo-font-weight-400);
|
|
2539
|
+
font-size: var(--hg-typo-font-size-10);
|
|
2540
|
+
line-height: var(--hg-typo-line-height-1-2);
|
|
2541
|
+
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2542
|
+
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2543
|
+
}
|
|
2544
|
+
|
|
2545
|
+
.label-mono-b {
|
|
2546
|
+
font-family: var(--hg-typo-font-family-suisse-mono-bold);
|
|
2547
|
+
font-weight: var(--hg-typo-font-weight-700);
|
|
2548
|
+
font-size: var(--hg-typo-font-size-10);
|
|
2549
|
+
line-height: var(--hg-typo-line-height-1-2);
|
|
2512
2550
|
letter-spacing: var(--hg-typo-letter-spacing-0-06em);
|
|
2513
2551
|
text-transform: var(--hg-typo-text-transform-uppercase);
|
|
2514
2552
|
}
|
package/dist/skills.html
CHANGED
|
@@ -436,7 +436,11 @@ border-color: var(--hg-color-error);
|
|
|
436
436
|
|
|
437
437
|
<!-- Body variants -->
|
|
438
438
|
<p class="hg-hg-body-m">Body medium (12→13px)</p>
|
|
439
|
-
<p class="hg-hg-body-m-b">Body medium bold (weight 400)</p>
|
|
439
|
+
<p class="hg-hg-body-m-b">Body medium bold (weight 400)</p>
|
|
440
|
+
|
|
441
|
+
<!-- Labels mono (Suisse Intl Mono, 10px / 120%) -->
|
|
442
|
+
<span class="label-mono">Label mono regular</span>
|
|
443
|
+
<span class="label-mono-b">Label mono bold</span></code></div>
|
|
440
444
|
<h4 class="sk-md-h3">Cómo funciona</h4>
|
|
441
445
|
<p class="sk-md-p">Las clases son mobile-first. Los valores base aplican a mobile y un media query <code class="sk-inline-code">@media (min-width: 992px)</code> sobrescribe para desktop.</p>
|
|
442
446
|
<div class="sk-code-block"><code>/* CSS generado (ejemplo) */
|
|
@@ -799,6 +799,28 @@
|
|
|
799
799
|
<td><span class="hg-typo-num">1</span></td>
|
|
800
800
|
<td>0.06em</td>
|
|
801
801
|
<td>uppercase</td>
|
|
802
|
+
</tr>
|
|
803
|
+
<tr>
|
|
804
|
+
<td class="hg-typo-preview"><span class="label-mono">Aa Bb Cc 123</span></td>
|
|
805
|
+
<td><code>.label-mono</code></td>
|
|
806
|
+
<td><code>suisse-mono-regular</code> <span class="hg-typo-meta">"suisse-mono-regular", Arial, Helvetica, sans-serif</span></td>
|
|
807
|
+
<td>400</td>
|
|
808
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
809
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
810
|
+
<td><span class="hg-typo-num">1.2</span></td>
|
|
811
|
+
<td>0.06em</td>
|
|
812
|
+
<td>uppercase</td>
|
|
813
|
+
</tr>
|
|
814
|
+
<tr>
|
|
815
|
+
<td class="hg-typo-preview"><span class="label-mono-b">Aa Bb Cc 123</span></td>
|
|
816
|
+
<td><code>.label-mono-b</code></td>
|
|
817
|
+
<td><code>suisse-mono-bold</code> <span class="hg-typo-meta">"suisse-mono-bold", Arial, Helvetica, sans-serif</span></td>
|
|
818
|
+
<td>700</td>
|
|
819
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
820
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
821
|
+
<td><span class="hg-typo-num">1.2</span></td>
|
|
822
|
+
<td>0.06em</td>
|
|
823
|
+
<td>uppercase</td>
|
|
802
824
|
</tr>
|
|
803
825
|
</tbody>
|
|
804
826
|
</table>
|
package/dist/themes/dutti.css
CHANGED
|
@@ -74,6 +74,8 @@
|
|
|
74
74
|
--hg-typo-font-family-primary-regular: "suisse-regular", Arial, Helvetica, sans-serif;
|
|
75
75
|
--hg-typo-font-family-primary-bold: "suisse-semibold", Arial, Helvetica, sans-serif;
|
|
76
76
|
--hg-typo-font-family-secondary: "suisse-medium", Arial, Helvetica, sans-serif;
|
|
77
|
+
--hg-typo-font-family-mono-regular: "suisse-mono-regular", Arial, Helvetica, sans-serif;
|
|
78
|
+
--hg-typo-font-family-mono-bold: "suisse-mono-bold", Arial, Helvetica, sans-serif;
|
|
77
79
|
|
|
78
80
|
/* Bordes y radios */
|
|
79
81
|
--border-radius: 0;
|
|
@@ -803,6 +803,28 @@
|
|
|
803
803
|
<td><span class="hg-typo-num">1</span></td>
|
|
804
804
|
<td>0.06em</td>
|
|
805
805
|
<td>uppercase</td>
|
|
806
|
+
</tr>
|
|
807
|
+
<tr>
|
|
808
|
+
<td class="hg-typo-preview"><span class="label-mono">Aa Bb Cc 123</span></td>
|
|
809
|
+
<td><code>.label-mono</code></td>
|
|
810
|
+
<td><code>suisse-mono-regular</code> <span class="hg-typo-meta">"suisse-mono-regular", Arial, Helvetica, sans-serif</span></td>
|
|
811
|
+
<td>400</td>
|
|
812
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
813
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
814
|
+
<td><span class="hg-typo-num">1.2</span></td>
|
|
815
|
+
<td>0.06em</td>
|
|
816
|
+
<td>uppercase</td>
|
|
817
|
+
</tr>
|
|
818
|
+
<tr>
|
|
819
|
+
<td class="hg-typo-preview"><span class="label-mono-b">Aa Bb Cc 123</span></td>
|
|
820
|
+
<td><code>.label-mono-b</code></td>
|
|
821
|
+
<td><code>suisse-mono-bold</code> <span class="hg-typo-meta">"suisse-mono-bold", Arial, Helvetica, sans-serif</span></td>
|
|
822
|
+
<td>700</td>
|
|
823
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
824
|
+
<td><span class="hg-typo-num">10px</span></td>
|
|
825
|
+
<td><span class="hg-typo-num">1.2</span></td>
|
|
826
|
+
<td>0.06em</td>
|
|
827
|
+
<td>uppercase</td>
|
|
806
828
|
</tr>
|
|
807
829
|
</tbody>
|
|
808
830
|
</table>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "holygrail5",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
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": "generate-css.js",
|
|
6
6
|
"style": "dist/output.css",
|
|
@@ -49,6 +49,6 @@
|
|
|
49
49
|
"dist/**/*"
|
|
50
50
|
],
|
|
51
51
|
"engines": {
|
|
52
|
-
"node": ">=
|
|
52
|
+
"node": ">=18.0.0"
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
"primary-light": "\"suisse-light\", Arial, Helvetica, sans-serif",
|
|
8
8
|
"primary-regular": "\"suisse-regular\", Arial, Helvetica, sans-serif",
|
|
9
9
|
"primary-bold": "\"suisse-semibold\", Arial, Helvetica, sans-serif",
|
|
10
|
-
"secondary": "\"suisse-medium\", Arial, Helvetica, sans-serif"
|
|
10
|
+
"secondary": "\"suisse-medium\", Arial, Helvetica, sans-serif",
|
|
11
|
+
"mono-regular": "\"suisse-mono-regular\", Consolas, Menlo, Monaco, \"Courier New\", monospace",
|
|
12
|
+
"mono-bold": "\"suisse-mono-bold\", Consolas, Menlo, Monaco, \"Courier New\", monospace"
|
|
11
13
|
},
|
|
12
14
|
"spacingMap": {
|
|
13
15
|
"0": "0",
|
|
@@ -306,6 +308,34 @@
|
|
|
306
308
|
"fontSize": "10px",
|
|
307
309
|
"lineHeight": "1"
|
|
308
310
|
}
|
|
311
|
+
},
|
|
312
|
+
"label-mono": {
|
|
313
|
+
"fontFamily": "\"suisse-mono-regular\", Arial, Helvetica, sans-serif",
|
|
314
|
+
"fontWeight": "400",
|
|
315
|
+
"letterSpacing": "0.06em",
|
|
316
|
+
"textTransform": "uppercase",
|
|
317
|
+
"mobile": {
|
|
318
|
+
"fontSize": "10px",
|
|
319
|
+
"lineHeight": "1.2"
|
|
320
|
+
},
|
|
321
|
+
"desktop": {
|
|
322
|
+
"fontSize": "10px",
|
|
323
|
+
"lineHeight": "1.2"
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"label-mono-b": {
|
|
327
|
+
"fontFamily": "\"suisse-mono-bold\", Arial, Helvetica, sans-serif",
|
|
328
|
+
"fontWeight": "700",
|
|
329
|
+
"letterSpacing": "0.06em",
|
|
330
|
+
"textTransform": "uppercase",
|
|
331
|
+
"mobile": {
|
|
332
|
+
"fontSize": "10px",
|
|
333
|
+
"lineHeight": "1.2"
|
|
334
|
+
},
|
|
335
|
+
"desktop": {
|
|
336
|
+
"fontSize": "10px",
|
|
337
|
+
"lineHeight": "1.2"
|
|
338
|
+
}
|
|
309
339
|
}
|
|
310
340
|
},
|
|
311
341
|
"variables": {
|
|
@@ -314,6 +344,8 @@
|
|
|
314
344
|
"--hg-typo-font-family-serif": "'Playfair Display', 'Georgia', serif",
|
|
315
345
|
"--hg-typo-font-family-primary-light": "\"suisse-light\", Arial, Helvetica, sans-serif",
|
|
316
346
|
"--hg-typo-font-family-primary-bold": "\"suisse-semibold\", Arial, Helvetica, sans-serif",
|
|
347
|
+
"--hg-typo-font-family-mono-regular": "\"suisse-mono-regular\", Arial, Helvetica, sans-serif",
|
|
348
|
+
"--hg-typo-font-family-mono-bold": "\"suisse-mono-bold\", Arial, Helvetica, sans-serif",
|
|
317
349
|
"--hg-typo-line-height-1": "1",
|
|
318
350
|
"--hg-typo-line-height-1-976": "1.976",
|
|
319
351
|
"--hg-typo-line-height-1-2": "1.2",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -247,7 +247,10 @@ class ThemeTransformer {
|
|
|
247
247
|
if (config) {
|
|
248
248
|
const typoConfig = applyThemeTypographyOverrides(config, themeData);
|
|
249
249
|
const typoSection = generateTypographyHTML(typoConfig);
|
|
250
|
-
|
|
250
|
+
// Usamos un replacer de función: si `typoSection` contiene `$`
|
|
251
|
+
// (frecuente en CSS), pasarlo como string de reemplazo haría que
|
|
252
|
+
// `replace` interpretara `$&`, `$1`, `$$`… y corrompiera la salida.
|
|
253
|
+
content = content.replace(/<!--\s*HG_TYPO_TABLE\s*-->/g, () => typoSection);
|
|
251
254
|
} else {
|
|
252
255
|
// Sin config, eliminamos el placeholder para no mostrarlo en crudo
|
|
253
256
|
content = content.replace(/<!--\s*HG_TYPO_TABLE\s*-->/g, '');
|
|
@@ -257,7 +260,9 @@ class ThemeTransformer {
|
|
|
257
260
|
// Si no lo hay, quitamos el placeholder para no dejar comentarios huérfanos.
|
|
258
261
|
if (themeData) {
|
|
259
262
|
const themeBlock = generateThemeBlockHTML(themeData, config);
|
|
260
|
-
|
|
263
|
+
// Replacer de función por el mismo motivo que el bloque de tipografía:
|
|
264
|
+
// blindar la salida frente a `$` en el contenido inyectado.
|
|
265
|
+
content = content.replace(/<!--\s*HG_THEME_BLOCK\s*-->/g, () => themeBlock);
|
|
261
266
|
} else {
|
|
262
267
|
content = content.replace(/<!--\s*HG_THEME_BLOCK\s*-->/g, '');
|
|
263
268
|
}
|
|
@@ -291,7 +296,9 @@ class ThemeTransformer {
|
|
|
291
296
|
// la lista de temas activos, se respeta; si no, se cae al
|
|
292
297
|
// fallback estático THEMES_IN_NAV (compatibilidad).
|
|
293
298
|
const headerAndSidebarHTML = buildHeaderAndSidebar(themeName, themesForNav);
|
|
294
|
-
|
|
299
|
+
// Replacer de función: preserva el `<body>` capturado y evita que un
|
|
300
|
+
// `$` en las etiquetas del tema (themesForNav) se interprete como patrón.
|
|
301
|
+
content = content.replace(/(<body[^>]*>)/i, (m) => m + '\n' + headerAndSidebarHTML);
|
|
295
302
|
|
|
296
303
|
// Eliminar el título h1 del contenido si existe (ya está en el header)
|
|
297
304
|
content = content.replace(/<h1 class="demo-title">Sistema de Theming [^<]+<\/h1>\s*/g, '');
|
package/src/dev-server.js
CHANGED
|
@@ -36,7 +36,10 @@ function listenOnAvailablePort(server, initialPort) {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
server.once('error', onError);
|
|
39
|
-
|
|
39
|
+
// Bind explícito a loopback: es un servidor de desarrollo y no debe
|
|
40
|
+
// quedar expuesto en la red local (el default de Node escucha en
|
|
41
|
+
// todas las interfaces).
|
|
42
|
+
server.listen(currentPort, '127.0.0.1', () => {
|
|
40
43
|
server.removeListener('error', onError);
|
|
41
44
|
resolve(currentPort);
|
|
42
45
|
});
|
|
@@ -73,22 +76,34 @@ function getMimeType(filePath) {
|
|
|
73
76
|
// Servidor HTTP simple y rápido
|
|
74
77
|
function createServer() {
|
|
75
78
|
return http.createServer((req, res) => {
|
|
76
|
-
// Decodificar URL
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
// Decodificar URL. Una URL con secuencias %-malformadas hace que
|
|
80
|
+
// decodeURIComponent lance URIError; sin este try/catch la excepción
|
|
81
|
+
// quedaría sin capturar y tumbaría el proceso del servidor (DoS con
|
|
82
|
+
// un solo request tipo `GET /%`).
|
|
83
|
+
let filePath;
|
|
84
|
+
try {
|
|
85
|
+
filePath = decodeURIComponent(req.url);
|
|
86
|
+
} catch (e) {
|
|
87
|
+
res.writeHead(400, { 'Content-Type': 'text/plain' });
|
|
88
|
+
res.end('400 Bad Request');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Eliminar query string (antes de normalizar la ruta)
|
|
93
|
+
filePath = filePath.split('?')[0];
|
|
94
|
+
|
|
79
95
|
// Si es la raíz, servir index.html
|
|
80
96
|
if (filePath === '/' || filePath === '') {
|
|
81
97
|
filePath = '/index.html';
|
|
82
98
|
}
|
|
83
|
-
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (!fullPath.startsWith(DIST_DIR)) {
|
|
99
|
+
|
|
100
|
+
// Construir ruta completa y normalizar
|
|
101
|
+
const fullPath = path.resolve(DIST_DIR, '.' + path.sep + filePath);
|
|
102
|
+
|
|
103
|
+
// Verificar que el archivo esté DENTRO de dist/. Comparamos con el
|
|
104
|
+
// separador final para que un directorio hermano con prefijo común
|
|
105
|
+
// (p. ej. `dist-backup/`) no pase el filtro de `startsWith`.
|
|
106
|
+
if (fullPath !== DIST_DIR && !fullPath.startsWith(DIST_DIR + path.sep)) {
|
|
92
107
|
res.writeHead(403, { 'Content-Type': 'text/plain' });
|
|
93
108
|
res.end('Forbidden');
|
|
94
109
|
return;
|
|
@@ -41,6 +41,22 @@
|
|
|
41
41
|
url('assets/fonts/suisse-intl-semibold.woff2') format('woff2'),
|
|
42
42
|
url('assets/fonts/suisse-intl-semibold.woff') format('woff');
|
|
43
43
|
}
|
|
44
|
+
@font-face {
|
|
45
|
+
font-family: "suisse-mono-regular";
|
|
46
|
+
font-weight: 400;
|
|
47
|
+
font-display: swap;
|
|
48
|
+
src: local("SuisseIntlMono-Regular"),
|
|
49
|
+
url('assets/fonts/SuisseIntlMono-Regular-WebS.woff2') format('woff2'),
|
|
50
|
+
url('assets/fonts/SuisseIntlMono-Regular-WebS.woff') format('woff');
|
|
51
|
+
}
|
|
52
|
+
@font-face {
|
|
53
|
+
font-family: "suisse-mono-bold";
|
|
54
|
+
font-weight: 700;
|
|
55
|
+
font-display: swap;
|
|
56
|
+
src: local("SuisseIntlMono-Bold"),
|
|
57
|
+
url('assets/fonts/SuisseIntlMono-Bold-WebS.woff2') format('woff2'),
|
|
58
|
+
url('assets/fonts/SuisseIntlMono-Bold-WebS.woff') format('woff');
|
|
59
|
+
}
|
|
44
60
|
/* Suisse Works (serif) — reservado para el tema Limited */
|
|
45
61
|
@font-face {
|
|
46
62
|
font-family: "suisse-works-regular";
|