@flyingrobots/bijou 1.8.0 → 3.0.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 +11 -11
- package/dist/adapters/test/index.d.ts +0 -1
- package/dist/adapters/test/index.d.ts.map +1 -1
- package/dist/adapters/test/index.js +4 -1
- package/dist/adapters/test/index.js.map +1 -1
- package/dist/adapters/test/runtime.d.ts +2 -0
- package/dist/adapters/test/runtime.d.ts.map +1 -1
- package/dist/adapters/test/runtime.js +1 -0
- package/dist/adapters/test/runtime.js.map +1 -1
- package/dist/core/components/alert.d.ts +2 -4
- package/dist/core/components/alert.d.ts.map +1 -1
- package/dist/core/components/alert.js.map +1 -1
- package/dist/core/components/badge.d.ts +6 -12
- package/dist/core/components/badge.d.ts.map +1 -1
- package/dist/core/components/badge.js +39 -24
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/bcss-style.d.ts +6 -0
- package/dist/core/components/bcss-style.d.ts.map +1 -0
- package/dist/core/components/bcss-style.js +44 -0
- package/dist/core/components/bcss-style.js.map +1 -0
- package/dist/core/components/box-v3.d.ts +9 -0
- package/dist/core/components/box-v3.d.ts.map +1 -0
- package/dist/core/components/box-v3.js +91 -0
- package/dist/core/components/box-v3.js.map +1 -0
- package/dist/core/components/box.d.ts +4 -4
- package/dist/core/components/box.d.ts.map +1 -1
- package/dist/core/components/box.js +26 -4
- package/dist/core/components/box.js.map +1 -1
- package/dist/core/components/log.d.ts.map +1 -1
- package/dist/core/components/log.js +2 -1
- package/dist/core/components/log.js.map +1 -1
- package/dist/core/components/separator.d.ts +2 -4
- package/dist/core/components/separator.d.ts.map +1 -1
- package/dist/core/components/separator.js.map +1 -1
- package/dist/core/components/types.d.ts +15 -0
- package/dist/core/components/types.d.ts.map +1 -0
- package/dist/core/components/types.js +2 -0
- package/dist/core/components/types.js.map +1 -0
- package/dist/core/detect/tty.d.ts +5 -15
- package/dist/core/detect/tty.d.ts.map +1 -1
- package/dist/core/detect/tty.js +3 -13
- package/dist/core/detect/tty.js.map +1 -1
- package/dist/core/layout/flex.d.ts +28 -0
- package/dist/core/layout/flex.d.ts.map +1 -0
- package/dist/core/layout/flex.js +126 -0
- package/dist/core/layout/flex.js.map +1 -0
- package/dist/core/render/differ.d.ts +49 -0
- package/dist/core/render/differ.d.ts.map +1 -0
- package/dist/core/render/differ.js +271 -0
- package/dist/core/render/differ.js.map +1 -0
- package/dist/core/theme/accessors.d.ts.map +1 -1
- package/dist/core/theme/accessors.js +21 -5
- package/dist/core/theme/accessors.js.map +1 -1
- package/dist/core/theme/graph-types.d.ts +58 -0
- package/dist/core/theme/graph-types.d.ts.map +1 -0
- package/dist/core/theme/graph-types.js +2 -0
- package/dist/core/theme/graph-types.js.map +1 -0
- package/dist/core/theme/graph.d.ts +27 -0
- package/dist/core/theme/graph.d.ts.map +1 -0
- package/dist/core/theme/graph.js +155 -0
- package/dist/core/theme/graph.js.map +1 -0
- package/dist/core/theme/index.d.ts +4 -1
- package/dist/core/theme/index.d.ts.map +1 -1
- package/dist/core/theme/index.js +3 -1
- package/dist/core/theme/index.js.map +1 -1
- package/dist/core/theme/resolve.d.ts +8 -33
- package/dist/core/theme/resolve.d.ts.map +1 -1
- package/dist/core/theme/resolve.js +6 -39
- package/dist/core/theme/resolve.js.map +1 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +5 -0
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/ports/context.d.ts +9 -0
- package/dist/ports/context.d.ts.map +1 -1
- package/dist/ports/env.d.ts +7 -14
- package/dist/ports/env.d.ts.map +1 -1
- package/dist/ports/env.js +7 -16
- package/dist/ports/env.js.map +1 -1
- package/dist/ports/io.d.ts +6 -0
- package/dist/ports/io.d.ts.map +1 -1
- package/dist/ports/runtime.d.ts +5 -0
- package/dist/ports/runtime.d.ts.map +1 -1
- package/dist/ports/surface.d.ts +152 -0
- package/dist/ports/surface.d.ts.map +1 -0
- package/dist/ports/surface.js +199 -0
- package/dist/ports/surface.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { createSurface } from '../../ports/surface.js';
|
|
2
|
+
import { stripAnsi, segmentGraphemes } from '../text/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Convert a multi-line string into a Surface.
|
|
5
|
+
*
|
|
6
|
+
* Note: This is a legacy migration helper. It currently strips ANSI
|
|
7
|
+
* and treats all characters as the default style.
|
|
8
|
+
*/
|
|
9
|
+
export function stringToSurface(text, width, height) {
|
|
10
|
+
const surface = createSurface(width, height);
|
|
11
|
+
const plainText = stripAnsi(text);
|
|
12
|
+
const lines = plainText.split(/\r?\n/);
|
|
13
|
+
for (let y = 0; y < Math.min(height, lines.length); y++) {
|
|
14
|
+
const line = lines[y];
|
|
15
|
+
const gs = segmentGraphemes(line);
|
|
16
|
+
for (let x = 0; x < Math.min(width, gs.length); x++) {
|
|
17
|
+
surface.set(x, y, { char: gs[x], empty: false });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return surface;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Robust ANSI-aware string to Surface conversion.
|
|
24
|
+
*/
|
|
25
|
+
export function parseAnsiToSurface(text, width, height) {
|
|
26
|
+
const surface = createSurface(width, height);
|
|
27
|
+
const lines = text.split(/\r?\n/);
|
|
28
|
+
const ANSI_RE = /\x1b\[([0-9;]*)m/g;
|
|
29
|
+
for (let y = 0; y < Math.min(height, lines.length); y++) {
|
|
30
|
+
const line = lines[y];
|
|
31
|
+
let x = 0;
|
|
32
|
+
let currentFg;
|
|
33
|
+
let currentBg;
|
|
34
|
+
let currentMods = new Set();
|
|
35
|
+
const matches = Array.from(line.matchAll(ANSI_RE));
|
|
36
|
+
let lastIndex = 0;
|
|
37
|
+
for (const match of matches) {
|
|
38
|
+
const matchIndex = match.index;
|
|
39
|
+
const part = line.slice(lastIndex, matchIndex);
|
|
40
|
+
const gs = segmentGraphemes(part);
|
|
41
|
+
for (const char of gs) {
|
|
42
|
+
if (x < width) {
|
|
43
|
+
surface.set(x, y, { char, fg: currentFg, bg: currentBg, modifiers: Array.from(currentMods) });
|
|
44
|
+
x++;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const codeStr = match[1];
|
|
48
|
+
if (codeStr === '0' || codeStr === '') {
|
|
49
|
+
currentFg = undefined;
|
|
50
|
+
currentBg = undefined;
|
|
51
|
+
currentMods.clear();
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const parts = codeStr.split(';');
|
|
55
|
+
let i = 0;
|
|
56
|
+
while (i < parts.length) {
|
|
57
|
+
const code = parts[i];
|
|
58
|
+
if (code === '1')
|
|
59
|
+
currentMods.add('bold');
|
|
60
|
+
else if (code === '2')
|
|
61
|
+
currentMods.add('dim');
|
|
62
|
+
else if (code === '3')
|
|
63
|
+
currentMods.add('italic');
|
|
64
|
+
else if (code === '4')
|
|
65
|
+
currentMods.add('underline');
|
|
66
|
+
else if (code === '7')
|
|
67
|
+
currentMods.add('inverse');
|
|
68
|
+
else if (code === '9')
|
|
69
|
+
currentMods.add('strike');
|
|
70
|
+
else if (code === '22') {
|
|
71
|
+
currentMods.delete('bold');
|
|
72
|
+
currentMods.delete('dim');
|
|
73
|
+
}
|
|
74
|
+
else if (code === '23')
|
|
75
|
+
currentMods.delete('italic');
|
|
76
|
+
else if (code === '24')
|
|
77
|
+
currentMods.delete('underline');
|
|
78
|
+
else if (code === '27')
|
|
79
|
+
currentMods.delete('inverse');
|
|
80
|
+
else if (code === '29')
|
|
81
|
+
currentMods.delete('strike');
|
|
82
|
+
else if (code === '38' && parts[i + 1] === '2') {
|
|
83
|
+
// Truecolor FG: 38;2;R;G;B
|
|
84
|
+
const r = parseInt(parts[i + 2], 10).toString(16).padStart(2, '0');
|
|
85
|
+
const g = parseInt(parts[i + 3], 10).toString(16).padStart(2, '0');
|
|
86
|
+
const b = parseInt(parts[i + 4], 10).toString(16).padStart(2, '0');
|
|
87
|
+
currentFg = '#' + r + g + b;
|
|
88
|
+
i += 4;
|
|
89
|
+
}
|
|
90
|
+
else if (code === '48' && parts[i + 1] === '2') {
|
|
91
|
+
// Truecolor BG: 48;2;R;G;B
|
|
92
|
+
const r = parseInt(parts[i + 2], 10).toString(16).padStart(2, '0');
|
|
93
|
+
const g = parseInt(parts[i + 3], 10).toString(16).padStart(2, '0');
|
|
94
|
+
const b = parseInt(parts[i + 4], 10).toString(16).padStart(2, '0');
|
|
95
|
+
currentBg = '#' + r + g + b;
|
|
96
|
+
i += 4;
|
|
97
|
+
}
|
|
98
|
+
i++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
lastIndex = matchIndex + match[0].length;
|
|
102
|
+
}
|
|
103
|
+
const remaining = line.slice(lastIndex);
|
|
104
|
+
const gs = segmentGraphemes(remaining);
|
|
105
|
+
for (const char of gs) {
|
|
106
|
+
if (x < width) {
|
|
107
|
+
surface.set(x, y, { char, fg: currentFg, bg: currentBg, modifiers: Array.from(currentMods) });
|
|
108
|
+
x++;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return surface;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Convert a Surface into a multi-line string with ANSI escape codes.
|
|
116
|
+
*
|
|
117
|
+
* Note: This is a legacy migration helper.
|
|
118
|
+
*
|
|
119
|
+
* @param surface - The surface to convert.
|
|
120
|
+
* @param style - The style port to use for color resolution.
|
|
121
|
+
* @returns A string representation of the surface.
|
|
122
|
+
*/
|
|
123
|
+
export function surfaceToString(surface, style) {
|
|
124
|
+
const lines = [];
|
|
125
|
+
for (let y = 0; y < surface.height; y++) {
|
|
126
|
+
let line = '';
|
|
127
|
+
for (let x = 0; x < surface.width; x++) {
|
|
128
|
+
const cell = surface.get(x, y);
|
|
129
|
+
const token = {
|
|
130
|
+
hex: cell.fg,
|
|
131
|
+
bg: cell.bg,
|
|
132
|
+
modifiers: cell.modifiers,
|
|
133
|
+
};
|
|
134
|
+
line += style.styled(token, cell.char);
|
|
135
|
+
}
|
|
136
|
+
lines.push(line);
|
|
137
|
+
}
|
|
138
|
+
return lines.join('\n');
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Paint a LayoutNode tree onto a Surface.
|
|
142
|
+
*
|
|
143
|
+
* @param target - The surface to paint onto.
|
|
144
|
+
* @param node - The root layout node to paint.
|
|
145
|
+
*/
|
|
146
|
+
export function paintLayoutNode(target, node) {
|
|
147
|
+
if (node.surface) {
|
|
148
|
+
target.blit(node.surface, node.rect.x, node.rect.y);
|
|
149
|
+
}
|
|
150
|
+
for (const child of node.children) {
|
|
151
|
+
paintLayoutNode(target, child);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Compare two cells for equality (content and style).
|
|
156
|
+
*/
|
|
157
|
+
export function isSameCell(a, b) {
|
|
158
|
+
if (a.char !== b.char)
|
|
159
|
+
return false;
|
|
160
|
+
if (a.fg !== b.fg)
|
|
161
|
+
return false;
|
|
162
|
+
if (a.bg !== b.bg)
|
|
163
|
+
return false;
|
|
164
|
+
if (a.empty !== b.empty)
|
|
165
|
+
return false;
|
|
166
|
+
const aMods = a.modifiers ?? [];
|
|
167
|
+
const bMods = b.modifiers ?? [];
|
|
168
|
+
if (aMods.length !== bMods.length)
|
|
169
|
+
return false;
|
|
170
|
+
for (let i = 0; i < aMods.length; i++) {
|
|
171
|
+
if (aMods[i] !== bMods[i])
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Move the terminal cursor to (x, y) using CUP (Cursor Position) escape code.
|
|
178
|
+
* Coordinates are 0-based in Bijou, but 1-based in ANSI.
|
|
179
|
+
*/
|
|
180
|
+
function moveCursor(x, y) {
|
|
181
|
+
return `\x1b[${y + 1};${x + 1}H`;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Diff two surfaces and write the minimal set of changes to the WritePort.
|
|
185
|
+
*
|
|
186
|
+
* Optimizations:
|
|
187
|
+
* 1. Skips identical cells.
|
|
188
|
+
* 2. Minimizes CUP (move cursor) commands by detecting contiguous changes.
|
|
189
|
+
* 3. Batches cells with identical styles to minimize SGR codes and keep strings contiguous.
|
|
190
|
+
*
|
|
191
|
+
* @param current - The surface currently on the terminal.
|
|
192
|
+
* @param target - The desired surface state.
|
|
193
|
+
* @param io - The port to write ANSI codes to.
|
|
194
|
+
* @param style - The port to resolve cell styling.
|
|
195
|
+
*/
|
|
196
|
+
export function renderDiff(current, target, io, style) {
|
|
197
|
+
const width = target.width;
|
|
198
|
+
const height = target.height;
|
|
199
|
+
let output = '';
|
|
200
|
+
let cursorX = -1;
|
|
201
|
+
let cursorY = -1;
|
|
202
|
+
for (let y = 0; y < height; y++) {
|
|
203
|
+
let x = 0;
|
|
204
|
+
while (x < width) {
|
|
205
|
+
const targetCell = target.get(x, y);
|
|
206
|
+
const currentCell = current.get(x, y);
|
|
207
|
+
if (isSameCell(targetCell, currentCell)) {
|
|
208
|
+
x++;
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
// If we are not at the expected cursor position, move it
|
|
212
|
+
if (x !== cursorX || y !== cursorY) {
|
|
213
|
+
output += moveCursor(x, y);
|
|
214
|
+
}
|
|
215
|
+
// Find how many contiguous cells have the SAME style as this one
|
|
216
|
+
// and also NEED to be updated.
|
|
217
|
+
let batchX = x;
|
|
218
|
+
let batchText = '';
|
|
219
|
+
while (batchX < width) {
|
|
220
|
+
const c = target.get(batchX, y);
|
|
221
|
+
const curr = current.get(batchX, y);
|
|
222
|
+
if (batchX > x && !isSameStyle(c, targetCell))
|
|
223
|
+
break;
|
|
224
|
+
if (isSameCell(c, curr))
|
|
225
|
+
break;
|
|
226
|
+
batchText += c.char;
|
|
227
|
+
batchX++;
|
|
228
|
+
}
|
|
229
|
+
// Render the batch
|
|
230
|
+
const token = {
|
|
231
|
+
hex: targetCell.fg,
|
|
232
|
+
bg: targetCell.bg,
|
|
233
|
+
modifiers: targetCell.modifiers,
|
|
234
|
+
};
|
|
235
|
+
output += style.styled(token, batchText);
|
|
236
|
+
// Advance our internal cursor tracking
|
|
237
|
+
const batchWidth = batchX - x;
|
|
238
|
+
cursorX = x + batchWidth;
|
|
239
|
+
cursorY = y;
|
|
240
|
+
// Advance loop index
|
|
241
|
+
x = batchX;
|
|
242
|
+
// Flush if the buffer is getting large
|
|
243
|
+
if (output.length > 4096) {
|
|
244
|
+
io.write(output);
|
|
245
|
+
output = '';
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (output.length > 0) {
|
|
250
|
+
io.write(output);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Compare two cells for style equality only.
|
|
255
|
+
*/
|
|
256
|
+
function isSameStyle(a, b) {
|
|
257
|
+
if (a.fg !== b.fg)
|
|
258
|
+
return false;
|
|
259
|
+
if (a.bg !== b.bg)
|
|
260
|
+
return false;
|
|
261
|
+
const aMods = a.modifiers ?? [];
|
|
262
|
+
const bMods = b.modifiers ?? [];
|
|
263
|
+
if (aMods.length !== bMods.length)
|
|
264
|
+
return false;
|
|
265
|
+
for (let i = 0; i < aMods.length; i++) {
|
|
266
|
+
if (aMods[i] !== bMods[i])
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=differ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,wBAAwB,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc;IAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,mBAAmB,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,IAAI,SAA6B,CAAC;QAClC,IAAI,SAA6B,CAAC;QAClC,IAAI,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAM,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAC9F,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACtC,SAAS,GAAG,SAAS,CAAC;gBACtB,SAAS,GAAG,SAAS,CAAC;gBACtB,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBACvB,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;yBACrC,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;yBACzC,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;yBAC5C,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;yBAC/C,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;yBAC7C,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;yBAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;yBAC7E,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;yBAChD,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;yBACnD,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;yBACjD,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;yBAChD,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC7C,2BAA2B;wBAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC5B,CAAC,IAAI,CAAC,CAAC;oBACT,CAAC;yBAAM,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC/C,2BAA2B;wBAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC5B,CAAC,IAAI,CAAC,CAAC;oBACT,CAAC;oBACD,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;YAED,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9F,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,KAAgB;IAChE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG;gBACZ,GAAG,EAAE,IAAI,CAAC,EAAE;gBACZ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAgB;aACjC,CAAC;YACF,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe,EAAE,IAAgB;IAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,CAAO,EAAE,CAAO;IACzC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEtC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,MAAe,EACf,EAAa,EACb,KAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtC,IAAI,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;gBACxC,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YAED,yDAAyD;YACzD,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,iEAAiE;YACjE,+BAA+B;YAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,OAAO,MAAM,GAAG,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAEpC,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC;oBAAE,MAAM;gBACrD,IAAI,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;oBAAE,MAAM;gBAE/B,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,CAAC;YACX,CAAC;YAED,mBAAmB;YACnB,MAAM,KAAK,GAAG;gBACZ,GAAG,EAAE,UAAU,CAAC,EAAE;gBAClB,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,SAAS,EAAE,UAAU,CAAC,SAAgB;aACvC,CAAC;YAEF,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,SAAS,CAAC,CAAC;YAEhD,uCAAuC;YACvC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC;YACzB,OAAO,GAAG,CAAC,CAAC;YAEZ,qBAAqB;YACrB,CAAC,GAAG,MAAM,CAAC;YAEX,uCAAuC;YACvC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBACzB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjB,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,CAAO,EAAE,CAAO;IACnC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessors.d.ts","sourceRoot":"","sources":["../../../src/core/theme/accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACnD,oCAAoC;IACpC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAC/C,qCAAqC;IACrC,OAAO,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;IACjD,+DAA+D;IAC/D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,4EAA4E;IAC5E,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"accessors.d.ts","sourceRoot":"","sources":["../../../src/core/theme/accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACnD,oCAAoC;IACpC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAC/C,qCAAqC;IACrC,OAAO,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;IACjD,+DAA+D;IAC/D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,4EAA4E;IAC5E,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAwBzE"}
|
|
@@ -9,12 +9,28 @@
|
|
|
9
9
|
* @returns An object whose properties can be spread into a {@link BijouContext}.
|
|
10
10
|
*/
|
|
11
11
|
export function createThemeAccessors(theme) {
|
|
12
|
+
const { tokenGraph, colorScheme } = theme;
|
|
13
|
+
const mode = colorScheme === 'light' ? 'light' : 'dark';
|
|
12
14
|
return {
|
|
13
|
-
semantic: (key) =>
|
|
14
|
-
border: (key) =>
|
|
15
|
-
surface: (key) =>
|
|
16
|
-
status: (key) =>
|
|
17
|
-
|
|
15
|
+
semantic: (key) => tokenGraph.get(`semantic.${key}`, mode),
|
|
16
|
+
border: (key) => tokenGraph.get(`border.${key}`, mode),
|
|
17
|
+
surface: (key) => tokenGraph.get(`surface.${key}`, mode),
|
|
18
|
+
status: (key) => {
|
|
19
|
+
try {
|
|
20
|
+
return tokenGraph.get(`status.${key}`, mode);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return tokenGraph.get('status.muted', mode);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
ui: (key) => {
|
|
27
|
+
try {
|
|
28
|
+
return tokenGraph.get(`ui.${key}`, mode);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return tokenGraph.get('semantic.primary', mode);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
18
34
|
gradient: (key) => theme.theme.gradient[key] ?? [],
|
|
19
35
|
};
|
|
20
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessors.js","sourceRoot":"","sources":["../../../src/core/theme/accessors.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,OAAO;QACL,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"accessors.js","sourceRoot":"","sources":["../../../src/core/theme/accessors.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAExD,OAAO;QACL,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,EAAE,IAAI,CAAC;QAC1D,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,CAAC;QACtD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,EAAE,IAAI,CAAC;QACxD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,IAAI,CAAC;gBACH,OAAO,UAAU,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACV,IAAI,CAAC;gBACH,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAE,KAAK,CAAC,KAAK,CAAC,QAA2C,CAAC,GAAG,CAAC,IAAI,EAAE;KACvF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { TokenValue, TextModifier } from './tokens.js';
|
|
2
|
+
/**
|
|
3
|
+
* Color transformation operations supported by the token graph.
|
|
4
|
+
*/
|
|
5
|
+
export type ColorTransform = {
|
|
6
|
+
type: 'darken';
|
|
7
|
+
amount: number;
|
|
8
|
+
} | {
|
|
9
|
+
type: 'lighten';
|
|
10
|
+
amount: number;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'saturate';
|
|
13
|
+
amount: number;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'desaturate';
|
|
16
|
+
amount: number;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'complementary';
|
|
19
|
+
} | {
|
|
20
|
+
type: 'mix';
|
|
21
|
+
with: string;
|
|
22
|
+
ratio?: number;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'inverse';
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* A definition for a single token value.
|
|
28
|
+
* Can be a raw hex string, a reference to another token, or a mode-specific choice.
|
|
29
|
+
*/
|
|
30
|
+
export type ColorDefinition = string | {
|
|
31
|
+
ref: string;
|
|
32
|
+
transform?: ColorTransform[];
|
|
33
|
+
} | {
|
|
34
|
+
light: ColorDefinition;
|
|
35
|
+
dark: ColorDefinition;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* A definition for a complete theme token (foreground, background, modifiers).
|
|
39
|
+
*/
|
|
40
|
+
export interface TokenDefinition {
|
|
41
|
+
/** Foreground color definition. */
|
|
42
|
+
fg: ColorDefinition;
|
|
43
|
+
/** Optional background color definition. */
|
|
44
|
+
bg?: ColorDefinition;
|
|
45
|
+
/** Optional text style modifiers. */
|
|
46
|
+
modifiers?: TextModifier[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Union of possible input values for a token path.
|
|
50
|
+
*/
|
|
51
|
+
export type TokenInput = ColorDefinition | TokenDefinition | TokenValue;
|
|
52
|
+
/**
|
|
53
|
+
* A flat or nested map of token definitions.
|
|
54
|
+
*/
|
|
55
|
+
export interface TokenDefinitions {
|
|
56
|
+
[key: string]: TokenInput | TokenDefinitions;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=graph-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-types.d.ts","sourceRoot":"","sources":["../../../src/core/theme/graph-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GACN;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,EAAE,EAAE,eAAe,CAAC;IACpB,4CAA4C;IAC5C,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,qCAAqC;IACrC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,gBAAgB,CAAC;CAC9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-types.js","sourceRoot":"","sources":["../../../src/core/theme/graph-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { TokenValue } from './tokens.js';
|
|
2
|
+
import type { ColorDefinition, TokenDefinitions, TokenInput } from './graph-types.js';
|
|
3
|
+
export type ThemeMode = 'light' | 'dark';
|
|
4
|
+
/**
|
|
5
|
+
* Reactive and Semantic Token Graph for Bijou themes.
|
|
6
|
+
*/
|
|
7
|
+
export interface TokenGraph {
|
|
8
|
+
/** Resolve a token definition path to a final TokenValue. */
|
|
9
|
+
get(path: string, mode?: ThemeMode): TokenValue;
|
|
10
|
+
/** Resolve a raw color definition to a hex string. */
|
|
11
|
+
getColor(def: ColorDefinition, mode?: ThemeMode): string;
|
|
12
|
+
/** Update a definition in the graph and notify subscribers. */
|
|
13
|
+
set(path: string, definition: TokenInput): void;
|
|
14
|
+
/** Register a listener for graph changes. */
|
|
15
|
+
on(handler: (path: string) => void): {
|
|
16
|
+
dispose(): void;
|
|
17
|
+
};
|
|
18
|
+
/** Import a standard Theme object or a nested definitions object. */
|
|
19
|
+
import(defs: TokenDefinitions): void;
|
|
20
|
+
/** Clear all definitions and subscribers from the graph. */
|
|
21
|
+
dispose(): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a new TokenGraph.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createTokenGraph(initial?: TokenDefinitions): TokenGraph;
|
|
27
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/core/theme/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAW9C,OAAO,KAAK,EACV,eAAe,EAEf,gBAAgB,EAEhB,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAChD,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACzD,+DAA+D;IAC/D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAChD,6CAA6C;IAC7C,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG;QAAE,OAAO,IAAI,IAAI,CAAA;KAAE,CAAC;IACzD,qEAAqE;IACrE,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,4DAA4D;IAC5D,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,UAAU,CA0JvE"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { hexToRgb, rgbToHex, lighten, darken, mix, complementary, saturate, desaturate } from './color.js';
|
|
2
|
+
function isTokenValue(obj) {
|
|
3
|
+
return typeof obj === 'object' && obj !== null && 'hex' in obj;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Create a new TokenGraph.
|
|
7
|
+
*/
|
|
8
|
+
export function createTokenGraph(initial) {
|
|
9
|
+
const definitions = new Map();
|
|
10
|
+
const subscribers = new Set();
|
|
11
|
+
if (initial) {
|
|
12
|
+
importInternal('', initial);
|
|
13
|
+
}
|
|
14
|
+
function importInternal(basePath, defs) {
|
|
15
|
+
for (const [key, value] of Object.entries(defs)) {
|
|
16
|
+
const fullPath = basePath ? `${basePath}.${key}` : key;
|
|
17
|
+
if (isTokenValue(value)) {
|
|
18
|
+
// Convert TokenValue to TokenDefinition
|
|
19
|
+
definitions.set(fullPath, {
|
|
20
|
+
fg: value.hex,
|
|
21
|
+
bg: value.bg,
|
|
22
|
+
modifiers: value.modifiers,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else if (typeof value === 'object' && value !== null && !('ref' in value) && !('light' in value) && !('fg' in value)) {
|
|
26
|
+
importInternal(fullPath, value);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
definitions.set(fullPath, value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function resolveColor(def, mode, visited) {
|
|
34
|
+
if (typeof def === 'string') {
|
|
35
|
+
// Normalize hex string
|
|
36
|
+
try {
|
|
37
|
+
return rgbToHex(hexToRgb(def));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return def;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if ('light' in def && 'dark' in def) {
|
|
44
|
+
return resolveColor(mode === 'light' ? def.light : def.dark, mode, visited);
|
|
45
|
+
}
|
|
46
|
+
if ('ref' in def) {
|
|
47
|
+
if (visited.has(def.ref)) {
|
|
48
|
+
throw new Error(`Circular token reference detected: ${Array.from(visited).join(' -> ')} -> ${def.ref}`);
|
|
49
|
+
}
|
|
50
|
+
visited.add(def.ref);
|
|
51
|
+
const target = definitions.get(def.ref);
|
|
52
|
+
if (!target) {
|
|
53
|
+
throw new Error(`Token reference not found: ${def.ref}`);
|
|
54
|
+
}
|
|
55
|
+
let color;
|
|
56
|
+
if (typeof target === 'object' && 'fg' in target) {
|
|
57
|
+
color = resolveColor(target.fg, mode, visited);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
color = resolveColor(target, mode, visited);
|
|
61
|
+
}
|
|
62
|
+
// Apply transforms
|
|
63
|
+
if (def.transform) {
|
|
64
|
+
for (const t of def.transform) {
|
|
65
|
+
color = applyTransform(color, t, mode, visited);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return color;
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Invalid color definition: ${JSON.stringify(def)}`);
|
|
71
|
+
}
|
|
72
|
+
function applyTransform(color, transform, mode, visited) {
|
|
73
|
+
const dummyToken = { hex: color };
|
|
74
|
+
let result;
|
|
75
|
+
switch (transform.type) {
|
|
76
|
+
case 'darken':
|
|
77
|
+
result = darken(dummyToken, transform.amount);
|
|
78
|
+
break;
|
|
79
|
+
case 'lighten':
|
|
80
|
+
result = lighten(dummyToken, transform.amount);
|
|
81
|
+
break;
|
|
82
|
+
case 'saturate':
|
|
83
|
+
result = saturate(dummyToken, transform.amount);
|
|
84
|
+
break;
|
|
85
|
+
case 'desaturate':
|
|
86
|
+
result = desaturate(dummyToken, transform.amount);
|
|
87
|
+
break;
|
|
88
|
+
case 'complementary':
|
|
89
|
+
result = complementary(dummyToken);
|
|
90
|
+
break;
|
|
91
|
+
case 'inverse': {
|
|
92
|
+
const rgb = hexToRgb(color);
|
|
93
|
+
result = { hex: rgbToHex([255 - rgb[0], 255 - rgb[1], 255 - rgb[2]]) };
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case 'mix': {
|
|
97
|
+
const otherColor = resolveColor({ ref: transform.with }, mode, visited);
|
|
98
|
+
result = mix(dummyToken, { hex: otherColor }, transform.ratio ?? 0.5);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
default:
|
|
102
|
+
// @ts-ignore
|
|
103
|
+
throw new Error(`Unknown transform type: ${transform.type}`);
|
|
104
|
+
}
|
|
105
|
+
return result.hex;
|
|
106
|
+
}
|
|
107
|
+
const graph = {
|
|
108
|
+
get(path, mode = 'dark') {
|
|
109
|
+
const def = definitions.get(path);
|
|
110
|
+
if (!def)
|
|
111
|
+
throw new Error(`Token not found: ${path}`);
|
|
112
|
+
if (typeof def === 'object' && 'fg' in def) {
|
|
113
|
+
const tokenDef = def;
|
|
114
|
+
return {
|
|
115
|
+
hex: resolveColor(tokenDef.fg, mode, new Set([path])),
|
|
116
|
+
bg: tokenDef.bg ? resolveColor(tokenDef.bg, mode, new Set([path])) : undefined,
|
|
117
|
+
modifiers: tokenDef.modifiers,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// If it's just a color definition, return it as a TokenValue
|
|
121
|
+
return {
|
|
122
|
+
hex: resolveColor(def, mode, new Set([path])),
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
getColor(def, mode = 'dark') {
|
|
126
|
+
return resolveColor(def, mode, new Set());
|
|
127
|
+
},
|
|
128
|
+
set(path, definition) {
|
|
129
|
+
definitions.set(path, definition);
|
|
130
|
+
for (const handler of subscribers) {
|
|
131
|
+
handler(path);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
on(handler) {
|
|
135
|
+
subscribers.add(handler);
|
|
136
|
+
return {
|
|
137
|
+
dispose() {
|
|
138
|
+
subscribers.delete(handler);
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
},
|
|
142
|
+
import(defs) {
|
|
143
|
+
importInternal('', defs);
|
|
144
|
+
for (const handler of subscribers) {
|
|
145
|
+
handler('*'); // Notify full re-import
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
dispose() {
|
|
149
|
+
definitions.clear();
|
|
150
|
+
subscribers.clear();
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
return graph;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/core/theme/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,12 +10,15 @@ export { CYAN_MAGENTA, TEAL_ORANGE_PINK, PRESETS, tv } from './presets.js';
|
|
|
10
10
|
export { styled, styledStatus } from './styled.js';
|
|
11
11
|
export { extendTheme } from './extend.js';
|
|
12
12
|
export { lerp3, gradientText } from './gradient.js';
|
|
13
|
-
export { isNoColor,
|
|
13
|
+
export { isNoColor, createThemeResolver, createResolved, } from './resolve.js';
|
|
14
14
|
export type { ResolvedTheme, ThemeResolver, ThemeResolverOptions } from './resolve.js';
|
|
15
15
|
export type { GradientTextOptions } from './gradient.js';
|
|
16
16
|
export { fromDTCG, toDTCG } from './dtcg.js';
|
|
17
17
|
export type { DTCGDocument, DTCGToken, DTCGGroup } from './dtcg.js';
|
|
18
18
|
export { rgbToAnsi256, nearestAnsi256, rgbToAnsi16, ansi256ToAnsi16, type ColorLevel, } from './downsample.js';
|
|
19
19
|
export { createThemeAccessors, type ThemeAccessors } from './accessors.js';
|
|
20
|
+
export { createTokenGraph } from './graph.js';
|
|
21
|
+
export type { TokenGraph, ThemeMode } from './graph.js';
|
|
22
|
+
export type { ColorDefinition, TokenDefinition, TokenDefinitions, ColorTransform, } from './graph-types.js';
|
|
20
23
|
export { hexToRgb, rgbToHex, lighten, darken, mix, complementary, saturate, desaturate, } from './color.js';
|
|
21
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/theme/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,GAAG,EACH,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,eAAe,EACf,KAAK,GACN,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAG3E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EACL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/theme/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,GAAG,EACH,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,eAAe,EACf,KAAK,GACN,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAG3E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIvF,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,EACf,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,GAAG,EACH,aAAa,EACb,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/core/theme/index.js
CHANGED
|
@@ -14,13 +14,15 @@ export { extendTheme } from './extend.js';
|
|
|
14
14
|
// Gradient
|
|
15
15
|
export { lerp3, gradientText } from './gradient.js';
|
|
16
16
|
// Resolver
|
|
17
|
-
export { isNoColor,
|
|
17
|
+
export { isNoColor, createThemeResolver, createResolved, } from './resolve.js';
|
|
18
18
|
// DTCG interop
|
|
19
19
|
export { fromDTCG, toDTCG } from './dtcg.js';
|
|
20
20
|
// Color downsampling
|
|
21
21
|
export { rgbToAnsi256, nearestAnsi256, rgbToAnsi16, ansi256ToAnsi16, } from './downsample.js';
|
|
22
22
|
// Theme accessors
|
|
23
23
|
export { createThemeAccessors } from './accessors.js';
|
|
24
|
+
// Reactive Token Graph
|
|
25
|
+
export { createTokenGraph } from './graph.js';
|
|
24
26
|
// Color manipulation
|
|
25
27
|
export { hexToRgb, rgbToHex, lighten, darken, mix, complementary, saturate, desaturate, } from './color.js';
|
|
26
28
|
//# sourceMappingURL=index.js.map
|