@assure-one/design-system 1.39.0 → 1.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -28
- package/codemods/README.md +24 -7
- package/codemods/lib/registry.mjs +27 -0
- package/codemods/lib/runner.mjs +8 -3
- package/codemods/run.mjs +27 -5
- package/codemods/transforms/cm-15-dom-selectors.mjs +16 -9
- package/dist/brand-scope-BOHId6BY.d.ts +58 -0
- package/dist/{brand-theme-B6rem2II.d.ts → brand-theme-ZYM867Jz.d.ts} +1 -1
- package/dist/chunk-2MKLYYIY.js +3754 -0
- package/dist/chunk-2MKLYYIY.js.map +1 -0
- package/dist/chunk-6S2R2VWN.js +5527 -0
- package/dist/chunk-6S2R2VWN.js.map +1 -0
- package/dist/chunk-7U3ADR2Q.js +4336 -0
- package/dist/chunk-7U3ADR2Q.js.map +1 -0
- package/dist/chunk-CPOGSNXS.js +389 -0
- package/dist/chunk-CPOGSNXS.js.map +1 -0
- package/dist/chunk-EUHGZA6Q.js +313 -0
- package/dist/chunk-EUHGZA6Q.js.map +1 -0
- package/dist/chunk-KQBYTTAN.js +1829 -0
- package/dist/chunk-KQBYTTAN.js.map +1 -0
- package/dist/chunk-X76J4QSJ.js +164 -0
- package/dist/chunk-X76J4QSJ.js.map +1 -0
- package/dist/css/components.css +1 -1
- package/dist/css/legacy-aliases.css +2 -0
- package/dist/css/tailwind.css +2 -0
- package/dist/css/tokens.css +2 -0
- package/dist/data-table-view-ep8al7P9.d.ts +1132 -0
- package/dist/{design-system-provider-BM_F1C13.d.ts → design-system-provider-CfD2g2lY.d.ts} +11 -12
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +2 -1835
- package/dist/icons/index.js.map +1 -1
- package/dist/index.d.ts +373 -388
- package/dist/index.js +8688 -24271
- package/dist/index.js.map +1 -1
- package/dist/legacy/index.d.ts +1462 -7
- package/dist/legacy/index.js +5 -1
- package/dist/legacy/index.js.map +1 -1
- package/dist/next/index.d.ts +2 -2
- package/dist/styles.css +2 -1
- package/dist/suite/index.d.ts +989 -4
- package/dist/suite/index.js +6 -1
- package/dist/suite/index.js.map +1 -1
- package/dist/testing/index.cjs +3 -2
- package/dist/testing/index.js +3 -2
- package/dist/tokens/index.d.ts +1 -1
- package/dist/tokens/index.js +3 -856
- package/dist/tokens/index.js.map +1 -1
- package/dist/{types-k_kjwipx.d.ts → types-Coqw8iaS.d.ts} +28 -1
- package/docs/components.md +54 -54
- package/docs/components.registry.json +6 -6
- package/docs/for-ai-agents.md +12 -6
- package/package.json +5 -3
- package/dist/index-BAAuIQqP.d.ts +0 -2579
- package/dist/index-DxBjmBBp.d.ts +0 -1038
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
// src/foundation/theme/srgb.ts
|
|
2
|
+
var SRGB_TO_LINEAR_1E6 = [
|
|
3
|
+
0,
|
|
4
|
+
304,
|
|
5
|
+
607,
|
|
6
|
+
911,
|
|
7
|
+
1214,
|
|
8
|
+
1518,
|
|
9
|
+
1821,
|
|
10
|
+
2125,
|
|
11
|
+
2428,
|
|
12
|
+
2732,
|
|
13
|
+
3035,
|
|
14
|
+
3347,
|
|
15
|
+
3677,
|
|
16
|
+
4025,
|
|
17
|
+
4391,
|
|
18
|
+
4777,
|
|
19
|
+
5182,
|
|
20
|
+
5605,
|
|
21
|
+
6049,
|
|
22
|
+
6512,
|
|
23
|
+
6995,
|
|
24
|
+
7499,
|
|
25
|
+
8023,
|
|
26
|
+
8568,
|
|
27
|
+
9134,
|
|
28
|
+
9721,
|
|
29
|
+
10330,
|
|
30
|
+
10960,
|
|
31
|
+
11612,
|
|
32
|
+
12286,
|
|
33
|
+
12983,
|
|
34
|
+
13702,
|
|
35
|
+
14444,
|
|
36
|
+
15209,
|
|
37
|
+
15996,
|
|
38
|
+
16807,
|
|
39
|
+
17642,
|
|
40
|
+
18500,
|
|
41
|
+
19382,
|
|
42
|
+
20289,
|
|
43
|
+
21219,
|
|
44
|
+
22174,
|
|
45
|
+
23153,
|
|
46
|
+
24158,
|
|
47
|
+
25187,
|
|
48
|
+
26241,
|
|
49
|
+
27321,
|
|
50
|
+
28426,
|
|
51
|
+
29557,
|
|
52
|
+
30713,
|
|
53
|
+
31896,
|
|
54
|
+
33105,
|
|
55
|
+
34340,
|
|
56
|
+
35601,
|
|
57
|
+
36889,
|
|
58
|
+
38204,
|
|
59
|
+
39546,
|
|
60
|
+
40915,
|
|
61
|
+
42311,
|
|
62
|
+
43735,
|
|
63
|
+
45186,
|
|
64
|
+
46665,
|
|
65
|
+
48172,
|
|
66
|
+
49707,
|
|
67
|
+
51269,
|
|
68
|
+
52861,
|
|
69
|
+
54480,
|
|
70
|
+
56128,
|
|
71
|
+
57805,
|
|
72
|
+
59511,
|
|
73
|
+
61246,
|
|
74
|
+
63010,
|
|
75
|
+
64803,
|
|
76
|
+
66626,
|
|
77
|
+
68478,
|
|
78
|
+
70360,
|
|
79
|
+
72272,
|
|
80
|
+
74214,
|
|
81
|
+
76185,
|
|
82
|
+
78187,
|
|
83
|
+
80220,
|
|
84
|
+
82283,
|
|
85
|
+
84376,
|
|
86
|
+
86500,
|
|
87
|
+
88656,
|
|
88
|
+
90842,
|
|
89
|
+
93059,
|
|
90
|
+
95307,
|
|
91
|
+
97587,
|
|
92
|
+
99899,
|
|
93
|
+
102242,
|
|
94
|
+
104616,
|
|
95
|
+
107023,
|
|
96
|
+
109462,
|
|
97
|
+
111932,
|
|
98
|
+
114435,
|
|
99
|
+
116971,
|
|
100
|
+
119538,
|
|
101
|
+
122139,
|
|
102
|
+
124772,
|
|
103
|
+
127438,
|
|
104
|
+
130136,
|
|
105
|
+
132868,
|
|
106
|
+
135633,
|
|
107
|
+
138432,
|
|
108
|
+
141263,
|
|
109
|
+
144128,
|
|
110
|
+
147027,
|
|
111
|
+
149960,
|
|
112
|
+
152926,
|
|
113
|
+
155926,
|
|
114
|
+
158961,
|
|
115
|
+
162029,
|
|
116
|
+
165132,
|
|
117
|
+
168269,
|
|
118
|
+
171441,
|
|
119
|
+
174647,
|
|
120
|
+
177888,
|
|
121
|
+
181164,
|
|
122
|
+
184475,
|
|
123
|
+
187821,
|
|
124
|
+
191202,
|
|
125
|
+
194618,
|
|
126
|
+
198069,
|
|
127
|
+
201556,
|
|
128
|
+
205079,
|
|
129
|
+
208637,
|
|
130
|
+
212231,
|
|
131
|
+
215861,
|
|
132
|
+
219526,
|
|
133
|
+
223228,
|
|
134
|
+
226966,
|
|
135
|
+
230740,
|
|
136
|
+
234551,
|
|
137
|
+
238398,
|
|
138
|
+
242281,
|
|
139
|
+
246201,
|
|
140
|
+
250158,
|
|
141
|
+
254152,
|
|
142
|
+
258183,
|
|
143
|
+
262251,
|
|
144
|
+
266356,
|
|
145
|
+
270498,
|
|
146
|
+
274677,
|
|
147
|
+
278894,
|
|
148
|
+
283149,
|
|
149
|
+
287441,
|
|
150
|
+
291771,
|
|
151
|
+
296138,
|
|
152
|
+
300544,
|
|
153
|
+
304987,
|
|
154
|
+
309469,
|
|
155
|
+
313989,
|
|
156
|
+
318547,
|
|
157
|
+
323143,
|
|
158
|
+
327778,
|
|
159
|
+
332452,
|
|
160
|
+
337164,
|
|
161
|
+
341914,
|
|
162
|
+
346704,
|
|
163
|
+
351533,
|
|
164
|
+
356400,
|
|
165
|
+
361307,
|
|
166
|
+
366253,
|
|
167
|
+
371238,
|
|
168
|
+
376262,
|
|
169
|
+
381326,
|
|
170
|
+
386429,
|
|
171
|
+
391572,
|
|
172
|
+
396755,
|
|
173
|
+
401978,
|
|
174
|
+
407240,
|
|
175
|
+
412543,
|
|
176
|
+
417885,
|
|
177
|
+
423268,
|
|
178
|
+
428690,
|
|
179
|
+
434154,
|
|
180
|
+
439657,
|
|
181
|
+
445201,
|
|
182
|
+
450786,
|
|
183
|
+
456411,
|
|
184
|
+
462077,
|
|
185
|
+
467784,
|
|
186
|
+
473531,
|
|
187
|
+
479320,
|
|
188
|
+
485150,
|
|
189
|
+
491021,
|
|
190
|
+
496933,
|
|
191
|
+
502886,
|
|
192
|
+
508881,
|
|
193
|
+
514918,
|
|
194
|
+
520996,
|
|
195
|
+
527115,
|
|
196
|
+
533276,
|
|
197
|
+
539479,
|
|
198
|
+
545724,
|
|
199
|
+
552011,
|
|
200
|
+
558340,
|
|
201
|
+
564712,
|
|
202
|
+
571125,
|
|
203
|
+
577580,
|
|
204
|
+
584078,
|
|
205
|
+
590619,
|
|
206
|
+
597202,
|
|
207
|
+
603827,
|
|
208
|
+
610496,
|
|
209
|
+
617207,
|
|
210
|
+
623960,
|
|
211
|
+
630757,
|
|
212
|
+
637597,
|
|
213
|
+
644480,
|
|
214
|
+
651406,
|
|
215
|
+
658375,
|
|
216
|
+
665387,
|
|
217
|
+
672443,
|
|
218
|
+
679542,
|
|
219
|
+
686685,
|
|
220
|
+
693872,
|
|
221
|
+
701102,
|
|
222
|
+
708376,
|
|
223
|
+
715694,
|
|
224
|
+
723055,
|
|
225
|
+
730461,
|
|
226
|
+
737910,
|
|
227
|
+
745404,
|
|
228
|
+
752942,
|
|
229
|
+
760525,
|
|
230
|
+
768151,
|
|
231
|
+
775822,
|
|
232
|
+
783538,
|
|
233
|
+
791298,
|
|
234
|
+
799103,
|
|
235
|
+
806952,
|
|
236
|
+
814847,
|
|
237
|
+
822786,
|
|
238
|
+
830770,
|
|
239
|
+
838799,
|
|
240
|
+
846873,
|
|
241
|
+
854993,
|
|
242
|
+
863157,
|
|
243
|
+
871367,
|
|
244
|
+
879622,
|
|
245
|
+
887923,
|
|
246
|
+
896269,
|
|
247
|
+
904661,
|
|
248
|
+
913099,
|
|
249
|
+
921582,
|
|
250
|
+
930111,
|
|
251
|
+
938686,
|
|
252
|
+
947307,
|
|
253
|
+
955973,
|
|
254
|
+
964686,
|
|
255
|
+
973445,
|
|
256
|
+
982251,
|
|
257
|
+
991102,
|
|
258
|
+
1e6
|
|
259
|
+
];
|
|
260
|
+
var HEX_3 = /^#[0-9a-fA-F]{3}$/;
|
|
261
|
+
var HEX_6 = /^#[0-9a-fA-F]{6}$/;
|
|
262
|
+
var HEX_DIGITS = "0123456789abcdef";
|
|
263
|
+
function parseHexColor(value) {
|
|
264
|
+
if (HEX_6.test(value)) {
|
|
265
|
+
const n = Number.parseInt(value.slice(1), 16);
|
|
266
|
+
return [n >> 16 & 255, n >> 8 & 255, n & 255];
|
|
267
|
+
}
|
|
268
|
+
if (HEX_3.test(value)) {
|
|
269
|
+
const n = Number.parseInt(value.slice(1), 16);
|
|
270
|
+
const r = n >> 8 & 15;
|
|
271
|
+
const g = n >> 4 & 15;
|
|
272
|
+
const b = n & 15;
|
|
273
|
+
return [r * 17, g * 17, b * 17];
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
function formatHexColor([r, g, b]) {
|
|
278
|
+
const byte = (v) => (HEX_DIGITS[v >> 4 & 15] ?? "") + (HEX_DIGITS[v & 15] ?? "");
|
|
279
|
+
return `#${byte(r)}${byte(g)}${byte(b)}`;
|
|
280
|
+
}
|
|
281
|
+
function relativeLuminance([r, g, b]) {
|
|
282
|
+
const lr = (SRGB_TO_LINEAR_1E6[r] ?? 0) / 1e6;
|
|
283
|
+
const lg = (SRGB_TO_LINEAR_1E6[g] ?? 0) / 1e6;
|
|
284
|
+
const lb = (SRGB_TO_LINEAR_1E6[b] ?? 0) / 1e6;
|
|
285
|
+
return 0.2126 * lr + 0.7152 * lg + 0.0722 * lb;
|
|
286
|
+
}
|
|
287
|
+
function contrastRatio(a, b) {
|
|
288
|
+
const la = relativeLuminance(a);
|
|
289
|
+
const lb = relativeLuminance(b);
|
|
290
|
+
const lighter = la > lb ? la : lb;
|
|
291
|
+
const darker = la > lb ? lb : la;
|
|
292
|
+
return (lighter + 0.05) / (darker + 0.05);
|
|
293
|
+
}
|
|
294
|
+
function mixSrgb(a, b, percent) {
|
|
295
|
+
const mix = (x, y) => Math.round((x * percent + y * (100 - percent)) / 100);
|
|
296
|
+
return [mix(a[0], b[0]), mix(a[1], b[1]), mix(a[2], b[2])];
|
|
297
|
+
}
|
|
298
|
+
var WHITE = [255, 255, 255];
|
|
299
|
+
var BLACK = [0, 0, 0];
|
|
300
|
+
function readableInk(fill) {
|
|
301
|
+
return contrastRatio(BLACK, fill) >= contrastRatio(WHITE, fill) ? BLACK : WHITE;
|
|
302
|
+
}
|
|
303
|
+
function darkenUntilContrast(colour, against, minRatio) {
|
|
304
|
+
for (let percent = 100; percent >= 0; percent -= 1) {
|
|
305
|
+
const candidate = mixSrgb(colour, BLACK, percent);
|
|
306
|
+
if (contrastRatio(candidate, against) >= minRatio) return candidate;
|
|
307
|
+
}
|
|
308
|
+
return BLACK;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export { BLACK, WHITE, contrastRatio, darkenUntilContrast, formatHexColor, mixSrgb, parseHexColor, readableInk };
|
|
312
|
+
//# sourceMappingURL=chunk-EUHGZA6Q.js.map
|
|
313
|
+
//# sourceMappingURL=chunk-EUHGZA6Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/foundation/theme/srgb.ts"],"names":[],"mappings":";AA4BA,IAAM,kBAAA,GAAwC;AAAA,EAC5C,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAC1F,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACzF,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC3F,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC3F,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC3F,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC3F,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACtF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EACxF,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ;AAC1F,CAAA;AAEA,IAAM,KAAA,GAAQ,mBAAA;AACd,IAAM,KAAA,GAAQ,mBAAA;AACd,IAAM,UAAA,GAAa,kBAAA;AAGZ,SAAS,cAAc,KAAA,EAA2B;AACvD,EAAA,IAAI,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,EAAG;AACrB,IAAA,MAAM,IAAI,MAAA,CAAO,QAAA,CAAS,MAAM,KAAA,CAAM,CAAC,GAAG,EAAE,CAAA;AAC5C,IAAA,OAAO,CAAE,KAAK,EAAA,GAAM,GAAA,EAAO,KAAK,CAAA,GAAK,GAAA,EAAM,IAAI,GAAI,CAAA;AAAA,EACrD;AACA,EAAA,IAAI,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,EAAG;AACrB,IAAA,MAAM,IAAI,MAAA,CAAO,QAAA,CAAS,MAAM,KAAA,CAAM,CAAC,GAAG,EAAE,CAAA;AAC5C,IAAA,MAAM,CAAA,GAAK,KAAK,CAAA,GAAK,EAAA;AACrB,IAAA,MAAM,CAAA,GAAK,KAAK,CAAA,GAAK,EAAA;AACrB,IAAA,MAAM,IAAI,CAAA,GAAI,EAAA;AACd,IAAA,OAAO,CAAC,CAAA,GAAI,EAAA,EAAI,CAAA,GAAI,EAAA,EAAI,IAAI,EAAE,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,IAAA;AACT;AAIO,SAAS,cAAA,CAAe,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAgB;AACrD,EAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAA,CAAe,UAAA,CAAY,CAAA,IAAK,CAAA,GAAK,EAAG,CAAA,IAAK,EAAA,KAAO,UAAA,CAAW,CAAA,GAAI,EAAG,CAAA,IAAK,EAAA,CAAA;AACzF,EAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AACxC;AAGO,SAAS,iBAAA,CAAkB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAgB;AACxD,EAAA,MAAM,EAAA,GAAA,CAAM,kBAAA,CAAmB,CAAC,CAAA,IAAK,CAAA,IAAK,GAAA;AAC1C,EAAA,MAAM,EAAA,GAAA,CAAM,kBAAA,CAAmB,CAAC,CAAA,IAAK,CAAA,IAAK,GAAA;AAC1C,EAAA,MAAM,EAAA,GAAA,CAAM,kBAAA,CAAmB,CAAC,CAAA,IAAK,CAAA,IAAK,GAAA;AAC1C,EAAA,OAAO,MAAA,GAAS,EAAA,GAAK,MAAA,GAAS,EAAA,GAAK,MAAA,GAAS,EAAA;AAC9C;AAGO,SAAS,aAAA,CAAc,GAAQ,CAAA,EAAgB;AACpD,EAAA,MAAM,EAAA,GAAK,kBAAkB,CAAC,CAAA;AAC9B,EAAA,MAAM,EAAA,GAAK,kBAAkB,CAAC,CAAA;AAC9B,EAAA,MAAM,OAAA,GAAU,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAC9B,EAAA,OAAA,CAAQ,OAAA,GAAU,SAAS,MAAA,GAAS,IAAA,CAAA;AACtC;AAOO,SAAS,OAAA,CAAQ,CAAA,EAAQ,CAAA,EAAQ,OAAA,EAAsB;AAC5D,EAAA,MAAM,GAAA,GAAM,CAAC,CAAA,EAAW,CAAA,KAAc,IAAA,CAAK,KAAA,CAAA,CAAO,CAAA,GAAI,OAAA,GAAU,CAAA,IAAK,GAAA,GAAM,OAAA,CAAA,IAAY,GAAG,CAAA;AAC1F,EAAA,OAAO,CAAC,GAAA,CAAI,CAAA,CAAE,CAAC,CAAA,EAAG,EAAE,CAAC,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAC3D;AAEO,IAAM,KAAA,GAAa,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG;AACjC,IAAM,KAAA,GAAa,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC;AAW3B,SAAS,YAAY,IAAA,EAAgB;AAC1C,EAAA,OAAO,aAAA,CAAc,OAAO,IAAI,CAAA,IAAK,cAAc,KAAA,EAAO,IAAI,IAAI,KAAA,GAAQ,KAAA;AAC5E;AASO,SAAS,mBAAA,CAAoB,MAAA,EAAa,OAAA,EAAc,QAAA,EAAuB;AACpF,EAAA,KAAA,IAAS,OAAA,GAAU,GAAA,EAAK,OAAA,IAAW,CAAA,EAAG,WAAW,CAAA,EAAG;AAClD,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA;AAChD,IAAA,IAAI,aAAA,CAAc,SAAA,EAAW,OAAO,CAAA,IAAK,UAAU,OAAO,SAAA;AAAA,EAC5D;AACA,EAAA,OAAO,KAAA;AACT","file":"chunk-EUHGZA6Q.js","sourcesContent":["/**\n * sRGB colour arithmetic for the runtime brand contract (W1-20).\n *\n * Everything here is integer or IEEE-754 arithmetic over committed constants.\n * In particular the sRGB transfer function is a **committed lookup table**\n * rather than a call to `Math.pow`: `Math.pow` is implementation-approximated,\n * so two engines may return doubles that differ in the last bit, and a\n * comparison sitting exactly on a contrast threshold could then resolve one way\n * in Node and the other way in a browser. Addition, multiplication, division\n * and `Math.round` are exactly specified, so with the table as the only source\n * of transferred values every result below is bit-identical on every conforming\n * engine (amendment A3 — SSR determinism).\n *\n * `__tests__/srgb.test.ts` checks the table against the formula, so the\n * constants stay auditable.\n */\n\n/** A colour as three integer sRGB channels, 0–255. */\nexport type Rgb = readonly [number, number, number];\n\n/**\n * The sRGB transfer function applied to each of the 256 channel bytes, scaled\n * by 1e6 and rounded to the nearest integer. Index = channel byte.\n *\n * Six decimal places is far finer than the two the WCAG contrast thresholds are\n * quoted to — the worst-case effect on a ratio is about 2e-5 — and keeps the\n * table small enough to ship on a data entry point.\n */\nconst SRGB_TO_LINEAR_1E6: readonly number[] = [\n 0, 304, 607, 911, 1214, 1518, 1821, 2125, 2428, 2732, 3035, 3347, 3677, 4025, 4391, 4777, 5182,\n 5605, 6049, 6512, 6995, 7499, 8023, 8568, 9134, 9721, 10330, 10960, 11612, 12286, 12983, 13702,\n 14444, 15209, 15996, 16807, 17642, 18500, 19382, 20289, 21219, 22174, 23153, 24158, 25187, 26241,\n 27321, 28426, 29557, 30713, 31896, 33105, 34340, 35601, 36889, 38204, 39546, 40915, 42311, 43735,\n 45186, 46665, 48172, 49707, 51269, 52861, 54480, 56128, 57805, 59511, 61246, 63010, 64803, 66626,\n 68478, 70360, 72272, 74214, 76185, 78187, 80220, 82283, 84376, 86500, 88656, 90842, 93059, 95307,\n 97587, 99899, 102242, 104616, 107023, 109462, 111932, 114435, 116971, 119538, 122139, 124772,\n 127438, 130136, 132868, 135633, 138432, 141263, 144128, 147027, 149960, 152926, 155926, 158961,\n 162029, 165132, 168269, 171441, 174647, 177888, 181164, 184475, 187821, 191202, 194618, 198069,\n 201556, 205079, 208637, 212231, 215861, 219526, 223228, 226966, 230740, 234551, 238398, 242281,\n 246201, 250158, 254152, 258183, 262251, 266356, 270498, 274677, 278894, 283149, 287441, 291771,\n 296138, 300544, 304987, 309469, 313989, 318547, 323143, 327778, 332452, 337164, 341914, 346704,\n 351533, 356400, 361307, 366253, 371238, 376262, 381326, 386429, 391572, 396755, 401978, 407240,\n 412543, 417885, 423268, 428690, 434154, 439657, 445201, 450786, 456411, 462077, 467784, 473531,\n 479320, 485150, 491021, 496933, 502886, 508881, 514918, 520996, 527115, 533276, 539479, 545724,\n 552011, 558340, 564712, 571125, 577580, 584078, 590619, 597202, 603827, 610496, 617207, 623960,\n 630757, 637597, 644480, 651406, 658375, 665387, 672443, 679542, 686685, 693872, 701102, 708376,\n 715694, 723055, 730461, 737910, 745404, 752942, 760525, 768151, 775822, 783538, 791298, 799103,\n 806952, 814847, 822786, 830770, 838799, 846873, 854993, 863157, 871367, 879622, 887923, 896269,\n 904661, 913099, 921582, 930111, 938686, 947307, 955973, 964686, 973445, 982251, 991102, 1000000,\n];\n\nconst HEX_3 = /^#[0-9a-fA-F]{3}$/;\nconst HEX_6 = /^#[0-9a-fA-F]{6}$/;\nconst HEX_DIGITS = \"0123456789abcdef\";\n\n/** `#rgb` and `#rrggbb`, in either case. Returns `null` for anything else. */\nexport function parseHexColor(value: string): Rgb | null {\n if (HEX_6.test(value)) {\n const n = Number.parseInt(value.slice(1), 16);\n return [(n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff];\n }\n if (HEX_3.test(value)) {\n const n = Number.parseInt(value.slice(1), 16);\n const r = (n >> 8) & 0xf;\n const g = (n >> 4) & 0xf;\n const b = n & 0xf;\n return [r * 17, g * 17, b * 17];\n }\n return null;\n}\n\n/** Lower-case `#rrggbb`. Built by table lookup so no locale or `toString`\n * radix behaviour can enter the output. */\nexport function formatHexColor([r, g, b]: Rgb): string {\n const byte = (v: number) => (HEX_DIGITS[(v >> 4) & 0xf] ?? \"\") + (HEX_DIGITS[v & 0xf] ?? \"\");\n return `#${byte(r)}${byte(g)}${byte(b)}`;\n}\n\n/** WCAG relative luminance, from the committed transfer table. */\nexport function relativeLuminance([r, g, b]: Rgb): number {\n const lr = (SRGB_TO_LINEAR_1E6[r] ?? 0) / 1e6;\n const lg = (SRGB_TO_LINEAR_1E6[g] ?? 0) / 1e6;\n const lb = (SRGB_TO_LINEAR_1E6[b] ?? 0) / 1e6;\n return 0.2126 * lr + 0.7152 * lg + 0.0722 * lb;\n}\n\n/** WCAG 2.2 contrast ratio between two opaque colours (1–21). */\nexport function contrastRatio(a: Rgb, b: Rgb): number {\n const la = relativeLuminance(a);\n const lb = relativeLuminance(b);\n const lighter = la > lb ? la : lb;\n const darker = la > lb ? lb : la;\n return (lighter + 0.05) / (darker + 0.05);\n}\n\n/**\n * `color-mix(in srgb, <a> <percent>%, <b>)` evaluated on integer channels.\n * `percent` is an integer 0–100; sRGB mixing is a straight interpolation in the\n * gamma-encoded space, which is what the browser does for `in srgb`.\n */\nexport function mixSrgb(a: Rgb, b: Rgb, percent: number): Rgb {\n const mix = (x: number, y: number) => Math.round((x * percent + y * (100 - percent)) / 100);\n return [mix(a[0], b[0]), mix(a[1], b[1]), mix(a[2], b[2])];\n}\n\nexport const WHITE: Rgb = [255, 255, 255];\nexport const BLACK: Rgb = [0, 0, 0];\n\n/**\n * Pure black or pure white, whichever has more contrast against `fill`.\n *\n * The two endpoints cross over at a luminance of about 0.1791, where both reach\n * 4.58:1, so the winner is **always** at or above 4.58:1 — WCAG 2.2 AA for\n * normal text (4.5:1) with margin, for every possible fill. Any near-black ink\n * short of `#000000` loses that property, which is why this returns the\n * extremes rather than a token value.\n */\nexport function readableInk(fill: Rgb): Rgb {\n return contrastRatio(BLACK, fill) >= contrastRatio(WHITE, fill) ? BLACK : WHITE;\n}\n\n/**\n * The least-darkened mix of `colour` towards black that reaches `minRatio`\n * against `against`, searched over the 101 integer mix percentages from 100\n * (untouched) downwards. 0% is black, so the search terminates whenever\n * `against` is light enough for black to pass — true for every background this\n * module uses.\n */\nexport function darkenUntilContrast(colour: Rgb, against: Rgb, minRatio: number): Rgb {\n for (let percent = 100; percent >= 0; percent -= 1) {\n const candidate = mixSrgb(colour, BLACK, percent);\n if (contrastRatio(candidate, against) >= minRatio) return candidate;\n }\n return BLACK;\n}\n"]}
|