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,616 +1,715 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
//#region src/knowledge/component-metadata.ts
|
|
2
|
+
var GRID_COMPOUND_INFO = {
|
|
3
|
+
description: "The grid is a complex compound component with many themeable parts including filtering, editing, pagination, toolbar and more.",
|
|
4
|
+
relatedThemes: [
|
|
5
|
+
"action-strip",
|
|
6
|
+
"grid-summary",
|
|
7
|
+
"grid-toolbar",
|
|
8
|
+
"column-actions",
|
|
9
|
+
"paginator",
|
|
10
|
+
"checkbox",
|
|
11
|
+
"chip",
|
|
12
|
+
"list",
|
|
13
|
+
"input-group",
|
|
14
|
+
"flat-button",
|
|
15
|
+
"outlined-button",
|
|
16
|
+
"flat-icon-button",
|
|
17
|
+
"outlined-icon-button"
|
|
18
|
+
],
|
|
19
|
+
guidance: `The grid is a complex compound component with many related themes. \
|
|
20
|
+
For basic customization, focus on the grid theme itself and the most visible children: \
|
|
21
|
+
input-group (filtering), outlined-button/icon-button (toolbar actions), checkbox (row selection), \
|
|
22
|
+
and paginator. The grid-summary and grid-toolbar themes control their respective areas. \
|
|
23
|
+
Detailed token derivation rules are not yet available for the grid — use the token names \
|
|
24
|
+
and descriptions from get_component_design_tokens for each child to guide value selection.`
|
|
19
25
|
};
|
|
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
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
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
|
-
|
|
460
|
-
|
|
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
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
26
|
+
var COMPONENT_METADATA = {
|
|
27
|
+
accordion: { selectors: {
|
|
28
|
+
angular: "igx-accordion",
|
|
29
|
+
webcomponents: "igc-accordion"
|
|
30
|
+
} },
|
|
31
|
+
"action-strip": { selectors: {
|
|
32
|
+
angular: "igx-action-strip",
|
|
33
|
+
webcomponents: null
|
|
34
|
+
} },
|
|
35
|
+
avatar: { selectors: {
|
|
36
|
+
angular: "igx-avatar",
|
|
37
|
+
webcomponents: "igc-avatar"
|
|
38
|
+
} },
|
|
39
|
+
badge: { selectors: {
|
|
40
|
+
angular: "igx-badge",
|
|
41
|
+
webcomponents: "igc-badge"
|
|
42
|
+
} },
|
|
43
|
+
banner: {
|
|
44
|
+
selectors: {
|
|
45
|
+
angular: "igx-banner",
|
|
46
|
+
webcomponents: "igc-banner"
|
|
47
|
+
},
|
|
48
|
+
compound: {
|
|
49
|
+
description: "The banner component uses flat-buttons for the actions",
|
|
50
|
+
relatedThemes: ["flat-button"],
|
|
51
|
+
guidance: `The banner action buttons should visually coordinate with the banner background. \
|
|
52
|
+
If customizing the banner background, ensure flat-button foreground contrasts against it.`
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"bottom-nav": { selectors: {
|
|
56
|
+
angular: "igx-bottom-nav",
|
|
57
|
+
webcomponents: null
|
|
58
|
+
} },
|
|
59
|
+
button: {
|
|
60
|
+
selectors: {
|
|
61
|
+
angular: ".igx-button",
|
|
62
|
+
webcomponents: "igc-button"
|
|
63
|
+
},
|
|
64
|
+
variants: [
|
|
65
|
+
"flat-button",
|
|
66
|
+
"contained-button",
|
|
67
|
+
"outlined-button",
|
|
68
|
+
"fab-button"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"flat-button": { selectors: {
|
|
72
|
+
angular: ".igx-button--flat",
|
|
73
|
+
webcomponents: "igc-button[variant=\"flat\"]"
|
|
74
|
+
} },
|
|
75
|
+
"contained-button": { selectors: {
|
|
76
|
+
angular: [".igx-button--contained"],
|
|
77
|
+
webcomponents: "igc-button[variant=\"contained\"]"
|
|
78
|
+
} },
|
|
79
|
+
"outlined-button": { selectors: {
|
|
80
|
+
angular: [".igx-button--outlined"],
|
|
81
|
+
webcomponents: "igc-button[variant=\"outlined\"]"
|
|
82
|
+
} },
|
|
83
|
+
"fab-button": { selectors: {
|
|
84
|
+
angular: [".igx-button--fab"],
|
|
85
|
+
webcomponents: "igc-button[variant=\"fab\"]"
|
|
86
|
+
} },
|
|
87
|
+
"icon-button": {
|
|
88
|
+
selectors: {
|
|
89
|
+
angular: [".igx-icon-button"],
|
|
90
|
+
webcomponents: "igc-icon-button"
|
|
91
|
+
},
|
|
92
|
+
variants: [
|
|
93
|
+
"flat-icon-button",
|
|
94
|
+
"contained-icon-button",
|
|
95
|
+
"outlined-icon-button"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"flat-icon-button": { selectors: {
|
|
99
|
+
angular: [".igx-icon-button--flat"],
|
|
100
|
+
webcomponents: "igc-icon-button[variant=\"flat\"]"
|
|
101
|
+
} },
|
|
102
|
+
"contained-icon-button": { selectors: {
|
|
103
|
+
angular: [".igx-icon-button--contained"],
|
|
104
|
+
webcomponents: "igc-icon-button[variant=\"contained\"]"
|
|
105
|
+
} },
|
|
106
|
+
"outlined-icon-button": { selectors: {
|
|
107
|
+
angular: [".igx-icon-button--outlined"],
|
|
108
|
+
webcomponents: "igc-icon-button[variant=\"outlined\"]"
|
|
109
|
+
} },
|
|
110
|
+
"button-group": { selectors: {
|
|
111
|
+
angular: "igx-buttongroup",
|
|
112
|
+
webcomponents: "igc-button-group"
|
|
113
|
+
} },
|
|
114
|
+
calendar: { selectors: {
|
|
115
|
+
angular: "igx-calendar",
|
|
116
|
+
webcomponents: "igc-calendar"
|
|
117
|
+
} },
|
|
118
|
+
card: {
|
|
119
|
+
selectors: {
|
|
120
|
+
angular: "igx-card",
|
|
121
|
+
webcomponents: "igc-card"
|
|
122
|
+
},
|
|
123
|
+
compound: {
|
|
124
|
+
description: "The card component can contain various child components like avatars, buttons, chips, and icons.",
|
|
125
|
+
relatedThemes: [
|
|
126
|
+
"flat-button",
|
|
127
|
+
"flat-icon-button",
|
|
128
|
+
"chip",
|
|
129
|
+
"icon"
|
|
130
|
+
],
|
|
131
|
+
guidance: `The card component can contain flat-button(s), flat-icon-button(s), and icon(s) that should harmonize visually well with the background of the card component. \
|
|
132
|
+
For the flat-button and flat-icon-button themes, ensure the foreground color contrasts well with the card background. \
|
|
133
|
+
For the icon theme, the color should also coordinate with the card background while maintaining sufficient contrast.`
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
carousel: { selectors: {
|
|
137
|
+
angular: "igx-carousel",
|
|
138
|
+
webcomponents: "igc-carousel"
|
|
139
|
+
} },
|
|
140
|
+
chat: {
|
|
141
|
+
selectors: {
|
|
142
|
+
angular: "igc-chat",
|
|
143
|
+
webcomponents: "igc-chat"
|
|
144
|
+
},
|
|
145
|
+
compound: {
|
|
146
|
+
description: "The chat component uses a flat-icon-button, contained-icon-button, and a textarea internally.",
|
|
147
|
+
relatedThemes: [
|
|
148
|
+
"flat-icon-button",
|
|
149
|
+
"contained-icon-button",
|
|
150
|
+
"input-group"
|
|
151
|
+
],
|
|
152
|
+
guidance: "Make sure the textarea, the flat-icon-button, and the contained-icon-button themes visually coordinate with each other and the overall chat background."
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
checkbox: { selectors: {
|
|
156
|
+
angular: "igx-checkbox",
|
|
157
|
+
webcomponents: "igc-checkbox"
|
|
158
|
+
} },
|
|
159
|
+
chip: { selectors: {
|
|
160
|
+
angular: "igx-chip",
|
|
161
|
+
webcomponents: "igc-chip"
|
|
162
|
+
} },
|
|
163
|
+
"column-actions": {
|
|
164
|
+
selectors: {
|
|
165
|
+
angular: "igx-column-actions",
|
|
166
|
+
webcomponents: null
|
|
167
|
+
},
|
|
168
|
+
compound: {
|
|
169
|
+
description: "The column actions component uses checkboxes for selection and flat-buttons for the action items.",
|
|
170
|
+
relatedThemes: ["checkbox", "flat-button"],
|
|
171
|
+
tokenDerivations: { "flat-button.foreground": {
|
|
172
|
+
from: "column-actions.background",
|
|
173
|
+
transform: "adaptive-contrast"
|
|
174
|
+
} },
|
|
175
|
+
guidance: "Make sure to theme these child components to visually coordinate with each other and the overall column actions background."
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
combo: {
|
|
179
|
+
selectors: {
|
|
180
|
+
angular: "igx-combo",
|
|
181
|
+
webcomponents: "igc-combo"
|
|
182
|
+
},
|
|
183
|
+
compound: {
|
|
184
|
+
description: "The combo component combines input, drop-down, and checkbox components.",
|
|
185
|
+
relatedThemes: [
|
|
186
|
+
"input-group",
|
|
187
|
+
"drop-down",
|
|
188
|
+
"checkbox"
|
|
189
|
+
],
|
|
190
|
+
tokenDerivations: {
|
|
191
|
+
"input-group.focused-border-color": {
|
|
192
|
+
from: "combo.toggle-button-background",
|
|
193
|
+
transform: "identity"
|
|
194
|
+
},
|
|
195
|
+
"combo.empty-list-background": {
|
|
196
|
+
from: "combo.toggle-button-background",
|
|
197
|
+
transform: "identity"
|
|
198
|
+
},
|
|
199
|
+
"drop-down.background-color": {
|
|
200
|
+
from: "combo.toggle-button-background",
|
|
201
|
+
transform: "identity"
|
|
202
|
+
},
|
|
203
|
+
"checkbox.fill-color": {
|
|
204
|
+
from: "combo.toggle-button-background",
|
|
205
|
+
transform: "identity"
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
additionalScopes: {
|
|
209
|
+
overlay: { angular: ".igx-drop-down__list" },
|
|
210
|
+
input: { angular: "igx-combo, .igx-drop-down__list" }
|
|
211
|
+
},
|
|
212
|
+
childScopes: {
|
|
213
|
+
"drop-down": { angular: "overlay" },
|
|
214
|
+
checkbox: { angular: "overlay" },
|
|
215
|
+
"input-group": { angular: "input" }
|
|
216
|
+
},
|
|
217
|
+
guidance: "The combo's input-group, drop-down, and checkbox should share a consistent color scheme."
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"simple-combo": {
|
|
221
|
+
selectors: {
|
|
222
|
+
angular: "igx-simple-combo",
|
|
223
|
+
webcomponents: "igc-combo[single-select]"
|
|
224
|
+
},
|
|
225
|
+
compound: {
|
|
226
|
+
description: "The simple combo component combines input and drop-down components.",
|
|
227
|
+
relatedThemes: ["input-group", "drop-down"],
|
|
228
|
+
tokenDerivations: {
|
|
229
|
+
"combo.empty-list-background": {
|
|
230
|
+
from: "combo.toggle-button-background",
|
|
231
|
+
transform: "identity"
|
|
232
|
+
},
|
|
233
|
+
"input-group.focused-border-color": {
|
|
234
|
+
from: "combo.toggle-button-background",
|
|
235
|
+
transform: "identity"
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
additionalScopes: { overlay: { angular: ".igx-drop-down__list" } },
|
|
239
|
+
childScopes: { "drop-down": { angular: "overlay" } },
|
|
240
|
+
guidance: "The simple-combo's input-group and drop-down should share a consistent color scheme."
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"date-picker": {
|
|
244
|
+
selectors: {
|
|
245
|
+
angular: "igx-date-picker",
|
|
246
|
+
webcomponents: "igc-date-picker"
|
|
247
|
+
},
|
|
248
|
+
compound: {
|
|
249
|
+
description: "The date-picker combines input, calendar, and flat-button components.",
|
|
250
|
+
relatedThemes: [
|
|
251
|
+
"flat-button",
|
|
252
|
+
"input-group",
|
|
253
|
+
"calendar"
|
|
254
|
+
],
|
|
255
|
+
additionalScopes: { overlay: { angular: ".igx-date-picker" } },
|
|
256
|
+
childScopes: {
|
|
257
|
+
calendar: { angular: "overlay" },
|
|
258
|
+
"flat-button": { angular: "overlay" },
|
|
259
|
+
"input-group": { angular: "inline" }
|
|
260
|
+
},
|
|
261
|
+
tokenDerivations: { "flat-button.foreground": {
|
|
262
|
+
from: "calendar.content-background",
|
|
263
|
+
transform: "adaptive-contrast"
|
|
264
|
+
} },
|
|
265
|
+
guidance: "The flat-button foreground inside the calendar should contrast with the calendar content background."
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"date-range-picker": {
|
|
269
|
+
selectors: {
|
|
270
|
+
angular: "igx-date-range-picker",
|
|
271
|
+
webcomponents: "igc-date-range-picker"
|
|
272
|
+
},
|
|
273
|
+
compound: {
|
|
274
|
+
description: "The date-range-picker combines input, calendar, and flat-button components.",
|
|
275
|
+
relatedThemes: [
|
|
276
|
+
"flat-button",
|
|
277
|
+
"input-group",
|
|
278
|
+
"calendar"
|
|
279
|
+
],
|
|
280
|
+
additionalScopes: { overlay: { angular: ".igx-date-picker" } },
|
|
281
|
+
childScopes: {
|
|
282
|
+
calendar: { angular: "overlay" },
|
|
283
|
+
"flat-button": { angular: "overlay" },
|
|
284
|
+
"input-group": { angular: "inline" }
|
|
285
|
+
},
|
|
286
|
+
tokenDerivations: { "flat-button.foreground": {
|
|
287
|
+
from: "calendar.content-background",
|
|
288
|
+
transform: "adaptive-contrast"
|
|
289
|
+
} },
|
|
290
|
+
guidance: "The flat-button foreground inside the calendar should contrast with the calendar content background."
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
"date-range-start": {
|
|
294
|
+
selectors: {
|
|
295
|
+
angular: "igx-date-range-start",
|
|
296
|
+
webcomponents: null
|
|
297
|
+
},
|
|
298
|
+
theme: "input-group"
|
|
299
|
+
},
|
|
300
|
+
"date-range-end": {
|
|
301
|
+
selectors: {
|
|
302
|
+
angular: "igx-date-range-end",
|
|
303
|
+
webcomponents: null
|
|
304
|
+
},
|
|
305
|
+
theme: "input-group"
|
|
306
|
+
},
|
|
307
|
+
"date-time-input": { selectors: {
|
|
308
|
+
angular: null,
|
|
309
|
+
webcomponents: "igc-date-time-input"
|
|
310
|
+
} },
|
|
311
|
+
dialog: {
|
|
312
|
+
selectors: {
|
|
313
|
+
angular: ".igx-dialog",
|
|
314
|
+
webcomponents: "igc-dialog"
|
|
315
|
+
},
|
|
316
|
+
compound: {
|
|
317
|
+
description: "The dialog component uses flat-buttons for the actions",
|
|
318
|
+
relatedThemes: ["flat-button"],
|
|
319
|
+
tokenDerivations: { "flat-button.foreground": {
|
|
320
|
+
from: "dialog.background",
|
|
321
|
+
transform: "adaptive-contrast"
|
|
322
|
+
} },
|
|
323
|
+
guidance: `The dialog action buttons should visually coordinate with the dialog background. \
|
|
324
|
+
If customizing the dialog background, ensure flat-button foreground contrasts against it.`
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
divider: { selectors: {
|
|
328
|
+
angular: "igx-divider",
|
|
329
|
+
webcomponents: "igc-divider"
|
|
330
|
+
} },
|
|
331
|
+
"dock-manager": { selectors: {
|
|
332
|
+
angular: "igc-dockmanager",
|
|
333
|
+
webcomponents: "igc-dockmanager"
|
|
334
|
+
} },
|
|
335
|
+
"drop-down": { selectors: {
|
|
336
|
+
angular: ".igx-drop-down__list",
|
|
337
|
+
webcomponents: "igc-dropdown"
|
|
338
|
+
} },
|
|
339
|
+
"expansion-panel": { selectors: {
|
|
340
|
+
angular: "igx-expansion-panel",
|
|
341
|
+
webcomponents: "igc-expansion-panel"
|
|
342
|
+
} },
|
|
343
|
+
"file-input": {
|
|
344
|
+
selectors: {
|
|
345
|
+
angular: "igx-input-group[class~=\"igx-input-group--file\"]",
|
|
346
|
+
webcomponents: "igc-file-input"
|
|
347
|
+
},
|
|
348
|
+
compound: {
|
|
349
|
+
description: "The file-input uses an input-group for the input field.",
|
|
350
|
+
relatedThemes: ["input-group", "file-input"],
|
|
351
|
+
guidance: `The file input is composed of an input-group and a browse button. \
|
|
352
|
+
Both themes should share the same visual treatment as the file-input wrapper.`
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
grid: {
|
|
356
|
+
selectors: {
|
|
357
|
+
angular: "igx-grid",
|
|
358
|
+
webcomponents: "igc-grid"
|
|
359
|
+
},
|
|
360
|
+
compound: GRID_COMPOUND_INFO
|
|
361
|
+
},
|
|
362
|
+
"tree-grid": {
|
|
363
|
+
selectors: {
|
|
364
|
+
angular: "igx-tree-grid",
|
|
365
|
+
webcomponents: "igc-tree-grid"
|
|
366
|
+
},
|
|
367
|
+
theme: "grid",
|
|
368
|
+
compound: GRID_COMPOUND_INFO
|
|
369
|
+
},
|
|
370
|
+
"hierarchical-grid": {
|
|
371
|
+
selectors: {
|
|
372
|
+
angular: "igx-hierarchical-grid",
|
|
373
|
+
webcomponents: "igc-hierarchical-grid"
|
|
374
|
+
},
|
|
375
|
+
theme: "grid",
|
|
376
|
+
compound: GRID_COMPOUND_INFO
|
|
377
|
+
},
|
|
378
|
+
"pivot-grid": {
|
|
379
|
+
selectors: {
|
|
380
|
+
angular: "igx-pivot-grid",
|
|
381
|
+
webcomponents: "igc-pivot-grid"
|
|
382
|
+
},
|
|
383
|
+
theme: "grid",
|
|
384
|
+
compound: GRID_COMPOUND_INFO
|
|
385
|
+
},
|
|
386
|
+
"grid-lite": {
|
|
387
|
+
selectors: {
|
|
388
|
+
angular: "igx-grid-lite",
|
|
389
|
+
webcomponents: "igc-grid-lite"
|
|
390
|
+
},
|
|
391
|
+
theme: "grid",
|
|
392
|
+
compound: {
|
|
393
|
+
description: "The grid lite component is a compound component some themeable parts including chips and checkboxes.",
|
|
394
|
+
relatedThemes: ["checkbox", "chip"]
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"grid-excel-style-filtering": {
|
|
398
|
+
selectors: {
|
|
399
|
+
angular: "igx-grid-excel-style-filtering",
|
|
400
|
+
webcomponents: "igc-grid-excel-style-filtering"
|
|
401
|
+
},
|
|
402
|
+
theme: "grid",
|
|
403
|
+
compound: GRID_COMPOUND_INFO
|
|
404
|
+
},
|
|
405
|
+
"grid-summary": { selectors: {
|
|
406
|
+
angular: ".igx-grid-summary",
|
|
407
|
+
webcomponents: "igc-grid-summary"
|
|
408
|
+
} },
|
|
409
|
+
"grid-toolbar": { selectors: {
|
|
410
|
+
angular: "igx-grid-toolbar",
|
|
411
|
+
webcomponents: "igc-grid-toolbar"
|
|
412
|
+
} },
|
|
413
|
+
highlight: { selectors: {
|
|
414
|
+
angular: "igx-highlight",
|
|
415
|
+
webcomponents: "igc-highlight"
|
|
416
|
+
} },
|
|
417
|
+
icon: { selectors: {
|
|
418
|
+
angular: "igx-icon",
|
|
419
|
+
webcomponents: "igc-icon"
|
|
420
|
+
} },
|
|
421
|
+
"input-group": { selectors: {
|
|
422
|
+
angular: "igx-input-group",
|
|
423
|
+
webcomponents: "igc-input"
|
|
424
|
+
} },
|
|
425
|
+
label: { selectors: {
|
|
426
|
+
angular: "[igxLabel]",
|
|
427
|
+
webcomponents: "igc-label"
|
|
428
|
+
} },
|
|
429
|
+
list: { selectors: {
|
|
430
|
+
angular: "igx-list",
|
|
431
|
+
webcomponents: "igc-list"
|
|
432
|
+
} },
|
|
433
|
+
navbar: {
|
|
434
|
+
selectors: {
|
|
435
|
+
angular: "igx-navbar",
|
|
436
|
+
webcomponents: "igc-navbar"
|
|
437
|
+
},
|
|
438
|
+
compound: {
|
|
439
|
+
description: "The navbar contains buttons and icons-buttons for navigation.",
|
|
440
|
+
relatedThemes: [
|
|
441
|
+
"flat-button",
|
|
442
|
+
"outlined-button",
|
|
443
|
+
"contained-button",
|
|
444
|
+
"flat-icon-button",
|
|
445
|
+
"outlined-icon-button",
|
|
446
|
+
"contained-icon-button"
|
|
447
|
+
],
|
|
448
|
+
guidance: "Make sure to theme all button and icon-button variants in the navbar to visually coordinate with the navbar background."
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
navdrawer: { selectors: {
|
|
452
|
+
angular: "igx-nav-drawer",
|
|
453
|
+
webcomponents: "igc-nav-drawer"
|
|
454
|
+
} },
|
|
455
|
+
overlay: { selectors: {
|
|
456
|
+
angular: ".igx-overlay__content",
|
|
457
|
+
webcomponents: null
|
|
458
|
+
} },
|
|
459
|
+
paginator: {
|
|
460
|
+
selectors: {
|
|
461
|
+
angular: "igx-paginator",
|
|
462
|
+
webcomponents: "igc-paginator"
|
|
463
|
+
},
|
|
464
|
+
compound: {
|
|
465
|
+
description: "The paginator uses combo and flat-icon-buttons for the page controls.",
|
|
466
|
+
relatedThemes: ["combo", "flat-icon-button"],
|
|
467
|
+
guidance: "The combo and flat-icon-button themes should visually coordinate with each other and the overall paginator background."
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"pivot-data-selector": {
|
|
471
|
+
selectors: {
|
|
472
|
+
angular: "igx-pivot-data-selector",
|
|
473
|
+
webcomponents: "igc-pivot-data-selector"
|
|
474
|
+
},
|
|
475
|
+
compound: {
|
|
476
|
+
description: "The pivot data selector uses checkboxes, expansion panels, lists, and chips.",
|
|
477
|
+
relatedThemes: [
|
|
478
|
+
"checkbox",
|
|
479
|
+
"expansion-panel",
|
|
480
|
+
"chip",
|
|
481
|
+
"list"
|
|
482
|
+
],
|
|
483
|
+
guidance: `The pivot data selector uses checkboxes for field selection, expansion panels for grouping, \
|
|
484
|
+
chips for displaying selected fields, and lists for field ordering. \
|
|
485
|
+
Detailed token derivation rules are not yet available — use the token names \
|
|
486
|
+
and descriptions from get_component_design_tokens for each child to guide value selection.`
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"progress-circular": { selectors: {
|
|
490
|
+
angular: "igx-circular-bar",
|
|
491
|
+
webcomponents: "igc-circular-progress"
|
|
492
|
+
} },
|
|
493
|
+
"progress-linear": { selectors: {
|
|
494
|
+
angular: "igx-linear-bar",
|
|
495
|
+
webcomponents: "igc-linear-progress"
|
|
496
|
+
} },
|
|
497
|
+
"query-builder": {
|
|
498
|
+
selectors: {
|
|
499
|
+
angular: "igx-query-builder",
|
|
500
|
+
webcomponents: null
|
|
501
|
+
},
|
|
502
|
+
compound: {
|
|
503
|
+
description: "The query builder uses inputs, dropdowns, chips, buttons and button-groups for building query expressions.",
|
|
504
|
+
relatedThemes: [
|
|
505
|
+
"input-group",
|
|
506
|
+
"select",
|
|
507
|
+
"chip",
|
|
508
|
+
"flat-button",
|
|
509
|
+
"outlined-button",
|
|
510
|
+
"button-group",
|
|
511
|
+
"flat-icon-button",
|
|
512
|
+
"outlined-icon-button"
|
|
513
|
+
],
|
|
514
|
+
guidance: `The query builder uses input-groups and selects for expression values and operator/field selection, \
|
|
515
|
+
chips for displaying conditions, and buttons/button-groups for adding and grouping expressions.`
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
radio: { selectors: {
|
|
519
|
+
angular: "igx-radio",
|
|
520
|
+
webcomponents: "igc-radio"
|
|
521
|
+
} },
|
|
522
|
+
rating: { selectors: {
|
|
523
|
+
angular: "igc-rating",
|
|
524
|
+
webcomponents: "igc-rating"
|
|
525
|
+
} },
|
|
526
|
+
ripple: { selectors: {
|
|
527
|
+
angular: "igx-ripple",
|
|
528
|
+
webcomponents: "igc-ripple"
|
|
529
|
+
} },
|
|
530
|
+
scrollbar: { selectors: {
|
|
531
|
+
angular: ".ig-scrollbar",
|
|
532
|
+
webcomponents: ".ig-scrollbar"
|
|
533
|
+
} },
|
|
534
|
+
select: {
|
|
535
|
+
selectors: {
|
|
536
|
+
angular: "igx-select",
|
|
537
|
+
webcomponents: "igc-select"
|
|
538
|
+
},
|
|
539
|
+
compound: {
|
|
540
|
+
description: "The select component combines input-group and drop-down components.",
|
|
541
|
+
relatedThemes: ["input-group", "drop-down"],
|
|
542
|
+
additionalScopes: { overlay: { angular: ".igx-drop-down__list" } },
|
|
543
|
+
childScopes: { "drop-down": { angular: "overlay" } },
|
|
544
|
+
tokenDerivations: {
|
|
545
|
+
"input-group.focused-border-color": {
|
|
546
|
+
from: "select.toggle-button-background",
|
|
547
|
+
transform: "identity"
|
|
548
|
+
},
|
|
549
|
+
"drop-down.background-color": {
|
|
550
|
+
from: "select.toggle-button-background",
|
|
551
|
+
transform: "identity"
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
guidance: `The select input-group and drop-down should share a consistent color scheme. \
|
|
555
|
+
The drop-down background should match the select surface intent.`
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
slider: { selectors: {
|
|
559
|
+
angular: "igx-slider",
|
|
560
|
+
webcomponents: "igc-slider"
|
|
561
|
+
} },
|
|
562
|
+
snackbar: { selectors: {
|
|
563
|
+
angular: "igx-snackbar",
|
|
564
|
+
webcomponents: "igc-snackbar"
|
|
565
|
+
} },
|
|
566
|
+
splitter: { selectors: {
|
|
567
|
+
angular: "igx-splitter",
|
|
568
|
+
webcomponents: "igc-splitter"
|
|
569
|
+
} },
|
|
570
|
+
stepper: { selectors: {
|
|
571
|
+
angular: "igx-stepper",
|
|
572
|
+
webcomponents: "igc-stepper"
|
|
573
|
+
} },
|
|
574
|
+
switch: { selectors: {
|
|
575
|
+
angular: "igx-switch",
|
|
576
|
+
webcomponents: "igc-switch"
|
|
577
|
+
} },
|
|
578
|
+
tabs: { selectors: {
|
|
579
|
+
angular: "igx-tabs",
|
|
580
|
+
webcomponents: "igc-tabs"
|
|
581
|
+
} },
|
|
582
|
+
"time-picker": {
|
|
583
|
+
selectors: {
|
|
584
|
+
angular: "igx-time-picker",
|
|
585
|
+
webcomponents: null
|
|
586
|
+
},
|
|
587
|
+
compound: {
|
|
588
|
+
description: "The time picker uses an input-group for the input field.",
|
|
589
|
+
relatedThemes: [
|
|
590
|
+
"input-group",
|
|
591
|
+
"time-picker",
|
|
592
|
+
"flat-button"
|
|
593
|
+
],
|
|
594
|
+
additionalScopes: { overlay: { angular: ".igx-time-picker" } },
|
|
595
|
+
childScopes: {
|
|
596
|
+
"time-picker": { angular: "overlay" },
|
|
597
|
+
"flat-button": { angular: "overlay" }
|
|
598
|
+
},
|
|
599
|
+
guidance: `The time-picker input-group and the time-picker dial should share a consistent color scheme. \
|
|
600
|
+
The input-group text color should coordinate with the time-picker header.`
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
textarea: {
|
|
604
|
+
selectors: {
|
|
605
|
+
angular: ".igx-input-group--textarea-group",
|
|
606
|
+
webcomponents: "igc-textarea"
|
|
607
|
+
},
|
|
608
|
+
theme: "input-group"
|
|
609
|
+
},
|
|
610
|
+
toast: { selectors: {
|
|
611
|
+
angular: "igx-toast",
|
|
612
|
+
webcomponents: "igc-toast"
|
|
613
|
+
} },
|
|
614
|
+
tooltip: { selectors: {
|
|
615
|
+
angular: ".igx-tooltip",
|
|
616
|
+
webcomponents: "igc-tooltip"
|
|
617
|
+
} },
|
|
618
|
+
tree: { selectors: {
|
|
619
|
+
angular: "igx-tree-node",
|
|
620
|
+
webcomponents: "igc-tree"
|
|
621
|
+
} },
|
|
622
|
+
watermark: { selectors: {
|
|
623
|
+
angular: "igc-trial-watermark",
|
|
624
|
+
webcomponents: "igc-trial-watermark"
|
|
625
|
+
} }
|
|
546
626
|
};
|
|
547
|
-
new Set(
|
|
548
|
-
|
|
549
|
-
)
|
|
627
|
+
new Set(Object.values(COMPONENT_METADATA).filter((m) => m.variants).flatMap((m) => m.variants));
|
|
628
|
+
/**
|
|
629
|
+
* Get the selector(s) for a component on a specific platform.
|
|
630
|
+
* @param componentName - The component name
|
|
631
|
+
* @param platform - The target platform
|
|
632
|
+
* @returns Array of selectors (normalized to always return array), empty array if component not found or not available on platform
|
|
633
|
+
*/
|
|
550
634
|
function getComponentSelector(componentName, platform) {
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
if (platformSelectors === null) {
|
|
557
|
-
return [];
|
|
558
|
-
}
|
|
559
|
-
return Array.isArray(platformSelectors) ? platformSelectors : [platformSelectors];
|
|
635
|
+
const metadata = COMPONENT_METADATA[componentName];
|
|
636
|
+
if (!metadata) return [];
|
|
637
|
+
const platformSelectors = platform === "angular" ? metadata.selectors.angular : metadata.selectors.webcomponents;
|
|
638
|
+
if (platformSelectors === null) return [];
|
|
639
|
+
return Array.isArray(platformSelectors) ? platformSelectors : [platformSelectors];
|
|
560
640
|
}
|
|
641
|
+
/**
|
|
642
|
+
* Check if a component is available on a specific platform.
|
|
643
|
+
* @param componentName - The component name
|
|
644
|
+
* @param platform - The target platform ('angular' or 'webcomponents')
|
|
645
|
+
* @returns True if the component is available on the platform, false otherwise
|
|
646
|
+
*/
|
|
561
647
|
function isComponentAvailable(componentName, platform) {
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
}
|
|
566
|
-
const platformSelector = platform === "angular" ? metadata.selectors.angular : metadata.selectors.webcomponents;
|
|
567
|
-
return platformSelector !== null;
|
|
648
|
+
const metadata = COMPONENT_METADATA[componentName];
|
|
649
|
+
if (!metadata) return false;
|
|
650
|
+
return (platform === "angular" ? metadata.selectors.angular : metadata.selectors.webcomponents) !== null;
|
|
568
651
|
}
|
|
652
|
+
/**
|
|
653
|
+
* Get platform availability for a component.
|
|
654
|
+
* @param componentName - The component name
|
|
655
|
+
* @returns Object indicating availability on each platform, or undefined if component not found
|
|
656
|
+
*/
|
|
569
657
|
function getComponentPlatformAvailability(componentName) {
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
webcomponents: metadata.selectors.webcomponents !== null
|
|
577
|
-
};
|
|
658
|
+
const metadata = COMPONENT_METADATA[componentName];
|
|
659
|
+
if (!metadata) return;
|
|
660
|
+
return {
|
|
661
|
+
angular: metadata.selectors.angular !== null,
|
|
662
|
+
webcomponents: metadata.selectors.webcomponents !== null
|
|
663
|
+
};
|
|
578
664
|
}
|
|
665
|
+
/**
|
|
666
|
+
* Check if a component has variants.
|
|
667
|
+
* @param componentName - The component name (e.g., 'button')
|
|
668
|
+
* @returns True if the component has variant-specific themes
|
|
669
|
+
*/
|
|
579
670
|
function hasVariants(componentName) {
|
|
580
|
-
|
|
671
|
+
return !!COMPONENT_METADATA[componentName]?.variants;
|
|
581
672
|
}
|
|
673
|
+
/**
|
|
674
|
+
* Get variants for a component.
|
|
675
|
+
* @param componentName - The component name (e.g., 'button')
|
|
676
|
+
* @returns Array of variant names or empty array
|
|
677
|
+
*/
|
|
582
678
|
function getVariants(componentName) {
|
|
583
|
-
|
|
679
|
+
return COMPONENT_METADATA[componentName]?.variants ?? [];
|
|
584
680
|
}
|
|
681
|
+
/**
|
|
682
|
+
* Get compound component info if applicable.
|
|
683
|
+
* @param componentName - The component name
|
|
684
|
+
* @returns CompoundInfo or undefined
|
|
685
|
+
*/
|
|
585
686
|
function getCompoundComponentInfo(componentName) {
|
|
586
|
-
|
|
687
|
+
return COMPONENT_METADATA[componentName]?.compound;
|
|
587
688
|
}
|
|
689
|
+
/**
|
|
690
|
+
* Check if a component is a compound component.
|
|
691
|
+
* @param componentName - The component name
|
|
692
|
+
* @returns True if this is a compound component
|
|
693
|
+
*/
|
|
588
694
|
function isCompoundComponent(componentName) {
|
|
589
|
-
|
|
695
|
+
return !!COMPONENT_METADATA[componentName]?.compound;
|
|
590
696
|
}
|
|
697
|
+
/**
|
|
698
|
+
* Get token derivations for a specific child theme within a compound component.
|
|
699
|
+
* @param compoundName - The compound component name
|
|
700
|
+
* @param childThemeName - The child theme name (e.g., 'flat-button')
|
|
701
|
+
* @returns Record of 'childToken' -> TokenDerivation, or empty record if none exist
|
|
702
|
+
*/
|
|
591
703
|
function getTokenDerivationsForChild(compoundName, childThemeName) {
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
result[childToken] = derivation;
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
return result;
|
|
704
|
+
const compound = COMPONENT_METADATA[compoundName]?.compound;
|
|
705
|
+
if (!compound?.tokenDerivations) return {};
|
|
706
|
+
const prefix = `${childThemeName}.`;
|
|
707
|
+
const result = {};
|
|
708
|
+
for (const [key, derivation] of Object.entries(compound.tokenDerivations)) if (key.startsWith(prefix)) {
|
|
709
|
+
const childToken = key.slice(prefix.length);
|
|
710
|
+
result[childToken] = derivation;
|
|
711
|
+
}
|
|
712
|
+
return result;
|
|
605
713
|
}
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
getComponentPlatformAvailability,
|
|
609
|
-
getComponentSelector,
|
|
610
|
-
getCompoundComponentInfo,
|
|
611
|
-
getTokenDerivationsForChild,
|
|
612
|
-
getVariants,
|
|
613
|
-
hasVariants,
|
|
614
|
-
isComponentAvailable,
|
|
615
|
-
isCompoundComponent
|
|
616
|
-
};
|
|
714
|
+
//#endregion
|
|
715
|
+
export { COMPONENT_METADATA, getComponentPlatformAvailability, getComponentSelector, getCompoundComponentInfo, getTokenDerivationsForChild, getVariants, hasVariants, isComponentAvailable, isCompoundComponent };
|