@arbor-css/core 0.0.35 → 0.0.37
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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/util/resolveTokenReferences.d.ts +3 -0
- package/dist/util/resolveTokenReferences.d.ts.map +1 -0
- package/dist/util/resolveTokenReferences.js +60 -0
- package/dist/util/resolveTokenReferences.js.map +1 -0
- package/dist/util/resolveTokenReferences.test.d.ts +2 -0
- package/dist/util/resolveTokenReferences.test.d.ts.map +1 -0
- package/dist/util/resolveTokenReferences.test.js +23 -0
- package/dist/util/resolveTokenReferences.test.js.map +1 -0
- package/package.json +11 -11
package/dist/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export { createArborPreset, type CreateArborPresetConfig, } from '@arbor-css/pre
|
|
|
4
4
|
export * from '@arbor-css/preset/config';
|
|
5
5
|
export * from '@arbor-css/tokens';
|
|
6
6
|
export { generateStylesheet } from './stylesheet/generateStylesheet.js';
|
|
7
|
+
export { resolveTokenReferences } from './util/resolveTokenReferences.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,IAAI,gBAAgB,GACrC,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACN,iBAAiB,EACjB,KAAK,uBAAuB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,IAAI,gBAAgB,GACrC,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACN,iBAAiB,EACjB,KAAK,uBAAuB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,4 +4,5 @@ export { createArborPreset, } from '@arbor-css/preset';
|
|
|
4
4
|
export * from '@arbor-css/preset/config';
|
|
5
5
|
export * from '@arbor-css/tokens';
|
|
6
6
|
export { generateStylesheet } from './stylesheet/generateStylesheet.js';
|
|
7
|
+
export { resolveTokenReferences } from './util/resolveTokenReferences.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GAGd,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACN,iBAAiB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GAGd,MAAM,oBAAoB,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACN,iBAAiB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTokenReferences.d.ts","sourceRoot":"","sources":["../../src/util/resolveTokenReferences.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAgB,GAC3B,MAAM,GAAG,SAAS,CAqDpB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isTrackedValue } from '@arbor-css/modes';
|
|
2
|
+
import { isToken } from '@arbor-css/tokens';
|
|
3
|
+
import { flattenAndApplyTokenValues } from './flattenAndApplyTokenValues.js';
|
|
4
|
+
export function resolveTokenReferences(preset, tokenName, colorScheme = 'light') {
|
|
5
|
+
const flat = flattenAndApplyTokenValues({
|
|
6
|
+
colors: preset.primitives.$tokens.colors,
|
|
7
|
+
shadows: preset.primitives.$tokens.shadows,
|
|
8
|
+
spacing: preset.primitives.$tokens.spacing,
|
|
9
|
+
typography: preset.primitives.$tokens.typography,
|
|
10
|
+
mode: preset.modes.base.schema.$tokens,
|
|
11
|
+
}, {
|
|
12
|
+
colors: preset.primitives.colors[colorScheme].colors,
|
|
13
|
+
shadows: preset.primitives.shadows.levels,
|
|
14
|
+
spacing: preset.primitives.spacing.levels,
|
|
15
|
+
typography: preset.primitives.typography.levels,
|
|
16
|
+
mode: preset.modes.base.values,
|
|
17
|
+
});
|
|
18
|
+
let current = tokenName;
|
|
19
|
+
const visited = new Set();
|
|
20
|
+
while (current) {
|
|
21
|
+
if (visited.has(current)) {
|
|
22
|
+
// circular reference
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
visited.add(current);
|
|
26
|
+
const value = flat[current];
|
|
27
|
+
if (!value) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
if (isToken(value)) {
|
|
31
|
+
current = value.name;
|
|
32
|
+
}
|
|
33
|
+
else if (isTrackedValue(value)) {
|
|
34
|
+
// a tracked value could be just a plain var(...) ref,
|
|
35
|
+
// in which case we can keep going
|
|
36
|
+
const propName = extractPropertyRefName(value.value);
|
|
37
|
+
if (!propName) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
current = propName;
|
|
41
|
+
}
|
|
42
|
+
else if (typeof value === 'string') {
|
|
43
|
+
// if we got a string, check if it's a var(...) ref.
|
|
44
|
+
const propName = extractPropertyRefName(value);
|
|
45
|
+
if (!propName) {
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
current = propName;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// not sure what this is.
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function extractPropertyRefName(value) {
|
|
57
|
+
const match = /^var\((--[^,)\]]+)\)$/u.exec(value);
|
|
58
|
+
return match ? match[1] : null;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=resolveTokenReferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTokenReferences.js","sourceRoot":"","sources":["../../src/util/resolveTokenReferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,UAAU,sBAAsB,CACrC,MAA6B,EAC7B,SAAiB,EACjB,cAAsB,OAAO;IAE7B,MAAM,IAAI,GAAG,0BAA0B,CACtC;QACC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM;QACxC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;QAC1C,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;QAC1C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;QAChD,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;KACtC,EACD;QACC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM;QACpD,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM;QACzC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM;QAC/C,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;KAC9B,CACD,CAAC;IAEF,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,OAAO,OAAO,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,qBAAqB;YACrB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,sDAAsD;YACtD,kCAAkC;YAClC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO,GAAG,QAAQ,CAAC;QACpB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,oDAAoD;YACpD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC;YACd,CAAC;YACD,OAAO,GAAG,QAAQ,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,yBAAyB;YACzB,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTokenReferences.test.d.ts","sourceRoot":"","sources":["../../src/util/resolveTokenReferences.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createArborPreset } from '@arbor-css/preset';
|
|
2
|
+
import { expect, it } from 'vitest';
|
|
3
|
+
import { resolveTokenReferences } from './resolveTokenReferences.js';
|
|
4
|
+
const preset = createArborPreset({
|
|
5
|
+
colors: {
|
|
6
|
+
mainColor: 'red',
|
|
7
|
+
ranges: {
|
|
8
|
+
red: {
|
|
9
|
+
hue: 0,
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
it('resolves a indirect token values', () => {
|
|
15
|
+
expect(resolveTokenReferences(preset, preset.primitives.$tokens.colors.red.$root.name)).toBe('oklch(90% 0.15000000000000002 0)');
|
|
16
|
+
});
|
|
17
|
+
it('resolves direct token values', () => {
|
|
18
|
+
expect(resolveTokenReferences(preset, preset.primitives.$tokens.spacing.$root.name)).toBe('calc(calc(8px / var(--🧑-base-font-size)) * 1rem)');
|
|
19
|
+
});
|
|
20
|
+
it('resolves mode token values', () => {
|
|
21
|
+
expect(resolveTokenReferences(preset, preset.modes.base.schema.$tokens.colors.main.$root.name)).toBe('oklch(90% 0.15000000000000002 0)');
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=resolveTokenReferences.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTokenReferences.test.js","sourceRoot":"","sources":["../../src/util/resolveTokenReferences.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,GAAG,iBAAiB,CAAC;IAChC,MAAM,EAAE;QACP,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACP,GAAG,EAAE;gBACJ,GAAG,EAAE,CAAC;aACN;SACD;KACD;CACD,CAAC,CAAC;AAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC3C,MAAM,CACL,sBAAsB,CACrB,MAAM,EACN,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAC/C,CACD,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACvC,MAAM,CACL,sBAAsB,CACrB,MAAM,EACN,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC5C,CACD,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACrC,MAAM,CACL,sBAAsB,CACrB,MAAM,EACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACvD,CACD,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbor-css/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -41,16 +41,16 @@
|
|
|
41
41
|
"jiti": "^2.6.1",
|
|
42
42
|
"lil-gui": "^0.21.0",
|
|
43
43
|
"yargs": "^18.0.0",
|
|
44
|
-
"@arbor-css/preset": "0.0.
|
|
45
|
-
"@arbor-css/tokens": "0.0.
|
|
46
|
-
"@arbor-css/
|
|
47
|
-
"@arbor-css/
|
|
48
|
-
"@arbor-css/modes": "0.0.
|
|
49
|
-
"@arbor-css/typography": "0.0.
|
|
50
|
-
"@arbor-css/primitives": "0.0.
|
|
51
|
-
"@arbor-css/spacing": "0.0.
|
|
52
|
-
"@arbor-css/
|
|
53
|
-
"@arbor-css/
|
|
44
|
+
"@arbor-css/preset": "0.0.37",
|
|
45
|
+
"@arbor-css/tokens": "0.0.37",
|
|
46
|
+
"@arbor-css/globals": "0.0.37",
|
|
47
|
+
"@arbor-css/colors": "0.0.37",
|
|
48
|
+
"@arbor-css/modes": "0.0.37",
|
|
49
|
+
"@arbor-css/typography": "0.0.37",
|
|
50
|
+
"@arbor-css/primitives": "0.0.37",
|
|
51
|
+
"@arbor-css/spacing": "0.0.37",
|
|
52
|
+
"@arbor-css/shadows": "0.0.37",
|
|
53
|
+
"@arbor-css/util": "0.0.37"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
56
|
"build": "tsc",
|