@rookcom/monarch-tokens 0.0.0-stage → 0.2.1
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/CHANGELOG.md +19 -0
- package/README.md +7 -2
- package/dist/appearance.d.ts +40 -0
- package/dist/appearance.d.ts.map +1 -0
- package/dist/appearance.js +46 -0
- package/dist/appearance.js.map +1 -0
- package/dist/color.d.ts +42 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +121 -0
- package/dist/color.js.map +1 -0
- package/dist/contrast-report.json +1333 -0
- package/dist/css/base.css +31 -0
- package/dist/css/compat.css +149 -0
- package/dist/css/monarch.css +429 -0
- package/dist/css/products/app.css +85 -0
- package/dist/css/products/atlas.css +85 -0
- package/dist/css/products/base.css +85 -0
- package/dist/css/products/calendar.css +85 -0
- package/dist/css/products/chat.css +85 -0
- package/dist/css/products/developers.css +85 -0
- package/dist/css/products/dossier.css +85 -0
- package/dist/css/products/dots.css +85 -0
- package/dist/css/products/friends.css +85 -0
- package/dist/css/products/gtm.css +85 -0
- package/dist/css/products/id.css +85 -0
- package/dist/css/products/intellect.css +85 -0
- package/dist/css/products/links.css +85 -0
- package/dist/css/products/people.css +85 -0
- package/dist/css/products/pulse.css +85 -0
- package/dist/css/products/ranker.css +85 -0
- package/dist/css/products/recruit.css +85 -0
- package/dist/css/products/signal.css +85 -0
- package/dist/css/products/stride.css +85 -0
- package/dist/css/products/tickets.css +85 -0
- package/dist/css.d.ts +36 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +242 -0
- package/dist/css.js.map +1 -0
- package/dist/generated/products.d.ts +111 -0
- package/dist/generated/products.d.ts.map +1 -0
- package/dist/generated/products.js +26 -0
- package/dist/generated/products.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/primitives.d.ts +190 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +210 -0
- package/dist/primitives.js.map +1 -0
- package/dist/tailwind.d.ts +275 -0
- package/dist/tailwind.d.ts.map +1 -0
- package/dist/tailwind.js +179 -0
- package/dist/tailwind.js.map +1 -0
- package/dist/themes.d.ts +74 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +301 -0
- package/dist/themes.js.map +1 -0
- package/dist/tokens.json +2455 -0
- package/package.json +60 -4
package/dist/themes.js
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic tokens and themes.
|
|
3
|
+
*
|
|
4
|
+
* A theme maps meaning ("the page background", "muted text") to concrete
|
|
5
|
+
* colours. Intent colours (accent and the four statuses) are derived from one
|
|
6
|
+
* base colour per theme by `deriveIntent`, which guarantees WCAG contrast. That
|
|
7
|
+
* is what lets 16+ products each bring their own brand accent safely.
|
|
8
|
+
*/
|
|
9
|
+
import { bestForeground, contrast, ensureContrast, hsl, toChannels } from './color.js';
|
|
10
|
+
import { neutral, statusBase } from './primitives.js';
|
|
11
|
+
export const THEME_IDS = ['light', 'dark', 'hc-light', 'hc-dark'];
|
|
12
|
+
const lightShadow = (a) => `hsl(222 30% 10% / ${a})`;
|
|
13
|
+
const darkShadow = (a) => `hsl(0 0% 0% / ${a})`;
|
|
14
|
+
export const themes = {
|
|
15
|
+
light: {
|
|
16
|
+
id: 'light',
|
|
17
|
+
scheme: 'light',
|
|
18
|
+
contrast: 'standard',
|
|
19
|
+
targets: { text: 4.5, ui: 3 },
|
|
20
|
+
neutrals: {
|
|
21
|
+
'bg-canvas': neutral[25],
|
|
22
|
+
'bg-surface': neutral[0],
|
|
23
|
+
'bg-raised': neutral[0],
|
|
24
|
+
'bg-subtle': neutral[50],
|
|
25
|
+
'bg-muted': neutral[100],
|
|
26
|
+
'bg-emphasis': neutral[150],
|
|
27
|
+
'bg-inverse': neutral[900],
|
|
28
|
+
'text-default': neutral[850],
|
|
29
|
+
'text-muted': neutral[600],
|
|
30
|
+
'text-subtle': neutral[500],
|
|
31
|
+
'text-disabled': neutral[400],
|
|
32
|
+
'text-inverse': neutral[0],
|
|
33
|
+
'border-subtle': neutral[150],
|
|
34
|
+
'border-default': neutral[200],
|
|
35
|
+
'border-strong': neutral[300],
|
|
36
|
+
'border-input': hsl(220, 9, 56),
|
|
37
|
+
},
|
|
38
|
+
shadow: {
|
|
39
|
+
xs: `0 1px 2px ${lightShadow(0.06)}`,
|
|
40
|
+
sm: `0 1px 3px ${lightShadow(0.08)}, 0 1px 2px ${lightShadow(0.04)}`,
|
|
41
|
+
md: `0 4px 12px -2px ${lightShadow(0.08)}, 0 2px 4px -2px ${lightShadow(0.05)}`,
|
|
42
|
+
lg: `0 12px 32px -8px ${lightShadow(0.14)}, 0 4px 8px -4px ${lightShadow(0.06)}`,
|
|
43
|
+
xl: `0 24px 64px -16px ${lightShadow(0.22)}, 0 8px 16px -8px ${lightShadow(0.08)}`,
|
|
44
|
+
},
|
|
45
|
+
scrim: 'hsl(222 25% 8% / 0.42)',
|
|
46
|
+
},
|
|
47
|
+
dark: {
|
|
48
|
+
id: 'dark',
|
|
49
|
+
scheme: 'dark',
|
|
50
|
+
contrast: 'standard',
|
|
51
|
+
targets: { text: 4.5, ui: 3 },
|
|
52
|
+
neutrals: {
|
|
53
|
+
'bg-canvas': neutral[950],
|
|
54
|
+
'bg-surface': neutral[900],
|
|
55
|
+
'bg-raised': neutral[850],
|
|
56
|
+
'bg-subtle': neutral[900],
|
|
57
|
+
'bg-muted': neutral[800],
|
|
58
|
+
'bg-emphasis': neutral[700],
|
|
59
|
+
'bg-inverse': neutral[50],
|
|
60
|
+
'text-default': neutral[50],
|
|
61
|
+
'text-muted': neutral[300],
|
|
62
|
+
'text-subtle': neutral[400],
|
|
63
|
+
'text-disabled': neutral[600],
|
|
64
|
+
'text-inverse': neutral[900],
|
|
65
|
+
'border-subtle': neutral[850],
|
|
66
|
+
'border-default': neutral[800],
|
|
67
|
+
'border-strong': neutral[700],
|
|
68
|
+
'border-input': hsl(220, 9, 45),
|
|
69
|
+
},
|
|
70
|
+
shadow: {
|
|
71
|
+
xs: `0 1px 2px ${darkShadow(0.4)}`,
|
|
72
|
+
sm: `0 1px 3px ${darkShadow(0.45)}, 0 1px 2px ${darkShadow(0.3)}`,
|
|
73
|
+
md: `0 4px 12px -2px ${darkShadow(0.5)}, 0 2px 4px -2px ${darkShadow(0.35)}`,
|
|
74
|
+
lg: `0 12px 32px -8px ${darkShadow(0.6)}, 0 4px 8px -4px ${darkShadow(0.4)}`,
|
|
75
|
+
xl: `0 24px 64px -16px ${darkShadow(0.7)}, 0 8px 16px -8px ${darkShadow(0.45)}`,
|
|
76
|
+
},
|
|
77
|
+
scrim: 'hsl(0 0% 0% / 0.62)',
|
|
78
|
+
},
|
|
79
|
+
'hc-light': {
|
|
80
|
+
id: 'hc-light',
|
|
81
|
+
scheme: 'light',
|
|
82
|
+
contrast: 'more',
|
|
83
|
+
targets: { text: 7, ui: 4.5 },
|
|
84
|
+
neutrals: {
|
|
85
|
+
'bg-canvas': neutral[0],
|
|
86
|
+
'bg-surface': neutral[0],
|
|
87
|
+
'bg-raised': neutral[0],
|
|
88
|
+
'bg-subtle': neutral[50],
|
|
89
|
+
'bg-muted': neutral[100],
|
|
90
|
+
'bg-emphasis': neutral[150],
|
|
91
|
+
'bg-inverse': neutral[1000],
|
|
92
|
+
'text-default': neutral[1000],
|
|
93
|
+
'text-muted': neutral[800],
|
|
94
|
+
'text-subtle': neutral[700],
|
|
95
|
+
'text-disabled': neutral[500],
|
|
96
|
+
'text-inverse': neutral[0],
|
|
97
|
+
'border-subtle': neutral[500],
|
|
98
|
+
'border-default': neutral[600],
|
|
99
|
+
'border-strong': neutral[800],
|
|
100
|
+
'border-input': neutral[700],
|
|
101
|
+
},
|
|
102
|
+
shadow: {
|
|
103
|
+
xs: 'none',
|
|
104
|
+
sm: 'none',
|
|
105
|
+
md: '0 0 0 1px hsl(0 0% 0%)',
|
|
106
|
+
lg: '0 0 0 2px hsl(0 0% 0%)',
|
|
107
|
+
xl: '0 0 0 2px hsl(0 0% 0%)',
|
|
108
|
+
},
|
|
109
|
+
scrim: 'hsl(0 0% 0% / 0.7)',
|
|
110
|
+
},
|
|
111
|
+
'hc-dark': {
|
|
112
|
+
id: 'hc-dark',
|
|
113
|
+
scheme: 'dark',
|
|
114
|
+
contrast: 'more',
|
|
115
|
+
targets: { text: 7, ui: 4.5 },
|
|
116
|
+
neutrals: {
|
|
117
|
+
'bg-canvas': neutral[1000],
|
|
118
|
+
'bg-surface': neutral[1000],
|
|
119
|
+
'bg-raised': neutral[950],
|
|
120
|
+
'bg-subtle': neutral[950],
|
|
121
|
+
'bg-muted': neutral[900],
|
|
122
|
+
'bg-emphasis': neutral[800],
|
|
123
|
+
'bg-inverse': neutral[0],
|
|
124
|
+
'text-default': neutral[0],
|
|
125
|
+
'text-muted': neutral[150],
|
|
126
|
+
'text-subtle': neutral[200],
|
|
127
|
+
'text-disabled': neutral[400],
|
|
128
|
+
'text-inverse': neutral[1000],
|
|
129
|
+
'border-subtle': neutral[500],
|
|
130
|
+
'border-default': neutral[400],
|
|
131
|
+
'border-strong': neutral[200],
|
|
132
|
+
'border-input': neutral[300],
|
|
133
|
+
},
|
|
134
|
+
shadow: {
|
|
135
|
+
xs: 'none',
|
|
136
|
+
sm: 'none',
|
|
137
|
+
md: '0 0 0 1px hsl(0 0% 100%)',
|
|
138
|
+
lg: '0 0 0 2px hsl(0 0% 100%)',
|
|
139
|
+
xl: '0 0 0 2px hsl(0 0% 100%)',
|
|
140
|
+
},
|
|
141
|
+
scrim: 'hsl(0 0% 0% / 0.8)',
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
export const INTENT_IDS = ['accent', 'danger', 'success', 'warning', 'info'];
|
|
145
|
+
const WHITE = neutral[0];
|
|
146
|
+
const INK = neutral[950];
|
|
147
|
+
/** How far a brand fill may be darkened to keep white text before we switch to dark text. */
|
|
148
|
+
const SOLID_DARKEN_BUDGET = 10;
|
|
149
|
+
/** A filled control must at least be distinguishable from the page behind it. */
|
|
150
|
+
const SOLID_CANVAS_FLOOR = 1.5;
|
|
151
|
+
/**
|
|
152
|
+
* Derives the nine colours an intent needs in one theme, each meeting the
|
|
153
|
+
* theme's contrast targets.
|
|
154
|
+
*/
|
|
155
|
+
export function deriveIntent(base, theme) {
|
|
156
|
+
const n = theme.neutrals;
|
|
157
|
+
const dark = theme.scheme === 'dark';
|
|
158
|
+
const hc = theme.contrast === 'more';
|
|
159
|
+
const target = theme.targets.text;
|
|
160
|
+
const adjustments = [];
|
|
161
|
+
const achromatic = base.s < 8;
|
|
162
|
+
// Solid fill (primary buttons, selected states). Preference order keeps
|
|
163
|
+
// the brand colour whenever it can carry readable text:
|
|
164
|
+
// 1. brand fill + white text
|
|
165
|
+
// 2. brand fill + dark text (Rook Yellow, orange, light accents)
|
|
166
|
+
// 3. fill darkened within budget + white text
|
|
167
|
+
// 4. fill moved away from the canvas with whichever text works
|
|
168
|
+
// The fill must also stay visible against the canvas: WCAG 1.4.11 does not
|
|
169
|
+
// require 3:1 for a filled button with readable text, so the standard floor
|
|
170
|
+
// is a distinguishability threshold; high contrast raises it to the UI target.
|
|
171
|
+
const away = dark ? 'lighten' : 'darken';
|
|
172
|
+
const ui = theme.targets.ui;
|
|
173
|
+
const canvasFloor = hc ? ui : SOLID_CANVAS_FLOOR;
|
|
174
|
+
let solid = base;
|
|
175
|
+
if (dark && achromatic) {
|
|
176
|
+
solid = hsl(base.h, base.s, 94);
|
|
177
|
+
adjustments.push('achromatic brand inverted to a light fill for dark theme');
|
|
178
|
+
}
|
|
179
|
+
if (contrast(solid, n['bg-canvas']) < canvasFloor) {
|
|
180
|
+
solid = ensureContrast(solid, [n['bg-canvas']], canvasFloor, away);
|
|
181
|
+
adjustments.push(`solid moved to ${toChannels(solid)} to stay visible (${canvasFloor}:1) against the canvas`);
|
|
182
|
+
}
|
|
183
|
+
let onSolid;
|
|
184
|
+
let darkened;
|
|
185
|
+
if (contrast(WHITE, solid) < target) {
|
|
186
|
+
try {
|
|
187
|
+
const candidate = ensureContrast(solid, [WHITE], target, 'darken');
|
|
188
|
+
if (solid.l - candidate.l <= SOLID_DARKEN_BUDGET)
|
|
189
|
+
darkened = candidate;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
darkened = undefined;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (contrast(WHITE, solid) >= target) {
|
|
196
|
+
onSolid = WHITE;
|
|
197
|
+
}
|
|
198
|
+
else if (darkened && contrast(darkened, n['bg-canvas']) >= canvasFloor) {
|
|
199
|
+
adjustments.push(`solid darkened ${toChannels(solid)} → ${toChannels(darkened)} so white text meets ${target}:1`);
|
|
200
|
+
solid = darkened;
|
|
201
|
+
onSolid = WHITE;
|
|
202
|
+
}
|
|
203
|
+
else if (contrast(INK, solid) >= target) {
|
|
204
|
+
onSolid = INK;
|
|
205
|
+
adjustments.push('dark text used on solid (white would fail contrast)');
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
{
|
|
209
|
+
const fg = dark ? INK : WHITE;
|
|
210
|
+
solid = ensureContrast(solid, [fg, n['bg-canvas']], target, away);
|
|
211
|
+
onSolid = fg;
|
|
212
|
+
adjustments.push(`solid moved to ${toChannels(solid)} so ${fg === WHITE ? 'white' : 'dark'} text meets ${target}:1`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Hover/active shift lightness while keeping both guarantees. Prefer the
|
|
216
|
+
// direction that increases text contrast; fall back to the other, then to
|
|
217
|
+
// smaller steps.
|
|
218
|
+
const shade = (steps) => {
|
|
219
|
+
const ok = (c) => contrast(onSolid, c) >= target && contrast(c, n['bg-canvas']) >= canvasFloor;
|
|
220
|
+
const prefer = onSolid === WHITE ? -1 : 1;
|
|
221
|
+
for (const magnitude of [steps, steps / 2]) {
|
|
222
|
+
for (const dir of [prefer, -prefer]) {
|
|
223
|
+
const c = hsl(solid.h, solid.s, solid.l + dir * magnitude);
|
|
224
|
+
if (ok(c))
|
|
225
|
+
return c;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return solid;
|
|
229
|
+
};
|
|
230
|
+
const solidHover = shade(5);
|
|
231
|
+
const solidActive = shade(9);
|
|
232
|
+
const subtle = dark
|
|
233
|
+
? hsl(base.h, base.s * 0.4, hc ? 10 : 14)
|
|
234
|
+
: hsl(base.h, Math.min(base.s, 90) * 0.9, hc ? 97 : 96.5);
|
|
235
|
+
const subtleHover = dark
|
|
236
|
+
? hsl(base.h, base.s * 0.4, hc ? 14 : 18)
|
|
237
|
+
: hsl(base.h, Math.min(base.s, 90) * 0.9, hc ? 94 : 93.5);
|
|
238
|
+
// Strong: the accessible version of the brand for text, icons, focus rings
|
|
239
|
+
// and state indicators (checkbox fill, switch track).
|
|
240
|
+
// bg-muted is where tables, selected rows and toolbars sit; accent text and
|
|
241
|
+
// focus rings must stay readable there too.
|
|
242
|
+
const strongAgainst = [
|
|
243
|
+
n['bg-canvas'],
|
|
244
|
+
n['bg-surface'],
|
|
245
|
+
n['bg-subtle'],
|
|
246
|
+
n['bg-muted'],
|
|
247
|
+
subtle,
|
|
248
|
+
subtleHover,
|
|
249
|
+
];
|
|
250
|
+
const strongSeed = dark && achromatic ? hsl(base.h, base.s, 80) : base;
|
|
251
|
+
const strong = ensureContrast(strongSeed, strongAgainst, target, dark ? 'lighten' : 'darken');
|
|
252
|
+
if (Math.abs(strong.l - strongSeed.l) >= 0.5) {
|
|
253
|
+
adjustments.push(`strong set to ${toChannels(strong)} for ${target}:1 text contrast`);
|
|
254
|
+
}
|
|
255
|
+
const onStrong = bestForeground(strong, [WHITE, INK]).color;
|
|
256
|
+
const border = hc
|
|
257
|
+
? strong
|
|
258
|
+
: dark
|
|
259
|
+
? hsl(base.h, base.s * 0.45, 32)
|
|
260
|
+
: hsl(base.h, base.s * 0.6, 84);
|
|
261
|
+
const scale = {
|
|
262
|
+
solid,
|
|
263
|
+
'solid-hover': solidHover,
|
|
264
|
+
'solid-active': solidActive,
|
|
265
|
+
'on-solid': onSolid,
|
|
266
|
+
subtle,
|
|
267
|
+
'subtle-hover': subtleHover,
|
|
268
|
+
strong,
|
|
269
|
+
'on-strong': onStrong,
|
|
270
|
+
border,
|
|
271
|
+
};
|
|
272
|
+
return {
|
|
273
|
+
scale,
|
|
274
|
+
report: {
|
|
275
|
+
base: toChannels(base),
|
|
276
|
+
adjustments,
|
|
277
|
+
ratios: {
|
|
278
|
+
onSolid: round2(contrast(onSolid, solid)),
|
|
279
|
+
strongOnCanvas: round2(contrast(strong, n['bg-canvas'])),
|
|
280
|
+
strongOnSurface: round2(contrast(strong, n['bg-surface'])),
|
|
281
|
+
strongOnSubtle: round2(contrast(strong, subtle)),
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
function round2(n) {
|
|
287
|
+
return Math.round(n * 100) / 100;
|
|
288
|
+
}
|
|
289
|
+
/** Resolves every semantic colour for one theme and accent. */
|
|
290
|
+
export function resolveTheme(theme, accent) {
|
|
291
|
+
const bases = { accent, ...statusBase };
|
|
292
|
+
const intents = {};
|
|
293
|
+
const reports = {};
|
|
294
|
+
for (const id of INTENT_IDS) {
|
|
295
|
+
const { scale, report } = deriveIntent(bases[id], theme);
|
|
296
|
+
intents[id] = scale;
|
|
297
|
+
reports[id] = report;
|
|
298
|
+
}
|
|
299
|
+
return { theme, intents, reports };
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"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"}
|