@educarehq/solaris-ui 0.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,37 @@
1
+ /// Solaris UI Core
2
+ /// Provides root font-size strategy and base resets.
3
+ ///
4
+ /// The default `none` strategy respects the browser's default font-size (typically 16px)
5
+ /// and produces no additional CSS. Consumers who prefer the `rem-10` strategy may opt in,
6
+ /// but must ensure token SCSS files are imported at the correct scope.
7
+ ///
8
+ /// Usage:
9
+ /// @use '@solaris-ui/angular/styles' as solaris;
10
+ ///
11
+ /// // Default: no root font-size override (browser default)
12
+ /// @include solaris.core();
13
+ ///
14
+ /// // rem-10 strategy: 1rem = 10px at root, body reset to 16px
15
+ /// @include solaris.core((root-font-size: rem-10));
16
+
17
+ @use 'sass:map';
18
+
19
+ $-default-config: (
20
+ root-font-size: none,
21
+ );
22
+
23
+ @mixin core($config: ()) {
24
+ $merged: map.merge($-default-config, $config);
25
+
26
+ $root-font-size: map.get($merged, root-font-size);
27
+
28
+ @if $root-font-size == rem-10 {
29
+ :root {
30
+ font-size: 62.5%;
31
+ }
32
+
33
+ body {
34
+ font-size: 1.6rem;
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,657 @@
1
+ [solaris-icon-button] {
2
+ --solaris-icon-button-color: initial;
3
+ --solaris-icon-button-radius: initial;
4
+ --solaris-icon-button-size: initial;
5
+ --solaris-icon-button-background: initial;
6
+ --solaris-icon-button-border-color: initial;
7
+ --solaris-icon-button-border-width: initial;
8
+ --solaris-icon-button-hover-background: initial;
9
+ --solaris-icon-button-hover-border-color: initial;
10
+ --solaris-icon-button-active-background: initial;
11
+ --solaris-icon-button-active-border-color: initial;
12
+ --solaris-icon-button-focus-ring-color: initial;
13
+ --solaris-icon-button-disabled-opacity: 0.5;
14
+
15
+ --solaris-icon-button-custom-color: initial;
16
+ --solaris-icon-button-custom-background: initial;
17
+ --solaris-icon-button-custom-border-color: initial;
18
+ --solaris-icon-button-custom-hover-background: initial;
19
+ --solaris-icon-button-custom-hover-border-color: initial;
20
+ --solaris-icon-button-custom-active-background: initial;
21
+ --solaris-icon-button-custom-active-border-color: initial;
22
+
23
+ cursor: pointer;
24
+ user-select: none;
25
+ display: inline-flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ text-decoration: none;
29
+ box-sizing: border-box;
30
+ position: relative;
31
+ flex-shrink: 0;
32
+ color: var(--solaris-icon-button-color);
33
+ width: var(--solaris-icon-button-size);
34
+ height: var(--solaris-icon-button-size);
35
+ min-width: var(--solaris-icon-button-size);
36
+ min-height: var(--solaris-icon-button-size);
37
+ border-radius: var(--solaris-icon-button-radius);
38
+ background: var(--solaris-icon-button-background);
39
+ padding: 0;
40
+ border: var(--solaris-icon-button-border-width) solid
41
+ var(--solaris-icon-button-border-color);
42
+ line-height: 1;
43
+ font-family: var(--solaris-font-family-sans), system-ui;
44
+ transition:
45
+ background var(--solaris-motion-duration-normal, 250ms)
46
+ var(--solaris-motion-easing-standard, ease),
47
+ border-color var(--solaris-motion-duration-normal, 250ms)
48
+ var(--solaris-motion-easing-standard, ease),
49
+ color var(--solaris-motion-duration-normal, 250ms)
50
+ var(--solaris-motion-easing-standard, ease),
51
+ box-shadow var(--solaris-motion-duration-normal, 250ms)
52
+ var(--solaris-motion-easing-standard, ease),
53
+ transform var(--solaris-motion-duration-fast, 150ms)
54
+ var(--solaris-motion-easing-standard, ease);
55
+ }
56
+
57
+ [solaris-icon-button]:hover {
58
+ background: var(--solaris-icon-button-hover-background);
59
+ border-color: var(--solaris-icon-button-hover-border-color);
60
+ }
61
+
62
+ [solaris-icon-button]:active,
63
+ [solaris-icon-button][data-active] {
64
+ background: var(--solaris-icon-button-active-background);
65
+ border-color: var(--solaris-icon-button-active-border-color);
66
+ }
67
+
68
+ [solaris-icon-button]:focus-visible {
69
+ outline-offset: 2px;
70
+ outline: 2px solid var(--solaris-icon-button-focus-ring-color);
71
+ }
72
+
73
+ [solaris-icon-button][disabled],
74
+ [solaris-icon-button][aria-disabled='true'] {
75
+ cursor: not-allowed;
76
+ pointer-events: all;
77
+ opacity: var(--solaris-icon-button-disabled-opacity);
78
+ }
79
+
80
+ [solaris-icon-button][data-loading] {
81
+ cursor: wait;
82
+ position: relative;
83
+ pointer-events: all;
84
+ }
85
+
86
+ [solaris-icon-button] solaris-icon {
87
+ width: 1em;
88
+ height: 1em;
89
+ }
90
+
91
+ [solaris-icon-button] solaris-icon svg {
92
+ width: 100%;
93
+ height: 100%;
94
+ }
95
+
96
+ [solaris-icon-button][data-loading] solaris-icon {
97
+ display: none;
98
+ }
99
+
100
+ [solaris-icon-button][data-loading]::before {
101
+ content: '';
102
+ flex-shrink: 0;
103
+ border-radius: 50%;
104
+ width: 1em;
105
+ height: 1em;
106
+ border: 2px solid var(--solaris-icon-button-color);
107
+ border-top-color: transparent;
108
+ animation: solaris-icon-button-spin 0.6s linear infinite;
109
+ }
110
+
111
+ @media (prefers-reduced-motion: reduce) {
112
+ [solaris-icon-button][data-loading]::before {
113
+ opacity: 0.5;
114
+ animation: none;
115
+ }
116
+ }
117
+
118
+ [data-reduced-motion='true'] [solaris-icon-button][data-loading]::before {
119
+ animation: none;
120
+ opacity: 0.5;
121
+ }
122
+
123
+ @keyframes solaris-icon-button-spin {
124
+ to {
125
+ transform: rotate(360deg);
126
+ }
127
+ }
128
+
129
+ [solaris-icon-button] .solaris-icon-button-badge {
130
+ position: absolute;
131
+ top: 0;
132
+ right: 0;
133
+ transform: translate(50%, -50%);
134
+ pointer-events: none;
135
+ }
136
+
137
+ /* Appearance base */
138
+ [solaris-icon-button][data-appearance='solid'] {
139
+ --solaris-icon-button-border-width: 0;
140
+ }
141
+
142
+ [solaris-icon-button][data-appearance='outline'] {
143
+ --solaris-icon-button-border-width: 1px;
144
+ --solaris-icon-button-background: transparent;
145
+ }
146
+
147
+ [solaris-icon-button][data-appearance='ghost'] {
148
+ --solaris-icon-button-border-width: 0;
149
+ --solaris-icon-button-background: transparent;
150
+ --solaris-icon-button-border-color: transparent;
151
+ }
152
+
153
+ [solaris-icon-button][data-appearance='tonal'] {
154
+ --solaris-icon-button-border-width: 1px;
155
+ }
156
+
157
+ [solaris-icon-button][data-appearance='surface'] {
158
+ --solaris-icon-button-border-width: 0;
159
+ }
160
+
161
+ [solaris-icon-button][data-appearance='glass'] {
162
+ --solaris-icon-button-border-width: 1px;
163
+ --solaris-icon-button-glass-blur: 22px;
164
+
165
+ // SOLARIS_TOKEN_EXCEPTION: glass appearance requires translucent rgba values for frosted glass effect.
166
+ --solaris-icon-button-background:
167
+ linear-gradient(
168
+ 135deg,
169
+ rgba(255, 255, 255, 0.24) 0%,
170
+ rgba(255, 255, 255, 0.1) 34%,
171
+ rgba(255, 255, 255, 0.04) 100%
172
+ ),
173
+ rgba(24, 20, 18, 0.34);
174
+
175
+ // SOLARIS_TOKEN_EXCEPTION: glass appearance requires translucent rgba values for frosted glass effect.
176
+ --solaris-icon-button-hover-background:
177
+ linear-gradient(
178
+ 135deg,
179
+ rgba(255, 255, 255, 0.3) 0%,
180
+ rgba(255, 255, 255, 0.14) 34%,
181
+ rgba(255, 255, 255, 0.06) 100%
182
+ ),
183
+ rgba(24, 20, 18, 0.4);
184
+
185
+ // SOLARIS_TOKEN_EXCEPTION: glass appearance requires translucent rgba values for frosted glass effect.
186
+ --solaris-icon-button-active-background:
187
+ linear-gradient(
188
+ 135deg,
189
+ rgba(255, 255, 255, 0.22) 0%,
190
+ rgba(255, 255, 255, 0.1) 34%,
191
+ rgba(255, 255, 255, 0.04) 100%
192
+ ),
193
+ rgba(24, 20, 18, 0.46);
194
+
195
+ // SOLARIS_TOKEN_EXCEPTION: glass appearance requires translucent rgba values for frosted glass effect.
196
+ --solaris-icon-button-border-color: rgba(255, 255, 255, 0.22);
197
+ --solaris-icon-button-hover-border-color: rgba(255, 255, 255, 0.3);
198
+ --solaris-icon-button-active-border-color: rgba(255, 255, 255, 0.26);
199
+
200
+ --solaris-icon-button-glass-accent: rgba(255, 110, 24, 0.36);
201
+ --solaris-icon-button-glass-accent-hover: rgba(255, 110, 24, 0.46);
202
+
203
+ position: relative;
204
+ isolation: isolate;
205
+ overflow: hidden;
206
+
207
+ background: var(--solaris-icon-button-background);
208
+ border-color: var(--solaris-icon-button-border-color);
209
+
210
+ // SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/box-shadow for the frosted glass depth effect.
211
+ box-shadow:
212
+ 0 12px 36px rgba(0, 0, 0, 0.34),
213
+ inset 0 1px 0 rgba(255, 255, 255, 0.28),
214
+ inset 0 -1px 0 rgba(255, 255, 255, 0.06);
215
+
216
+ backdrop-filter: blur(var(--solaris-icon-button-glass-blur)) saturate(150%)
217
+ contrast(108%);
218
+
219
+ -webkit-backdrop-filter: blur(var(--solaris-icon-button-glass-blur))
220
+ saturate(150%) contrast(108%);
221
+ }
222
+
223
+ [solaris-icon-button][data-appearance='glass']::before {
224
+ inset: 0;
225
+ content: '';
226
+ z-index: -1;
227
+ opacity: 0.95;
228
+ position: absolute;
229
+ pointer-events: none;
230
+ border-radius: inherit;
231
+
232
+ // SOLARIS_TOKEN_EXCEPTION: glass ::before requires translucent rgba for inner highlights.
233
+ background:
234
+ radial-gradient(
235
+ circle at 72% 58%,
236
+ var(--solaris-icon-button-glass-accent),
237
+ transparent 42%
238
+ ),
239
+ radial-gradient(
240
+ circle at 22% 16%,
241
+ rgba(255, 255, 255, 0.2),
242
+ transparent 34%
243
+ ),
244
+ // SOLARIS_TOKEN_EXCEPTION: glass ::before requires translucent rgba for inner highlights.
245
+ linear-gradient(135deg, rgba(255, 255, 255, 0.18), transparent 46%);
246
+
247
+ transition:
248
+ opacity var(--solaris-motion-duration-normal, 250ms)
249
+ var(--solaris-motion-easing-standard, ease),
250
+ filter var(--solaris-motion-duration-normal, 250ms)
251
+ var(--solaris-motion-easing-standard, ease);
252
+ }
253
+
254
+ [solaris-icon-button][data-appearance='glass']:hover {
255
+ background: var(--solaris-icon-button-hover-background);
256
+ border-color: var(--solaris-icon-button-hover-border-color);
257
+
258
+ // SOLARIS_TOKEN_EXCEPTION: glass hover requires translucent rgba/box-shadow for the depth effect.
259
+ box-shadow:
260
+ 0 14px 42px rgba(0, 0, 0, 0.38),
261
+ inset 0 1px 0 rgba(255, 255, 255, 0.34),
262
+ inset 0 -1px 0 rgba(255, 255, 255, 0.08);
263
+ }
264
+
265
+ [solaris-icon-button][data-appearance='glass']:hover::before {
266
+ opacity: 1;
267
+ filter: saturate(115%);
268
+ }
269
+
270
+ [solaris-icon-button][data-appearance='glass']:active,
271
+ [solaris-icon-button][data-appearance='glass'][data-active] {
272
+ transform: translateY(1px);
273
+ background: var(--solaris-icon-button-active-background);
274
+ border-color: var(--solaris-icon-button-active-border-color);
275
+
276
+ // SOLARIS_TOKEN_EXCEPTION: glass active requires translucent rgba/box-shadow for the depth effect.
277
+ box-shadow:
278
+ 0 8px 24px rgba(0, 0, 0, 0.34),
279
+ inset 0 1px 0 rgba(255, 255, 255, 0.2),
280
+ inset 0 2px 8px rgba(0, 0, 0, 0.18);
281
+ }
282
+
283
+ /* Color + Appearance combinations */
284
+ [solaris-icon-button][data-color='neutral'][data-appearance='solid'] {
285
+ --solaris-icon-button-color: var(--solaris-text-inverse);
286
+ --solaris-icon-button-background: var(--solaris-text-default);
287
+ --solaris-icon-button-hover-background: var(--solaris-text-strong);
288
+ --solaris-icon-button-active-background: var(--solaris-text-strong);
289
+ --solaris-icon-button-focus-ring-color: var(--solaris-text-default);
290
+ }
291
+
292
+ [solaris-icon-button][data-color='neutral'][data-appearance='outline'] {
293
+ --solaris-icon-button-color: var(--solaris-text-default);
294
+ --solaris-icon-button-border-color: var(--solaris-border-default);
295
+ --solaris-icon-button-focus-ring-color: var(--solaris-text-default);
296
+ --solaris-icon-button-hover-background: var(--solaris-surface-muted);
297
+ --solaris-icon-button-active-background: var(--solaris-surface-muted);
298
+ --solaris-icon-button-hover-border-color: var(--solaris-border-strong);
299
+ }
300
+
301
+ [solaris-icon-button][data-color='neutral'][data-appearance='ghost'] {
302
+ --solaris-icon-button-color: var(--solaris-text-default);
303
+ --solaris-icon-button-focus-ring-color: var(--solaris-text-default);
304
+ --solaris-icon-button-hover-background: var(--solaris-surface-muted);
305
+ --solaris-icon-button-active-background: var(--solaris-surface-muted);
306
+ }
307
+
308
+ [solaris-icon-button][data-color='neutral'][data-appearance='tonal'] {
309
+ --solaris-icon-button-color: var(--solaris-text-default);
310
+ --solaris-icon-button-background: var(--solaris-surface-muted);
311
+ --solaris-icon-button-border-color: var(--solaris-border-default);
312
+ --solaris-icon-button-focus-ring-color: var(--solaris-text-default);
313
+ --solaris-icon-button-hover-background: var(--solaris-surface-subtle);
314
+ --solaris-icon-button-hover-border-color: var(--solaris-border-strong);
315
+ --solaris-icon-button-active-background: var(--solaris-surface-subtle);
316
+ }
317
+
318
+ [solaris-icon-button][data-color='neutral'][data-appearance='surface'] {
319
+ --solaris-icon-button-color: var(--solaris-text-default);
320
+ --solaris-icon-button-background: var(--solaris-surface-muted);
321
+ --solaris-icon-button-focus-ring-color: var(--solaris-text-default);
322
+ --solaris-icon-button-hover-background: var(--solaris-surface-subtle);
323
+ --solaris-icon-button-active-background: var(--solaris-surface-subtle);
324
+ }
325
+
326
+ /* SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/backdrop-filter for frosted glass effect. */
327
+ [solaris-icon-button][data-color='neutral'][data-appearance='glass'] {
328
+ --solaris-icon-button-color: var(--solaris-text-default);
329
+ --solaris-icon-button-glass-accent: rgba(255, 110, 24, 0.36);
330
+ --solaris-icon-button-glass-accent-hover: rgba(255, 110, 24, 0.46);
331
+ --solaris-icon-button-focus-ring-color: var(--solaris-text-default);
332
+ }
333
+
334
+ [solaris-icon-button][data-color='primary'][data-appearance='solid'] {
335
+ --solaris-icon-button-color: var(--solaris-primary-text);
336
+ --solaris-icon-button-background: var(--solaris-primary-base);
337
+ --solaris-icon-button-focus-ring-color: var(--solaris-primary-base);
338
+ --solaris-icon-button-hover-background: var(--solaris-primary-hover);
339
+ --solaris-icon-button-active-background: var(--solaris-primary-active);
340
+ }
341
+
342
+ [solaris-icon-button][data-color='primary'][data-appearance='outline'] {
343
+ --solaris-icon-button-color: var(--solaris-primary-text);
344
+ --solaris-icon-button-border-color: var(--solaris-primary-border);
345
+ --solaris-icon-button-focus-ring-color: var(--solaris-primary-base);
346
+ --solaris-icon-button-hover-background: var(--solaris-primary-surface);
347
+ --solaris-icon-button-active-background: var(--solaris-primary-surface);
348
+ }
349
+
350
+ [solaris-icon-button][data-color='primary'][data-appearance='ghost'] {
351
+ --solaris-icon-button-color: var(--solaris-primary-text);
352
+ --solaris-icon-button-focus-ring-color: var(--solaris-primary-base);
353
+ --solaris-icon-button-hover-background: var(--solaris-primary-surface);
354
+ --solaris-icon-button-active-background: var(--solaris-primary-surface);
355
+ }
356
+
357
+ [solaris-icon-button][data-color='primary'][data-appearance='tonal'] {
358
+ --solaris-icon-button-color: var(--solaris-primary-text);
359
+ --solaris-icon-button-background: var(--solaris-primary-surface);
360
+ --solaris-icon-button-border-color: var(--solaris-primary-border);
361
+ --solaris-icon-button-focus-ring-color: var(--solaris-primary-base);
362
+ --solaris-icon-button-hover-background: var(--solaris-primary-hover);
363
+ --solaris-icon-button-hover-border-color: var(--solaris-primary-base);
364
+ --solaris-icon-button-active-background: var(--solaris-primary-active);
365
+ }
366
+
367
+ [solaris-icon-button][data-color='primary'][data-appearance='surface'] {
368
+ --solaris-icon-button-color: var(--solaris-primary-text);
369
+ --solaris-icon-button-background: var(--solaris-primary-surface);
370
+ --solaris-icon-button-focus-ring-color: var(--solaris-primary-base);
371
+ --solaris-icon-button-hover-background: var(--solaris-primary-hover);
372
+ --solaris-icon-button-active-background: var(--solaris-primary-active);
373
+ }
374
+
375
+ /* SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/backdrop-filter for frosted glass effect. */
376
+ [solaris-icon-button][data-color='primary'][data-appearance='glass'] {
377
+ --solaris-icon-button-color: var(--solaris-primary-text);
378
+ --solaris-icon-button-glass-accent: rgba(22, 119, 255, 0.32);
379
+ --solaris-icon-button-glass-accent-hover: rgba(22, 119, 255, 0.42);
380
+ --solaris-icon-button-focus-ring-color: var(--solaris-primary-base);
381
+ }
382
+
383
+ [solaris-icon-button][data-color='success'][data-appearance='solid'] {
384
+ --solaris-icon-button-background: var(--solaris-success-base);
385
+ --solaris-icon-button-color: var(--solaris-success-on-solid);
386
+ --solaris-icon-button-focus-ring-color: var(--solaris-success-base);
387
+ --solaris-icon-button-hover-background: var(--solaris-success-hover);
388
+ --solaris-icon-button-active-background: var(--solaris-success-active);
389
+ }
390
+
391
+ [solaris-icon-button][data-color='success'][data-appearance='outline'] {
392
+ --solaris-icon-button-color: var(--solaris-success-text);
393
+ --solaris-icon-button-border-color: var(--solaris-success-border);
394
+ --solaris-icon-button-focus-ring-color: var(--solaris-success-base);
395
+ --solaris-icon-button-hover-background: var(--solaris-success-surface);
396
+ --solaris-icon-button-active-background: var(--solaris-success-surface);
397
+ }
398
+
399
+ [solaris-icon-button][data-color='success'][data-appearance='ghost'] {
400
+ --solaris-icon-button-color: var(--solaris-success-text);
401
+ --solaris-icon-button-focus-ring-color: var(--solaris-success-base);
402
+ --solaris-icon-button-hover-background: var(--solaris-success-surface);
403
+ --solaris-icon-button-active-background: var(--solaris-success-surface);
404
+ }
405
+
406
+ [solaris-icon-button][data-color='success'][data-appearance='tonal'] {
407
+ --solaris-icon-button-color: var(--solaris-success-text);
408
+ --solaris-icon-button-background: var(--solaris-success-surface);
409
+ --solaris-icon-button-border-color: var(--solaris-success-border);
410
+ --solaris-icon-button-focus-ring-color: var(--solaris-success-base);
411
+ --solaris-icon-button-hover-background: var(--solaris-success-hover);
412
+ --solaris-icon-button-hover-border-color: var(--solaris-success-base);
413
+ --solaris-icon-button-active-background: var(--solaris-success-active);
414
+ }
415
+
416
+ [solaris-icon-button][data-color='success'][data-appearance='surface'] {
417
+ --solaris-icon-button-color: var(--solaris-success-text);
418
+ --solaris-icon-button-background: var(--solaris-success-surface);
419
+ --solaris-icon-button-focus-ring-color: var(--solaris-success-base);
420
+ --solaris-icon-button-hover-background: var(--solaris-success-hover);
421
+ --solaris-icon-button-active-background: var(--solaris-success-active);
422
+ }
423
+
424
+ /* SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/backdrop-filter for frosted glass effect. */
425
+ [solaris-icon-button][data-color='success'][data-appearance='glass'] {
426
+ --solaris-icon-button-color: var(--solaris-success-text);
427
+ --solaris-icon-button-glass-accent: rgba(22, 163, 74, 0.32);
428
+ --solaris-icon-button-glass-accent-hover: rgba(22, 163, 74, 0.42);
429
+ --solaris-icon-button-focus-ring-color: var(--solaris-success-base);
430
+ }
431
+
432
+ [solaris-icon-button][data-color='warning'][data-appearance='solid'] {
433
+ --solaris-icon-button-background: var(--solaris-warning-base);
434
+ --solaris-icon-button-color: var(--solaris-warning-on-solid);
435
+ --solaris-icon-button-hover-background: var(--solaris-warning-hover);
436
+ --solaris-icon-button-active-background: var(--solaris-warning-active);
437
+ --solaris-icon-button-focus-ring-color: var(--solaris-warning-base);
438
+ }
439
+
440
+ [solaris-icon-button][data-color='warning'][data-appearance='outline'] {
441
+ --solaris-icon-button-color: var(--solaris-warning-text);
442
+ --solaris-icon-button-border-color: var(--solaris-warning-border);
443
+ --solaris-icon-button-focus-ring-color: var(--solaris-warning-base);
444
+ --solaris-icon-button-hover-background: var(--solaris-warning-surface);
445
+ --solaris-icon-button-active-background: var(--solaris-warning-surface);
446
+ }
447
+
448
+ [solaris-icon-button][data-color='warning'][data-appearance='ghost'] {
449
+ --solaris-icon-button-color: var(--solaris-warning-text);
450
+ --solaris-icon-button-focus-ring-color: var(--solaris-warning-base);
451
+ --solaris-icon-button-hover-background: var(--solaris-warning-surface);
452
+ --solaris-icon-button-active-background: var(--solaris-warning-surface);
453
+ }
454
+
455
+ [solaris-icon-button][data-color='warning'][data-appearance='tonal'] {
456
+ --solaris-icon-button-color: var(--solaris-warning-text);
457
+ --solaris-icon-button-background: var(--solaris-warning-surface);
458
+ --solaris-icon-button-border-color: var(--solaris-warning-border);
459
+ --solaris-icon-button-focus-ring-color: var(--solaris-warning-base);
460
+ --solaris-icon-button-hover-background: var(--solaris-warning-hover);
461
+ --solaris-icon-button-hover-border-color: var(--solaris-warning-base);
462
+ --solaris-icon-button-active-background: var(--solaris-warning-active);
463
+ }
464
+
465
+ [solaris-icon-button][data-color='warning'][data-appearance='surface'] {
466
+ --solaris-icon-button-color: var(--solaris-warning-text);
467
+ --solaris-icon-button-background: var(--solaris-warning-surface);
468
+ --solaris-icon-button-focus-ring-color: var(--solaris-warning-base);
469
+ --solaris-icon-button-hover-background: var(--solaris-warning-hover);
470
+ --solaris-icon-button-active-background: var(--solaris-warning-active);
471
+ }
472
+
473
+ /* SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/backdrop-filter for frosted glass effect. */
474
+ [solaris-icon-button][data-color='warning'][data-appearance='glass'] {
475
+ --solaris-icon-button-color: var(--solaris-warning-text);
476
+ --solaris-icon-button-glass-accent: rgba(255, 110, 24, 0.38);
477
+ --solaris-icon-button-glass-accent-hover: rgba(255, 110, 24, 0.48);
478
+ --solaris-icon-button-focus-ring-color: var(--solaris-warning-base);
479
+ }
480
+
481
+ [solaris-icon-button][data-color='danger'][data-appearance='solid'] {
482
+ --solaris-icon-button-background: var(--solaris-danger-base);
483
+ --solaris-icon-button-color: var(--solaris-danger-on-solid);
484
+ --solaris-icon-button-focus-ring-color: var(--solaris-danger-base);
485
+ --solaris-icon-button-hover-background: var(--solaris-danger-hover);
486
+ --solaris-icon-button-active-background: var(--solaris-danger-active);
487
+ }
488
+
489
+ [solaris-icon-button][data-color='danger'][data-appearance='outline'] {
490
+ --solaris-icon-button-color: var(--solaris-danger-text);
491
+ --solaris-icon-button-border-color: var(--solaris-danger-border);
492
+ --solaris-icon-button-focus-ring-color: var(--solaris-danger-base);
493
+ --solaris-icon-button-hover-background: var(--solaris-danger-surface);
494
+ --solaris-icon-button-active-background: var(--solaris-danger-surface);
495
+ }
496
+
497
+ [solaris-icon-button][data-color='danger'][data-appearance='ghost'] {
498
+ --solaris-icon-button-color: var(--solaris-danger-text);
499
+ --solaris-icon-button-focus-ring-color: var(--solaris-danger-base);
500
+ --solaris-icon-button-hover-background: var(--solaris-danger-surface);
501
+ --solaris-icon-button-active-background: var(--solaris-danger-surface);
502
+ }
503
+
504
+ [solaris-icon-button][data-color='danger'][data-appearance='tonal'] {
505
+ --solaris-icon-button-color: var(--solaris-danger-text);
506
+ --solaris-icon-button-background: var(--solaris-danger-surface);
507
+ --solaris-icon-button-border-color: var(--solaris-danger-border);
508
+ --solaris-icon-button-focus-ring-color: var(--solaris-danger-base);
509
+ --solaris-icon-button-hover-background: var(--solaris-danger-hover);
510
+ --solaris-icon-button-hover-border-color: var(--solaris-danger-base);
511
+ --solaris-icon-button-active-background: var(--solaris-danger-active);
512
+ }
513
+
514
+ [solaris-icon-button][data-color='danger'][data-appearance='surface'] {
515
+ --solaris-icon-button-color: var(--solaris-danger-text);
516
+ --solaris-icon-button-background: var(--solaris-danger-surface);
517
+ --solaris-icon-button-focus-ring-color: var(--solaris-danger-base);
518
+ --solaris-icon-button-hover-background: var(--solaris-danger-hover);
519
+ --solaris-icon-button-active-background: var(--solaris-danger-active);
520
+ }
521
+
522
+ /* SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/backdrop-filter for frosted glass effect. */
523
+ [solaris-icon-button][data-color='danger'][data-appearance='glass'] {
524
+ --solaris-icon-button-color: var(--solaris-danger-text);
525
+ --solaris-icon-button-glass-accent: rgba(220, 38, 38, 0.34);
526
+ --solaris-icon-button-glass-accent-hover: rgba(220, 38, 38, 0.44);
527
+ --solaris-icon-button-focus-ring-color: var(--solaris-danger-base);
528
+ }
529
+
530
+ [solaris-icon-button][data-color='info'][data-appearance='solid'] {
531
+ --solaris-icon-button-color: var(--solaris-info-text);
532
+ --solaris-icon-button-background: var(--solaris-info-base);
533
+ --solaris-icon-button-focus-ring-color: var(--solaris-info-base);
534
+ --solaris-icon-button-hover-background: var(--solaris-info-hover);
535
+ --solaris-icon-button-active-background: var(--solaris-info-active);
536
+ }
537
+
538
+ [solaris-icon-button][data-color='info'][data-appearance='outline'] {
539
+ --solaris-icon-button-color: var(--solaris-info-text);
540
+ --solaris-icon-button-border-color: var(--solaris-info-border);
541
+ --solaris-icon-button-focus-ring-color: var(--solaris-info-base);
542
+ --solaris-icon-button-hover-background: var(--solaris-info-surface);
543
+ --solaris-icon-button-active-background: var(--solaris-info-surface);
544
+ }
545
+
546
+ [solaris-icon-button][data-color='info'][data-appearance='ghost'] {
547
+ --solaris-icon-button-color: var(--solaris-info-text);
548
+ --solaris-icon-button-focus-ring-color: var(--solaris-info-base);
549
+ --solaris-icon-button-hover-background: var(--solaris-info-surface);
550
+ --solaris-icon-button-active-background: var(--solaris-info-surface);
551
+ }
552
+
553
+ [solaris-icon-button][data-color='info'][data-appearance='tonal'] {
554
+ --solaris-icon-button-color: var(--solaris-info-text);
555
+ --solaris-icon-button-background: var(--solaris-info-surface);
556
+ --solaris-icon-button-border-color: var(--solaris-info-border);
557
+ --solaris-icon-button-focus-ring-color: var(--solaris-info-base);
558
+ --solaris-icon-button-hover-background: var(--solaris-info-hover);
559
+ --solaris-icon-button-hover-border-color: var(--solaris-info-base);
560
+ --solaris-icon-button-active-background: var(--solaris-info-active);
561
+ }
562
+
563
+ [solaris-icon-button][data-color='info'][data-appearance='surface'] {
564
+ --solaris-icon-button-color: var(--solaris-info-text);
565
+ --solaris-icon-button-background: var(--solaris-info-surface);
566
+ --solaris-icon-button-focus-ring-color: var(--solaris-info-base);
567
+ --solaris-icon-button-hover-background: var(--solaris-info-hover);
568
+ --solaris-icon-button-active-background: var(--solaris-info-active);
569
+ }
570
+
571
+ /* SOLARIS_TOKEN_EXCEPTION: glass appearance uses translucent rgba/backdrop-filter for frosted glass effect. */
572
+ [solaris-icon-button][data-color='info'][data-appearance='glass'] {
573
+ --solaris-icon-button-color: var(--solaris-info-text);
574
+ --solaris-icon-button-glass-accent: rgba(59, 130, 246, 0.32);
575
+ --solaris-icon-button-focus-ring-color: var(--solaris-info-base);
576
+ --solaris-icon-button-glass-accent-hover: rgba(59, 130, 246, 0.42);
577
+ }
578
+
579
+ /* Custom color */
580
+ [solaris-icon-button][data-color='custom'] {
581
+ --solaris-icon-button-hover-background: var(
582
+ --solaris-icon-button-custom-hover-background
583
+ );
584
+ --solaris-icon-button-active-background: var(
585
+ --solaris-icon-button-custom-active-background
586
+ );
587
+ --solaris-icon-button-hover-border-color: var(
588
+ --solaris-icon-button-custom-hover-border-color
589
+ );
590
+ --solaris-icon-button-active-border-color: var(
591
+ --solaris-icon-button-custom-active-border-color
592
+ );
593
+ --solaris-icon-button-color: var(
594
+ --solaris-icon-button-custom-color,
595
+ var(--solaris-text-default)
596
+ );
597
+ --solaris-icon-button-background: var(
598
+ --solaris-icon-button-custom-background,
599
+ var(--solaris-surface-base)
600
+ );
601
+ --solaris-icon-button-focus-ring-color: var(
602
+ --solaris-icon-button-custom-color,
603
+ var(--solaris-text-default)
604
+ );
605
+ --solaris-icon-button-border-color: var(
606
+ --solaris-icon-button-custom-border-color,
607
+ var(--solaris-border-default)
608
+ );
609
+ }
610
+
611
+ /* Size */
612
+ [solaris-icon-button][data-size='sm'] {
613
+ --solaris-icon-button-size: 2rem;
614
+ font-size: 0.875rem;
615
+ }
616
+
617
+ [solaris-icon-button][data-size='md'] {
618
+ --solaris-icon-button-size: 2.5rem;
619
+ font-size: 1rem;
620
+ }
621
+
622
+ [solaris-icon-button][data-size='lg'] {
623
+ --solaris-icon-button-size: 3rem;
624
+ font-size: 1.25rem;
625
+ }
626
+
627
+ /* Radius */
628
+ [solaris-icon-button][data-radius='none'] {
629
+ --solaris-icon-button-radius: var(--solaris-radius-none, 0);
630
+ }
631
+
632
+ [solaris-icon-button][data-radius='sm'] {
633
+ --solaris-icon-button-radius: var(--solaris-radius-sm, 0.25rem);
634
+ }
635
+
636
+ [solaris-icon-button][data-radius='md'] {
637
+ --solaris-icon-button-radius: var(--solaris-radius-md, 0.5rem);
638
+ }
639
+
640
+ [solaris-icon-button][data-radius='lg'] {
641
+ --solaris-icon-button-radius: var(--solaris-radius-lg, 0.75rem);
642
+ }
643
+
644
+ [solaris-icon-button][data-radius='full'] {
645
+ --solaris-icon-button-radius: var(--solaris-radius-full, 624.9375rem);
646
+ }
647
+
648
+ /* Density */
649
+ [solaris-icon-button][data-density='compact'] {
650
+ --solaris-icon-button-size: 2rem;
651
+ font-size: 0.875rem;
652
+ }
653
+
654
+ [solaris-icon-button][data-density='comfortable'] {
655
+ --solaris-icon-button-size: 2.5rem;
656
+ font-size: 1rem;
657
+ }