@arbor-css/core 0.0.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.
Files changed (149) hide show
  1. package/dist/arborPreset.d.ts +344 -0
  2. package/dist/arborPreset.d.ts.map +1 -0
  3. package/dist/arborPreset.js +198 -0
  4. package/dist/arborPreset.js.map +1 -0
  5. package/dist/cli/run.d.ts +3 -0
  6. package/dist/cli/run.d.ts.map +1 -0
  7. package/dist/cli/run.js +42 -0
  8. package/dist/cli/run.js.map +1 -0
  9. package/dist/config.d.ts +15 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +4 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/index.d.ts +13 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +13 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/primitives/labelProps.d.ts +1 -0
  18. package/dist/primitives/labelProps.d.ts.map +1 -0
  19. package/dist/primitives/labelProps.js +2 -0
  20. package/dist/primitives/labelProps.js.map +1 -0
  21. package/dist/primitives/localProps.d.ts +1 -0
  22. package/dist/primitives/localProps.d.ts.map +1 -0
  23. package/dist/primitives/localProps.js +2 -0
  24. package/dist/primitives/localProps.js.map +1 -0
  25. package/dist/primitives/primitives.d.ts +46 -0
  26. package/dist/primitives/primitives.d.ts.map +1 -0
  27. package/dist/primitives/primitives.js +75 -0
  28. package/dist/primitives/primitives.js.map +1 -0
  29. package/dist/primitives/systemProps.d.ts +329 -0
  30. package/dist/primitives/systemProps.d.ts.map +1 -0
  31. package/dist/primitives/systemProps.js +45 -0
  32. package/dist/primitives/systemProps.js.map +1 -0
  33. package/dist/runtime/components/BaseElement.d.ts +6 -0
  34. package/dist/runtime/components/BaseElement.d.ts.map +1 -0
  35. package/dist/runtime/components/BaseElement.js +10 -0
  36. package/dist/runtime/components/BaseElement.js.map +1 -0
  37. package/dist/runtime/components/ColorRange.d.ts +2 -0
  38. package/dist/runtime/components/ColorRange.d.ts.map +1 -0
  39. package/dist/runtime/components/ColorRange.js +52 -0
  40. package/dist/runtime/components/ColorRange.js.map +1 -0
  41. package/dist/runtime/components/GlobalsEditor.d.ts +2 -0
  42. package/dist/runtime/components/GlobalsEditor.d.ts.map +1 -0
  43. package/dist/runtime/components/GlobalsEditor.js +63 -0
  44. package/dist/runtime/components/GlobalsEditor.js.map +1 -0
  45. package/dist/runtime/components/ModeSelector.d.ts +2 -0
  46. package/dist/runtime/components/ModeSelector.d.ts.map +1 -0
  47. package/dist/runtime/components/ModeSelector.js +34 -0
  48. package/dist/runtime/components/ModeSelector.js.map +1 -0
  49. package/dist/runtime/components/ModeTokenValues.d.ts +2 -0
  50. package/dist/runtime/components/ModeTokenValues.d.ts.map +1 -0
  51. package/dist/runtime/components/ModeTokenValues.js +2 -0
  52. package/dist/runtime/components/ModeTokenValues.js.map +1 -0
  53. package/dist/runtime/components/PrimitiveTokenValues.d.ts +2 -0
  54. package/dist/runtime/components/PrimitiveTokenValues.d.ts.map +1 -0
  55. package/dist/runtime/components/PrimitiveTokenValues.js +82 -0
  56. package/dist/runtime/components/PrimitiveTokenValues.js.map +1 -0
  57. package/dist/runtime/components/SchemeSelector.d.ts +2 -0
  58. package/dist/runtime/components/SchemeSelector.d.ts.map +1 -0
  59. package/dist/runtime/components/SchemeSelector.js +34 -0
  60. package/dist/runtime/components/SchemeSelector.js.map +1 -0
  61. package/dist/runtime/components/Shadows.d.ts +2 -0
  62. package/dist/runtime/components/Shadows.d.ts.map +1 -0
  63. package/dist/runtime/components/Shadows.js +27 -0
  64. package/dist/runtime/components/Shadows.js.map +1 -0
  65. package/dist/runtime/components/Spacing.d.ts +2 -0
  66. package/dist/runtime/components/Spacing.d.ts.map +1 -0
  67. package/dist/runtime/components/Spacing.js +27 -0
  68. package/dist/runtime/components/Spacing.js.map +1 -0
  69. package/dist/runtime/components/SystemDemo.d.ts +2 -0
  70. package/dist/runtime/components/SystemDemo.d.ts.map +1 -0
  71. package/dist/runtime/components/SystemDemo.js +45 -0
  72. package/dist/runtime/components/SystemDemo.js.map +1 -0
  73. package/dist/runtime/components/TokenColorValuePreview.d.ts +2 -0
  74. package/dist/runtime/components/TokenColorValuePreview.d.ts.map +1 -0
  75. package/dist/runtime/components/TokenColorValuePreview.js +12 -0
  76. package/dist/runtime/components/TokenColorValuePreview.js.map +1 -0
  77. package/dist/runtime/components/TokenFontValuesPreview.d.ts +2 -0
  78. package/dist/runtime/components/TokenFontValuesPreview.d.ts.map +1 -0
  79. package/dist/runtime/components/TokenFontValuesPreview.js +14 -0
  80. package/dist/runtime/components/TokenFontValuesPreview.js.map +1 -0
  81. package/dist/runtime/components/TokenShadowValuePreview.d.ts +2 -0
  82. package/dist/runtime/components/TokenShadowValuePreview.d.ts.map +1 -0
  83. package/dist/runtime/components/TokenShadowValuePreview.js +14 -0
  84. package/dist/runtime/components/TokenShadowValuePreview.js.map +1 -0
  85. package/dist/runtime/components/TokenSizeValuePreview.d.ts +2 -0
  86. package/dist/runtime/components/TokenSizeValuePreview.d.ts.map +1 -0
  87. package/dist/runtime/components/TokenSizeValuePreview.js +12 -0
  88. package/dist/runtime/components/TokenSizeValuePreview.js.map +1 -0
  89. package/dist/runtime/components/TokenValuePreview.d.ts +2 -0
  90. package/dist/runtime/components/TokenValuePreview.d.ts.map +1 -0
  91. package/dist/runtime/components/TokenValuePreview.js +25 -0
  92. package/dist/runtime/components/TokenValuePreview.js.map +1 -0
  93. package/dist/runtime/components/TokenValues.d.ts +2 -0
  94. package/dist/runtime/components/TokenValues.d.ts.map +1 -0
  95. package/dist/runtime/components/TokenValues.js +105 -0
  96. package/dist/runtime/components/TokenValues.js.map +1 -0
  97. package/dist/runtime/components/Typography.d.ts +2 -0
  98. package/dist/runtime/components/Typography.d.ts.map +1 -0
  99. package/dist/runtime/components/Typography.js +30 -0
  100. package/dist/runtime/components/Typography.js.map +1 -0
  101. package/dist/runtime/components/index.d.ts +11 -0
  102. package/dist/runtime/components/index.d.ts.map +1 -0
  103. package/dist/runtime/components/index.js +11 -0
  104. package/dist/runtime/components/index.js.map +1 -0
  105. package/dist/runtime/index.d.ts +3 -0
  106. package/dist/runtime/index.d.ts.map +1 -0
  107. package/dist/runtime/index.js +3 -0
  108. package/dist/runtime/index.js.map +1 -0
  109. package/dist/runtime/readProperties.d.ts +3 -0
  110. package/dist/runtime/readProperties.d.ts.map +1 -0
  111. package/dist/runtime/readProperties.js +8 -0
  112. package/dist/runtime/readProperties.js.map +1 -0
  113. package/dist/runtime/registration.d.ts +5 -0
  114. package/dist/runtime/registration.d.ts.map +1 -0
  115. package/dist/runtime/registration.js +24 -0
  116. package/dist/runtime/registration.js.map +1 -0
  117. package/dist/runtime/tokenGroups.d.ts +24 -0
  118. package/dist/runtime/tokenGroups.d.ts.map +1 -0
  119. package/dist/runtime/tokenGroups.js +37 -0
  120. package/dist/runtime/tokenGroups.js.map +1 -0
  121. package/dist/stylesheet/generateStylesheet.d.ts +10 -0
  122. package/dist/stylesheet/generateStylesheet.d.ts.map +1 -0
  123. package/dist/stylesheet/generateStylesheet.js +109 -0
  124. package/dist/stylesheet/generateStylesheet.js.map +1 -0
  125. package/dist/util/convertStructure.d.ts +8 -0
  126. package/dist/util/convertStructure.d.ts.map +1 -0
  127. package/dist/util/convertStructure.js +30 -0
  128. package/dist/util/convertStructure.js.map +1 -0
  129. package/dist/util/flattenAndApplyTokenValues.d.ts +5 -0
  130. package/dist/util/flattenAndApplyTokenValues.d.ts.map +1 -0
  131. package/dist/util/flattenAndApplyTokenValues.js +32 -0
  132. package/dist/util/flattenAndApplyTokenValues.js.map +1 -0
  133. package/dist/util/formatObjectToCss.d.ts +2 -0
  134. package/dist/util/formatObjectToCss.d.ts.map +1 -0
  135. package/dist/util/formatObjectToCss.js +6 -0
  136. package/dist/util/formatObjectToCss.js.map +1 -0
  137. package/dist/util/printTokens.d.ts +5 -0
  138. package/dist/util/printTokens.d.ts.map +1 -0
  139. package/dist/util/printTokens.js +6 -0
  140. package/dist/util/printTokens.js.map +1 -0
  141. package/dist/util/tokenifyColors.d.ts +6 -0
  142. package/dist/util/tokenifyColors.d.ts.map +1 -0
  143. package/dist/util/tokenifyColors.js +10 -0
  144. package/dist/util/tokenifyColors.js.map +1 -0
  145. package/dist/util/tokenifyColors.test.d.ts +2 -0
  146. package/dist/util/tokenifyColors.test.d.ts.map +1 -0
  147. package/dist/util/tokenifyColors.test.js +25 -0
  148. package/dist/util/tokenifyColors.test.js.map +1 -0
  149. package/package.json +61 -0
@@ -0,0 +1,105 @@
1
+ import { groupTokens } from '../tokenGroups.js';
2
+ import { ArborElement } from './BaseElement.js';
3
+ class TokenValues extends ArborElement {
4
+ constructor() {
5
+ super();
6
+ const config = this.config;
7
+ const schemaPath = this.getAttribute('schema-path');
8
+ const schemaPathParts = schemaPath ? schemaPath.split('.') : [];
9
+ const tokenSchema = schemaPathParts.reduce((acc, part) => acc?.[part], config);
10
+ const tokens = groupTokens(tokenSchema);
11
+ this.shadowRoot.innerHTML = `
12
+ <div class="root">
13
+ ${Object.entries(tokens.simple)
14
+ .map(([purpose, tokens]) => {
15
+ // subgroup by group if exists
16
+ const subgroups = tokens.reduce((groups, token) => {
17
+ const group = token.group ?? '';
18
+ if (!groups[group]) {
19
+ groups[group] = [];
20
+ }
21
+ groups[group].push(token);
22
+ return groups;
23
+ }, {});
24
+ return `<div class="token-group">
25
+ <h3>${purpose}</h3>
26
+ <div class="token-values">
27
+ ${Object.entries(subgroups)
28
+ .map(([group, tokens]) => {
29
+ return `
30
+ <div class="token-subgroup">
31
+ <h4>${group}</h4>
32
+ ${tokens
33
+ .map((token) => {
34
+ return `
35
+ <div class="token-value">
36
+ <strong>${token.name}</strong>
37
+ <arbor-token-value-preview value="${token.var}" purpose="${token.purpose}"></arbor-token-value-preview>
38
+ </div>`;
39
+ })
40
+ .join('\n')}
41
+ </div>`;
42
+ })
43
+ .join('\n')}
44
+ </div>
45
+ </div>`;
46
+ })
47
+ .join('\n')}
48
+ <div class="token-group">
49
+ <h3>Typography</h3>
50
+ <div class="token-values">
51
+ ${Object.entries(tokens.typography)
52
+ .map(([level, { size, weight, lineHeight }]) => {
53
+ const sizeVar = size ? size.var : 'unknown';
54
+ const weightVar = weight ? weight.var : 'unknown';
55
+ const lineHeightVar = lineHeight ? lineHeight.var : 'unknown';
56
+ return `
57
+ <div class="token-value">
58
+ <div>
59
+ <strong>${level}</strong>
60
+ <div>size: ${sizeVar}</div>
61
+ <div>weight: ${weightVar}</div>
62
+ <div>line-height: ${lineHeightVar}</div>
63
+ </div>
64
+ <arbor-token-font-values-preview size="${sizeVar}" weight="${weightVar}" line-height="${lineHeightVar}"></arbor-token-font-values-preview>
65
+ </div>
66
+ `;
67
+ })
68
+ .join('\n')}
69
+ </div>
70
+ </div>
71
+ </div>
72
+ <style>
73
+ .root {
74
+ display: flex;
75
+ flex-direction: column;
76
+ gap: 0.25rem;
77
+ }
78
+ .token-group {
79
+ margin-bottom: 2rem;
80
+ background-color: white;
81
+ border: 1px solid black;
82
+ padding: 0.25rem;
83
+ }
84
+ .token-subgroup {
85
+ margin-bottom: 1rem;
86
+ padding-left: 0.5rem;
87
+ }
88
+ .token-values {
89
+ display: grid;
90
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
91
+ gap: 0.125rem;
92
+ }
93
+ .token-value {
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-items: center;
97
+ justify-content: space-between;
98
+ padding: 0.2rem;
99
+ }
100
+ </style>
101
+ `;
102
+ }
103
+ }
104
+ customElements.define('arbor-token-values', TokenValues);
105
+ //# sourceMappingURL=TokenValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenValues.js","sourceRoot":"","sources":["../../../src/runtime/components/TokenValues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Typography.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Typography.d.ts","sourceRoot":"","sources":["../../../src/runtime/components/Typography.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { isToken } from '@arbor-css/tokens';
2
+ import { getConfig } from '../registration.js';
3
+ class Typography extends HTMLElement {
4
+ constructor() {
5
+ super();
6
+ const config = getConfig();
7
+ const typography = config.primitives.$tokens.typography;
8
+ if (isToken(typography)) {
9
+ throw new Error(`Typography is not a valid token range (it's an individual token)`);
10
+ }
11
+ this.attachShadow({ mode: 'open' }).innerHTML = `
12
+ <div>
13
+ ${Object.keys(typography)
14
+ .map((key) => {
15
+ const value = typography[key];
16
+ // we expect these values on typography tokens...
17
+ const { size, weight, lineHeight } = value;
18
+ if (!size || !weight || !lineHeight) {
19
+ throw new Error(`Typography level "${key}" is missing expected properties (size, weight, lineHeight)`);
20
+ }
21
+ console.log(value);
22
+ return `<div class="type-sample" style="font-size: ${size.var}; font-weight: ${weight.var}; line-height: ${lineHeight.var};">${key}: The quick brown fox jumps over the lazy dog.</div>`;
23
+ })
24
+ .join('\n')}
25
+ </div>
26
+ `;
27
+ }
28
+ }
29
+ customElements.define('arbor-typography', Typography);
30
+ //# sourceMappingURL=Typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Typography.js","sourceRoot":"","sources":["../../../src/runtime/components/Typography.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,UAAW,SAAQ,WAAW;IACnC;QACC,KAAK,EAAE,CAAC;QAER,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;QAExD,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACd,kEAAkE,CAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG;;MAE5C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;aACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,iDAAiD;YACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAY,CAAC;YAClD,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACd,qBAAqB,GAAG,6DAA6D,CACrF,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,8CAA8C,IAAI,CAAC,GAAG,kBAAkB,MAAM,CAAC,GAAG,kBAAkB,UAAU,CAAC,GAAG,MAAM,GAAG,sDAAsD,CAAC;QAC1L,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;;GAEb,CAAC;IACH,CAAC;CACD;AAED,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import './GlobalsEditor.js';
2
+ import './ModeSelector.js';
3
+ import './SchemeSelector.js';
4
+ import './SystemDemo.js';
5
+ import './TokenColorValuePreview.js';
6
+ import './TokenFontValuesPreview.js';
7
+ import './TokenShadowValuePreview.js';
8
+ import './TokenSizeValuePreview.js';
9
+ import './TokenValuePreview.js';
10
+ import './TokenValues.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAC5B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,iBAAiB,CAAC;AACzB,OAAO,6BAA6B,CAAC;AACrC,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import './GlobalsEditor.js';
2
+ import './ModeSelector.js';
3
+ import './SchemeSelector.js';
4
+ import './SystemDemo.js';
5
+ import './TokenColorValuePreview.js';
6
+ import './TokenFontValuesPreview.js';
7
+ import './TokenShadowValuePreview.js';
8
+ import './TokenSizeValuePreview.js';
9
+ import './TokenValuePreview.js';
10
+ import './TokenValues.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAC5B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,iBAAiB,CAAC;AACzB,OAAO,6BAA6B,CAAC;AACrC,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import './components/index.js';
2
+ export { connect } from './registration.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import './components/index.js';
2
+ export { connect } from './registration.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TokenSchema } from '@arbor-css/tokens';
2
+ export declare function readProperties(tokens: TokenSchema, target?: HTMLElement): Record<string, any>;
3
+ //# sourceMappingURL=readProperties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readProperties.d.ts","sourceRoot":"","sources":["../../src/runtime/readProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,cAAc,CAC7B,MAAM,EAAE,WAAW,EACnB,MAAM,cAA2B,GAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAIrB"}
@@ -0,0 +1,8 @@
1
+ import { isToken } from '@arbor-css/tokens';
2
+ import { convertStructure } from '../util/convertStructure.js';
3
+ export function readProperties(tokens, target = document.documentElement) {
4
+ return convertStructure(tokens, isToken, (token) => {
5
+ return getComputedStyle(target).getPropertyValue(token.name).trim();
6
+ });
7
+ }
8
+ //# sourceMappingURL=readProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readProperties.js","sourceRoot":"","sources":["../../src/runtime/readProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,UAAU,cAAc,CAC7B,MAAmB,EACnB,MAAM,GAAG,QAAQ,CAAC,eAAe;IAEjC,OAAO,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAClD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ArborConfig } from '../config.js';
2
+ export declare function getConfig(): ArborConfig<any>;
3
+ export declare function getStyleSheet(): CSSStyleSheet;
4
+ export declare function connect(arbor: ArborConfig<any>): void;
5
+ //# sourceMappingURL=registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../src/runtime/registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,wBAAgB,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,CAO5C;AAED,wBAAgB,aAAa,IAAI,aAAa,CAO7C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,QAO9C"}
@@ -0,0 +1,24 @@
1
+ import { generateStylesheet } from '../stylesheet/generateStylesheet.js';
2
+ let config = undefined;
3
+ let styleSheet = undefined;
4
+ export function getConfig() {
5
+ if (!config) {
6
+ throw new Error('Arbor configuration has not been set. Please call connect() first.');
7
+ }
8
+ return config;
9
+ }
10
+ export function getStyleSheet() {
11
+ if (!styleSheet) {
12
+ throw new Error('Arbor stylesheet has not been generated. Please call connect() first.');
13
+ }
14
+ return styleSheet;
15
+ }
16
+ export function connect(arbor) {
17
+ config = arbor;
18
+ // by turning off layers, we make the generated CSS take precedence over any existing pregenerated stylesheet.
19
+ const styles = generateStylesheet(config, { layer: false });
20
+ styleSheet = new CSSStyleSheet();
21
+ styleSheet.replaceSync(styles);
22
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets, styleSheet];
23
+ }
24
+ //# sourceMappingURL=registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/runtime/registration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,IAAI,MAAM,GAAiC,SAAS,CAAC;AACrD,IAAI,UAAU,GAA8B,SAAS,CAAC;AAEtD,MAAM,UAAU,SAAS;IACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACd,oEAAoE,CACpE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACd,uEAAuE,CACvE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAuB;IAC9C,MAAM,GAAG,KAAK,CAAC;IACf,8GAA8G;IAC9G,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,GAAG,CAAC,GAAG,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Token, TokenSchema } from '@arbor-css/tokens';
2
+ export declare function groupTokens(tokens: TokenSchema): {
3
+ simple: Record<string, {
4
+ "@@TOKEN@@": true;
5
+ name: string;
6
+ type: import("@arbor-css/tokens").PropertyType;
7
+ tag: string | undefined;
8
+ purpose: import("@arbor-css/tokens").TokenPurpose;
9
+ group: string | undefined;
10
+ fallback: string | number | undefined;
11
+ var: string;
12
+ varFallback: (fallbackOverride?: string | number) => string;
13
+ assign: (value?: string | number) => string;
14
+ readonly definition: string;
15
+ suffixed: (suffix: string) => /*elided*/ any;
16
+ prefixed: (prefix: string) => /*elided*/ any;
17
+ }[]>;
18
+ typography: Record<string, {
19
+ size?: Token;
20
+ weight?: Token;
21
+ lineHeight?: Token;
22
+ }>;
23
+ };
24
+ //# sourceMappingURL=tokenGroups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenGroups.d.ts","sourceRoot":"","sources":["../../src/runtime/tokenGroups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AAE1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;;;;;;;eA2CnC,KAAK;iBACH,KAAK;qBACD,KAAK;;EAMtB"}
@@ -0,0 +1,37 @@
1
+ import { tokenSchemaToList } from '@arbor-css/tokens';
2
+ export function groupTokens(tokens) {
3
+ const asList = tokenSchemaToList(tokens);
4
+ const groupedSimpleTokens = asList.reduce((groups, token) => {
5
+ const purpose = token.purpose;
6
+ if (purpose.startsWith('font') || purpose === 'line-height') {
7
+ // fonts handled separately
8
+ return groups;
9
+ }
10
+ if (!groups[purpose]) {
11
+ groups[purpose] = [];
12
+ }
13
+ groups[purpose].push(token);
14
+ return groups;
15
+ }, {});
16
+ const typographyTokens = asList
17
+ .filter((token) => token.purpose.startsWith('font') || token.purpose === 'line-height')
18
+ .reduce((levels, token) => {
19
+ // this is kind of an assumption, structure of token ends with level
20
+ const level = token.group ?? 'unknown';
21
+ if (!levels[level]) {
22
+ levels[level] = {};
23
+ }
24
+ if (token.purpose === 'font-size') {
25
+ levels[level].size = token;
26
+ }
27
+ else if (token.purpose === 'font-weight') {
28
+ levels[level].weight = token;
29
+ }
30
+ else if (token.purpose === 'line-height') {
31
+ levels[level].lineHeight = token;
32
+ }
33
+ return levels;
34
+ }, {});
35
+ return { simple: groupedSimpleTokens, typography: typographyTokens };
36
+ }
37
+ //# sourceMappingURL=tokenGroups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenGroups.js","sourceRoot":"","sources":["../../src/runtime/tokenGroups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC9C,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CACxC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC7D,2BAA2B;YAC3B,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC,EACD,EAA6B,CAC7B,CAAC;IAEF,MAAM,gBAAgB,GAAG,MAAM;SAC7B,MAAM,CACN,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa,CACpE;SACA,MAAM,CACN,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACjB,oEAAoE;QACpE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,EACD,EAOC,CACD,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { CompiledColors } from '@arbor-css/colors';
2
+ import { ModeSchemaLevel } from '@arbor-css/modes';
3
+ import { TokenSchema } from '@arbor-css/tokens';
4
+ import { CompiledTypography } from '@arbor-css/typography';
5
+ import { ArborConfig } from '../config.js';
6
+ import { CompiledShadows, CompiledSpacing } from '../index.js';
7
+ export declare function generateStylesheet<TModeShape extends ModeSchemaLevel, TCompiledColors extends CompiledColors<any, any>, TTypography extends CompiledTypography<any>, TSpacing extends CompiledSpacing<any>, TShadows extends CompiledShadows<any>, TOtherTokens extends TokenSchema>(config: ArborConfig<TModeShape, TCompiledColors, TTypography, TSpacing, TShadows, TOtherTokens>, { layer: cascadeLayerName, }?: {
8
+ layer?: string | false;
9
+ }): string;
10
+ //# sourceMappingURL=generateStylesheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateStylesheet.d.ts","sourceRoot":"","sources":["../../src/stylesheet/generateStylesheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAEN,eAAe,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAIN,WAAW,EAEX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAgB,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQ7E,wBAAgB,kBAAkB,CACjC,UAAU,SAAS,eAAe,EAClC,eAAe,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAChD,WAAW,SAAS,kBAAkB,CAAC,GAAG,CAAC,EAC3C,QAAQ,SAAS,eAAe,CAAC,GAAG,CAAC,EACrC,QAAQ,SAAS,eAAe,CAAC,GAAG,CAAC,EACrC,YAAY,SAAS,WAAW,EAEhC,MAAM,EAAE,WAAW,CAClB,UAAU,EACV,eAAe,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,YAAY,CACZ,EACD,EACC,KAAK,EAAE,gBAA0B,GACjC,GAAE;IACF,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAClB,GACJ,MAAM,CAmIR"}
@@ -0,0 +1,109 @@
1
+ import { $globalProps } from '@arbor-css/globals';
2
+ import { flattenToPropsList, modeToCss, } from '@arbor-css/modes';
3
+ import { createToken, isToken, selfReferencedProps, tokenSchemaToList, } from '@arbor-css/tokens';
4
+ import { $systemProps } from '../index.js';
5
+ import { convertStructure } from '../util/convertStructure.js';
6
+ import { flattenAndApplyTokenValues } from '../util/flattenAndApplyTokenValues.js';
7
+ import { formatObjectToCss } from '../util/formatObjectToCss.js';
8
+ import { printTokens } from '../util/printTokens.js';
9
+ const noPreference = `, (prefers-color-scheme: no-preference)`;
10
+ export function generateStylesheet(config, { layer: cascadeLayerName = 'arbor', } = {}) {
11
+ const defaultScheme = config.primitives.defaultScheme ?? 'light';
12
+ const baseMode = config.modes.base;
13
+ /**
14
+ * Each scheme generates a full set of CSS color properties
15
+ * which are prefixed with its tag. The application of a scheme
16
+ * then sets the "official" version of each property to the
17
+ * tagged one when it is applied.
18
+ */
19
+ function getSchemeRootPropertiesCss(schemeName) {
20
+ const values = flattenAndApplyTokenValues(config.primitives.$tokens.colors, config.primitives.colors[schemeName].colors, { prefix: config.primitives.schemeTags[schemeName] ?? schemeName });
21
+ return formatObjectToCss(values);
22
+ }
23
+ function schemeApplicationCss(schemeName) {
24
+ const values = selfReferencedProps(config.primitives.$tokens.colors, {
25
+ valuePrefix: config.primitives.schemeTags[schemeName] ?? schemeName,
26
+ });
27
+ return `${$systemProps.labels.scheme.assign(schemeName)}
28
+ ${$systemProps.scheme.invertMultiplier.assign(config.primitives.colors[schemeName].isDark ? -1 : 1)}
29
+ ${$systemProps.scheme.whenDark.assign(schemeName === 'dark' ? 1 : 0)}
30
+ ${$systemProps.scheme.whenLight.assign(schemeName === 'light' ? 1 : 0)}
31
+ ${formatObjectToCss(values)}
32
+ `;
33
+ }
34
+ const allModeProps = Array.from(new Set(Object.values(config.modes).flatMap((mode) => {
35
+ const shape = mode.schema.$tokens;
36
+ return flattenToPropsList(shape);
37
+ })));
38
+ // replace scheme names with their tags if they are provided
39
+ const schemeColorsWithTags = Object.keys(config.primitives.colors).reduce((acc, scheme) => {
40
+ const key = config.primitives.schemeTags[scheme] ?? scheme;
41
+ acc[key] = config.primitives.colors[scheme].colors;
42
+ return acc;
43
+ }, {});
44
+ // convert all tagged scheme colors to Tokens
45
+ const allColorTokens = tokenSchemaToList(convertStructure(schemeColorsWithTags, isToken, (_, path) => createToken(path.join('-'), { type: 'color' })));
46
+ return `/* Auto-generated CSS - do not edit directly */
47
+ ${cascadeLayerName ? `@layer ${cascadeLayerName} {` : ''}
48
+ :root {
49
+ /* Assign user globals */
50
+ ${printTokens($globalProps, config.primitives.globals)}
51
+ /* By default we set the font size */
52
+ font-size: ${$globalProps.baseFontSize.var};
53
+
54
+ /* Raw scheme ranges */
55
+ ${Object.keys(config.primitives.colors)
56
+ .map((schemeName) => getSchemeRootPropertiesCss(schemeName))
57
+ .join('\n')}
58
+
59
+ /* Dark/Light schemes are assigned to built-in device preferences */
60
+ @media (prefers-color-scheme: light)${defaultScheme === 'light' ? noPreference : ''} {
61
+ ${schemeApplicationCss('light')}
62
+ }
63
+
64
+ @media (prefers-color-scheme: dark)${defaultScheme === 'dark' ? noPreference : ''} {
65
+ ${schemeApplicationCss('dark')}
66
+ }
67
+
68
+ /* Other primitives */
69
+ ${printTokens(config.primitives.$tokens.typography, config.primitives.typography.levels)}
70
+ ${printTokens(config.primitives.$tokens.spacing, config.primitives.spacing.levels)}
71
+ ${printTokens(config.primitives.$tokens.shadows, config.primitives.shadows.levels)}
72
+ }
73
+
74
+ /* Scheme classes */
75
+ ${Object.keys(config.primitives.colors)
76
+ .map((schemeName) => `.\\@scheme-${schemeName}, [data-scheme-${schemeName}=""] {
77
+ ${schemeApplicationCss(schemeName)}
78
+ }`)
79
+ .join('\n\n')}
80
+
81
+ ${Object.entries(config.modes)
82
+ .map(([modeName, modeValue]) => {
83
+ return `/* Mode: ${modeName} */
84
+ ${modeName === 'base' ? ':root,' : ''} .\\@mode-${modeName}, [data-mode-${modeName}=""], ${Object.keys(config.primitives.colors)
85
+ .map((schemeName) => [
86
+ `:where(.\\@mode-${modeName}) .\\@scheme-${schemeName}`,
87
+ `:where([data-mode-${modeName}=""]) .\\@scheme-${schemeName}`,
88
+ modeName === 'base' ? `:root .\\@scheme-${schemeName}` : null,
89
+ ]
90
+ .filter((s) => !!s)
91
+ .join(', '))
92
+ .join(', ')} {
93
+ ${$systemProps.labels.mode.assign(modeName)}
94
+ ${modeToCss(modeValue, baseMode)}
95
+ }
96
+ `;
97
+ })
98
+ .join('\n\n')}
99
+
100
+ /* Custom properties for each primitive color */
101
+ ${allColorTokens.map((token) => token.definition).join('\n')}
102
+
103
+ /* Custom properties for each mode property */
104
+ ${allModeProps.map((PROP) => PROP.definition).join('\n\n')}
105
+
106
+ ${cascadeLayerName ? `}` : ''}
107
+ `.trim();
108
+ }
109
+ //# sourceMappingURL=generateStylesheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateStylesheet.js","sourceRoot":"","sources":["../../src/stylesheet/generateStylesheet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Walk an object structure and convert matching items using the supplied
3
+ * function.
4
+ */
5
+ export declare function convertStructure<In, Out>(input: any, matchConvertedItem: (item: any, path: (string | number)[]) => item is In, convert: (item: In, path: (string | number)[]) => Out, { path, ...options }?: {
6
+ path?: (string | number)[];
7
+ }): any;
8
+ //# sourceMappingURL=convertStructure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertStructure.d.ts","sourceRoot":"","sources":["../../src/util/convertStructure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,GAAG,EACvC,KAAK,EAAE,GAAG,EACV,kBAAkB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,EACxE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,GAAG,EACrD,EACC,IAAS,EACT,GAAG,OAAO,EACV,GAAE;IACF,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACtB,GACJ,GAAG,CAuBL"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Walk an object structure and convert matching items using the supplied
3
+ * function.
4
+ */
5
+ export function convertStructure(input, matchConvertedItem, convert, { path = [], ...options } = {}) {
6
+ path ?? (path = []);
7
+ if (matchConvertedItem(input, path)) {
8
+ return convert(input, path);
9
+ }
10
+ else if (Array.isArray(input)) {
11
+ return input.map((item, index) => convertStructure(item, matchConvertedItem, convert, {
12
+ path: [...path, index],
13
+ ...options,
14
+ }));
15
+ }
16
+ else if (typeof input === 'object' && input !== null) {
17
+ const output = {};
18
+ for (const key in input) {
19
+ output[key] = convertStructure(input[key], matchConvertedItem, convert, {
20
+ path: [...path, key],
21
+ ...options,
22
+ });
23
+ }
24
+ return output;
25
+ }
26
+ else {
27
+ return input;
28
+ }
29
+ }
30
+ //# sourceMappingURL=convertStructure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertStructure.js","sourceRoot":"","sources":["../../src/util/convertStructure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC/B,KAAU,EACV,kBAAwE,EACxE,OAAqD,EACrD,EACC,IAAI,GAAG,EAAE,EACT,GAAG,OAAO,KAGP,EAAE;IAEN,IAAI,KAAJ,IAAI,GAAK,EAAE,EAAC;IACZ,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAChC,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE;YACnD,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC;YACtB,GAAG,OAAO;SACV,CAAC,CACF,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE;gBACvE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC;gBACpB,GAAG,OAAO;aACV,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;SAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TokenSchema } from '@arbor-css/tokens';
2
+ export declare function flattenAndApplyTokenValues(tokens: TokenSchema, values: Record<string, any>, { prefix }?: {
3
+ prefix?: string;
4
+ }): Record<string, string>;
5
+ //# sourceMappingURL=flattenAndApplyTokenValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattenAndApplyTokenValues.d.ts","sourceRoot":"","sources":["../../src/util/flattenAndApplyTokenValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,EAAE,MAAM,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,0BAoCpC"}
@@ -0,0 +1,32 @@
1
+ import { isToken } from '@arbor-css/tokens';
2
+ export function flattenAndApplyTokenValues(tokens, values, { prefix } = {}) {
3
+ const result = {};
4
+ function walk(tokenNode, valueNode, path = []) {
5
+ for (const key in tokenNode) {
6
+ const tokenCurrent = tokenNode[key];
7
+ if (valueNode[key] === undefined) {
8
+ throw new Error(`Missing value for token ${tokenCurrent.name} at path ${[...path, key].join('.')} (values: ${JSON.stringify(valueNode)})`);
9
+ }
10
+ const valueCurrent = valueNode[key];
11
+ const currentPath = [...path, key];
12
+ if (isToken(tokenCurrent)) {
13
+ const tokenValue = valueCurrent;
14
+ if (tokenValue === undefined) {
15
+ throw new Error(`Missing value for token ${tokenCurrent.name} at ${currentPath.join('.')} (values: ${JSON.stringify(valueNode)})`);
16
+ }
17
+ if (prefix) {
18
+ result[tokenCurrent.prefixed(prefix).name] = tokenValue;
19
+ }
20
+ else {
21
+ result[tokenCurrent.name] = tokenValue;
22
+ }
23
+ }
24
+ else if (typeof tokenCurrent === 'object') {
25
+ walk(tokenCurrent, valueCurrent, currentPath);
26
+ }
27
+ }
28
+ }
29
+ walk(tokens, values);
30
+ return result;
31
+ }
32
+ //# sourceMappingURL=flattenAndApplyTokenValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattenAndApplyTokenValues.js","sourceRoot":"","sources":["../../src/util/flattenAndApplyTokenValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CACzC,MAAmB,EACnB,MAA2B,EAC3B,EAAE,MAAM,KAA0B,EAAE;IAEpC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,SAAS,IAAI,CACZ,SAA8B,EAC9B,SAA8B,EAC9B,OAAiB,EAAE;QAEnB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACd,2BAA2B,YAAY,CAAC,IAAI,YAAY,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CACzH,CAAC;YACH,CAAC;YACD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,YAAsB,CAAC;gBAC1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CACd,2BAA2B,YAAY,CAAC,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CACjH,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACZ,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBACxC,CAAC;YACF,CAAC;iBAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;IACF,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function formatObjectToCss(properties: Record<string, string>): string;
2
+ //# sourceMappingURL=formatObjectToCss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatObjectToCss.d.ts","sourceRoot":"","sources":["../../src/util/formatObjectToCss.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAI5E"}
@@ -0,0 +1,6 @@
1
+ export function formatObjectToCss(properties) {
2
+ return Object.entries(properties)
3
+ .map(([key, value]) => `${key}: ${value};`)
4
+ .join(' ');
5
+ }
6
+ //# sourceMappingURL=formatObjectToCss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatObjectToCss.js","sourceRoot":"","sources":["../../src/util/formatObjectToCss.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,UAAkC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TokenSchema } from '@arbor-css/tokens';
2
+ export declare function printTokens(tokens: TokenSchema, values: Record<string, any>, { prefix }?: {
3
+ prefix?: string;
4
+ }): string;
5
+ //# sourceMappingURL=printTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printTokens.d.ts","sourceRoot":"","sources":["../../src/util/printTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,wBAAgB,WAAW,CAC1B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,EAAE,MAAM,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,UAKpC"}
@@ -0,0 +1,6 @@
1
+ import { flattenAndApplyTokenValues } from './flattenAndApplyTokenValues.js';
2
+ import { formatObjectToCss } from './formatObjectToCss.js';
3
+ export function printTokens(tokens, values, { prefix } = {}) {
4
+ return formatObjectToCss(flattenAndApplyTokenValues(tokens, values, { prefix }));
5
+ }
6
+ //# sourceMappingURL=printTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printTokens.js","sourceRoot":"","sources":["../../src/util/printTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAU,WAAW,CAC1B,MAAmB,EACnB,MAA2B,EAC3B,EAAE,MAAM,KAA0B,EAAE;IAEpC,OAAO,iBAAiB,CACvB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CACtD,CAAC;AACH,CAAC"}