@wildmason/aegis 1.12.0 → 1.13.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/themes.css +48 -21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wildmason/aegis",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "Aegis design system \u00e2\u20ac\u201d CSS tokens and Angular component library",
5
5
  "scripts": {
6
6
  "check:offline-fonts": "node scripts/check-offline-fonts.mjs",
package/themes.css CHANGED
@@ -275,14 +275,38 @@
275
275
  --wm-color-warning-readable: var(--wm-color-warning);
276
276
  --wm-color-success-readable: var(--wm-color-success);
277
277
 
278
- /* "Readable" accent — used in `color:` (text) contexts where WCAG AA
279
- contrast (4.5:1) must be met against bg-base / bg-raised / bg-float.
280
- Defaults to the theme's --wm-color-accent so most themes need no
281
- override; themes whose accent is too low-contrast for body text
282
- (currently Stone & Moss) override this to a lighter sibling while
283
- keeping --wm-color-accent itself for fills, focus rings, and other
284
- non-text usages where 3:1 (WCAG 1.4.11) is sufficient. Falls back
285
- to --wm-color-accent at use-time via CSS variable evaluation. */
278
+ /* "Readable" accent — the accent in `color:` (text) contexts: active tab
279
+ labels, current nav items, link-style buttons, the selected option in
280
+ `wm-select`. `--wm-color-accent` itself stays the interactive fill, where
281
+ 3:1 (WCAG 1.4.11) is the bar.
282
+
283
+ The bar here is APCA Lc 60 AND WCAG AA 4.5:1, against bg-base, bg-raised
284
+ and bg-float, and against each of those wearing the accent's own 10% tint
285
+ — `--wm-bg-active`, which is exactly what `.wm-select-option.is-selected`
286
+ paints behind this colour.
287
+
288
+ APCA is the binding one, and it is the reason every theme now carries an
289
+ override. This token was tuned to WCAG alone, and on that bar it looked
290
+ healthy: the worst reading across all twelve themes was 4.52:1, comfortably
291
+ passing. On APCA, ELEVEN of the twelve failed Lc 60 on a bare surface, and
292
+ all twelve failed once the tint was included — including the two themes
293
+ that already carried a hand-tuned override for the WCAG failure. The two
294
+ models disagree here in the opposite direction to the destructive button,
295
+ where WCAG was the strict one: WCAG 2.x's luminance formula is generous to
296
+ mid-tone coloured text on a mid-tone ground, which is precisely this case.
297
+ Both bars are held rather than one being argued away.
298
+
299
+ `--wm-bg-float` binds on ten of the twelve. `sage-linen` binds on
300
+ bg-raised instead, because a light theme's sidebar is conventionally darker
301
+ than its canvas and its float is the lighter surface.
302
+
303
+ Each value is the nearest colour to the theme's own accent that clears
304
+ Lc 61, found by holding hue and chroma in OKLCH and walking lightness only,
305
+ so it stays that theme's blue, pink or sage. The target is 61 rather than
306
+ the 60 that is actually required: tuning to the bar exactly put
307
+ posh-sandalwood on Lc 60.0, which the guard read as a failure and which a
308
+ single hex rounding would have flipped either way. Guarded by
309
+ scripts/check-semantic-contrast.mjs. */
286
310
  --wm-color-accent-readable: var(--wm-color-accent);
287
311
  }
288
312
 
@@ -317,6 +341,7 @@
317
341
  --wm-color-accent: #105987;
318
342
  --wm-color-accent-hover: #2aa198;
319
343
  --wm-color-accent-text: #ffffff;
344
+ --wm-color-accent-readable: #004066;
320
345
 
321
346
  /* Semantic */
322
347
  --wm-color-success: #485600;
@@ -386,6 +411,7 @@
386
411
  --wm-color-accent: #1b4a9e;
387
412
  --wm-color-accent-hover: #3061af;
388
413
  --wm-color-accent-text: #ffffff;
414
+ --wm-color-accent-readable: #033285;
389
415
 
390
416
  /* Semantic */
391
417
  --wm-color-success: #085a50;
@@ -461,6 +487,7 @@
461
487
  --wm-color-accent: #8fc4d3;
462
488
  --wm-color-accent-hover: #81a1c1;
463
489
  --wm-color-accent-text: #2e3440;
490
+ --wm-color-accent-readable: #a5dbea;
464
491
 
465
492
  /* Semantic */
466
493
  --wm-color-success: #b5cf9a;
@@ -537,6 +564,7 @@
537
564
  --wm-color-accent: #c9a7fa;
538
565
  --wm-color-accent-hover: #ff79c6;
539
566
  --wm-color-accent-text: #282a36;
567
+ --wm-color-accent-readable: #dcc6fe;
540
568
 
541
569
  /* Semantic */
542
570
  --wm-color-success: #50fa7b;
@@ -611,6 +639,7 @@
611
639
  --wm-color-accent: #f5986a;
612
640
  --wm-color-accent-hover: #f08458;
613
641
  --wm-color-accent-text: #1c1d2e;
642
+ --wm-color-accent-readable: #fead85;
614
643
 
615
644
  /* Semantic */
616
645
  --wm-color-success: #5cbfa0;
@@ -686,6 +715,7 @@
686
715
  --wm-color-accent: #c4a8d8;
687
716
  --wm-color-accent-hover: #9e7abf;
688
717
  --wm-color-accent-text: #1a1715;
718
+ --wm-color-accent-readable: #d8bced;
689
719
 
690
720
  /* Semantic */
691
721
  --wm-color-success: #7ac4a0;
@@ -756,6 +786,7 @@
756
786
  --wm-color-accent: #185c78;
757
787
  --wm-color-accent-hover: #1e6e96;
758
788
  --wm-color-accent-text: #ffffff;
789
+ --wm-color-accent-readable: #00374c;
759
790
 
760
791
  /* Semantic */
761
792
  --wm-color-success: #006036;
@@ -831,13 +862,9 @@
831
862
  --wm-color-accent: #f92672;
832
863
  --wm-color-accent-hover: #fd971f;
833
864
  --wm-color-accent-text: #1c1c15;
834
- /* Lighter pink sibling for "accent as text" contexts (active nav
835
- items, tab labels, link-style buttons). #f92672 fails WCAG AA
836
- 4.5:1 on bg-float (2.9:1) and on the accent-tinted settings-nav
837
- background (3.6:1); #ff8ac4 clears 5.03:1 on bg-float while
838
- staying in the hot-pink hue family. Used wherever components
839
- reference --wm-color-accent-readable instead of --wm-color-accent. */
840
- --wm-color-accent-readable: #ff8ac4;
865
+ /* #ff8ac4 was chosen for the WCAG failure (#f92672 is 2.9:1 on bg-float) and
866
+ cleared 5.03:1, but measures APCA Lc 51.4 there. See the note in :root. */
867
+ --wm-color-accent-readable: #ffabd1;
841
868
 
842
869
  /* Semantic */
843
870
  --wm-color-success: #a6e22e;
@@ -913,6 +940,7 @@
913
940
  --wm-color-accent: #c09d06;
914
941
  --wm-color-accent-hover: #b15000;
915
942
  --wm-color-accent-text: #060810;
943
+ --wm-color-accent-readable: #dcb83a;
916
944
 
917
945
  /* Semantic */
918
946
  --wm-color-success: #4aba80;
@@ -989,6 +1017,7 @@
989
1017
  --wm-color-accent: #3fb950;
990
1018
  --wm-color-accent-hover: #58a6ff;
991
1019
  --wm-color-accent-text: #0d1117;
1020
+ --wm-color-accent-readable: #5dd46a;
992
1021
 
993
1022
  /* Semantic */
994
1023
  --wm-color-success: #3fb950;
@@ -1065,12 +1094,9 @@
1065
1094
  --wm-color-accent: #82a682;
1066
1095
  --wm-color-accent-hover: #94b894;
1067
1096
  --wm-color-accent-text: #161817;
1068
- /* Brighter sage variant for "accent as text" contexts (active tab
1069
- labels, current nav items, link-style buttons). #82a682 fails
1070
- WCAG AA 4.5:1 against bg-float (3.30:1); #9bc99b clears 4.74:1
1071
- while staying in the moss-green hue family. Used wherever components
1072
- reference --wm-color-accent-readable instead of --wm-color-accent. */
1073
- --wm-color-accent-readable: #9bc99b;
1097
+ /* #9bc99b was chosen for the WCAG failure (#82a682 is 3.30:1 on bg-float) and
1098
+ cleared 4.74:1, but measures APCA Lc 54.3 there. See the note in :root. */
1099
+ --wm-color-accent-readable: #abdaab;
1074
1100
 
1075
1101
  /* Semantic */
1076
1102
  --wm-color-success: #a0c5a0;
@@ -1140,6 +1166,7 @@
1140
1166
  --wm-color-accent: #3a5a43;
1141
1167
  --wm-color-accent-hover: #2c4733;
1142
1168
  --wm-color-accent-text: #eaf0e7;
1169
+ --wm-color-accent-readable: #203f2a;
1143
1170
 
1144
1171
  /* Semantic */
1145
1172
  --wm-color-success: #3a6b48;