@sagmans/dsh-tui 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +270 -68
- package/lib/agent/present.js +1 -1
- package/lib/agent/present.js.map +1 -1
- package/lib/agent/prompt-history.d.ts.map +1 -1
- package/lib/agent/prompt-history.js +5 -3
- package/lib/agent/prompt-history.js.map +1 -1
- package/lib/agent/status.d.ts +1 -1
- package/lib/cards.d.ts +83 -13
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +96 -28
- package/lib/cards.js.map +1 -1
- package/lib/export.d.ts +3 -3
- package/lib/export.d.ts.map +1 -1
- package/lib/export.js +23 -13
- package/lib/export.js.map +1 -1
- package/lib/fold-cursor.d.ts +12 -5
- package/lib/fold-cursor.d.ts.map +1 -1
- package/lib/fold-cursor.js +16 -5
- package/lib/fold-cursor.js.map +1 -1
- package/lib/gates.d.ts.map +1 -1
- package/lib/gates.js +42 -9
- package/lib/gates.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +459 -72
- package/lib/index.js.map +1 -1
- package/lib/injection.d.ts +9 -0
- package/lib/injection.d.ts.map +1 -0
- package/lib/injection.js +128 -0
- package/lib/injection.js.map +1 -0
- package/lib/input/actions.d.ts +19 -2
- package/lib/input/actions.d.ts.map +1 -1
- package/lib/input/actions.js +57 -11
- package/lib/input/actions.js.map +1 -1
- package/lib/input/cancel.d.ts +55 -0
- package/lib/input/cancel.d.ts.map +1 -0
- package/lib/input/cancel.js +47 -0
- package/lib/input/cancel.js.map +1 -0
- package/lib/input/completion.d.ts +5 -2
- package/lib/input/completion.d.ts.map +1 -1
- package/lib/input/completion.js +79 -4
- package/lib/input/completion.js.map +1 -1
- package/lib/input/file-search.d.ts +105 -0
- package/lib/input/file-search.d.ts.map +1 -0
- package/lib/input/file-search.js +665 -0
- package/lib/input/file-search.js.map +1 -0
- package/lib/input/fuzzy.d.ts +42 -0
- package/lib/input/fuzzy.d.ts.map +1 -0
- package/lib/input/fuzzy.js +289 -0
- package/lib/input/fuzzy.js.map +1 -0
- package/lib/input/keymap.d.ts +3 -1
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +14 -3
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/match.d.ts +12 -4
- package/lib/input/match.d.ts.map +1 -1
- package/lib/input/match.js +50 -51
- package/lib/input/match.js.map +1 -1
- package/lib/input/submission.d.ts +10 -0
- package/lib/input/submission.d.ts.map +1 -1
- package/lib/input/submission.js +7 -6
- package/lib/input/submission.js.map +1 -1
- package/lib/keys-command.d.ts +19 -3
- package/lib/keys-command.d.ts.map +1 -1
- package/lib/keys-command.js +34 -31
- package/lib/keys-command.js.map +1 -1
- package/lib/settings-notice.d.ts +5 -0
- package/lib/settings-notice.d.ts.map +1 -1
- package/lib/settings-notice.js +9 -7
- package/lib/settings-notice.js.map +1 -1
- package/lib/stash/paths.d.ts +8 -8
- package/lib/stash/paths.d.ts.map +1 -1
- package/lib/stash/paths.js +19 -18
- package/lib/stash/paths.js.map +1 -1
- package/lib/stash/schema.d.ts +11 -12
- package/lib/stash/schema.d.ts.map +1 -1
- package/lib/stash/schema.js +10 -29
- package/lib/stash/schema.js.map +1 -1
- package/lib/stash/store.js +10 -10
- package/lib/stash/store.js.map +1 -1
- package/lib/stash.d.ts +37 -6
- package/lib/stash.d.ts.map +1 -1
- package/lib/stash.js +93 -36
- package/lib/stash.js.map +1 -1
- package/lib/terminal/external-editor.d.ts +93 -0
- package/lib/terminal/external-editor.d.ts.map +1 -0
- package/lib/terminal/external-editor.js +263 -0
- package/lib/terminal/external-editor.js.map +1 -0
- package/lib/terminal/host-writes.d.ts +39 -0
- package/lib/terminal/host-writes.d.ts.map +1 -0
- package/lib/terminal/host-writes.js +136 -0
- package/lib/terminal/host-writes.js.map +1 -0
- package/lib/terminal/signals.d.ts +25 -0
- package/lib/terminal/signals.d.ts.map +1 -0
- package/lib/terminal/signals.js +39 -0
- package/lib/terminal/signals.js.map +1 -0
- package/lib/terminal/warning-screen.d.ts +19 -1
- package/lib/terminal/warning-screen.d.ts.map +1 -1
- package/lib/terminal/warning-screen.js +37 -1
- package/lib/terminal/warning-screen.js.map +1 -1
- package/lib/terminal-text.d.ts +72 -0
- package/lib/terminal-text.d.ts.map +1 -0
- package/lib/terminal-text.js +603 -0
- package/lib/terminal-text.js.map +1 -0
- package/lib/text.d.ts +45 -6
- package/lib/text.d.ts.map +1 -1
- package/lib/text.js +106 -46
- package/lib/text.js.map +1 -1
- package/lib/theme-command.d.ts +7 -4
- package/lib/theme-command.d.ts.map +1 -1
- package/lib/theme-command.js +32 -12
- package/lib/theme-command.js.map +1 -1
- package/lib/theme-files.d.ts +110 -0
- package/lib/theme-files.d.ts.map +1 -0
- package/lib/theme-files.js +352 -0
- package/lib/theme-files.js.map +1 -0
- package/lib/theme-schema.d.ts +121 -0
- package/lib/theme-schema.d.ts.map +1 -0
- package/lib/theme-schema.js +87 -0
- package/lib/theme-schema.js.map +1 -0
- package/lib/theme-settings.d.ts +43 -10
- package/lib/theme-settings.d.ts.map +1 -1
- package/lib/theme-settings.js +103 -43
- package/lib/theme-settings.js.map +1 -1
- package/lib/theme-tokens.d.ts +39 -7
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +96 -13
- package/lib/theme-tokens.js.map +1 -1
- package/lib/theme.d.ts +24 -2
- package/lib/theme.d.ts.map +1 -1
- package/lib/theme.js +49 -6
- package/lib/theme.js.map +1 -1
- package/lib/tool-display.d.ts +57 -0
- package/lib/tool-display.d.ts.map +1 -0
- package/lib/tool-display.js +51 -0
- package/lib/tool-display.js.map +1 -0
- package/lib/transcript.d.ts +28 -0
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +126 -37
- package/lib/transcript.js.map +1 -1
- package/lib/ui/diff.d.ts +49 -0
- package/lib/ui/diff.d.ts.map +1 -0
- package/lib/ui/diff.js +208 -0
- package/lib/ui/diff.js.map +1 -0
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +9 -6
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/editor.d.ts.map +1 -1
- package/lib/ui/editor.js +4 -2
- package/lib/ui/editor.js.map +1 -1
- package/lib/ui/frame.d.ts +16 -5
- package/lib/ui/frame.d.ts.map +1 -1
- package/lib/ui/frame.js +32 -13
- package/lib/ui/frame.js.map +1 -1
- package/lib/ui/keymap-picker.d.ts +16 -0
- package/lib/ui/keymap-picker.d.ts.map +1 -0
- package/lib/ui/keymap-picker.js +41 -0
- package/lib/ui/keymap-picker.js.map +1 -0
- package/lib/ui/layout.d.ts +33 -0
- package/lib/ui/layout.d.ts.map +1 -0
- package/lib/ui/layout.js +33 -0
- package/lib/ui/layout.js.map +1 -0
- package/lib/ui/markdown.d.ts +25 -3
- package/lib/ui/markdown.d.ts.map +1 -1
- package/lib/ui/markdown.js +12 -8
- package/lib/ui/markdown.js.map +1 -1
- package/lib/ui/picker-card.d.ts +42 -0
- package/lib/ui/picker-card.d.ts.map +1 -0
- package/lib/ui/picker-card.js +148 -0
- package/lib/ui/picker-card.js.map +1 -0
- package/lib/ui/picker.d.ts +40 -2
- package/lib/ui/picker.d.ts.map +1 -1
- package/lib/ui/picker.js +50 -6
- package/lib/ui/picker.js.map +1 -1
- package/lib/ui/prompt.d.ts +10 -2
- package/lib/ui/prompt.d.ts.map +1 -1
- package/lib/ui/prompt.js +21 -2
- package/lib/ui/prompt.js.map +1 -1
- package/lib/ui/rows.d.ts +8 -6
- package/lib/ui/rows.d.ts.map +1 -1
- package/lib/ui/rows.js +10 -18
- package/lib/ui/rows.js.map +1 -1
- package/lib/ui/stash-picker.d.ts +2 -2
- package/lib/ui/stash-picker.d.ts.map +1 -1
- package/lib/ui/stash-picker.js +4 -4
- package/lib/ui/stash-picker.js.map +1 -1
- package/lib/ui/status.d.ts.map +1 -1
- package/lib/ui/status.js +18 -16
- package/lib/ui/status.js.map +1 -1
- package/lib/ui/theme-picker.d.ts +18 -0
- package/lib/ui/theme-picker.d.ts.map +1 -0
- package/lib/ui/theme-picker.js +68 -0
- package/lib/ui/theme-picker.js.map +1 -0
- package/lib/ui/view.d.ts +146 -22
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +461 -154
- package/lib/ui/view.js.map +1 -1
- package/package.json +45 -11
- package/themes/deepseek-blue.yaml +183 -0
- package/themes/violet-orbit.yaml +178 -0
package/lib/theme-settings.js
CHANGED
|
@@ -3,43 +3,12 @@ import { DEFAULT_MAX_ENTRIES, MAX_ENTRIES_LIMIT } from "./agent/prompt-history.j
|
|
|
3
3
|
import { defaultKeymap, keysFor, resolveKeymap } from "./input/actions.js";
|
|
4
4
|
import { KeymapSectionSchema, isActionId } from "./input/keymap-settings.js";
|
|
5
5
|
import { DEFAULT_PREFIX_KEYS, DEFAULT_PREFIX_WINDOW_S } from "./input/keymap.js";
|
|
6
|
-
import {
|
|
6
|
+
import { TOOL_DISPLAY_LIMITS, TOOL_OUTPUT_DISPLAYS, toolDisplayTable, } from "./tool-display.js";
|
|
7
|
+
import { DEFAULT_THEME } from "./theme-files.js";
|
|
8
|
+
import { asRecord, PALETTE_NAME_SET, PaletteSchema, TOKEN_NAME_SET, TokensSchema, } from "./theme-schema.js";
|
|
9
|
+
import { DEFAULT_PALETTE } from "./theme-tokens.js";
|
|
7
10
|
/** Settings namespace owned by the terminal surface. */
|
|
8
11
|
export const TUI_SETTINGS_NAMESPACE = 'dsh-tui';
|
|
9
|
-
/**
|
|
10
|
-
* A colour the reader may write.
|
|
11
|
-
*
|
|
12
|
-
* Enumerated rather than a free string: a misspelled colour must fail at load
|
|
13
|
-
* with the offending token named, not silently paint nothing for the rest of
|
|
14
|
-
* the session.
|
|
15
|
-
*/
|
|
16
|
-
const ColourSchema = z.union([
|
|
17
|
-
z.string().pattern(/^#[0-9a-fA-F]{6}$/u),
|
|
18
|
-
z.union([...PALETTE_NAMES]),
|
|
19
|
-
z.number().min(0).max(255),
|
|
20
|
-
]);
|
|
21
|
-
/** One element's override; every field optional so a reader sets only what they mean. */
|
|
22
|
-
const StyleSpecSchema = z.object({
|
|
23
|
-
fg: ColourSchema,
|
|
24
|
-
bg: ColourSchema,
|
|
25
|
-
bold: z.boolean(),
|
|
26
|
-
dim: z.boolean(),
|
|
27
|
-
italic: z.boolean(),
|
|
28
|
-
underline: z.boolean(),
|
|
29
|
-
strike: z.boolean(),
|
|
30
|
-
glyph: z.string(),
|
|
31
|
-
hidden: z.boolean(),
|
|
32
|
-
inherit: z.union([...TUI_TOKENS]),
|
|
33
|
-
});
|
|
34
|
-
/** The palette half: every entry optional, each defaulting to the shipped shade. */
|
|
35
|
-
const PaletteSchema = z.object(Object.fromEntries(PALETTE_NAMES.map(name => [name, ColourSchema.default(DEFAULT_PALETTE[name])])));
|
|
36
|
-
/**
|
|
37
|
-
* The token half: every token optional, but an unknown name rejected.
|
|
38
|
-
*
|
|
39
|
-
* Spelled out rather than `z.dict` because `dict` would accept any key, which
|
|
40
|
-
* is exactly the silent-typo failure this section has to prevent.
|
|
41
|
-
*/
|
|
42
|
-
const TokensSchema = z.object(Object.fromEntries(TUI_TOKENS.map(token => [token, StyleSpecSchema])));
|
|
43
12
|
/** The values the `subcalls` key accepts, declared once for the schema and the refusal message. */
|
|
44
13
|
const SUBCALL_DISPLAYS = ['collapsed', 'inline'];
|
|
45
14
|
/** How a reply's mermaid fences draw: never, once settled, or as the reply streams. */
|
|
@@ -65,6 +34,16 @@ const HistorySchema = z.object({
|
|
|
65
34
|
maxEntries: z.number().min(1).max(MAX_ENTRIES_LIMIT).default(DEFAULT_MAX_ENTRIES),
|
|
66
35
|
});
|
|
67
36
|
const SECTION = z.object({
|
|
37
|
+
// No default even though the surface draws one, for the same reason `prefix`
|
|
38
|
+
// has none: a registration fills every declared field, and a fill-in here would
|
|
39
|
+
// hand back a choice the reader never made, which the next save would then write
|
|
40
|
+
// into their document as if they had. Which theme answers an unnamed section is
|
|
41
|
+
// the library's question, asked where the name is looked up. A free string
|
|
42
|
+
// rather than an enumerated union, also for the same reason as `prefix`: the
|
|
43
|
+
// names are files the reader owns, and one appears the moment they save it —
|
|
44
|
+
// which no schema compiled into this build can enumerate. A name nothing answers
|
|
45
|
+
// to is refused where the names that do answer can actually be listed.
|
|
46
|
+
theme: z.string(),
|
|
68
47
|
palette: PaletteSchema.default({}),
|
|
69
48
|
tokens: TokensSchema.default({}),
|
|
70
49
|
subcalls: z.union([...SUBCALL_DISPLAYS]).default('inline'),
|
|
@@ -79,6 +58,10 @@ const SECTION = z.object({
|
|
|
79
58
|
prefixWindow: z.number().min(0).max(MAX_PREFIX_WINDOW_S).default(DEFAULT_PREFIX_WINDOW_S),
|
|
80
59
|
keys: KeymapSectionSchema.default({}),
|
|
81
60
|
history: HistorySchema.default({ enabled: DEFAULT_HISTORY_ENABLED, ghost: DEFAULT_HISTORY_GHOST, maxEntries: DEFAULT_MAX_ENTRIES }),
|
|
61
|
+
// Declared so a registered scope keeps the block when the document is saved,
|
|
62
|
+
// but validated by hand below: its keys are tool names, which no closed shape
|
|
63
|
+
// can enumerate, and schemastery's `dict` accepts every one of them.
|
|
64
|
+
tools: z.any(),
|
|
82
65
|
});
|
|
83
66
|
/**
|
|
84
67
|
* The schema the harness registers.
|
|
@@ -88,10 +71,10 @@ const SECTION = z.object({
|
|
|
88
71
|
* cannot express.
|
|
89
72
|
*/
|
|
90
73
|
export const TuiSettingsSchema = SECTION;
|
|
91
|
-
const TOKEN_NAMES = new Set(TUI_TOKENS);
|
|
92
|
-
const PALETTE_NAME_SET = new Set(PALETTE_NAMES);
|
|
93
74
|
/** The section's own keys: schemastery keeps what it does not declare, so a misspelling has to be refused here. */
|
|
94
|
-
const SECTION_KEYS = new Set(['palette', 'tokens', 'subcalls', 'mermaid', 'prefix', 'prefixWindow', 'keys', 'history']);
|
|
75
|
+
const SECTION_KEYS = new Set(['theme', 'palette', 'tokens', 'subcalls', 'mermaid', 'prefix', 'prefixWindow', 'keys', 'history', 'tools']);
|
|
76
|
+
/** The fields one tool's row may carry, for the same reason the section's own keys are spelled out. */
|
|
77
|
+
const TOOL_FIELDS = new Set(['collapsed', 'output', 'tail']);
|
|
95
78
|
/**
|
|
96
79
|
* Validate the raw section, refusing a name the surface does not have.
|
|
97
80
|
*
|
|
@@ -108,7 +91,7 @@ function rejectUnknownKeys(raw) {
|
|
|
108
91
|
if (unknownKeys.length > 0) {
|
|
109
92
|
throw new Error(`unknown ${TUI_SETTINGS_NAMESPACE} key${unknownKeys.length === 1 ? '' : 's'}: ${unknownKeys.join(', ')}`);
|
|
110
93
|
}
|
|
111
|
-
const unknownTokens = Object.keys(asRecord(section.tokens) ?? {}).filter(name => !
|
|
94
|
+
const unknownTokens = Object.keys(asRecord(section.tokens) ?? {}).filter(name => !TOKEN_NAME_SET.has(name));
|
|
112
95
|
if (unknownTokens.length > 0) {
|
|
113
96
|
throw new Error(`unknown ${TUI_SETTINGS_NAMESPACE} token${unknownTokens.length === 1 ? '' : 's'}: ${unknownTokens.join(', ')}`);
|
|
114
97
|
}
|
|
@@ -124,9 +107,58 @@ function rejectUnknownKeys(raw) {
|
|
|
124
107
|
if (unknownHistory.length > 0) {
|
|
125
108
|
throw new Error('unknown ' + TUI_SETTINGS_NAMESPACE + ' history key' + (unknownHistory.length === 1 ? '' : 's') + ': ' + unknownHistory.join(', '));
|
|
126
109
|
}
|
|
110
|
+
const unknownToolFields = Object.entries(asRecord(section.tools) ?? {})
|
|
111
|
+
.flatMap(([tool, spec]) => Object.keys(asRecord(spec) ?? {})
|
|
112
|
+
.filter(field => !TOOL_FIELDS.has(field))
|
|
113
|
+
.map(field => `${tool}.${field}`));
|
|
114
|
+
if (unknownToolFields.length > 0) {
|
|
115
|
+
throw new Error('unknown ' + TUI_SETTINGS_NAMESPACE + ' tool field' + (unknownToolFields.length === 1 ? '' : 's') + ': ' + unknownToolFields.join(', '));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** One display flag as the reader wrote it. */
|
|
119
|
+
function toolFlag(value, field) {
|
|
120
|
+
if (typeof value !== 'boolean')
|
|
121
|
+
throw new Error(`${field} must be a boolean`);
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
/** One bounded count as the reader wrote it. */
|
|
125
|
+
function toolInteger(value, field, bounds) {
|
|
126
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < bounds.min || value > bounds.max) {
|
|
127
|
+
throw new Error(`${field} must be an integer between ${bounds.min} and ${bounds.max}`);
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
}
|
|
131
|
+
/** One `output` value as the reader wrote it. */
|
|
132
|
+
function toolOutput(value, field) {
|
|
133
|
+
if (typeof value !== 'string' || !TOOL_OUTPUT_DISPLAYS.includes(value)) {
|
|
134
|
+
throw new Error(`${field} must be one of: ${TOOL_OUTPUT_DISPLAYS.join(', ')}`);
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
127
137
|
}
|
|
128
|
-
|
|
129
|
-
|
|
138
|
+
/**
|
|
139
|
+
* The `tools:` block as the reader wrote it.
|
|
140
|
+
*
|
|
141
|
+
* The reserved `default` row and every tool name are the same shape, so they
|
|
142
|
+
* are validated the same way; a name nothing declares is inert rather than an
|
|
143
|
+
* error, because the surface cannot know which tools a profile mounts.
|
|
144
|
+
*/
|
|
145
|
+
function parseTools(raw) {
|
|
146
|
+
const block = asRecord(raw) ?? {};
|
|
147
|
+
const specs = {};
|
|
148
|
+
for (const [tool, value] of Object.entries(block)) {
|
|
149
|
+
const spec = asRecord(value);
|
|
150
|
+
if (spec === undefined)
|
|
151
|
+
throw new Error(`tools.${tool} must be a mapping of display fields`);
|
|
152
|
+
const written = {};
|
|
153
|
+
if (spec.collapsed !== undefined)
|
|
154
|
+
written.collapsed = toolFlag(spec.collapsed, `tools.${tool}.collapsed`);
|
|
155
|
+
if (spec.output !== undefined)
|
|
156
|
+
written.output = toolOutput(spec.output, `tools.${tool}.output`);
|
|
157
|
+
if (spec.tail !== undefined)
|
|
158
|
+
written.tail = toolInteger(spec.tail, `tools.${tool}.tail`, TOOL_DISPLAY_LIMITS.tail);
|
|
159
|
+
specs[tool] = written;
|
|
160
|
+
}
|
|
161
|
+
return specs;
|
|
130
162
|
}
|
|
131
163
|
/** The reader-facing shape of the `dsh-tui:` section. */
|
|
132
164
|
export function parseSettings(raw) {
|
|
@@ -176,9 +208,11 @@ export function parseSettings(raw) {
|
|
|
176
208
|
// the catalog and on the layers the map already claims, which a schema cannot see.
|
|
177
209
|
const keymap = resolveKeymap(overrides);
|
|
178
210
|
return {
|
|
211
|
+
theme: parsed.theme,
|
|
179
212
|
palette: palette,
|
|
180
213
|
tokens: tokens,
|
|
181
214
|
subcalls: parsed.subcalls,
|
|
215
|
+
tools: toolDisplayTable(parseTools(section.tools)),
|
|
182
216
|
mermaid: parsed.mermaid,
|
|
183
217
|
prefixes: keysFor(keymap, 'chord.prefix'),
|
|
184
218
|
prefixWindow: parsed.prefixWindow,
|
|
@@ -195,9 +229,11 @@ function hasAnyField(spec) {
|
|
|
195
229
|
/** The section as it reads when the reader has written nothing. */
|
|
196
230
|
export function defaultSettings() {
|
|
197
231
|
return {
|
|
232
|
+
theme: undefined,
|
|
198
233
|
palette: {},
|
|
199
234
|
tokens: {},
|
|
200
235
|
subcalls: 'inline',
|
|
236
|
+
tools: toolDisplayTable(),
|
|
201
237
|
mermaid: DEFAULT_MERMAID_MODE,
|
|
202
238
|
prefixes: [...DEFAULT_PREFIX_KEYS],
|
|
203
239
|
prefixWindow: DEFAULT_PREFIX_WINDOW_S,
|
|
@@ -205,6 +241,16 @@ export function defaultSettings() {
|
|
|
205
241
|
history: { enabled: DEFAULT_HISTORY_ENABLED, ghost: DEFAULT_HISTORY_GHOST, maxEntries: DEFAULT_MAX_ENTRIES },
|
|
206
242
|
};
|
|
207
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* The layer the theme in force contributes, or nothing when no file answered.
|
|
246
|
+
*
|
|
247
|
+
* The table every theme is written against is the compiled one, so a theme is
|
|
248
|
+
* always a layer over it and never a replacement: an element no theme names keeps
|
|
249
|
+
* the shade the surface ships with.
|
|
250
|
+
*/
|
|
251
|
+
export function themeLayer(overrides) {
|
|
252
|
+
return overrides.theme?.tokens;
|
|
253
|
+
}
|
|
208
254
|
/**
|
|
209
255
|
* One sentence for a section the surface refused.
|
|
210
256
|
*
|
|
@@ -274,13 +320,27 @@ function salvageHistory(raw) {
|
|
|
274
320
|
*
|
|
275
321
|
* Shipped defaults fill anything the reader left out, so a partial section is
|
|
276
322
|
* the normal case rather than something the resolver has to guard against.
|
|
323
|
+
*
|
|
324
|
+
* The name is looked up rather than trusted: a reader can rename or rewrite the
|
|
325
|
+
* file behind it between two reads, and a theme that is gone leaves the package's
|
|
326
|
+
* own in force rather than leaving the surface with nothing to draw.
|
|
277
327
|
*/
|
|
278
|
-
export function toOverrides(settings) {
|
|
328
|
+
export function toOverrides(settings, library) {
|
|
329
|
+
// An unnamed section and an unknown name land on the same answer: the theme the
|
|
330
|
+
// package draws by default. The unknown name is reported beside this read, so
|
|
331
|
+
// the reader hears which name stopped answering rather than guessing from shades.
|
|
332
|
+
const theme = library.get(settings.theme) ?? library.get(DEFAULT_THEME);
|
|
279
333
|
const tokens = new Map();
|
|
280
334
|
for (const [token, spec] of Object.entries(settings.tokens)) {
|
|
281
335
|
if (spec !== undefined)
|
|
282
336
|
tokens.set(token, spec);
|
|
283
337
|
}
|
|
284
|
-
|
|
338
|
+
// The theme travels as its own layer rather than folded in here, so a reader's
|
|
339
|
+
// field merges over it one element at a time instead of replacing it.
|
|
340
|
+
return {
|
|
341
|
+
palette: { ...DEFAULT_PALETTE, ...theme?.palette, ...settings.palette },
|
|
342
|
+
tokens,
|
|
343
|
+
theme,
|
|
344
|
+
};
|
|
285
345
|
}
|
|
286
346
|
//# sourceMappingURL=theme-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-settings.js","sourceRoot":"","sources":["../src/theme-settings.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAkC,MAAM,oBAAoB,CAAA;AAC1G,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EACL,eAAe,EACf,aAAa,EACb,UAAU,GAIX,MAAM,mBAAmB,CAAA;AAE1B,wDAAwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC;IAC3B,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;IAC3B,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC3B,CAAC,CAAA;AAEF,yFAAyF;AACzF,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;CAClC,CAAC,CAAA;AAEF,oFAAoF;AACpF,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAC9C,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAClD,CAAC,CAAA;AAKF,mGAAmG;AACnG,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAU,CAAA;AAEzD,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAU,CAAA;AAGnE,sGAAsG;AACtG,MAAM,oBAAoB,GAAgB,WAAW,CAAA;AAErD,uFAAuF;AACvF,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAE9B,+FAA+F;AAC/F,MAAM,uBAAuB,GAAG,IAAI,CAAA;AACpC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AAElC,oEAAoE;AACpE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACrD,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;CAClF,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;IAClC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAClE,8EAA8E;IAC9E,kEAAkE;IAClE,EAAE;IACF,+EAA+E;IAC/E,+EAA+E;IAC/E,wEAAwE;IACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACzF,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACpI,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAA;AAExC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAA;AAC/C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAA;AAEvD,mHAAmH;AACnH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAEvH;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,OAAO,KAAK,SAAS;QAAE,OAAM;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3H,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACxG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjI,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/G,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,gBAAgB,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7I,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAClG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,cAAc,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxI,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3G,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,sBAAsB,GAAG,cAAc,GAAG,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACrJ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrG,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAS7B,CAAA;IACD,6EAA6E;IAC7E,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACtD,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,wEAAwE;QACxE,gEAAgE;QAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,eAAe,CAAC,IAAmB,CAAC;YAAE,SAAQ;QACnF,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACpD,MAAM,MAAM,GAA8B,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,uEAAuE;QACvE,uEAAuE;QACvE,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAE,SAAQ;QACtE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC1C,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAChD,2EAA2E;IAC3E,wCAAwC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IACD,+EAA+E;IAC/E,8EAA8E;IAC9E,iBAAiB;IACjB,MAAM,SAAS,GAAiC,EAAE,CAAA;IAClD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IAC1E,4EAA4E;IAC5E,mFAAmF;IACnF,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IACvC,OAAO;QACL,OAAO,EAAE,OAAyD;QAClE,MAAM,EAAE,MAAwD;QAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAA;AACH,CAAC;AAED,0DAA0D;AAC1D,SAAS,WAAW,CAAC,IAA2B;IAC9C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;AAC/D,CAAC;AA4BD,mEAAmE;AACnE,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,oBAAoB;QAC7B,QAAQ,EAAE,CAAC,GAAG,mBAAmB,CAAC;QAClC,YAAY,EAAE,uBAAuB;QACrC,MAAM,EAAE,aAAa,EAAE;QACvB,OAAO,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,mBAAmB,EAAE;KAC7G,CAAA;AACH,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,YAAY,sBAAsB,cAAc,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AACjH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAyB,EAAE,SAAqC;IACxF,IAAI,GAAG,GAAY,SAAS,CAAA;IAC5B,IAAI,CAAC;QACH,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;QACvB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,CAAC,CAAA;;YACrE,SAAS,CAAC,OAAO,CAAC,CAAA;QACvB,uEAAuE;QACvE,oEAAoE;QACpE,4EAA4E;QAC5E,qCAAqC;QACrC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;QAClC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAA;QAC/F,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;IACtD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,GAAY;IAClC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC,OAAO,CAAA;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;IAChD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS;QAC3C,CAAC,CAAC,QAAQ,CAAC,OAAO;QAClB,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IAClE,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA;IACjF,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;WACpD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;WACxC,OAAO,CAAC,UAAU,IAAI,CAAC;WACvB,OAAO,CAAC,UAAU,IAAI,iBAAiB;QAC1C,CAAC,CAAC,OAAO,CAAC,UAAU;QACpB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAA;IACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAqB;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC7C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,KAAiB,EAAE,IAAI,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAA;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"theme-settings.js","sourceRoot":"","sources":["../src/theme-settings.ts"],"names":[],"mappings":"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"}
|
package/lib/theme-tokens.d.ts
CHANGED
|
@@ -15,6 +15,13 @@ export declare function resetSequence(): string;
|
|
|
15
15
|
* ordinary text that dimming looked like it had not been applied at all.
|
|
16
16
|
*/
|
|
17
17
|
export declare const MUTED_GREY = "#8a8a8a";
|
|
18
|
+
/**
|
|
19
|
+
* The shade the reasoning signpost recedes to.
|
|
20
|
+
*
|
|
21
|
+
* The row naming a thought is a signpost, not the thought: it sits below the
|
|
22
|
+
* muted family so the body it introduces stays the thing being read.
|
|
23
|
+
*/
|
|
24
|
+
export declare const FAINT_GREY = "#666666";
|
|
18
25
|
/**
|
|
19
26
|
* The shade a tool's argument takes.
|
|
20
27
|
*
|
|
@@ -30,9 +37,30 @@ export declare const ARGUMENT_BLUE = "#8db3d9";
|
|
|
30
37
|
* foreground, so telling the two apart meant reading them; a mint keeps them
|
|
31
38
|
* apart at a glance without the pink cast a rose gave every prompt.
|
|
32
39
|
*/
|
|
33
|
-
export declare const USER_PROMPT_MINT = "#
|
|
40
|
+
export declare const USER_PROMPT_MINT = "#27f5c8";
|
|
41
|
+
/**
|
|
42
|
+
* The band a changed run sits on inside an added line.
|
|
43
|
+
*
|
|
44
|
+
* The characters that changed are why a paired line is on screen at all, and
|
|
45
|
+
* they must stand out without leaving the row's own hue: a reader scanning a
|
|
46
|
+
* green row should not have to compare it against a second, unrelated colour to
|
|
47
|
+
* find what moved. An explicit dark shade rather than a palette slot, for the
|
|
48
|
+
* same reason the muted grey is one.
|
|
49
|
+
*/
|
|
50
|
+
export declare const DIFF_ADDED_BAND = "#1e3d24";
|
|
51
|
+
/** The band a changed run sits on inside a removed line; the pair of {@link DIFF_ADDED_BAND}. */
|
|
52
|
+
export declare const DIFF_REMOVED_BAND = "#472424";
|
|
53
|
+
/**
|
|
54
|
+
* The shade the frame around an assistant reply is drawn in.
|
|
55
|
+
*
|
|
56
|
+
* A reply is boxed so one exchange reads as two objects rather than as a box and
|
|
57
|
+
* then a stream, and its frame must not be mistaken for the bar the reader types
|
|
58
|
+
* into: a warm gold sits apart from the prompt's mint and the brand-blue editor,
|
|
59
|
+
* without borrowing the warning amber that means a state.
|
|
60
|
+
*/
|
|
61
|
+
export declare const ASSISTANT_FRAME_GOLD = "#d6c29a";
|
|
34
62
|
/** Palette entries a token may name instead of a literal colour. */
|
|
35
|
-
export declare const PALETTE_NAMES: readonly ["default", "muted", "accent", "arg", "warn", "added", "removed", "user", "assistant"];
|
|
63
|
+
export declare const PALETTE_NAMES: readonly ["default", "muted", "faint", "accent", "arg", "warn", "added", "removed", "user", "assistant"];
|
|
36
64
|
/** A named palette entry. */
|
|
37
65
|
export type PaletteName = (typeof PALETTE_NAMES)[number];
|
|
38
66
|
/** A colour: an explicit hex value, or a palette entry. */
|
|
@@ -71,7 +99,7 @@ export type CardRowClass = (typeof CARD_ROW_CLASSES)[number];
|
|
|
71
99
|
* fails if a token loses its default, so "every element" cannot quietly drift
|
|
72
100
|
* as the surface grows.
|
|
73
101
|
*/
|
|
74
|
-
export declare const TUI_TOKENS: readonly ["transcript.user", "transcript.notice", "transcript.marker", "transcript.reasoning.summary", "transcript.reasoning.body", "transcript.reasoning.hint", "tool.title", "tool.glyph", "tool.args", "tool.stat.added", "tool.stat.changed", "tool.stat.removed", "tool.stat.size", "tool.stat.separator", "tool.detail", "tool.hint", "tool.failed.title", "tool.failed.glyph", "tool.subcall.title", "tool.subcall.args", "tool.diff.header", "tool.diff.hunk", "tool.diff.added", "tool.diff.removed", "tool.read.header", "tool.read.lineNumber", "tool.read.line", "tool.search.path", "tool.search.lineNumber", "tool.search.match", "tool.search.truncated", "tool.terminal.cwd", "tool.terminal.status", "tool.terminal.output", "tool.web.url", "tool.web.source", "tool.web.truncated", "tool.generic.detail", "markdown.heading", "markdown.link", "markdown.linkUrl", "markdown.code", "markdown.codeBlock", "markdown.codeBlockBorder", "markdown.quote", "markdown.quoteBorder", "markdown.hr", "markdown.listBullet", "markdown.bold", "markdown.italic", "markdown.strikethrough", "markdown.underline", "markdown.diagram.border", "markdown.diagram.text", "markdown.diagram.edge", "markdown.diagram.edgeLabel", "markdown.diagram.title", "markdown.diagram.warning", "picker.title", "picker.glyph", "picker.note", "picker.filter", "picker.row", "picker.rowCurrent", "picker.scrollNewer", "picker.scrollOlder", "picker.hint", "picker.cursor", "gate.title", "gate.glyphApproval", "gate.glyphQuestion", "gate.detail", "gate.option", "gate.optionCurrent", "gate.cursor", "gate.hint", "dock.goal", "dock.planMode", "dock.todos.heading", "dock.todos.pending", "dock.todos.inProgress", "dock.todos.overflow", "dock.subagents.heading", "dock.subagents.running", "dock.subagents.overflow", "dock.jobs.heading", "dock.jobs.running", "dock.jobs.overflow", "status.prefix", "status.back", "status.activity.working", "status.activity.ready", "status.elapsed", "status.agentPreset", "status.model", "status.effort", "status.permission", "status.context", "status.cache", "status.stash", "status.cwd", "status.separator", "editor.border", "editor.queued", "editor.queued.more", "editor.ghost", "editor.selectList.selectedPrefix", "editor.selectList.selectedText", "editor.selectList.description", "editor.selectList.scrollInfo", "editor.selectList.noMatch"];
|
|
102
|
+
export declare const TUI_TOKENS: readonly ["transcript.user", "transcript.assistant.border", "transcript.notice", "transcript.marker", "transcript.reasoning.summary", "transcript.reasoning.body", "transcript.reasoning.hint", "tool.title", "tool.glyph", "tool.args", "tool.stat.added", "tool.stat.changed", "tool.stat.removed", "tool.stat.size", "tool.stat.separator", "tool.detail", "tool.hint", "tool.failed.title", "tool.failed.glyph", "tool.subcall.title", "tool.subcall.args", "tool.diff.header", "tool.diff.hunk", "tool.diff.added", "tool.diff.removed", "tool.read.header", "tool.read.lineNumber", "tool.read.line", "tool.search.path", "tool.search.lineNumber", "tool.search.match", "tool.search.truncated", "tool.terminal.cwd", "tool.terminal.status", "tool.terminal.output", "tool.web.url", "tool.web.source", "tool.web.truncated", "tool.generic.detail", "markdown.heading", "markdown.link", "markdown.linkUrl", "markdown.code", "markdown.codeBlock", "markdown.codeBlockBorder", "markdown.quote", "markdown.quoteBorder", "markdown.hr", "markdown.listBullet", "markdown.bold", "markdown.italic", "markdown.strikethrough", "markdown.underline", "markdown.diff.header", "markdown.diff.hunk", "markdown.diff.context", "markdown.diff.added", "markdown.diff.removed", "markdown.diff.addedEmphasis", "markdown.diff.removedEmphasis", "markdown.diagram.border", "markdown.diagram.text", "markdown.diagram.edge", "markdown.diagram.edgeLabel", "markdown.diagram.title", "markdown.diagram.warning", "picker.title", "picker.glyph", "picker.note", "picker.filter", "picker.row", "picker.rowCurrent", "picker.scrollNewer", "picker.scrollOlder", "picker.hint", "picker.cursor", "picker.border", "gate.title", "gate.glyphApproval", "gate.glyphQuestion", "gate.detail", "gate.option", "gate.optionCurrent", "gate.cursor", "gate.hint", "dock.goal", "dock.planMode", "dock.todos.heading", "dock.todos.pending", "dock.todos.inProgress", "dock.todos.overflow", "dock.subagents.heading", "dock.subagents.running", "dock.subagents.overflow", "dock.jobs.heading", "dock.jobs.running", "dock.jobs.overflow", "status.prefix", "status.back", "status.activity.working", "status.activity.ready", "status.elapsed", "status.agentPreset", "status.model", "status.effort", "status.permission", "status.context", "status.cache", "status.stash", "status.cwd", "status.separator", "editor.border", "editor.queued", "editor.queued.more", "editor.ghost", "editor.selectList.selectedPrefix", "editor.selectList.selectedText", "editor.selectList.description", "editor.selectList.scrollInfo", "editor.selectList.noMatch"];
|
|
75
103
|
/** A name for one styled element on the surface. */
|
|
76
104
|
export type TuiToken = (typeof TUI_TOKENS)[number];
|
|
77
105
|
/**
|
|
@@ -91,20 +119,24 @@ export declare const DEFAULT_PALETTE: Readonly<Record<PaletteName, string>>;
|
|
|
91
119
|
* A test asserts every token in {@link TUI_TOKENS} appears here.
|
|
92
120
|
*/
|
|
93
121
|
export declare const DEFAULT_TOKENS: Readonly<Record<TuiToken, StyleSpec>>;
|
|
122
|
+
/** The elements a named theme draws its own way, as the layer a resolver takes. */
|
|
123
|
+
export type ThemedSpecs = Readonly<Partial<Record<TuiToken, StyleSpec>>>;
|
|
94
124
|
/**
|
|
95
|
-
* Merge one token's default, its `inherit` target, and the reader
|
|
125
|
+
* Merge one token's default, its `inherit` target, a theme, and the reader.
|
|
96
126
|
*
|
|
97
127
|
* The inherited token's fields replace this token's defaults, because that is
|
|
98
|
-
* what "start from another token" means
|
|
128
|
+
* what "start from another token" means. A theme sits between the two because
|
|
129
|
+
* it is a layer the reader chose rather than one they wrote: it moves every
|
|
130
|
+
* element it names, and their own fields still have the last word.
|
|
99
131
|
* A path-scoped set turns a cycle into a stop, and still lets two branches
|
|
100
132
|
* inherit one token rather than sharing a single visit.
|
|
101
133
|
*/
|
|
102
|
-
export declare function mergeTokenSpec(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec
|
|
134
|
+
export declare function mergeTokenSpec(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec>, themed?: ThemedSpecs): StyleSpec;
|
|
103
135
|
/**
|
|
104
136
|
* Resolve one token into the escapes a renderer needs.
|
|
105
137
|
*
|
|
106
138
|
* Faint is dropped once a colour is chosen: stacking it on a deliberate grey is
|
|
107
139
|
* what made the old output differ per terminal.
|
|
108
140
|
*/
|
|
109
|
-
export declare function resolveToken(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec>, palette: Readonly<Record<PaletteName, string>>, mode: ColourMode): ResolvedStyle;
|
|
141
|
+
export declare function resolveToken(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec>, palette: Readonly<Record<PaletteName, string>>, mode: ColourMode, themed?: ThemedSpecs): ResolvedStyle;
|
|
110
142
|
//# sourceMappingURL=theme-tokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-tokens.d.ts","sourceRoot":"","sources":["../src/theme-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAkC,MAAM,uBAAuB,CAAA;AAIvF;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,YAAY,CAAA;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAA;AAEzC,oEAAoE;AACpE,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"theme-tokens.d.ts","sourceRoot":"","sources":["../src/theme-tokens.ts"],"names":[],"mappings":"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"}
|
package/lib/theme-tokens.js
CHANGED
|
@@ -18,6 +18,13 @@ export function resetSequence() {
|
|
|
18
18
|
* ordinary text that dimming looked like it had not been applied at all.
|
|
19
19
|
*/
|
|
20
20
|
export const MUTED_GREY = '#8a8a8a';
|
|
21
|
+
/**
|
|
22
|
+
* The shade the reasoning signpost recedes to.
|
|
23
|
+
*
|
|
24
|
+
* The row naming a thought is a signpost, not the thought: it sits below the
|
|
25
|
+
* muted family so the body it introduces stays the thing being read.
|
|
26
|
+
*/
|
|
27
|
+
export const FAINT_GREY = '#666666';
|
|
21
28
|
/**
|
|
22
29
|
* The shade a tool's argument takes.
|
|
23
30
|
*
|
|
@@ -33,9 +40,30 @@ export const ARGUMENT_BLUE = '#8db3d9';
|
|
|
33
40
|
* foreground, so telling the two apart meant reading them; a mint keeps them
|
|
34
41
|
* apart at a glance without the pink cast a rose gave every prompt.
|
|
35
42
|
*/
|
|
36
|
-
export const USER_PROMPT_MINT = '#
|
|
43
|
+
export const USER_PROMPT_MINT = '#27f5c8';
|
|
44
|
+
/**
|
|
45
|
+
* The band a changed run sits on inside an added line.
|
|
46
|
+
*
|
|
47
|
+
* The characters that changed are why a paired line is on screen at all, and
|
|
48
|
+
* they must stand out without leaving the row's own hue: a reader scanning a
|
|
49
|
+
* green row should not have to compare it against a second, unrelated colour to
|
|
50
|
+
* find what moved. An explicit dark shade rather than a palette slot, for the
|
|
51
|
+
* same reason the muted grey is one.
|
|
52
|
+
*/
|
|
53
|
+
export const DIFF_ADDED_BAND = '#1e3d24';
|
|
54
|
+
/** The band a changed run sits on inside a removed line; the pair of {@link DIFF_ADDED_BAND}. */
|
|
55
|
+
export const DIFF_REMOVED_BAND = '#472424';
|
|
56
|
+
/**
|
|
57
|
+
* The shade the frame around an assistant reply is drawn in.
|
|
58
|
+
*
|
|
59
|
+
* A reply is boxed so one exchange reads as two objects rather than as a box and
|
|
60
|
+
* then a stream, and its frame must not be mistaken for the bar the reader types
|
|
61
|
+
* into: a warm gold sits apart from the prompt's mint and the brand-blue editor,
|
|
62
|
+
* without borrowing the warning amber that means a state.
|
|
63
|
+
*/
|
|
64
|
+
export const ASSISTANT_FRAME_GOLD = '#d6c29a';
|
|
37
65
|
/** Palette entries a token may name instead of a literal colour. */
|
|
38
|
-
export const PALETTE_NAMES = ['default', 'muted', 'accent', 'arg', 'warn', 'added', 'removed', 'user', 'assistant'];
|
|
66
|
+
export const PALETTE_NAMES = ['default', 'muted', 'faint', 'accent', 'arg', 'warn', 'added', 'removed', 'user', 'assistant'];
|
|
39
67
|
/** A row class a tool card can carry, so styling follows what the row means. */
|
|
40
68
|
export const CARD_ROW_CLASSES = [
|
|
41
69
|
'header', 'hunk', 'added', 'removed', 'line', 'lineNumber', 'path', 'match', 'truncated', 'output', 'cwd', 'status', 'source', 'url', 'detail',
|
|
@@ -50,12 +78,14 @@ export const CARD_ROW_CLASSES = [
|
|
|
50
78
|
export const TUI_TOKENS = [
|
|
51
79
|
// Transcript rows
|
|
52
80
|
'transcript.user',
|
|
81
|
+
'transcript.assistant.border',
|
|
53
82
|
'transcript.notice',
|
|
54
83
|
'transcript.marker',
|
|
55
84
|
'transcript.reasoning.summary',
|
|
56
85
|
'transcript.reasoning.body',
|
|
57
86
|
'transcript.reasoning.hint',
|
|
58
|
-
// A reply is markdown, so the markdown tokens are what address it
|
|
87
|
+
// A reply's text is markdown, so the markdown tokens are what address it; only
|
|
88
|
+
// the frame drawn around the reply has an element of its own.
|
|
59
89
|
// Tool cards: the generic layer
|
|
60
90
|
'tool.title',
|
|
61
91
|
'tool.glyph',
|
|
@@ -105,6 +135,17 @@ export const TUI_TOKENS = [
|
|
|
105
135
|
'markdown.italic',
|
|
106
136
|
'markdown.strikethrough',
|
|
107
137
|
'markdown.underline',
|
|
138
|
+
// A fenced diff is drawn by the surface rather than by the library's plain
|
|
139
|
+
// code path, so each row class is addressable on its own; the two emphasis
|
|
140
|
+
// entries are the characters that changed inside an otherwise matching pair,
|
|
141
|
+
// which is what tells an edit from a wholesale replacement.
|
|
142
|
+
'markdown.diff.header',
|
|
143
|
+
'markdown.diff.hunk',
|
|
144
|
+
'markdown.diff.context',
|
|
145
|
+
'markdown.diff.added',
|
|
146
|
+
'markdown.diff.removed',
|
|
147
|
+
'markdown.diff.addedEmphasis',
|
|
148
|
+
'markdown.diff.removedEmphasis',
|
|
108
149
|
// A drawn mermaid diagram: the renderer reports what each run *is*, so every
|
|
109
150
|
// role a drawing can be made of is addressable on its own.
|
|
110
151
|
'markdown.diagram.border',
|
|
@@ -126,6 +167,10 @@ export const TUI_TOKENS = [
|
|
|
126
167
|
'picker.scrollOlder',
|
|
127
168
|
'picker.hint',
|
|
128
169
|
'picker.cursor',
|
|
170
|
+
// A picker drawn as a box rather than a list at the end of the transcript:
|
|
171
|
+
// the frame has to read as an overlay on the rows behind it, not as one more
|
|
172
|
+
// element of them.
|
|
173
|
+
'picker.border',
|
|
129
174
|
// Gate
|
|
130
175
|
'gate.title',
|
|
131
176
|
'gate.glyphApproval',
|
|
@@ -197,6 +242,7 @@ export const CARD_ROW_TOKEN = {
|
|
|
197
242
|
export const DEFAULT_PALETTE = {
|
|
198
243
|
default: '#d0d0d0',
|
|
199
244
|
muted: MUTED_GREY,
|
|
245
|
+
faint: FAINT_GREY,
|
|
200
246
|
accent: '#5fafd7',
|
|
201
247
|
arg: ARGUMENT_BLUE,
|
|
202
248
|
warn: '#d7af5f',
|
|
@@ -214,6 +260,21 @@ export const DEFAULT_PALETTE = {
|
|
|
214
260
|
* colour is named, so carrying it would be a setting that does nothing.
|
|
215
261
|
*/
|
|
216
262
|
const muted = { fg: 'muted' };
|
|
263
|
+
/**
|
|
264
|
+
* The reasoning row recedes past the muted family, hence its own entry.
|
|
265
|
+
*
|
|
266
|
+
* Italic is what separates the signpost from the thought it introduces; the
|
|
267
|
+
* darker grey is what makes the thought itself the brightest thing there.
|
|
268
|
+
*/
|
|
269
|
+
const signpost = { fg: 'faint', italic: true };
|
|
270
|
+
/**
|
|
271
|
+
* A thought shares the signpost's shade but not its slant.
|
|
272
|
+
*
|
|
273
|
+
* The body is read rather than scanned, so it keeps an upright face while the
|
|
274
|
+
* row naming it stays italic; one shade for both is what makes a thought read
|
|
275
|
+
* as one element instead of two colours arguing.
|
|
276
|
+
*/
|
|
277
|
+
const thought = { fg: 'faint' };
|
|
217
278
|
const plain = {};
|
|
218
279
|
/**
|
|
219
280
|
* The shipped appearance of every token.
|
|
@@ -224,11 +285,12 @@ const plain = {};
|
|
|
224
285
|
*/
|
|
225
286
|
export const DEFAULT_TOKENS = {
|
|
226
287
|
'transcript.user': { fg: 'user' },
|
|
288
|
+
'transcript.assistant.border': { fg: ASSISTANT_FRAME_GOLD },
|
|
227
289
|
'transcript.notice': muted,
|
|
228
290
|
'transcript.marker': muted,
|
|
229
|
-
'transcript.reasoning.summary':
|
|
230
|
-
'transcript.reasoning.body':
|
|
231
|
-
'transcript.reasoning.hint':
|
|
291
|
+
'transcript.reasoning.summary': signpost,
|
|
292
|
+
'transcript.reasoning.body': thought,
|
|
293
|
+
'transcript.reasoning.hint': signpost,
|
|
232
294
|
'tool.title': { fg: 'warn' },
|
|
233
295
|
'tool.glyph': { fg: 'warn' },
|
|
234
296
|
'tool.args': { fg: 'arg' },
|
|
@@ -275,6 +337,18 @@ export const DEFAULT_TOKENS = {
|
|
|
275
337
|
'markdown.italic': { italic: true },
|
|
276
338
|
'markdown.strikethrough': { strike: true },
|
|
277
339
|
'markdown.underline': { underline: true },
|
|
340
|
+
// A diff's scaffolding recedes the way a card's does, and its unchanged code
|
|
341
|
+
// keeps the plain shade a fence already had, so a reply without a diff fence
|
|
342
|
+
// draws exactly as it did.
|
|
343
|
+
'markdown.diff.header': muted,
|
|
344
|
+
'markdown.diff.hunk': muted,
|
|
345
|
+
'markdown.diff.context': plain,
|
|
346
|
+
'markdown.diff.added': { fg: 'added' },
|
|
347
|
+
'markdown.diff.removed': { fg: 'removed' },
|
|
348
|
+
// The band is the emphasis and the foreground is inherited from the row, so a
|
|
349
|
+
// palette move carries both without the reader restating either.
|
|
350
|
+
'markdown.diff.addedEmphasis': { inherit: 'markdown.diff.added', bg: DIFF_ADDED_BAND },
|
|
351
|
+
'markdown.diff.removedEmphasis': { inherit: 'markdown.diff.removed', bg: DIFF_REMOVED_BAND },
|
|
278
352
|
'markdown.diagram.border': muted,
|
|
279
353
|
'markdown.diagram.text': plain,
|
|
280
354
|
'markdown.diagram.edge': { fg: 'accent' },
|
|
@@ -291,6 +365,7 @@ export const DEFAULT_TOKENS = {
|
|
|
291
365
|
'picker.scrollOlder': muted,
|
|
292
366
|
'picker.hint': muted,
|
|
293
367
|
'picker.cursor': plain,
|
|
368
|
+
'picker.border': muted,
|
|
294
369
|
'gate.title': { bold: true },
|
|
295
370
|
'gate.glyphApproval': { bold: true },
|
|
296
371
|
'gate.glyphQuestion': { bold: true },
|
|
@@ -367,25 +442,33 @@ function writtenFields(spec) {
|
|
|
367
442
|
return written;
|
|
368
443
|
}
|
|
369
444
|
/**
|
|
370
|
-
* Merge one token's default, its `inherit` target, and the reader
|
|
445
|
+
* Merge one token's default, its `inherit` target, a theme, and the reader.
|
|
371
446
|
*
|
|
372
447
|
* The inherited token's fields replace this token's defaults, because that is
|
|
373
|
-
* what "start from another token" means
|
|
448
|
+
* what "start from another token" means. A theme sits between the two because
|
|
449
|
+
* it is a layer the reader chose rather than one they wrote: it moves every
|
|
450
|
+
* element it names, and their own fields still have the last word.
|
|
374
451
|
* A path-scoped set turns a cycle into a stop, and still lets two branches
|
|
375
452
|
* inherit one token rather than sharing a single visit.
|
|
376
453
|
*/
|
|
377
|
-
export function mergeTokenSpec(token, overrides) {
|
|
454
|
+
export function mergeTokenSpec(token, overrides, themed) {
|
|
378
455
|
const visiting = new Set();
|
|
379
456
|
const merge = (name) => {
|
|
380
457
|
if (visiting.has(name))
|
|
381
458
|
return {};
|
|
382
459
|
visiting.add(name);
|
|
383
460
|
const own = DEFAULT_TOKENS[name];
|
|
461
|
+
const fromTheme = themed?.[name];
|
|
384
462
|
const override = overrides.get(name);
|
|
385
|
-
const parent = override?.inherit ?? own.inherit;
|
|
463
|
+
const parent = override?.inherit ?? fromTheme?.inherit ?? own.inherit;
|
|
386
464
|
const inherited = parent === undefined ? {} : merge(parent);
|
|
387
465
|
visiting.delete(name);
|
|
388
|
-
return {
|
|
466
|
+
return {
|
|
467
|
+
...withoutInherit(own),
|
|
468
|
+
...inherited,
|
|
469
|
+
...withoutInherit(writtenFields(fromTheme)),
|
|
470
|
+
...withoutInherit(writtenFields(override)),
|
|
471
|
+
};
|
|
389
472
|
};
|
|
390
473
|
return merge(token);
|
|
391
474
|
}
|
|
@@ -399,8 +482,8 @@ function colourParams(sequence) {
|
|
|
399
482
|
* Faint is dropped once a colour is chosen: stacking it on a deliberate grey is
|
|
400
483
|
* what made the old output differ per terminal.
|
|
401
484
|
*/
|
|
402
|
-
export function resolveToken(token, overrides, palette, mode) {
|
|
403
|
-
const merged = mergeTokenSpec(token, overrides);
|
|
485
|
+
export function resolveToken(token, overrides, palette, mode, themed) {
|
|
486
|
+
const merged = mergeTokenSpec(token, overrides, themed);
|
|
404
487
|
if (merged.hidden === true)
|
|
405
488
|
return { prefix: '', suffix: '', glyph: '', hidden: true };
|
|
406
489
|
// With no colour capability the whole promise is "emit nothing", which
|