@nordcraft/core 1.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 (119) hide show
  1. package/README.md +5 -0
  2. package/dist/api/LegacyToddleApi.d.ts +34 -0
  3. package/dist/api/LegacyToddleApi.js +178 -0
  4. package/dist/api/LegacyToddleApi.js.map +1 -0
  5. package/dist/api/ToddleApiV2.d.ts +77 -0
  6. package/dist/api/ToddleApiV2.js +271 -0
  7. package/dist/api/ToddleApiV2.js.map +1 -0
  8. package/dist/api/api.d.ts +49 -0
  9. package/dist/api/api.js +276 -0
  10. package/dist/api/api.js.map +1 -0
  11. package/dist/api/apiTypes.d.ts +125 -0
  12. package/dist/api/apiTypes.js +11 -0
  13. package/dist/api/apiTypes.js.map +1 -0
  14. package/dist/api/headers.d.ts +10 -0
  15. package/dist/api/headers.js +36 -0
  16. package/dist/api/headers.js.map +1 -0
  17. package/dist/api/template.d.ts +5 -0
  18. package/dist/api/template.js +7 -0
  19. package/dist/api/template.js.map +1 -0
  20. package/dist/component/ToddleComponent.d.ts +45 -0
  21. package/dist/component/ToddleComponent.js +373 -0
  22. package/dist/component/ToddleComponent.js.map +1 -0
  23. package/dist/component/actionUtils.d.ts +2 -0
  24. package/dist/component/actionUtils.js +56 -0
  25. package/dist/component/actionUtils.js.map +1 -0
  26. package/dist/component/component.types.d.ts +313 -0
  27. package/dist/component/component.types.js +9 -0
  28. package/dist/component/component.types.js.map +1 -0
  29. package/dist/component/isPageComponent.d.ts +2 -0
  30. package/dist/component/isPageComponent.js +3 -0
  31. package/dist/component/isPageComponent.js.map +1 -0
  32. package/dist/formula/ToddleFormula.d.ts +15 -0
  33. package/dist/formula/ToddleFormula.js +20 -0
  34. package/dist/formula/ToddleFormula.js.map +1 -0
  35. package/dist/formula/formula.d.ts +103 -0
  36. package/dist/formula/formula.js +186 -0
  37. package/dist/formula/formula.js.map +1 -0
  38. package/dist/formula/formulaTypes.d.ts +30 -0
  39. package/dist/formula/formulaTypes.js +2 -0
  40. package/dist/formula/formulaTypes.js.map +1 -0
  41. package/dist/formula/formulaUtils.d.ts +18 -0
  42. package/dist/formula/formulaUtils.js +240 -0
  43. package/dist/formula/formulaUtils.js.map +1 -0
  44. package/dist/styling/className.d.ts +2 -0
  45. package/dist/styling/className.js +52 -0
  46. package/dist/styling/className.js.map +1 -0
  47. package/dist/styling/style.css.d.ts +5 -0
  48. package/dist/styling/style.css.js +242 -0
  49. package/dist/styling/style.css.js.map +1 -0
  50. package/dist/styling/theme.const.d.ts +3 -0
  51. package/dist/styling/theme.const.js +381 -0
  52. package/dist/styling/theme.const.js.map +1 -0
  53. package/dist/styling/theme.d.ts +72 -0
  54. package/dist/styling/theme.js +200 -0
  55. package/dist/styling/theme.js.map +1 -0
  56. package/dist/styling/variantSelector.d.ts +123 -0
  57. package/dist/styling/variantSelector.js +25 -0
  58. package/dist/styling/variantSelector.js.map +1 -0
  59. package/dist/types.d.ts +97 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils/collections.d.ts +21 -0
  63. package/dist/utils/collections.js +75 -0
  64. package/dist/utils/collections.js.map +1 -0
  65. package/dist/utils/customElements.d.ts +6 -0
  66. package/dist/utils/customElements.js +15 -0
  67. package/dist/utils/customElements.js.map +1 -0
  68. package/dist/utils/hash.d.ts +1 -0
  69. package/dist/utils/hash.js +17 -0
  70. package/dist/utils/hash.js.map +1 -0
  71. package/dist/utils/json.d.ts +5 -0
  72. package/dist/utils/json.js +16 -0
  73. package/dist/utils/json.js.map +1 -0
  74. package/dist/utils/sha1.d.ts +2 -0
  75. package/dist/utils/sha1.js +13 -0
  76. package/dist/utils/sha1.js.map +1 -0
  77. package/dist/utils/url.d.ts +5 -0
  78. package/dist/utils/url.js +27 -0
  79. package/dist/utils/url.js.map +1 -0
  80. package/dist/utils/util.d.ts +3 -0
  81. package/dist/utils/util.js +4 -0
  82. package/dist/utils/util.js.map +1 -0
  83. package/package.json +18 -0
  84. package/src/api/LegacyToddleApi.ts +205 -0
  85. package/src/api/ToddleApiV2.ts +331 -0
  86. package/src/api/api.test.ts +319 -0
  87. package/src/api/api.ts +414 -0
  88. package/src/api/apiTypes.ts +145 -0
  89. package/src/api/headers.ts +41 -0
  90. package/src/api/template.ts +10 -0
  91. package/src/component/ToddleComponent.actionReferences.test.ts +75 -0
  92. package/src/component/ToddleComponent.formulasInComponent.test.ts +234 -0
  93. package/src/component/ToddleComponent.ts +470 -0
  94. package/src/component/actionUtils.ts +61 -0
  95. package/src/component/component.types.ts +362 -0
  96. package/src/component/isPageComponent.ts +6 -0
  97. package/src/formula/ToddleFormula.ts +30 -0
  98. package/src/formula/formula.ts +355 -0
  99. package/src/formula/formulaTypes.ts +45 -0
  100. package/src/formula/formulaUtils.ts +287 -0
  101. package/src/styling/className.test.ts +19 -0
  102. package/src/styling/className.ts +73 -0
  103. package/src/styling/style.css.ts +309 -0
  104. package/src/styling/theme.const.ts +390 -0
  105. package/src/styling/theme.ts +339 -0
  106. package/src/styling/variantSelector.ts +168 -0
  107. package/src/types.ts +158 -0
  108. package/src/utils/collections.test.ts +57 -0
  109. package/src/utils/collections.ts +122 -0
  110. package/src/utils/customElements.test.ts +40 -0
  111. package/src/utils/customElements.ts +16 -0
  112. package/src/utils/hash.test.ts +32 -0
  113. package/src/utils/hash.ts +18 -0
  114. package/src/utils/json.ts +18 -0
  115. package/src/utils/sha1.test.ts +50 -0
  116. package/src/utils/sha1.ts +17 -0
  117. package/src/utils/url.test.ts +17 -0
  118. package/src/utils/url.ts +33 -0
  119. package/src/utils/util.ts +8 -0
@@ -0,0 +1,381 @@
1
+ export const RESET_STYLES = `
2
+ @layer reset {
3
+ html {
4
+ height:100%;
5
+ }
6
+
7
+ #App {
8
+ height:100%;
9
+ display:flex;
10
+ flex-direction:column;
11
+ }
12
+
13
+ body {
14
+ height:100%;
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ margin:0;
18
+ }
19
+
20
+ [data-node-id]:not([data-unset-toddle-styles],[data-node-type="text"],noscript,br,script,style,math,math *,link,template,meta,title,base), [data-node-id]:not([data-unset-toddle-styles],noscript)::before, [data-node-id]:not([data-unset-toddle-styles],noscript)::after {
21
+ display: flex;
22
+ flex-direction: column;
23
+ flex-grow: 0;
24
+ flex-shrink: 0;
25
+
26
+ position: relative;
27
+ box-sizing: border-box;
28
+ padding: 0;
29
+ margin: 0;
30
+
31
+ font-size: var(--text-base);
32
+ font-family: var(--font-sans);
33
+ font-weight: var(--font-weight-normal);
34
+
35
+ background: transparent;
36
+ color: inherit;
37
+ border: none;
38
+ box-shadow: none;
39
+ }
40
+
41
+ [data-node-id]:not([data-unset-toddle-styles]):is(p, h1, h2, h3, h4, h5, h6, label, span, strong, b, i, address, caption, code, cite, dt, dd, em, figcaption, legend, blockquote, abbr, pre, bdo, bdi) {
42
+ display: inline-block;
43
+ overflow-wrap: break-word;
44
+ color: inherit;
45
+ }
46
+
47
+ [data-node-id]:not([data-unset-toddle-styles]):is(input, button, textarea, select) {
48
+ outline: none;
49
+ }
50
+
51
+ [data-node-id]:not([data-unset-toddle-styles]):is(a) {
52
+ color: inherit;
53
+ text-decoration: none;
54
+ }
55
+
56
+ [data-node-id]:not([data-unset-toddle-styles]):is(ul, ol, li) {
57
+ list-style: none;
58
+ }
59
+
60
+ [data-node-id]:not([data-unset-toddle-styles]):is(span[data-node-type="text"]) {
61
+ font: inherit;
62
+ display: inline;
63
+ flex-direction: column;
64
+ flex-grow: 0;
65
+ flex-shrink: 0;
66
+ box-sizing: border-box;
67
+ }
68
+
69
+ [popover]:not(:popover-open):not(dialog[open]) {
70
+ display: revert;
71
+ }
72
+ }`;
73
+ export const theme = {
74
+ colors: {
75
+ grey: {
76
+ order: 0,
77
+ variants: {
78
+ '50': { order: 0, value: '#FAFAFA' },
79
+ '100': { order: 1, value: '#F5F5F5' },
80
+ '200': { order: 2, value: '#E5E5E5' },
81
+ '300': { order: 3, value: '#D4D4D4' },
82
+ '400': { order: 4, value: '#A3A3A3' },
83
+ '500': { order: 5, value: '#737373' },
84
+ '600': { order: 6, value: '#525252' },
85
+ '700': { order: 7, value: '#404040' },
86
+ '800': { order: 8, value: '#262626' },
87
+ '900': { order: 9, value: '#171717' },
88
+ },
89
+ },
90
+ red: {
91
+ order: 1,
92
+ variants: {
93
+ '50': { order: 0, value: '#FEF2F2' },
94
+ '100': { order: 1, value: '#FEE2E2' },
95
+ '200': { order: 2, value: '#FECACA' },
96
+ '300': { order: 3, value: '#FCA5A5' },
97
+ '400': { order: 4, value: '#F87171' },
98
+ '500': { order: 5, value: '#EF4444' },
99
+ '600': { order: 6, value: '#DC2626' },
100
+ '700': { order: 7, value: '#B91C1C' },
101
+ '800': { order: 8, value: '#991B1B' },
102
+ '900': { order: 9, value: '#7F1D1D' },
103
+ },
104
+ },
105
+ rose: {
106
+ order: 3,
107
+ variants: {
108
+ '50': { order: 0, value: '#FFF1F2' },
109
+ '100': { order: 1, value: '#FFE4E6' },
110
+ '200': { order: 2, value: '#FECDD3' },
111
+ '300': { order: 3, value: '#FDA4AF' },
112
+ '400': { order: 4, value: '#FB7185' },
113
+ '500': { order: 5, value: '#F43F5E' },
114
+ '600': { order: 6, value: '#E11D48' },
115
+ '700': { order: 7, value: '#BE123C' },
116
+ '800': { order: 8, value: '#9F1239' },
117
+ '900': { order: 9, value: '#881337' },
118
+ },
119
+ },
120
+ pink: {
121
+ order: 4,
122
+ variants: {
123
+ '50': { order: 0, value: '#FDF2F8' },
124
+ '100': { order: 1, value: '#FCE7F3' },
125
+ '200': { order: 2, value: '#FBCFE8' },
126
+ '300': { order: 3, value: '#F9A8D4' },
127
+ '400': { order: 4, value: '#F472B6' },
128
+ '500': { order: 5, value: '#EC4899' },
129
+ '600': { order: 6, value: '#DB2777' },
130
+ '700': { order: 7, value: '#BE185D' },
131
+ '800': { order: 8, value: '#9D174D' },
132
+ '900': { order: 9, value: '#831843' },
133
+ },
134
+ },
135
+ amber: {
136
+ order: 5,
137
+ variants: {
138
+ '50': { order: 0, value: '#FFFBEB' },
139
+ '100': { order: 1, value: '#FEF3C7' },
140
+ '200': { order: 2, value: '#FDE68A' },
141
+ '300': { order: 3, value: '#FCD34D' },
142
+ '400': { order: 4, value: '#FBBF24' },
143
+ '500': { order: 5, value: '#F59E0B' },
144
+ '600': { order: 6, value: '#D97706' },
145
+ '700': { order: 7, value: '#B45309' },
146
+ '800': { order: 8, value: '#92400E' },
147
+ '900': { order: 9, value: '#78350F' },
148
+ },
149
+ },
150
+ orange: {
151
+ order: 6,
152
+ variants: {
153
+ '50': { order: 0, value: '#FFF7ED' },
154
+ '100': { order: 1, value: '#FFEDD5' },
155
+ '200': { order: 2, value: '#FED7AA' },
156
+ '300': { order: 3, value: '#FDBA74' },
157
+ '400': { order: 4, value: '#FB923C' },
158
+ '500': { order: 5, value: '#F97316' },
159
+ '600': { order: 6, value: '#EA580C' },
160
+ '700': { order: 7, value: '#C2410C' },
161
+ '800': { order: 8, value: '#9A3412' },
162
+ '900': { order: 9, value: '#7C2D12' },
163
+ },
164
+ },
165
+ yellow: {
166
+ order: 7,
167
+ variants: {
168
+ '50': { order: 0, value: '#FFFBEB' },
169
+ '100': { order: 1, value: '#FEF3C7' },
170
+ '200': { order: 2, value: '#FDE68A' },
171
+ '300': { order: 3, value: '#FCD34D' },
172
+ '400': { order: 4, value: '#FBBF24' },
173
+ '500': { order: 5, value: '#F59E0B' },
174
+ '600': { order: 6, value: '#D97706' },
175
+ '700': { order: 7, value: '#B45309' },
176
+ '800': { order: 8, value: '#92400E' },
177
+ '900': { order: 9, value: '#78350F' },
178
+ },
179
+ },
180
+ lime: {
181
+ order: 8,
182
+ variants: {
183
+ '50': { order: 0, value: '#F7FEE7' },
184
+ '100': { order: 1, value: '#ECFCCB' },
185
+ '200': { order: 2, value: '#D9F99D' },
186
+ '300': { order: 3, value: '#BEF264' },
187
+ '400': { order: 4, value: '#A3E635' },
188
+ '500': { order: 5, value: '#84CC16' },
189
+ '600': { order: 6, value: '#65A30D' },
190
+ '700': { order: 7, value: '#4D7C0F' },
191
+ '800': { order: 8, value: '#3F6212' },
192
+ '900': { order: 9, value: '#365314' },
193
+ },
194
+ },
195
+ green: {
196
+ order: 9,
197
+ variants: {
198
+ '50': { order: 0, value: '#ECFDF5' },
199
+ '100': { order: 1, value: '#D1FAE5' },
200
+ '200': { order: 2, value: '#A7F3D0' },
201
+ '300': { order: 3, value: '#6EE7B7' },
202
+ '400': { order: 4, value: '#34D399' },
203
+ '500': { order: 5, value: '#10B981' },
204
+ '600': { order: 6, value: '#059669' },
205
+ '700': { order: 7, value: '#047857' },
206
+ '800': { order: 8, value: '#065F46' },
207
+ '900': { order: 9, value: '#064E3B' },
208
+ },
209
+ },
210
+ emerald: {
211
+ order: 10,
212
+ variants: {
213
+ '50': { order: 0, value: '#ECFDF5' },
214
+ '100': { order: 1, value: '#D1FAE5' },
215
+ '200': { order: 2, value: '#A7F3D0' },
216
+ '300': { order: 3, value: '#6EE7B7' },
217
+ '400': { order: 4, value: '#34D399' },
218
+ '500': { order: 5, value: '#10B981' },
219
+ '600': { order: 6, value: '#059669' },
220
+ '700': { order: 7, value: '#047857' },
221
+ '800': { order: 8, value: '#065F46' },
222
+ '900': { order: 9, value: '#064E3B' },
223
+ },
224
+ },
225
+ teal: {
226
+ order: 11,
227
+ variants: {
228
+ '50': { order: 0, value: '#F0FDFA' },
229
+ '100': { order: 1, value: '#CCFBF1' },
230
+ '200': { order: 2, value: '#99F6E4' },
231
+ '300': { order: 3, value: '#5EEAD4' },
232
+ '400': { order: 4, value: '#2DD4BF' },
233
+ '500': { order: 5, value: '#14B8A6' },
234
+ '600': { order: 6, value: '#0D9488' },
235
+ '700': { order: 7, value: '#0F766E' },
236
+ '800': { order: 8, value: '#115E59' },
237
+ '900': { order: 9, value: '#134E4A' },
238
+ },
239
+ },
240
+ cyan: {
241
+ order: 12,
242
+ variants: {
243
+ '50': { order: 0, value: '#ECFEFF' },
244
+ '100': { order: 1, value: '#CFFAFE' },
245
+ '200': { order: 2, value: '#A5F3FC' },
246
+ '300': { order: 3, value: '#67E8F9' },
247
+ '400': { order: 4, value: '#22D3EE' },
248
+ '500': { order: 5, value: '#06B6D4' },
249
+ '600': { order: 6, value: '#0891B2' },
250
+ '700': { order: 7, value: '#0E7490' },
251
+ '800': { order: 8, value: '#155E75' },
252
+ '900': { order: 9, value: '#164E63' },
253
+ },
254
+ },
255
+ sky: {
256
+ order: 13,
257
+ variants: {
258
+ '50': { order: 0, value: '#F0F9FF' },
259
+ '100': { order: 1, value: '#E0F2FE' },
260
+ '200': { order: 2, value: '#BAE6FD' },
261
+ '300': { order: 3, value: '#7DD3FC' },
262
+ '400': { order: 4, value: '#38BDF8' },
263
+ '500': { order: 5, value: '#0EA5E9' },
264
+ '600': { order: 6, value: '#0284C7' },
265
+ '700': { order: 7, value: '#0369A1' },
266
+ '800': { order: 8, value: '#075985' },
267
+ '900': { order: 9, value: '#0C4A6E' },
268
+ },
269
+ },
270
+ blue: {
271
+ order: 14,
272
+ variants: {
273
+ '50': { order: 0, value: '#EFF6FF' },
274
+ '100': { order: 1, value: '#DBEAFE' },
275
+ '200': { order: 2, value: '#BFDBFE' },
276
+ '300': { order: 3, value: '#93C5FD' },
277
+ '400': { order: 4, value: '#60A5FA' },
278
+ '500': { order: 5, value: '#3B82F6' },
279
+ '600': { order: 6, value: '#2563EB' },
280
+ '700': { order: 7, value: '#1D4ED8' },
281
+ '800': { order: 8, value: '#1E40AF' },
282
+ '900': { order: 9, value: '#1E3A8A' },
283
+ },
284
+ },
285
+ indigo: {
286
+ order: 15,
287
+ variants: {
288
+ '50': { order: 0, value: '#EEF2FF' },
289
+ '100': { order: 1, value: '#E0E7FF' },
290
+ '200': { order: 2, value: '#C7D2FE' },
291
+ '300': { order: 3, value: '#A5B4FC' },
292
+ '400': { order: 4, value: '#818CF8' },
293
+ '500': { order: 5, value: '#6366F1' },
294
+ '600': { order: 6, value: '#4F46E5' },
295
+ '700': { order: 7, value: '#4338CA' },
296
+ '800': { order: 8, value: '#3730A3' },
297
+ '900': { order: 9, value: '#312E81' },
298
+ },
299
+ },
300
+ purple: {
301
+ order: 16,
302
+ variants: {
303
+ '50': { order: 0, value: '#F5F3FF' },
304
+ '100': { order: 1, value: '#EDE9FE' },
305
+ '200': { order: 2, value: '#DDD6FE' },
306
+ '300': { order: 3, value: '#C4B5FD' },
307
+ '400': { order: 4, value: '#A78BFA' },
308
+ '500': { order: 5, value: '#8B5CF6' },
309
+ '600': { order: 6, value: '#7C3AED' },
310
+ '700': { order: 7, value: '#6D28D9' },
311
+ '800': { order: 8, value: '#5B21B6' },
312
+ '900': { order: 9, value: '#4C1D95' },
313
+ },
314
+ },
315
+ fuchsia: {
316
+ order: 17,
317
+ variants: {
318
+ '50': { order: 0, value: '#FDF4FF' },
319
+ '100': { order: 1, value: '#FAE8FF' },
320
+ '200': { order: 2, value: '#F5D0FE' },
321
+ '300': { order: 3, value: '#F0ABFC' },
322
+ '400': { order: 4, value: '#E879F9' },
323
+ '500': { order: 5, value: '#D946EF' },
324
+ '600': { order: 6, value: '#C026D3' },
325
+ '700': { order: 7, value: '#A21CAF' },
326
+ '800': { order: 8, value: '#86198F' },
327
+ '900': { order: 9, value: '#701A75' },
328
+ },
329
+ },
330
+ },
331
+ shadow: {
332
+ sm: { order: 0, value: '0 1px 2px 0 rgba(0, 0, 0, 0.25)' },
333
+ base: {
334
+ order: 1,
335
+ value: '0 1px 3px 0 rgba(0, 0, 0, 0.25), 0 1px 2px 0 rgba(0, 0, 0, 0.25)',
336
+ },
337
+ md: {
338
+ order: 2,
339
+ value: '0 4px 6px -1px rgba(0, 0, 0, 0.25), 0 2px 4px -1px rgba(0, 0, 0, 0.25)',
340
+ },
341
+ lg: {
342
+ order: 3,
343
+ value: '0 10px 15px -3px rgba(0, 0, 0, 0.25), 0 4px 6px -2px rgba(0, 0, 0, 0.25)',
344
+ },
345
+ xl: {
346
+ order: 4,
347
+ value: '0 20px 25px -5px rgba(0, 0, 0, 0.25), 0 10px 10px -5px rgba(0, 0, 0, 0.25)',
348
+ },
349
+ '2xl': { order: 5, value: '0 25px 50px -12px rgba(0, 0, 0, 0.25)' },
350
+ },
351
+ spacing: 0.25,
352
+ fontSize: {
353
+ lg: { order: 0, value: '1.125rem' },
354
+ sm: { order: 1, value: '0.875rem' },
355
+ xl: { order: 2, value: '1.25rem' },
356
+ xs: { order: 3, value: '0.75rem' },
357
+ '2xl': { order: 4, value: '1.5rem' },
358
+ '3xl': { order: 5, value: '1.875rem' },
359
+ '4xl': { order: 6, value: '2.25rem' },
360
+ '5xl': { order: 7, value: '3rem' },
361
+ xxs: { order: 8, value: '0.625rem' },
362
+ base: { order: 9, value: '1rem', default: true },
363
+ },
364
+ fontFamily: {
365
+ mono: { order: 0, value: ['Fira Code', 'monospace'] },
366
+ sans: { order: 1, value: ['Inter', 'sans-serif'], default: true },
367
+ },
368
+ fontWeight: {
369
+ bold: { order: 0, value: '700' },
370
+ bolder: { order: 1, value: '800' },
371
+ normal: { order: 2, value: '500', default: true },
372
+ regular: { order: 3, value: '400' },
373
+ 'semi-bold': { order: 4, value: '600' },
374
+ },
375
+ breakpoints: {
376
+ large: { order: 2, value: 1440 },
377
+ small: { order: 0, value: 576 },
378
+ medium: { order: 1, value: 960 },
379
+ },
380
+ };
381
+ //# sourceMappingURL=theme.const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.const.js","sourceRoot":"","sources":["../../src/styling/theme.const.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ export interface ThemeOptions {
2
+ includeResetStyle: boolean;
3
+ createFontFaces: boolean;
4
+ }
5
+ export type StyleToken = {
6
+ name: string;
7
+ type: 'value' | 'variable';
8
+ value: string;
9
+ };
10
+ export type StyleTokenGroup = {
11
+ name: string;
12
+ tokens: StyleToken[];
13
+ };
14
+ export type StyleTokenCategory = 'spacing' | 'color' | 'font-size' | 'font-weight' | 'z-index' | 'border-radius' | 'shadow';
15
+ export type FontFamily = {
16
+ name: string;
17
+ family: string;
18
+ provider: 'google' | 'upload';
19
+ type: 'serif' | 'sans-serif' | 'monospace' | 'cursive';
20
+ variants: Array<{
21
+ name: string;
22
+ weight: '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
23
+ italic: boolean;
24
+ url: string;
25
+ }>;
26
+ };
27
+ export type OldTheme = {
28
+ spacing: number;
29
+ colors: Record<string, {
30
+ order: number;
31
+ variants: Record<string, {
32
+ value: string;
33
+ order: number;
34
+ }>;
35
+ }>;
36
+ fontFamily: Record<string, {
37
+ value: string[];
38
+ order: number;
39
+ default?: boolean;
40
+ }>;
41
+ fontWeight: Record<string, {
42
+ value: string;
43
+ order: number;
44
+ default?: boolean;
45
+ }>;
46
+ fontSize: Record<string, {
47
+ value: string;
48
+ order: number;
49
+ default?: boolean;
50
+ }>;
51
+ shadow: Record<string, {
52
+ value: string;
53
+ order: number;
54
+ }>;
55
+ breakpoints: Record<string, {
56
+ value: number;
57
+ order: number;
58
+ }>;
59
+ };
60
+ export type Theme = {
61
+ scheme?: 'dark' | 'light';
62
+ color: StyleTokenGroup[];
63
+ fonts: FontFamily[];
64
+ 'font-size': StyleTokenGroup[];
65
+ 'font-weight': StyleTokenGroup[];
66
+ spacing: StyleTokenGroup[];
67
+ 'border-radius': StyleTokenGroup[];
68
+ shadow: StyleTokenGroup[];
69
+ 'z-index': StyleTokenGroup[];
70
+ };
71
+ export declare const getThemeCss: (theme: Theme | OldTheme, options: ThemeOptions) => string;
72
+ export declare const getOldThemeCss: (theme: OldTheme) => string;
@@ -0,0 +1,200 @@
1
+ import { RESET_STYLES } from './theme.const';
2
+ export const getThemeCss = (theme, options) => {
3
+ if ('breakpoints' in theme) {
4
+ return getOldThemeCss(theme);
5
+ }
6
+ return `${options.includeResetStyle ? RESET_STYLES : ''}
7
+ @layer base {
8
+ ${options.createFontFaces
9
+ ? theme.fonts
10
+ .map((font) => `
11
+ ${font.variants
12
+ .map((variant) => `
13
+ @font-face {
14
+ font-family: "${font.family}";
15
+ font-style: ${variant.italic ? 'italic' : 'normal'};
16
+ font-weight: ${variant.weight};
17
+ font-display: auto;
18
+ src: local("${variant.url.substring(variant.url.lastIndexOf('/') + 1)}"), url("${variant.url.replace('https://fonts.gstatic.com', '/.toddle/fonts/font')}") format("woff2");
19
+ }
20
+ `)
21
+ .join('\n')}
22
+ `)
23
+ .join('\n')
24
+ : ''}
25
+ body, :host {
26
+ /* Color */
27
+ ${theme.color
28
+ .flatMap((group) => group.tokens.map((color) => `--${color.name}: ${color.value};`))
29
+ .join('\n')}
30
+ /* Fonts */
31
+ ${theme.fonts
32
+ .map((font) => `--font-${font.name}: '${font.family}',${font.type};`)
33
+ .join('\n')}
34
+
35
+ /* Font size */
36
+ ${theme['font-size']
37
+ .flatMap((group) => group.tokens.map((variable) => `--${variable.name}: ${variable.type === 'variable'
38
+ ? `var(--${variable.value})`
39
+ : variable.value};`))
40
+ .join('\n')}
41
+ /* Font weight */
42
+ ${theme['font-weight']
43
+ .flatMap((group) => {
44
+ return group.tokens.map((variable) => `--${variable.name}: ${variable.type === 'variable'
45
+ ? `var(--${variable.value})`
46
+ : variable.value};`);
47
+ })
48
+ .join('\n')}
49
+ /* Shadows */
50
+ ${theme.shadow
51
+ .flatMap((group) => {
52
+ return group.tokens.map((variable) => `--${variable.name}: ${variable.type === 'variable'
53
+ ? `var(--${variable.value})`
54
+ : variable.value};`);
55
+ })
56
+ .join('\n')}
57
+ /* Border radius */
58
+ ${theme['border-radius']
59
+ .flatMap((group) => {
60
+ return group.tokens.map((token) => `--${token.name}: ${token.type === 'variable' ? `var(--${token.value})` : token.value};`);
61
+ })
62
+ .join('\n')}
63
+ /* Spacing */
64
+ ${theme.spacing
65
+ .map((group) => {
66
+ return group.tokens
67
+ .map((token) => `--${token.name}: ${token.type === 'variable'
68
+ ? `var(--${token.value})`
69
+ : token.value};`)
70
+ .join('\n');
71
+ })
72
+ .join('\n')}
73
+ /* Z-index */
74
+ ${theme['z-index']
75
+ .map((group) => {
76
+ return group.tokens
77
+ .map((token) => `--${token.name}: ${token.type === 'variable'
78
+ ? `var(--${token.value})`
79
+ : token.value};`)
80
+ .join('\n');
81
+ })
82
+ .join('\n')}
83
+ }
84
+ @keyframes animation-spin {
85
+ from {
86
+ transform: rotate(0deg);
87
+ }
88
+ to {
89
+ transform: rotate(360deg);
90
+ }
91
+ }
92
+ @keyframes animation-fade-in {
93
+ from {
94
+ opacity:0;
95
+ }
96
+ to {
97
+ opacity:1;
98
+ }
99
+ }
100
+ @keyframes animation-fade-out {
101
+ from {
102
+ opacity:1;
103
+ }
104
+ to {
105
+ opacity:0;
106
+ }
107
+ }
108
+ }
109
+ `;
110
+ };
111
+ export const getOldThemeCss = (theme) => {
112
+ const colorVars = Object.entries(theme.colors).flatMap(([color, { variants }]) => Object.entries(variants).map(([variant, { value }]) => `--${color}-${variant}:${value}`));
113
+ return `
114
+
115
+
116
+
117
+
118
+ body, :host {
119
+ ${Object.entries(theme.fontFamily)
120
+ .map(([name, { value: [family, ...fallback], },]) => `--font-${name}: '${family}',${fallback.join(',')};`)
121
+ .join('\n')}
122
+
123
+ ${Object.entries(theme.fontWeight)
124
+ .map(([name, { value }]) => `--font-weight-${name}: ${value};`)
125
+ .join('\n')}
126
+
127
+ ${Object.entries(theme.fontSize)
128
+ .map(([name, { value }]) => `--font-size-${name}: ${value};`)
129
+ .join('\n')}
130
+
131
+ --spacing:${theme.spacing}rem;
132
+ ${colorVars.join(';\n')};
133
+
134
+
135
+ --text-xxs:0.625rem;
136
+ --line-height-xxs:0.9rem;
137
+
138
+ --text-xs:0.75rem;
139
+ --line-height-xs:1rem;
140
+
141
+ --text-sm:0.875rem;
142
+ --line-height-sm:1.25rem;
143
+
144
+ --text-base:1rem;
145
+ --line-height-base:1.5rem;
146
+
147
+ --text-lg:1.125rem;
148
+ --line-height-lg:1.75rem;
149
+
150
+ --text-xl:1.25rem;
151
+ --line-height-xl:1.75rem;
152
+
153
+ --text-2xl:1.5rem;
154
+ --line-height-2xl:2rem;
155
+
156
+ --text-3xl:1.875rem;
157
+ --line-height-3xl:2.25rem;
158
+
159
+ --text-4xl:2.25rem;
160
+ --line-height-4xl:2.5rem;
161
+
162
+ --text-5xl:3rem;
163
+ --line-height-5xl:3rem;
164
+
165
+ ${Object.entries(theme.shadow)
166
+ .map(([name, { value }]) => `--shadow-${name}:${value};`)
167
+ .join('\n')}
168
+ }
169
+
170
+ ${RESET_STYLES}
171
+
172
+ @keyframes animation-spin {
173
+ from {
174
+ transform: rotate(0deg);
175
+ }
176
+ to {
177
+ transform: rotate(360deg);
178
+ }
179
+ }
180
+
181
+ @keyframes animation-fade-in {
182
+ from {
183
+ opacity:0;
184
+ }
185
+ to {
186
+ opacity:1;
187
+ }
188
+ }
189
+
190
+
191
+ @keyframes animation-fade-out {
192
+ from {
193
+ opacity:1;
194
+ }
195
+ to {
196
+ opacity:0;
197
+ }
198
+ }`;
199
+ };
200
+ //# sourceMappingURL=theme.js.map