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