@dataimago/tokens 0.1.0-alpha.15 → 0.1.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.cjs +89 -0
- package/dist/index.mjs +89 -0
- package/dist/tokens.css +30 -1
- package/dist/tokens.scss +30 -1
- package/dist/tokens.studio.json +112 -0
- package/dist/tokens.w3c.dtcg.json +128 -0
- package/package.json +1 -1
- package/src/dataviz.json +93 -0
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ Canonical design tokens for the dataimago ethical AI design system.
|
|
|
5
5
|
## What's in the box
|
|
6
6
|
|
|
7
7
|
- `src/*.json` — the hand-authored JSON sources (colors, typography, spacing, effects, etc.).
|
|
8
|
-
- `dist/tokens.css` / `dist/tokens.scss` — CSS custom properties emitted from the JSON sources, theme-aware (`[data-bs-theme]` + `prefers-color-scheme`).
|
|
8
|
+
- `dist/tokens.css` / `dist/tokens.scss` — CSS custom properties emitted from the JSON sources, theme-aware (`[data-bs-theme]` + `prefers-color-scheme`). The system preference applies only while the root has no `data-bs-theme="light"`, so an explicit choice (e.g. `@dataimago/ui`'s `ThemeToggle`) wins in both directions.
|
|
9
9
|
- `dist/index.{mjs,cjs,d.ts}` — typed JS/TS imports for token values.
|
|
10
10
|
- `dist/tokens.dtcg.json` — additive DTCG-style export for tools and agents. It does not replace the current runtime JSON shape.
|
|
11
11
|
|
package/dist/index.cjs
CHANGED
|
@@ -146,6 +146,95 @@ const tokens = {
|
|
|
146
146
|
"dark": "#ff0000",
|
|
147
147
|
"description": "Signature monogram red — mode-aware for AA-normal. LIGHT: deepened #cc0000 (5.0:1 on stone-100 #ededeb / 5.5:1 on elevated — full AA-normal, safe at small sizes / as text). DARK: vivid #ff0000 fallback + display-P3 primary red (4.6:1 on ink-900 — AA-normal). Logo-mark color only — NOT the interactive accent (which is iteration-2 blue). Large navbar lift-wash marks keep the vivid display-P3 red (AA-large, large-mark use); this token is the AA-normal value for arbitrary/small mark reuse."
|
|
148
148
|
}
|
|
149
|
+
},
|
|
150
|
+
"dataviz": {
|
|
151
|
+
"okabe-ito": {
|
|
152
|
+
"orange": {
|
|
153
|
+
"value": "#E69F00",
|
|
154
|
+
"description": "Okabe-Ito orange (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
155
|
+
},
|
|
156
|
+
"sky-blue": {
|
|
157
|
+
"value": "#56B4E9",
|
|
158
|
+
"description": "Okabe-Ito sky blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
159
|
+
},
|
|
160
|
+
"bluish-green": {
|
|
161
|
+
"value": "#009E73",
|
|
162
|
+
"description": "Okabe-Ito bluish green (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
163
|
+
},
|
|
164
|
+
"yellow": {
|
|
165
|
+
"value": "#F0E442",
|
|
166
|
+
"description": "Okabe-Ito yellow — 1.13:1 on the light page: never use it without a mark outline or a label (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
167
|
+
},
|
|
168
|
+
"blue": {
|
|
169
|
+
"value": "#0072B2",
|
|
170
|
+
"description": "Okabe-Ito blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
171
|
+
},
|
|
172
|
+
"vermillion": {
|
|
173
|
+
"value": "#D55E00",
|
|
174
|
+
"description": "Okabe-Ito vermillion (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
175
|
+
},
|
|
176
|
+
"reddish-purple": {
|
|
177
|
+
"value": "#CC79A7",
|
|
178
|
+
"description": "Okabe-Ito reddish purple (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
179
|
+
},
|
|
180
|
+
"black": {
|
|
181
|
+
"light": "#000000",
|
|
182
|
+
"dark": "#FDF9F2",
|
|
183
|
+
"description": "Okabe-Ito black (Okabe & Ito 2008). In dark mode it becomes content.primary.dark: #000000 is 1.14:1 on the dark page. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"categorical": {
|
|
187
|
+
"1": {
|
|
188
|
+
"value": "#E69F00",
|
|
189
|
+
"description": "= okabe-ito.orange (slot 1, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
190
|
+
},
|
|
191
|
+
"2": {
|
|
192
|
+
"value": "#56B4E9",
|
|
193
|
+
"description": "= okabe-ito.sky-blue (slot 2, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
194
|
+
},
|
|
195
|
+
"3": {
|
|
196
|
+
"value": "#009E73",
|
|
197
|
+
"description": "= okabe-ito.bluish-green (slot 3, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
198
|
+
},
|
|
199
|
+
"4": {
|
|
200
|
+
"value": "#F0E442",
|
|
201
|
+
"description": "= okabe-ito.yellow (slot 4, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
202
|
+
},
|
|
203
|
+
"5": {
|
|
204
|
+
"value": "#0072B2",
|
|
205
|
+
"description": "= okabe-ito.blue (slot 5, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
206
|
+
},
|
|
207
|
+
"6": {
|
|
208
|
+
"value": "#D55E00",
|
|
209
|
+
"description": "= okabe-ito.vermillion (slot 6, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
210
|
+
},
|
|
211
|
+
"7": {
|
|
212
|
+
"value": "#CC79A7",
|
|
213
|
+
"description": "= okabe-ito.reddish-purple (slot 7, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
214
|
+
},
|
|
215
|
+
"8": {
|
|
216
|
+
"light": "#000000",
|
|
217
|
+
"dark": "#FDF9F2",
|
|
218
|
+
"description": "= okabe-ito.black (slot 8, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"uncertainty": {
|
|
222
|
+
"outer": {
|
|
223
|
+
"light": "#D6D6D6",
|
|
224
|
+
"dark": "#333333",
|
|
225
|
+
"description": "Outermost nested uncertainty band (gray 0.84 in the LIwLD PSTricks figures). The ramp is mirrored in dark mode so the innermost band stays the strongest. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
226
|
+
},
|
|
227
|
+
"union": {
|
|
228
|
+
"light": "#9E9E9E",
|
|
229
|
+
"dark": "#6B6B6B",
|
|
230
|
+
"description": "Union band (gray 0.62); mirrored in dark mode. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
231
|
+
},
|
|
232
|
+
"inner": {
|
|
233
|
+
"light": "#333333",
|
|
234
|
+
"dark": "#D6D6D6",
|
|
235
|
+
"description": "Innermost band (gray 0.20); mirrored in dark mode, where #333333 would be 1.46:1. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
236
|
+
}
|
|
237
|
+
}
|
|
149
238
|
}
|
|
150
239
|
},
|
|
151
240
|
"spacing": {
|
package/dist/index.mjs
CHANGED
|
@@ -146,6 +146,95 @@ const tokens = {
|
|
|
146
146
|
"dark": "#ff0000",
|
|
147
147
|
"description": "Signature monogram red — mode-aware for AA-normal. LIGHT: deepened #cc0000 (5.0:1 on stone-100 #ededeb / 5.5:1 on elevated — full AA-normal, safe at small sizes / as text). DARK: vivid #ff0000 fallback + display-P3 primary red (4.6:1 on ink-900 — AA-normal). Logo-mark color only — NOT the interactive accent (which is iteration-2 blue). Large navbar lift-wash marks keep the vivid display-P3 red (AA-large, large-mark use); this token is the AA-normal value for arbitrary/small mark reuse."
|
|
148
148
|
}
|
|
149
|
+
},
|
|
150
|
+
"dataviz": {
|
|
151
|
+
"okabe-ito": {
|
|
152
|
+
"orange": {
|
|
153
|
+
"value": "#E69F00",
|
|
154
|
+
"description": "Okabe-Ito orange (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
155
|
+
},
|
|
156
|
+
"sky-blue": {
|
|
157
|
+
"value": "#56B4E9",
|
|
158
|
+
"description": "Okabe-Ito sky blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
159
|
+
},
|
|
160
|
+
"bluish-green": {
|
|
161
|
+
"value": "#009E73",
|
|
162
|
+
"description": "Okabe-Ito bluish green (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
163
|
+
},
|
|
164
|
+
"yellow": {
|
|
165
|
+
"value": "#F0E442",
|
|
166
|
+
"description": "Okabe-Ito yellow — 1.13:1 on the light page: never use it without a mark outline or a label (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
167
|
+
},
|
|
168
|
+
"blue": {
|
|
169
|
+
"value": "#0072B2",
|
|
170
|
+
"description": "Okabe-Ito blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
171
|
+
},
|
|
172
|
+
"vermillion": {
|
|
173
|
+
"value": "#D55E00",
|
|
174
|
+
"description": "Okabe-Ito vermillion (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
175
|
+
},
|
|
176
|
+
"reddish-purple": {
|
|
177
|
+
"value": "#CC79A7",
|
|
178
|
+
"description": "Okabe-Ito reddish purple (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
179
|
+
},
|
|
180
|
+
"black": {
|
|
181
|
+
"light": "#000000",
|
|
182
|
+
"dark": "#FDF9F2",
|
|
183
|
+
"description": "Okabe-Ito black (Okabe & Ito 2008). In dark mode it becomes content.primary.dark: #000000 is 1.14:1 on the dark page. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"categorical": {
|
|
187
|
+
"1": {
|
|
188
|
+
"value": "#E69F00",
|
|
189
|
+
"description": "= okabe-ito.orange (slot 1, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
190
|
+
},
|
|
191
|
+
"2": {
|
|
192
|
+
"value": "#56B4E9",
|
|
193
|
+
"description": "= okabe-ito.sky-blue (slot 2, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
194
|
+
},
|
|
195
|
+
"3": {
|
|
196
|
+
"value": "#009E73",
|
|
197
|
+
"description": "= okabe-ito.bluish-green (slot 3, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
198
|
+
},
|
|
199
|
+
"4": {
|
|
200
|
+
"value": "#F0E442",
|
|
201
|
+
"description": "= okabe-ito.yellow (slot 4, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
202
|
+
},
|
|
203
|
+
"5": {
|
|
204
|
+
"value": "#0072B2",
|
|
205
|
+
"description": "= okabe-ito.blue (slot 5, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
206
|
+
},
|
|
207
|
+
"6": {
|
|
208
|
+
"value": "#D55E00",
|
|
209
|
+
"description": "= okabe-ito.vermillion (slot 6, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
210
|
+
},
|
|
211
|
+
"7": {
|
|
212
|
+
"value": "#CC79A7",
|
|
213
|
+
"description": "= okabe-ito.reddish-purple (slot 7, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
214
|
+
},
|
|
215
|
+
"8": {
|
|
216
|
+
"light": "#000000",
|
|
217
|
+
"dark": "#FDF9F2",
|
|
218
|
+
"description": "= okabe-ito.black (slot 8, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"uncertainty": {
|
|
222
|
+
"outer": {
|
|
223
|
+
"light": "#D6D6D6",
|
|
224
|
+
"dark": "#333333",
|
|
225
|
+
"description": "Outermost nested uncertainty band (gray 0.84 in the LIwLD PSTricks figures). The ramp is mirrored in dark mode so the innermost band stays the strongest. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
226
|
+
},
|
|
227
|
+
"union": {
|
|
228
|
+
"light": "#9E9E9E",
|
|
229
|
+
"dark": "#6B6B6B",
|
|
230
|
+
"description": "Union band (gray 0.62); mirrored in dark mode. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
231
|
+
},
|
|
232
|
+
"inner": {
|
|
233
|
+
"light": "#333333",
|
|
234
|
+
"dark": "#D6D6D6",
|
|
235
|
+
"description": "Innermost band (gray 0.20); mirrored in dark mode, where #333333 would be 1.46:1. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
236
|
+
}
|
|
237
|
+
}
|
|
149
238
|
}
|
|
150
239
|
},
|
|
151
240
|
"spacing": {
|
package/dist/tokens.css
CHANGED
|
@@ -116,6 +116,20 @@
|
|
|
116
116
|
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
117
117
|
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
118
118
|
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
119
|
+
--color-dataviz-okabe-ito-orange: #E69F00;
|
|
120
|
+
--color-dataviz-okabe-ito-sky-blue: #56B4E9;
|
|
121
|
+
--color-dataviz-okabe-ito-bluish-green: #009E73;
|
|
122
|
+
--color-dataviz-okabe-ito-yellow: #F0E442;
|
|
123
|
+
--color-dataviz-okabe-ito-blue: #0072B2;
|
|
124
|
+
--color-dataviz-okabe-ito-vermillion: #D55E00;
|
|
125
|
+
--color-dataviz-okabe-ito-reddish-purple: #CC79A7;
|
|
126
|
+
--color-dataviz-categorical-1: #E69F00;
|
|
127
|
+
--color-dataviz-categorical-2: #56B4E9;
|
|
128
|
+
--color-dataviz-categorical-3: #009E73;
|
|
129
|
+
--color-dataviz-categorical-4: #F0E442;
|
|
130
|
+
--color-dataviz-categorical-5: #0072B2;
|
|
131
|
+
--color-dataviz-categorical-6: #D55E00;
|
|
132
|
+
--color-dataviz-categorical-7: #CC79A7;
|
|
119
133
|
}
|
|
120
134
|
|
|
121
135
|
:root, [data-bs-theme="light"] {
|
|
@@ -183,6 +197,11 @@
|
|
|
183
197
|
--border-focus: #3498DB;
|
|
184
198
|
--navigation-hover-background: rgba(20, 20, 16, 0.05);
|
|
185
199
|
--navigation-active-background: rgba(20, 20, 16, 0.1);
|
|
200
|
+
--color-dataviz-okabe-ito-black: #000000;
|
|
201
|
+
--color-dataviz-categorical-8: #000000;
|
|
202
|
+
--color-dataviz-uncertainty-outer: #D6D6D6;
|
|
203
|
+
--color-dataviz-uncertainty-union: #9E9E9E;
|
|
204
|
+
--color-dataviz-uncertainty-inner: #333333;
|
|
186
205
|
}
|
|
187
206
|
|
|
188
207
|
[data-bs-theme="dark"] {
|
|
@@ -250,10 +269,15 @@
|
|
|
250
269
|
--border-focus: #4FC3F7;
|
|
251
270
|
--navigation-hover-background: rgba(237, 237, 235, 0.05);
|
|
252
271
|
--navigation-active-background: rgba(237, 237, 235, 0.1);
|
|
272
|
+
--color-dataviz-okabe-ito-black: #FDF9F2;
|
|
273
|
+
--color-dataviz-categorical-8: #FDF9F2;
|
|
274
|
+
--color-dataviz-uncertainty-outer: #333333;
|
|
275
|
+
--color-dataviz-uncertainty-union: #6B6B6B;
|
|
276
|
+
--color-dataviz-uncertainty-inner: #D6D6D6;
|
|
253
277
|
}
|
|
254
278
|
|
|
255
279
|
@media (prefers-color-scheme: dark) {
|
|
256
|
-
:root {
|
|
280
|
+
:root:where(:not([data-bs-theme="light"])) {
|
|
257
281
|
--color-surface-page: #141410;
|
|
258
282
|
--color-surface-page: color(display-p3 0.0784 0.0784 0.0643);
|
|
259
283
|
--color-surface-page-scrolled: #141410;
|
|
@@ -318,5 +342,10 @@
|
|
|
318
342
|
--border-focus: #4FC3F7;
|
|
319
343
|
--navigation-hover-background: rgba(237, 237, 235, 0.05);
|
|
320
344
|
--navigation-active-background: rgba(237, 237, 235, 0.1);
|
|
345
|
+
--color-dataviz-okabe-ito-black: #FDF9F2;
|
|
346
|
+
--color-dataviz-categorical-8: #FDF9F2;
|
|
347
|
+
--color-dataviz-uncertainty-outer: #333333;
|
|
348
|
+
--color-dataviz-uncertainty-union: #6B6B6B;
|
|
349
|
+
--color-dataviz-uncertainty-inner: #D6D6D6;
|
|
321
350
|
}
|
|
322
351
|
}
|
package/dist/tokens.scss
CHANGED
|
@@ -116,6 +116,20 @@
|
|
|
116
116
|
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
117
117
|
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
118
118
|
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
119
|
+
--color-dataviz-okabe-ito-orange: #E69F00;
|
|
120
|
+
--color-dataviz-okabe-ito-sky-blue: #56B4E9;
|
|
121
|
+
--color-dataviz-okabe-ito-bluish-green: #009E73;
|
|
122
|
+
--color-dataviz-okabe-ito-yellow: #F0E442;
|
|
123
|
+
--color-dataviz-okabe-ito-blue: #0072B2;
|
|
124
|
+
--color-dataviz-okabe-ito-vermillion: #D55E00;
|
|
125
|
+
--color-dataviz-okabe-ito-reddish-purple: #CC79A7;
|
|
126
|
+
--color-dataviz-categorical-1: #E69F00;
|
|
127
|
+
--color-dataviz-categorical-2: #56B4E9;
|
|
128
|
+
--color-dataviz-categorical-3: #009E73;
|
|
129
|
+
--color-dataviz-categorical-4: #F0E442;
|
|
130
|
+
--color-dataviz-categorical-5: #0072B2;
|
|
131
|
+
--color-dataviz-categorical-6: #D55E00;
|
|
132
|
+
--color-dataviz-categorical-7: #CC79A7;
|
|
119
133
|
}
|
|
120
134
|
|
|
121
135
|
:root, [data-bs-theme="light"] {
|
|
@@ -183,6 +197,11 @@
|
|
|
183
197
|
--border-focus: #3498DB;
|
|
184
198
|
--navigation-hover-background: rgba(20, 20, 16, 0.05);
|
|
185
199
|
--navigation-active-background: rgba(20, 20, 16, 0.1);
|
|
200
|
+
--color-dataviz-okabe-ito-black: #000000;
|
|
201
|
+
--color-dataviz-categorical-8: #000000;
|
|
202
|
+
--color-dataviz-uncertainty-outer: #D6D6D6;
|
|
203
|
+
--color-dataviz-uncertainty-union: #9E9E9E;
|
|
204
|
+
--color-dataviz-uncertainty-inner: #333333;
|
|
186
205
|
}
|
|
187
206
|
|
|
188
207
|
[data-bs-theme="dark"] {
|
|
@@ -250,10 +269,15 @@
|
|
|
250
269
|
--border-focus: #4FC3F7;
|
|
251
270
|
--navigation-hover-background: rgba(237, 237, 235, 0.05);
|
|
252
271
|
--navigation-active-background: rgba(237, 237, 235, 0.1);
|
|
272
|
+
--color-dataviz-okabe-ito-black: #FDF9F2;
|
|
273
|
+
--color-dataviz-categorical-8: #FDF9F2;
|
|
274
|
+
--color-dataviz-uncertainty-outer: #333333;
|
|
275
|
+
--color-dataviz-uncertainty-union: #6B6B6B;
|
|
276
|
+
--color-dataviz-uncertainty-inner: #D6D6D6;
|
|
253
277
|
}
|
|
254
278
|
|
|
255
279
|
@media (prefers-color-scheme: dark) {
|
|
256
|
-
:root {
|
|
280
|
+
:root:where(:not([data-bs-theme="light"])) {
|
|
257
281
|
--color-surface-page: #141410;
|
|
258
282
|
--color-surface-page: color(display-p3 0.0784 0.0784 0.0643);
|
|
259
283
|
--color-surface-page-scrolled: #141410;
|
|
@@ -318,5 +342,10 @@
|
|
|
318
342
|
--border-focus: #4FC3F7;
|
|
319
343
|
--navigation-hover-background: rgba(237, 237, 235, 0.05);
|
|
320
344
|
--navigation-active-background: rgba(237, 237, 235, 0.1);
|
|
345
|
+
--color-dataviz-okabe-ito-black: #FDF9F2;
|
|
346
|
+
--color-dataviz-categorical-8: #FDF9F2;
|
|
347
|
+
--color-dataviz-uncertainty-outer: #333333;
|
|
348
|
+
--color-dataviz-uncertainty-union: #6B6B6B;
|
|
349
|
+
--color-dataviz-uncertainty-inner: #D6D6D6;
|
|
321
350
|
}
|
|
322
351
|
}
|
package/dist/tokens.studio.json
CHANGED
|
@@ -126,6 +126,90 @@
|
|
|
126
126
|
"value": "#cc0000",
|
|
127
127
|
"type": "color"
|
|
128
128
|
}
|
|
129
|
+
},
|
|
130
|
+
"dataviz": {
|
|
131
|
+
"okabe-ito": {
|
|
132
|
+
"orange": {
|
|
133
|
+
"value": "#E69F00",
|
|
134
|
+
"type": "color"
|
|
135
|
+
},
|
|
136
|
+
"sky-blue": {
|
|
137
|
+
"value": "#56B4E9",
|
|
138
|
+
"type": "color"
|
|
139
|
+
},
|
|
140
|
+
"bluish-green": {
|
|
141
|
+
"value": "#009E73",
|
|
142
|
+
"type": "color"
|
|
143
|
+
},
|
|
144
|
+
"yellow": {
|
|
145
|
+
"value": "#F0E442",
|
|
146
|
+
"type": "color"
|
|
147
|
+
},
|
|
148
|
+
"blue": {
|
|
149
|
+
"value": "#0072B2",
|
|
150
|
+
"type": "color"
|
|
151
|
+
},
|
|
152
|
+
"vermillion": {
|
|
153
|
+
"value": "#D55E00",
|
|
154
|
+
"type": "color"
|
|
155
|
+
},
|
|
156
|
+
"reddish-purple": {
|
|
157
|
+
"value": "#CC79A7",
|
|
158
|
+
"type": "color"
|
|
159
|
+
},
|
|
160
|
+
"black": {
|
|
161
|
+
"value": "#000000",
|
|
162
|
+
"type": "color"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"categorical": {
|
|
166
|
+
"1": {
|
|
167
|
+
"value": "#E69F00",
|
|
168
|
+
"type": "color"
|
|
169
|
+
},
|
|
170
|
+
"2": {
|
|
171
|
+
"value": "#56B4E9",
|
|
172
|
+
"type": "color"
|
|
173
|
+
},
|
|
174
|
+
"3": {
|
|
175
|
+
"value": "#009E73",
|
|
176
|
+
"type": "color"
|
|
177
|
+
},
|
|
178
|
+
"4": {
|
|
179
|
+
"value": "#F0E442",
|
|
180
|
+
"type": "color"
|
|
181
|
+
},
|
|
182
|
+
"5": {
|
|
183
|
+
"value": "#0072B2",
|
|
184
|
+
"type": "color"
|
|
185
|
+
},
|
|
186
|
+
"6": {
|
|
187
|
+
"value": "#D55E00",
|
|
188
|
+
"type": "color"
|
|
189
|
+
},
|
|
190
|
+
"7": {
|
|
191
|
+
"value": "#CC79A7",
|
|
192
|
+
"type": "color"
|
|
193
|
+
},
|
|
194
|
+
"8": {
|
|
195
|
+
"value": "#000000",
|
|
196
|
+
"type": "color"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"uncertainty": {
|
|
200
|
+
"outer": {
|
|
201
|
+
"value": "#D6D6D6",
|
|
202
|
+
"type": "color"
|
|
203
|
+
},
|
|
204
|
+
"union": {
|
|
205
|
+
"value": "#9E9E9E",
|
|
206
|
+
"type": "color"
|
|
207
|
+
},
|
|
208
|
+
"inner": {
|
|
209
|
+
"value": "#333333",
|
|
210
|
+
"type": "color"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
129
213
|
}
|
|
130
214
|
},
|
|
131
215
|
"shadow": {
|
|
@@ -522,6 +606,34 @@
|
|
|
522
606
|
"value": "#ff0000",
|
|
523
607
|
"type": "color"
|
|
524
608
|
}
|
|
609
|
+
},
|
|
610
|
+
"dataviz": {
|
|
611
|
+
"okabe-ito": {
|
|
612
|
+
"black": {
|
|
613
|
+
"value": "#FDF9F2",
|
|
614
|
+
"type": "color"
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
"categorical": {
|
|
618
|
+
"8": {
|
|
619
|
+
"value": "#FDF9F2",
|
|
620
|
+
"type": "color"
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"uncertainty": {
|
|
624
|
+
"outer": {
|
|
625
|
+
"value": "#333333",
|
|
626
|
+
"type": "color"
|
|
627
|
+
},
|
|
628
|
+
"union": {
|
|
629
|
+
"value": "#6B6B6B",
|
|
630
|
+
"type": "color"
|
|
631
|
+
},
|
|
632
|
+
"inner": {
|
|
633
|
+
"value": "#D6D6D6",
|
|
634
|
+
"type": "color"
|
|
635
|
+
}
|
|
636
|
+
}
|
|
525
637
|
}
|
|
526
638
|
},
|
|
527
639
|
"border": {
|
|
@@ -279,6 +279,134 @@
|
|
|
279
279
|
},
|
|
280
280
|
"$description": "Signature monogram red — mode-aware for AA-normal. LIGHT: deepened #cc0000 (5.0:1 on stone-100 #ededeb / 5.5:1 on elevated — full AA-normal, safe at small sizes / as text). DARK: vivid #ff0000 fallback + display-P3 primary red (4.6:1 on ink-900 — AA-normal). Logo-mark color only — NOT the interactive accent (which is iteration-2 blue). Large navbar lift-wash marks keep the vivid display-P3 red (AA-large, large-mark use); this token is the AA-normal value for arbitrary/small mark reuse."
|
|
281
281
|
}
|
|
282
|
+
},
|
|
283
|
+
"dataviz": {
|
|
284
|
+
"okabe-ito": {
|
|
285
|
+
"orange": {
|
|
286
|
+
"$value": "#E69F00",
|
|
287
|
+
"$type": "color",
|
|
288
|
+
"$description": "Okabe-Ito orange (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
289
|
+
},
|
|
290
|
+
"sky-blue": {
|
|
291
|
+
"$value": "#56B4E9",
|
|
292
|
+
"$type": "color",
|
|
293
|
+
"$description": "Okabe-Ito sky blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
294
|
+
},
|
|
295
|
+
"bluish-green": {
|
|
296
|
+
"$value": "#009E73",
|
|
297
|
+
"$type": "color",
|
|
298
|
+
"$description": "Okabe-Ito bluish green (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
299
|
+
},
|
|
300
|
+
"yellow": {
|
|
301
|
+
"$value": "#F0E442",
|
|
302
|
+
"$type": "color",
|
|
303
|
+
"$description": "Okabe-Ito yellow — 1.13:1 on the light page: never use it without a mark outline or a label (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
304
|
+
},
|
|
305
|
+
"blue": {
|
|
306
|
+
"$value": "#0072B2",
|
|
307
|
+
"$type": "color",
|
|
308
|
+
"$description": "Okabe-Ito blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
309
|
+
},
|
|
310
|
+
"vermillion": {
|
|
311
|
+
"$value": "#D55E00",
|
|
312
|
+
"$type": "color",
|
|
313
|
+
"$description": "Okabe-Ito vermillion (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
314
|
+
},
|
|
315
|
+
"reddish-purple": {
|
|
316
|
+
"$value": "#CC79A7",
|
|
317
|
+
"$type": "color",
|
|
318
|
+
"$description": "Okabe-Ito reddish purple (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
319
|
+
},
|
|
320
|
+
"black": {
|
|
321
|
+
"$value": "#000000",
|
|
322
|
+
"$type": "color",
|
|
323
|
+
"$extensions": {
|
|
324
|
+
"com.dataimago.theme": {
|
|
325
|
+
"dark": "#FDF9F2"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"$description": "Okabe-Ito black (Okabe & Ito 2008). In dark mode it becomes content.primary.dark: #000000 is 1.14:1 on the dark page. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
"categorical": {
|
|
332
|
+
"1": {
|
|
333
|
+
"$value": "#E69F00",
|
|
334
|
+
"$type": "color",
|
|
335
|
+
"$description": "= okabe-ito.orange (slot 1, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
336
|
+
},
|
|
337
|
+
"2": {
|
|
338
|
+
"$value": "#56B4E9",
|
|
339
|
+
"$type": "color",
|
|
340
|
+
"$description": "= okabe-ito.sky-blue (slot 2, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
341
|
+
},
|
|
342
|
+
"3": {
|
|
343
|
+
"$value": "#009E73",
|
|
344
|
+
"$type": "color",
|
|
345
|
+
"$description": "= okabe-ito.bluish-green (slot 3, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
346
|
+
},
|
|
347
|
+
"4": {
|
|
348
|
+
"$value": "#F0E442",
|
|
349
|
+
"$type": "color",
|
|
350
|
+
"$description": "= okabe-ito.yellow (slot 4, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
351
|
+
},
|
|
352
|
+
"5": {
|
|
353
|
+
"$value": "#0072B2",
|
|
354
|
+
"$type": "color",
|
|
355
|
+
"$description": "= okabe-ito.blue (slot 5, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
356
|
+
},
|
|
357
|
+
"6": {
|
|
358
|
+
"$value": "#D55E00",
|
|
359
|
+
"$type": "color",
|
|
360
|
+
"$description": "= okabe-ito.vermillion (slot 6, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
361
|
+
},
|
|
362
|
+
"7": {
|
|
363
|
+
"$value": "#CC79A7",
|
|
364
|
+
"$type": "color",
|
|
365
|
+
"$description": "= okabe-ito.reddish-purple (slot 7, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
366
|
+
},
|
|
367
|
+
"8": {
|
|
368
|
+
"$value": "#000000",
|
|
369
|
+
"$type": "color",
|
|
370
|
+
"$extensions": {
|
|
371
|
+
"com.dataimago.theme": {
|
|
372
|
+
"dark": "#FDF9F2"
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"$description": "= okabe-ito.black (slot 8, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
"uncertainty": {
|
|
379
|
+
"outer": {
|
|
380
|
+
"$value": "#D6D6D6",
|
|
381
|
+
"$type": "color",
|
|
382
|
+
"$extensions": {
|
|
383
|
+
"com.dataimago.theme": {
|
|
384
|
+
"dark": "#333333"
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
"$description": "Outermost nested uncertainty band (gray 0.84 in the LIwLD PSTricks figures). The ramp is mirrored in dark mode so the innermost band stays the strongest. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
388
|
+
},
|
|
389
|
+
"union": {
|
|
390
|
+
"$value": "#9E9E9E",
|
|
391
|
+
"$type": "color",
|
|
392
|
+
"$extensions": {
|
|
393
|
+
"com.dataimago.theme": {
|
|
394
|
+
"dark": "#6B6B6B"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"$description": "Union band (gray 0.62); mirrored in dark mode. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
398
|
+
},
|
|
399
|
+
"inner": {
|
|
400
|
+
"$value": "#333333",
|
|
401
|
+
"$type": "color",
|
|
402
|
+
"$extensions": {
|
|
403
|
+
"com.dataimago.theme": {
|
|
404
|
+
"dark": "#D6D6D6"
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
"$description": "Innermost band (gray 0.20); mirrored in dark mode, where #333333 would be 1.46:1. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
408
|
+
}
|
|
409
|
+
}
|
|
282
410
|
}
|
|
283
411
|
},
|
|
284
412
|
"shadow": {
|
package/package.json
CHANGED
package/src/dataviz.json
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"color": {
|
|
3
|
+
"dataviz": {
|
|
4
|
+
"okabe-ito": {
|
|
5
|
+
"orange": {
|
|
6
|
+
"value": "#E69F00",
|
|
7
|
+
"description": "Okabe-Ito orange (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
8
|
+
},
|
|
9
|
+
"sky-blue": {
|
|
10
|
+
"value": "#56B4E9",
|
|
11
|
+
"description": "Okabe-Ito sky blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
12
|
+
},
|
|
13
|
+
"bluish-green": {
|
|
14
|
+
"value": "#009E73",
|
|
15
|
+
"description": "Okabe-Ito bluish green (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
16
|
+
},
|
|
17
|
+
"yellow": {
|
|
18
|
+
"value": "#F0E442",
|
|
19
|
+
"description": "Okabe-Ito yellow — 1.13:1 on the light page: never use it without a mark outline or a label (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
20
|
+
},
|
|
21
|
+
"blue": {
|
|
22
|
+
"value": "#0072B2",
|
|
23
|
+
"description": "Okabe-Ito blue (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
24
|
+
},
|
|
25
|
+
"vermillion": {
|
|
26
|
+
"value": "#D55E00",
|
|
27
|
+
"description": "Okabe-Ito vermillion (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
28
|
+
},
|
|
29
|
+
"reddish-purple": {
|
|
30
|
+
"value": "#CC79A7",
|
|
31
|
+
"description": "Okabe-Ito reddish purple (Okabe & Ito 2008, colour-blind safe). House data-viz primitive; maintainer decision 2026-10-29."
|
|
32
|
+
},
|
|
33
|
+
"black": {
|
|
34
|
+
"light": "#000000",
|
|
35
|
+
"dark": "#FDF9F2",
|
|
36
|
+
"description": "Okabe-Ito black (Okabe & Ito 2008). In dark mode it becomes content.primary.dark: #000000 is 1.14:1 on the dark page. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"categorical": {
|
|
40
|
+
"1": {
|
|
41
|
+
"value": "#E69F00",
|
|
42
|
+
"description": "= okabe-ito.orange (slot 1, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
43
|
+
},
|
|
44
|
+
"2": {
|
|
45
|
+
"value": "#56B4E9",
|
|
46
|
+
"description": "= okabe-ito.sky-blue (slot 2, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
47
|
+
},
|
|
48
|
+
"3": {
|
|
49
|
+
"value": "#009E73",
|
|
50
|
+
"description": "= okabe-ito.bluish-green (slot 3, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
51
|
+
},
|
|
52
|
+
"4": {
|
|
53
|
+
"value": "#F0E442",
|
|
54
|
+
"description": "= okabe-ito.yellow (slot 4, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
55
|
+
},
|
|
56
|
+
"5": {
|
|
57
|
+
"value": "#0072B2",
|
|
58
|
+
"description": "= okabe-ito.blue (slot 5, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
59
|
+
},
|
|
60
|
+
"6": {
|
|
61
|
+
"value": "#D55E00",
|
|
62
|
+
"description": "= okabe-ito.vermillion (slot 6, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
63
|
+
},
|
|
64
|
+
"7": {
|
|
65
|
+
"value": "#CC79A7",
|
|
66
|
+
"description": "= okabe-ito.reddish-purple (slot 7, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
67
|
+
},
|
|
68
|
+
"8": {
|
|
69
|
+
"light": "#000000",
|
|
70
|
+
"dark": "#FDF9F2",
|
|
71
|
+
"description": "= okabe-ito.black (slot 8, Wilke order). Categorical colour is never the only channel: pair it with marker shape, line style or a label."
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"uncertainty": {
|
|
75
|
+
"outer": {
|
|
76
|
+
"light": "#D6D6D6",
|
|
77
|
+
"dark": "#333333",
|
|
78
|
+
"description": "Outermost nested uncertainty band (gray 0.84 in the LIwLD PSTricks figures). The ramp is mirrored in dark mode so the innermost band stays the strongest. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
79
|
+
},
|
|
80
|
+
"union": {
|
|
81
|
+
"light": "#9E9E9E",
|
|
82
|
+
"dark": "#6B6B6B",
|
|
83
|
+
"description": "Union band (gray 0.62); mirrored in dark mode. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
84
|
+
},
|
|
85
|
+
"inner": {
|
|
86
|
+
"light": "#333333",
|
|
87
|
+
"dark": "#D6D6D6",
|
|
88
|
+
"description": "Innermost band (gray 0.20); mirrored in dark mode, where #333333 would be 1.46:1. Dark value approved by the maintainer 2026-10-29 (dataviz-check --propose-dark)."
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|