@duskmoon-dev/core 1.12.3 → 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 (65) hide show
  1. package/dist/cjs/tailwind-plugin.cjs +8 -0
  2. package/dist/components/alert.css +64 -2
  3. package/dist/components/appbar.css +119 -21
  4. package/dist/components/autocomplete.css +63 -3
  5. package/dist/components/avatar.css +22 -2
  6. package/dist/components/button.css +101 -49
  7. package/dist/components/card.css +38 -2
  8. package/dist/components/cascader.css +59 -9
  9. package/dist/components/checkbox.css +15 -5
  10. package/dist/components/chip.css +122 -2
  11. package/dist/components/collapse.css +32 -0
  12. package/dist/components/datepicker.css +79 -6
  13. package/dist/components/file-upload.css +68 -8
  14. package/dist/components/form.css +2 -1
  15. package/dist/components/index.css +1583 -409
  16. package/dist/components/input.css +21 -67
  17. package/dist/components/multi-select.css +59 -9
  18. package/dist/components/otp-input.css +48 -16
  19. package/dist/components/pin-input.css +50 -13
  20. package/dist/components/radio.css +12 -2
  21. package/dist/components/rating.css +35 -3
  22. package/dist/components/segment-control.css +23 -2
  23. package/dist/components/select.css +21 -37
  24. package/dist/components/slider.css +130 -6
  25. package/dist/components/switch.css +27 -4
  26. package/dist/components/textarea.css +21 -96
  27. package/dist/components/time-input.css +61 -12
  28. package/dist/components/toast.css +72 -3
  29. package/dist/components/toggle.css +63 -6
  30. package/dist/components/tooltip.css +84 -0
  31. package/dist/components/tree-select.css +60 -11
  32. package/dist/esm/components/alert.js +64 -2
  33. package/dist/esm/components/appbar.js +119 -21
  34. package/dist/esm/components/autocomplete.js +63 -3
  35. package/dist/esm/components/avatar.js +22 -2
  36. package/dist/esm/components/button.js +101 -49
  37. package/dist/esm/components/card.js +38 -2
  38. package/dist/esm/components/cascader.js +59 -9
  39. package/dist/esm/components/checkbox.js +15 -5
  40. package/dist/esm/components/chip.js +122 -2
  41. package/dist/esm/components/collapse.js +32 -0
  42. package/dist/esm/components/datepicker.js +79 -6
  43. package/dist/esm/components/file-upload.js +68 -8
  44. package/dist/esm/components/form.js +2 -1
  45. package/dist/esm/components/input.js +21 -67
  46. package/dist/esm/components/multi-select.js +59 -9
  47. package/dist/esm/components/otp-input.js +48 -16
  48. package/dist/esm/components/pin-input.js +50 -13
  49. package/dist/esm/components/radio.js +12 -2
  50. package/dist/esm/components/rating.js +35 -3
  51. package/dist/esm/components/segment-control.js +23 -2
  52. package/dist/esm/components/select.js +21 -37
  53. package/dist/esm/components/slider.js +130 -6
  54. package/dist/esm/components/switch.js +27 -4
  55. package/dist/esm/components/textarea.js +21 -96
  56. package/dist/esm/components/time-input.js +61 -12
  57. package/dist/esm/components/toast.js +72 -3
  58. package/dist/esm/components/toggle.js +63 -6
  59. package/dist/esm/components/tooltip.js +84 -0
  60. package/dist/esm/components/tree-select.js +60 -11
  61. package/dist/esm/tailwind-plugin.js +8 -0
  62. package/dist/index.css +1583 -409
  63. package/dist/index.min.css +1 -1
  64. package/dist/types/tailwind-plugin.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -94,6 +94,26 @@ export const css = `/**
94
94
  color: var(--color-tertiary-content);
95
95
  }
96
96
 
97
+ .avatar-info {
98
+ background-color: var(--color-info);
99
+ color: var(--color-info-content);
100
+ }
101
+
102
+ .avatar-success {
103
+ background-color: var(--color-success);
104
+ color: var(--color-success-content);
105
+ }
106
+
107
+ .avatar-warning {
108
+ background-color: var(--color-warning);
109
+ color: var(--color-warning-content);
110
+ }
111
+
112
+ .avatar-error {
113
+ background-color: var(--color-error);
114
+ color: var(--color-error-content);
115
+ }
116
+
97
117
  /* Ring */
98
118
  .avatar-ring {
99
119
  outline: 2px solid var(--color-primary);
@@ -162,8 +182,8 @@ export const css = `/**
162
182
 
163
183
  /* Focus State for Interactive Avatars */
164
184
  .avatar:focus-visible {
165
- outline: 2px solid var(--color-primary);
166
- outline-offset: 2px;
185
+ outline: none;
186
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
167
187
  }
168
188
  }
169
189
  `;
@@ -45,8 +45,8 @@ export const css = `/**
45
45
  }
46
46
 
47
47
  .btn:focus-visible {
48
- outline: 2px solid var(--color-primary);
49
- outline-offset: 2px;
48
+ outline: none;
49
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
50
50
  }
51
51
 
52
52
  .btn:disabled {
@@ -68,10 +68,6 @@ export const css = `/**
68
68
  filter: none;
69
69
  }
70
70
 
71
- .btn-primary:focus-visible {
72
- outline-color: color-mix(in oklch, var(--color-primary), black 10%);
73
- }
74
-
75
71
  /* Secondary Button */
76
72
  .btn-secondary {
77
73
  --btn-text-color: var(--color-secondary-content);
@@ -85,10 +81,6 @@ export const css = `/**
85
81
  filter: none;
86
82
  }
87
83
 
88
- .btn-secondary:focus-visible {
89
- outline-color: color-mix(in oklch, var(--color-secondary), black 10%);
90
- }
91
-
92
84
  /* Tertiary Button */
93
85
  .btn-tertiary {
94
86
  --btn-text-color: var(--color-tertiary-content);
@@ -102,92 +94,102 @@ export const css = `/**
102
94
  filter: none;
103
95
  }
104
96
 
105
- .btn-tertiary:focus-visible {
106
- outline-color: color-mix(in oklch, var(--color-tertiary), black 10%);
107
- }
108
-
109
- /* Outline Variant */
110
- .btn-outline {
97
+ /* Outline / Outlined Variant (.btn-outlined is an alias) */
98
+ .btn-outline,
99
+ .btn-outlined {
111
100
  --btn-text-color: var(--color-on-surface);
112
101
  background-color: transparent;
113
102
  border: 1px solid var(--color-outline);
114
103
  }
115
104
 
116
- .btn-outline:hover {
105
+ .btn-outline:hover,
106
+ .btn-outlined:hover {
117
107
  background-color: var(--color-surface-container);
118
108
  filter: none;
119
109
  }
120
110
 
121
- .btn-outline.btn-primary {
111
+ .btn-outline.btn-primary,
112
+ .btn-outlined.btn-primary {
122
113
  --btn-text-color: var(--color-primary);
123
114
  border-color: var(--color-primary);
124
115
  }
125
116
 
126
- .btn-outline.btn-primary:hover {
117
+ .btn-outline.btn-primary:hover,
118
+ .btn-outlined.btn-primary:hover {
127
119
  --btn-text-color: var(--color-primary-content);
128
120
  background-color: var(--color-primary);
129
121
  }
130
122
 
131
- .btn-outline.btn-secondary {
123
+ .btn-outline.btn-secondary,
124
+ .btn-outlined.btn-secondary {
132
125
  --btn-text-color: var(--color-secondary);
133
126
  border-color: var(--color-secondary);
134
127
  }
135
128
 
136
- .btn-outline.btn-secondary:hover {
129
+ .btn-outline.btn-secondary:hover,
130
+ .btn-outlined.btn-secondary:hover {
137
131
  --btn-text-color: var(--color-secondary-content);
138
132
  background-color: var(--color-secondary);
139
133
  }
140
134
 
141
- .btn-outline.btn-tertiary {
135
+ .btn-outline.btn-tertiary,
136
+ .btn-outlined.btn-tertiary {
142
137
  --btn-text-color: var(--color-tertiary);
143
138
  border-color: var(--color-tertiary);
144
139
  }
145
140
 
146
- .btn-outline.btn-tertiary:hover {
141
+ .btn-outline.btn-tertiary:hover,
142
+ .btn-outlined.btn-tertiary:hover {
147
143
  --btn-text-color: var(--color-tertiary-content);
148
144
  background-color: var(--color-tertiary);
149
145
  }
150
146
 
151
- /* Outlined Variant (alias for .btn-outline - documentation aligned) */
152
- .btn-outlined {
153
- --btn-text-color: var(--color-on-surface);
154
- background-color: transparent;
155
- border: 1px solid var(--color-outline);
147
+ .btn-outline.btn-info,
148
+ .btn-outlined.btn-info {
149
+ --btn-text-color: var(--color-info);
150
+ border-color: var(--color-info);
156
151
  }
157
152
 
158
- .btn-outlined:hover {
159
- background-color: var(--color-surface-container);
160
- filter: none;
153
+ .btn-outline.btn-info:hover,
154
+ .btn-outlined.btn-info:hover {
155
+ --btn-text-color: var(--color-info-content);
156
+ background-color: var(--color-info);
161
157
  }
162
158
 
163
- .btn-outlined.btn-primary {
164
- --btn-text-color: var(--color-primary);
165
- border-color: var(--color-primary);
159
+ .btn-outline.btn-success,
160
+ .btn-outlined.btn-success {
161
+ --btn-text-color: var(--color-success);
162
+ border-color: var(--color-success);
166
163
  }
167
164
 
168
- .btn-outlined.btn-primary:hover {
169
- --btn-text-color: var(--color-primary-content);
170
- background-color: var(--color-primary);
165
+ .btn-outline.btn-success:hover,
166
+ .btn-outlined.btn-success:hover {
167
+ --btn-text-color: var(--color-success-content);
168
+ background-color: var(--color-success);
171
169
  }
172
170
 
173
- .btn-outlined.btn-secondary {
174
- --btn-text-color: var(--color-secondary);
175
- border-color: var(--color-secondary);
171
+ .btn-outline.btn-warning,
172
+ .btn-outlined.btn-warning {
173
+ --btn-text-color: var(--color-warning);
174
+ border-color: var(--color-warning);
176
175
  }
177
176
 
178
- .btn-outlined.btn-secondary:hover {
179
- --btn-text-color: var(--color-secondary-content);
180
- background-color: var(--color-secondary);
177
+ .btn-outline.btn-warning:hover,
178
+ .btn-outlined.btn-warning:hover {
179
+ --btn-text-color: var(--color-warning-content);
180
+ background-color: var(--color-warning);
181
181
  }
182
182
 
183
- .btn-outlined.btn-tertiary {
184
- --btn-text-color: var(--color-tertiary);
185
- border-color: var(--color-tertiary);
183
+ .btn-outline.btn-error,
184
+ .btn-outlined.btn-error {
185
+ --btn-text-color: var(--color-error);
186
+ border-color: var(--color-error);
186
187
  }
187
188
 
188
- .btn-outlined.btn-tertiary:hover {
189
- --btn-text-color: var(--color-tertiary-content);
190
- background-color: var(--color-tertiary);
189
+ .btn-outline.btn-error:hover,
190
+ .btn-outlined.btn-error:hover {
191
+ --btn-text-color: var(--color-error-content);
192
+ background-color: var(--color-error);
191
193
  }
192
194
 
193
195
  /* Ghost Variant */
@@ -229,6 +231,31 @@ export const css = `/**
229
231
  background-color: var(--color-tertiary-container);
230
232
  }
231
233
 
234
+ .btn-ghost.btn-info { --btn-text-color: var(--color-info); }
235
+ .btn-ghost.btn-success { --btn-text-color: var(--color-success); }
236
+ .btn-ghost.btn-warning { --btn-text-color: var(--color-warning); }
237
+ .btn-ghost.btn-error { --btn-text-color: var(--color-error); }
238
+
239
+ .btn-ghost.btn-info:hover {
240
+ --btn-text-color: var(--color-on-info-container);
241
+ background-color: var(--color-info-container);
242
+ }
243
+
244
+ .btn-ghost.btn-success:hover {
245
+ --btn-text-color: var(--color-on-success-container);
246
+ background-color: var(--color-success-container);
247
+ }
248
+
249
+ .btn-ghost.btn-warning:hover {
250
+ --btn-text-color: var(--color-on-warning-container);
251
+ background-color: var(--color-warning-container);
252
+ }
253
+
254
+ .btn-ghost.btn-error:hover {
255
+ --btn-text-color: var(--color-on-error-container);
256
+ background-color: var(--color-error-container);
257
+ }
258
+
232
259
  /* Text Variant (alias for .btn-ghost - documentation aligned) */
233
260
  .btn-text {
234
261
  --btn-text-color: var(--color-on-surface);
@@ -268,6 +295,31 @@ export const css = `/**
268
295
  background-color: var(--color-tertiary-container);
269
296
  }
270
297
 
298
+ .btn-text.btn-info { --btn-text-color: var(--color-info); }
299
+ .btn-text.btn-success { --btn-text-color: var(--color-success); }
300
+ .btn-text.btn-warning { --btn-text-color: var(--color-warning); }
301
+ .btn-text.btn-error { --btn-text-color: var(--color-error); }
302
+
303
+ .btn-text.btn-info:hover {
304
+ --btn-text-color: var(--color-on-info-container);
305
+ background-color: var(--color-info-container);
306
+ }
307
+
308
+ .btn-text.btn-success:hover {
309
+ --btn-text-color: var(--color-on-success-container);
310
+ background-color: var(--color-success-container);
311
+ }
312
+
313
+ .btn-text.btn-warning:hover {
314
+ --btn-text-color: var(--color-on-warning-container);
315
+ background-color: var(--color-warning-container);
316
+ }
317
+
318
+ .btn-text.btn-error:hover {
319
+ --btn-text-color: var(--color-on-error-container);
320
+ background-color: var(--color-error-container);
321
+ }
322
+
271
323
  /* Tonal Variant - uses container colors for subtle appearance */
272
324
  .btn-tonal {
273
325
  --btn-text-color: var(--color-on-primary-container);
@@ -163,6 +163,42 @@ export const css = `/**
163
163
  color: var(--color-on-tertiary-container);
164
164
  }
165
165
 
166
+ .card-info {
167
+ background-color: var(--color-info-container);
168
+ color: var(--color-on-info-container);
169
+ }
170
+
171
+ .card-info .card-title {
172
+ color: var(--color-on-info-container);
173
+ }
174
+
175
+ .card-success {
176
+ background-color: var(--color-success-container);
177
+ color: var(--color-on-success-container);
178
+ }
179
+
180
+ .card-success .card-title {
181
+ color: var(--color-on-success-container);
182
+ }
183
+
184
+ .card-warning {
185
+ background-color: var(--color-warning-container);
186
+ color: var(--color-on-warning-container);
187
+ }
188
+
189
+ .card-warning .card-title {
190
+ color: var(--color-on-warning-container);
191
+ }
192
+
193
+ .card-error {
194
+ background-color: var(--color-error-container);
195
+ color: var(--color-on-error-container);
196
+ }
197
+
198
+ .card-error .card-title {
199
+ color: var(--color-on-error-container);
200
+ }
201
+
166
202
  /* Glass Effect */
167
203
  .card-glass {
168
204
  background-color: rgb(255 255 255 / 0.1);
@@ -190,8 +226,8 @@ export const css = `/**
190
226
  }
191
227
 
192
228
  .card-interactive:focus-visible {
193
- outline: 2px solid var(--color-primary);
194
- outline-offset: 2px;
229
+ outline: none;
230
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
195
231
  }
196
232
 
197
233
  /* Full Image Card */
@@ -24,20 +24,19 @@ export const css = `/**
24
24
  line-height: 1.5rem;
25
25
  color: var(--color-on-surface);
26
26
  background-color: var(--color-surface);
27
- border: 1px solid var(--color-outline);
27
+ border: 1px solid currentColor;
28
28
  border-radius: 0.5rem;
29
29
  cursor: pointer;
30
30
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
31
31
  }
32
32
 
33
33
  .cascader-trigger:hover:not(:disabled) {
34
- border-color: var(--color-on-surface-variant);
34
+ background-color: var(--color-surface-container);
35
35
  }
36
36
 
37
37
  .cascader-trigger:focus {
38
38
  outline: none;
39
- border-color: var(--color-primary);
40
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
39
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
41
40
  }
42
41
 
43
42
  .cascader-trigger:disabled {
@@ -364,20 +363,71 @@ export const css = `/**
364
363
  }
365
364
 
366
365
  .cascader-filled .cascader-trigger:focus {
367
- border-bottom-color: var(--color-primary);
366
+ border-bottom-color: currentColor;
368
367
  box-shadow: none;
369
368
  }
370
369
 
371
- /* Error State */
372
- .cascader-error .cascader-trigger {
373
- border-color: var(--color-error);
370
+ /* Color Variants */
371
+ .cascader-primary .cascader-trigger {
372
+ color: var(--color-primary);
373
+ }
374
+ .cascader-primary .cascader-trigger:focus {
375
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
376
+ }
377
+
378
+ .cascader-secondary .cascader-trigger {
379
+ color: var(--color-secondary);
380
+ }
381
+ .cascader-secondary .cascader-trigger:focus {
382
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
383
+ }
384
+
385
+ .cascader-tertiary .cascader-trigger {
386
+ color: var(--color-tertiary);
387
+ }
388
+ .cascader-tertiary .cascader-trigger:focus {
389
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
390
+ }
391
+
392
+ .cascader-info .cascader-trigger {
393
+ color: var(--color-info);
394
+ }
395
+ .cascader-info .cascader-trigger:focus {
396
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
397
+ }
398
+
399
+ .cascader-success .cascader-trigger {
400
+ color: var(--color-success);
401
+ }
402
+ .cascader-success .cascader-trigger:focus {
403
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
404
+ }
405
+
406
+ .cascader-warning .cascader-trigger {
407
+ color: var(--color-warning);
408
+ }
409
+ .cascader-warning .cascader-trigger:focus {
410
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
374
411
  }
375
412
 
413
+ .cascader-error .cascader-trigger {
414
+ color: var(--color-error);
415
+ }
376
416
  .cascader-error .cascader-trigger:focus {
377
- border-color: var(--color-error);
378
417
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
379
418
  }
380
419
 
420
+ /* Ghost Variant */
421
+ .cascader-ghost .cascader-trigger {
422
+ background-color: transparent;
423
+ border-color: transparent;
424
+ }
425
+ .cascader-ghost .cascader-trigger:focus {
426
+ background-color: var(--color-surface-container);
427
+ border-color: transparent;
428
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
429
+ }
430
+
381
431
  /* Disabled State */
382
432
  .cascader-disabled .cascader-trigger {
383
433
  cursor: not-allowed;
@@ -13,6 +13,7 @@ export const css = `/**
13
13
  --checkbox-size: 1.25rem;
14
14
  --checkbox-color: var(--color-primary);
15
15
  --checkbox-border-color: var(--color-on-surface-variant);
16
+ color: var(--color-on-surface);
16
17
 
17
18
  position: relative;
18
19
  display: inline-grid;
@@ -35,8 +36,8 @@ export const css = `/**
35
36
  height: 0.35em;
36
37
  transform: scale(0) rotate(-45deg);
37
38
  transform-origin: center;
38
- border-bottom: 2px solid var(--color-on-primary);
39
- border-left: 2px solid var(--color-on-primary);
39
+ border-bottom: 2px solid var(--color-primary-content);
40
+ border-left: 2px solid var(--color-primary-content);
40
41
  transition: transform 150ms ease-in-out;
41
42
  }
42
43
 
@@ -59,7 +60,7 @@ export const css = `/**
59
60
  .checkbox:indeterminate::before {
60
61
  width: 0.5em;
61
62
  height: 0;
62
- border-bottom: 2px solid var(--color-on-primary);
63
+ border-bottom: 2px solid var(--color-primary-content);
63
64
  border-left: 0;
64
65
  transform: scale(1) rotate(0deg);
65
66
  }
@@ -77,8 +78,8 @@ export const css = `/**
77
78
 
78
79
  /* Focus State */
79
80
  .checkbox:focus-visible {
80
- outline: 2px solid var(--checkbox-color);
81
- outline-offset: 2px;
81
+ outline: none;
82
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--checkbox-color) 20%, transparent);
82
83
  }
83
84
 
84
85
  /* Disabled State */
@@ -178,6 +179,15 @@ export const css = `/**
178
179
  border-color: var(--color-info-content);
179
180
  }
180
181
 
182
+ /* Ghost Variant — borderless unchecked state */
183
+ .checkbox-ghost {
184
+ --checkbox-border-color: transparent;
185
+ }
186
+
187
+ .checkbox-ghost:hover:not(:disabled):not(:checked) {
188
+ border-color: transparent;
189
+ }
190
+
181
191
  /* ========================================
182
192
  * Checkbox with Label (wrapper pattern)
183
193
  * ======================================== */
@@ -36,8 +36,8 @@ export const css = `/**
36
36
  }
37
37
 
38
38
  .chip:focus-visible {
39
- outline: 2px solid var(--color-primary);
40
- outline-offset: 2px;
39
+ outline: none;
40
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
41
41
  }
42
42
 
43
43
  /* Color Variants - Filled */
@@ -68,6 +68,42 @@ export const css = `/**
68
68
  background-color: color-mix(in oklch, var(--color-tertiary), black 10%);
69
69
  }
70
70
 
71
+ .chip-info {
72
+ background-color: var(--color-info);
73
+ color: var(--color-info-content);
74
+ }
75
+
76
+ .chip-info:hover {
77
+ background-color: color-mix(in oklch, var(--color-info), black 10%);
78
+ }
79
+
80
+ .chip-success {
81
+ background-color: var(--color-success);
82
+ color: var(--color-success-content);
83
+ }
84
+
85
+ .chip-success:hover {
86
+ background-color: color-mix(in oklch, var(--color-success), black 10%);
87
+ }
88
+
89
+ .chip-warning {
90
+ background-color: var(--color-warning);
91
+ color: var(--color-warning-content);
92
+ }
93
+
94
+ .chip-warning:hover {
95
+ background-color: color-mix(in oklch, var(--color-warning), black 10%);
96
+ }
97
+
98
+ .chip-error {
99
+ background-color: var(--color-error);
100
+ color: var(--color-error-content);
101
+ }
102
+
103
+ .chip-error:hover {
104
+ background-color: color-mix(in oklch, var(--color-error), black 10%);
105
+ }
106
+
71
107
  /* Outlined Variant */
72
108
  .chip-outlined {
73
109
  background-color: transparent;
@@ -105,6 +141,42 @@ export const css = `/**
105
141
  background-color: var(--color-tertiary-container);
106
142
  }
107
143
 
144
+ .chip-outlined.chip-info {
145
+ border-color: var(--color-info);
146
+ color: var(--color-info);
147
+ }
148
+
149
+ .chip-outlined.chip-info:hover {
150
+ background-color: var(--color-info-container);
151
+ }
152
+
153
+ .chip-outlined.chip-success {
154
+ border-color: var(--color-success);
155
+ color: var(--color-success);
156
+ }
157
+
158
+ .chip-outlined.chip-success:hover {
159
+ background-color: var(--color-success-container);
160
+ }
161
+
162
+ .chip-outlined.chip-warning {
163
+ border-color: var(--color-warning);
164
+ color: var(--color-warning);
165
+ }
166
+
167
+ .chip-outlined.chip-warning:hover {
168
+ background-color: var(--color-warning-container);
169
+ }
170
+
171
+ .chip-outlined.chip-error {
172
+ border-color: var(--color-error);
173
+ color: var(--color-error);
174
+ }
175
+
176
+ .chip-outlined.chip-error:hover {
177
+ background-color: var(--color-error-container);
178
+ }
179
+
108
180
  /* Tonal/Soft Variant */
109
181
  .chip-tonal {
110
182
  background-color: var(--color-surface-container-high);
@@ -125,6 +197,54 @@ export const css = `/**
125
197
  color: var(--color-on-tertiary-container);
126
198
  }
127
199
 
200
+ .chip-tonal.chip-info {
201
+ background-color: var(--color-info-container);
202
+ color: var(--color-on-info-container);
203
+ }
204
+
205
+ .chip-tonal.chip-success {
206
+ background-color: var(--color-success-container);
207
+ color: var(--color-on-success-container);
208
+ }
209
+
210
+ .chip-tonal.chip-warning {
211
+ background-color: var(--color-warning-container);
212
+ color: var(--color-on-warning-container);
213
+ }
214
+
215
+ .chip-tonal.chip-error {
216
+ background-color: var(--color-error-container);
217
+ color: var(--color-on-error-container);
218
+ }
219
+
220
+ /* Ghost Variant */
221
+ .chip-ghost {
222
+ background-color: transparent;
223
+ border-color: transparent;
224
+ }
225
+
226
+ .chip-ghost:hover {
227
+ background-color: var(--color-surface-container);
228
+ }
229
+
230
+ /* Ghost + color sub-variants: transparent bg/border, colored text.
231
+ Hover uses container color (matches .chip-outlined.chip-*:hover pattern). */
232
+ .chip-ghost.chip-primary { background-color: transparent; color: var(--color-primary); }
233
+ .chip-ghost.chip-secondary { background-color: transparent; color: var(--color-secondary); }
234
+ .chip-ghost.chip-tertiary { background-color: transparent; color: var(--color-tertiary); }
235
+ .chip-ghost.chip-info { background-color: transparent; color: var(--color-info); }
236
+ .chip-ghost.chip-success { background-color: transparent; color: var(--color-success); }
237
+ .chip-ghost.chip-warning { background-color: transparent; color: var(--color-warning); }
238
+ .chip-ghost.chip-error { background-color: transparent; color: var(--color-error); }
239
+
240
+ .chip-ghost.chip-primary:hover { background-color: var(--color-primary-container); }
241
+ .chip-ghost.chip-secondary:hover { background-color: var(--color-secondary-container); }
242
+ .chip-ghost.chip-tertiary:hover { background-color: var(--color-tertiary-container); }
243
+ .chip-ghost.chip-info:hover { background-color: var(--color-info-container); }
244
+ .chip-ghost.chip-success:hover { background-color: var(--color-success-container); }
245
+ .chip-ghost.chip-warning:hover { background-color: var(--color-warning-container); }
246
+ .chip-ghost.chip-error:hover { background-color: var(--color-error-container); }
247
+
128
248
  /* Size Variants */
129
249
  .chip-sm {
130
250
  padding: 0.25rem 0.5rem;
@@ -220,6 +220,38 @@ export const css = `/**
220
220
  background-color: var(--color-tertiary-container);
221
221
  }
222
222
 
223
+ .collapse-info .collapse-trigger {
224
+ color: var(--color-info);
225
+ }
226
+
227
+ .collapse-info .collapse-trigger:hover {
228
+ background-color: var(--color-info-container);
229
+ }
230
+
231
+ .collapse-success .collapse-trigger {
232
+ color: var(--color-success);
233
+ }
234
+
235
+ .collapse-success .collapse-trigger:hover {
236
+ background-color: var(--color-success-container);
237
+ }
238
+
239
+ .collapse-warning .collapse-trigger {
240
+ color: var(--color-warning);
241
+ }
242
+
243
+ .collapse-warning .collapse-trigger:hover {
244
+ background-color: var(--color-warning-container);
245
+ }
246
+
247
+ .collapse-error .collapse-trigger {
248
+ color: var(--color-error);
249
+ }
250
+
251
+ .collapse-error .collapse-trigger:hover {
252
+ background-color: var(--color-error-container);
253
+ }
254
+
223
255
  /* Size Variants */
224
256
  .collapse-sm .collapse-trigger {
225
257
  padding: 0.5rem 0.75rem;