@graview/core 0.1.15 → 0.1.16
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 +16 -5
- package/dist/app.d.ts +8 -8
- package/dist/app.d.ts.map +1 -1
- package/dist/arrangement.d.ts +2 -2
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +5 -5
- package/dist/arranging.js +3 -3
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/city.d.ts +5 -5
- package/dist/city.js +3 -3
- package/dist/cli/check/beginnings.js +2 -2
- package/dist/cli/check/brand.d.ts.map +1 -1
- package/dist/cli/check/brand.js +15 -9
- package/dist/cli/check/brand.js.map +1 -1
- package/dist/cli/check/city.js +1 -1
- package/dist/cli/check/context.js +1 -1
- package/dist/cli/check/relations.js +2 -2
- package/dist/cli/check/relations.js.map +1 -1
- package/dist/cli/check/settings.js +8 -8
- package/dist/cli/check/settings.js.map +1 -1
- package/dist/cli/check/views.d.ts +1 -1
- package/dist/cli/check/views.js +1 -1
- package/dist/cli/create.d.ts +1 -1
- package/dist/cli/create.js +5 -5
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +2 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/columns.d.ts +1 -1
- package/dist/columns.js +1 -1
- package/dist/describe.d.ts +1 -1
- package/dist/describe.d.ts.map +1 -1
- package/dist/document/brand-check.d.ts +10 -0
- package/dist/document/brand-check.d.ts.map +1 -0
- package/dist/document/brand-check.js +33 -0
- package/dist/document/brand-check.js.map +1 -0
- package/dist/document/brand.d.ts +10 -0
- package/dist/document/brand.d.ts.map +1 -0
- package/dist/document/brand.js +49 -0
- package/dist/document/brand.js.map +1 -0
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +6 -2
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts +6 -0
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +4 -13
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +3 -2
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/describe-place.d.ts +16 -0
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +14 -1
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +45 -6
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +7 -2
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +173 -45
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/analyze.d.ts +2 -2
- package/dist/document/expr/analyze.js +2 -2
- package/dist/document/expr/print.js +1 -1
- package/dist/document/index.d.ts +1 -1
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/quote.d.ts +5 -0
- package/dist/document/quote.d.ts.map +1 -0
- package/dist/document/quote.js +17 -0
- package/dist/document/quote.js.map +1 -0
- package/dist/document/rules.d.ts +2 -2
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +2 -2
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +45 -2
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +22 -3
- package/dist/document/schema.js.map +1 -1
- package/dist/document/thumbnail.d.ts +9 -0
- package/dist/document/thumbnail.d.ts.map +1 -1
- package/dist/document/thumbnail.js +74 -12
- package/dist/document/thumbnail.js.map +1 -1
- package/dist/document/to-document.js +5 -5
- package/dist/document/to-document.js.map +1 -1
- package/dist/graph/graph.js +3 -3
- package/dist/graph/primitives.d.ts +2 -2
- package/dist/graph/primitives.js +2 -2
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/invariants/engine.js +1 -1
- package/dist/invariants/types.d.ts +3 -3
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/labels.d.ts +1 -1
- package/dist/modules.d.ts +1 -1
- package/dist/modules.js +1 -1
- package/dist/mutations/define-mutation.js +4 -4
- package/dist/mutations/define-mutation.js.map +1 -1
- package/dist/mutations/derive-edits.js +3 -3
- package/dist/mutations/node-ref.js +1 -1
- package/dist/mutations/types.d.ts +1 -1
- package/dist/mutations/words.js +3 -3
- package/dist/ops/types.d.ts +1 -1
- package/dist/ops/withheld.d.ts +3 -3
- package/dist/permissions/policy.d.ts +1 -1
- package/dist/permissions/policy.js +3 -3
- package/dist/permissions/types.d.ts +2 -2
- package/dist/places.d.ts +14 -1
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +27 -4
- package/dist/places.js.map +1 -1
- package/dist/scaffold/domain.js +3 -3
- package/dist/scaffold/index.d.ts +1 -1
- package/dist/scaffold/index.d.ts.map +1 -1
- package/dist/scaffold/names.d.ts +1 -1
- package/dist/scaffold/names.js +1 -1
- package/dist/scaffold/names.js.map +1 -1
- package/dist/scaffold/project.js +1 -1
- package/dist/scene-districts.d.ts +1 -1
- package/dist/schema/define-node.d.ts +4 -4
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +8 -8
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/figures.d.ts +1 -1
- package/dist/schema/figures.js +7 -7
- package/dist/schema/figures.js.map +1 -1
- package/dist/schema/types.d.ts +1 -1
- package/dist/search.d.ts +13 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +33 -14
- package/dist/search.js.map +1 -1
- package/dist/seen.d.ts +2 -2
- package/dist/seen.js +12 -12
- package/dist/seen.js.map +1 -1
- package/dist/settings.d.ts +1 -1
- package/dist/settings.js +3 -3
- package/dist/settings.js.map +1 -1
- package/dist/store.d.ts +2 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +8 -8
- package/dist/store.js.map +1 -1
- package/dist/sync/google-calendar.js +1 -1
- package/dist/sync/types.d.ts +2 -2
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +2 -2
- package/dist/testing.js.map +1 -1
- package/dist/theme/accent.d.ts +37 -0
- package/dist/theme/accent.d.ts.map +1 -0
- package/dist/theme/accent.js +138 -0
- package/dist/theme/accent.js.map +1 -0
- package/dist/theme/contrast.d.ts +7 -7
- package/dist/theme/contrast.d.ts.map +1 -1
- package/dist/theme/contrast.js +14 -14
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/derive.d.ts +4 -4
- package/dist/theme/derive.d.ts.map +1 -1
- package/dist/theme/derive.js +19 -19
- package/dist/theme/derive.js.map +1 -1
- package/dist/theme/fonts.d.ts +19 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/fonts.js +73 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/theme/kit.d.ts +9 -9
- package/dist/theme/kit.d.ts.map +1 -1
- package/dist/theme/kit.js +15 -15
- package/dist/theme/kit.js.map +1 -1
- package/dist/theme/layers.d.ts +2 -2
- package/dist/theme/layers.d.ts.map +1 -1
- package/dist/theme/layers.js +2 -2
- package/dist/theme/layers.js.map +1 -1
- package/dist/theme/look.d.ts +3 -3
- package/dist/theme/look.d.ts.map +1 -1
- package/dist/theme/look.js +1 -1
- package/dist/theme/marks.d.ts +28 -0
- package/dist/theme/marks.d.ts.map +1 -0
- package/dist/theme/marks.js +237 -0
- package/dist/theme/marks.js.map +1 -0
- package/dist/theme/palettes.d.ts +2 -2
- package/dist/theme/palettes.js +2 -2
- package/dist/theme/types.d.ts +28 -6
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/validate-graph.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/watched.js +8 -8
- package/package.json +1 -1
package/dist/testing.js
CHANGED
|
@@ -69,12 +69,12 @@ export function awkwardApp(options = {}) {
|
|
|
69
69
|
}
|
|
70
70
|
: {}),
|
|
71
71
|
}));
|
|
72
|
-
const
|
|
72
|
+
const catalog = options.unreachable
|
|
73
73
|
? [defineNode("almanac", { fields: z.object({ label: z.string() }), plural: "Almanacs" })]
|
|
74
74
|
: [];
|
|
75
75
|
const schema = createSchema([
|
|
76
76
|
...definitions,
|
|
77
|
-
...
|
|
77
|
+
...catalog,
|
|
78
78
|
...(people ? [...installation.kinds] : []),
|
|
79
79
|
]);
|
|
80
80
|
const { defineMutation } = bindSchema(schema);
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type DerivedBrand, type RefusedBrand } from "./derive.js";
|
|
2
|
+
export interface AccentRefusal {
|
|
3
|
+
/** One sentence: the pair, its ratio, what is needed, and a shade that would pass. */
|
|
4
|
+
readonly sentence: string;
|
|
5
|
+
/** The text and what it was on, as colors. */
|
|
6
|
+
readonly pair: {
|
|
7
|
+
readonly text: string;
|
|
8
|
+
readonly on: string;
|
|
9
|
+
};
|
|
10
|
+
readonly ratio: number;
|
|
11
|
+
readonly requires: number;
|
|
12
|
+
/** The nearest shade of the same hue that passes, as a hex color, when there is one. */
|
|
13
|
+
readonly suggestion?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The schemes a document's accent derives (FR-124): `brandFromAccent` over
|
|
17
|
+
* Graview's own, and — where the only trouble is that the warning color
|
|
18
|
+
* shares the accent's hue — with the warning drawn in the bad status's red,
|
|
19
|
+
* since a document cannot name a warning color of its own.
|
|
20
|
+
*/
|
|
21
|
+
export declare function documentSchemes(accent: string): DerivedBrand | RefusedBrand;
|
|
22
|
+
/**
|
|
23
|
+
* Why a document may not take this accent, in one sentence with a fix, or
|
|
24
|
+
* null when it may (FR-126): `"#e6c200 text on #ffffff is 1.7:1; 4.5:1 is
|
|
25
|
+
* needed — #8a7400 would pass."`
|
|
26
|
+
*/
|
|
27
|
+
export declare function accentProblem(accent: string): AccentRefusal | null;
|
|
28
|
+
/**
|
|
29
|
+
* The nearest shade of `ink`'s hue that clears `requires` on `on` (laid
|
|
30
|
+
* over `over`, for a translucent ground), by lightness alone, as hex — the
|
|
31
|
+
* fix a contrast finding says (FR-126). On a gradient it clears every stop,
|
|
32
|
+
* as the check judges the worst of them. Undefined when none does.
|
|
33
|
+
*/
|
|
34
|
+
export declare function passingShade(ink: string, on: string, requires: number, over?: string): string | undefined;
|
|
35
|
+
/** A ratio as a contrast sentence says it: rounded down, so a near miss is never said as a pass. */
|
|
36
|
+
export declare const ratioWords: (ratio: number) => string;
|
|
37
|
+
//# sourceMappingURL=accent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accent.d.ts","sourceRoot":"","sources":["../../src/theme/accent.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAoBpF,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAI3E;AAsBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkClE;AAiBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAezG;AAED,oGAAoG;AACpG,eAAO,MAAM,UAAU,UAlHF,MAAM,WAkHG,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { colorsIn, composite, contrast, hsl, rgbToHsl } from "./contrast.js";
|
|
2
|
+
import { brandFromAccent } from "./derive.js";
|
|
3
|
+
import { SCHEMES } from "./palettes.js";
|
|
4
|
+
/*
|
|
5
|
+
* A DOCUMENT'S ACCENT, AS GIVEN (FR-126).
|
|
6
|
+
*
|
|
7
|
+
* A document's accent is drawn as it is written in the light scheme — as
|
|
8
|
+
* text on the panel and on the ground, and as the fill a button's words
|
|
9
|
+
* sit on — so it has to read there as it is: a color moved to make it
|
|
10
|
+
* read would be a color the author did not choose, and a chat that chose
|
|
11
|
+
* it could not tell. The dark scheme takes the shade of the same hue that
|
|
12
|
+
* reads on its own grounds. When it does not read, the refusal names the
|
|
13
|
+
* pair, the ratio and the ratio needed, and a shade that would pass: the
|
|
14
|
+
* nearest of the same hue and saturation, by lightness alone.
|
|
15
|
+
*/
|
|
16
|
+
const BLACK = { r: 0, g: 0, b: 0, a: 1 };
|
|
17
|
+
const WHITE = { r: 255, g: 255, b: 255, a: 1 };
|
|
18
|
+
const AA = 4.5;
|
|
19
|
+
const hex = (color) => `#${[color.r, color.g, color.b].map((v) => Math.round(Math.max(0, Math.min(255, v))).toString(16).padStart(2, "0")).join("")}`;
|
|
20
|
+
/** A ratio as said: rounded down, so a near miss is never said as a pass. */
|
|
21
|
+
const said = (ratio) => `${Math.floor(ratio * 10) / 10}:1`;
|
|
22
|
+
/**
|
|
23
|
+
* The schemes a document's accent derives (FR-124): `brandFromAccent` over
|
|
24
|
+
* Graview's own, and — where the only trouble is that the warning color
|
|
25
|
+
* shares the accent's hue — with the warning drawn in the bad status's red,
|
|
26
|
+
* since a document cannot name a warning color of its own.
|
|
27
|
+
*/
|
|
28
|
+
export function documentSchemes(accent) {
|
|
29
|
+
const derived = brandFromAccent({ accent, base: SCHEMES });
|
|
30
|
+
if (derived.ok || !derived.missing.every((part) => part.startsWith("warn")))
|
|
31
|
+
return derived;
|
|
32
|
+
return brandFromAccent({ accent, base: SCHEMES, warn: { light: SCHEMES.light.bad, dark: SCHEMES.dark.bad } });
|
|
33
|
+
}
|
|
34
|
+
/** The first pair this color fails as given in the light scheme, or null when it reads. */
|
|
35
|
+
function lightFailure(color) {
|
|
36
|
+
const ground = colorsIn(SCHEMES.light.ground)[0];
|
|
37
|
+
const panel = composite(colorsIn(SCHEMES.light.panel)[0], ground);
|
|
38
|
+
const onPanel = contrast(color, panel);
|
|
39
|
+
const onGround = contrast(color, ground);
|
|
40
|
+
if (Math.min(onPanel, onGround) < AA) {
|
|
41
|
+
const [ratio, on] = onPanel <= onGround ? [onPanel, panel] : [onGround, ground];
|
|
42
|
+
return { pair: { text: hex(color), on: hex(on) }, ratio, requires: AA };
|
|
43
|
+
}
|
|
44
|
+
const white = contrast(WHITE, color);
|
|
45
|
+
const black = contrast(BLACK, color);
|
|
46
|
+
if (Math.max(white, black) < AA)
|
|
47
|
+
return { pair: { text: white >= black ? "#ffffff" : "#000000", on: hex(color) }, ratio: Math.max(white, black), requires: AA };
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function passes(color) {
|
|
51
|
+
return lightFailure(color) === null && documentSchemes(hex(color)).ok;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Why a document may not take this accent, in one sentence with a fix, or
|
|
55
|
+
* null when it may (FR-126): `"#e6c200 text on #ffffff is 1.7:1; 4.5:1 is
|
|
56
|
+
* needed — #8a7400 would pass."`
|
|
57
|
+
*/
|
|
58
|
+
export function accentProblem(accent) {
|
|
59
|
+
const color = colorsIn(accent)[0];
|
|
60
|
+
if (!color)
|
|
61
|
+
return { sentence: `"${accent}" is not a color; an accent is one like "#c2577a".`, pair: { text: accent, on: "" }, ratio: 0, requires: AA };
|
|
62
|
+
const failure = lightFailure(color);
|
|
63
|
+
const derived = failure ? undefined : documentSchemes(accent);
|
|
64
|
+
if (!failure && derived?.ok)
|
|
65
|
+
return null;
|
|
66
|
+
const suggestion = nearestPassing(color);
|
|
67
|
+
/*
|
|
68
|
+
* A hue the warning color stands on cannot be an accent at any shade:
|
|
69
|
+
* "something is broken" would look like "this is selected". Said as that,
|
|
70
|
+
* not as a contrast, since no lightness answers it.
|
|
71
|
+
*/
|
|
72
|
+
const asIs = derived ?? documentSchemes(accent);
|
|
73
|
+
const clash = !asIs.ok && asIs.missing.some((part) => part.startsWith("warn"));
|
|
74
|
+
const fix = suggestion
|
|
75
|
+
? ` — ${suggestion} would pass.`
|
|
76
|
+
: clash
|
|
77
|
+
? "; no shade of this hue does, since the warning color is drawn in it — pick another hue."
|
|
78
|
+
: "; no shade of this hue does, so pick another color.";
|
|
79
|
+
if (failure) {
|
|
80
|
+
const text = failure.pair.text === hex(color) ? accent : `${failure.pair.text === "#ffffff" ? "white" : "black"} text`;
|
|
81
|
+
const on = failure.pair.on === hex(color) ? accent : failure.pair.on;
|
|
82
|
+
const pair = failure.pair.text === hex(color) ? `${text} text on ${on}` : `${text} on ${on}`;
|
|
83
|
+
return { ...failure, sentence: `${pair} is ${said(failure.ratio)}; ${failure.requires}:1 is needed${fix}`, ...(suggestion ? { suggestion } : {}) };
|
|
84
|
+
}
|
|
85
|
+
const refused = derived;
|
|
86
|
+
const darkPanel = composite(colorsIn(SCHEMES.dark.panel)[0], colorsIn(SCHEMES.dark.ground)[0]);
|
|
87
|
+
const pair = { text: hex(color), on: hex(darkPanel) };
|
|
88
|
+
if (refused.missing.every((part) => part.startsWith("warn"))) {
|
|
89
|
+
return { sentence: `${accent} reads as given, but the warning color is drawn in its hue, so "something is broken" would look like "this is selected"${suggestion ? fix : ", at any shade — pick another hue."}`, pair, ratio: contrast(color, darkPanel), requires: AA, ...(suggestion ? { suggestion } : {}) };
|
|
90
|
+
}
|
|
91
|
+
// A document cannot give the dark scheme an accent of its own, so the derivation's advice to is left out.
|
|
92
|
+
const why = refused.why.replace(/ — supply one for (dark|light)/g, "").replace(/, so (dark|light) needs an accent of its own/g, "");
|
|
93
|
+
return { sentence: `${accent} reads in the light scheme, but not in the dark: ${why}${fix}`, pair, ratio: contrast(color, darkPanel), requires: AA, ...(suggestion ? { suggestion } : {}) };
|
|
94
|
+
}
|
|
95
|
+
/** The nearest shade of the same hue and saturation that passes, by lightness alone, as hex; undefined when none does. */
|
|
96
|
+
function nearestPassing(color) {
|
|
97
|
+
const base = rgbToHsl(color);
|
|
98
|
+
for (let step = 1; step <= 200; step++) {
|
|
99
|
+
for (const l of [base.l - step / 200, base.l + step / 200]) {
|
|
100
|
+
if (l < 0 || l > 1)
|
|
101
|
+
continue;
|
|
102
|
+
const shade = hsl(base.h, base.s, l);
|
|
103
|
+
// Said as hex, so judged as hex: the color a chat sends back is this one, rounded.
|
|
104
|
+
const rounded = colorsIn(hex(shade))[0];
|
|
105
|
+
if (passes(rounded))
|
|
106
|
+
return hex(rounded);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The nearest shade of `ink`'s hue that clears `requires` on `on` (laid
|
|
113
|
+
* over `over`, for a translucent ground), by lightness alone, as hex — the
|
|
114
|
+
* fix a contrast finding says (FR-126). On a gradient it clears every stop,
|
|
115
|
+
* as the check judges the worst of them. Undefined when none does.
|
|
116
|
+
*/
|
|
117
|
+
export function passingShade(ink, on, requires, over) {
|
|
118
|
+
const color = colorsIn(ink)[0];
|
|
119
|
+
const grounds = colorsIn(on);
|
|
120
|
+
if (!color || grounds.length === 0)
|
|
121
|
+
return undefined;
|
|
122
|
+
const under = (over ? colorsIn(over)[0] : undefined) ?? WHITE;
|
|
123
|
+
const solids = grounds.map((ground) => composite(ground, under));
|
|
124
|
+
const base = rgbToHsl(color);
|
|
125
|
+
for (let step = 0; step <= 200; step++) {
|
|
126
|
+
for (const l of [base.l - step / 200, base.l + step / 200]) {
|
|
127
|
+
if (l < 0 || l > 1)
|
|
128
|
+
continue;
|
|
129
|
+
const shade = colorsIn(hex(hsl(base.h, base.s, l)))[0];
|
|
130
|
+
if (solids.every((solid) => contrast(shade, solid) >= requires))
|
|
131
|
+
return hex(shade);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
/** A ratio as a contrast sentence says it: rounded down, so a near miss is never said as a pass. */
|
|
137
|
+
export const ratioWords = said;
|
|
138
|
+
//# sourceMappingURL=accent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accent.js","sourceRoot":"","sources":["../../src/theme/accent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,eAAe,EAAwC,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;;;;;;;;GAWG;AAEH,MAAM,KAAK,GAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/C,MAAM,KAAK,GAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrD,MAAM,EAAE,GAAG,GAAG,CAAC;AAaf,MAAM,GAAG,GAAG,CAAC,KAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5J,6EAA6E;AAC7E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5F,OAAO,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACzH,CAAC;AAED,2FAA2F;AAC3F,SAAS,YAAY,CAAC,KAAW;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC;IAClD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1E,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAChK,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,KAAW;IACzB,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,MAAM,oDAAoD,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxJ,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,EAAE;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC;;;;OAIG;IACH,MAAM,IAAI,GAAG,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,UAAU;QACpB,CAAC,CAAC,MAAM,UAAU,cAAc;QAChC,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,yFAAyF;YAC3F,CAAC,CAAC,qDAAqD,CAAC;IAC5D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC;QACvH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE,EAAE,CAAC;QAC7F,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,QAAQ,eAAe,GAAG,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACrJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAuB,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;IACtD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,0HAA0H,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAClT,CAAC;IACD,0GAA0G;IAC1G,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;IACpI,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,oDAAoD,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9L,CAAC;AAED,0HAA0H;AAC1H,SAAS,cAAc,CAAC,KAAW;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,mFAAmF;YACnF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;YACzC,IAAI,MAAM,CAAC,OAAO,CAAC;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,EAAU,EAAE,QAAgB,EAAE,IAAa;IACnF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;YACxD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC"}
|
package/dist/theme/contrast.d.ts
CHANGED
|
@@ -6,25 +6,25 @@ export interface Rgba {
|
|
|
6
6
|
readonly b: number;
|
|
7
7
|
readonly a: number;
|
|
8
8
|
}
|
|
9
|
-
/** sRGB back to HSL, so a
|
|
10
|
-
export declare function rgbToHsl(
|
|
9
|
+
/** sRGB back to HSL, so a color can be moved in lightness and stay itself. */
|
|
10
|
+
export declare function rgbToHsl(color: Rgba): {
|
|
11
11
|
h: number;
|
|
12
12
|
s: number;
|
|
13
13
|
l: number;
|
|
14
14
|
};
|
|
15
15
|
export declare function hsl(h: number, s: number, l: number): Rgba;
|
|
16
16
|
/**
|
|
17
|
-
* Every
|
|
17
|
+
* Every color a token value mentions.
|
|
18
18
|
*
|
|
19
|
-
* A gradient is not one
|
|
19
|
+
* A gradient is not one color and pretending otherwise is how a check passes
|
|
20
20
|
* on a value it never looked at. `bar` and `float` are gradients in both
|
|
21
21
|
* built-in schemes; a pair drawn on one owes its contrast against the WORST
|
|
22
22
|
* stop, because that is where the text will be at some point along it.
|
|
23
23
|
*/
|
|
24
|
-
export declare function
|
|
25
|
-
/** One
|
|
24
|
+
export declare function colorsIn(value: string): Rgba[];
|
|
25
|
+
/** One color laid over another, straight alpha. */
|
|
26
26
|
export declare function composite(over: Rgba, under: Rgba): Rgba;
|
|
27
|
-
export declare function luminance(
|
|
27
|
+
export declare function luminance(color: Rgba): number;
|
|
28
28
|
/** WCAG 2.1 contrast ratio, 1 to 21. */
|
|
29
29
|
export declare function contrast(a: Rgba, b: Rgba): number;
|
|
30
30
|
export interface ContrastFinding {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/theme/contrast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,4CAA4C;AAC5C,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAuCD
|
|
1
|
+
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/theme/contrast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,4CAA4C;AAC5C,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAuCD,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBzE;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzD;AA0BD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAW9C;AAED,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAKvD;AAOD,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAI7C;AAED,wCAAwC;AACxC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAGjD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,eAAe,EAAE,CAyC7E"}
|
package/dist/theme/contrast.js
CHANGED
|
@@ -35,11 +35,11 @@ function fromFunction(text) {
|
|
|
35
35
|
return null;
|
|
36
36
|
return { ...hslToRgb(h, s > 1 ? s / 100 : s, l > 1 ? l / 100 : l), a: a ?? 1 };
|
|
37
37
|
}
|
|
38
|
-
/** sRGB back to HSL, so a
|
|
39
|
-
export function rgbToHsl(
|
|
40
|
-
const r =
|
|
41
|
-
const g =
|
|
42
|
-
const b =
|
|
38
|
+
/** sRGB back to HSL, so a color can be moved in lightness and stay itself. */
|
|
39
|
+
export function rgbToHsl(color) {
|
|
40
|
+
const r = color.r / 255;
|
|
41
|
+
const g = color.g / 255;
|
|
42
|
+
const b = color.b / 255;
|
|
43
43
|
const max = Math.max(r, g, b);
|
|
44
44
|
const min = Math.min(r, g, b);
|
|
45
45
|
const l = (max + min) / 2;
|
|
@@ -80,14 +80,14 @@ function hslToRgb(h, s, l) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
* Every
|
|
83
|
+
* Every color a token value mentions.
|
|
84
84
|
*
|
|
85
|
-
* A gradient is not one
|
|
85
|
+
* A gradient is not one color and pretending otherwise is how a check passes
|
|
86
86
|
* on a value it never looked at. `bar` and `float` are gradients in both
|
|
87
87
|
* built-in schemes; a pair drawn on one owes its contrast against the WORST
|
|
88
88
|
* stop, because that is where the text will be at some point along it.
|
|
89
89
|
*/
|
|
90
|
-
export function
|
|
90
|
+
export function colorsIn(value) {
|
|
91
91
|
const found = [];
|
|
92
92
|
for (const token of value.matchAll(FUNC)) {
|
|
93
93
|
const parsed = fromFunction(token[0]);
|
|
@@ -101,7 +101,7 @@ export function coloursIn(value) {
|
|
|
101
101
|
}
|
|
102
102
|
return found;
|
|
103
103
|
}
|
|
104
|
-
/** One
|
|
104
|
+
/** One color laid over another, straight alpha. */
|
|
105
105
|
export function composite(over, under) {
|
|
106
106
|
const a = over.a + under.a * (1 - over.a);
|
|
107
107
|
if (a === 0)
|
|
@@ -113,8 +113,8 @@ function channel(value) {
|
|
|
113
113
|
const c = value / 255;
|
|
114
114
|
return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
115
115
|
}
|
|
116
|
-
export function luminance(
|
|
117
|
-
return (0.2126 * channel(
|
|
116
|
+
export function luminance(color) {
|
|
117
|
+
return (0.2126 * channel(color.r) + 0.7152 * channel(color.g) + 0.0722 * channel(color.b));
|
|
118
118
|
}
|
|
119
119
|
/** WCAG 2.1 contrast ratio, 1 to 21. */
|
|
120
120
|
export function contrast(a, b) {
|
|
@@ -133,8 +133,8 @@ export function checkContrast(tokens) {
|
|
|
133
133
|
for (const pair of TEXT_PAIRS) {
|
|
134
134
|
const inkValue = String(tokens[pair.ink]);
|
|
135
135
|
const onValue = String(tokens[pair.on]);
|
|
136
|
-
const inks =
|
|
137
|
-
const grounds =
|
|
136
|
+
const inks = colorsIn(inkValue);
|
|
137
|
+
const grounds = colorsIn(onValue);
|
|
138
138
|
if (inks.length === 0 || grounds.length === 0) {
|
|
139
139
|
findings.push({
|
|
140
140
|
ink: pair.ink,
|
|
@@ -146,7 +146,7 @@ export function checkContrast(tokens) {
|
|
|
146
146
|
});
|
|
147
147
|
continue;
|
|
148
148
|
}
|
|
149
|
-
const backdrop = pair.over ?
|
|
149
|
+
const backdrop = pair.over ? colorsIn(String(tokens[pair.over]))[0] : undefined;
|
|
150
150
|
const opaque = backdrop ?? { r: 255, g: 255, b: 255, a: 1 };
|
|
151
151
|
// The worst stop of a gradient and the worst ink of a multi-stop value:
|
|
152
152
|
// text has to be legible everywhere it lands, not on average.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../src/theme/contrast.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../src/theme/contrast.ts"],"names":[],"mappings":"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"}
|
package/dist/theme/derive.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { checkContrast } from "./contrast.js";
|
|
2
2
|
import type { Scheme, ThemeTokens } from "./types.js";
|
|
3
3
|
/**
|
|
4
|
-
* A brand hands over one accent
|
|
4
|
+
* A brand hands over one accent color. What can be made of it, and what
|
|
5
5
|
* cannot.
|
|
6
6
|
*
|
|
7
7
|
* The two schemes here are not inversions of each other — dark loses
|
|
8
8
|
* luminance, light loses contrast and gains haze — so "derive the other one"
|
|
9
|
-
* is not a
|
|
9
|
+
* is not a color operation. What an accent CAN determine is everything
|
|
10
10
|
* keyed to it: its dim companion, its glow, the lit edge, the wash. What it
|
|
11
11
|
* cannot determine is the ground family (warm paper or cool slate is a
|
|
12
12
|
* decision, not a consequence), the ink that has to clear AA against that
|
|
13
|
-
* ground, and the warning
|
|
13
|
+
* ground, and the warning color, which must stay distinguishable from the
|
|
14
14
|
* accent rather than derived from it.
|
|
15
15
|
*
|
|
16
16
|
* So this derives what it can from a neutral base and REFUSES, naming what
|
|
@@ -20,7 +20,7 @@ import type { Scheme, ThemeTokens } from "./types.js";
|
|
|
20
20
|
* interface.
|
|
21
21
|
*/
|
|
22
22
|
export interface AccentBrandOptions {
|
|
23
|
-
/** The one
|
|
23
|
+
/** The one color a brand always has. Hex, rgb() or hsl(). */
|
|
24
24
|
readonly accent: string;
|
|
25
25
|
/**
|
|
26
26
|
* Text drawn ON the accent — a filled button. Derived as black or white
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/theme/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAOd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,kBAAkB;IACjC,
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/theme/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAOd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACrD,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAQD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,GAAG,YAAY,CAoGxF;AAqDD,oEAAoE;AACpE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAC7C,SAAS,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAI5E;AAGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CASvF"}
|
package/dist/theme/derive.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { checkContrast,
|
|
2
|
-
const rgba = (
|
|
1
|
+
import { checkContrast, colorsIn, composite, contrast, hsl, rgbToHsl, } from "./contrast.js";
|
|
2
|
+
const rgba = (color, alpha) => `rgba(${Math.round(color.r)}, ${Math.round(color.g)}, ${Math.round(color.b)}, ${alpha})`;
|
|
3
3
|
const BLACK = { r: 0, g: 0, b: 0, a: 1 };
|
|
4
4
|
const WHITE = { r: 255, g: 255, b: 255, a: 1 };
|
|
5
5
|
/**
|
|
@@ -7,12 +7,12 @@ const WHITE = { r: 255, g: 255, b: 255, a: 1 };
|
|
|
7
7
|
* missing.
|
|
8
8
|
*/
|
|
9
9
|
export function brandFromAccent(options) {
|
|
10
|
-
const accent =
|
|
10
|
+
const accent = colorsIn(options.accent)[0];
|
|
11
11
|
if (!accent) {
|
|
12
12
|
return {
|
|
13
13
|
ok: false,
|
|
14
14
|
missing: ["accent"],
|
|
15
|
-
why: `"${options.accent}" is not a
|
|
15
|
+
why: `"${options.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`,
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
const schemes = {};
|
|
@@ -21,20 +21,20 @@ export function brandFromAccent(options) {
|
|
|
21
21
|
const base = rgbToHsl(accent);
|
|
22
22
|
for (const scheme of ["dark", "light"]) {
|
|
23
23
|
const neutral = options.base[scheme];
|
|
24
|
-
const ground =
|
|
25
|
-
const panel = composite(
|
|
24
|
+
const ground = colorsIn(neutral.ground)[0] ?? (scheme === "dark" ? BLACK : WHITE);
|
|
25
|
+
const panel = composite(colorsIn(neutral.panel)[0] ?? WHITE, ground);
|
|
26
26
|
/*
|
|
27
|
-
* The accent is used as TEXT, and no single
|
|
27
|
+
* The accent is used as TEXT, and no single color can be text in both
|
|
28
28
|
* schemes.
|
|
29
29
|
*
|
|
30
30
|
* 4.5:1 on white needs a lightness under about 0.18; 4.5:1 on a dark
|
|
31
31
|
* panel needs one over about 0.24. Those do not overlap, which is why
|
|
32
32
|
* "the brand's accent" is one hue with two lightnesses rather than one
|
|
33
|
-
*
|
|
33
|
+
* color — and why a framework that simply took the hex would have
|
|
34
34
|
* shipped an unreadable label in one scheme or the other.
|
|
35
35
|
*
|
|
36
36
|
* So the hue and the saturation are the brand's; the lightness is moved
|
|
37
|
-
* as little as it takes. If it has to move further than this, the
|
|
37
|
+
* as little as it takes. If it has to move further than this, the color
|
|
38
38
|
* has stopped being recognisably theirs and the honest answer is to ask.
|
|
39
39
|
*/
|
|
40
40
|
// Text on the panel and, with no capsule under it, on the ground itself (FR-117): it has to clear both.
|
|
@@ -45,13 +45,13 @@ export function brandFromAccent(options) {
|
|
|
45
45
|
}
|
|
46
46
|
else if (Math.abs(readable.l - base.l) > MAX_SHIFT) {
|
|
47
47
|
missing.add(`accent (${scheme})`);
|
|
48
|
-
reasons.push(`reaching 4.5:1 on the ${scheme} panel would move the accent's lightness by ${Math.round(Math.abs(readable.l - base.l) * 100)} points, which is far enough that it stops being the same
|
|
48
|
+
reasons.push(`reaching 4.5:1 on the ${scheme} panel would move the accent's lightness by ${Math.round(Math.abs(readable.l - base.l) * 100)} points, which is far enough that it stops being the same color — supply one for ${scheme}`);
|
|
49
49
|
}
|
|
50
50
|
const tone = readable ?? base;
|
|
51
51
|
const shown = hsl(tone.h, tone.s, tone.l);
|
|
52
52
|
const chosenInk = options.accentInk?.[scheme] ??
|
|
53
53
|
(contrast(WHITE, shown) >= contrast(BLACK, shown) ? "#ffffff" : "#000000");
|
|
54
|
-
const inkOnAccent = contrast(
|
|
54
|
+
const inkOnAccent = contrast(colorsIn(chosenInk)[0] ?? WHITE, shown);
|
|
55
55
|
if (inkOnAccent + 0.005 < 4.5) {
|
|
56
56
|
missing.add(`accentInk (${scheme})`);
|
|
57
57
|
reasons.push(`neither black nor white clears 4.5:1 on the accent (best ${inkOnAccent.toFixed(2)}:1), so text on a filled button has to be given`);
|
|
@@ -74,14 +74,14 @@ export function brandFromAccent(options) {
|
|
|
74
74
|
...(options.warn?.[scheme] ? { warn: options.warn[scheme] } : {}),
|
|
75
75
|
};
|
|
76
76
|
/*
|
|
77
|
-
* A warning
|
|
77
|
+
* A warning color must not be mistakable for the accent. Two roles that
|
|
78
78
|
* look alike is a worse failure than an ugly pair, because one of them
|
|
79
79
|
* means "something is broken".
|
|
80
80
|
*/
|
|
81
|
-
const warn =
|
|
81
|
+
const warn = colorsIn(schemes[scheme].warn)[0];
|
|
82
82
|
if (warn && hueGap(rgbToHsl(warn).h, tone.h) < 25) {
|
|
83
83
|
missing.add(`warn (${scheme})`);
|
|
84
|
-
reasons.push(`the warning
|
|
84
|
+
reasons.push(`the warning color shares the accent's hue in ${scheme}, so "something is broken" looks like "this is selected"`);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
if (missing.size > 0) {
|
|
@@ -90,17 +90,17 @@ export function brandFromAccent(options) {
|
|
|
90
90
|
return { ok: true, schemes };
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
* The smallest alpha at which a
|
|
93
|
+
* The smallest alpha at which a color laid on a ground clears a ratio, or
|
|
94
94
|
* the preferred one if that is already enough.
|
|
95
95
|
*
|
|
96
96
|
* Searched rather than solved because compositing then luminance is not
|
|
97
97
|
* invertible in closed form, and a hundred steps is cheap for something that
|
|
98
98
|
* runs once per theme.
|
|
99
99
|
*/
|
|
100
|
-
function visibleAlpha(
|
|
100
|
+
function visibleAlpha(color, ground, preferred, ratio) {
|
|
101
101
|
for (let step = Math.round(preferred * 100); step <= 100; step++) {
|
|
102
102
|
const alpha = step / 100;
|
|
103
|
-
if (contrast(composite({ ...
|
|
103
|
+
if (contrast(composite({ ...color, a: alpha }, ground), ground) >= ratio)
|
|
104
104
|
return alpha;
|
|
105
105
|
}
|
|
106
106
|
return 1;
|
|
@@ -110,12 +110,12 @@ function hueGap(a, b) {
|
|
|
110
110
|
const gap = Math.abs(a - b) % 360;
|
|
111
111
|
return gap > 180 ? 360 - gap : gap;
|
|
112
112
|
}
|
|
113
|
-
/** As much lightness as a brand's
|
|
113
|
+
/** As much lightness as a brand's color may be moved and still be theirs. */
|
|
114
114
|
const MAX_SHIFT = 0.3;
|
|
115
115
|
/**
|
|
116
116
|
* The lightness nearest the brand's own that clears the ratio on every one of these grounds.
|
|
117
117
|
*
|
|
118
|
-
* Searched from the original outwards rather than from an end, so a
|
|
118
|
+
* Searched from the original outwards rather than from an end, so a color
|
|
119
119
|
* that already works is left exactly alone and one that does not is moved the
|
|
120
120
|
* smallest distance that helps. Dark schemes are searched upward first and
|
|
121
121
|
* light ones downward, since that is the direction that will win.
|
package/dist/theme/derive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/theme/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/theme/derive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** The three stacks a document names by keyword, made of the faces the reader's system already has. */
|
|
2
|
+
export declare const SYSTEM_STACKS: Readonly<Record<"system-sans" | "system-serif" | "system-mono", string>>;
|
|
3
|
+
export type SystemStack = keyof typeof SYSTEM_STACKS;
|
|
4
|
+
/** Faces an operating system installs: named in a stack, used where the reader has them, and never fetched. */
|
|
5
|
+
export declare const SYSTEM_FONTS: readonly string[];
|
|
6
|
+
/** The web fonts a document may name (FR-124). The host decides whether and from where they load. */
|
|
7
|
+
export declare const DOCUMENT_FONTS: readonly string[];
|
|
8
|
+
/** The families a stack names, in order, unquoted. */
|
|
9
|
+
export declare function familiesIn(stack: string): readonly string[];
|
|
10
|
+
/** Whether a family is the reader's own — a generic family or a face the system installs — and so never fetched. */
|
|
11
|
+
export declare function isSystemFamily(family: string): boolean;
|
|
12
|
+
/** A document's stack as CSS: a keyword's stack, or the stack as written. */
|
|
13
|
+
export declare function stackOf(value: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Why a document may not name this stack, or null (FR-124). `served` is the
|
|
16
|
+
* web fonts the host serves beyond `DOCUMENT_FONTS`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fontProblem(value: string, served?: readonly string[]): string | null;
|
|
19
|
+
//# sourceMappingURL=fonts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/theme/fonts.ts"],"names":[],"mappings":"AAiBA,uGAAuG;AACvG,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,CAIlG,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,aAAa,CAAC;AAKrD,+GAA+G;AAC/G,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAIzC,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAIF,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAK3D;AAED,oHAAoH;AACpH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,GAAG,IAAI,CAWxF"}
|