@arbor-css/core 0.0.36 → 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 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
@@ -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,3 @@
1
+ import { ArborPreset } from '@arbor-css/preset/config';
2
+ export declare function resolveTokenReferences(preset: ArborPreset<any, any>, tokenName: string, colorScheme?: string): string | undefined;
3
+ //# sourceMappingURL=resolveTokenReferences.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resolveTokenReferences.test.d.ts.map
@@ -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.36",
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/globals": "0.0.36",
45
- "@arbor-css/tokens": "0.0.36",
46
- "@arbor-css/colors": "0.0.36",
47
- "@arbor-css/modes": "0.0.36",
48
- "@arbor-css/typography": "0.0.36",
49
- "@arbor-css/preset": "0.0.36",
50
- "@arbor-css/primitives": "0.0.36",
51
- "@arbor-css/spacing": "0.0.36",
52
- "@arbor-css/util": "0.0.36",
53
- "@arbor-css/shadows": "0.0.36"
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",