@duskmoon-dev/core 1.12.4 → 1.13.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.
Files changed (62) hide show
  1. package/dist/components/alert.css +64 -2
  2. package/dist/components/appbar.css +119 -21
  3. package/dist/components/autocomplete.css +63 -3
  4. package/dist/components/avatar.css +22 -2
  5. package/dist/components/button.css +101 -49
  6. package/dist/components/card.css +38 -2
  7. package/dist/components/cascader.css +59 -9
  8. package/dist/components/checkbox.css +15 -5
  9. package/dist/components/chip.css +122 -2
  10. package/dist/components/collapse.css +32 -0
  11. package/dist/components/datepicker.css +79 -6
  12. package/dist/components/file-upload.css +68 -8
  13. package/dist/components/form.css +2 -1
  14. package/dist/components/index.css +1583 -409
  15. package/dist/components/input.css +21 -67
  16. package/dist/components/multi-select.css +59 -9
  17. package/dist/components/otp-input.css +48 -16
  18. package/dist/components/pin-input.css +50 -13
  19. package/dist/components/radio.css +12 -2
  20. package/dist/components/rating.css +35 -3
  21. package/dist/components/segment-control.css +23 -2
  22. package/dist/components/select.css +21 -37
  23. package/dist/components/slider.css +130 -6
  24. package/dist/components/switch.css +27 -4
  25. package/dist/components/textarea.css +21 -96
  26. package/dist/components/time-input.css +61 -12
  27. package/dist/components/toast.css +72 -3
  28. package/dist/components/toggle.css +63 -6
  29. package/dist/components/tooltip.css +84 -0
  30. package/dist/components/tree-select.css +60 -11
  31. package/dist/esm/components/alert.js +64 -2
  32. package/dist/esm/components/appbar.js +119 -21
  33. package/dist/esm/components/autocomplete.js +63 -3
  34. package/dist/esm/components/avatar.js +22 -2
  35. package/dist/esm/components/button.js +101 -49
  36. package/dist/esm/components/card.js +38 -2
  37. package/dist/esm/components/cascader.js +59 -9
  38. package/dist/esm/components/checkbox.js +15 -5
  39. package/dist/esm/components/chip.js +122 -2
  40. package/dist/esm/components/collapse.js +32 -0
  41. package/dist/esm/components/datepicker.js +79 -6
  42. package/dist/esm/components/file-upload.js +68 -8
  43. package/dist/esm/components/form.js +2 -1
  44. package/dist/esm/components/input.js +21 -67
  45. package/dist/esm/components/multi-select.js +59 -9
  46. package/dist/esm/components/otp-input.js +48 -16
  47. package/dist/esm/components/pin-input.js +50 -13
  48. package/dist/esm/components/radio.js +12 -2
  49. package/dist/esm/components/rating.js +35 -3
  50. package/dist/esm/components/segment-control.js +23 -2
  51. package/dist/esm/components/select.js +21 -37
  52. package/dist/esm/components/slider.js +130 -6
  53. package/dist/esm/components/switch.js +27 -4
  54. package/dist/esm/components/textarea.js +21 -96
  55. package/dist/esm/components/time-input.js +61 -12
  56. package/dist/esm/components/toast.js +72 -3
  57. package/dist/esm/components/toggle.js +63 -6
  58. package/dist/esm/components/tooltip.js +84 -0
  59. package/dist/esm/components/tree-select.js +60 -11
  60. package/dist/index.css +1583 -409
  61. package/dist/index.min.css +1 -1
  62. package/package.json +1 -1
@@ -72,8 +72,8 @@
72
72
  }
73
73
 
74
74
  .alert-close:focus-visible {
75
- outline: 2px solid currentColor;
76
- outline-offset: 2px;
75
+ outline: none;
76
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
77
77
  }
78
78
 
79
79
  /* Type Variants */
@@ -101,6 +101,24 @@
101
101
  border-color: transparent;
102
102
  }
103
103
 
104
+ .alert-primary {
105
+ background-color: var(--color-primary-container);
106
+ color: var(--color-on-primary-container);
107
+ border-color: transparent;
108
+ }
109
+
110
+ .alert-secondary {
111
+ background-color: var(--color-secondary-container);
112
+ color: var(--color-on-secondary-container);
113
+ border-color: transparent;
114
+ }
115
+
116
+ .alert-tertiary {
117
+ background-color: var(--color-tertiary-container);
118
+ color: var(--color-on-tertiary-container);
119
+ border-color: transparent;
120
+ }
121
+
104
122
  /* Filled Variants */
105
123
  .alert-filled.alert-info {
106
124
  background-color: var(--color-info);
@@ -122,6 +140,21 @@
122
140
  color: var(--color-error-content);
123
141
  }
124
142
 
143
+ .alert-filled.alert-primary {
144
+ background-color: var(--color-primary);
145
+ color: var(--color-primary-content);
146
+ }
147
+
148
+ .alert-filled.alert-secondary {
149
+ background-color: var(--color-secondary);
150
+ color: var(--color-secondary-content);
151
+ }
152
+
153
+ .alert-filled.alert-tertiary {
154
+ background-color: var(--color-tertiary);
155
+ color: var(--color-tertiary-content);
156
+ }
157
+
125
158
  /* Outlined Variants */
126
159
  .alert-outlined {
127
160
  background-color: transparent;
@@ -147,6 +180,35 @@
147
180
  color: var(--color-error);
148
181
  }
149
182
 
183
+ .alert-outlined.alert-primary {
184
+ border-color: var(--color-primary);
185
+ color: var(--color-primary);
186
+ }
187
+
188
+ .alert-outlined.alert-secondary {
189
+ border-color: var(--color-secondary);
190
+ color: var(--color-secondary);
191
+ }
192
+
193
+ .alert-outlined.alert-tertiary {
194
+ border-color: var(--color-tertiary);
195
+ color: var(--color-tertiary);
196
+ }
197
+
198
+ /* Ghost Variant */
199
+ .alert-ghost {
200
+ background-color: transparent;
201
+ border-color: transparent;
202
+ }
203
+
204
+ .alert-ghost.alert-primary { color: var(--color-primary); }
205
+ .alert-ghost.alert-secondary { color: var(--color-secondary); }
206
+ .alert-ghost.alert-tertiary { color: var(--color-tertiary); }
207
+ .alert-ghost.alert-info { color: var(--color-info); }
208
+ .alert-ghost.alert-success { color: var(--color-success); }
209
+ .alert-ghost.alert-warning { color: var(--color-warning); }
210
+ .alert-ghost.alert-error { color: var(--color-error); }
211
+
150
212
  /* Dismissible */
151
213
  .alert-dismissible {
152
214
  padding-right: 2.5rem;
@@ -102,8 +102,8 @@
102
102
  }
103
103
 
104
104
  .appbar-nav:focus-visible {
105
- outline: 2px solid var(--color-primary);
106
- outline-offset: 2px;
105
+ outline: none;
106
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
107
107
  }
108
108
 
109
109
  /* App Bar Title */
@@ -165,8 +165,8 @@
165
165
  }
166
166
 
167
167
  .appbar-action:focus-visible {
168
- outline: 2px solid var(--color-primary);
169
- outline-offset: 2px;
168
+ outline: none;
169
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
170
170
  }
171
171
 
172
172
  /* App Bar Logo/Brand */
@@ -281,8 +281,8 @@
281
281
  }
282
282
 
283
283
  .appbar-back:focus-visible {
284
- outline: 2px solid var(--color-primary);
285
- outline-offset: 2px;
284
+ outline: none;
285
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
286
286
  }
287
287
 
288
288
  /* Search Input (direct on element) */
@@ -313,64 +313,162 @@
313
313
  /* Color Variants */
314
314
  .appbar-primary {
315
315
  background-color: var(--color-primary);
316
- color: var(--color-on-primary);
316
+ color: var(--color-primary-content);
317
317
  }
318
318
 
319
319
  .appbar-primary .appbar-nav,
320
- .appbar-primary .appbar-action {
321
- color: var(--color-on-primary);
320
+ .appbar-primary .appbar-action,
321
+ .appbar-primary .appbar-back {
322
+ color: var(--color-primary-content);
322
323
  }
323
324
 
324
325
  .appbar-primary .appbar-nav:hover,
325
- .appbar-primary .appbar-action:hover {
326
+ .appbar-primary .appbar-action:hover,
327
+ .appbar-primary .appbar-back:hover {
326
328
  background-color: var(--color-primary-container);
327
329
  color: var(--color-on-primary-container);
328
330
  }
329
331
 
330
332
  .appbar-primary .appbar-subtitle {
331
- color: var(--color-on-primary);
333
+ color: var(--color-primary-content);
332
334
  opacity: 0.8;
333
335
  }
334
336
 
335
337
  .appbar-secondary {
336
338
  background-color: var(--color-secondary);
337
- color: var(--color-on-secondary);
339
+ color: var(--color-secondary-content);
338
340
  }
339
341
 
340
342
  .appbar-secondary .appbar-nav,
341
- .appbar-secondary .appbar-action {
342
- color: var(--color-on-secondary);
343
+ .appbar-secondary .appbar-action,
344
+ .appbar-secondary .appbar-back {
345
+ color: var(--color-secondary-content);
343
346
  }
344
347
 
345
348
  .appbar-secondary .appbar-nav:hover,
346
- .appbar-secondary .appbar-action:hover {
349
+ .appbar-secondary .appbar-action:hover,
350
+ .appbar-secondary .appbar-back:hover {
347
351
  background-color: var(--color-secondary-container);
348
352
  color: var(--color-on-secondary-container);
349
353
  }
350
354
 
351
355
  .appbar-secondary .appbar-subtitle {
352
- color: var(--color-on-secondary);
356
+ color: var(--color-secondary-content);
353
357
  opacity: 0.8;
354
358
  }
355
359
 
356
360
  .appbar-tertiary {
357
361
  background-color: var(--color-tertiary);
358
- color: var(--color-on-tertiary);
362
+ color: var(--color-tertiary-content);
359
363
  }
360
364
 
361
365
  .appbar-tertiary .appbar-nav,
362
- .appbar-tertiary .appbar-action {
363
- color: var(--color-on-tertiary);
366
+ .appbar-tertiary .appbar-action,
367
+ .appbar-tertiary .appbar-back {
368
+ color: var(--color-tertiary-content);
364
369
  }
365
370
 
366
371
  .appbar-tertiary .appbar-nav:hover,
367
- .appbar-tertiary .appbar-action:hover {
372
+ .appbar-tertiary .appbar-action:hover,
373
+ .appbar-tertiary .appbar-back:hover {
368
374
  background-color: var(--color-tertiary-container);
369
375
  color: var(--color-on-tertiary-container);
370
376
  }
371
377
 
372
378
  .appbar-tertiary .appbar-subtitle {
373
- color: var(--color-on-tertiary);
379
+ color: var(--color-tertiary-content);
380
+ opacity: 0.8;
381
+ }
382
+
383
+ .appbar-info {
384
+ background-color: var(--color-info);
385
+ color: var(--color-info-content);
386
+ }
387
+
388
+ .appbar-info .appbar-nav,
389
+ .appbar-info .appbar-action,
390
+ .appbar-info .appbar-back {
391
+ color: var(--color-info-content);
392
+ }
393
+
394
+ .appbar-info .appbar-nav:hover,
395
+ .appbar-info .appbar-action:hover,
396
+ .appbar-info .appbar-back:hover {
397
+ background-color: var(--color-info-container);
398
+ color: var(--color-on-info-container);
399
+ }
400
+
401
+ .appbar-info .appbar-subtitle {
402
+ color: var(--color-info-content);
403
+ opacity: 0.8;
404
+ }
405
+
406
+ .appbar-success {
407
+ background-color: var(--color-success);
408
+ color: var(--color-success-content);
409
+ }
410
+
411
+ .appbar-success .appbar-nav,
412
+ .appbar-success .appbar-action,
413
+ .appbar-success .appbar-back {
414
+ color: var(--color-success-content);
415
+ }
416
+
417
+ .appbar-success .appbar-nav:hover,
418
+ .appbar-success .appbar-action:hover,
419
+ .appbar-success .appbar-back:hover {
420
+ background-color: var(--color-success-container);
421
+ color: var(--color-on-success-container);
422
+ }
423
+
424
+ .appbar-success .appbar-subtitle {
425
+ color: var(--color-success-content);
426
+ opacity: 0.8;
427
+ }
428
+
429
+ .appbar-warning {
430
+ background-color: var(--color-warning);
431
+ color: var(--color-warning-content);
432
+ }
433
+
434
+ .appbar-warning .appbar-nav,
435
+ .appbar-warning .appbar-action,
436
+ .appbar-warning .appbar-back {
437
+ color: var(--color-warning-content);
438
+ }
439
+
440
+ .appbar-warning .appbar-nav:hover,
441
+ .appbar-warning .appbar-action:hover,
442
+ .appbar-warning .appbar-back:hover {
443
+ background-color: var(--color-warning-container);
444
+ color: var(--color-on-warning-container);
445
+ }
446
+
447
+ .appbar-warning .appbar-subtitle {
448
+ color: var(--color-warning-content);
449
+ opacity: 0.8;
450
+ }
451
+
452
+ .appbar-error {
453
+ background-color: var(--color-error);
454
+ color: var(--color-error-content);
455
+ }
456
+
457
+ .appbar-error .appbar-nav,
458
+ .appbar-error .appbar-action,
459
+ .appbar-error .appbar-back {
460
+ color: var(--color-error-content);
461
+ }
462
+
463
+ .appbar-error .appbar-nav:hover,
464
+ .appbar-error .appbar-action:hover,
465
+ .appbar-error .appbar-back:hover {
466
+ background-color: var(--color-error-container);
467
+ color: var(--color-on-error-container);
468
+ }
469
+
470
+ .appbar-error .appbar-subtitle {
471
+ color: var(--color-error-content);
374
472
  opacity: 0.8;
375
473
  }
376
474
 
@@ -19,15 +19,14 @@
19
19
  line-height: 1.5;
20
20
  color: var(--color-on-surface);
21
21
  background-color: var(--color-surface);
22
- border: 1px solid var(--color-outline);
22
+ border: 1px solid currentColor;
23
23
  border-radius: 0.5rem;
24
24
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
25
25
  }
26
26
 
27
27
  .autocomplete-input:focus {
28
28
  outline: none;
29
- border-color: var(--color-primary);
30
- box-shadow: 0 0 0 3px var(--color-primary-container);
29
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
31
30
  }
32
31
 
33
32
  .autocomplete-input:disabled {
@@ -249,6 +248,67 @@
249
248
  outline: none;
250
249
  }
251
250
 
251
+ /* Color Variants */
252
+ .autocomplete-primary .autocomplete-input {
253
+ color: var(--color-primary);
254
+ }
255
+ .autocomplete-primary .autocomplete-input:focus {
256
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
257
+ }
258
+
259
+ .autocomplete-secondary .autocomplete-input {
260
+ color: var(--color-secondary);
261
+ }
262
+ .autocomplete-secondary .autocomplete-input:focus {
263
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
264
+ }
265
+
266
+ .autocomplete-tertiary .autocomplete-input {
267
+ color: var(--color-tertiary);
268
+ }
269
+ .autocomplete-tertiary .autocomplete-input:focus {
270
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
271
+ }
272
+
273
+ .autocomplete-info .autocomplete-input {
274
+ color: var(--color-info);
275
+ }
276
+ .autocomplete-info .autocomplete-input:focus {
277
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
278
+ }
279
+
280
+ .autocomplete-success .autocomplete-input {
281
+ color: var(--color-success);
282
+ }
283
+ .autocomplete-success .autocomplete-input:focus {
284
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
285
+ }
286
+
287
+ .autocomplete-warning .autocomplete-input {
288
+ color: var(--color-warning);
289
+ }
290
+ .autocomplete-warning .autocomplete-input:focus {
291
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
292
+ }
293
+
294
+ .autocomplete-error .autocomplete-input {
295
+ color: var(--color-error);
296
+ }
297
+ .autocomplete-error .autocomplete-input:focus {
298
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
299
+ }
300
+
301
+ /* Ghost Variant */
302
+ .autocomplete-ghost .autocomplete-input {
303
+ background-color: transparent;
304
+ border-color: transparent;
305
+ }
306
+ .autocomplete-ghost .autocomplete-input:focus {
307
+ background-color: var(--color-surface-container);
308
+ border-color: transparent;
309
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
310
+ }
311
+
252
312
  /* Size Variants */
253
313
  .autocomplete-sm .autocomplete-input {
254
314
  padding: 0.5rem 0.75rem;
@@ -93,6 +93,26 @@
93
93
  color: var(--color-tertiary-content);
94
94
  }
95
95
 
96
+ .avatar-info {
97
+ background-color: var(--color-info);
98
+ color: var(--color-info-content);
99
+ }
100
+
101
+ .avatar-success {
102
+ background-color: var(--color-success);
103
+ color: var(--color-success-content);
104
+ }
105
+
106
+ .avatar-warning {
107
+ background-color: var(--color-warning);
108
+ color: var(--color-warning-content);
109
+ }
110
+
111
+ .avatar-error {
112
+ background-color: var(--color-error);
113
+ color: var(--color-error-content);
114
+ }
115
+
96
116
  /* Ring */
97
117
  .avatar-ring {
98
118
  outline: 2px solid var(--color-primary);
@@ -161,7 +181,7 @@
161
181
 
162
182
  /* Focus State for Interactive Avatars */
163
183
  .avatar:focus-visible {
164
- outline: 2px solid var(--color-primary);
165
- outline-offset: 2px;
184
+ outline: none;
185
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
166
186
  }
167
187
  }
@@ -44,8 +44,8 @@
44
44
  }
45
45
 
46
46
  .btn:focus-visible {
47
- outline: 2px solid var(--color-primary);
48
- outline-offset: 2px;
47
+ outline: none;
48
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
49
49
  }
50
50
 
51
51
  .btn:disabled {
@@ -67,10 +67,6 @@
67
67
  filter: none;
68
68
  }
69
69
 
70
- .btn-primary:focus-visible {
71
- outline-color: color-mix(in oklch, var(--color-primary), black 10%);
72
- }
73
-
74
70
  /* Secondary Button */
75
71
  .btn-secondary {
76
72
  --btn-text-color: var(--color-secondary-content);
@@ -84,10 +80,6 @@
84
80
  filter: none;
85
81
  }
86
82
 
87
- .btn-secondary:focus-visible {
88
- outline-color: color-mix(in oklch, var(--color-secondary), black 10%);
89
- }
90
-
91
83
  /* Tertiary Button */
92
84
  .btn-tertiary {
93
85
  --btn-text-color: var(--color-tertiary-content);
@@ -101,92 +93,102 @@
101
93
  filter: none;
102
94
  }
103
95
 
104
- .btn-tertiary:focus-visible {
105
- outline-color: color-mix(in oklch, var(--color-tertiary), black 10%);
106
- }
107
-
108
- /* Outline Variant */
109
- .btn-outline {
96
+ /* Outline / Outlined Variant (.btn-outlined is an alias) */
97
+ .btn-outline,
98
+ .btn-outlined {
110
99
  --btn-text-color: var(--color-on-surface);
111
100
  background-color: transparent;
112
101
  border: 1px solid var(--color-outline);
113
102
  }
114
103
 
115
- .btn-outline:hover {
104
+ .btn-outline:hover,
105
+ .btn-outlined:hover {
116
106
  background-color: var(--color-surface-container);
117
107
  filter: none;
118
108
  }
119
109
 
120
- .btn-outline.btn-primary {
110
+ .btn-outline.btn-primary,
111
+ .btn-outlined.btn-primary {
121
112
  --btn-text-color: var(--color-primary);
122
113
  border-color: var(--color-primary);
123
114
  }
124
115
 
125
- .btn-outline.btn-primary:hover {
116
+ .btn-outline.btn-primary:hover,
117
+ .btn-outlined.btn-primary:hover {
126
118
  --btn-text-color: var(--color-primary-content);
127
119
  background-color: var(--color-primary);
128
120
  }
129
121
 
130
- .btn-outline.btn-secondary {
122
+ .btn-outline.btn-secondary,
123
+ .btn-outlined.btn-secondary {
131
124
  --btn-text-color: var(--color-secondary);
132
125
  border-color: var(--color-secondary);
133
126
  }
134
127
 
135
- .btn-outline.btn-secondary:hover {
128
+ .btn-outline.btn-secondary:hover,
129
+ .btn-outlined.btn-secondary:hover {
136
130
  --btn-text-color: var(--color-secondary-content);
137
131
  background-color: var(--color-secondary);
138
132
  }
139
133
 
140
- .btn-outline.btn-tertiary {
134
+ .btn-outline.btn-tertiary,
135
+ .btn-outlined.btn-tertiary {
141
136
  --btn-text-color: var(--color-tertiary);
142
137
  border-color: var(--color-tertiary);
143
138
  }
144
139
 
145
- .btn-outline.btn-tertiary:hover {
140
+ .btn-outline.btn-tertiary:hover,
141
+ .btn-outlined.btn-tertiary:hover {
146
142
  --btn-text-color: var(--color-tertiary-content);
147
143
  background-color: var(--color-tertiary);
148
144
  }
149
145
 
150
- /* Outlined Variant (alias for .btn-outline - documentation aligned) */
151
- .btn-outlined {
152
- --btn-text-color: var(--color-on-surface);
153
- background-color: transparent;
154
- border: 1px solid var(--color-outline);
146
+ .btn-outline.btn-info,
147
+ .btn-outlined.btn-info {
148
+ --btn-text-color: var(--color-info);
149
+ border-color: var(--color-info);
155
150
  }
156
151
 
157
- .btn-outlined:hover {
158
- background-color: var(--color-surface-container);
159
- filter: none;
152
+ .btn-outline.btn-info:hover,
153
+ .btn-outlined.btn-info:hover {
154
+ --btn-text-color: var(--color-info-content);
155
+ background-color: var(--color-info);
160
156
  }
161
157
 
162
- .btn-outlined.btn-primary {
163
- --btn-text-color: var(--color-primary);
164
- border-color: var(--color-primary);
158
+ .btn-outline.btn-success,
159
+ .btn-outlined.btn-success {
160
+ --btn-text-color: var(--color-success);
161
+ border-color: var(--color-success);
165
162
  }
166
163
 
167
- .btn-outlined.btn-primary:hover {
168
- --btn-text-color: var(--color-primary-content);
169
- background-color: var(--color-primary);
164
+ .btn-outline.btn-success:hover,
165
+ .btn-outlined.btn-success:hover {
166
+ --btn-text-color: var(--color-success-content);
167
+ background-color: var(--color-success);
170
168
  }
171
169
 
172
- .btn-outlined.btn-secondary {
173
- --btn-text-color: var(--color-secondary);
174
- border-color: var(--color-secondary);
170
+ .btn-outline.btn-warning,
171
+ .btn-outlined.btn-warning {
172
+ --btn-text-color: var(--color-warning);
173
+ border-color: var(--color-warning);
175
174
  }
176
175
 
177
- .btn-outlined.btn-secondary:hover {
178
- --btn-text-color: var(--color-secondary-content);
179
- background-color: var(--color-secondary);
176
+ .btn-outline.btn-warning:hover,
177
+ .btn-outlined.btn-warning:hover {
178
+ --btn-text-color: var(--color-warning-content);
179
+ background-color: var(--color-warning);
180
180
  }
181
181
 
182
- .btn-outlined.btn-tertiary {
183
- --btn-text-color: var(--color-tertiary);
184
- border-color: var(--color-tertiary);
182
+ .btn-outline.btn-error,
183
+ .btn-outlined.btn-error {
184
+ --btn-text-color: var(--color-error);
185
+ border-color: var(--color-error);
185
186
  }
186
187
 
187
- .btn-outlined.btn-tertiary:hover {
188
- --btn-text-color: var(--color-tertiary-content);
189
- background-color: var(--color-tertiary);
188
+ .btn-outline.btn-error:hover,
189
+ .btn-outlined.btn-error:hover {
190
+ --btn-text-color: var(--color-error-content);
191
+ background-color: var(--color-error);
190
192
  }
191
193
 
192
194
  /* Ghost Variant */
@@ -228,6 +230,31 @@
228
230
  background-color: var(--color-tertiary-container);
229
231
  }
230
232
 
233
+ .btn-ghost.btn-info { --btn-text-color: var(--color-info); }
234
+ .btn-ghost.btn-success { --btn-text-color: var(--color-success); }
235
+ .btn-ghost.btn-warning { --btn-text-color: var(--color-warning); }
236
+ .btn-ghost.btn-error { --btn-text-color: var(--color-error); }
237
+
238
+ .btn-ghost.btn-info:hover {
239
+ --btn-text-color: var(--color-on-info-container);
240
+ background-color: var(--color-info-container);
241
+ }
242
+
243
+ .btn-ghost.btn-success:hover {
244
+ --btn-text-color: var(--color-on-success-container);
245
+ background-color: var(--color-success-container);
246
+ }
247
+
248
+ .btn-ghost.btn-warning:hover {
249
+ --btn-text-color: var(--color-on-warning-container);
250
+ background-color: var(--color-warning-container);
251
+ }
252
+
253
+ .btn-ghost.btn-error:hover {
254
+ --btn-text-color: var(--color-on-error-container);
255
+ background-color: var(--color-error-container);
256
+ }
257
+
231
258
  /* Text Variant (alias for .btn-ghost - documentation aligned) */
232
259
  .btn-text {
233
260
  --btn-text-color: var(--color-on-surface);
@@ -267,6 +294,31 @@
267
294
  background-color: var(--color-tertiary-container);
268
295
  }
269
296
 
297
+ .btn-text.btn-info { --btn-text-color: var(--color-info); }
298
+ .btn-text.btn-success { --btn-text-color: var(--color-success); }
299
+ .btn-text.btn-warning { --btn-text-color: var(--color-warning); }
300
+ .btn-text.btn-error { --btn-text-color: var(--color-error); }
301
+
302
+ .btn-text.btn-info:hover {
303
+ --btn-text-color: var(--color-on-info-container);
304
+ background-color: var(--color-info-container);
305
+ }
306
+
307
+ .btn-text.btn-success:hover {
308
+ --btn-text-color: var(--color-on-success-container);
309
+ background-color: var(--color-success-container);
310
+ }
311
+
312
+ .btn-text.btn-warning:hover {
313
+ --btn-text-color: var(--color-on-warning-container);
314
+ background-color: var(--color-warning-container);
315
+ }
316
+
317
+ .btn-text.btn-error:hover {
318
+ --btn-text-color: var(--color-on-error-container);
319
+ background-color: var(--color-error-container);
320
+ }
321
+
270
322
  /* Tonal Variant - uses container colors for subtle appearance */
271
323
  .btn-tonal {
272
324
  --btn-text-color: var(--color-on-primary-container);