@guildofgleks/ui 21.9.1 → 21.11.0
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/AGENTS.md +40 -6
- package/CHANGELOG.md +467 -0
- package/README.md +65 -0
- package/TOKENS.md +49 -49
- package/fesm2022/guildofgleks-ui.mjs +112 -48
- package/fesm2022/guildofgleks-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/button.css +49 -2
- package/styles/presets/slate.css +92 -86
- package/styles/theme.css +380 -146
- package/types/guildofgleks-ui.d.ts +27 -11
package/styles/theme.css
CHANGED
|
@@ -49,6 +49,11 @@
|
|
|
49
49
|
--gog-font-body: system-ui, -apple-system, 'Segoe UI', sans-serif;
|
|
50
50
|
--gog-font-mono: ui-monospace, SFMono-Regular, 'JetBrains Mono', monospace;
|
|
51
51
|
|
|
52
|
+
/* 11px, below `xs`. The chip and the tag both wrote it as a literal at `xsm` — the same value
|
|
53
|
+
chosen twice, independently, which is a missing rung rather than two opinions, exactly as
|
|
54
|
+
`slg` was. Moving them to `xs` instead would have made `xsm` and `sm` the same size, which
|
|
55
|
+
is the one thing `xsm` exists to avoid. */
|
|
56
|
+
--gog-text-2xs: 0.6875rem;
|
|
52
57
|
--gog-text-xs: 0.75rem;
|
|
53
58
|
--gog-text-sm: 0.875rem;
|
|
54
59
|
--gog-text-md: 1rem;
|
|
@@ -221,7 +226,9 @@
|
|
|
221
226
|
|
|
222
227
|
/* ── Toast stack ──────────────────────────────────────────────────────────── */
|
|
223
228
|
--gog-toast-min-width: 280px;
|
|
224
|
-
--gog-toast-max-width:
|
|
229
|
+
/* --gog-toast-max-width lives in the :root, [data-theme] block below — it derives from
|
|
230
|
+
--gog-toast-stack-padding, and a derived value cannot live in this literals-only block (it
|
|
231
|
+
would not follow a scoped theme). */
|
|
225
232
|
--gog-toast-z-index: 9999;
|
|
226
233
|
--gog-toast-enter-distance: 110%;
|
|
227
234
|
--gog-toast-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
|
|
@@ -413,44 +420,56 @@
|
|
|
413
420
|
/* The blocking overlay outranks everything, including a dialog it may be covering. */
|
|
414
421
|
--gog-spinner-overlay-z: calc(var(--gog-z-base) + 8000);
|
|
415
422
|
|
|
416
|
-
--gog-space-2: calc(2px * var(--gog-density));
|
|
417
423
|
--gog-space-4: calc(4px * var(--gog-density));
|
|
418
|
-
--gog-space-6: calc(6px * var(--gog-density));
|
|
419
424
|
--gog-space-8: calc(8px * var(--gog-density));
|
|
420
|
-
--gog-space-10: calc(10px * var(--gog-density));
|
|
421
425
|
--gog-space-12: calc(12px * var(--gog-density));
|
|
422
|
-
--gog-space-14: calc(14px * var(--gog-density));
|
|
423
426
|
--gog-space-16: calc(16px * var(--gog-density));
|
|
424
|
-
--gog-space-18: calc(18px * var(--gog-density));
|
|
425
427
|
--gog-space-20: calc(20px * var(--gog-density));
|
|
426
428
|
--gog-space-24: calc(24px * var(--gog-density));
|
|
427
429
|
--gog-space-28: calc(28px * var(--gog-density));
|
|
428
430
|
--gog-space-32: calc(32px * var(--gog-density));
|
|
431
|
+
/* 21.11.0. Added because the optical ratio requires it, not because a design asked: a control
|
|
432
|
+
with 20px of vertical padding needs exactly 40px horizontal, and `slg` is that control on
|
|
433
|
+
`gog-button`, `gog-inputfield` and every field that shares their tier. The scale had 32 and
|
|
434
|
+
then jumped to 48. */
|
|
435
|
+
--gog-space-40: calc(40px * var(--gog-density));
|
|
429
436
|
--gog-space-48: calc(48px * var(--gog-density));
|
|
430
437
|
--gog-space-xs: var(--gog-space-4);
|
|
431
438
|
--gog-space-sm: var(--gog-space-8);
|
|
432
439
|
--gog-space-md: var(--gog-space-16);
|
|
433
440
|
--gog-space-lg: var(--gog-space-24);
|
|
434
441
|
--gog-space-2xl: var(--gog-space-48);
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
442
|
+
/* The shared control tier, on the 4px grid at a ratio of exactly 2.0 (styling.instructions.md,
|
|
443
|
+
law 3). It was 10/14, a ratio of 1.40; `--gog-field-md-padding-*` derives from it, so this
|
|
444
|
+
pair is what an `md` input, select, multiselect, autocomplete and datepicker are padded by. */
|
|
445
|
+
--gog-control-padding-y: var(--gog-space-12);
|
|
446
|
+
--gog-control-padding-x: var(--gog-space-24);
|
|
447
|
+
/* One value, all four sides: this is the padding a checkable control's `<label>` carries around
|
|
448
|
+
its box, and it is part of the pointer target — a 12px `xsm` box inside 8px of padding is a
|
|
449
|
+
28px target, which is how the smallest checkbox clears WCAG 2.5.8 without growing. */
|
|
450
|
+
--gog-control-checkbox-padding: var(--gog-space-8);
|
|
438
451
|
--gog-field-xsm-padding-y: var(--gog-space-4);
|
|
439
452
|
--gog-field-xsm-padding-x: var(--gog-space-8);
|
|
440
|
-
--gog-field-sm-padding-y: var(--gog-space-
|
|
441
|
-
--gog-field-sm-padding-x: var(--gog-space-
|
|
442
|
-
--gog-field-lg-padding-y: var(--gog-space-
|
|
443
|
-
--gog-field-lg-padding-x: var(--gog-space-
|
|
444
|
-
--gog-field-slg-padding-y: var(--gog-space-
|
|
445
|
-
--gog-field-slg-padding-x: var(--gog-space-
|
|
453
|
+
--gog-field-sm-padding-y: var(--gog-space-8);
|
|
454
|
+
--gog-field-sm-padding-x: var(--gog-space-16);
|
|
455
|
+
--gog-field-lg-padding-y: var(--gog-space-16);
|
|
456
|
+
--gog-field-lg-padding-x: var(--gog-space-32);
|
|
457
|
+
--gog-field-slg-padding-y: var(--gog-space-20);
|
|
458
|
+
--gog-field-slg-padding-x: var(--gog-space-40);
|
|
446
459
|
--gog-field-float-label-over-gap: var(--gog-space-8);
|
|
447
|
-
--gog-toast-gap: var(--gog-space-
|
|
460
|
+
--gog-toast-gap: var(--gog-space-12);
|
|
448
461
|
--gog-toast-stack-padding: var(--gog-space-16);
|
|
449
|
-
|
|
462
|
+
/* L9 (docs/component-geometry.md, "D7 — taken"): the message wraps, so its cap is a measure —
|
|
463
|
+
53ch at --gog-toast-message-font-size (14px), the nearest whole character to today's 400px so
|
|
464
|
+
this changes robustness to a font-size change, not the pixels anyone sees today. L8's viewport
|
|
465
|
+
exception is layered on top: the margin reads --gog-toast-stack-padding above, the container's
|
|
466
|
+
own edge inset, rather than a new number. */
|
|
467
|
+
--gog-toast-max-width: min(53ch, calc(100vw - var(--gog-toast-stack-padding) * 2));
|
|
468
|
+
--gog-field-xsm-icon-offset: var(--gog-space-8);
|
|
450
469
|
--gog-field-sm-icon-offset: var(--gog-space-8);
|
|
451
|
-
--gog-field-lg-icon-offset: var(--gog-space-
|
|
452
|
-
--gog-field-slg-icon-offset: var(--gog-space-
|
|
453
|
-
--gog-control-icon-offset: var(--gog-space-
|
|
470
|
+
--gog-field-lg-icon-offset: var(--gog-space-16);
|
|
471
|
+
--gog-field-slg-icon-offset: var(--gog-space-20);
|
|
472
|
+
--gog-control-icon-offset: var(--gog-space-12);
|
|
454
473
|
--gog-elevated-surface-color: var(--gog-surface-color);
|
|
455
474
|
--gog-panel-radius: calc(var(--gog-radius) + 8px);
|
|
456
475
|
--gog-field-xsm-font-size: var(--gog-text-xs);
|
|
@@ -460,6 +479,16 @@
|
|
|
460
479
|
literals-only `:root` freezes to that scope's scale (rule C). */
|
|
461
480
|
--gog-field-slg-font-size: var(--gog-text-slg);
|
|
462
481
|
|
|
482
|
+
/* Leading for the three kinds of text every field renders, declared once and aliased by each
|
|
483
|
+
component the way the padding and float-label tiers above already are. A block that sets a
|
|
484
|
+
font size sets its leading (law 4): inheriting it while changing the size moves the ratio
|
|
485
|
+
silently, which is the thing the law guards. Roles, from
|
|
486
|
+
`docs/component-geometry.md` — the value in the field itself is one UI line whose box is the
|
|
487
|
+
row height; a label and an error message may both wrap beside their control. */
|
|
488
|
+
--gog-field-line-height: var(--gog-line-height-normal);
|
|
489
|
+
--gog-field-label-line-height: var(--gog-line-height-snug);
|
|
490
|
+
--gog-field-error-line-height: var(--gog-line-height-snug);
|
|
491
|
+
|
|
463
492
|
--gog-field-md-padding-y: var(--gog-control-padding-y);
|
|
464
493
|
--gog-field-md-padding-x: var(--gog-control-padding-x);
|
|
465
494
|
|
|
@@ -535,41 +564,59 @@
|
|
|
535
564
|
--gog-accordion-xsm-padding-y: var(--gog-space-4);
|
|
536
565
|
--gog-accordion-xsm-padding-x: var(--gog-space-8);
|
|
537
566
|
--gog-accordion-xsm-font-size: var(--gog-text-xs);
|
|
567
|
+
/* The header label is one UI line whose box is the row height (law 4, role ui-line). */
|
|
568
|
+
--gog-accordion-line-height: var(--gog-line-height-normal);
|
|
538
569
|
--gog-accordion-xsm-letter-spacing: 0.2px;
|
|
539
|
-
--gog-accordion-xsm-content-gap: var(--gog-space-
|
|
570
|
+
--gog-accordion-xsm-content-gap: var(--gog-space-4);
|
|
540
571
|
--gog-accordion-xsm-body-font-size: var(--gog-text-xs);
|
|
541
572
|
--gog-accordion-xsm-body-line-height: var(--gog-line-height-relaxed);
|
|
542
573
|
--gog-accordion-xsm-body-padding-top: var(--gog-space-4);
|
|
543
|
-
--gog-accordion-xsm-body-padding-bottom: var(--gog-space-
|
|
544
|
-
--gog-accordion-xsm-chevron-size:
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
574
|
+
--gog-accordion-xsm-body-padding-bottom: var(--gog-space-8);
|
|
575
|
+
--gog-accordion-xsm-chevron-size: 1.4em;
|
|
576
|
+
/* The chevron is a ratio of the header's own type, not a px ladder of its own. It had been
|
|
577
|
+
10/12/14/16/18px of glyph basis inside an 11/13/15/18/20px box, beside a label in rem -- so
|
|
578
|
+
raising the browser's text size grew the label and left the chevron where it was, and the
|
|
579
|
+
box/label ratio drifted 0.92 to 1.29 across the five sizes.
|
|
580
|
+
|
|
581
|
+
Two bugs came out of writing it as a ratio. The box was *smaller than its glyph at every
|
|
582
|
+
size*: `gog-icon` renders at `--gog-icon-size: 1.2em` of this font size, so the mark was
|
|
583
|
+
12/14.4/16.8/19.2/21.6px inside a box of 11/13/15/18/20 and overflowed it everywhere. And
|
|
584
|
+
the five sizes had five ratios where they needed one.
|
|
585
|
+
|
|
586
|
+
`1em` makes this the em basis rather than the glyph size, so the mark is 1.2em of the header
|
|
587
|
+
and the 1.4em box surrounds it. All five steps hold the same ratio and still render five
|
|
588
|
+
different sizes, because the header's type differs -- the tokens stay per-size so an override
|
|
589
|
+
keeps working. */
|
|
590
|
+
--gog-accordion-xsm-chevron-font-size: 1em;
|
|
591
|
+
/* A glyph in its own box: leading would push it off the centre it is placed on. */
|
|
592
|
+
--gog-accordion-chevron-line-height: var(--gog-line-height-none);
|
|
593
|
+
|
|
594
|
+
--gog-accordion-sm-padding-y: var(--gog-space-8);
|
|
595
|
+
--gog-accordion-sm-padding-x: var(--gog-space-16);
|
|
549
596
|
--gog-accordion-sm-font-size: var(--gog-text-xs);
|
|
550
597
|
--gog-accordion-sm-letter-spacing: 0.4px;
|
|
551
|
-
--gog-accordion-sm-content-gap: var(--gog-space-
|
|
598
|
+
--gog-accordion-sm-content-gap: var(--gog-space-4);
|
|
552
599
|
--gog-accordion-sm-body-font-size: var(--gog-text-xs);
|
|
553
600
|
--gog-accordion-sm-body-line-height: var(--gog-accordion-body-line-height);
|
|
554
|
-
--gog-accordion-sm-body-padding-top: var(--gog-space-
|
|
601
|
+
--gog-accordion-sm-body-padding-top: var(--gog-space-8);
|
|
555
602
|
--gog-accordion-sm-body-padding-bottom: var(--gog-space-8);
|
|
556
|
-
--gog-accordion-sm-chevron-size:
|
|
557
|
-
--gog-accordion-sm-chevron-font-size:
|
|
603
|
+
--gog-accordion-sm-chevron-size: 1.4em;
|
|
604
|
+
--gog-accordion-sm-chevron-font-size: 1em;
|
|
558
605
|
|
|
559
|
-
--gog-accordion-md-padding-y: var(--gog-space-
|
|
560
|
-
--gog-accordion-md-padding-x: var(--gog-space-
|
|
606
|
+
--gog-accordion-md-padding-y: var(--gog-space-12);
|
|
607
|
+
--gog-accordion-md-padding-x: var(--gog-space-24);
|
|
561
608
|
--gog-accordion-md-font-size: var(--gog-text-xs);
|
|
562
609
|
--gog-accordion-md-letter-spacing: 0.8px;
|
|
563
|
-
--gog-accordion-md-content-gap: var(--gog-space-
|
|
610
|
+
--gog-accordion-md-content-gap: var(--gog-space-4);
|
|
564
611
|
--gog-accordion-md-body-font-size: var(--gog-text-sm);
|
|
565
612
|
--gog-accordion-md-body-line-height: var(--gog-accordion-body-line-height);
|
|
566
613
|
--gog-accordion-md-body-padding-top: var(--gog-space-8);
|
|
567
614
|
--gog-accordion-md-body-padding-bottom: var(--gog-space-12);
|
|
568
|
-
--gog-accordion-md-chevron-size:
|
|
569
|
-
--gog-accordion-md-chevron-font-size:
|
|
615
|
+
--gog-accordion-md-chevron-size: 1.4em;
|
|
616
|
+
--gog-accordion-md-chevron-font-size: 1em;
|
|
570
617
|
|
|
571
|
-
--gog-accordion-lg-padding-y: var(--gog-space-
|
|
572
|
-
--gog-accordion-lg-padding-x: var(--gog-space-
|
|
618
|
+
--gog-accordion-lg-padding-y: var(--gog-space-16);
|
|
619
|
+
--gog-accordion-lg-padding-x: var(--gog-space-32);
|
|
573
620
|
--gog-accordion-lg-font-size: var(--gog-text-sm);
|
|
574
621
|
--gog-accordion-lg-letter-spacing: 0.8px;
|
|
575
622
|
--gog-accordion-lg-content-gap: var(--gog-space-4);
|
|
@@ -577,11 +624,11 @@
|
|
|
577
624
|
--gog-accordion-lg-body-line-height: var(--gog-accordion-body-line-height);
|
|
578
625
|
--gog-accordion-lg-body-padding-top: var(--gog-space-12);
|
|
579
626
|
--gog-accordion-lg-body-padding-bottom: var(--gog-space-16);
|
|
580
|
-
--gog-accordion-lg-chevron-size:
|
|
581
|
-
--gog-accordion-lg-chevron-font-size:
|
|
627
|
+
--gog-accordion-lg-chevron-size: 1.4em;
|
|
628
|
+
--gog-accordion-lg-chevron-font-size: 1em;
|
|
582
629
|
|
|
583
|
-
--gog-accordion-slg-padding-y: var(--gog-space-
|
|
584
|
-
--gog-accordion-slg-padding-x: var(--gog-space-
|
|
630
|
+
--gog-accordion-slg-padding-y: var(--gog-space-20);
|
|
631
|
+
--gog-accordion-slg-padding-x: var(--gog-space-40);
|
|
585
632
|
--gog-accordion-slg-font-size: var(--gog-text-md);
|
|
586
633
|
--gog-accordion-slg-letter-spacing: 0.8px;
|
|
587
634
|
--gog-accordion-slg-content-gap: var(--gog-space-4);
|
|
@@ -589,8 +636,8 @@
|
|
|
589
636
|
--gog-accordion-slg-body-line-height: var(--gog-accordion-body-line-height);
|
|
590
637
|
--gog-accordion-slg-body-padding-top: var(--gog-space-16);
|
|
591
638
|
--gog-accordion-slg-body-padding-bottom: var(--gog-space-20);
|
|
592
|
-
--gog-accordion-slg-chevron-size:
|
|
593
|
-
--gog-accordion-slg-chevron-font-size:
|
|
639
|
+
--gog-accordion-slg-chevron-size: 1.4em;
|
|
640
|
+
--gog-accordion-slg-chevron-font-size: 1em;
|
|
594
641
|
|
|
595
642
|
/* ── Collapsible ───────────────────────────────────────────────────────────
|
|
596
643
|
No portal, no owned markup — see utilities.css for the actual `.gog-collapsible__*`
|
|
@@ -614,10 +661,10 @@
|
|
|
614
661
|
`--gog-button-font-size` are intentionally NOT declared — they are the per-instance
|
|
615
662
|
escape hatch the variant/size classes fall back through. */
|
|
616
663
|
--gog-button-xsm-padding: var(--gog-space-4) var(--gog-space-8);
|
|
617
|
-
--gog-button-sm-padding: var(--gog-space-8) var(--gog-space-
|
|
618
|
-
--gog-button-md-padding: var(--gog-space-12) var(--gog-space-
|
|
619
|
-
--gog-button-lg-padding: var(--gog-space-16) var(--gog-space-
|
|
620
|
-
--gog-button-slg-padding: var(--gog-space-20) var(--gog-space-
|
|
664
|
+
--gog-button-sm-padding: var(--gog-space-8) var(--gog-space-16);
|
|
665
|
+
--gog-button-md-padding: var(--gog-space-12) var(--gog-space-24);
|
|
666
|
+
--gog-button-lg-padding: var(--gog-space-16) var(--gog-space-32);
|
|
667
|
+
--gog-button-slg-padding: var(--gog-space-20) var(--gog-space-40);
|
|
621
668
|
--gog-button-xsm-font-size: var(--gog-text-xs);
|
|
622
669
|
--gog-button-sm-font-size: var(--gog-text-sm);
|
|
623
670
|
--gog-button-md-font-size: var(--gog-text-md);
|
|
@@ -866,6 +913,7 @@
|
|
|
866
913
|
--gog-calendar-weekday-padding: var(--gog-space-4) 0;
|
|
867
914
|
--gog-calendar-weekday-color: var(--gog-muted-text-color);
|
|
868
915
|
--gog-calendar-weekday-font-size: var(--gog-text-xs);
|
|
916
|
+
--gog-calendar-weekday-line-height: var(--gog-line-height-none);
|
|
869
917
|
--gog-calendar-weekday-font-weight: var(--gog-font-weight-semibold);
|
|
870
918
|
--gog-calendar-weekday-text-transform: var(--gog-text-transform);
|
|
871
919
|
--gog-calendar-day-radius: calc(var(--gog-radius) - 2px);
|
|
@@ -895,12 +943,12 @@
|
|
|
895
943
|
--gog-calendar-divider-width: 1px;
|
|
896
944
|
--gog-calendar-divider-style: solid;
|
|
897
945
|
--gog-calendar-divider-color: var(--gog-border-color);
|
|
898
|
-
--gog-calendar-time-gap: var(--gog-space-
|
|
899
|
-
--gog-calendar-time-margin: var(--gog-space-
|
|
946
|
+
--gog-calendar-time-gap: var(--gog-space-8);
|
|
947
|
+
--gog-calendar-time-margin: var(--gog-space-12);
|
|
900
948
|
--gog-calendar-time-input-width: 3.5rem;
|
|
901
|
-
--gog-calendar-time-input-padding: var(--gog-space-4) var(--gog-space-
|
|
949
|
+
--gog-calendar-time-input-padding: var(--gog-space-4) var(--gog-space-8);
|
|
902
950
|
--gog-calendar-time-input-bg: var(--gog-background-color);
|
|
903
|
-
--gog-calendar-action-padding: var(--gog-space-4) var(--gog-space-
|
|
951
|
+
--gog-calendar-action-padding: var(--gog-space-4) var(--gog-space-8);
|
|
904
952
|
--gog-calendar-footer-gap: var(--gog-space-8);
|
|
905
953
|
--gog-calendar-xsm-font-size: var(--gog-text-xs);
|
|
906
954
|
--gog-calendar-xsm-day-size: 24px;
|
|
@@ -911,6 +959,7 @@
|
|
|
911
959
|
--gog-calendar-lg-font-size: var(--gog-text-md);
|
|
912
960
|
--gog-calendar-lg-day-size: 40px;
|
|
913
961
|
--gog-calendar-slg-font-size: var(--gog-text-lg);
|
|
962
|
+
--gog-calendar-line-height: var(--gog-line-height-normal);
|
|
914
963
|
--gog-calendar-slg-day-size: 46px;
|
|
915
964
|
|
|
916
965
|
/* ── Card ──────────────────────────────────────────────────────────────────
|
|
@@ -955,17 +1004,17 @@
|
|
|
955
1004
|
--gog-card-footer-padding-top: var(--gog-space-sm);
|
|
956
1005
|
|
|
957
1006
|
--gog-card-xsm-padding-y: var(--gog-space-8);
|
|
958
|
-
--gog-card-xsm-padding-x: var(--gog-space-
|
|
959
|
-
--gog-card-xsm-gap: var(--gog-space-
|
|
1007
|
+
--gog-card-xsm-padding-x: var(--gog-space-12);
|
|
1008
|
+
--gog-card-xsm-gap: var(--gog-space-8);
|
|
960
1009
|
--gog-card-sm-padding-y: var(--gog-space-12);
|
|
961
|
-
--gog-card-sm-padding-x: var(--gog-space-
|
|
1010
|
+
--gog-card-sm-padding-x: var(--gog-space-16);
|
|
962
1011
|
--gog-card-sm-gap: var(--gog-space-sm);
|
|
963
1012
|
--gog-card-md-padding-y: var(--gog-space-md);
|
|
964
1013
|
--gog-card-md-padding-x: var(--gog-space-20);
|
|
965
1014
|
--gog-card-md-gap: var(--gog-space-12);
|
|
966
1015
|
--gog-card-lg-padding-y: var(--gog-space-20);
|
|
967
1016
|
--gog-card-lg-padding-x: var(--gog-space-lg);
|
|
968
|
-
--gog-card-lg-gap: var(--gog-space-
|
|
1017
|
+
--gog-card-lg-gap: var(--gog-space-16);
|
|
969
1018
|
--gog-card-slg-padding-y: var(--gog-space-28);
|
|
970
1019
|
--gog-card-slg-padding-x: var(--gog-space-32);
|
|
971
1020
|
--gog-card-slg-gap: var(--gog-space-md);
|
|
@@ -974,7 +1023,7 @@
|
|
|
974
1023
|
Box/label/icon size and padding come from the `--gog-control-checkbox-*` scale;
|
|
975
1024
|
checkbox.component.ts maps the `size` input onto the host. */
|
|
976
1025
|
--gog-checkbox-font-family: var(--gog-font-body);
|
|
977
|
-
--gog-checkbox-gap: var(--gog-space-
|
|
1026
|
+
--gog-checkbox-gap: var(--gog-space-12);
|
|
978
1027
|
--gog-checkbox-radius: var(--gog-radius);
|
|
979
1028
|
--gog-checkbox-border-width: var(--gog-control-border-width);
|
|
980
1029
|
--gog-checkbox-border-style: var(--gog-control-border-style);
|
|
@@ -983,6 +1032,8 @@
|
|
|
983
1032
|
--gog-checkbox-checked-bg: var(--gog-accent-color);
|
|
984
1033
|
--gog-checkbox-checked-border: var(--gog-accent-color);
|
|
985
1034
|
--gog-checkbox-icon-color: var(--gog-accent-text-color, var(--gog-primary-color));
|
|
1035
|
+
/* A glyph in its own box: role label-none, so the box is the glyph and not the font. */
|
|
1036
|
+
--gog-checkbox-icon-line-height: var(--gog-line-height-none);
|
|
986
1037
|
--gog-checkbox-label-color: var(--gog-muted-text-color);
|
|
987
1038
|
--gog-checkbox-label-line-height: var(--gog-line-height-snug);
|
|
988
1039
|
--gog-checkbox-focus-ring: var(--gog-accent-pale);
|
|
@@ -998,12 +1049,12 @@
|
|
|
998
1049
|
Box/label size reuse the `--gog-control-checkbox-*` scale (see Checkbox above);
|
|
999
1050
|
radio-group.component.ts maps the `size` input onto the host the same way. */
|
|
1000
1051
|
--gog-radio-font-family: var(--gog-font-body);
|
|
1001
|
-
--gog-radio-group-gap: var(--gog-space-
|
|
1052
|
+
--gog-radio-group-gap: var(--gog-space-12);
|
|
1002
1053
|
--gog-radio-group-label-size: var(--gog-text-sm);
|
|
1003
1054
|
--gog-radio-group-label-color: var(--gog-muted-text-color);
|
|
1004
1055
|
--gog-radio-group-option-gap: var(--gog-space-8);
|
|
1005
1056
|
--gog-radio-group-option-gap-horizontal: var(--gog-space-20);
|
|
1006
|
-
--gog-radio-gap: var(--gog-space-
|
|
1057
|
+
--gog-radio-gap: var(--gog-space-12);
|
|
1007
1058
|
--gog-radio-border-width: var(--gog-control-border-width);
|
|
1008
1059
|
--gog-radio-border-style: var(--gog-control-border-style);
|
|
1009
1060
|
--gog-radio-border-color: var(--gog-accent-dim);
|
|
@@ -1020,6 +1071,7 @@
|
|
|
1020
1071
|
--gog-radio-disabled-opacity: var(--gog-disabled-opacity);
|
|
1021
1072
|
--gog-radio-transition-duration: var(--gog-duration-base);
|
|
1022
1073
|
--gog-radio-error-font-size: var(--gog-text-xs);
|
|
1074
|
+
--gog-radio-error-line-height: var(--gog-field-error-line-height);
|
|
1023
1075
|
--gog-radio-error-color: var(--gog-danger-color);
|
|
1024
1076
|
|
|
1025
1077
|
/* ── Chip ──────────────────────────────────────────────────────────────────
|
|
@@ -1056,9 +1108,9 @@
|
|
|
1056
1108
|
--gog-chip-focus-ring-width: 2px;
|
|
1057
1109
|
--gog-chip-focus-ring-offset: var(--gog-focus-ring-offset);
|
|
1058
1110
|
|
|
1059
|
-
--gog-chip-xsm-font-size:
|
|
1111
|
+
--gog-chip-xsm-font-size: var(--gog-text-2xs);
|
|
1060
1112
|
--gog-chip-xsm-padding-block: var(--gog-space-4);
|
|
1061
|
-
--gog-chip-xsm-padding-inline: var(--gog-space-
|
|
1113
|
+
--gog-chip-xsm-padding-inline: var(--gog-space-8);
|
|
1062
1114
|
--gog-chip-xsm-gap: var(--gog-space-4);
|
|
1063
1115
|
--gog-chip-xsm-avatar-size: 0.875rem;
|
|
1064
1116
|
--gog-chip-xsm-icon-size: 0.6875rem;
|
|
@@ -1067,30 +1119,30 @@
|
|
|
1067
1119
|
--gog-chip-sm-font-size: var(--gog-text-xs);
|
|
1068
1120
|
--gog-chip-sm-padding-block: var(--gog-space-4);
|
|
1069
1121
|
--gog-chip-sm-padding-inline: var(--gog-space-8);
|
|
1070
|
-
--gog-chip-sm-gap: var(--gog-space-
|
|
1122
|
+
--gog-chip-sm-gap: var(--gog-space-8);
|
|
1071
1123
|
--gog-chip-sm-avatar-size: 1rem;
|
|
1072
1124
|
--gog-chip-sm-icon-size: 0.75rem;
|
|
1073
1125
|
--gog-chip-sm-remove-size: 0.875rem;
|
|
1074
1126
|
|
|
1075
1127
|
--gog-chip-md-font-size: var(--gog-text-sm);
|
|
1076
1128
|
--gog-chip-md-padding-block: var(--gog-space-8);
|
|
1077
|
-
--gog-chip-md-padding-inline: var(--gog-space-
|
|
1129
|
+
--gog-chip-md-padding-inline: var(--gog-space-16);
|
|
1078
1130
|
--gog-chip-md-gap: var(--gog-space-8);
|
|
1079
1131
|
--gog-chip-md-avatar-size: 1.25rem;
|
|
1080
1132
|
--gog-chip-md-icon-size: 0.875rem;
|
|
1081
1133
|
--gog-chip-md-remove-size: 1rem;
|
|
1082
1134
|
|
|
1083
1135
|
--gog-chip-lg-font-size: var(--gog-text-md);
|
|
1084
|
-
--gog-chip-lg-padding-block: var(--gog-space-
|
|
1085
|
-
--gog-chip-lg-padding-inline: var(--gog-space-
|
|
1086
|
-
--gog-chip-lg-gap: var(--gog-space-
|
|
1136
|
+
--gog-chip-lg-padding-block: var(--gog-space-12);
|
|
1137
|
+
--gog-chip-lg-padding-inline: var(--gog-space-24);
|
|
1138
|
+
--gog-chip-lg-gap: var(--gog-space-12);
|
|
1087
1139
|
--gog-chip-lg-avatar-size: 1.5rem;
|
|
1088
1140
|
--gog-chip-lg-icon-size: 1rem;
|
|
1089
1141
|
--gog-chip-lg-remove-size: 1.125rem;
|
|
1090
1142
|
|
|
1091
1143
|
--gog-chip-slg-font-size: var(--gog-text-lg);
|
|
1092
1144
|
--gog-chip-slg-padding-block: var(--gog-space-12);
|
|
1093
|
-
--gog-chip-slg-padding-inline: var(--gog-space-
|
|
1145
|
+
--gog-chip-slg-padding-inline: var(--gog-space-24);
|
|
1094
1146
|
--gog-chip-slg-gap: var(--gog-space-12);
|
|
1095
1147
|
--gog-chip-slg-avatar-size: 1.75rem;
|
|
1096
1148
|
--gog-chip-slg-icon-size: 1.125rem;
|
|
@@ -1115,13 +1167,20 @@
|
|
|
1115
1167
|
--gog-dialog-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
|
|
1116
1168
|
--gog-dialog-min-width: 320px;
|
|
1117
1169
|
--gog-dialog-max-height: 90vh;
|
|
1118
|
-
--gog-dialog-header-padding: var(--gog-space-16) var(--gog-space-20) var(--gog-space-
|
|
1170
|
+
--gog-dialog-header-padding: var(--gog-space-16) var(--gog-space-20) var(--gog-space-16);
|
|
1119
1171
|
--gog-dialog-header-gap: var(--gog-space-12);
|
|
1120
1172
|
--gog-dialog-header-border-color: var(--gog-border-color);
|
|
1173
|
+
/* `.gog-dialog__title` is the library's only <h2>; before this it rendered at the browser's
|
|
1174
|
+
default 24px bold rather than a stated size. --gog-text-xl is exactly today's rendered size,
|
|
1175
|
+
so this states an accident as a declaration rather than changing anything visible. `snug`
|
|
1176
|
+
(1.3) is law 4's `heading` role (docs/component-geometry.md, D4). */
|
|
1177
|
+
--gog-dialog-title-font-size: var(--gog-text-xl);
|
|
1178
|
+
--gog-dialog-title-line-height: var(--gog-line-height-snug);
|
|
1121
1179
|
--gog-dialog-body-padding: var(--gog-space-20);
|
|
1122
1180
|
--gog-dialog-body-max-height: calc(var(--gog-dialog-max-height) - 60px);
|
|
1123
1181
|
--gog-dialog-close-size: 2rem;
|
|
1124
1182
|
--gog-dialog-close-font-size: var(--gog-text-sm);
|
|
1183
|
+
--gog-dialog-close-line-height: var(--gog-line-height-none);
|
|
1125
1184
|
--gog-dialog-close-color: var(--gog-muted-text-color);
|
|
1126
1185
|
--gog-dialog-close-hover-color: var(--gog-text-color);
|
|
1127
1186
|
--gog-dialog-close-hover-bg: var(--gog-hover-color);
|
|
@@ -1133,7 +1192,37 @@
|
|
|
1133
1192
|
/* Confirmation dialog */
|
|
1134
1193
|
--gog-confirmation-dialog-gap: var(--gog-space-12);
|
|
1135
1194
|
--gog-confirmation-dialog-min-width: 320px;
|
|
1136
|
-
|
|
1195
|
+
/* The title and description carried dead utility classes (`heading-md` / `body-sm`) with no
|
|
1196
|
+
CSS rule anywhere in the library, so both rendered at whatever the browser inherited rather
|
|
1197
|
+
than a step of the type scale (docs/backlog.md, fixed here). `lg` for the title rather than
|
|
1198
|
+
`md`: the dead class named `md`, but it never ran, so it is not evidence of intent — 18.72px
|
|
1199
|
+
is what actually rendered, and --gog-text-lg (18px) is the nearest step to that, so this
|
|
1200
|
+
states what shipped rather than silently shrinking every confirmation dialog. The description
|
|
1201
|
+
takes `sm`, the size every other muted secondary line in the library already uses. */
|
|
1202
|
+
--gog-confirmation-dialog-title-font-size: var(--gog-text-lg);
|
|
1203
|
+
--gog-confirmation-dialog-title-line-height: var(--gog-line-height-snug);
|
|
1204
|
+
--gog-confirmation-dialog-description-font-size: var(--gog-text-sm);
|
|
1205
|
+
--gog-confirmation-dialog-description-line-height: var(--gog-line-height-relaxed);
|
|
1206
|
+
/* L9 (docs/component-geometry.md, "D7 — taken"): the description wraps, so its cap is a
|
|
1207
|
+
measure — 51ch at 16px, the nearest whole character to today's 440px, so this changes
|
|
1208
|
+
robustness to a font-size change, not the pixels anyone sees today. The 16px is
|
|
1209
|
+
`.confirm-dialog`'s own inherited size (it declares no font-size of its own; see
|
|
1210
|
+
confirmation-dialog.component.scss), not the description's — the description now reads
|
|
1211
|
+
--gog-confirmation-dialog-description-font-size (14px, fixed above), but a `ch` cap resolves
|
|
1212
|
+
against the element `max-width` is declared on, never a descendant's, so that change does not
|
|
1213
|
+
move this number. What it changes is the *measure* the 440px produces against a 14px
|
|
1214
|
+
description: 439.9px ÷ (0.5391 × 14px) ≈ 58ch by hand (scripts/survey-measure.mjs's own
|
|
1215
|
+
`chCount` line is a tautology for this token — it resolves against `.confirm-dialog`'s 16px,
|
|
1216
|
+
not the description's font; see that script's reason string for the full account), still
|
|
1217
|
+
inside L9's 45–75 band, so no token value here needs to change.
|
|
1218
|
+
|
|
1219
|
+
L8's viewport clamp is deliberately NOT here, unlike the other three overlays: this renders
|
|
1220
|
+
inside .gog-dialog__panel, which already caps itself at 90vw (an inline style in
|
|
1221
|
+
dialog.component.html), and .gog-dialog__body spends --gog-dialog-body-padding a side inside
|
|
1222
|
+
that. The width available here is therefore `0.9 * 100vw - 40px`, tighter than any
|
|
1223
|
+
`100vw - margin` clamp at every viewport above 80px, so a second clamp on the child could
|
|
1224
|
+
never bind. An inert declaration is the thing this repo keeps finding rather than shipping. */
|
|
1225
|
+
--gog-confirmation-dialog-max-width: 51ch;
|
|
1137
1226
|
--gog-confirmation-dialog-color: var(--gog-text-color);
|
|
1138
1227
|
--gog-confirmation-dialog-description-color: var(--gog-muted-text-color);
|
|
1139
1228
|
--gog-confirmation-dialog-actions-gap: var(--gog-space-sm);
|
|
@@ -1150,6 +1239,7 @@
|
|
|
1150
1239
|
--gog-autocomplete-gap: var(--gog-space-4);
|
|
1151
1240
|
--gog-autocomplete-label-color: var(--gog-accent-color);
|
|
1152
1241
|
--gog-autocomplete-label-font-size: var(--gog-text-sm);
|
|
1242
|
+
--gog-autocomplete-label-line-height: var(--gog-field-label-line-height);
|
|
1153
1243
|
--gog-autocomplete-label-font-weight: var(--gog-font-weight-semibold);
|
|
1154
1244
|
--gog-autocomplete-label-letter-spacing: var(--gog-letter-spacing);
|
|
1155
1245
|
--gog-autocomplete-label-text-transform: var(--gog-text-transform);
|
|
@@ -1171,12 +1261,13 @@
|
|
|
1171
1261
|
--gog-autocomplete-error-border-color: var(--gog-danger-color);
|
|
1172
1262
|
--gog-autocomplete-error-font-family: var(--gog-font-body);
|
|
1173
1263
|
--gog-autocomplete-error-font-size: var(--gog-text-xs);
|
|
1264
|
+
--gog-autocomplete-error-line-height: var(--gog-field-error-line-height);
|
|
1174
1265
|
/* Floor for an auto-width field, so [fullWidth]="false" cannot collapse it to its chrome. */
|
|
1175
1266
|
--gog-autocomplete-min-width: 120px;
|
|
1176
1267
|
/* Trailing chrome: spinner and clear button, clear outermost — the arrangement the other
|
|
1177
1268
|
dropdowns settled on, so all of them line up in a form. */
|
|
1178
1269
|
--gog-autocomplete-actions-inset: var(--gog-control-icon-offset);
|
|
1179
|
-
--gog-autocomplete-actions-gap: var(--gog-space-
|
|
1270
|
+
--gog-autocomplete-actions-gap: var(--gog-space-8);
|
|
1180
1271
|
/* Right padding on the input, reserving room for the actions above. */
|
|
1181
1272
|
--gog-autocomplete-actions-reserve: 40px;
|
|
1182
1273
|
--gog-autocomplete-clear-color: var(--gog-autocomplete-placeholder-color);
|
|
@@ -1190,14 +1281,21 @@
|
|
|
1190
1281
|
--gog-autocomplete-panel-border-style: var(--gog-panel-border-style);
|
|
1191
1282
|
--gog-autocomplete-panel-border-color: var(--gog-border-color);
|
|
1192
1283
|
--gog-autocomplete-panel-radius: var(--gog-radius);
|
|
1193
|
-
--gog-autocomplete-panel-gap: var(--gog-space-
|
|
1284
|
+
--gog-autocomplete-panel-gap: var(--gog-space-4);
|
|
1194
1285
|
--gog-autocomplete-panel-max-height: 260px;
|
|
1195
1286
|
/* Ceiling for a content-sized panel, so one very long option cannot span the viewport. */
|
|
1196
1287
|
--gog-autocomplete-panel-max-width: 420px;
|
|
1197
1288
|
--gog-autocomplete-options-padding: var(--gog-space-4);
|
|
1198
|
-
--gog-autocomplete-option-padding: var(--gog-space-8) var(--gog-space-
|
|
1199
|
-
|
|
1200
|
-
|
|
1289
|
+
--gog-autocomplete-option-padding: var(--gog-space-8) var(--gog-space-16);
|
|
1290
|
+
/* Concentric with the panel: the option row is inset by the list's own padding, so its corner
|
|
1291
|
+
is the panel's corner minus that distance. Written as the two tokens rather than as
|
|
1292
|
+
`calc(var(--gog-radius) - 4px)`, which was right only at `--gog-density: 1` -- the padding
|
|
1293
|
+
scales with density and a restated `4px` does not. */
|
|
1294
|
+
--gog-autocomplete-option-radius: max(
|
|
1295
|
+
0px,
|
|
1296
|
+
calc(var(--gog-autocomplete-panel-radius) - var(--gog-autocomplete-options-padding))
|
|
1297
|
+
);
|
|
1298
|
+
--gog-autocomplete-option-gap: var(--gog-space-12);
|
|
1201
1299
|
--gog-autocomplete-option-color: var(--gog-text-color);
|
|
1202
1300
|
--gog-autocomplete-option-hover-bg: var(--gog-hover-color);
|
|
1203
1301
|
--gog-autocomplete-option-press-bg: var(--gog-border-color);
|
|
@@ -1214,6 +1312,7 @@
|
|
|
1214
1312
|
--gog-autocomplete-option-height: 36px;
|
|
1215
1313
|
--gog-autocomplete-empty-color: var(--gog-autocomplete-placeholder-color);
|
|
1216
1314
|
--gog-autocomplete-empty-font-size: var(--gog-text-sm);
|
|
1315
|
+
--gog-autocomplete-empty-line-height: var(--gog-line-height-normal);
|
|
1217
1316
|
--gog-autocomplete-float-label-reserve: var(--gog-field-float-label-reserve);
|
|
1218
1317
|
--gog-autocomplete-float-label-in-top: var(--gog-field-float-label-in-top);
|
|
1219
1318
|
--gog-autocomplete-float-label-over-gap: var(--gog-field-float-label-over-gap);
|
|
@@ -1230,8 +1329,12 @@
|
|
|
1230
1329
|
--gog-badge-dot-size: 0.5rem;
|
|
1231
1330
|
--gog-badge-padding-inline: var(--gog-space-4);
|
|
1232
1331
|
--gog-badge-radius: 999px;
|
|
1233
|
-
/* How far the badge hangs outside its host's corner.
|
|
1234
|
-
|
|
1332
|
+
/* How far the badge hangs outside its host's corner. `space-8` rather than the `space-6` it
|
|
1333
|
+
was: every off-grid step this library had sat exactly halfway between two grid steps, so the
|
|
1334
|
+
4px grid made the tie-break a real decision, and it rounds up (docs/component-geometry.md,
|
|
1335
|
+
D3b). Here that is also the better answer on its own terms — a 20px badge hanging 8px out
|
|
1336
|
+
clears the host's corner radius at `--gog-radius: 8px`, which 6px did not quite do. */
|
|
1337
|
+
--gog-badge-offset: var(--gog-space-8);
|
|
1235
1338
|
--gog-badge-border-width: 0;
|
|
1236
1339
|
--gog-badge-border-style: var(--gog-border-style);
|
|
1237
1340
|
--gog-badge-border-color: transparent;
|
|
@@ -1259,6 +1362,7 @@
|
|
|
1259
1362
|
--gog-datepicker-gap: var(--gog-space-4);
|
|
1260
1363
|
--gog-datepicker-label-color: var(--gog-accent-color);
|
|
1261
1364
|
--gog-datepicker-label-font-size: var(--gog-text-sm);
|
|
1365
|
+
--gog-datepicker-label-line-height: var(--gog-field-label-line-height);
|
|
1262
1366
|
--gog-datepicker-label-letter-spacing: var(--gog-letter-spacing);
|
|
1263
1367
|
--gog-datepicker-label-text-transform: var(--gog-text-transform);
|
|
1264
1368
|
--gog-datepicker-field-bg: var(--gog-surface-color);
|
|
@@ -1279,9 +1383,10 @@
|
|
|
1279
1383
|
--gog-datepicker-error-border-color: var(--gog-danger-color);
|
|
1280
1384
|
--gog-datepicker-error-font-family: var(--gog-font-body);
|
|
1281
1385
|
--gog-datepicker-error-font-size: var(--gog-text-xs);
|
|
1386
|
+
--gog-datepicker-error-line-height: var(--gog-field-error-line-height);
|
|
1282
1387
|
--gog-datepicker-min-width: 150px;
|
|
1283
1388
|
--gog-datepicker-actions-inset: var(--gog-control-icon-offset);
|
|
1284
|
-
--gog-datepicker-actions-gap: var(--gog-space-
|
|
1389
|
+
--gog-datepicker-actions-gap: var(--gog-space-8);
|
|
1285
1390
|
/* Right padding on the input, reserving room for the calendar and clear buttons. */
|
|
1286
1391
|
--gog-datepicker-actions-reserve: 40px;
|
|
1287
1392
|
--gog-datepicker-icon-color: var(--gog-accent-color);
|
|
@@ -1295,7 +1400,7 @@
|
|
|
1295
1400
|
--gog-datepicker-panel-border-style: var(--gog-panel-border-style);
|
|
1296
1401
|
--gog-datepicker-panel-border-color: var(--gog-border-color);
|
|
1297
1402
|
--gog-datepicker-panel-radius: var(--gog-radius);
|
|
1298
|
-
--gog-datepicker-panel-gap: var(--gog-space-
|
|
1403
|
+
--gog-datepicker-panel-gap: var(--gog-space-4);
|
|
1299
1404
|
/* The dropdown surface. Inline mode is `gog-calendar` itself, so it sizes from
|
|
1300
1405
|
`--gog-calendar-max-width` rather than from this. */
|
|
1301
1406
|
--gog-datepicker-panel-width: max-content;
|
|
@@ -1334,6 +1439,7 @@
|
|
|
1334
1439
|
--gog-input-gap: var(--gog-space-4);
|
|
1335
1440
|
--gog-input-label-color: var(--gog-accent-color);
|
|
1336
1441
|
--gog-input-label-font-size: var(--gog-text-sm);
|
|
1442
|
+
--gog-input-label-line-height: var(--gog-field-label-line-height);
|
|
1337
1443
|
--gog-input-label-letter-spacing: var(--gog-letter-spacing);
|
|
1338
1444
|
--gog-input-label-text-transform: var(--gog-text-transform);
|
|
1339
1445
|
--gog-input-field-bg: var(--gog-surface-color);
|
|
@@ -1350,6 +1456,7 @@
|
|
|
1350
1456
|
--gog-input-focus-ring-offset: var(--gog-focus-ring-offset);
|
|
1351
1457
|
--gog-input-error-color: var(--gog-danger-color);
|
|
1352
1458
|
--gog-input-error-font-size: var(--gog-text-xs);
|
|
1459
|
+
--gog-input-error-line-height: var(--gog-field-error-line-height);
|
|
1353
1460
|
/* Extra space above the error line, *on top of* the host's own `--gog-input-gap`, which
|
|
1354
1461
|
already separates every child of the field. It shipped as `2px` and put this field's error
|
|
1355
1462
|
6px under it while `gog-select`, `gog-autocomplete` and `gog-datepicker` — same gap, no
|
|
@@ -1358,6 +1465,7 @@
|
|
|
1358
1465
|
pushed further than the rest. */
|
|
1359
1466
|
--gog-input-error-offset: 0px;
|
|
1360
1467
|
--gog-input-icon-color: var(--gog-muted-text-color);
|
|
1468
|
+
--gog-input-icon-line-height: var(--gog-line-height-none);
|
|
1361
1469
|
--gog-input-icon-hover-color: var(--gog-accent-color);
|
|
1362
1470
|
--gog-input-icon-action-radius: calc(var(--gog-radius) - 4px);
|
|
1363
1471
|
--gog-input-icon-focus-ring-width: 2px;
|
|
@@ -1380,12 +1488,16 @@
|
|
|
1380
1488
|
`gog-toast` and `gog-accordion` keep their flat `0px` on purpose: those are a chosen shape,
|
|
1381
1489
|
not a number that forgot where it came from. */
|
|
1382
1490
|
--gog-input-clear-radius: calc(var(--gog-radius) / 4);
|
|
1491
|
+
--gog-input-clear-line-height: var(--gog-line-height-none);
|
|
1383
1492
|
--gog-input-clear-icon-ratio: var(--gog-control-clear-icon-ratio);
|
|
1384
1493
|
/*
|
|
1385
1494
|
The textarea's clear button gets a full-size glyph. The 0.7 ratio above suits the dense
|
|
1386
1495
|
single-line trigger of a dropdown; on a large multi-line box it reads as a speck.
|
|
1387
1496
|
*/
|
|
1388
1497
|
--gog-textarea-clear-icon-ratio: 1;
|
|
1498
|
+
/* The field is the one place in the library that renders a paragraph the consumer typed:
|
|
1499
|
+
role prose. */
|
|
1500
|
+
--gog-textarea-line-height: var(--gog-line-height-relaxed);
|
|
1389
1501
|
/* Custom resize grip — see the `::-webkit-resizer` comment in textarea.component.scss for
|
|
1390
1502
|
why this replaces rather than restyles the native glyph. Colour follows the field's own
|
|
1391
1503
|
border by default, not a fixed muted grey, so it reads as part of the field rather than a
|
|
@@ -1394,8 +1506,12 @@
|
|
|
1394
1506
|
--gog-textarea-resize-grip-color: var(--gog-input-field-border);
|
|
1395
1507
|
--gog-textarea-resize-grip-opacity: 0.8;
|
|
1396
1508
|
--gog-textarea-resize-grip-stripe-width: 1.5px;
|
|
1397
|
-
|
|
1398
|
-
|
|
1509
|
+
/* The three hairlines of the resize grip and the gap between them: a length inside one painted
|
|
1510
|
+
mark, not spacing between two things, so it is off the 4px grid on purpose (OPTICAL_CHROME in
|
|
1511
|
+
check-geometry.mjs). At 4px the three stripes would be a 20px block in the corner of every
|
|
1512
|
+
textarea instead of a 9px hint. */
|
|
1513
|
+
--gog-textarea-resize-grip-stripe-gap: 2px;
|
|
1514
|
+
--gog-textarea-resize-grip-offset: var(--gog-space-4);
|
|
1399
1515
|
/*
|
|
1400
1516
|
Both default to 0 and are overwritten per instance, as an inline style on the field, from
|
|
1401
1517
|
the component's own ResizeObserver — they close the gap that opens once the field has been
|
|
@@ -1429,6 +1545,7 @@
|
|
|
1429
1545
|
--gog-multiselect-options-padding: var(--gog-space-4);
|
|
1430
1546
|
--gog-multiselect-label-color: var(--gog-accent-color);
|
|
1431
1547
|
--gog-multiselect-label-font-size: var(--gog-text-sm);
|
|
1548
|
+
--gog-multiselect-label-line-height: var(--gog-field-label-line-height);
|
|
1432
1549
|
--gog-multiselect-label-letter-spacing: var(--gog-letter-spacing);
|
|
1433
1550
|
--gog-multiselect-label-text-transform: var(--gog-text-transform);
|
|
1434
1551
|
--gog-multiselect-field-bg: var(--gog-surface-color);
|
|
@@ -1446,6 +1563,7 @@
|
|
|
1446
1563
|
--gog-multiselect-focus-ring-offset: var(--gog-focus-ring-offset);
|
|
1447
1564
|
--gog-multiselect-error-color: var(--gog-danger-color);
|
|
1448
1565
|
--gog-multiselect-error-font-size: var(--gog-text-xs);
|
|
1566
|
+
--gog-multiselect-error-line-height: var(--gog-field-error-line-height);
|
|
1449
1567
|
/* Zero by default since 21.9.0 — see `--gog-input-error-offset` for why. */
|
|
1450
1568
|
--gog-multiselect-error-offset: 0px;
|
|
1451
1569
|
--gog-multiselect-border-color: var(--gog-accent-color);
|
|
@@ -1453,15 +1571,22 @@
|
|
|
1453
1571
|
--gog-multiselect-panel-border: var(--gog-accent-color);
|
|
1454
1572
|
--gog-multiselect-panel-shadow: var(--gog-panel-shadow);
|
|
1455
1573
|
--gog-multiselect-panel-max-height: 260px;
|
|
1456
|
-
--gog-multiselect-panel-offset: var(--gog-space-
|
|
1574
|
+
--gog-multiselect-panel-offset: var(--gog-space-4);
|
|
1457
1575
|
--gog-multiselect-option-hover-bg: var(--gog-hover-color);
|
|
1458
1576
|
--gog-multiselect-option-press-bg: var(--gog-border-color);
|
|
1459
1577
|
--gog-multiselect-option-color: var(--gog-text-color);
|
|
1460
|
-
--gog-multiselect-option-gap-inline: var(--gog-space-
|
|
1578
|
+
--gog-multiselect-option-gap-inline: var(--gog-space-12);
|
|
1461
1579
|
/* Estimated row height fed into the panel's up/down placement math; not itself a real
|
|
1462
1580
|
layout property, so it has no effect unless the JS reads it. */
|
|
1463
1581
|
--gog-multiselect-option-height: 40px;
|
|
1464
|
-
|
|
1582
|
+
/* Concentric with the panel. The panel paints `--gog-multiselect-radius` (the field's token --
|
|
1583
|
+
this component has no panel radius of its own) and insets its rows by the list padding, so
|
|
1584
|
+
the row's corner is that radius minus that padding. It had subtracted 2px against 4px of
|
|
1585
|
+
padding, and a restated literal also stops being true once density moves. */
|
|
1586
|
+
--gog-multiselect-option-radius: max(
|
|
1587
|
+
0px,
|
|
1588
|
+
calc(var(--gog-multiselect-radius) - var(--gog-multiselect-options-padding))
|
|
1589
|
+
);
|
|
1465
1590
|
--gog-multiselect-option-disabled-opacity: var(--gog-disabled-opacity);
|
|
1466
1591
|
--gog-multiselect-option-transition-duration: var(--gog-duration-fast);
|
|
1467
1592
|
--gog-multiselect-checkbox-border: var(--gog-accent-dim);
|
|
@@ -1469,30 +1594,42 @@
|
|
|
1469
1594
|
--gog-multiselect-checkbox-checked-bg: var(--gog-accent-color);
|
|
1470
1595
|
--gog-multiselect-checkbox-checked-color: var(--gog-primary-color);
|
|
1471
1596
|
--gog-multiselect-controls-gap: var(--gog-space-4);
|
|
1472
|
-
--gog-multiselect-controls-padding: var(--gog-space-
|
|
1473
|
-
--gog-multiselect-actions-gap: var(--gog-space-
|
|
1474
|
-
--gog-multiselect-filter-padding: var(--gog-space-
|
|
1475
|
-
--gog-multiselect-filter-input-padding-y: var(--gog-space-
|
|
1476
|
-
--gog-multiselect-filter-input-padding-x: var(--gog-space-
|
|
1597
|
+
--gog-multiselect-controls-padding: var(--gog-space-8) var(--gog-space-12);
|
|
1598
|
+
--gog-multiselect-actions-gap: var(--gog-space-8);
|
|
1599
|
+
--gog-multiselect-filter-padding: var(--gog-space-8);
|
|
1600
|
+
--gog-multiselect-filter-input-padding-y: var(--gog-space-8);
|
|
1601
|
+
--gog-multiselect-filter-input-padding-x: var(--gog-space-16);
|
|
1477
1602
|
--gog-multiselect-filter-input-bg: var(--gog-background-color);
|
|
1478
1603
|
--gog-multiselect-filter-input-color: var(--gog-multiselect-field-color);
|
|
1479
1604
|
--gog-multiselect-filter-input-border: var(--gog-multiselect-field-border);
|
|
1480
|
-
|
|
1605
|
+
/* Concentric with the panel, and the concentric answer here is a square corner. The filter is
|
|
1606
|
+
inset by `--gog-multiselect-filter-padding`, which equals the panel's radius -- and where the
|
|
1607
|
+
inset equals the radius, the inner box's corner point lands exactly on the centre of the
|
|
1608
|
+
outer arc, so a right angle is equidistant from the whole curve. It is the only shape that
|
|
1609
|
+
keeps the gap constant, not a value clamped to zero for want of a better one. */
|
|
1610
|
+
--gog-multiselect-filter-input-radius: max(
|
|
1611
|
+
0px,
|
|
1612
|
+
calc(var(--gog-multiselect-radius) - var(--gog-multiselect-filter-padding))
|
|
1613
|
+
);
|
|
1481
1614
|
--gog-multiselect-filter-border-width: var(--gog-panel-border-width);
|
|
1482
1615
|
--gog-multiselect-filter-border-style: var(--gog-panel-border-style);
|
|
1483
1616
|
--gog-multiselect-filter-border-color: var(--gog-border-color);
|
|
1484
|
-
--gog-multiselect-filter-empty-padding: var(--gog-space-
|
|
1617
|
+
--gog-multiselect-filter-empty-padding: var(--gog-space-12);
|
|
1485
1618
|
--gog-multiselect-filter-empty-color: var(--gog-multiselect-placeholder-color);
|
|
1486
1619
|
/* Matches --gog-select-chevron-inset; see the note there. */
|
|
1487
1620
|
/* "+N" badge shown when the selection does not fit on one line. */
|
|
1488
1621
|
--gog-multiselect-overflow-color: var(--gog-multiselect-placeholder-color);
|
|
1489
1622
|
--gog-multiselect-overflow-font-size: var(--gog-text-sm);
|
|
1490
|
-
|
|
1623
|
+
/* It sits on the field values own baseline (align-self: baseline, 21.7.2), so it takes the
|
|
1624
|
+
field text leading rather than a mark leading. */
|
|
1625
|
+
--gog-multiselect-overflow-line-height: var(--gog-field-line-height);
|
|
1626
|
+
--gog-multiselect-overflow-gap: var(--gog-space-8);
|
|
1491
1627
|
--gog-multiselect-min-width: 120px;
|
|
1492
1628
|
--gog-multiselect-panel-max-width: 420px;
|
|
1493
1629
|
--gog-multiselect-actions-inset: var(--gog-control-icon-offset);
|
|
1494
1630
|
/* A quarter of the corner radius — see `--gog-input-clear-radius` for why. */
|
|
1495
1631
|
--gog-multiselect-clear-radius: calc(var(--gog-radius) / 4);
|
|
1632
|
+
--gog-multiselect-clear-line-height: var(--gog-line-height-none);
|
|
1496
1633
|
--gog-multiselect-disabled-opacity: var(--gog-disabled-opacity);
|
|
1497
1634
|
--gog-multiselect-transition-duration: var(--gog-duration-base);
|
|
1498
1635
|
--gog-multiselect-float-label-reserve: var(--gog-field-float-label-reserve);
|
|
@@ -1518,10 +1655,14 @@
|
|
|
1518
1655
|
--gog-menu-shadow: var(--gog-dialog-shadow);
|
|
1519
1656
|
--gog-menu-font-family: var(--gog-font-body);
|
|
1520
1657
|
--gog-menu-padding: var(--gog-space-4);
|
|
1521
|
-
--gog-menu-gap: var(--gog-space-
|
|
1658
|
+
--gog-menu-gap: var(--gog-space-4);
|
|
1522
1659
|
--gog-menu-offset: var(--gog-space-4);
|
|
1523
1660
|
--gog-menu-min-width: 180px;
|
|
1524
|
-
|
|
1661
|
+
/* L8's viewport exception (docs/component-geometry.md, "D7 — taken"): a menu portals into
|
|
1662
|
+
<body> and floats over the viewport, not a container. Its items do not wrap (L9 does not
|
|
1663
|
+
apply — the width stays in px), but L8 still does: no edge-inset token exists on this
|
|
1664
|
+
component today, so the margin reads the scale directly. */
|
|
1665
|
+
--gog-menu-max-width: min(320px, calc(100vw - var(--gog-space-16) * 2));
|
|
1525
1666
|
--gog-menu-max-height: 320px;
|
|
1526
1667
|
--gog-menu-transition-duration: var(--gog-duration-base);
|
|
1527
1668
|
--gog-menu-focus-ring: var(--gog-accent-color);
|
|
@@ -1535,8 +1676,11 @@
|
|
|
1535
1676
|
--gog-menu-item-press-bg: var(--gog-border-color);
|
|
1536
1677
|
--gog-menu-item-hover-color: var(--gog-text-color);
|
|
1537
1678
|
--gog-menu-item-font-size: var(--gog-text-sm);
|
|
1538
|
-
--gog-menu-item-padding: var(--gog-space-8) var(--gog-space-
|
|
1539
|
-
|
|
1679
|
+
--gog-menu-item-padding: var(--gog-space-8) var(--gog-space-16);
|
|
1680
|
+
/* Concentric with the panel, which paints `--gog-panel-radius` (8px larger than the base) and
|
|
1681
|
+
insets its items by `--gog-menu-padding`. Repeating the base radius here made the first and
|
|
1682
|
+
last items visibly squarer than the corner they sit in. */
|
|
1683
|
+
--gog-menu-item-radius: max(0px, calc(var(--gog-menu-radius) - var(--gog-menu-padding)));
|
|
1540
1684
|
--gog-menu-item-gap: var(--gog-space-sm);
|
|
1541
1685
|
--gog-menu-item-disabled-opacity: var(--gog-disabled-opacity);
|
|
1542
1686
|
--gog-menu-item-disabled-color: var(--gog-muted-text-color);
|
|
@@ -1547,6 +1691,7 @@
|
|
|
1547
1691
|
--gog-paginator-gap: var(--gog-space-4);
|
|
1548
1692
|
--gog-paginator-ellipsis-color: var(--gog-muted-text-color);
|
|
1549
1693
|
--gog-paginator-ellipsis-font-size: var(--gog-text-sm);
|
|
1694
|
+
--gog-paginator-ellipsis-line-height: var(--gog-line-height-none);
|
|
1550
1695
|
--gog-paginator-ellipsis-font-family: var(--gog-font-body);
|
|
1551
1696
|
/* Enough for a three-digit page size plus the chevron, so the row doesn't shift on change. */
|
|
1552
1697
|
--gog-paginator-page-size-min-width: 5rem;
|
|
@@ -1571,7 +1716,11 @@
|
|
|
1571
1716
|
--gog-panel-heading-font-family: var(--gog-font-heading);
|
|
1572
1717
|
--gog-panel-heading-font-size: var(--gog-text-xl);
|
|
1573
1718
|
--gog-panel-heading-font-weight: var(--gog-font-weight-semibold);
|
|
1574
|
-
|
|
1719
|
+
/* Role heading, the same step the card heading takes. It had been 1.25 -- the one leading in
|
|
1720
|
+
the library outside the scale, which runs 1.2 then 1.3 with nothing between. Two headings
|
|
1721
|
+
four steps apart differing by 0.05 is two people picking a nice number, not the inverse
|
|
1722
|
+
relationship law 4 describes; that one holds across the roles, where it is real. */
|
|
1723
|
+
--gog-panel-heading-line-height: var(--gog-line-height-snug);
|
|
1575
1724
|
|
|
1576
1725
|
--gog-panel-outlined-bg: var(--gog-surface-color);
|
|
1577
1726
|
--gog-panel-outlined-border-color: var(--gog-border-color);
|
|
@@ -1597,13 +1746,13 @@
|
|
|
1597
1746
|
--gog-panel-footer-gap: var(--gog-space-sm);
|
|
1598
1747
|
--gog-panel-footer-padding-top: var(--gog-space-sm);
|
|
1599
1748
|
|
|
1600
|
-
--gog-panel-xsm-padding-y: var(--gog-space-
|
|
1749
|
+
--gog-panel-xsm-padding-y: var(--gog-space-12);
|
|
1601
1750
|
--gog-panel-xsm-padding-x: var(--gog-space-12);
|
|
1602
1751
|
--gog-panel-xsm-gap: var(--gog-space-sm);
|
|
1603
|
-
--gog-panel-sm-padding-y: var(--gog-space-
|
|
1752
|
+
--gog-panel-sm-padding-y: var(--gog-space-16);
|
|
1604
1753
|
--gog-panel-sm-padding-x: var(--gog-space-md);
|
|
1605
|
-
--gog-panel-sm-gap: var(--gog-space-
|
|
1606
|
-
--gog-panel-md-padding-y: var(--gog-space-
|
|
1754
|
+
--gog-panel-sm-gap: var(--gog-space-12);
|
|
1755
|
+
--gog-panel-md-padding-y: var(--gog-space-20);
|
|
1607
1756
|
--gog-panel-md-padding-x: var(--gog-space-20);
|
|
1608
1757
|
--gog-panel-md-gap: var(--gog-space-12);
|
|
1609
1758
|
--gog-panel-lg-padding-y: var(--gog-space-lg);
|
|
@@ -1627,11 +1776,27 @@
|
|
|
1627
1776
|
--gog-progressbar-value-color: var(--gog-muted-text-color);
|
|
1628
1777
|
--gog-progressbar-value-font-family: var(--gog-font-body);
|
|
1629
1778
|
--gog-progressbar-value-font-size: var(--gog-text-sm);
|
|
1779
|
+
--gog-progressbar-value-line-height: var(--gog-line-height-none);
|
|
1630
1780
|
--gog-progressbar-indeterminate-duration: 1.6s;
|
|
1631
1781
|
--gog-progressbar-indeterminate-easing: cubic-bezier(0.65, 0.05, 0.36, 1);
|
|
1632
1782
|
/* The reduced-motion stand-in for the indeterminate animation. */
|
|
1633
1783
|
--gog-progressbar-stripe-size: 6px;
|
|
1634
1784
|
--gog-progressbar-stripe-color: var(--gog-surface-color);
|
|
1785
|
+
/* The two hairlines that mark where the fill ends, and the reason they are two.
|
|
1786
|
+
WCAG 1.4.11 wants 3:1 for the part of a graphic that carries its meaning, and here that is
|
|
1787
|
+
the boundary — `showValue` is `false` by default, so nothing else states the value. The fill
|
|
1788
|
+
cannot carry it against the track: measured across the whole `--gog-text-color`-to-
|
|
1789
|
+
`--gog-border-color` axis, no single track colour clears 3:1 against all five fills in any
|
|
1790
|
+
theme but `primeng`, because the fills straddle mid-luminance and a track dark enough for the
|
|
1791
|
+
amber warning lands on the blue info (`docs/backlog.md` has the table).
|
|
1792
|
+
A marker can, but not in one tone either: `--gog-surface-color` alone is 1.79:1 on
|
|
1793
|
+
`material`'s warning fill, `--gog-text-color` alone is 1.06:1 on `one-dark`'s success. As a
|
|
1794
|
+
pair they always work — the ink line is 3.25:1 to 9.57:1 against the track in all eleven
|
|
1795
|
+
themes, and whichever tone a fill sits close to, the other one does not. `check:contrast`
|
|
1796
|
+
gates both halves. */
|
|
1797
|
+
--gog-progressbar-edge-width: 1px;
|
|
1798
|
+
--gog-progressbar-edge-color: var(--gog-text-color);
|
|
1799
|
+
--gog-progressbar-edge-backing-color: var(--gog-surface-color);
|
|
1635
1800
|
/* The buffer tier is the same hue at low opacity, so it reads as "ahead of the fill"
|
|
1636
1801
|
rather than as a second, competing colour. */
|
|
1637
1802
|
--gog-progressbar-accent-bg: var(--gog-accent-color);
|
|
@@ -1665,7 +1830,19 @@
|
|
|
1665
1830
|
--gog-scroll-thumb-bg: var(--gog-accent-dim);
|
|
1666
1831
|
--gog-scroll-thumb-hover-bg: var(--gog-accent-color);
|
|
1667
1832
|
--gog-scroll-thumb-active-bg: var(--gog-accent-bright);
|
|
1668
|
-
|
|
1833
|
+
/* Concentric with the track: the thumb is inset on every side by `--gog-scroll-thumb-inset`,
|
|
1834
|
+
so its corner is the track's minus that. Both radii exceed half the thumb's width at either
|
|
1835
|
+
track size (10px and 6px, less 2x2 of inset), so this changes no rendered pixel today -- it
|
|
1836
|
+
is here so that a theme raising `--gog-radius` on a wide scroller keeps the two curves
|
|
1837
|
+
parallel instead of letting the thumb match the track it sits inside. */
|
|
1838
|
+
--gog-scroll-thumb-radius: max(
|
|
1839
|
+
0px,
|
|
1840
|
+
calc(var(--gog-scroll-track-radius) - var(--gog-scroll-thumb-inset))
|
|
1841
|
+
);
|
|
1842
|
+
/* The thumb's clearance inside its own track, off the 4px grid for the same reason
|
|
1843
|
+
`--gog-toggle-thumb-inset` is: a length inside a single painted mark defines that mark's
|
|
1844
|
+
shape rather than spacing two things apart, and 4px on a thin scrollbar would leave a thumb
|
|
1845
|
+
barely wider than the hairline it rides in. Listed in OPTICAL_CHROME. */
|
|
1669
1846
|
--gog-scroll-thumb-inset: 2px;
|
|
1670
1847
|
--gog-scroll-corner-bg: transparent;
|
|
1671
1848
|
--gog-scroll-fade-duration: var(--gog-duration-base);
|
|
@@ -1682,7 +1859,7 @@
|
|
|
1682
1859
|
`thin` variant gets more of it since its 6px track leaves the least visible thumb to aim
|
|
1683
1860
|
at; both land the effective hit width in the ~22-24px range generally recommended for a
|
|
1684
1861
|
comfortable pointer target. */
|
|
1685
|
-
--gog-scroll-normal-thumb-hit-padding: var(--gog-space-
|
|
1862
|
+
--gog-scroll-normal-thumb-hit-padding: var(--gog-space-8);
|
|
1686
1863
|
--gog-scroll-thin-thumb-hit-padding: var(--gog-space-8);
|
|
1687
1864
|
|
|
1688
1865
|
/* ── Select ────────────────────────────────────────────────────────────────── */
|
|
@@ -1691,6 +1868,7 @@
|
|
|
1691
1868
|
--gog-select-gap: var(--gog-space-4);
|
|
1692
1869
|
--gog-select-label-color: var(--gog-accent-color);
|
|
1693
1870
|
--gog-select-label-font-size: var(--gog-text-sm);
|
|
1871
|
+
--gog-select-label-line-height: var(--gog-field-label-line-height);
|
|
1694
1872
|
--gog-select-label-letter-spacing: var(--gog-letter-spacing);
|
|
1695
1873
|
--gog-select-label-text-transform: var(--gog-text-transform);
|
|
1696
1874
|
--gog-select-field-bg: var(--gog-surface-color);
|
|
@@ -1707,6 +1885,7 @@
|
|
|
1707
1885
|
--gog-select-focus-ring-offset: var(--gog-focus-ring-offset);
|
|
1708
1886
|
--gog-select-error-color: var(--gog-danger-color);
|
|
1709
1887
|
--gog-select-error-font-size: var(--gog-text-xs);
|
|
1888
|
+
--gog-select-error-line-height: var(--gog-field-error-line-height);
|
|
1710
1889
|
--gog-select-chevron-color: var(--gog-accent-color);
|
|
1711
1890
|
/*
|
|
1712
1891
|
Distance from the trigger's right edge to the trailing chrome, matching the leading icon
|
|
@@ -1721,35 +1900,43 @@
|
|
|
1721
1900
|
/* Ceiling for a content-sized panel, so one very long option cannot span the viewport. */
|
|
1722
1901
|
--gog-select-panel-max-width: 420px;
|
|
1723
1902
|
/* Filter box — only rendered when `filter` is on. */
|
|
1724
|
-
--gog-select-filter-padding: var(--gog-space-
|
|
1725
|
-
--gog-select-filter-input-padding-y: var(--gog-space-
|
|
1726
|
-
--gog-select-filter-input-padding-x: var(--gog-space-
|
|
1903
|
+
--gog-select-filter-padding: var(--gog-space-8);
|
|
1904
|
+
--gog-select-filter-input-padding-y: var(--gog-space-8);
|
|
1905
|
+
--gog-select-filter-input-padding-x: var(--gog-space-16);
|
|
1727
1906
|
--gog-select-filter-input-bg: var(--gog-background-color);
|
|
1728
1907
|
--gog-select-filter-input-color: var(--gog-select-field-color);
|
|
1729
1908
|
--gog-select-filter-input-border: var(--gog-select-field-border);
|
|
1730
|
-
|
|
1909
|
+
/* Concentric with the panel, and the concentric answer here is a square corner. The filter is
|
|
1910
|
+
inset by `--gog-select-filter-padding`, which equals the panel's radius -- and where the inset
|
|
1911
|
+
equals the radius, the inner box's corner point lands exactly on the centre of the outer arc,
|
|
1912
|
+
so a right angle is equidistant from the whole curve. The same case as the multiselect's. */
|
|
1913
|
+
--gog-select-filter-input-radius: max(
|
|
1914
|
+
0px,
|
|
1915
|
+
calc(var(--gog-select-radius) - var(--gog-select-filter-padding))
|
|
1916
|
+
);
|
|
1731
1917
|
--gog-select-filter-border-width: var(--gog-panel-border-width);
|
|
1732
1918
|
--gog-select-filter-border-style: var(--gog-panel-border-style);
|
|
1733
1919
|
--gog-select-filter-border-color: var(--gog-select-option-border-color, var(--gog-border-color));
|
|
1734
|
-
--gog-select-filter-empty-padding: var(--gog-space-
|
|
1920
|
+
--gog-select-filter-empty-padding: var(--gog-space-12);
|
|
1735
1921
|
--gog-select-filter-empty-color: var(--gog-select-placeholder-color);
|
|
1736
1922
|
/* Clear button — only rendered once a value is selected, see `clearable`. */
|
|
1737
1923
|
/* A quarter of the corner radius — see `--gog-input-clear-radius` for why. */
|
|
1738
1924
|
--gog-select-clear-radius: calc(var(--gog-radius) / 4);
|
|
1925
|
+
--gog-select-clear-line-height: var(--gog-line-height-none);
|
|
1739
1926
|
--gog-select-clear-icon-ratio: var(--gog-control-clear-icon-ratio);
|
|
1740
|
-
--gog-select-clear-gap: var(--gog-space-
|
|
1927
|
+
--gog-select-clear-gap: var(--gog-space-8);
|
|
1741
1928
|
--gog-select-clear-color: var(--gog-select-placeholder-color);
|
|
1742
1929
|
--gog-select-clear-hover-color: var(--gog-select-label-color);
|
|
1743
1930
|
--gog-select-control-gap: var(--gog-space-12);
|
|
1744
1931
|
--gog-select-panel-bg: var(--gog-surface-color);
|
|
1745
1932
|
--gog-select-panel-shadow: var(--gog-panel-shadow);
|
|
1746
1933
|
--gog-select-panel-max-height: 260px;
|
|
1747
|
-
--gog-select-panel-offset: var(--gog-space-
|
|
1934
|
+
--gog-select-panel-offset: var(--gog-space-4);
|
|
1748
1935
|
--gog-select-option-hover-bg: var(--gog-hover-color);
|
|
1749
1936
|
--gog-select-option-press-bg: var(--gog-border-color);
|
|
1750
1937
|
--gog-select-option-selected-color: var(--gog-accent-color);
|
|
1751
1938
|
--gog-select-option-color: var(--gog-text-color);
|
|
1752
|
-
--gog-select-option-gap: var(--gog-space-
|
|
1939
|
+
--gog-select-option-gap: var(--gog-space-12);
|
|
1753
1940
|
/* Estimated row height fed into the panel's up/down placement math; not itself a real
|
|
1754
1941
|
layout property, so it has no effect unless the JS reads it. */
|
|
1755
1942
|
--gog-select-option-height: 40px;
|
|
@@ -1801,13 +1988,15 @@
|
|
|
1801
1988
|
--gog-slider-label-font-family: var(--gog-font-heading);
|
|
1802
1989
|
--gog-slider-value-font-family: var(--gog-font-mono);
|
|
1803
1990
|
--gog-slider-error-font-family: var(--gog-font-body);
|
|
1804
|
-
--gog-slider-gap: var(--gog-space-
|
|
1991
|
+
--gog-slider-gap: var(--gog-space-8);
|
|
1805
1992
|
--gog-slider-label-color: var(--gog-accent-color);
|
|
1806
1993
|
--gog-slider-label-font-size: var(--gog-text-sm);
|
|
1994
|
+
--gog-slider-label-line-height: var(--gog-field-label-line-height);
|
|
1807
1995
|
--gog-slider-label-letter-spacing: var(--gog-letter-spacing);
|
|
1808
1996
|
--gog-slider-label-text-transform: var(--gog-text-transform);
|
|
1809
1997
|
--gog-slider-value-color: var(--gog-accent-color);
|
|
1810
1998
|
--gog-slider-value-font-size: var(--gog-text-sm);
|
|
1999
|
+
--gog-slider-value-line-height: var(--gog-line-height-none);
|
|
1811
2000
|
--gog-slider-value-min-width: 40px;
|
|
1812
2001
|
--gog-slider-track-height: 4px;
|
|
1813
2002
|
--gog-slider-track-area-height: 20px;
|
|
@@ -1844,8 +2033,10 @@
|
|
|
1844
2033
|
--gog-slider-focus-ring-width: var(--gog-focus-ring-width);
|
|
1845
2034
|
--gog-slider-range-color: var(--gog-muted-text-color);
|
|
1846
2035
|
--gog-slider-range-font-size: var(--gog-text-xs);
|
|
2036
|
+
--gog-slider-range-line-height: var(--gog-line-height-none);
|
|
1847
2037
|
--gog-slider-error-color: var(--gog-danger-color);
|
|
1848
2038
|
--gog-slider-error-font-size: var(--gog-text-xs);
|
|
2039
|
+
--gog-slider-error-line-height: var(--gog-field-error-line-height);
|
|
1849
2040
|
--gog-slider-disabled-opacity: var(--gog-disabled-opacity);
|
|
1850
2041
|
|
|
1851
2042
|
/* ── Spinner ──────────────────────────────────────────────────────────────── */
|
|
@@ -1908,37 +2099,43 @@
|
|
|
1908
2099
|
--gog-table-header-letter-spacing: var(--gog-letter-spacing);
|
|
1909
2100
|
--gog-table-header-text-transform: var(--gog-text-transform);
|
|
1910
2101
|
--gog-table-num-col-width: 48px;
|
|
1911
|
-
--gog-table-th-inner-gap: var(--gog-space-
|
|
2102
|
+
--gog-table-th-inner-gap: var(--gog-space-8);
|
|
1912
2103
|
--gog-table-sort-icon-size: 0.9em;
|
|
1913
2104
|
--gog-table-sort-icon-width: 1.1em;
|
|
1914
2105
|
--gog-table-sort-icon-opacity: 0.6;
|
|
1915
|
-
--gog-table-empty-padding: var(--gog-space-24) var(--gog-space-
|
|
2106
|
+
--gog-table-empty-padding: var(--gog-space-24) var(--gog-space-16);
|
|
1916
2107
|
--gog-table-empty-font-size: var(--gog-text-md);
|
|
1917
|
-
--gog-table-
|
|
2108
|
+
--gog-table-empty-line-height: var(--gog-line-height-normal);
|
|
2109
|
+
--gog-table-loading-padding: var(--gog-space-32) var(--gog-space-16);
|
|
1918
2110
|
--gog-table-loading-opacity: 0.5;
|
|
1919
2111
|
--gog-table-row-transition-duration: var(--gog-duration-fast);
|
|
1920
2112
|
--gog-table-footer-gap: var(--gog-space-sm);
|
|
1921
2113
|
--gog-table-footer-min-height: 32px;
|
|
1922
2114
|
--gog-table-total-font-size: var(--gog-text-xs);
|
|
2115
|
+
--gog-table-total-line-height: var(--gog-line-height-normal);
|
|
1923
2116
|
--gog-table-total-letter-spacing: 0.5px;
|
|
1924
2117
|
--gog-table-total-text-transform: var(--gog-text-transform);
|
|
1925
2118
|
--gog-table-num-font-size: var(--gog-text-xs);
|
|
1926
|
-
--gog-table-
|
|
1927
|
-
--gog-table-
|
|
2119
|
+
--gog-table-num-line-height: var(--gog-line-height-normal);
|
|
2120
|
+
--gog-table-padding-h: var(--gog-space-16);
|
|
2121
|
+
--gog-table-xsm-padding-v: var(--gog-space-4);
|
|
1928
2122
|
--gog-table-xsm-th-font-size: var(--gog-text-xs);
|
|
1929
2123
|
--gog-table-xsm-td-font-size: var(--gog-text-xs);
|
|
1930
|
-
--gog-table-sm-padding-v: var(--gog-space-
|
|
2124
|
+
--gog-table-sm-padding-v: var(--gog-space-4);
|
|
1931
2125
|
--gog-table-sm-th-font-size: var(--gog-text-xs);
|
|
1932
2126
|
--gog-table-sm-td-font-size: var(--gog-text-xs);
|
|
1933
|
-
--gog-table-md-padding-v: var(--gog-space-
|
|
2127
|
+
--gog-table-md-padding-v: var(--gog-space-8);
|
|
1934
2128
|
--gog-table-md-th-font-size: var(--gog-text-xs);
|
|
1935
2129
|
--gog-table-md-td-font-size: var(--gog-text-sm);
|
|
1936
|
-
--gog-table-lg-padding-v: var(--gog-space-
|
|
2130
|
+
--gog-table-lg-padding-v: var(--gog-space-12);
|
|
1937
2131
|
--gog-table-lg-th-font-size: var(--gog-text-sm);
|
|
1938
2132
|
--gog-table-lg-td-font-size: var(--gog-text-md);
|
|
1939
|
-
--gog-table-slg-padding-v: var(--gog-space-
|
|
2133
|
+
--gog-table-slg-padding-v: var(--gog-space-16);
|
|
1940
2134
|
--gog-table-slg-th-font-size: var(--gog-text-md);
|
|
1941
2135
|
--gog-table-slg-td-font-size: var(--gog-text-lg);
|
|
2136
|
+
/* One value for every size step: the role picks the leading and the size does not (D4). */
|
|
2137
|
+
--gog-table-td-line-height: var(--gog-line-height-normal);
|
|
2138
|
+
--gog-table-th-line-height: var(--gog-line-height-normal);
|
|
1942
2139
|
|
|
1943
2140
|
/* ── Tabs ──────────────────────────────────────────────────────────────────
|
|
1944
2141
|
`--gog-tabs-tab-bg`, `-tab-color`, `-tab-padding` and `-tab-font-size` are intentionally
|
|
@@ -1979,15 +2176,15 @@
|
|
|
1979
2176
|
--gog-tabs-focus-ring-color: var(--gog-accent-color);
|
|
1980
2177
|
--gog-tabs-panel-padding: var(--gog-space-md);
|
|
1981
2178
|
--gog-tabs-panel-color: var(--gog-text-color);
|
|
1982
|
-
--gog-tabs-xsm-padding: var(--gog-space-
|
|
2179
|
+
--gog-tabs-xsm-padding: var(--gog-space-8) var(--gog-space-16);
|
|
1983
2180
|
--gog-tabs-xsm-font-size: var(--gog-text-xs);
|
|
1984
|
-
--gog-tabs-sm-padding: var(--gog-space-8) var(--gog-space-
|
|
2181
|
+
--gog-tabs-sm-padding: var(--gog-space-8) var(--gog-space-16);
|
|
1985
2182
|
--gog-tabs-sm-font-size: var(--gog-text-sm);
|
|
1986
|
-
--gog-tabs-md-padding: var(--gog-space-12) var(--gog-space-
|
|
2183
|
+
--gog-tabs-md-padding: var(--gog-space-12) var(--gog-space-24);
|
|
1987
2184
|
--gog-tabs-md-font-size: var(--gog-text-md);
|
|
1988
|
-
--gog-tabs-lg-padding: var(--gog-space-16) var(--gog-space-
|
|
2185
|
+
--gog-tabs-lg-padding: var(--gog-space-16) var(--gog-space-32);
|
|
1989
2186
|
--gog-tabs-lg-font-size: var(--gog-text-lg);
|
|
1990
|
-
--gog-tabs-slg-padding: var(--gog-space-20) var(--gog-space-
|
|
2187
|
+
--gog-tabs-slg-padding: var(--gog-space-20) var(--gog-space-40);
|
|
1991
2188
|
--gog-tabs-slg-font-size: var(--gog-text-xl);
|
|
1992
2189
|
|
|
1993
2190
|
/* ── Tag ──────────────────────────────────────────────────────────────────
|
|
@@ -2000,9 +2197,21 @@
|
|
|
2000
2197
|
--gog-tag-warning-color: var(--gog-warning-color);
|
|
2001
2198
|
--gog-tag-info-color: var(--gog-info-color);
|
|
2002
2199
|
--gog-tag-bg-mix: 10%;
|
|
2003
|
-
|
|
2200
|
+
/* The label is the status hue mixed **halfway toward the page's ink**, and both halves of that
|
|
2201
|
+
changed in 21.10.0. It was 82% of the hue mixed toward literal `black`, which is a light-theme
|
|
2202
|
+
assumption twice over: on a dark theme it darkened a label that already sat on a dark ground
|
|
2203
|
+
(one-dark's danger tag read 3.11:1), and on a light one 18% of black is not enough to bring a
|
|
2204
|
+
bright hue down to text contrast (material's warning, 2.49:1; primeng's success, 3.06:1).
|
|
2205
|
+
Eleven of the 55 shipped combinations were under WCAG AA and nothing had ever measured them —
|
|
2206
|
+
a tag's colours reach the DOM through `--gog-tag-variant-color`, which `check:contrast` could
|
|
2207
|
+
not follow until the same release taught it to.
|
|
2208
|
+
|
|
2209
|
+
`--gog-text-color` rather than `black` makes the mix follow the theme, and 50% rather than 82%
|
|
2210
|
+
is the same ratio, and the same argument, as `--gog-button-<status>-ink`: as body text the raw
|
|
2211
|
+
status hue clears AA in only a handful of themes. The worst pair is now 4.67:1. */
|
|
2212
|
+
--gog-tag-color-mix: 50%;
|
|
2004
2213
|
--gog-tag-bg-base: var(--gog-surface-color);
|
|
2005
|
-
--gog-tag-color-base:
|
|
2214
|
+
--gog-tag-color-base: var(--gog-text-color);
|
|
2006
2215
|
--gog-tag-border-width: var(--gog-border-width);
|
|
2007
2216
|
--gog-tag-border-style: var(--gog-border-style);
|
|
2008
2217
|
--gog-tag-inner-border-width: var(--gog-border-width);
|
|
@@ -2011,10 +2220,10 @@
|
|
|
2011
2220
|
--gog-tag-radius: max(var(--gog-radius), 2px);
|
|
2012
2221
|
--gog-tag-pill-radius: 9999px;
|
|
2013
2222
|
|
|
2014
|
-
--gog-tag-xsm-font-size:
|
|
2015
|
-
--gog-tag-xsm-padding-block: var(--gog-space-
|
|
2016
|
-
--gog-tag-xsm-padding-inline: var(--gog-space-
|
|
2017
|
-
--gog-tag-xsm-gap: var(--gog-space-
|
|
2223
|
+
--gog-tag-xsm-font-size: var(--gog-text-2xs);
|
|
2224
|
+
--gog-tag-xsm-padding-block: var(--gog-space-4);
|
|
2225
|
+
--gog-tag-xsm-padding-inline: var(--gog-space-8);
|
|
2226
|
+
--gog-tag-xsm-gap: var(--gog-space-4);
|
|
2018
2227
|
--gog-tag-xsm-icon-size: 0.6875rem;
|
|
2019
2228
|
|
|
2020
2229
|
--gog-tag-sm-font-size: var(--gog-text-xs);
|
|
@@ -2024,21 +2233,21 @@
|
|
|
2024
2233
|
--gog-tag-sm-icon-size: 0.75rem;
|
|
2025
2234
|
|
|
2026
2235
|
--gog-tag-md-font-size: var(--gog-text-sm);
|
|
2027
|
-
--gog-tag-md-padding-block: var(--gog-space-
|
|
2028
|
-
--gog-tag-md-padding-inline: var(--gog-space-
|
|
2029
|
-
--gog-tag-md-gap: var(--gog-space-
|
|
2236
|
+
--gog-tag-md-padding-block: var(--gog-space-8);
|
|
2237
|
+
--gog-tag-md-padding-inline: var(--gog-space-16);
|
|
2238
|
+
--gog-tag-md-gap: var(--gog-space-8);
|
|
2030
2239
|
--gog-tag-md-icon-size: 0.875rem;
|
|
2031
2240
|
|
|
2032
2241
|
--gog-tag-lg-font-size: var(--gog-text-md);
|
|
2033
2242
|
--gog-tag-lg-padding-block: var(--gog-space-8);
|
|
2034
|
-
--gog-tag-lg-padding-inline: var(--gog-space-
|
|
2243
|
+
--gog-tag-lg-padding-inline: var(--gog-space-16);
|
|
2035
2244
|
--gog-tag-lg-gap: var(--gog-space-8);
|
|
2036
2245
|
--gog-tag-lg-icon-size: 1rem;
|
|
2037
2246
|
|
|
2038
2247
|
--gog-tag-slg-font-size: var(--gog-text-lg);
|
|
2039
|
-
--gog-tag-slg-padding-block: var(--gog-space-
|
|
2040
|
-
--gog-tag-slg-padding-inline: var(--gog-space-
|
|
2041
|
-
--gog-tag-slg-gap: var(--gog-space-
|
|
2248
|
+
--gog-tag-slg-padding-block: var(--gog-space-12);
|
|
2249
|
+
--gog-tag-slg-padding-inline: var(--gog-space-24);
|
|
2250
|
+
--gog-tag-slg-gap: var(--gog-space-12);
|
|
2042
2251
|
--gog-tag-slg-icon-size: 1.125rem;
|
|
2043
2252
|
|
|
2044
2253
|
/* ── Toast ────────────────────────────────────────────────────────────────── */
|
|
@@ -2052,19 +2261,21 @@
|
|
|
2052
2261
|
--gog-toast-warning-color: var(--gog-accent-bright);
|
|
2053
2262
|
--gog-toast-info-color: var(--gog-accent-color);
|
|
2054
2263
|
--gog-toast-accent-width: 4px;
|
|
2055
|
-
--gog-toast-padding: var(--gog-space-12) var(--gog-space-
|
|
2264
|
+
--gog-toast-padding: var(--gog-space-12) var(--gog-space-16);
|
|
2056
2265
|
--gog-toast-radius: 0px;
|
|
2057
|
-
--gog-toast-content-gap: var(--gog-space-
|
|
2266
|
+
--gog-toast-content-gap: var(--gog-space-12);
|
|
2058
2267
|
--gog-toast-main-gap: var(--gog-space-sm);
|
|
2059
|
-
--gog-toast-actions-gap: var(--gog-space-
|
|
2268
|
+
--gog-toast-actions-gap: var(--gog-space-8);
|
|
2060
2269
|
--gog-toast-message-font-size: var(--gog-text-sm);
|
|
2061
2270
|
--gog-toast-message-line-height: var(--gog-line-height-relaxed);
|
|
2062
2271
|
--gog-toast-icon-size: 1rem;
|
|
2063
2272
|
--gog-toast-icon-line-height: var(--gog-line-height-normal);
|
|
2064
2273
|
--gog-toast-action-padding: var(--gog-space-4) var(--gog-space-8);
|
|
2065
2274
|
--gog-toast-action-font-size: var(--gog-text-xs);
|
|
2066
|
-
--gog-toast-
|
|
2275
|
+
--gog-toast-action-line-height: var(--gog-line-height-none);
|
|
2276
|
+
--gog-toast-close-padding: var(--gog-space-4) var(--gog-space-8);
|
|
2067
2277
|
--gog-toast-close-font-size: var(--gog-text-xs);
|
|
2278
|
+
--gog-toast-close-line-height: var(--gog-line-height-none);
|
|
2068
2279
|
--gog-toast-progress-height: 3px;
|
|
2069
2280
|
--gog-toast-progress-opacity: 30%;
|
|
2070
2281
|
--gog-toast-transition-duration: 0.25s;
|
|
@@ -2093,6 +2304,10 @@
|
|
|
2093
2304
|
--gog-toggle-thumb-off-bg: var(--gog-surface-color);
|
|
2094
2305
|
--gog-toggle-thumb-on-bg: var(--gog-accent-text-color, var(--gog-primary-color));
|
|
2095
2306
|
--gog-toggle-thumb-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
|
|
2307
|
+
/* The thumb's clearance inside its own track, and off the 4px grid on purpose: at 2px the
|
|
2308
|
+
thumb is 83% of a 24px track, which is what makes a switch read as a switch, and 4px would
|
|
2309
|
+
take it to 67%. A length inside a single painted mark is not spacing between two things —
|
|
2310
|
+
`check-geometry.mjs` lists it in OPTICAL_CHROME with that reason. */
|
|
2096
2311
|
--gog-toggle-thumb-inset: 2px;
|
|
2097
2312
|
--gog-toggle-transition-duration: var(--gog-duration-base);
|
|
2098
2313
|
--gog-toggle-disabled-opacity: var(--gog-disabled-opacity);
|
|
@@ -2106,12 +2321,12 @@
|
|
|
2106
2321
|
--gog-toggle-state-font-weight: var(--gog-font-weight-semibold);
|
|
2107
2322
|
--gog-toggle-state-letter-spacing: 0.04em;
|
|
2108
2323
|
--gog-toggle-state-padding-inline: var(--gog-space-4);
|
|
2109
|
-
--gog-toggle-state-offset: var(--gog-space-
|
|
2324
|
+
--gog-toggle-state-offset: var(--gog-space-8);
|
|
2110
2325
|
/* Gap between the wording and the thumb parked at the opposite end. The clearance itself
|
|
2111
2326
|
(thumb size + this) is computed in the component stylesheet, not here: a `var(` to a
|
|
2112
2327
|
size-class token is substituted where it is *declared*, so doing that calc on :root would
|
|
2113
2328
|
freeze it to the md thumb and stop it scaling with `size`. */
|
|
2114
|
-
--gog-toggle-state-thumb-gap: var(--gog-space-
|
|
2329
|
+
--gog-toggle-state-thumb-gap: var(--gog-space-8);
|
|
2115
2330
|
--gog-toggle-xsm-track-width: 24px;
|
|
2116
2331
|
--gog-toggle-xsm-track-height: 14px;
|
|
2117
2332
|
--gog-toggle-xsm-thumb-size: 10px;
|
|
@@ -2137,14 +2352,21 @@
|
|
|
2137
2352
|
--gog-toggle-slg-thumb-size: 34px;
|
|
2138
2353
|
--gog-toggle-slg-label-size: var(--gog-control-checkbox-label-size-slg);
|
|
2139
2354
|
--gog-toggle-slg-state-font-size: 0.8125rem;
|
|
2355
|
+
--gog-toggle-state-line-height: var(--gog-line-height-none);
|
|
2140
2356
|
|
|
2141
2357
|
/* ── Tooltip ──────────────────────────────────────────────────────────────── */
|
|
2142
2358
|
--gog-tooltip-font-family: var(--gog-font-body);
|
|
2143
2359
|
--gog-tooltip-font-size: var(--gog-text-xs);
|
|
2144
2360
|
--gog-tooltip-line-height: var(--gog-line-height-normal);
|
|
2145
|
-
--gog-tooltip-padding: var(--gog-space-
|
|
2361
|
+
--gog-tooltip-padding: var(--gog-space-8) var(--gog-space-12);
|
|
2146
2362
|
--gog-tooltip-radius: var(--gog-radius);
|
|
2147
|
-
|
|
2363
|
+
/* L9 (docs/component-geometry.md, "D7 — taken"): the bubble wraps, so its cap is a measure —
|
|
2364
|
+
43ch at --gog-tooltip-font-size (12px), the nearest whole character to today's 280px so this
|
|
2365
|
+
changes robustness to a font-size change, not the pixels anyone sees today. It sits under
|
|
2366
|
+
Bringhurst's 45ch floor even so; widening it is a pixel decision this law does not make (see
|
|
2367
|
+
"D7 — taken"). L8's viewport exception is layered on top: no edge-inset token exists on this
|
|
2368
|
+
component today, so the margin reads the scale directly. */
|
|
2369
|
+
--gog-tooltip-max-width: min(43ch, calc(100vw - var(--gog-space-16) * 2));
|
|
2148
2370
|
/* Caps the gog-scroll wrapping the bubble's content — see tooltip-bubble.component.html.
|
|
2149
2371
|
A cap, not a fixed height: shorter content stays exactly as tall as it needs to be, this
|
|
2150
2372
|
only stops something unusually long (a multi-paragraph TemplateRef) from growing to
|
|
@@ -2211,6 +2433,18 @@
|
|
|
2211
2433
|
--gog-button-primary-hover-shadow: 0 0 16px
|
|
2212
2434
|
color-mix(in srgb, var(--gog-accent-bright) 45%, transparent);
|
|
2213
2435
|
--gog-button-ghost-hover-bg: color-mix(in srgb, var(--gog-accent-color) 12%, transparent);
|
|
2436
|
+
/* The table's header labels, one step off the raw accent and toward the page's ink. The
|
|
2437
|
+
accent alone is text on a tinted strip (`--gog-table-header-bg` is `--gog-hover-color`), and
|
|
2438
|
+
it read 4.15:1 in `light` and 4.32:1 in `one-light` — the only two themes it failed, and
|
|
2439
|
+
both by a margin small enough that a per-theme patch would have been the tempting fix. This
|
|
2440
|
+
is the general one: 20% of the ink lifts every theme (worst is now one-light at 5.09:1) and
|
|
2441
|
+
keeps the accent identity the header is drawn in. Flat fallback above stays the raw accent,
|
|
2442
|
+
which is what a browser without `color-mix()` has always shown. */
|
|
2443
|
+
--gog-table-accent-color: color-mix(
|
|
2444
|
+
in srgb,
|
|
2445
|
+
var(--gog-accent-color) 80%,
|
|
2446
|
+
var(--gog-text-color)
|
|
2447
|
+
);
|
|
2214
2448
|
/* Every other pressable surface, one rule: 20% of the same ingredient its own hover mixes at
|
|
2215
2449
|
10-12%, so the press is a clear step past the hover without becoming a fill. 20 rather than
|
|
2216
2450
|
a rounder 25 is measured, not chosen: `check:contrast` resolves these washes over the
|