@evolve.ui/theme-system 1.0.0 → 1.1.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.
@@ -0,0 +1,46 @@
1
+ {
2
+ "entries": [
3
+ {
4
+ "exportName": "index",
5
+ "filePath": "src/index.ts",
6
+ "source": "entries"
7
+ },
8
+ {
9
+ "exportName": "allThemes",
10
+ "filePath": "src/themes/allThemes.ts",
11
+ "source": "entries"
12
+ },
13
+ {
14
+ "exportName": "brands",
15
+ "filePath": "src/themes/brands.ts",
16
+ "source": "entries"
17
+ },
18
+ {
19
+ "exportName": "cn",
20
+ "filePath": "src/utils/cn.ts",
21
+ "source": "entries"
22
+ },
23
+ {
24
+ "exportName": "themes/common",
25
+ "filePath": "src/themes/common.ts",
26
+ "source": "entries"
27
+ },
28
+ {
29
+ "exportName": "themes/runtime/default",
30
+ "filePath": "src/themes/runtime/default.ts",
31
+ "source": "entries"
32
+ },
33
+ {
34
+ "exportName": "themes/themeType",
35
+ "filePath": "src/themes/themeType.ts",
36
+ "source": "entries"
37
+ },
38
+ {
39
+ "exportName": "tailwind/plugin",
40
+ "filePath": "src/tailwind/plugin.ts",
41
+ "source": "entries"
42
+ }
43
+ ],
44
+ "package": "@evolve.ui/theme-system",
45
+ "schemaVersion": 1
46
+ }
package/package.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "@evolve.ui/theme-system",
3
3
  "dependencies": {
4
+ "@types/tinycolor2": "^1.4.6",
4
5
  "clsx": "2.1.1",
5
- "tailwind-merge": "2.3.0"
6
+ "tailwind-merge": "2.3.0",
7
+ "tinycolor2": "^1.6.0"
6
8
  },
7
9
  "peerDependencies": {
8
10
  "tailwindcss": ">=3"
9
11
  },
10
12
  "sideEffects": false,
11
- "version": "1.0.0",
13
+ "version": "1.1.0",
12
14
  "repository": {
13
15
  "type": "git",
14
16
  "url": "git+https://github.com/dbarrett24/evolve-ui.git",
package/src/index.ts ADDED
@@ -0,0 +1,37 @@
1
+ // Tailwind plugin (primary export — includes complete theme config)
2
+ export { themePlugin } from './tailwind/plugin';
3
+
4
+ // Tailwind configuration modules
5
+ export * from './tailwind/colors';
6
+ export * from './tailwind/screens';
7
+ export * from './tailwind/spacing';
8
+ export * from './tailwind/fontFamily';
9
+ export * from './tailwind/text';
10
+
11
+ // CSS variable constants
12
+ export * from './tailwind/cssVars';
13
+
14
+ // Variable wrapping utilities
15
+ export * from './utils/wrapVar';
16
+
17
+ // Color generation utilities
18
+ export * from './utils/color';
19
+
20
+ // Brand theme definitions
21
+ export * from './themes/brands';
22
+ export * from './themes/themeType';
23
+ export {
24
+ breakpoints as runtimeBreakpoints,
25
+ radius as runtimeRadius,
26
+ spacing as runtimeSpacing,
27
+ width as runtimeBorderWidth,
28
+ } from './themes/common';
29
+ export * from './themes/allThemes';
30
+ export * from './themes/semanticColorTokenSteps';
31
+ export * from './themes/runtime/buildTheme';
32
+ export * from './themes/runtime/default';
33
+ export * from './themes/runtime/basketballTraining';
34
+ export * from './themes/runtime/professionalBrand';
35
+
36
+ // Class name utility
37
+ export { cn } from './utils/cn';
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Border radius configuration for Tailwind CSS
3
+ *
4
+ * Internal reference: Hammer UI patterns
5
+ * Ported from the upstream theme system.
6
+ */
7
+
8
+ // @see https://tailwindcss.com/docs/customizing-colors#using-css-variables
9
+
10
+ import { wrapVar } from '../utils/wrapVar';
11
+ import {
12
+ buttonBorderRadius,
13
+ checkboxBorderRadius,
14
+ containerBorderRadius,
15
+ inputBorderRadius,
16
+ searchInputBorderRadius,
17
+ } from './cssVars';
18
+
19
+ export const borderRadius = {
20
+ button: wrapVar(buttonBorderRadius),
21
+ checkbox: wrapVar(checkboxBorderRadius),
22
+ container: wrapVar(containerBorderRadius),
23
+ full: '9999px',
24
+ input: wrapVar(inputBorderRadius),
25
+ lg: '16px',
26
+ md: '8px',
27
+ none: '0',
28
+ 'search-input': wrapVar(searchInputBorderRadius),
29
+ sm: '4px',
30
+ xl: '32px',
31
+ xs: '2px',
32
+ } as const;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Box shadow configuration for Tailwind CSS
3
+ *
4
+ * Internal reference: Hammer UI patterns
5
+ * Ported from the upstream theme system.
6
+ */
7
+
8
+ import { wrapVar } from '../utils/wrapVar';
9
+ import { shadow01, shadow02, shadow03, shadow04, shadow05 } from './cssVars';
10
+
11
+ // @see https://tailwindcss.com/docs/customizing-colors#using-css-variables
12
+
13
+ export const boxShadow: Record<string, string> = {
14
+ '01': wrapVar(shadow01),
15
+ '02': wrapVar(shadow02),
16
+ '03': wrapVar(shadow03),
17
+ '04': wrapVar(shadow04),
18
+ '05': wrapVar(shadow05),
19
+ };
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Color configuration for Tailwind CSS
3
+ *
4
+ * Maps CSS custom properties to Tailwind color utilities using nested objects.
5
+ * Uses wrapVariableOpacity() for dynamic alpha support (e.g., `bg-primary-500/50`)
6
+ * and wrapOpacity() for fixed opacity values.
7
+ *
8
+ * @see https://tailwindcss.com/docs/customizing-colors#using-css-variables
9
+ * Internal reference: Hammer UI patterns
10
+ * Ported from the upstream theme system.
11
+ */
12
+
13
+ import { wrapOpacity, wrapVar, wrapVariableOpacity } from '../utils/wrapVar';
14
+ import {
15
+ colorBackgroundCriticalDark,
16
+ colorBackgroundCriticalLight,
17
+ colorBackgroundDisabled,
18
+ colorBackgroundHover,
19
+ colorBackgroundHoverInverse,
20
+ colorBackgroundInfoDark,
21
+ colorBackgroundInfoLight,
22
+ colorBackgroundInverse,
23
+ colorBackgroundOverlay,
24
+ colorBackgroundPressed,
25
+ colorBackgroundPressedInverse,
26
+ colorBackgroundPrimary,
27
+ colorBackgroundSecondary,
28
+ colorBackgroundSubdued,
29
+ colorBackgroundSuccessDark,
30
+ colorBackgroundSuccessLight,
31
+ colorBackgroundTertiary,
32
+ colorBackgroundWarningDark,
33
+ colorBackgroundWarningLight,
34
+ colorBorderBlack,
35
+ colorBorderCritical,
36
+ colorBorderDisabled,
37
+ colorBorderHover,
38
+ colorBorderInfo,
39
+ colorBorderInverse,
40
+ colorBorderPrimary,
41
+ colorBorderSecondary,
42
+ colorBorderSelected,
43
+ colorBorderSuccess,
44
+ colorBorderTertiary,
45
+ colorBorderWarning,
46
+ colorCritical100,
47
+ colorCritical200,
48
+ colorCritical300,
49
+ colorCritical400,
50
+ colorCritical50,
51
+ colorCritical500,
52
+ colorCritical600,
53
+ colorCritical700,
54
+ colorCritical800,
55
+ colorCritical900,
56
+ colorFocusInverse,
57
+ colorFocusPrimary,
58
+ colorIconCritical,
59
+ colorIconDisabled,
60
+ colorIconInfo,
61
+ colorIconInverse,
62
+ colorIconPrimary,
63
+ colorIconSecondary,
64
+ colorIconSuccess,
65
+ colorIconWarning,
66
+ colorInfo100,
67
+ colorInfo200,
68
+ colorInfo300,
69
+ colorInfo400,
70
+ colorInfo50,
71
+ colorInfo500,
72
+ colorInfo600,
73
+ colorInfo700,
74
+ colorInfo800,
75
+ colorInfo900,
76
+ colorLinkDisabled,
77
+ colorLinkHover,
78
+ colorLinkInverse,
79
+ colorLinkInverseDisabled,
80
+ colorLinkInverseHover,
81
+ colorLinkInversePressed,
82
+ colorLinkMonochrome,
83
+ colorLinkPressed,
84
+ colorLinkPrimary,
85
+ colorLinkSecondary,
86
+ colorPrimary100,
87
+ colorPrimary200,
88
+ colorPrimary300,
89
+ colorPrimary400,
90
+ colorPrimary50,
91
+ colorPrimary500,
92
+ colorPrimary600,
93
+ colorPrimary700,
94
+ colorPrimary800,
95
+ colorPrimary900,
96
+ colorSecondary100,
97
+ colorSecondary200,
98
+ colorSecondary300,
99
+ colorSecondary400,
100
+ colorSecondary50,
101
+ colorSecondary500,
102
+ colorSecondary600,
103
+ colorSecondary700,
104
+ colorSecondary800,
105
+ colorSecondary900,
106
+ colorSuccess100,
107
+ colorSuccess200,
108
+ colorSuccess300,
109
+ colorSuccess400,
110
+ colorSuccess50,
111
+ colorSuccess500,
112
+ colorSuccess600,
113
+ colorSuccess700,
114
+ colorSuccess800,
115
+ colorSuccess900,
116
+ colorSurface100,
117
+ colorSurface200,
118
+ colorSurface300,
119
+ colorSurface400,
120
+ colorSurface50,
121
+ colorSurface500,
122
+ colorSurface600,
123
+ colorSurface700,
124
+ colorSurface800,
125
+ colorSurface900,
126
+ colorTertiary100,
127
+ colorTertiary200,
128
+ colorTertiary300,
129
+ colorTertiary400,
130
+ colorTertiary50,
131
+ colorTertiary500,
132
+ colorTertiary600,
133
+ colorTertiary700,
134
+ colorTertiary800,
135
+ colorTertiary900,
136
+ colorTextCritical,
137
+ colorTextDisabled,
138
+ colorTextInactive,
139
+ colorTextInfo,
140
+ colorTextInverse,
141
+ colorTextPrimary,
142
+ colorTextSecondary,
143
+ colorTextSuccess,
144
+ colorTextWarning,
145
+ colorWarning100,
146
+ colorWarning200,
147
+ colorWarning300,
148
+ colorWarning400,
149
+ colorWarning50,
150
+ colorWarning500,
151
+ colorWarning600,
152
+ colorWarning700,
153
+ colorWarning800,
154
+ colorWarning900,
155
+ } from './cssVars';
156
+
157
+ export const colors: Record<string, Record<string, string> | string> = {
158
+ background: {
159
+ 'critical-dark': wrapVariableOpacity(wrapVar(colorBackgroundCriticalDark)),
160
+ 'critical-light': wrapVariableOpacity(wrapVar(colorBackgroundCriticalLight)),
161
+ disabled: wrapVariableOpacity(wrapVar(colorBackgroundDisabled)),
162
+ hover: wrapOpacity(wrapVar(colorBackgroundHover), 5),
163
+ 'hover-inverse': wrapOpacity(wrapVar(colorBackgroundHoverInverse), 5),
164
+ 'info-dark': wrapVariableOpacity(wrapVar(colorBackgroundInfoDark)),
165
+ 'info-light': wrapVariableOpacity(wrapVar(colorBackgroundInfoLight)),
166
+ inverse: wrapVariableOpacity(wrapVar(colorBackgroundInverse)),
167
+ overlay: wrapOpacity(wrapVar(colorBackgroundOverlay), 40),
168
+ pressed: wrapOpacity(wrapVar(colorBackgroundPressed), 20),
169
+ 'pressed-inverse': wrapOpacity(wrapVar(colorBackgroundPressedInverse), 20),
170
+ primary: wrapVariableOpacity(wrapVar(colorBackgroundPrimary)),
171
+ secondary: wrapVariableOpacity(wrapVar(colorBackgroundSecondary)),
172
+ subdued: wrapVariableOpacity(wrapVar(colorBackgroundSubdued)),
173
+ 'success-dark': wrapVariableOpacity(wrapVar(colorBackgroundSuccessDark)),
174
+ 'success-light': wrapVariableOpacity(wrapVar(colorBackgroundSuccessLight)),
175
+ tertiary: wrapVariableOpacity(wrapVar(colorBackgroundTertiary)),
176
+ 'warning-dark': wrapVariableOpacity(wrapVar(colorBackgroundWarningDark)),
177
+ 'warning-light': wrapVariableOpacity(wrapVar(colorBackgroundWarningLight)),
178
+ },
179
+ border: {
180
+ black: wrapVariableOpacity(wrapVar(colorBorderBlack)),
181
+ critical: wrapVariableOpacity(wrapVar(colorBorderCritical)),
182
+ disabled: wrapVariableOpacity(wrapVar(colorBorderDisabled)),
183
+ hover: wrapVariableOpacity(wrapVar(colorBorderHover)),
184
+ info: wrapVariableOpacity(wrapVar(colorBorderInfo)),
185
+ inverse: wrapVariableOpacity(wrapVar(colorBorderInverse)),
186
+ primary: wrapVariableOpacity(wrapVar(colorBorderPrimary)),
187
+ secondary: wrapVariableOpacity(wrapVar(colorBorderSecondary)),
188
+ selected: wrapVariableOpacity(wrapVar(colorBorderSelected)),
189
+ success: wrapVariableOpacity(wrapVar(colorBorderSuccess)),
190
+ tertiary: wrapVariableOpacity(wrapVar(colorBorderTertiary)),
191
+ warning: wrapVariableOpacity(wrapVar(colorBorderWarning)),
192
+ },
193
+ critical: {
194
+ '100': wrapVariableOpacity(wrapVar(colorCritical100)),
195
+ '200': wrapVariableOpacity(wrapVar(colorCritical200)),
196
+ '300': wrapVariableOpacity(wrapVar(colorCritical300)),
197
+ '400': wrapVariableOpacity(wrapVar(colorCritical400)),
198
+ '50': wrapVariableOpacity(wrapVar(colorCritical50)),
199
+ '500': wrapVariableOpacity(wrapVar(colorCritical500)),
200
+ '600': wrapVariableOpacity(wrapVar(colorCritical600)),
201
+ '700': wrapVariableOpacity(wrapVar(colorCritical700)),
202
+ '800': wrapVariableOpacity(wrapVar(colorCritical800)),
203
+ '900': wrapVariableOpacity(wrapVar(colorCritical900)),
204
+ },
205
+ current: 'currentColor',
206
+ focus: {
207
+ inverse: wrapOpacity(wrapVar(colorFocusInverse), 50),
208
+ primary: wrapOpacity(wrapVar(colorFocusPrimary), 50),
209
+ },
210
+ 'focus-inverse': wrapVariableOpacity(wrapVar(colorFocusInverse)),
211
+ 'focus-primary': wrapVariableOpacity(wrapVar(colorFocusPrimary)),
212
+ icon: {
213
+ critical: wrapVariableOpacity(wrapVar(colorIconCritical)),
214
+ default: wrapVariableOpacity(wrapVar(colorIconPrimary)),
215
+ disabled: wrapVariableOpacity(wrapVar(colorIconDisabled)),
216
+ hover: wrapVariableOpacity(wrapVar(colorIconSecondary)),
217
+ info: wrapVariableOpacity(wrapVar(colorIconInfo)),
218
+ inverse: wrapVariableOpacity(wrapVar(colorIconInverse)),
219
+ primary: wrapVariableOpacity(wrapVar(colorIconPrimary)),
220
+ secondary: wrapVariableOpacity(wrapVar(colorIconSecondary)),
221
+ success: wrapVariableOpacity(wrapVar(colorIconSuccess)),
222
+ warning: wrapVariableOpacity(wrapVar(colorIconWarning)),
223
+ },
224
+ info: {
225
+ '100': wrapVariableOpacity(wrapVar(colorInfo100)),
226
+ '200': wrapVariableOpacity(wrapVar(colorInfo200)),
227
+ '300': wrapVariableOpacity(wrapVar(colorInfo300)),
228
+ '400': wrapVariableOpacity(wrapVar(colorInfo400)),
229
+ '50': wrapVariableOpacity(wrapVar(colorInfo50)),
230
+ '500': wrapVariableOpacity(wrapVar(colorInfo500)),
231
+ '600': wrapVariableOpacity(wrapVar(colorInfo600)),
232
+ '700': wrapVariableOpacity(wrapVar(colorInfo700)),
233
+ '800': wrapVariableOpacity(wrapVar(colorInfo800)),
234
+ '900': wrapVariableOpacity(wrapVar(colorInfo900)),
235
+ },
236
+ link: {
237
+ disabled: wrapVariableOpacity(wrapVar(colorLinkDisabled)),
238
+ hover: wrapVariableOpacity(wrapVar(colorLinkHover)),
239
+ inverse: wrapVariableOpacity(wrapVar(colorLinkInverse)),
240
+ 'inverse-disabled': wrapVariableOpacity(wrapVar(colorLinkInverseDisabled)),
241
+ 'inverse-hover': wrapVariableOpacity(wrapVar(colorLinkInverseHover)),
242
+ 'inverse-pressed': wrapVariableOpacity(wrapVar(colorLinkInversePressed)),
243
+ monochrome: wrapVariableOpacity(wrapVar(colorLinkMonochrome)),
244
+ pressed: wrapVariableOpacity(wrapVar(colorLinkPressed)),
245
+ primary: wrapVariableOpacity(wrapVar(colorLinkPrimary)),
246
+ secondary: wrapVariableOpacity(wrapVar(colorLinkSecondary)),
247
+ },
248
+ primary: {
249
+ '100': wrapVariableOpacity(wrapVar(colorPrimary100)),
250
+ '200': wrapVariableOpacity(wrapVar(colorPrimary200)),
251
+ '300': wrapVariableOpacity(wrapVar(colorPrimary300)),
252
+ '400': wrapVariableOpacity(wrapVar(colorPrimary400)),
253
+ '50': wrapVariableOpacity(wrapVar(colorPrimary50)),
254
+ '500': wrapVariableOpacity(wrapVar(colorPrimary500)),
255
+ '600': wrapVariableOpacity(wrapVar(colorPrimary600)),
256
+ '700': wrapVariableOpacity(wrapVar(colorPrimary700)),
257
+ '800': wrapVariableOpacity(wrapVar(colorPrimary800)),
258
+ '900': wrapVariableOpacity(wrapVar(colorPrimary900)),
259
+ },
260
+ secondary: {
261
+ '100': wrapVariableOpacity(wrapVar(colorSecondary100)),
262
+ '200': wrapVariableOpacity(wrapVar(colorSecondary200)),
263
+ '300': wrapVariableOpacity(wrapVar(colorSecondary300)),
264
+ '400': wrapVariableOpacity(wrapVar(colorSecondary400)),
265
+ '50': wrapVariableOpacity(wrapVar(colorSecondary50)),
266
+ '500': wrapVariableOpacity(wrapVar(colorSecondary500)),
267
+ '600': wrapVariableOpacity(wrapVar(colorSecondary600)),
268
+ '700': wrapVariableOpacity(wrapVar(colorSecondary700)),
269
+ '800': wrapVariableOpacity(wrapVar(colorSecondary800)),
270
+ '900': wrapVariableOpacity(wrapVar(colorSecondary900)),
271
+ },
272
+ success: {
273
+ '100': wrapVariableOpacity(wrapVar(colorSuccess100)),
274
+ '200': wrapVariableOpacity(wrapVar(colorSuccess200)),
275
+ '300': wrapVariableOpacity(wrapVar(colorSuccess300)),
276
+ '400': wrapVariableOpacity(wrapVar(colorSuccess400)),
277
+ '50': wrapVariableOpacity(wrapVar(colorSuccess50)),
278
+ '500': wrapVariableOpacity(wrapVar(colorSuccess500)),
279
+ '600': wrapVariableOpacity(wrapVar(colorSuccess600)),
280
+ '700': wrapVariableOpacity(wrapVar(colorSuccess700)),
281
+ '800': wrapVariableOpacity(wrapVar(colorSuccess800)),
282
+ '900': wrapVariableOpacity(wrapVar(colorSuccess900)),
283
+ },
284
+ surface: {
285
+ '100': wrapVariableOpacity(wrapVar(colorSurface100)),
286
+ '200': wrapVariableOpacity(wrapVar(colorSurface200)),
287
+ '300': wrapVariableOpacity(wrapVar(colorSurface300)),
288
+ '400': wrapVariableOpacity(wrapVar(colorSurface400)),
289
+ '50': wrapVariableOpacity(wrapVar(colorSurface50)),
290
+ '500': wrapVariableOpacity(wrapVar(colorSurface500)),
291
+ '600': wrapVariableOpacity(wrapVar(colorSurface600)),
292
+ '700': wrapVariableOpacity(wrapVar(colorSurface700)),
293
+ '800': wrapVariableOpacity(wrapVar(colorSurface800)),
294
+ '900': wrapVariableOpacity(wrapVar(colorSurface900)),
295
+ },
296
+ tertiary: {
297
+ '100': wrapVariableOpacity(wrapVar(colorTertiary100)),
298
+ '200': wrapVariableOpacity(wrapVar(colorTertiary200)),
299
+ '300': wrapVariableOpacity(wrapVar(colorTertiary300)),
300
+ '400': wrapVariableOpacity(wrapVar(colorTertiary400)),
301
+ '50': wrapVariableOpacity(wrapVar(colorTertiary50)),
302
+ '500': wrapVariableOpacity(wrapVar(colorTertiary500)),
303
+ '600': wrapVariableOpacity(wrapVar(colorTertiary600)),
304
+ '700': wrapVariableOpacity(wrapVar(colorTertiary700)),
305
+ '800': wrapVariableOpacity(wrapVar(colorTertiary800)),
306
+ '900': wrapVariableOpacity(wrapVar(colorTertiary900)),
307
+ },
308
+ text: {
309
+ critical: wrapVariableOpacity(wrapVar(colorTextCritical)),
310
+ disabled: wrapVariableOpacity(wrapVar(colorTextDisabled)),
311
+ inactive: wrapVariableOpacity(wrapVar(colorTextInactive)),
312
+ info: wrapVariableOpacity(wrapVar(colorTextInfo)),
313
+ inverse: wrapVariableOpacity(wrapVar(colorTextInverse)),
314
+ primary: wrapVariableOpacity(wrapVar(colorTextPrimary)),
315
+ secondary: wrapVariableOpacity(wrapVar(colorTextSecondary)),
316
+ success: wrapVariableOpacity(wrapVar(colorTextSuccess)),
317
+ warning: wrapVariableOpacity(wrapVar(colorTextWarning)),
318
+ },
319
+ transparent: 'transparent',
320
+ warning: {
321
+ '100': wrapVariableOpacity(wrapVar(colorWarning100)),
322
+ '200': wrapVariableOpacity(wrapVar(colorWarning200)),
323
+ '300': wrapVariableOpacity(wrapVar(colorWarning300)),
324
+ '400': wrapVariableOpacity(wrapVar(colorWarning400)),
325
+ '50': wrapVariableOpacity(wrapVar(colorWarning50)),
326
+ '500': wrapVariableOpacity(wrapVar(colorWarning500)),
327
+ '600': wrapVariableOpacity(wrapVar(colorWarning600)),
328
+ '700': wrapVariableOpacity(wrapVar(colorWarning700)),
329
+ '800': wrapVariableOpacity(wrapVar(colorWarning800)),
330
+ '900': wrapVariableOpacity(wrapVar(colorWarning900)),
331
+ },
332
+ };