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/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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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) !important;
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
- &lt;p class="hg-hg-body-m-b"&gt;Body medium bold (weight 400)&lt;/p&gt;</code></div>
439
+ &lt;p class="hg-hg-body-m-b"&gt;Body medium bold (weight 400)&lt;/p&gt;
440
+
441
+ &lt;!-- Labels mono (Suisse Intl Mono, 10px / 120%) --&gt;
442
+ &lt;span class="label-mono"&gt;Label mono regular&lt;/span&gt;
443
+ &lt;span class="label-mono-b"&gt;Label mono bold&lt;/span&gt;</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">&quot;suisse-mono-regular&quot;, 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">&quot;suisse-mono-bold&quot;, 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>
@@ -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">&quot;suisse-mono-regular&quot;, 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">&quot;suisse-mono-bold&quot;, 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.21",
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": ">=12.0.0"
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",
@@ -247,7 +247,10 @@ class ThemeTransformer {
247
247
  if (config) {
248
248
  const typoConfig = applyThemeTypographyOverrides(config, themeData);
249
249
  const typoSection = generateTypographyHTML(typoConfig);
250
- content = content.replace(/<!--\s*HG_TYPO_TABLE\s*-->/g, typoSection);
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
- content = content.replace(/<!--\s*HG_THEME_BLOCK\s*-->/g, themeBlock);
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
- content = content.replace(/(<body[^>]*>)/i, '$1\n' + headerAndSidebarHTML);
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
- server.listen(currentPort, () => {
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
- let filePath = decodeURIComponent(req.url);
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
- // Eliminar query string
85
- filePath = filePath.split('?')[0];
86
-
87
- // Construir ruta completa
88
- const fullPath = path.join(DIST_DIR, filePath);
89
-
90
- // Verificar que el archivo esté dentro de dist/
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";