zyzz 0.0.2 → 0.0.5
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 +34 -19
- package/dist/Config.d.ts +16 -167
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +7 -246
- package/dist/Config.js.map +1 -1
- package/dist/Style.d.ts +19 -13
- package/dist/Style.d.ts.map +1 -1
- package/dist/Style.js +73 -7
- package/dist/Style.js.map +1 -1
- package/dist/Vars.d.ts +114 -0
- package/dist/Vars.d.ts.map +1 -0
- package/dist/Vars.js +42 -0
- package/dist/Vars.js.map +1 -0
- package/dist/compiler/Graph.js +11 -8
- package/dist/compiler/Graph.js.map +1 -1
- package/dist/compiler/Native.d.ts +5 -5
- package/dist/compiler/Native.d.ts.map +1 -1
- package/dist/compiler/Native.js +21 -21
- package/dist/compiler/Native.js.map +1 -1
- package/dist/compiler/Source.d.ts +10 -6
- package/dist/compiler/Source.d.ts.map +1 -1
- package/dist/compiler/Source.js +66 -11
- package/dist/compiler/Source.js.map +1 -1
- package/dist/compiler/Transform.d.ts +1 -1
- package/dist/compiler/Transform.d.ts.map +1 -1
- package/dist/compiler/Transform.js +59 -21
- package/dist/compiler/Transform.js.map +1 -1
- package/dist/compiler/internal/Compositions.d.ts +5 -0
- package/dist/compiler/internal/Compositions.d.ts.map +1 -1
- package/dist/compiler/internal/Compositions.js +22 -3
- package/dist/compiler/internal/Compositions.js.map +1 -1
- package/dist/compiler/internal/Configurations.d.ts.map +1 -1
- package/dist/compiler/internal/Configurations.js +73 -12
- package/dist/compiler/internal/Configurations.js.map +1 -1
- package/dist/compiler/internal/Contract.d.ts +1 -1
- package/dist/compiler/internal/Contract.d.ts.map +1 -1
- package/dist/compiler/internal/Contract.js +162 -13
- package/dist/compiler/internal/Contract.js.map +1 -1
- package/dist/compiler/internal/Contributions.js +1 -1
- package/dist/compiler/internal/Contributions.js.map +1 -1
- package/dist/compiler/internal/Dynamic.js +1 -1
- package/dist/compiler/internal/Dynamic.js.map +1 -1
- package/dist/compiler/internal/Expression.d.ts +3 -0
- package/dist/compiler/internal/Expression.d.ts.map +1 -1
- package/dist/compiler/internal/Expression.js +21 -0
- package/dist/compiler/internal/Expression.js.map +1 -1
- package/dist/compiler/internal/Identifiers.d.ts +1 -1
- package/dist/compiler/internal/Identifiers.d.ts.map +1 -1
- package/dist/compiler/internal/Identifiers.js +2 -2
- package/dist/compiler/internal/Identifiers.js.map +1 -1
- package/dist/compiler/internal/NativeBindings.d.ts +1 -1
- package/dist/compiler/internal/NativeBindings.d.ts.map +1 -1
- package/dist/compiler/internal/NativeBindings.js +3 -3
- package/dist/compiler/internal/NativeBindings.js.map +1 -1
- package/dist/compiler/internal/PackedStyles.d.ts +1 -1
- package/dist/compiler/internal/PackedStyles.d.ts.map +1 -1
- package/dist/compiler/internal/PackedStyles.js +15 -25
- package/dist/compiler/internal/PackedStyles.js.map +1 -1
- package/dist/compiler/internal/Recipes.js +1 -1
- package/dist/compiler/internal/Recipes.js.map +1 -1
- package/dist/compiler/internal/Selectors.js +1 -1
- package/dist/compiler/internal/Selectors.js.map +1 -1
- package/dist/compiler/internal/Themes.d.ts +12 -3
- package/dist/compiler/internal/Themes.d.ts.map +1 -1
- package/dist/compiler/internal/Themes.js +192 -52
- package/dist/compiler/internal/Themes.js.map +1 -1
- package/dist/compiler/internal/{Variables.d.ts → Vars.d.ts} +1 -1
- package/dist/compiler/internal/Vars.d.ts.map +1 -0
- package/dist/compiler/internal/{Variables.js → Vars.js} +3 -3
- package/dist/compiler/internal/Vars.js.map +1 -0
- package/dist/default.d.ts +451 -1649
- package/dist/default.d.ts.map +1 -1
- package/dist/default.js +389 -80
- package/dist/default.js.map +2 -2
- package/dist/default.js.zyzz.json +1 -1
- package/dist/esbuild/index.d.ts +3 -0
- package/dist/esbuild/index.d.ts.map +1 -0
- package/dist/esbuild/index.js +5 -0
- package/dist/esbuild/index.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/internal/Authoring.d.ts +1 -1
- package/dist/internal/Authoring.d.ts.map +1 -1
- package/dist/internal/Authoring.js +4 -4
- package/dist/internal/Authoring.js.map +1 -1
- package/dist/internal/Binding.d.ts +1 -1
- package/dist/internal/Binding.d.ts.map +1 -1
- package/dist/internal/Completion.d.ts +19 -0
- package/dist/internal/Completion.d.ts.map +1 -0
- package/dist/internal/Completion.js +2 -0
- package/dist/internal/Completion.js.map +1 -0
- package/dist/internal/Condition.d.ts +3 -1
- package/dist/internal/Condition.d.ts.map +1 -1
- package/dist/internal/Condition.js.map +1 -1
- package/dist/internal/Configuration.d.ts +248 -0
- package/dist/internal/Configuration.d.ts.map +1 -0
- package/dist/internal/Configuration.js +343 -0
- package/dist/internal/Configuration.js.map +1 -0
- package/dist/internal/Shorthands.d.ts +1 -1
- package/dist/internal/Shorthands.d.ts.map +1 -1
- package/dist/internal/Shorthands.js +1 -0
- package/dist/internal/Shorthands.js.map +1 -1
- package/dist/{Theme.d.ts → internal/Theme.d.ts} +24 -19
- package/dist/internal/Theme.d.ts.map +1 -0
- package/dist/{Theme.js → internal/Theme.js} +57 -14
- package/dist/internal/Theme.js.map +1 -0
- package/dist/internal/Token.d.ts +46 -16
- package/dist/internal/Token.d.ts.map +1 -1
- package/dist/internal/Token.js +89 -5
- package/dist/internal/Token.js.map +1 -1
- package/dist/internal/Typography.d.ts +31 -0
- package/dist/internal/Typography.d.ts.map +1 -0
- package/dist/internal/Typography.js +54 -0
- package/dist/internal/Typography.js.map +1 -0
- package/dist/internal/Value.d.ts +6 -1
- package/dist/internal/Value.d.ts.map +1 -1
- package/dist/internal/Value.js.map +1 -1
- package/dist/internal/VariableSets.d.ts +20 -0
- package/dist/internal/VariableSets.d.ts.map +1 -0
- package/dist/internal/VariableSets.js +317 -0
- package/dist/internal/VariableSets.js.map +1 -0
- package/dist/next/loader.js +15 -5
- package/dist/next/loader.js.map +1 -1
- package/dist/node/Host.d.ts.map +1 -1
- package/dist/node/Host.js +1 -1
- package/dist/node/Host.js.map +1 -1
- package/dist/react-native/Host.d.ts +2 -2
- package/dist/react-native/Host.d.ts.map +1 -1
- package/dist/react-native/Host.js +4 -4
- package/dist/react-native/Host.js.map +1 -1
- package/dist/react-native/StyleSheet.d.ts +9 -8
- package/dist/react-native/StyleSheet.d.ts.map +1 -1
- package/dist/react-native/StyleSheet.js +29 -23
- package/dist/react-native/StyleSheet.js.map +1 -1
- package/dist/react-native/Variants.d.ts +3 -3
- package/dist/react-native/Variants.d.ts.map +1 -1
- package/dist/react-native/Variants.js +2 -2
- package/dist/react-native/react.d.ts +1 -1
- package/dist/react-native/react.d.ts.map +1 -1
- package/dist/react-native/react.js +5 -5
- package/dist/react-native/react.js.map +1 -1
- package/dist/rollup/index.d.ts +3 -0
- package/dist/rollup/index.d.ts.map +1 -0
- package/dist/rollup/index.js +5 -0
- package/dist/rollup/index.js.map +1 -0
- package/dist/runtime/Appearance.d.ts +7 -7
- package/dist/runtime/Appearance.d.ts.map +1 -1
- package/dist/runtime/Appearance.js +15 -15
- package/dist/runtime/Appearance.js.map +1 -1
- package/dist/runtime/Dynamic.d.ts.map +1 -1
- package/dist/runtime/Dynamic.js +4 -1
- package/dist/runtime/Dynamic.js.map +1 -1
- package/dist/runtime/NativeContext.d.ts +4 -4
- package/dist/runtime/NativeContext.d.ts.map +1 -1
- package/dist/runtime/NativeContext.js +5 -5
- package/dist/runtime/NativeContext.js.map +1 -1
- package/dist/runtime/NativeDynamic.d.ts +1 -1
- package/dist/runtime/NativeDynamic.d.ts.map +1 -1
- package/dist/runtime/NativeDynamic.js.map +1 -1
- package/dist/runtime/Props.d.ts +1 -1
- package/dist/runtime/Props.js +3 -3
- package/dist/runtime/Props.js.map +1 -1
- package/dist/runtime/Selection.d.ts +14 -10
- package/dist/runtime/Selection.d.ts.map +1 -1
- package/dist/runtime/Selection.js +19 -18
- package/dist/runtime/Selection.js.map +1 -1
- package/dist/styleFunction.d.ts +14 -14
- package/dist/styleFunction.d.ts.map +1 -1
- package/dist/styleFunction.js.map +1 -1
- package/dist/unplugin/index.d.ts +20 -0
- package/dist/unplugin/index.d.ts.map +1 -0
- package/dist/unplugin/index.js +498 -0
- package/dist/unplugin/index.js.map +1 -0
- package/dist/variants.d.ts +3 -3
- package/dist/variants.d.ts.map +1 -1
- package/dist/variants.js.map +1 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +6 -3
- package/dist/vite/index.js.map +1 -1
- package/dist/web/Css.d.ts +4 -3
- package/dist/web/Css.d.ts.map +1 -1
- package/dist/web/Css.js +4 -4
- package/dist/web/Css.js.map +1 -1
- package/dist/web/internal/Themes.d.ts +3 -2
- package/dist/web/internal/Themes.d.ts.map +1 -1
- package/dist/web/internal/Themes.js +42 -6
- package/dist/web/internal/Themes.js.map +1 -1
- package/dist/webpack/index.d.ts +3 -0
- package/dist/webpack/index.d.ts.map +1 -0
- package/dist/webpack/index.js +5 -0
- package/dist/webpack/index.js.map +1 -0
- package/package.json +23 -2
- package/src/Config.ts +43 -684
- package/src/Style.ts +167 -40
- package/src/Vars.ts +299 -0
- package/src/compiler/Graph.ts +14 -9
- package/src/compiler/Native.ts +29 -32
- package/src/compiler/Source.ts +85 -18
- package/src/compiler/Transform.ts +78 -22
- package/src/compiler/internal/Compositions.ts +36 -3
- package/src/compiler/internal/Configurations.ts +83 -11
- package/src/compiler/internal/Contract.ts +223 -17
- package/src/compiler/internal/Contributions.ts +1 -1
- package/src/compiler/internal/Dynamic.ts +1 -1
- package/src/compiler/internal/Expression.ts +26 -0
- package/src/compiler/internal/Identifiers.ts +2 -1
- package/src/compiler/internal/NativeBindings.ts +3 -3
- package/src/compiler/internal/PackedStyles.ts +22 -26
- package/src/compiler/internal/Recipes.ts +1 -1
- package/src/compiler/internal/Selectors.ts +1 -1
- package/src/compiler/internal/Themes.ts +266 -57
- package/src/compiler/internal/{Variables.ts → Vars.ts} +2 -2
- package/src/default.ts +868 -156
- package/src/esbuild/index.ts +5 -0
- package/src/index.ts +4 -4
- package/src/internal/Authoring.ts +5 -7
- package/src/internal/Binding.ts +1 -1
- package/src/internal/Completion.ts +42 -0
- package/src/internal/Condition.ts +31 -1
- package/src/internal/Configuration.ts +970 -0
- package/src/internal/Shorthands.ts +2 -0
- package/src/{Theme.ts → internal/Theme.ts} +174 -48
- package/src/internal/Token.ts +258 -85
- package/src/internal/Typography.ts +106 -0
- package/src/internal/Value.ts +45 -26
- package/src/internal/VariableSets.ts +458 -0
- package/src/next/loader.ts +19 -5
- package/src/node/Host.ts +1 -2
- package/src/react-native/Host.ts +6 -6
- package/src/react-native/StyleSheet.ts +49 -42
- package/src/react-native/Variants.ts +3 -3
- package/src/react-native/react.ts +6 -6
- package/src/rollup/index.ts +5 -0
- package/src/runtime/Appearance.ts +20 -20
- package/src/runtime/Dynamic.ts +4 -1
- package/src/runtime/NativeContext.ts +8 -8
- package/src/runtime/NativeDynamic.ts +2 -4
- package/src/runtime/Props.ts +3 -3
- package/src/runtime/Selection.ts +44 -33
- package/src/styleFunction.ts +22 -19
- package/src/unplugin/index.ts +600 -0
- package/src/variants.ts +7 -5
- package/src/vite/index.ts +5 -4
- package/src/web/Css.ts +10 -7
- package/src/web/internal/Themes.ts +52 -9
- package/src/webpack/index.ts +5 -0
- package/dist/Theme.d.ts.map +0 -1
- package/dist/Theme.js.map +0 -1
- package/dist/compiler/internal/Variables.d.ts.map +0 -1
- package/dist/compiler/internal/Variables.js.map +0 -1
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
* Defines typed token contracts and compatible immutable theme overrides.
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
|
-
import { MissingTransformError, style } from '
|
|
6
|
-
import * as Authoring from './
|
|
7
|
-
import * as Identity from './
|
|
8
|
-
import { variants } from '
|
|
9
|
-
import * as Query from './
|
|
10
|
-
import * as Token from './
|
|
5
|
+
import { MissingTransformError, style } from '../styleFunction.js';
|
|
6
|
+
import * as Authoring from './Authoring.js';
|
|
7
|
+
import * as Identity from './Identity.js';
|
|
8
|
+
import { variants } from '../variants.js';
|
|
9
|
+
import * as Query from './Query.js';
|
|
10
|
+
import * as Token from './Token.js';
|
|
11
|
+
import * as Typography from './Typography.js';
|
|
12
|
+
import * as Condition from './Condition.js';
|
|
11
13
|
/**
|
|
12
|
-
* Defines scalar tokens without
|
|
14
|
+
* Defines scalar tokens and typography sets without defaults or environment access.
|
|
13
15
|
* Colors currently use the supported literal color grammar; spacing and radius
|
|
14
16
|
* values use nonnegative literal lengths or zero. Nested palettes are supported.
|
|
15
17
|
* @throws {InvalidError} If groups, paths, values, or data records are invalid.
|
|
@@ -36,7 +38,7 @@ export function extend(theme, overrides) {
|
|
|
36
38
|
?.value;
|
|
37
39
|
if (!data)
|
|
38
40
|
throw new InvalidError([], 'Expected a theme definition.');
|
|
39
|
-
return build(overrides, data.contract, data.values, data.queries);
|
|
41
|
+
return build(overrides, data.contract, data.values, data.queries, undefined, data.paths);
|
|
40
42
|
}
|
|
41
43
|
/** Invalid token data with an unambiguous authored path. */
|
|
42
44
|
export class InvalidError extends Error {
|
|
@@ -50,18 +52,24 @@ export class InvalidError extends Error {
|
|
|
50
52
|
/** Group and nested keys identifying the failure. */
|
|
51
53
|
path;
|
|
52
54
|
}
|
|
53
|
-
function build(input, contract, base, baseQueries, scope) {
|
|
55
|
+
function build(input, contract, base, baseQueries, scope, basePaths) {
|
|
54
56
|
const values = Object.assign(Object.create(null), base);
|
|
55
57
|
const queries = {
|
|
56
58
|
breakpoints: Object.assign(Object.create(null), baseQueries?.breakpoints),
|
|
57
59
|
containerNames: baseQueries?.containerNames ?? [],
|
|
58
60
|
containers: Object.assign(Object.create(null), baseQueries?.containers),
|
|
59
61
|
};
|
|
62
|
+
const paths = { ...basePaths };
|
|
63
|
+
const conditions = [];
|
|
60
64
|
let hasQueries = !!baseQueries;
|
|
61
65
|
const active = new Set();
|
|
62
66
|
function visit(value, group, path) {
|
|
63
67
|
const key = path.join('.');
|
|
68
|
+
if (path.some((part) => part.startsWith('@')))
|
|
69
|
+
paths[key] = Object.freeze([...path]);
|
|
64
70
|
const scalar = typeof value === 'string' || typeof value === 'number';
|
|
71
|
+
if (group === 'typography' && scalar)
|
|
72
|
+
throw new InvalidError(path, 'Expected a typography set or a nested set group.');
|
|
65
73
|
const entries = scalar ? undefined : record(value, path);
|
|
66
74
|
const pair = ['color', 'backgroundColor', 'borderColor', 'textColor'].includes(group) && entries?.some(([name]) => name === 'light' || name === 'dark');
|
|
67
75
|
if (scalar || pair) {
|
|
@@ -93,10 +101,26 @@ function build(input, contract, base, baseQueries, scope) {
|
|
|
93
101
|
active.add(value);
|
|
94
102
|
for (const [name, child] of entries) {
|
|
95
103
|
const next = [...path, name];
|
|
104
|
+
if (group === 'typography' && name.startsWith('@')) {
|
|
105
|
+
if (!Typography.condition(name))
|
|
106
|
+
throw new InvalidError(next, 'Typography conditions must be media or container queries.');
|
|
107
|
+
conditions.push(next);
|
|
108
|
+
}
|
|
109
|
+
if (group === 'typography' &&
|
|
110
|
+
path.some((part) => part.startsWith('@')) &&
|
|
111
|
+
!Typography.condition(name) &&
|
|
112
|
+
!Typography.properties.includes(name))
|
|
113
|
+
throw new InvalidError(next, 'Typography query blocks accept only typography fields and queries.');
|
|
96
114
|
if (base &&
|
|
97
115
|
!Object.keys(base).some((key) => key === next.join('.') || key.startsWith(`${next.join('.')}.`)))
|
|
98
116
|
throw new InvalidError(next, 'Extensions cannot add token paths.');
|
|
99
|
-
|
|
117
|
+
const property = group === 'typography' &&
|
|
118
|
+
Typography.properties.includes(name)
|
|
119
|
+
? name
|
|
120
|
+
: undefined;
|
|
121
|
+
if (property && typeof child !== 'string' && typeof child !== 'number')
|
|
122
|
+
throw new InvalidError(next, 'Typography properties require scalar values.');
|
|
123
|
+
visit(child, property ?? group, next);
|
|
100
124
|
}
|
|
101
125
|
active.delete(value);
|
|
102
126
|
}
|
|
@@ -147,6 +171,7 @@ function build(input, contract, base, baseQueries, scope) {
|
|
|
147
171
|
'backgroundColor',
|
|
148
172
|
'borderColor',
|
|
149
173
|
'borderRadius',
|
|
174
|
+
'borderWidth',
|
|
150
175
|
'color',
|
|
151
176
|
'margin',
|
|
152
177
|
'padding',
|
|
@@ -157,6 +182,7 @@ function build(input, contract, base, baseQueries, scope) {
|
|
|
157
182
|
'letterSpacing',
|
|
158
183
|
'lineHeight',
|
|
159
184
|
'textColor',
|
|
185
|
+
'typography',
|
|
160
186
|
].includes(group))
|
|
161
187
|
throw new InvalidError([group], 'Unsupported token group.');
|
|
162
188
|
if (palette === undefined)
|
|
@@ -167,18 +193,33 @@ function build(input, contract, base, baseQueries, scope) {
|
|
|
167
193
|
const entries = record(palette, [group]);
|
|
168
194
|
if (!entries.length && !base)
|
|
169
195
|
throw new InvalidError([group], 'Token palettes cannot be empty.');
|
|
170
|
-
for (const [name, value] of entries)
|
|
196
|
+
for (const [name, value] of entries) {
|
|
197
|
+
if (group === 'typography' &&
|
|
198
|
+
(Typography.properties.includes(name) ||
|
|
199
|
+
name.startsWith('@')))
|
|
200
|
+
throw new InvalidError([group, name], 'Typography properties require a named set.');
|
|
171
201
|
visit(value, group, [group, name]);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
for (const path of conditions) {
|
|
205
|
+
try {
|
|
206
|
+
Condition.normalize(Query.resolve(path.at(-1), queries));
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
throw new InvalidError(path, error.message);
|
|
210
|
+
}
|
|
172
211
|
}
|
|
173
212
|
const tokens = Object.create(null);
|
|
174
213
|
for (const [path, value] of Object.entries(values)) {
|
|
175
|
-
const parts = path.split('.');
|
|
214
|
+
const parts = paths[path] ?? path.split('.');
|
|
176
215
|
let tree = tokens;
|
|
177
216
|
for (const part of parts.slice(0, -1))
|
|
178
217
|
tree = (tree[part] ??= Object.create(null));
|
|
179
218
|
tree[parts.at(-1)] = Token.create({
|
|
180
219
|
contract,
|
|
181
|
-
group: parts[0]
|
|
220
|
+
group: (parts[0] === 'typography'
|
|
221
|
+
? parts.at(-1)
|
|
222
|
+
: parts[0]),
|
|
182
223
|
path,
|
|
183
224
|
value,
|
|
184
225
|
});
|
|
@@ -213,6 +254,7 @@ function build(input, contract, base, baseQueries, scope) {
|
|
|
213
254
|
}, Token.definition, {
|
|
214
255
|
value: Object.freeze({
|
|
215
256
|
contract,
|
|
257
|
+
...(Object.keys(paths).length ? { paths: Object.freeze(paths) } : {}),
|
|
216
258
|
values: Object.freeze(values),
|
|
217
259
|
...(hasQueries
|
|
218
260
|
? {
|
|
@@ -246,7 +288,8 @@ function record(value, path) {
|
|
|
246
288
|
throw new InvalidError([...path, key], 'Token keys cannot contain !; it is reserved for declaration importance.');
|
|
247
289
|
if (typeof key !== 'string' ||
|
|
248
290
|
!key ||
|
|
249
|
-
key.includes('.')
|
|
291
|
+
(key.includes('.') &&
|
|
292
|
+
!(path[0] === 'typography' && Typography.condition(key))) ||
|
|
250
293
|
!descriptor.enumerable ||
|
|
251
294
|
!('value' in descriptor))
|
|
252
295
|
throw new InvalidError(path, 'Expected nonempty keys without dots and enumerable data properties.');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Theme.js","sourceRoot":"","sources":["../../src/internal/Theme.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Token.d.ts
CHANGED
|
@@ -2,21 +2,31 @@
|
|
|
2
2
|
* Carries portable theme references and enforces their property domains.
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import * as Binding from './Binding.js';
|
|
6
6
|
import type * as Query from './Query.js';
|
|
7
7
|
import type * as Shorthands from './Shorthands.js';
|
|
8
|
-
import type * as Theme from '
|
|
8
|
+
import type * as Theme from './Theme.js';
|
|
9
|
+
import type * as ValueSyntax from './Value.js';
|
|
10
|
+
import type * as VariableSets from '../Vars.js';
|
|
9
11
|
import * as Literal from './Literal.js';
|
|
10
12
|
/** Checks a reference's property domain. */
|
|
11
13
|
export declare function accepts(group: Group, property: keyof Literal.Properties): boolean;
|
|
14
|
+
/** Checks explicit variable values independently of shorthand category mappings. */
|
|
15
|
+
export declare function acceptsReference(reference: Reference, property: keyof Literal.Properties): boolean;
|
|
12
16
|
/** Rebinds validated scalar references to a explicitly owned contract identity. */
|
|
13
17
|
export declare function bind<tokens extends Theme.Tokens>(original: Theme.Definition<tokens>, contract: Contract): Theme.Definition<tokens>;
|
|
14
18
|
/** Retains full scopes when styles may have been compiled in another graph. */
|
|
15
19
|
export declare const complete: unique symbol;
|
|
16
20
|
/** Opaque data shared by a definition and its compatible extensions. */
|
|
17
21
|
export type Contract = {
|
|
22
|
+
/** Whether values belong to independent variables rather than fixed theme categories. */
|
|
23
|
+
readonly variableSet?: boolean | undefined;
|
|
24
|
+
/** Configuration-local category-to-property mappings. */
|
|
25
|
+
readonly mappings?: VariableSets.Mappings | false | undefined;
|
|
18
26
|
/** Web emission mode retained by configuration-bound theme handles. */
|
|
19
27
|
readonly cssOutput?: 'atomic' | 'grouped' | undefined;
|
|
28
|
+
/** Fallback layer for declarations without an explicit layer. */
|
|
29
|
+
readonly defaultLayer?: string | undefined;
|
|
20
30
|
/** Configuration-local property aliases, inherited by bound handles. */
|
|
21
31
|
readonly shorthands?: Shorthands.Map | undefined;
|
|
22
32
|
readonly [complete]?: boolean | undefined;
|
|
@@ -40,42 +50,57 @@ export declare function compose(parts: readonly (string | Reference | Binding.Re
|
|
|
40
50
|
/** Marks web-only references distinctly from portable tokens. */
|
|
41
51
|
export declare const web: unique symbol;
|
|
42
52
|
/** Web reference with the original token domain. */
|
|
43
|
-
export type Variable<group extends Group = Group> = Reference<group> & {
|
|
53
|
+
export type Variable<group extends Group = Group> = `var(--${string})` & Reference<group> & {
|
|
44
54
|
readonly [web]: true;
|
|
45
55
|
};
|
|
46
56
|
/** Replaces portable scalar leaves with web-only references. */
|
|
47
|
-
export type
|
|
48
|
-
readonly [key in keyof tree]:
|
|
57
|
+
export type Vars<tree> = tree extends Reference<infer group> ? Variable<group> : {
|
|
58
|
+
readonly [key in keyof tree]: Vars<tree[key]>;
|
|
49
59
|
};
|
|
50
60
|
/** Creates web-only reference leaves without changing contract identities. */
|
|
51
|
-
export declare function variables<tree>(tree: tree):
|
|
61
|
+
export declare function variables<tree>(tree: tree): Vars<tree>;
|
|
52
62
|
/** Internal definition metadata; never enumerable consumer output. */
|
|
53
63
|
export declare const definition: unique symbol;
|
|
54
64
|
/** Supported scalar token groups. */
|
|
55
|
-
export type Group = 'backgroundColor' | 'borderColor' | 'borderRadius' | 'color' | 'margin' | 'padding' | 'spacing' | 'fontFamily' | 'fontSize' | 'fontWeight' | 'letterSpacing' | 'lineHeight' | 'textColor';
|
|
65
|
+
export type Group = 'number' | 'string' | 'backgroundColor' | 'borderColor' | 'borderRadius' | 'borderWidth' | 'color' | 'margin' | 'padding' | 'spacing' | 'fontFamily' | 'fontSize' | 'fontWeight' | 'letterSpacing' | 'lineHeight' | 'textColor';
|
|
56
66
|
/** Stable package/module/binding identity supplied by source adapters. */
|
|
57
67
|
export declare const identity: unique symbol;
|
|
58
68
|
/** Recognizes references without invoking getters on untrusted style values. */
|
|
59
69
|
export declare function is(value: unknown): value is Reference;
|
|
60
70
|
/** Immutable theme data carried directly by each definition. */
|
|
61
71
|
export type Metadata = {
|
|
72
|
+
/** Original segments for typography paths containing query punctuation. */
|
|
73
|
+
readonly paths?: Readonly<Record<string, readonly string[]>> | undefined;
|
|
62
74
|
readonly queries?: Query.Metadata | undefined;
|
|
63
75
|
readonly contract: Contract;
|
|
64
76
|
readonly values: Readonly<Record<string, Value>>;
|
|
65
77
|
};
|
|
66
|
-
/**
|
|
67
|
-
export
|
|
78
|
+
/** Literal domain carried by explicit variable references during type checking. */
|
|
79
|
+
export declare const scalar: unique symbol;
|
|
80
|
+
/** Inferred shorthand names whose leaves belong to a property domain. */
|
|
81
|
+
export type Names<tokens, property extends keyof Literal.Properties> = tokens extends {
|
|
82
|
+
readonly '~vars': {
|
|
83
|
+
values: infer values;
|
|
84
|
+
mappings: infer mappings;
|
|
85
|
+
};
|
|
86
|
+
} ? mappings extends false ? Paths<Omit<values, 'breakpoints' | 'containers' | 'containerNames'>, property> : {
|
|
87
|
+
[category in keyof values]: category extends keyof mappings ? mappings[category] extends readonly unknown[] ? property extends mappings[category][number] ? Paths<values[category], property> : never : never : category extends Group ? property extends Properties<category> ? Paths<values[category], property> : never : never;
|
|
88
|
+
}[keyof values] : {
|
|
68
89
|
[group in Extract<keyof tokens, Group>]: property extends Properties<group> ? Paths<NonNullable<tokens[group]>> : never;
|
|
69
90
|
}[Extract<keyof tokens, Group>];
|
|
70
|
-
type Paths<tree
|
|
71
|
-
|
|
91
|
+
type Paths<tree, property extends keyof Literal.Properties = never> = [
|
|
92
|
+
tree
|
|
93
|
+
] extends [never] ? never : string extends keyof tree ? string : {
|
|
94
|
+
[key in Extract<keyof tree, number | string>]: NonNullable<tree[key]> extends Value ? [property] extends [never] ? PathKey<key> : VariableSets.Scalar<NonNullable<tree[key]>> extends Literal.Properties[property] & ValueSyntax.Checked<Record<property, VariableSets.Scalar<NonNullable<tree[key]>>>>[property] ? PathKey<key> : never : `${key}.${Paths<NonNullable<tree[key]>, property>}`;
|
|
72
95
|
}[Extract<keyof tree, number | string>];
|
|
96
|
+
type PathKey<key extends number | string> = key | `${key}` | (key extends `${infer numericKey extends number}` ? `${numericKey}` extends key ? numericKey : never : never);
|
|
73
97
|
/** Property domains accepted by each token group. */
|
|
74
|
-
export type Properties<group extends Group> =
|
|
98
|
+
export type Properties<group extends Group> = `--${string}` | Property<group>;
|
|
99
|
+
type Property<group extends Group> = group extends 'number' | 'string' ? never : group extends 'margin' | 'padding' ? Exclude<Extract<keyof Literal.Properties, `${group}${string}`>, 'marginTrim'> : group extends 'spacing' ? Extract<keyof Literal.Properties, `blockSize` | `bottom` | `columnGap` | `flexBasis` | `gap` | `height` | `inlineSize` | `inset${string}` | `left` | Exclude<Extract<keyof Literal.Properties, `margin${string}`>, 'marginTrim'> | `maxBlockSize` | `maxHeight` | `maxInlineSize` | `maxWidth` | `minBlockSize` | `minHeight` | `minInlineSize` | `minWidth` | `padding${string}` | `right` | `rowGap` | `scrollPadding${string}` | `textDecorationThickness` | `textIndent` | `textUnderlineOffset` | `top` | `width`> : group extends 'textColor' ? 'color' : group extends 'color' ? {
|
|
75
100
|
[property in keyof typeof Literal.rules]: (typeof Literal.rules)[property] extends {
|
|
76
101
|
kind: 'color';
|
|
77
102
|
} ? property : never;
|
|
78
|
-
}[keyof typeof Literal.rules] : group extends 'borderColor' ? Extract<keyof Literal.Properties, `border${string}Color`> : group extends 'borderRadius' ? Extract<keyof Literal.Properties, `border${string}Radius`> : group;
|
|
103
|
+
}[keyof typeof Literal.rules] : group extends 'borderColor' ? Extract<keyof Literal.Properties, `border${string}Color`> : group extends 'borderWidth' ? Exclude<Extract<keyof Literal.Properties, `border${string}Width`>, 'borderImageWidth'> : group extends 'borderRadius' ? Extract<keyof Literal.Properties, `border${string}Radius`> : group;
|
|
79
104
|
/** Immutable portable reference retaining its defining fallback. */
|
|
80
105
|
export type Reference<group extends Group = Group> = {
|
|
81
106
|
readonly [reference]: true;
|
|
@@ -96,9 +121,14 @@ export declare namespace resolve {
|
|
|
96
121
|
};
|
|
97
122
|
}
|
|
98
123
|
/** Scalar values retained for each rendering target. */
|
|
99
|
-
export type Value = number | string | {
|
|
100
|
-
readonly dark:
|
|
101
|
-
readonly light:
|
|
124
|
+
export type Value = number | string | Reference | {
|
|
125
|
+
readonly dark: Value;
|
|
126
|
+
readonly light: Value;
|
|
127
|
+
} | Conditions;
|
|
128
|
+
/** Ordered conditional values with an unconditional fallback. */
|
|
129
|
+
export type Conditions = {
|
|
130
|
+
readonly default: Value;
|
|
131
|
+
readonly [query: `@media ${string}`]: Value;
|
|
102
132
|
};
|
|
103
133
|
export {};
|
|
104
134
|
//# sourceMappingURL=Token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/internal/Token.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/internal/Token.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Token.js
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carries portable theme references and enforces their property domains.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import * as Binding from './Binding.js';
|
|
1
6
|
import * as Literal from './Literal.js';
|
|
7
|
+
import * as VariableData from './VariableSets.js';
|
|
2
8
|
/** Checks a reference's property domain. */
|
|
3
9
|
export function accepts(group, property) {
|
|
10
|
+
if (property.startsWith('--'))
|
|
11
|
+
return true;
|
|
12
|
+
if (group === 'number' || group === 'string')
|
|
13
|
+
return false;
|
|
4
14
|
if (group === 'color')
|
|
5
15
|
return Literal.rule(property)?.kind === 'color';
|
|
6
16
|
if (group === 'borderColor')
|
|
7
17
|
return /^border.*Color$/.test(property);
|
|
18
|
+
if (group === 'borderWidth')
|
|
19
|
+
return /^border(?:Block|Inline)?(?:Start|End|Top|Right|Bottom|Left)?Width$/.test(property);
|
|
8
20
|
if (group === 'borderRadius')
|
|
9
21
|
return /^border.*Radius$/.test(property);
|
|
10
22
|
if (group === 'textColor')
|
|
@@ -44,8 +56,46 @@ export function accepts(group, property) {
|
|
|
44
56
|
].includes(property));
|
|
45
57
|
return group === property;
|
|
46
58
|
}
|
|
59
|
+
/** Checks explicit variable values independently of shorthand category mappings. */
|
|
60
|
+
export function acceptsReference(reference, property) {
|
|
61
|
+
if (!reference.contract.variableSet)
|
|
62
|
+
return accepts(reference.group, property);
|
|
63
|
+
if (property.startsWith('--'))
|
|
64
|
+
return true;
|
|
65
|
+
function check(value) {
|
|
66
|
+
if (is(value))
|
|
67
|
+
return acceptsReference(value, property);
|
|
68
|
+
if (typeof value === 'object')
|
|
69
|
+
return Object.values(value).every(check);
|
|
70
|
+
if (typeof value === 'number') {
|
|
71
|
+
const rule = Literal.rule(property);
|
|
72
|
+
if (rule?.kind === 'number')
|
|
73
|
+
return (value >= rule.min &&
|
|
74
|
+
value <= rule.max &&
|
|
75
|
+
(!rule.integer || Number.isInteger(value)));
|
|
76
|
+
return value === 0 && Binding.accepts('length', property);
|
|
77
|
+
}
|
|
78
|
+
if (reference.group === 'color')
|
|
79
|
+
return Binding.accepts('color', property);
|
|
80
|
+
if (reference.group === 'spacing')
|
|
81
|
+
return ((Literal.rule(property)?.kind === 'compound' &&
|
|
82
|
+
accepts('spacing', property)) ||
|
|
83
|
+
Binding.accepts(value.endsWith('%')
|
|
84
|
+
? value.startsWith('-')
|
|
85
|
+
? 'signedPercentage'
|
|
86
|
+
: 'percentage'
|
|
87
|
+
: value.startsWith('-')
|
|
88
|
+
? 'signedLength'
|
|
89
|
+
: 'length', property));
|
|
90
|
+
return (Literal.isLiteral(property, value) ||
|
|
91
|
+
Literal.rule(property)?.kind === 'compound');
|
|
92
|
+
}
|
|
93
|
+
return check(reference.value);
|
|
94
|
+
}
|
|
47
95
|
/** Rebinds validated scalar references to a explicitly owned contract identity. */
|
|
48
96
|
export function bind(original, contract) {
|
|
97
|
+
const metadata = original[definition];
|
|
98
|
+
const values = VariableData.rebind(metadata, contract);
|
|
49
99
|
function rebind(tree) {
|
|
50
100
|
return Object.freeze(Object.fromEntries(Object.entries(tree).map(([key, value]) => [
|
|
51
101
|
key,
|
|
@@ -54,7 +104,7 @@ export function bind(original, contract) {
|
|
|
54
104
|
contract,
|
|
55
105
|
group: value.group,
|
|
56
106
|
path: value.path,
|
|
57
|
-
value: value.
|
|
107
|
+
value: values[value.path],
|
|
58
108
|
})
|
|
59
109
|
: rebind(value),
|
|
60
110
|
])));
|
|
@@ -68,7 +118,7 @@ export function bind(original, contract) {
|
|
|
68
118
|
tokens,
|
|
69
119
|
variants: original.variants,
|
|
70
120
|
vars: variables(tokens),
|
|
71
|
-
}, definition, { value: Object.freeze({ ...
|
|
121
|
+
}, definition, { value: Object.freeze({ ...metadata, contract, values }) }));
|
|
72
122
|
}
|
|
73
123
|
/** Retains full scopes when styles may have been compiled in another graph. */
|
|
74
124
|
export const complete = Symbol('zyzz.contract.complete');
|
|
@@ -120,6 +170,8 @@ export function is(value) {
|
|
|
120
170
|
const fields = Object.getOwnPropertyDescriptors(value);
|
|
121
171
|
return ['contract', 'group', 'path', 'value'].every((key) => fields[key] && 'value' in fields[key]);
|
|
122
172
|
}
|
|
173
|
+
/** Literal domain carried by explicit variable references during type checking. */
|
|
174
|
+
export const scalar = Symbol('zyzz.variable.scalar');
|
|
123
175
|
const reference = Symbol('zyzz.token');
|
|
124
176
|
/** Resolves shorthand tokens with literal precedence, with specific colors first. */
|
|
125
177
|
export function resolve(value, options) {
|
|
@@ -130,11 +182,11 @@ export function resolve(value, options) {
|
|
|
130
182
|
?.value;
|
|
131
183
|
if (!data)
|
|
132
184
|
throw new Error('Expected a theme definition.');
|
|
133
|
-
|
|
134
|
-
for (const group of [
|
|
185
|
+
const groups = [
|
|
135
186
|
'backgroundColor',
|
|
136
187
|
'borderColor',
|
|
137
188
|
'borderRadius',
|
|
189
|
+
'borderWidth',
|
|
138
190
|
'margin',
|
|
139
191
|
'padding',
|
|
140
192
|
'spacing',
|
|
@@ -145,7 +197,39 @@ export function resolve(value, options) {
|
|
|
145
197
|
'lineHeight',
|
|
146
198
|
'textColor',
|
|
147
199
|
'color',
|
|
148
|
-
]
|
|
200
|
+
];
|
|
201
|
+
if (data.contract.variableSet) {
|
|
202
|
+
for (const [path, entry] of Object.entries(data.values).sort(([left], [right]) => groups.indexOf(left.split('.')[0]) -
|
|
203
|
+
groups.indexOf(right.split('.')[0]))) {
|
|
204
|
+
const [category, ...parts] = path.split('.');
|
|
205
|
+
const mappings = data.contract.mappings;
|
|
206
|
+
const mapped = mappings === false ? undefined : mappings?.[category];
|
|
207
|
+
if (mappings === false
|
|
208
|
+
? path !== String(value)
|
|
209
|
+
: parts.join('.') !== String(value) ||
|
|
210
|
+
!(mapped
|
|
211
|
+
? mapped.includes(options.property)
|
|
212
|
+
: accepts(category, options.property)))
|
|
213
|
+
continue;
|
|
214
|
+
return create({
|
|
215
|
+
contract: data.contract,
|
|
216
|
+
group: (() => {
|
|
217
|
+
let leaf = Object.getOwnPropertyDescriptor(options.theme, 'tokens')?.value;
|
|
218
|
+
for (const key of path.split('.'))
|
|
219
|
+
leaf =
|
|
220
|
+
leaf && typeof leaf === 'object'
|
|
221
|
+
? Object.getOwnPropertyDescriptor(leaf, key)?.value
|
|
222
|
+
: undefined;
|
|
223
|
+
return is(leaf) ? leaf.group : category;
|
|
224
|
+
})(),
|
|
225
|
+
path,
|
|
226
|
+
value: entry,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return value;
|
|
230
|
+
}
|
|
231
|
+
// Specific groups precede shared colors regardless of authored group order.
|
|
232
|
+
for (const group of groups) {
|
|
149
233
|
if (!accepts(group, options.property))
|
|
150
234
|
continue;
|
|
151
235
|
const path = `${group}.${value}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Token.js","sourceRoot":"","sources":["../../src/internal/Token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Token.js","sourceRoot":"","sources":["../../src/internal/Token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Describes nested typography sets and their property-aware token paths. @module */
|
|
2
|
+
import type * as Literal from './Literal.js';
|
|
3
|
+
/** Responsive query blocks accepted within a typography set. */
|
|
4
|
+
export type Condition = `@media ${string}` | `@container ${string}`;
|
|
5
|
+
/** Recognizes responsive blocks without accepting selectors or unrelated at-rules. */
|
|
6
|
+
export declare function condition(key: string): key is Condition;
|
|
7
|
+
/** Expands one named set into portable field references and ordered query blocks. */
|
|
8
|
+
export declare function entries(theme: object | undefined, name: unknown, explicit?: ReadonlySet<string>, important?: boolean): readonly (readonly [string, unknown])[];
|
|
9
|
+
/** Lists expanded fields and queries in source-map traversal order. */
|
|
10
|
+
export declare function keys(theme: object | undefined, name: unknown, explicit: ReadonlySet<string>): readonly string[];
|
|
11
|
+
/** Names of sets containing at least one typography declaration. */
|
|
12
|
+
export type Names<tokens> = tokens extends {
|
|
13
|
+
typography: infer tree;
|
|
14
|
+
} ? Paths<tree> : never;
|
|
15
|
+
type Paths<tree> = string extends keyof tree ? string : {
|
|
16
|
+
[key in Exclude<Extract<keyof tree, string | number>, Property | Condition>]: (Extract<keyof tree[key], Property | Condition> extends never ? never : `${key}`) | `${key}.${Paths<tree[key]>}`;
|
|
17
|
+
}[Exclude<Extract<keyof tree, string | number>, Property | Condition>];
|
|
18
|
+
/** Scalar properties applied by a typography set. */
|
|
19
|
+
export declare const properties: readonly ['fontFamily', 'fontSize', 'fontWeight', 'letterSpacing', 'lineHeight'];
|
|
20
|
+
/** Property domain retained by each field in a set. */
|
|
21
|
+
export type Property = (typeof properties)[number];
|
|
22
|
+
/** A set may supply any of the five typography properties. */
|
|
23
|
+
export type Set = Pick<Literal.Properties, Property> & {
|
|
24
|
+
readonly [key in Condition]?: Set;
|
|
25
|
+
};
|
|
26
|
+
/** Nested names may contain sets and additional named variants. */
|
|
27
|
+
export type Sets = {
|
|
28
|
+
readonly [name: string]: Set | Sets;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=Typography.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Typography.d.ts","sourceRoot":"","sources":["../../src/internal/Typography.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAA;AAG5C,gEAAgE;AAChE,MAAM,MAAM,SAAS,GAAG,UAAU,MAAM,EAAE,GAAG,cAAc,MAAM,EAAE,CAAA;AAEnE,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,SAAS,CAEvD;AAED,qFAAqF;AACrF,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAa,EACzC,SAAS,UAAQ,GAChB,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAiCzC;AAED,uEAAuE;AACvE,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,SAAS,MAAM,EAAE,CASnB;AAED,oEAAoE;AACpE,MAAM,MAAM,KAAK,CAAC,MAAM,IAAI,MAAM,SAAS;IAAE,UAAU,EAAE,MAAM,IAAI,CAAA;CAAE,GACjE,KAAK,CAAC,IAAI,CAAC,GACX,KAAK,CAAA;AAET,KAAK,KAAK,CAAC,IAAI,IAAI,MAAM,SAAS,MAAM,IAAI,GACxC,MAAM,GACN;KACG,GAAG,IAAI,OAAO,CACb,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EACpC,QAAQ,GAAG,SAAS,CACrB,GACG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,SAAS,KAAK,GACzD,KAAK,GACL,GAAG,GAAG,EAAE,CAAC,GACb,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;CACjC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAA;AAE1E,qDAAqD;AACrD,eAAO,MAAM,UAAU,YACrB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,YAAY,CACJ,CAAA;AAEV,uDAAuD;AACvD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,8DAA8D;AAC9D,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;IACrD,QAAQ,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG;CAClC,CAAA;AAED,mEAAmE;AACnE,MAAM,MAAM,IAAI,GAAG;IAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as Token from './Token.js';
|
|
2
|
+
/** Recognizes responsive blocks without accepting selectors or unrelated at-rules. */
|
|
3
|
+
export function condition(key) {
|
|
4
|
+
return /^@(media|container)\s+\S/.test(key);
|
|
5
|
+
}
|
|
6
|
+
/** Expands one named set into portable field references and ordered query blocks. */
|
|
7
|
+
export function entries(theme, name, explicit = new Set(), important = false) {
|
|
8
|
+
if (!theme ||
|
|
9
|
+
typeof name !== 'string' ||
|
|
10
|
+
name.split('.').some((part) => part.startsWith('@')))
|
|
11
|
+
return [];
|
|
12
|
+
let tree = Object.getOwnPropertyDescriptor(theme, 'tokens')?.value;
|
|
13
|
+
for (const part of ['typography', ...name.split('.')]) {
|
|
14
|
+
if (!tree || typeof tree !== 'object')
|
|
15
|
+
return [];
|
|
16
|
+
tree = Object.getOwnPropertyDescriptor(tree, part)?.value;
|
|
17
|
+
}
|
|
18
|
+
function expand(value) {
|
|
19
|
+
if (!value || typeof value !== 'object')
|
|
20
|
+
return [];
|
|
21
|
+
return Object.entries(value).flatMap(([key, child]) => {
|
|
22
|
+
if (properties.includes(key) &&
|
|
23
|
+
Token.is(child) &&
|
|
24
|
+
!explicit.has(key))
|
|
25
|
+
return [
|
|
26
|
+
[key, important ? Token.compose([child, ' !important']) : child],
|
|
27
|
+
];
|
|
28
|
+
if (condition(key)) {
|
|
29
|
+
const nested = expand(child);
|
|
30
|
+
return nested.length ? [[key, Object.fromEntries(nested)]] : [];
|
|
31
|
+
}
|
|
32
|
+
return [];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return expand(tree);
|
|
36
|
+
}
|
|
37
|
+
/** Lists expanded fields and queries in source-map traversal order. */
|
|
38
|
+
export function keys(theme, name, explicit) {
|
|
39
|
+
function collect(values) {
|
|
40
|
+
return values.flatMap(([key, value]) => condition(key)
|
|
41
|
+
? [key, ...collect(Object.entries(value))]
|
|
42
|
+
: [key]);
|
|
43
|
+
}
|
|
44
|
+
return collect(entries(theme, name, explicit));
|
|
45
|
+
}
|
|
46
|
+
/** Scalar properties applied by a typography set. */
|
|
47
|
+
export const properties = [
|
|
48
|
+
'fontFamily',
|
|
49
|
+
'fontSize',
|
|
50
|
+
'fontWeight',
|
|
51
|
+
'letterSpacing',
|
|
52
|
+
'lineHeight',
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=Typography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Typography.js","sourceRoot":"","sources":["../../src/internal/Typography.ts"],"names":[],"mappings":"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"}
|