igniteui-theming 25.1.0 → 25.2.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.
- package/dist/index.d.ts +75 -0
- package/dist/index.js +12 -0
- package/dist/json/components/bootstrap.json +1 -0
- package/dist/json/components/fluent.json +1 -0
- package/dist/json/components/indigo.json +1 -0
- package/dist/json/components/material.json +1 -0
- package/{json → dist/json}/components/themes.json +31 -1
- package/dist/mcp/generators/css.d.ts +7 -4
- package/dist/mcp/generators/css.js +129 -104
- package/dist/mcp/generators/sass.js +227 -254
- package/dist/mcp/index.js +259 -323
- package/dist/mcp/knowledge/color-usage.js +524 -502
- package/dist/mcp/knowledge/colors.js +61 -50
- package/dist/mcp/knowledge/component-metadata.js +697 -598
- package/dist/mcp/knowledge/component-themes.js +70 -57
- package/dist/mcp/knowledge/custom-palettes.js +4 -9
- package/dist/mcp/knowledge/docs/colors/guidance.js +4 -0
- package/dist/mcp/knowledge/docs/colors/usage.js +4 -0
- package/dist/mcp/knowledge/docs/layout/functions/border-radius.js +4 -0
- package/dist/mcp/knowledge/docs/layout/functions/pad.js +4 -0
- package/dist/mcp/knowledge/docs/layout/functions/sizable.js +4 -0
- package/dist/mcp/knowledge/docs/layout/mixins/sizable.js +4 -0
- package/dist/mcp/knowledge/docs/layout/mixins/sizing.js +4 -0
- package/dist/mcp/knowledge/docs/layout/mixins/spacing.js +4 -0
- package/dist/mcp/knowledge/docs/layout/overview.js +4 -0
- package/dist/mcp/knowledge/docs/setup/platform.js +4 -0
- package/dist/mcp/knowledge/elevations.d.ts +1 -1
- package/dist/mcp/knowledge/elevations.js +26 -12
- package/dist/mcp/knowledge/index.js +23 -87
- package/dist/mcp/knowledge/layout-docs.d.ts +1 -1
- package/dist/mcp/knowledge/multipliers.js +5 -0
- package/dist/mcp/knowledge/palettes.js +29 -17
- package/dist/mcp/knowledge/platforms/angular.js +98 -120
- package/dist/mcp/knowledge/platforms/blazor.js +39 -34
- package/dist/mcp/knowledge/platforms/common.js +83 -68
- package/dist/mcp/knowledge/platforms/index.js +265 -242
- package/dist/mcp/knowledge/platforms/react.js +43 -35
- package/dist/mcp/knowledge/platforms/webcomponents.js +266 -292
- package/dist/mcp/knowledge/sass-api.js +1 -0
- package/dist/mcp/knowledge/typography.js +13 -5
- package/dist/mcp/resources/index.js +1 -0
- package/dist/mcp/resources/presets.js +409 -508
- package/dist/mcp/theming/dist/json/colors/meta/multipliers.js +50 -0
- package/dist/mcp/theming/dist/json/colors/presets/palettes.js +85 -0
- package/dist/mcp/theming/dist/json/components/themes.js +5792 -0
- package/dist/mcp/theming/dist/json/elevations/indigo.js +29 -0
- package/dist/mcp/theming/dist/json/elevations/material.js +3 -0
- package/dist/mcp/theming/dist/json/typography/presets/typescales.js +621 -0
- package/dist/mcp/tools/descriptions.js +98 -154
- package/dist/mcp/tools/handlers/color.js +58 -56
- package/dist/mcp/tools/handlers/component-theme.js +163 -225
- package/dist/mcp/tools/handlers/component-tokens.js +159 -219
- package/dist/mcp/tools/handlers/custom-palette.js +138 -179
- package/dist/mcp/tools/handlers/elevations.js +27 -28
- package/dist/mcp/tools/handlers/index.js +11 -0
- package/dist/mcp/tools/handlers/layout.js +125 -176
- package/dist/mcp/tools/handlers/palette.js +105 -120
- package/dist/mcp/tools/handlers/platform.js +289 -311
- package/dist/mcp/tools/handlers/resource.js +22 -31
- package/dist/mcp/tools/handlers/theme.js +86 -103
- package/dist/mcp/tools/handlers/typography.js +29 -30
- package/dist/mcp/tools/index.js +13 -0
- package/dist/mcp/tools/schemas.js +239 -218
- package/dist/mcp/utils/color.js +277 -239
- package/dist/mcp/utils/preprocessing.js +57 -30
- package/dist/mcp/utils/result.js +43 -45
- package/dist/mcp/utils/sass.js +271 -191
- package/dist/mcp/utils/theming-resolve.d.ts +19 -0
- package/dist/mcp/utils/theming-resolve.js +57 -0
- package/dist/mcp/utils/types.js +96 -53
- package/dist/mcp/validators/custom-palette.js +218 -243
- package/dist/mcp/validators/index.js +3 -0
- package/dist/mcp/validators/palette.js +231 -229
- package/dist/tailwind/utilities/bootstrap.css +1 -0
- package/dist/tailwind/utilities/fluent.css +1 -0
- package/dist/tailwind/utilities/indigo.css +1 -0
- package/dist/tailwind/utilities/material.css +1 -0
- package/package.json +45 -64
- package/sass/json/README.md +12 -7
- package/sass/themes/_mixins.scss +1 -0
- package/sass/themes/components/button-group/_button-group-theme.scss +42 -0
- package/sass/themes/components/grid/_grid-theme.scss +1 -1
- package/sass/themes/schemas/components/dark/_button-group.scss +173 -50
- package/sass/themes/schemas/components/dark/_grid.scss +0 -16
- package/sass/themes/schemas/components/light/_button-group.scss +221 -99
- package/sass/themes/schemas/components/light/_grid.scss +14 -20
- package/LICENSE +0 -21
- package/README.md +0 -391
- package/dist/mcp/json/colors/presets/palettes.json.js +0 -13
- package/dist/mcp/json/components/themes.json.js +0 -143
- package/dist/mcp/json/elevations/indigo.json.js +0 -8
- package/dist/mcp/json/elevations/material.json.js +0 -8
- package/dist/mcp/json/typography/presets/typescales.json.js +0 -17
- package/dist/mcp/knowledge/docs/colors/guidance.md.js +0 -4
- package/dist/mcp/knowledge/docs/colors/usage.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/functions/border-radius.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/functions/pad.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/functions/sizable.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/mixins/sizable.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/mixins/sizing.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/mixins/spacing.md.js +0 -4
- package/dist/mcp/knowledge/docs/layout/overview.md.js +0 -4
- package/dist/mcp/knowledge/docs/setup/platform.md.js +0 -4
- package/dist/mcp/vite-env.d.ts +0 -18
- package/index.js +0 -5
- package/json/components/bootstrap.json +0 -1
- package/json/components/fluent.json +0 -1
- package/json/components/indigo.json +0 -1
- package/json/components/material.json +0 -1
- package/tailwind/utilities/bootstrap.css +0 -1
- package/tailwind/utilities/fluent.css +0 -1
- package/tailwind/utilities/indigo.css +0 -1
- package/tailwind/utilities/material.css +0 -1
- /package/{json → dist/json}/colors/meta/multipliers.json +0 -0
- /package/{json → dist/json}/colors/meta/palette.json +0 -0
- /package/{json → dist/json}/colors/presets/palettes.json +0 -0
- /package/{json → dist/json}/elevations/indigo.json +0 -0
- /package/{json → dist/json}/elevations/material.json +0 -0
- /package/{json → dist/json}/typography/presets/typescales.json +0 -0
- /package/{tailwind → dist/tailwind}/themes/base.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/dark/bootstrap.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/dark/fluent.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/dark/indigo.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/dark/material.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/light/bootstrap.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/light/fluent.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/light/indigo.css +0 -0
- /package/{tailwind → dist/tailwind}/themes/light/material.css +0 -0
|
@@ -1,506 +1,528 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
1
|
+
import "./docs/colors/usage.js";
|
|
2
|
+
//#region src/knowledge/color-usage.ts
|
|
3
|
+
/**
|
|
4
|
+
* Color usage documentation and semantic roles.
|
|
5
|
+
* Describes how colors are used across Ignite UI components.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Semantic roles for each color family.
|
|
9
|
+
* Derived from analysis of component schemas across Material, Fluent, Bootstrap, and Indigo themes.
|
|
10
|
+
*/
|
|
11
|
+
var COLOR_SEMANTIC_ROLES = {
|
|
12
|
+
primary: {
|
|
13
|
+
role: "Brand identity and primary actions",
|
|
14
|
+
description: "The primary color represents your brand and is the most prominent color in your UI. It draws attention to key interactive elements and indicates the primary action a user can take.",
|
|
15
|
+
usage: [
|
|
16
|
+
"Primary action buttons (contained/filled style)",
|
|
17
|
+
"Links and navigation highlights",
|
|
18
|
+
"Active/selected states (tabs, list items, tree nodes)",
|
|
19
|
+
"Form controls when checked/selected (checkbox, radio, switch)",
|
|
20
|
+
"Progress indicators and sliders",
|
|
21
|
+
"Focus rings and outlines",
|
|
22
|
+
"Calendar date selection",
|
|
23
|
+
"Grid row selection and highlights"
|
|
24
|
+
],
|
|
25
|
+
components: [
|
|
26
|
+
"button",
|
|
27
|
+
"checkbox",
|
|
28
|
+
"radio",
|
|
29
|
+
"switch",
|
|
30
|
+
"slider",
|
|
31
|
+
"tabs",
|
|
32
|
+
"progress",
|
|
33
|
+
"calendar",
|
|
34
|
+
"grid",
|
|
35
|
+
"tree",
|
|
36
|
+
"list",
|
|
37
|
+
"nav-drawer",
|
|
38
|
+
"stepper"
|
|
39
|
+
],
|
|
40
|
+
shadeGuidance: [
|
|
41
|
+
{
|
|
42
|
+
shades: ["50", "100"],
|
|
43
|
+
purpose: "Subtle backgrounds and disabled states",
|
|
44
|
+
examples: [
|
|
45
|
+
"Focus backgrounds",
|
|
46
|
+
"Disabled button fills",
|
|
47
|
+
"Very light tints for hover"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
shades: ["200", "300"],
|
|
52
|
+
purpose: "Focus outlines, selection backgrounds with opacity",
|
|
53
|
+
examples: [
|
|
54
|
+
"Focus ring color (often with 0.5 opacity)",
|
|
55
|
+
"Selected item backgrounds in Indigo theme (300 with 0.3 opacity)",
|
|
56
|
+
"Light hover states"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
shades: ["400"],
|
|
61
|
+
purpose: "Intermediate states and secondary emphasis",
|
|
62
|
+
examples: [
|
|
63
|
+
"Hover states in some themes",
|
|
64
|
+
"Border colors",
|
|
65
|
+
"Secondary interactive elements"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
shades: ["500"],
|
|
70
|
+
purpose: "Default/main usage - THE primary color",
|
|
71
|
+
examples: [
|
|
72
|
+
"Button backgrounds",
|
|
73
|
+
"Link text color",
|
|
74
|
+
"Checkbox/radio fill when checked",
|
|
75
|
+
"Tab indicators",
|
|
76
|
+
"Progress bar fill"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
shades: ["600", "700"],
|
|
81
|
+
purpose: "Hover and active states",
|
|
82
|
+
examples: [
|
|
83
|
+
"Button hover background (Bootstrap)",
|
|
84
|
+
"Active/pressed states",
|
|
85
|
+
"Stronger emphasis"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
shades: ["800", "900"],
|
|
90
|
+
purpose: "Dark mode adaptations and maximum emphasis",
|
|
91
|
+
examples: [
|
|
92
|
+
"Active text in dark contexts",
|
|
93
|
+
"Selected backgrounds in dark mode",
|
|
94
|
+
"High contrast needs"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
secondary: {
|
|
100
|
+
role: "Accent color and secondary emphasis",
|
|
101
|
+
description: "The secondary color provides accent and emphasis for elements that need to stand out but are not the primary action. Most prominent in Material Design themes.",
|
|
102
|
+
usage: [
|
|
103
|
+
"Flat and outlined button text (Material)",
|
|
104
|
+
"List and dropdown headers",
|
|
105
|
+
"Selected item backgrounds (alternative to primary)",
|
|
106
|
+
"Accent highlights and decorative elements",
|
|
107
|
+
"Secondary action buttons"
|
|
108
|
+
],
|
|
109
|
+
components: [
|
|
110
|
+
"button",
|
|
111
|
+
"list",
|
|
112
|
+
"drop-down",
|
|
113
|
+
"tree",
|
|
114
|
+
"grid",
|
|
115
|
+
"radio",
|
|
116
|
+
"checkbox"
|
|
117
|
+
],
|
|
118
|
+
shadeGuidance: [
|
|
119
|
+
{
|
|
120
|
+
shades: ["100", "200"],
|
|
121
|
+
purpose: "Selected backgrounds and light accents",
|
|
122
|
+
examples: [
|
|
123
|
+
"Selected row backgrounds",
|
|
124
|
+
"Light accent fills",
|
|
125
|
+
"Hover backgrounds"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
shades: ["300"],
|
|
130
|
+
purpose: "Hover states in dark mode",
|
|
131
|
+
examples: ["Dark mode hover backgrounds", "Medium accent"]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
shades: ["500"],
|
|
135
|
+
purpose: "Default accent color",
|
|
136
|
+
examples: [
|
|
137
|
+
"Accent text",
|
|
138
|
+
"Secondary action color",
|
|
139
|
+
"Header text"
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
shades: ["600", "700"],
|
|
144
|
+
purpose: "Stronger accents and header text",
|
|
145
|
+
examples: [
|
|
146
|
+
"Header text (Fluent)",
|
|
147
|
+
"Strong accent color",
|
|
148
|
+
"Hover states"
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
gray: {
|
|
154
|
+
role: "Neutral UI foundation - text, borders, and backgrounds",
|
|
155
|
+
description: "Gray is the most extensively used color family, providing the foundation for text hierarchy, borders, backgrounds, and disabled states. It creates visual structure without competing with brand colors.",
|
|
156
|
+
usage: [
|
|
157
|
+
"Text at all hierarchy levels (primary, secondary, disabled)",
|
|
158
|
+
"Borders and dividers",
|
|
159
|
+
"Backgrounds (hover, selected, disabled)",
|
|
160
|
+
"Icons and decorative elements",
|
|
161
|
+
"Placeholder text",
|
|
162
|
+
"Disabled state indicators",
|
|
163
|
+
"Tooltips and overlays"
|
|
164
|
+
],
|
|
165
|
+
components: [
|
|
166
|
+
"All components use gray",
|
|
167
|
+
"input-group",
|
|
168
|
+
"card",
|
|
169
|
+
"list",
|
|
170
|
+
"expansion-panel",
|
|
171
|
+
"grid",
|
|
172
|
+
"drop-down",
|
|
173
|
+
"tooltip",
|
|
174
|
+
"dialog"
|
|
175
|
+
],
|
|
176
|
+
shadeGuidance: [
|
|
177
|
+
{
|
|
178
|
+
shades: ["50"],
|
|
179
|
+
purpose: "Lightest backgrounds (becomes dark in dark mode)",
|
|
180
|
+
examples: [
|
|
181
|
+
"Dark mode backgrounds",
|
|
182
|
+
"Group areas",
|
|
183
|
+
"Prefix/suffix backgrounds in inputs"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
shades: ["100"],
|
|
188
|
+
purpose: "Hover and focus backgrounds",
|
|
189
|
+
examples: [
|
|
190
|
+
"Item hover backgrounds",
|
|
191
|
+
"Focus backgrounds",
|
|
192
|
+
"Light borders",
|
|
193
|
+
"Card outlines in dark mode"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
shades: ["200"],
|
|
198
|
+
purpose: "Selected backgrounds and borders",
|
|
199
|
+
examples: [
|
|
200
|
+
"Selected item backgrounds (Fluent)",
|
|
201
|
+
"Hover backgrounds",
|
|
202
|
+
"Row borders",
|
|
203
|
+
"Default borders"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
shades: ["300"],
|
|
208
|
+
purpose: "Borders and light disabled states",
|
|
209
|
+
examples: [
|
|
210
|
+
"Border colors",
|
|
211
|
+
"Disabled borders",
|
|
212
|
+
"Dividers",
|
|
213
|
+
"Light disabled fills"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
shades: ["400"],
|
|
218
|
+
purpose: "Disabled text/borders and placeholders",
|
|
219
|
+
examples: [
|
|
220
|
+
"Disabled text color",
|
|
221
|
+
"Placeholder text",
|
|
222
|
+
"Empty state icons",
|
|
223
|
+
"Secondary borders"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
shades: ["500"],
|
|
228
|
+
purpose: "Secondary text and icons",
|
|
229
|
+
examples: [
|
|
230
|
+
"Disabled text",
|
|
231
|
+
"Secondary text",
|
|
232
|
+
"Icon colors",
|
|
233
|
+
"Border colors"
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
shades: ["600"],
|
|
238
|
+
purpose: "Secondary text and labels",
|
|
239
|
+
examples: [
|
|
240
|
+
"Header text (Indigo)",
|
|
241
|
+
"Secondary text",
|
|
242
|
+
"Label text",
|
|
243
|
+
"Icon colors"
|
|
244
|
+
]
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
shades: ["700"],
|
|
248
|
+
purpose: "Descriptions and tooltips",
|
|
249
|
+
examples: [
|
|
250
|
+
"Description text",
|
|
251
|
+
"Tooltip backgrounds",
|
|
252
|
+
"Subtitle text",
|
|
253
|
+
"Icon colors"
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
shades: ["800"],
|
|
258
|
+
purpose: "Primary text and strong emphasis",
|
|
259
|
+
examples: [
|
|
260
|
+
"Primary text",
|
|
261
|
+
"Titles",
|
|
262
|
+
"Strong text",
|
|
263
|
+
"Icon colors"
|
|
264
|
+
]
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
shades: ["900"],
|
|
268
|
+
purpose: "Maximum contrast text",
|
|
269
|
+
examples: [
|
|
270
|
+
"Highest contrast text",
|
|
271
|
+
"Main headings",
|
|
272
|
+
"Maximum emphasis content"
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
surface: {
|
|
278
|
+
role: "Component background foundation",
|
|
279
|
+
description: "The surface color is the base background color for components. It defines the \"canvas\" on which UI elements are painted. In light themes, surface is typically white; in dark themes, it's a dark gray.",
|
|
280
|
+
usage: [
|
|
281
|
+
"Card backgrounds",
|
|
282
|
+
"Dialog backgrounds",
|
|
283
|
+
"Input field backgrounds",
|
|
284
|
+
"List backgrounds",
|
|
285
|
+
"Dropdown menu backgrounds",
|
|
286
|
+
"Navigation drawer backgrounds",
|
|
287
|
+
"Panel and expansion panel backgrounds"
|
|
288
|
+
],
|
|
289
|
+
components: [
|
|
290
|
+
"card",
|
|
291
|
+
"dialog",
|
|
292
|
+
"input-group",
|
|
293
|
+
"list",
|
|
294
|
+
"drop-down",
|
|
295
|
+
"nav-drawer",
|
|
296
|
+
"expansion-panel",
|
|
297
|
+
"calendar",
|
|
298
|
+
"grid",
|
|
299
|
+
"tree"
|
|
300
|
+
],
|
|
301
|
+
shadeGuidance: [{
|
|
302
|
+
shades: ["500"],
|
|
303
|
+
purpose: "Default surface - typically the only shade used",
|
|
304
|
+
examples: [
|
|
305
|
+
"Component backgrounds",
|
|
306
|
+
"Base layer for contrast calculations",
|
|
307
|
+
"Light theme: white or near-white",
|
|
308
|
+
"Dark theme: dark gray (#222, #1a1a1a)"
|
|
309
|
+
]
|
|
310
|
+
}]
|
|
311
|
+
},
|
|
312
|
+
error: {
|
|
313
|
+
role: "Validation errors and destructive actions",
|
|
314
|
+
description: "The error color communicates problems, validation failures, and destructive actions. It should be used sparingly to maintain its impact and urgency.",
|
|
315
|
+
usage: [
|
|
316
|
+
"Form validation error borders and text",
|
|
317
|
+
"Error messages and icons",
|
|
318
|
+
"Invalid state indicators (checkbox, radio)",
|
|
319
|
+
"Destructive action buttons",
|
|
320
|
+
"Progress bar error state",
|
|
321
|
+
"Stepper invalid step indicator"
|
|
322
|
+
],
|
|
323
|
+
components: [
|
|
324
|
+
"input-group",
|
|
325
|
+
"checkbox",
|
|
326
|
+
"radio",
|
|
327
|
+
"stepper",
|
|
328
|
+
"progress",
|
|
329
|
+
"button"
|
|
330
|
+
],
|
|
331
|
+
shadeGuidance: [
|
|
332
|
+
{
|
|
333
|
+
shades: ["200"],
|
|
334
|
+
purpose: "Focus outlines with opacity",
|
|
335
|
+
examples: ["Error focus rings (Bootstrap)", "Light error backgrounds"]
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
shades: ["400"],
|
|
339
|
+
purpose: "Focus outlines and hover states",
|
|
340
|
+
examples: ["Error focus outlines (Indigo)", "Error hover states"]
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
shades: ["500"],
|
|
344
|
+
purpose: "Default error color",
|
|
345
|
+
examples: [
|
|
346
|
+
"Error borders",
|
|
347
|
+
"Error text",
|
|
348
|
+
"Error icons",
|
|
349
|
+
"Invalid state fills"
|
|
350
|
+
]
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
shades: ["600", "700"],
|
|
354
|
+
purpose: "Hover and active states",
|
|
355
|
+
examples: ["Error button hover (Bootstrap/Fluent)", "Stronger error emphasis"]
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
shades: ["800"],
|
|
359
|
+
purpose: "Material theme error states",
|
|
360
|
+
examples: ["Material Design error color", "Dark error emphasis"]
|
|
361
|
+
}
|
|
362
|
+
]
|
|
363
|
+
},
|
|
364
|
+
success: {
|
|
365
|
+
role: "Positive feedback and completion",
|
|
366
|
+
description: "The success color indicates successful operations, completed states, and positive feedback. Use it to confirm that actions have been completed successfully.",
|
|
367
|
+
usage: [
|
|
368
|
+
"Success messages and notifications",
|
|
369
|
+
"Completed step indicators",
|
|
370
|
+
"Progress completion state",
|
|
371
|
+
"Positive validation feedback",
|
|
372
|
+
"Success action buttons"
|
|
373
|
+
],
|
|
374
|
+
components: [
|
|
375
|
+
"progress",
|
|
376
|
+
"stepper",
|
|
377
|
+
"snackbar",
|
|
378
|
+
"button"
|
|
379
|
+
],
|
|
380
|
+
shadeGuidance: [{
|
|
381
|
+
shades: ["500"],
|
|
382
|
+
purpose: "Default success color",
|
|
383
|
+
examples: [
|
|
384
|
+
"Success indicators",
|
|
385
|
+
"Completed state fills",
|
|
386
|
+
"Success text and icons"
|
|
387
|
+
]
|
|
388
|
+
}]
|
|
389
|
+
},
|
|
390
|
+
warn: {
|
|
391
|
+
role: "Warnings and cautionary states",
|
|
392
|
+
description: "The warn color alerts users to potential issues or asks for caution. It's less severe than error but still requires attention.",
|
|
393
|
+
usage: [
|
|
394
|
+
"Warning messages and notifications",
|
|
395
|
+
"Caution indicators",
|
|
396
|
+
"Progress warning state",
|
|
397
|
+
"Stepper warning indicator"
|
|
398
|
+
],
|
|
399
|
+
components: [
|
|
400
|
+
"progress",
|
|
401
|
+
"stepper",
|
|
402
|
+
"snackbar"
|
|
403
|
+
],
|
|
404
|
+
shadeGuidance: [{
|
|
405
|
+
shades: ["500"],
|
|
406
|
+
purpose: "Default warning color",
|
|
407
|
+
examples: [
|
|
408
|
+
"Warning indicators",
|
|
409
|
+
"Caution state fills",
|
|
410
|
+
"Warning text and icons"
|
|
411
|
+
]
|
|
412
|
+
}]
|
|
413
|
+
},
|
|
414
|
+
info: {
|
|
415
|
+
role: "Informational states",
|
|
416
|
+
description: "The info color provides neutral informational feedback. It's less prominent than primary but indicates helpful information.",
|
|
417
|
+
usage: [
|
|
418
|
+
"Informational messages",
|
|
419
|
+
"Info progress state",
|
|
420
|
+
"Helper text and tooltips"
|
|
421
|
+
],
|
|
422
|
+
components: ["progress", "snackbar"],
|
|
423
|
+
shadeGuidance: [{
|
|
424
|
+
shades: ["500"],
|
|
425
|
+
purpose: "Default info color",
|
|
426
|
+
examples: [
|
|
427
|
+
"Info indicators",
|
|
428
|
+
"Informational state fills",
|
|
429
|
+
"Info icons"
|
|
430
|
+
]
|
|
431
|
+
}]
|
|
432
|
+
}
|
|
416
433
|
};
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
434
|
+
/**
|
|
435
|
+
* Common opacity values and their purposes.
|
|
436
|
+
*/
|
|
437
|
+
var OPACITY_USAGE = {
|
|
438
|
+
"0.05-0.1": "Very subtle hover overlays, light backgrounds",
|
|
439
|
+
"0.12-0.15": "Subtle active states, disabled backgrounds",
|
|
440
|
+
"0.2": "Disabled text/elements",
|
|
441
|
+
"0.3": "Selected backgrounds (Indigo theme), medium overlays",
|
|
442
|
+
"0.38": "Material Design disabled opacity (standard)",
|
|
443
|
+
"0.5": "Focus outlines, semi-transparent overlays",
|
|
444
|
+
"0.6": "Border colors, secondary elements",
|
|
445
|
+
"0.8": "Strong overlays, near-opaque states",
|
|
446
|
+
"0.9": "Tooltip backgrounds, near-solid overlays"
|
|
427
447
|
};
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
448
|
+
/**
|
|
449
|
+
* State progression patterns showing how colors change across interaction states.
|
|
450
|
+
*/
|
|
451
|
+
var STATE_PATTERNS = {
|
|
452
|
+
button: {
|
|
453
|
+
description: "Button state progression",
|
|
454
|
+
states: {
|
|
455
|
+
idle: "primary-500 background",
|
|
456
|
+
hover: "primary-600 or primary-500 with overlay",
|
|
457
|
+
focus: "primary-500 with focus ring (primary-200 or 300)",
|
|
458
|
+
active: "primary-700 or darker",
|
|
459
|
+
disabled: "gray-300 background, gray-500 text"
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
listItem: {
|
|
463
|
+
description: "List item state progression",
|
|
464
|
+
states: {
|
|
465
|
+
idle: "surface background, gray-800 text",
|
|
466
|
+
hover: "gray-100 or 200 background",
|
|
467
|
+
focus: "gray-100 background with focus outline",
|
|
468
|
+
selected: "primary-100 or 200 background (or primary-300 with opacity)",
|
|
469
|
+
disabled: "gray-400 text, no interaction"
|
|
470
|
+
}
|
|
471
|
+
},
|
|
472
|
+
input: {
|
|
473
|
+
description: "Input field state progression",
|
|
474
|
+
states: {
|
|
475
|
+
idle: "surface background, gray-300 or 400 border",
|
|
476
|
+
hover: "gray-400 or 500 border",
|
|
477
|
+
focus: "primary-500 border, focus ring",
|
|
478
|
+
filled: "gray-800 text",
|
|
479
|
+
error: "error-500 border and text",
|
|
480
|
+
disabled: "gray-100 background, gray-400 text"
|
|
481
|
+
}
|
|
482
|
+
}
|
|
460
483
|
};
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
OPACITY_USAGE,
|
|
504
|
-
STATE_PATTERNS,
|
|
505
|
-
THEME_PATTERNS
|
|
484
|
+
/**
|
|
485
|
+
* Design system specific patterns.
|
|
486
|
+
*/
|
|
487
|
+
var THEME_PATTERNS = {
|
|
488
|
+
material: {
|
|
489
|
+
name: "Material Design",
|
|
490
|
+
characteristics: [
|
|
491
|
+
"Uses secondary color prominently for accents",
|
|
492
|
+
"Ripple effects on interaction",
|
|
493
|
+
"Shade 500 as baseline",
|
|
494
|
+
"Elevation through shadows",
|
|
495
|
+
"A100-A700 accent shades for selection"
|
|
496
|
+
]
|
|
497
|
+
},
|
|
498
|
+
fluent: {
|
|
499
|
+
name: "Fluent Design",
|
|
500
|
+
characteristics: [
|
|
501
|
+
"More gray-based, subtle interactions",
|
|
502
|
+
"Hover states use 100-200 shades",
|
|
503
|
+
"Border-focused component styling",
|
|
504
|
+
"Less saturated colors overall"
|
|
505
|
+
]
|
|
506
|
+
},
|
|
507
|
+
bootstrap: {
|
|
508
|
+
name: "Bootstrap",
|
|
509
|
+
characteristics: [
|
|
510
|
+
"Uses primary color for most accents",
|
|
511
|
+
"Shade 600 commonly used for hover",
|
|
512
|
+
"Strong border patterns",
|
|
513
|
+
"More traditional web styling"
|
|
514
|
+
]
|
|
515
|
+
},
|
|
516
|
+
indigo: {
|
|
517
|
+
name: "Indigo Design",
|
|
518
|
+
characteristics: [
|
|
519
|
+
"Transparent backgrounds with opacity",
|
|
520
|
+
"Primary 300 with 0.3 opacity for selections",
|
|
521
|
+
"Strong emphasis on gray scale",
|
|
522
|
+
"Clean, modern aesthetic",
|
|
523
|
+
"Subtle interactive states"
|
|
524
|
+
]
|
|
525
|
+
}
|
|
506
526
|
};
|
|
527
|
+
//#endregion
|
|
528
|
+
export { COLOR_SEMANTIC_ROLES, OPACITY_USAGE, STATE_PATTERNS, THEME_PATTERNS };
|