chaincss 1.13.3 → 2.0.0

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 (101) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/LICENSE +2 -3
  3. package/README.md +238 -105
  4. package/dist/cli/commands/build.d.ts +3 -0
  5. package/dist/cli/commands/build.d.ts.map +1 -0
  6. package/dist/cli/commands/compile.d.ts +3 -0
  7. package/dist/cli/commands/compile.d.ts.map +1 -0
  8. package/dist/cli/commands/init.d.ts +5 -0
  9. package/dist/cli/commands/init.d.ts.map +1 -0
  10. package/dist/cli/commands/timeline.d.ts +2 -0
  11. package/dist/cli/commands/timeline.d.ts.map +1 -0
  12. package/dist/cli/commands/watch.d.ts +6 -0
  13. package/dist/cli/commands/watch.d.ts.map +1 -0
  14. package/dist/cli/index.d.ts +2 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +5960 -0
  17. package/dist/cli/types.d.ts +51 -0
  18. package/dist/cli/types.d.ts.map +1 -0
  19. package/dist/cli/utils/config-loader.d.ts +8 -0
  20. package/dist/cli/utils/config-loader.d.ts.map +1 -0
  21. package/dist/cli/utils/file-utils.d.ts +9 -0
  22. package/dist/cli/utils/file-utils.d.ts.map +1 -0
  23. package/dist/cli/utils/logger.d.ts +17 -0
  24. package/dist/cli/utils/logger.d.ts.map +1 -0
  25. package/dist/compiler/atomic-optimizer.d.ts +76 -0
  26. package/dist/compiler/atomic-optimizer.d.ts.map +1 -0
  27. package/dist/compiler/btt.d.ts +138 -0
  28. package/dist/compiler/btt.d.ts.map +1 -0
  29. package/dist/compiler/cache-manager.d.ts +20 -0
  30. package/dist/compiler/cache-manager.d.ts.map +1 -0
  31. package/dist/compiler/commonProps.d.ts +2 -0
  32. package/dist/compiler/commonProps.d.ts.map +1 -0
  33. package/dist/compiler/index.d.ts +12 -0
  34. package/dist/compiler/index.d.ts.map +1 -0
  35. package/dist/compiler/index.js +5177 -0
  36. package/dist/compiler/prefixer.d.ts +42 -0
  37. package/dist/compiler/prefixer.d.ts.map +1 -0
  38. package/dist/compiler/theme-contract.d.ts +61 -0
  39. package/dist/compiler/theme-contract.d.ts.map +1 -0
  40. package/dist/compiler/tokens.d.ts +52 -0
  41. package/dist/compiler/tokens.d.ts.map +1 -0
  42. package/dist/compiler/types.d.ts +57 -0
  43. package/dist/compiler/types.d.ts.map +1 -0
  44. package/dist/core/compiler.d.ts +32 -0
  45. package/dist/core/compiler.d.ts.map +1 -0
  46. package/dist/core/constants.d.ts +129 -0
  47. package/dist/core/constants.d.ts.map +1 -0
  48. package/dist/core/index.d.ts +4 -0
  49. package/dist/core/index.d.ts.map +1 -0
  50. package/dist/core/types.d.ts +88 -0
  51. package/dist/core/types.d.ts.map +1 -0
  52. package/dist/core/utils.d.ts +37 -0
  53. package/dist/core/utils.d.ts.map +1 -0
  54. package/dist/index.d.ts +13 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +5667 -0
  57. package/dist/plugins/vite.d.ts +11 -0
  58. package/dist/plugins/vite.d.ts.map +1 -0
  59. package/dist/plugins/vite.js +25839 -0
  60. package/dist/plugins/webpack.d.ts +45 -0
  61. package/dist/plugins/webpack.d.ts.map +1 -0
  62. package/dist/plugins/webpack.js +107 -0
  63. package/dist/runtime/hmr.d.ts +3 -0
  64. package/dist/runtime/hmr.d.ts.map +1 -0
  65. package/dist/runtime/index.d.ts +15 -0
  66. package/dist/runtime/index.d.ts.map +1 -0
  67. package/dist/runtime/index.js +552 -0
  68. package/dist/runtime/injector.d.ts +85 -0
  69. package/dist/runtime/injector.d.ts.map +1 -0
  70. package/dist/runtime/react.d.ts +54 -0
  71. package/dist/runtime/react.d.ts.map +1 -0
  72. package/dist/runtime/react.js +270 -0
  73. package/dist/runtime/types.d.ts +45 -0
  74. package/dist/runtime/types.d.ts.map +1 -0
  75. package/dist/runtime/utils.d.ts +62 -0
  76. package/dist/runtime/utils.d.ts.map +1 -0
  77. package/dist/runtime/vue.d.ts +52 -0
  78. package/dist/runtime/vue.d.ts.map +1 -0
  79. package/dist/runtime/vue.js +232 -0
  80. package/package.json +90 -119
  81. package/browser/commonProps.js +0 -14
  82. package/browser/index.js +0 -3
  83. package/browser/react-hooks.js +0 -162
  84. package/browser/rtt.js +0 -400
  85. package/browser/vue-composables.js +0 -200
  86. package/node/atomic-optimizer.js +0 -526
  87. package/node/btt.js +0 -1009
  88. package/node/cache-manager.js +0 -56
  89. package/node/chaincss.js +0 -642
  90. package/node/index.js +0 -2
  91. package/node/loaders/chaincss-loader.js +0 -62
  92. package/node/plugins/next-plugin.js +0 -120
  93. package/node/plugins/vite-plugin.js +0 -383
  94. package/node/plugins/webpack-plugin.js +0 -41
  95. package/node/prefixer.js +0 -237
  96. package/node/strVal.js +0 -92
  97. package/node/theme-validator.js +0 -32
  98. package/shared/theme-contract.js +0 -98
  99. package/shared/tokens.cjs +0 -256
  100. package/shared/tokens.mjs +0 -320
  101. package/types.d.ts +0 -325
package/shared/tokens.cjs DELETED
@@ -1,256 +0,0 @@
1
- class DesignTokens {
2
- constructor(tokens = {}) {
3
- this.tokens = this.deepFreeze({
4
- colors: {},
5
- spacing: {},
6
- typography: {},
7
- breakpoints: {},
8
- zIndex: {},
9
- shadows: {},
10
- borderRadius: {},
11
- ...tokens
12
- });
13
-
14
- this.flattened = this.flattenTokens(this.tokens);
15
- }
16
-
17
- // Deep freeze to prevent accidental modifications
18
- deepFreeze(obj) {
19
- Object.keys(obj).forEach(key => {
20
- if (typeof obj[key] === 'object' && obj[key] !== null) {
21
- this.deepFreeze(obj[key]);
22
- }
23
- });
24
- return Object.freeze(obj);
25
- }
26
-
27
- // Flatten nested tokens for easy access
28
- flattenTokens(obj, prefix = '') {
29
- return Object.keys(obj).reduce((acc, key) => {
30
- const prefixed = prefix ? `${prefix}.${key}` : key;
31
-
32
- if (typeof obj[key] === 'object' && obj[key] !== null) {
33
- Object.assign(acc, this.flattenTokens(obj[key], prefixed));
34
- } else {
35
- acc[prefixed] = obj[key];
36
- }
37
-
38
- return acc;
39
- }, {});
40
- }
41
-
42
- // Get token value by path (e.g., 'colors.primary')
43
- get(path, defaultValue = '') {
44
- return this.flattened[path] || defaultValue;
45
- }
46
-
47
- // Generate CSS variables from tokens
48
- toCSSVariables(prefix = 'chain') {
49
- let css = ':root {\n';
50
-
51
- Object.entries(this.flattened).forEach(([key, value]) => {
52
- const varName = `--${prefix}-${key.replace(/\./g, '-')}`;
53
- css += ` ${varName}: ${value};\n`;
54
- });
55
-
56
- css += '}\n';
57
- return css;
58
- }
59
-
60
- // Create a theme variant
61
- createTheme(name, overrides) {
62
- const themeTokens = { ...this.flattened };
63
-
64
- Object.entries(overrides).forEach(([key, value]) => {
65
- if (themeTokens[key]) {
66
- themeTokens[key] = value;
67
- }
68
- });
69
-
70
- return new DesignTokens(this.expandTokens(themeTokens));
71
- }
72
-
73
- // Expand flattened tokens back to nested structure
74
- expandTokens(flattened) {
75
- const result = {};
76
-
77
- Object.entries(flattened).forEach(([key, value]) => {
78
- const parts = key.split('.');
79
- let current = result;
80
-
81
- for (let i = 0; i < parts.length - 1; i++) {
82
- current[parts[i]] = current[parts[i]] || {};
83
- current = current[parts[i]];
84
- }
85
-
86
- current[parts[parts.length - 1]] = value;
87
- });
88
-
89
- return result;
90
- }
91
- }
92
-
93
- // Default tokens
94
- const defaultTokens = {
95
- colors: {
96
- primary: '#667eea',
97
- secondary: '#764ba2',
98
- success: '#48bb78',
99
- danger: '#f56565',
100
- warning: '#ed8936',
101
- info: '#4299e1',
102
- light: '#f7fafc',
103
- dark: '#1a202c',
104
- white: '#ffffff',
105
- black: '#000000',
106
- gray: {
107
- 100: '#f7fafc',
108
- 200: '#edf2f7',
109
- 300: '#e2e8f0',
110
- 400: '#cbd5e0',
111
- 500: '#a0aec0',
112
- 600: '#718096',
113
- 700: '#4a5568',
114
- 800: '#2d3748',
115
- 900: '#1a202c'
116
- }
117
- },
118
-
119
- spacing: {
120
- 0: '0',
121
- 1: '0.25rem',
122
- 2: '0.5rem',
123
- 3: '0.75rem',
124
- 4: '1rem',
125
- 5: '1.25rem',
126
- 6: '1.5rem',
127
- 8: '2rem',
128
- 10: '2.5rem',
129
- 12: '3rem',
130
- 16: '4rem',
131
- 20: '5rem',
132
- 24: '6rem',
133
- 32: '8rem',
134
- 40: '10rem',
135
- 48: '12rem',
136
- 56: '14rem',
137
- 64: '16rem',
138
- xs: '0.5rem',
139
- sm: '1rem',
140
- md: '1.5rem',
141
- lg: '2rem',
142
- xl: '3rem',
143
- '2xl': '4rem',
144
- '3xl': '6rem'
145
- },
146
-
147
- typography: {
148
- fontFamily: {
149
- sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
150
- serif: 'Georgia, Cambria, "Times New Roman", Times, serif',
151
- mono: 'SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'
152
- },
153
- fontSize: {
154
- xs: '0.75rem',
155
- sm: '0.875rem',
156
- base: '1rem',
157
- lg: '1.125rem',
158
- xl: '1.25rem',
159
- '2xl': '1.5rem',
160
- '3xl': '1.875rem',
161
- '4xl': '2.25rem',
162
- '5xl': '3rem'
163
- },
164
- fontWeight: {
165
- hairline: '100',
166
- thin: '200',
167
- light: '300',
168
- normal: '400',
169
- medium: '500',
170
- semibold: '600',
171
- bold: '700',
172
- extrabold: '800',
173
- black: '900'
174
- },
175
- lineHeight: {
176
- none: '1',
177
- tight: '1.25',
178
- snug: '1.375',
179
- normal: '1.5',
180
- relaxed: '1.625',
181
- loose: '2'
182
- }
183
- },
184
-
185
- breakpoints: {
186
- sm: '640px',
187
- md: '768px',
188
- lg: '1024px',
189
- xl: '1280px',
190
- '2xl': '1536px'
191
- },
192
-
193
- zIndex: {
194
- 0: '0',
195
- 10: '10',
196
- 20: '20',
197
- 30: '30',
198
- 40: '40',
199
- 50: '50',
200
- auto: 'auto',
201
- dropdown: '1000',
202
- sticky: '1020',
203
- fixed: '1030',
204
- modal: '1040',
205
- popover: '1050',
206
- tooltip: '1060'
207
- },
208
-
209
- shadows: {
210
- sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
211
- base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
212
- md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
213
- lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
214
- xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',
215
- '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
216
- inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',
217
- none: 'none'
218
- },
219
-
220
- borderRadius: {
221
- none: '0',
222
- sm: '0.125rem',
223
- base: '0.25rem',
224
- md: '0.375rem',
225
- lg: '0.5rem',
226
- xl: '0.75rem',
227
- '2xl': '1rem',
228
- '3xl': '1.5rem',
229
- full: '9999px'
230
- }
231
- };
232
-
233
- // Create and export tokens instance
234
- const tokens = new DesignTokens(defaultTokens);
235
-
236
- // Token utility functions
237
- const createTokens = (customTokens) => {
238
- return new DesignTokens(customTokens);
239
- };
240
-
241
- // Generate responsive values
242
- const responsive = (values) => {
243
- if (typeof values === 'string') return values;
244
-
245
- return Object.entries(values).map(([breakpoint, value]) => {
246
- if (breakpoint === 'base') return value;
247
- return `@media (min-width: ${tokens.get(`breakpoints.${breakpoint}`)}) { ${value} }`;
248
- }).join(' ');
249
- };
250
-
251
- module.exports = {
252
- tokens,
253
- createTokens,
254
- responsive,
255
- DesignTokens
256
- };
package/shared/tokens.mjs DELETED
@@ -1,320 +0,0 @@
1
- // shared/tokens.mjs
2
-
3
- class DesignTokens {
4
- constructor(tokens = {}, contract = null) {
5
- // Store contract for validation
6
- this.contract = contract;
7
-
8
- // Validate against contract if provided
9
- if (contract) {
10
- this.validateContract(tokens, contract);
11
- }
12
-
13
- this.tokens = this.deepFreeze({
14
- colors: {},
15
- spacing: {},
16
- typography: {},
17
- breakpoints: {},
18
- zIndex: {},
19
- shadows: {},
20
- borderRadius: {},
21
- ...tokens
22
- });
23
-
24
- this.flattened = this.flattenTokens(this.tokens);
25
- }
26
-
27
- // Validate token structure against contract
28
- validateContract(tokens, contract, path = '') {
29
- const errors = [];
30
-
31
- const validate = (contractPart, tokenPart, currentPath) => {
32
- if (typeof contractPart === 'object' && contractPart !== null) {
33
- const requiredKeys = Object.keys(contractPart);
34
- const tokenKeys = Object.keys(tokenPart || {});
35
-
36
- requiredKeys.forEach(key => {
37
- const newPath = currentPath ? `${currentPath}.${key}` : key;
38
-
39
- if (!tokenPart || !tokenPart.hasOwnProperty(key)) {
40
- errors.push(`❌ Missing required token: "${newPath}"`);
41
- } else {
42
- validate(contractPart[key], tokenPart[key], newPath);
43
- }
44
- });
45
-
46
- // Warn about extra keys
47
- tokenKeys.forEach(key => {
48
- if (!contractPart.hasOwnProperty(key)) {
49
- const newPath = currentPath ? `${currentPath}.${key}` : key;
50
- console.warn(`⚠️ Extra token not in contract: "${newPath}"`);
51
- }
52
- });
53
- } else {
54
- if (typeof tokenPart !== 'string') {
55
- errors.push(`❌ Token "${currentPath}" must be a string, got ${typeof tokenPart}`);
56
- }
57
- }
58
- };
59
-
60
- validate(contract, tokens, path);
61
-
62
- if (errors.length > 0) {
63
- throw new Error(`Theme Contract Validation Failed:\n${errors.join('\n')}`);
64
- }
65
-
66
- return true;
67
- }
68
-
69
- // Deep freeze to prevent accidental modifications
70
- deepFreeze(obj) {
71
- Object.keys(obj).forEach(key => {
72
- if (typeof obj[key] === 'object' && obj[key] !== null) {
73
- this.deepFreeze(obj[key]);
74
- }
75
- });
76
- return Object.freeze(obj);
77
- }
78
-
79
- // Flatten nested tokens for easy access
80
- flattenTokens(obj, prefix = '') {
81
- return Object.keys(obj).reduce((acc, key) => {
82
- const prefixed = prefix ? `${prefix}.${key}` : key;
83
-
84
- if (typeof obj[key] === 'object' && obj[key] !== null) {
85
- Object.assign(acc, this.flattenTokens(obj[key], prefixed));
86
- } else {
87
- acc[prefixed] = obj[key];
88
- }
89
-
90
- return acc;
91
- }, {});
92
- }
93
-
94
- // Get token value by path (e.g., 'colors.primary')
95
- get(path, defaultValue = '') {
96
- return this.flattened[path] || defaultValue;
97
- }
98
-
99
- // Generate CSS variables from tokens
100
- toCSSVariables(prefix = 'chain') {
101
- let css = ':root {\n';
102
-
103
- Object.entries(this.flattened).forEach(([key, value]) => {
104
- const varName = `--${prefix}-${key.replace(/\./g, '-')}`;
105
- css += ` ${varName}: ${value};\n`;
106
- });
107
-
108
- css += '}\n';
109
- return css;
110
- }
111
-
112
- // Create a theme variant with contract validation
113
- createTheme(name, overrides) {
114
- const themeTokens = { ...this.flattened };
115
-
116
- Object.entries(overrides).forEach(([key, value]) => {
117
- if (themeTokens[key]) {
118
- themeTokens[key] = value;
119
- }
120
- });
121
-
122
- // Validate theme against original contract if exists
123
- if (this.contract) {
124
- const expandedTokens = this.expandTokens(themeTokens);
125
- this.validateContract(expandedTokens, this.contract);
126
- }
127
-
128
- return new DesignTokens(this.expandTokens(themeTokens), this.contract);
129
- }
130
-
131
- // Expand flattened tokens back to nested structure
132
- expandTokens(flattened) {
133
- const result = {};
134
-
135
- Object.entries(flattened).forEach(([key, value]) => {
136
- const parts = key.split('.');
137
- let current = result;
138
-
139
- for (let i = 0; i < parts.length - 1; i++) {
140
- current[parts[i]] = current[parts[i]] || {};
141
- current = current[parts[i]];
142
- }
143
-
144
- current[parts[parts.length - 1]] = value;
145
- });
146
-
147
- return result;
148
- }
149
- }
150
-
151
- // Default tokens
152
- const defaultTokens = {
153
- colors: {
154
- primary: '#667eea',
155
- secondary: '#764ba2',
156
- success: '#48bb78',
157
- danger: '#f56565',
158
- warning: '#ed8936',
159
- info: '#4299e1',
160
- light: '#f7fafc',
161
- dark: '#1a202c',
162
- white: '#ffffff',
163
- black: '#000000',
164
- gray: {
165
- 100: '#f7fafc',
166
- 200: '#edf2f7',
167
- 300: '#e2e8f0',
168
- 400: '#cbd5e0',
169
- 500: '#a0aec0',
170
- 600: '#718096',
171
- 700: '#4a5568',
172
- 800: '#2d3748',
173
- 900: '#1a202c'
174
- }
175
- },
176
-
177
- spacing: {
178
- 0: '0',
179
- 1: '0.25rem',
180
- 2: '0.5rem',
181
- 3: '0.75rem',
182
- 4: '1rem',
183
- 5: '1.25rem',
184
- 6: '1.5rem',
185
- 8: '2rem',
186
- 10: '2.5rem',
187
- 12: '3rem',
188
- 16: '4rem',
189
- 20: '5rem',
190
- 24: '6rem',
191
- 32: '8rem',
192
- 40: '10rem',
193
- 48: '12rem',
194
- 56: '14rem',
195
- 64: '16rem',
196
- xs: '0.5rem',
197
- sm: '1rem',
198
- md: '1.5rem',
199
- lg: '2rem',
200
- xl: '3rem',
201
- '2xl': '4rem',
202
- '3xl': '6rem'
203
- },
204
-
205
- typography: {
206
- fontFamily: {
207
- sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
208
- serif: 'Georgia, Cambria, "Times New Roman", Times, serif',
209
- mono: 'SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'
210
- },
211
- fontSize: {
212
- xs: '0.75rem',
213
- sm: '0.875rem',
214
- base: '1rem',
215
- lg: '1.125rem',
216
- xl: '1.25rem',
217
- '2xl': '1.5rem',
218
- '3xl': '1.875rem',
219
- '4xl': '2.25rem',
220
- '5xl': '3rem'
221
- },
222
- fontWeight: {
223
- hairline: '100',
224
- thin: '200',
225
- light: '300',
226
- normal: '400',
227
- medium: '500',
228
- semibold: '600',
229
- bold: '700',
230
- extrabold: '800',
231
- black: '900'
232
- },
233
- lineHeight: {
234
- none: '1',
235
- tight: '1.25',
236
- snug: '1.375',
237
- normal: '1.5',
238
- relaxed: '1.625',
239
- loose: '2'
240
- }
241
- },
242
-
243
- breakpoints: {
244
- sm: '640px',
245
- md: '768px',
246
- lg: '1024px',
247
- xl: '1280px',
248
- '2xl': '1536px'
249
- },
250
-
251
- zIndex: {
252
- 0: '0',
253
- 10: '10',
254
- 20: '20',
255
- 30: '30',
256
- 40: '40',
257
- 50: '50',
258
- auto: 'auto',
259
- dropdown: '1000',
260
- sticky: '1020',
261
- fixed: '1030',
262
- modal: '1040',
263
- popover: '1050',
264
- tooltip: '1060'
265
- },
266
-
267
- shadows: {
268
- sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
269
- base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
270
- md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
271
- lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
272
- xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',
273
- '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
274
- inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',
275
- none: 'none'
276
- },
277
-
278
- borderRadius: {
279
- none: '0',
280
- sm: '0.125rem',
281
- base: '0.25rem',
282
- md: '0.375rem',
283
- lg: '0.5rem',
284
- xl: '0.75rem',
285
- '2xl': '1rem',
286
- '3xl': '1.5rem',
287
- full: '9999px'
288
- }
289
- };
290
-
291
- // Create and export tokens instance
292
- const tokens = new DesignTokens(defaultTokens);
293
-
294
- // Token utility functions
295
- const createTokens = (customTokens, contract = null) => {
296
- return new DesignTokens(customTokens, contract);
297
- };
298
-
299
- // Define a theme contract
300
- const defineThemeContract = (contract) => {
301
- return contract;
302
- };
303
-
304
- // Generate responsive values
305
- const responsive = (values) => {
306
- if (typeof values === 'string') return values;
307
-
308
- return Object.entries(values).map(([breakpoint, value]) => {
309
- if (breakpoint === 'base') return value;
310
- return `@media (min-width: ${tokens.get(`breakpoints.${breakpoint}`)}) { ${value} }`;
311
- }).join(' ');
312
- };
313
-
314
- export {
315
- tokens,
316
- createTokens,
317
- defineThemeContract,
318
- responsive,
319
- DesignTokens
320
- };