material-inspired-component-library 1.2.2 → 1.3.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 (48) hide show
  1. package/README.md +10 -0
  2. package/components/button/README.md +1 -1
  3. package/components/button/index.scss +52 -79
  4. package/components/card/index.scss +28 -29
  5. package/components/checkbox/index.scss +0 -5
  6. package/components/dialog/index.scss +11 -7
  7. package/components/iconbutton/README.md +1 -1
  8. package/components/iconbutton/index.scss +46 -80
  9. package/components/list/index.scss +39 -30
  10. package/components/list/index.ts +10 -9
  11. package/components/menu/README.md +67 -4
  12. package/components/menu/index.scss +29 -29
  13. package/components/menu/index.ts +47 -16
  14. package/components/navigationrail/README.md +99 -0
  15. package/components/navigationrail/index.scss +157 -0
  16. package/components/radio/index.scss +21 -11
  17. package/components/select/index.scss +5 -11
  18. package/components/textfield/index.scss +8 -2
  19. package/dist/bottomsheet.css +1 -1
  20. package/dist/button.css +1 -1
  21. package/dist/card.css +1 -1
  22. package/dist/checkbox.css +1 -1
  23. package/dist/components/menu/index.d.ts +0 -11
  24. package/dist/dialog.css +1 -1
  25. package/dist/iconbutton.css +1 -1
  26. package/dist/list.css +1 -1
  27. package/dist/menu.css +1 -1
  28. package/dist/micl.css +1 -1
  29. package/dist/micl.js +1 -1
  30. package/dist/navigationrail.css +1 -0
  31. package/dist/navigationrail.js +1 -0
  32. package/dist/radio.css +1 -1
  33. package/dist/select.css +1 -1
  34. package/dist/slider.css +1 -1
  35. package/dist/switch.css +1 -1
  36. package/dist/textfield.css +1 -1
  37. package/docs/docs.js +2 -2
  38. package/docs/index.html +3 -1
  39. package/docs/menu.html +183 -3
  40. package/docs/micl.css +1 -1
  41. package/docs/micl.js +1 -1
  42. package/docs/navigationrail.html +75 -0
  43. package/micl.ts +10 -8
  44. package/package.json +7 -7
  45. package/styles/statelayer.scss +14 -0
  46. package/styles.scss +1 -1
  47. package/webpack.config.js +37 -0
  48. package/styles/ripple.scss +0 -50
package/README.md CHANGED
@@ -88,6 +88,7 @@ The library currently consists of the following components:
88
88
  - [x] [Icon button](components/iconbutton/README.md)
89
89
  - [x] [List](components/list/README.md)
90
90
  - [x] [Menu](components/menu/README.md)
91
+ - [ ] [Navigation rail](components/navigationrail/README.md)
91
92
  - [x] [Radio button](components/radio/README.md)
92
93
  - [x] [Select](components/select/README.md)
93
94
  - [x] [Side sheet](components/sidesheet/README.md)
@@ -97,10 +98,19 @@ The library currently consists of the following components:
97
98
 
98
99
  ## Change Log
99
100
 
101
+ ### 1.3.0 (23.08.2025)
102
+ **Features**
103
+
104
+ - **Menu**: Added support for submenus.
105
+ - **Ripple**: The ripple-effect does not use a pseudo-element anymore.
106
+ - **State layer**: Rewrite for simpler styling.
107
+
100
108
  ### 1.2.0 (17.08.2025)
101
109
  **Features**
110
+
102
111
  - **List**: Added support for switches inside list items.
103
112
 
104
113
  ### 1.1.0 (12.08.2025)
105
114
  **Features**
115
+
106
116
  - **Text field**: Added support for multi-line text fields.
@@ -18,7 +18,7 @@ Import the button styles into your project:
18
18
  ```
19
19
 
20
20
  ### JavaScript
21
- This component requires JavaScript for interactive features like the **ripple effect** and **toggle logic**:
21
+ This component requires JavaScript for interactive features like the **toggle logic**:
22
22
 
23
23
  ```JavaScript
24
24
  import micl from "material-inspired-component-library/dist/micl";
@@ -21,7 +21,6 @@
21
21
 
22
22
  @use '../../styles/elevation';
23
23
  @use '../../styles/motion';
24
- @use '../../styles/ripple';
25
24
  @use '../../styles/shapes';
26
25
  @use '../../styles/statelayer';
27
26
  @use '../../styles/typography';
@@ -54,11 +53,20 @@ button.micl-button-outlined-xl {
54
53
  --md-sys-button-motion-effects: #{motion.$md-sys-motion-expressive-fast-spatial};
55
54
  --md-sys-button-motion-duration: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
56
55
  --md-sys-button-motion-duration-reverse: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
56
+ --miclripple: 1;
57
57
 
58
58
  padding: 0;
59
59
  border: none;
60
+ background-image:
61
+ radial-gradient(circle at var(--x, center) var(--y, center), transparent 0%, rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)) 10%, transparent 10%),
62
+ linear-gradient(rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)));
63
+ background-repeat: no-repeat;
64
+ background-size: 10000%, 100%;
60
65
  cursor: pointer;
61
- transition: border-radius var(--md-sys-button-motion-duration) var(--md-sys-button-motion-effects);
66
+ transition:
67
+ border-radius var(--md-sys-button-motion-duration) var(--md-sys-button-motion-effects),
68
+ background-size 3000ms,
69
+ --statelayer-opacity var(--md-sys-button-motion-duration) linear;
62
70
 
63
71
  &:disabled {
64
72
  background-color: rgb(from var(--md-sys-color-on-surface) r g b / 10%);
@@ -66,9 +74,15 @@ button.micl-button-outlined-xl {
66
74
  box-shadow: var(--md-sys-elevation-level0);
67
75
  cursor: default;
68
76
  }
69
- &:not(:disabled):focus-visible {
70
- outline: var(--md-sys-state-focus-indicator-thickness) solid var(--md-sys-color-secondary);
71
- outline-offset: 3px;
77
+ &:not(:disabled) {
78
+ &:focus-visible {
79
+ outline: var(--md-sys-state-focus-indicator-thickness) solid var(--md-sys-color-secondary);
80
+ outline-offset: 3px;
81
+ }
82
+ &:active {
83
+ background-size: 0%, 100%;
84
+ transition: background-size 0ms;
85
+ }
72
86
  }
73
87
  .micl-button__icon {
74
88
  font-variation-settings: 'FILL' 0;
@@ -105,9 +119,6 @@ button.micl-button-outlined-xs {
105
119
  }
106
120
  }
107
121
  &:not(:disabled) {
108
- --miclripple: 1;
109
- @include ripple.effect;
110
-
111
122
  &:active {
112
123
  &.micl-button-elevated-xs {
113
124
  border-radius: var(--md-sys-shape-corner-small);
@@ -157,9 +168,6 @@ button.micl-button-outlined-s {
157
168
  }
158
169
  }
159
170
  &:not(:disabled) {
160
- --miclripple: 1;
161
- @include ripple.effect;
162
-
163
171
  &:active:not(:disabled) {
164
172
  &.micl-button-elevated-s {
165
173
  border-radius: var(--md-sys-shape-corner-small);
@@ -203,9 +211,6 @@ button.micl-button-outlined-m {
203
211
  }
204
212
  }
205
213
  &:not(:disabled) {
206
- --miclripple: 1;
207
- @include ripple.effect;
208
-
209
214
  &:active:not(:disabled) {
210
215
  border-radius: var(--md-sys-shape-corner-medium);
211
216
  }
@@ -241,9 +246,6 @@ button.micl-button-outlined-l {
241
246
  }
242
247
  }
243
248
  &:not(:disabled) {
244
- --miclripple: 1;
245
- @include ripple.effect;
246
-
247
249
  &:active:not(:disabled) {
248
250
  border-radius: var(--md-sys-shape-corner-large);
249
251
  }
@@ -279,9 +281,6 @@ button.micl-button-outlined-xl {
279
281
  }
280
282
  }
281
283
  &:not(:disabled) {
282
- --miclripple: 1;
283
- @include ripple.effect;
284
-
285
284
  &:active:not(:disabled) {
286
285
  border-radius: var(--md-sys-shape-corner-large);
287
286
  }
@@ -299,22 +298,24 @@ button.micl-button-text-s,
299
298
  button.micl-button-text-m,
300
299
  button.micl-button-text-l,
301
300
  button.micl-button-text-xl {
301
+ --statelayer-color: var(--md-sys-color-primary);
302
+
302
303
  background-color: transparent;
303
304
  color: var(--md-sys-color-primary);
304
305
 
305
306
  &:not(:disabled) {
306
307
  &:hover {
307
- background-color: rgb(from var(--md-sys-color-primary) r g b / var(--md-sys-state-hover-state-layer-opacity));
308
+ --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
308
309
 
309
310
  .micl-button__icon {
310
311
  font-variation-settings: 'FILL' 1;
311
312
  }
312
313
  }
313
314
  &:focus-visible {
314
- background-color: rgb(from var(--md-sys-color-primary) r g b / var(--md-sys-state-focus-state-layer-opacity));
315
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity);
315
316
  }
316
317
  &:active {
317
- background-color: rgb(from var(--md-sys-color-primary) r g b / var(--md-sys-state-pressed-state-layer-opacity));
318
+ --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity);
318
319
  }
319
320
  }
320
321
  }
@@ -324,12 +325,16 @@ button.micl-button-elevated-s,
324
325
  button.micl-button-elevated-m,
325
326
  button.micl-button-elevated-l,
326
327
  button.micl-button-elevated-xl {
328
+ --statelayer-color: var(--md-sys-color-primary);
329
+
327
330
  background-color: var(--md-sys-color-surface-container-low);
328
331
  color: var(--md-sys-color-primary);
329
332
  box-shadow: var(--md-sys-elevation-level1);
330
333
 
331
334
  &:not(:disabled) {
332
335
  &.micl-button--toggle.micl-button--selected {
336
+ --statelayer-color: var(--md-sys-color-on-primary);
337
+
333
338
  background-color: var(--md-sys-color-primary);
334
339
  color: var(--md-sys-color-on-primary);
335
340
 
@@ -338,28 +343,17 @@ button.micl-button-elevated-xl {
338
343
  }
339
344
  }
340
345
  &:hover {
341
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-primary), var(--md-sys-state-hover-state-layer-opacity));
346
+ --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
342
347
 
343
- &.micl-button--toggle.micl-button--selected {
344
- background-color: color-mix(in srgb, var(--md-sys-color-primary), var(--md-sys-color-on-primary) var(--md-sys-state-hover-state-layer-opacity));
345
- }
346
348
  .micl-button__icon {
347
349
  font-variation-settings: 'FILL' 1;
348
350
  }
349
351
  }
350
352
  &:focus-visible {
351
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-primary), var(--md-sys-state-focus-state-layer-opacity));
352
-
353
- &.micl-button--toggle.micl-button--selected {
354
- background-color: color-mix(in srgb, var(--md-sys-color-primary), var(--md-sys-color-on-primary) var(--md-sys-state-focus-state-layer-opacity));
355
- }
353
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity);
356
354
  }
357
355
  &:active {
358
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-primary), var(--md-sys-state-pressed-state-layer-opacity));
359
-
360
- &.micl-button--toggle.micl-button--selected {
361
- background-color: color-mix(in srgb, var(--md-sys-color-primary), var(--md-sys-color-on-primary) var(--md-sys-state-pressed-state-layer-opacity));
362
- }
356
+ --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity);
363
357
  }
364
358
  }
365
359
  }
@@ -377,6 +371,8 @@ button.micl-button-filled-s,
377
371
  button.micl-button-filled-m,
378
372
  button.micl-button-filled-l,
379
373
  button.micl-button-filled-xl {
374
+ --statelayer-color: var(--md-sys-color-on-primary);
375
+
380
376
  background-color: var(--md-sys-color-primary);
381
377
  color: var(--md-sys-color-on-primary);
382
378
 
@@ -387,32 +383,23 @@ button.micl-button-filled-xl {
387
383
  }
388
384
  }
389
385
  &.micl-button--toggle:not(.micl-button--selected) {
386
+ --statelayer-color: var(--md-sys-color-on-surface-variant);
387
+
390
388
  background-color: var(--md-sys-color-surface-container);
391
389
  color: var(--md-sys-color-on-surface-variant);
392
390
  }
393
391
  &:hover {
394
- background-color: color-mix(in srgb, var(--md-sys-color-primary), var(--md-sys-color-on-primary) var(--md-sys-state-hover-state-layer-opacity));
392
+ --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
395
393
 
396
- &.micl-button--toggle:not(.micl-button--selected) {
397
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container), var(--md-sys-color-on-surface-variant) var(--md-sys-state-hover-state-layer-opacity));
398
- }
399
394
  .micl-button__icon {
400
395
  font-variation-settings: 'FILL' 1;
401
396
  }
402
397
  }
403
398
  &:focus-visible {
404
- background-color: color-mix(in srgb, var(--md-sys-color-primary), var(--md-sys-color-on-primary) var(--md-sys-state-focus-state-layer-opacity));
405
-
406
- &.micl-button--toggle:not(.micl-button--selected) {
407
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container), var(--md-sys-color-on-surface-variant) var(--md-sys-state-focus-state-layer-opacity));
408
- }
399
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity);
409
400
  }
410
401
  &:active {
411
- background-color: color-mix(in srgb, var(--md-sys-color-primary), var(--md-sys-color-on-primary) var(--md-sys-state-pressed-state-layer-opacity));
412
-
413
- &.micl-button--toggle:not(.micl-button--selected) {
414
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container), var(--md-sys-color-on-surface-variant) var(--md-sys-state-pressed-state-layer-opacity));
415
- }
402
+ --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity);
416
403
  }
417
404
  }
418
405
  }
@@ -422,11 +409,15 @@ button.micl-button-tonal-s,
422
409
  button.micl-button-tonal-m,
423
410
  button.micl-button-tonal-l,
424
411
  button.micl-button-tonal-xl {
412
+ --statelayer-color: var(--md-sys-color-on-secondary-container);
413
+
425
414
  background-color: var(--md-sys-color-secondary-container);
426
415
  color: var(--md-sys-color-on-secondary-container);
427
416
 
428
417
  &:not(:disabled) {
429
418
  &.micl-button--toggle.micl-button--selected {
419
+ --statelayer-color: var(--md-sys-color-on-secondary);
420
+
430
421
  background-color: var(--md-sys-color-secondary);
431
422
  color: var(--md-sys-color-on-secondary);
432
423
 
@@ -435,28 +426,17 @@ button.micl-button-tonal-xl {
435
426
  }
436
427
  }
437
428
  &:hover {
438
- background-color: color-mix(in srgb, var(--md-sys-color-secondary-container), var(--md-sys-color-on-secondary-container) var(--md-sys-state-hover-state-layer-opacity));
429
+ --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
439
430
 
440
- &.micl-button--toggle.micl-button--selected {
441
- background-color: color-mix(in srgb, var(--md-sys-color-secondary), var(--md-sys-color-on-secondary) var(--md-sys-state-hover-state-layer-opacity));
442
- }
443
431
  .micl-button__icon {
444
432
  font-variation-settings: 'FILL' 1;
445
433
  }
446
434
  }
447
435
  &:focus-visible {
448
- background-color: color-mix(in srgb, var(--md-sys-color-secondary-container), var(--md-sys-color-on-secondary-container) var(--md-sys-state-focus-state-layer-opacity));
449
-
450
- &.micl-button--toggle.micl-button--selected {
451
- background-color: color-mix(in srgb, var(--md-sys-color-secondary), var(--md-sys-color-on-secondary) var(--md-sys-state-focus-state-layer-opacity));
452
- }
436
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity);
453
437
  }
454
438
  &:active {
455
- background-color: color-mix(in srgb, var(--md-sys-color-secondary-container), var(--md-sys-color-on-secondary-container) var(--md-sys-state-pressed-state-layer-opacity));
456
-
457
- &.micl-button--toggle.micl-button--selected {
458
- background-color: color-mix(in srgb, var(--md-sys-color-secondary), var(--md-sys-color-on-secondary) var(--md-sys-state-pressed-state-layer-opacity));
459
- }
439
+ --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity);
460
440
  }
461
441
  }
462
442
  }
@@ -466,11 +446,15 @@ button.micl-button-outlined-s,
466
446
  button.micl-button-outlined-m,
467
447
  button.micl-button-outlined-l,
468
448
  button.micl-button-outlined-xl {
449
+ --statelayer-color: var(--md-sys-color-on-surface-variant);
450
+
469
451
  background-color: transparent;
470
452
  color: var(--md-sys-color-on-surface-variant);
471
453
 
472
454
  &:not(:disabled) {
473
455
  &.micl-button--toggle.micl-button--selected {
456
+ --statelayer-color: var(--md-sys-color-inverse-on-surface);
457
+
474
458
  background-color: var(--md-sys-color-inverse-surface);
475
459
  color: var(--md-sys-color-inverse-on-surface);
476
460
 
@@ -479,28 +463,17 @@ button.micl-button-outlined-xl {
479
463
  }
480
464
  }
481
465
  &:hover {
482
- background-color: rgb(from var(--md-sys-color-on-surface-variant) r g b / var(--md-sys-state-hover-state-layer-opacity));
466
+ --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
483
467
 
484
- &.micl-button--toggle.micl-button--selected {
485
- background-color: color-mix(in srgb, var(--md-sys-color-inverse-surface), var(--md-sys-color-inverse-on-surface) var(--md-sys-state-hover-state-layer-opacity));
486
- }
487
468
  .micl-button__icon {
488
469
  font-variation-settings: 'FILL' 1;
489
470
  }
490
471
  }
491
472
  &:focus-visible {
492
- background-color: rgb(from var(--md-sys-color-on-surface-variant) r g b / var(--md-sys-state-focus-state-layer-opacity));
493
-
494
- &.micl-button--toggle.micl-button--selected {
495
- background-color: color-mix(in srgb, var(--md-sys-color-inverse-surface), var(--md-sys-color-inverse-on-surface) var(--md-sys-state-focus-state-layer-opacity));
496
- }
473
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity);
497
474
  }
498
475
  &:active {
499
- background-color: rgb(from var(--md-sys-color-on-surface-variant) r g b / var(--md-sys-state-pressed-state-layer-opacity));
500
-
501
- &.micl-button--toggle.micl-button--selected {
502
- background-color: color-mix(in srgb, var(--md-sys-color-inverse-surface), var(--md-sys-color-inverse-on-surface) var(--md-sys-state-pressed-state-layer-opacity));
503
- }
476
+ --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity);
504
477
  }
505
478
  }
506
479
  }
@@ -21,7 +21,6 @@
21
21
 
22
22
  @use '../../styles/elevation';
23
23
  @use '../../styles/motion';
24
- @use '../../styles/ripple';
25
24
  @use '../../styles/shapes';
26
25
  @use '../../styles/statelayer';
27
26
  @use '../../styles/typography';
@@ -45,18 +44,45 @@
45
44
 
46
45
  &[tabindex='0']:not(.micl-card--disabled) {
47
46
  --miclripple: 1;
47
+ --statelayer-color: var(--md-sys-color-on-surface);
48
48
 
49
- @include ripple.effect;
49
+ background-image:
50
+ radial-gradient(circle at var(--x, center) var(--y, center), transparent 0%, rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)) 10%, transparent 10%),
51
+ linear-gradient(rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)));
52
+ background-repeat: no-repeat;
53
+ background-size: 10000%, 100%;
54
+ transition:
55
+ background-size 3000ms,
56
+ --statelayer-opacity var(--md-sys-card-motion-duration) linear;
50
57
 
51
58
  &:hover {
59
+ --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
60
+
52
61
  box-shadow: var(--md-sys-elevation-level1);
53
62
  cursor: pointer;
54
63
  }
55
64
  &:focus-visible {
65
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity);
66
+
56
67
  outline: var(--md-sys-state-focus-indicator-thickness) solid var(--md-sys-color-secondary);
57
68
  outline-offset: var(--md-sys-state-focus-indicator-outer-offset);
58
69
  box-shadow: var(--md-sys-elevation-level1);
59
70
  }
71
+ &:active {
72
+ --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity);
73
+
74
+ background-size: 0%, 100%;
75
+ transition: background-size 0ms;
76
+ }
77
+ &.micl-card--dragging {
78
+ --statelayer-opacity: var(--md-sys-state-dragged-state-layer-opacity);
79
+
80
+ box-shadow: var(--md-sys-elevation-level3);
81
+ cursor: grabbing;
82
+ }
83
+ .micl-card__content {
84
+ background-color: transparent;
85
+ }
60
86
  }
61
87
  &:not([tabindex='0']):not(.micl-card--disabled):has(> summary:focus-visible) {
62
88
  outline: var(--md-sys-state-focus-indicator-thickness) solid var(--md-sys-color-secondary);
@@ -86,20 +112,13 @@
86
112
 
87
113
  &[tabindex='0']:not(.micl-card--disabled) {
88
114
  &:hover {
89
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-on-surface) var(--md-sys-state-hover-state-layer-opacity));
90
115
  box-shadow: var(--md-sys-elevation-level2);
91
116
  }
92
- &:focus-visible {
93
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-on-surface) var(--md-sys-state-focus-state-layer-opacity));
94
- }
95
117
  &:active {
96
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-on-surface) var(--md-sys-state-pressed-state-layer-opacity));
97
118
  box-shadow: var(--md-sys-elevation-level1);
98
119
  }
99
120
  &.micl-card--dragging {
100
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-low), var(--md-sys-color-on-surface) var(--md-sys-state-dragged-state-layer-opacity));
101
121
  box-shadow: var(--md-sys-elevation-level4);
102
- cursor: grabbing;
103
122
  }
104
123
  }
105
124
  }
@@ -108,22 +127,12 @@
108
127
  box-shadow: var(--md-sys-elevation-level0);
109
128
 
110
129
  &[tabindex='0']:not(.micl-card--disabled) {
111
- &:hover {
112
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-highest), var(--md-sys-color-on-surface) var(--md-sys-state-hover-state-layer-opacity));
113
- }
114
130
  &:focus-visible {
115
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-highest), var(--md-sys-color-on-surface) var(--md-sys-state-focus-state-layer-opacity));
116
131
  box-shadow: var(--md-sys-elevation-level0);
117
132
  }
118
133
  &:active {
119
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-highest), var(--md-sys-color-on-surface) var(--md-sys-state-pressed-state-layer-opacity));
120
134
  box-shadow: var(--md-sys-elevation-level0);
121
135
  }
122
- &.micl-card--dragging {
123
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-highest), var(--md-sys-color-on-surface) var(--md-sys-state-dragged-state-layer-opacity));
124
- box-shadow: var(--md-sys-elevation-level3);
125
- cursor: grabbing;
126
- }
127
136
  }
128
137
  }
129
138
  .micl-card-outlined {
@@ -132,24 +141,14 @@
132
141
  border: 1px solid var(--md-sys-color-outline-variant);
133
142
 
134
143
  &[tabindex='0']:not(.micl-card--disabled) {
135
- &:hover {
136
- background-color: color-mix(in srgb, var(--md-sys-color-surface), var(--md-sys-color-on-surface) var(--md-sys-state-hover-state-layer-opacity));
137
- }
138
144
  &:focus-visible {
139
145
  border-color: var(--md-sys-color-on-surface);
140
- background-color: color-mix(in srgb, var(--md-sys-color-surface), var(--md-sys-color-on-surface) var(--md-sys-state-focus-state-layer-opacity));
141
146
  box-shadow: var(--md-sys-elevation-level0);
142
147
  }
143
148
  &:active {
144
149
  border-color: var(--md-sys-color-outline-variant);
145
- background-color: color-mix(in srgb, var(--md-sys-color-surface), var(--md-sys-color-on-surface) var(--md-sys-state-pressed-state-layer-opacity));
146
150
  box-shadow: var(--md-sys-elevation-level0);
147
151
  }
148
- &.micl-card--dragging {
149
- background-color: color-mix(in srgb, var(--md-sys-color-surface), var(--md-sys-color-on-surface) var(--md-sys-state-dragged-state-layer-opacity));
150
- box-shadow: var(--md-sys-elevation-level3);
151
- cursor: grabbing;
152
- }
153
152
  }
154
153
  }
155
154
 
@@ -20,7 +20,6 @@
20
20
  // SOFTWARE.
21
21
 
22
22
  @use '../../styles/motion';
23
- @use '../../styles/ripple';
24
23
  @use '../../styles/statelayer';
25
24
  @use '../../styles/typography';
26
25
 
@@ -54,7 +53,6 @@
54
53
 
55
54
  input[type=checkbox].micl-checkbox {
56
55
  --md-sys-checkbox-motion-duration: #{motion.$md-sys-motion-expressive-slow-effects-duration};
57
- --md-sys-ripple-background-color: var(--md-sys-color-primary);
58
56
  --checkbox-container-color: transparent;
59
57
  --checkbox-container-border-color: var(--md-sys-color-on-surface-variant);
60
58
 
@@ -126,7 +124,6 @@ input[type=checkbox].micl-checkbox {
126
124
  --checkbox-container-border-color var(--md-sys-checkbox-motion-duration);
127
125
 
128
126
  &.micl-checkbox--error {
129
- --md-sys-ripple-background-color: var(--md-sys-color-error);
130
127
  --checkbox-container-border-color: var(--md-sys-color-error);
131
128
  }
132
129
  &::after {
@@ -178,8 +175,6 @@ input[type=checkbox].micl-checkbox {
178
175
  &:not(:disabled) {
179
176
  --miclripple: 1;
180
177
 
181
- @include ripple.effect;
182
-
183
178
  cursor: pointer;
184
179
 
185
180
  &:hover {
@@ -36,6 +36,7 @@
36
36
 
37
37
  dialog.micl-dialog,
38
38
  dialog.micl-dialog-fullscreen {
39
+ --statelayer-color: var(--md-sys-color-primary);
39
40
  --md-sys-dialog-motion-spatial: #{motion.$md-sys-motion-expressive-fast-spatial};
40
41
  --md-sys-dialog-motion-duration: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
41
42
  --md-sys-dialog-motion-duration-reverse: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
@@ -54,6 +55,8 @@ dialog.micl-dialog-fullscreen {
54
55
  border: none;
55
56
  border-radius: var(--md-sys-shape-corner-extra-large);
56
57
  background-color: var(--md-sys-color-surface-container-high);
58
+ background-image: linear-gradient(rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)));
59
+ background-repeat: no-repeat;
57
60
  box-shadow: var(--md-sys-elevation-level3);
58
61
  opacity: 0;
59
62
  overflow: hidden;
@@ -66,7 +69,8 @@ dialog.micl-dialog-fullscreen {
66
69
  transform var(--md-sys-dialog-motion-duration-reverse) linear,
67
70
  opacity var(--md-sys-dialog-motion-duration-reverse) motion.$md-sys-motion-easing-emphasized-decelerate,
68
71
  overlay var(--md-sys-dialog-motion-duration-reverse) linear allow-discrete,
69
- display var(--md-sys-dialog-motion-duration-reverse) linear allow-discrete;
72
+ display var(--md-sys-dialog-motion-duration-reverse) linear allow-discrete,
73
+ --statelayer-opacity var(--md-sys-dialog-motion-duration) linear;
70
74
 
71
75
  @starting-style {
72
76
  height: fit-content;
@@ -133,9 +137,9 @@ dialog.micl-dialog-fullscreen {
133
137
  background-color: rgba(0, 0, 0, 0);
134
138
  }
135
139
  }
136
- &:hover {
137
- background-color: color-mix(in srgb, var(--md-sys-color-surface-container-high), var(--md-sys-color-primary) var(--md-sys-state-hover-state-layer-opacity));
138
- }
140
+ // &:hover {
141
+ // --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
142
+ // }
139
143
 
140
144
  .micl-dialog__headline {
141
145
  display: flex;
@@ -213,9 +217,9 @@ dialog.micl-dialog-fullscreen {
213
217
  box-shadow: var(--md-sys-elevation-level0);
214
218
  timeline-scope: --headlineTimeline;
215
219
 
216
- &:hover {
217
- background-color: color-mix(in srgb, var(--md-sys-color-surface), var(--md-sys-color-primary) var(--md-sys-state-hover-state-layer-opacity));
218
- }
220
+ // &:hover {
221
+ // --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
222
+ // }
219
223
  .micl-dialog__headline {
220
224
  height: 56px;
221
225
  flex-direction: row;
@@ -20,7 +20,7 @@ Import the icon button styles into your project:
20
20
  ```
21
21
 
22
22
  ### JavaScript
23
- This component requires JavaScript for interactive features like the **ripple effect** and **toggle logic**:
23
+ This component requires JavaScript for interactive features like the **toggle logic**:
24
24
 
25
25
  ```JavaScript
26
26
  import micl from "material-inspired-component-library/dist/micl";