@rackbops/styles 0.2.3 → 0.2.4

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.
@@ -53,6 +53,10 @@ true pills for badges/progress; warm-toned diffused shadows (deepened to
53
53
  near-black for the dark ground); transitions `0.18s`; 4px spacing rhythm; the
54
54
  one gradient rationed to the active-tab underline only.
55
55
 
56
+ ## Accessibility
57
+
58
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
59
+
56
60
  ## Components
57
61
 
58
62
  Class prefix `rb-`; the full amber-hearth inventory, styled identically from
@@ -75,6 +75,12 @@ progress fill and every other surface stay solid.
75
75
  `--rb-accent-wash` ring.
76
76
  - 4px spacing rhythm (`--rb-space-1..5`).
77
77
 
78
+ ## Accessibility
79
+
80
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). One note beyond the tested pairs:
81
+
82
+ - **`--rb-accent` as bare `<a>` link text is ~4.47:1 on `--rb-bg`** -- essentially at the 4.5:1 AA text bar, and ~4.9:1 on `--rb-surface`, which clears it. It clears the 3:1 non-text/focus target the test checks `--rb-accent` against (accent is contracted as a non-text element, not body text).
83
+
78
84
  ## Components
79
85
 
80
86
  Class prefix `rb-`; shared token/class contract with the other themes. No
@@ -75,6 +75,10 @@ Muted-on-surface is tuned to clear WCAG AA (4.5:1) on every surface; the light
75
75
  `prefers-reduced-motion`.
76
76
  - 4px spacing rhythm (`--rb-space-1..5`).
77
77
 
78
+ ## Accessibility
79
+
80
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
81
+
78
82
  ## Components
79
83
 
80
84
  Class prefix `rb-`; shared token/class contract with the other themes.
@@ -66,6 +66,10 @@ same mono voice with `--rb-space-3` margin, and bare `ul`/`ol` add
66
66
  - Transitions `0.15s`; every animation respects `prefers-reduced-motion`.
67
67
  - 4px spacing rhythm.
68
68
 
69
+ ## Accessibility
70
+
71
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
72
+
69
73
  ## Components
70
74
 
71
75
  Class prefix `rb-`; the full arcane-obsidian inventory, styled identically from
@@ -85,6 +85,10 @@ gradient has no soft midpoint.
85
85
  respects `prefers-reduced-motion`.
86
86
  - 4px spacing rhythm (`--rb-space-1..5`).
87
87
 
88
+ ## Accessibility
89
+
90
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
91
+
88
92
  ## Components
89
93
 
90
94
  Class prefix `rb-`; shared token/class contract with the other themes (the
@@ -59,6 +59,12 @@ shadows instead of blur, a hard border-weight focus change on form controls
59
59
  rationed gradient on the active-tab underline only, and `0.1s` snap
60
60
  transitions.
61
61
 
62
+ ## Accessibility
63
+
64
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). One note beyond the tested pairs:
65
+
66
+ - **`--rb-accent` as bare `<a>` link text is below the 4.5:1 AA text bar** -- ~4.0:1 on `--rb-bg` and ~4.4:1 on `--rb-surface`. It clears the 3:1 non-text/focus target the test checks `--rb-accent` against (accent is contracted as a non-text element, not body text); reserve accent link text for non-essential navigation.
67
+
62
68
  ## Components
63
69
 
64
70
  Identical to concrete-signal — see its `design.md` for per-component notes;
package/contract.json CHANGED
@@ -162,5 +162,21 @@
162
162
  "summer-cloud/button.css": ["#4a0000"],
163
163
  "rackbops-noir/rack.css": ["#0a121a", "#e7eef4", "#7d90a2", "#1e2b37"],
164
164
  "rackbops-studio/rack.css": ["#101a24", "#e7eef4", "#7d90a2", "#26333f"]
165
+ },
166
+ "contrast": {
167
+ "//": "WCAG contrast for the fixed token pairs, computed from each theme's tokens.css by styles/test/contrast.test.mjs (STANDARD.md 9). `min` is the ratio floor; `warnBelow` (text-faint only) diagnoses -- does not fail -- a value under AA that still clears the 3:1 non-text floor. A failing pair is fixed in the tokens or entered in `allowlist` with the design.md line documenting it.",
168
+ "pairs": [
169
+ { "fg": "text", "bg": "bg", "min": 4.5 },
170
+ { "fg": "text", "bg": "surface", "min": 4.5 },
171
+ { "fg": "text", "bg": "surface-2", "min": 4.5 },
172
+ { "fg": "text-soft", "bg": "bg", "min": 4.5 },
173
+ { "fg": "text-soft", "bg": "surface", "min": 4.5 },
174
+ { "fg": "accent-fg", "bg": "accent", "min": 4.5 },
175
+ { "fg": "accent", "bg": "bg", "min": 3.0 },
176
+ { "fg": "text-faint", "bg": "surface", "min": 3.0, "warnBelow": 4.5 }
177
+ ],
178
+ "allowlist": [
179
+ { "theme": "rackbops-studio", "fg": "accent-fg", "bg": "accent", "reason": "white on the vermillion accent fill is ~3.6:1 -- rackbops.com editorial fidelity; spent only on large/bold .rb-btn--accent and .rb-btn--primary hover text (large-text AA is 3:1), never small labels or essential body copy", "doc": "rackbops-studio/design.md:96-98" }
180
+ ]
165
181
  }
166
182
  }
@@ -85,6 +85,10 @@ disc/decimal markers, not stripped).
85
85
  lean on glow. Transitions 0.3s. Respect `prefers-reduced-motion`.
86
86
  - 8px spacing rhythm; generous negative space so glows can breathe.
87
87
 
88
+ ## Accessibility
89
+
90
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
91
+
88
92
  ## Components
89
93
 
90
94
  Class prefix `rb-` (shared token/class contract with the other themes).
@@ -85,6 +85,10 @@ and the accent itself is spent sparingly — never for decoration.
85
85
  respects `prefers-reduced-motion`.
86
86
  - Spacing rhythm `--rb-space-1..5` (0.25rem to 1.5rem).
87
87
 
88
+ ## Accessibility
89
+
90
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
91
+
88
92
  ## Components
89
93
 
90
94
  Class prefix `rb-`; shared token/class contract with the other themes (the
@@ -76,6 +76,10 @@ token stack falls back to `ui-monospace`.
76
76
  - Transitions 0.3s; hover motion is a 4px `translateX` slide on links.
77
77
  - Respect `prefers-reduced-motion`.
78
78
 
79
+ ## Accessibility
80
+
81
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
82
+
79
83
  ## Components
80
84
 
81
85
  Class prefix `rb-`. Variants use BEM-ish modifiers (`rb-btn--accent`).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rackbops/styles",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "Rackbops design-system styles: tokens, base styles, and component classes per theme.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -65,6 +65,12 @@ unclassed headlines, `--rb-space-3` margin on headings/paragraphs/lists, and
65
65
  rack equaliser bars.
66
66
  - Every animation respects `prefers-reduced-motion`.
67
67
 
68
+ ## Accessibility
69
+
70
+ The token pairs `styles/test/contrast.test.mjs` computes clear their WCAG targets, with one below-AA note the test emits as a warning (not a failure):
71
+
72
+ - **`--rb-text-faint` on `--rb-surface` is ~3.8:1** -- below the 4.5:1 AA bar for normal text, above the 3:1 floor. Use it only for genuinely secondary meta (idle labels, footnotes, timestamps), never essential text; the shared `.rb-table` header uses `--rb-text-soft`, which passes.
73
+
68
74
  ## Components
69
75
 
70
76
  Class prefix `rb-`; the full rackbops-studio inventory, styled identically from
@@ -103,6 +103,11 @@ consumers can compensate rather than discover it:
103
103
  default chip, the active link/tab — sit near ~4.3:1). Reach for it where
104
104
  full-contrast UI matters.
105
105
 
106
+ These are the ratios `styles/test/contrast.test.mjs` checks: `--rb-accent-fg` on
107
+ `--rb-accent` (~3.6:1) is allowlisted in `contract.json`'s `contrast` block, and
108
+ `--rb-text-faint` on `--rb-surface` (~3.2:1) is emitted as a below-AA warning;
109
+ the remaining pairs clear their targets.
110
+
106
111
  ## Components
107
112
 
108
113
  Class prefix `rb-`; shared token/class contract with the other themes.
@@ -109,6 +109,10 @@ family.
109
109
  - Spacing is strictly multiples of 8px. When in doubt, add 8.
110
110
  - Respect `prefers-reduced-motion` — every transform is dropped.
111
111
 
112
+ ## Accessibility
113
+
114
+ The token pairs `styles/test/contrast.test.mjs` computes -- `--rb-text` / `--rb-text-soft` on their surfaces, `--rb-accent-fg` on `--rb-accent`, `--rb-accent` as non-text on `--rb-bg`, and `--rb-text-faint` on `--rb-surface` -- all clear their WCAG targets (4.5:1 text, 3:1 non-text; faint clears AA here too). No deviations.
115
+
112
116
  ## Components
113
117
 
114
118
  Class prefix `rb-` (shared across themes so `@rackbops/ui-react` stays