material-inspired-component-library 7.0.2 → 8.0.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 (66) hide show
  1. package/CLAUDE.md +42 -0
  2. package/README.md +6 -0
  3. package/components/accordion/README.md +6 -3
  4. package/components/button/index.scss +10 -6
  5. package/components/card/README.md +4 -0
  6. package/components/card/index.scss +159 -150
  7. package/components/checkbox/index.scss +11 -6
  8. package/components/datepicker/index.ts +9 -9
  9. package/components/dialog/index.scss +5 -6
  10. package/components/iconbutton/index.scss +10 -6
  11. package/components/list/README.md +191 -32
  12. package/components/list/index.scss +256 -190
  13. package/components/list/index.ts +100 -100
  14. package/components/menu/README.md +199 -10
  15. package/components/menu/index.scss +224 -47
  16. package/components/menu/index.ts +74 -37
  17. package/components/navigationrail/index.scss +75 -69
  18. package/components/radio/index.scss +11 -6
  19. package/components/select/README.md +42 -5
  20. package/components/select/index.scss +39 -79
  21. package/components/stepper/index.scss +1 -5
  22. package/components/textfield/index.scss +1 -1
  23. package/components/textfield/index.ts +2 -2
  24. package/dist/alert.css +1 -1
  25. package/dist/appbar.css +1 -1
  26. package/dist/badge.css +1 -1
  27. package/dist/bottomsheet.css +1 -1
  28. package/dist/button.css +1 -1
  29. package/dist/card.css +1 -1
  30. package/dist/checkbox.css +1 -1
  31. package/dist/components/list/index.d.ts +2 -2
  32. package/dist/datepicker.css +1 -1
  33. package/dist/dialog.css +1 -1
  34. package/dist/divider.css +1 -1
  35. package/dist/foundations.css +1 -1
  36. package/dist/iconbutton.css +1 -1
  37. package/dist/list.css +1 -1
  38. package/dist/menu.css +1 -1
  39. package/dist/micl.css +1 -1
  40. package/dist/micl.js +1 -1
  41. package/dist/navigationrail.css +1 -1
  42. package/dist/radio.css +1 -1
  43. package/dist/select.css +1 -1
  44. package/dist/sidesheet.css +1 -1
  45. package/dist/slider.css +1 -1
  46. package/dist/snackbar.css +1 -1
  47. package/dist/stepper.css +1 -1
  48. package/dist/switch.css +1 -1
  49. package/dist/textfield.css +1 -1
  50. package/dist/timepicker.css +1 -1
  51. package/docs/accordion.html +24 -24
  52. package/docs/bottomsheet.html +1 -4
  53. package/docs/dialog.html +1 -1
  54. package/docs/index.html +4 -4
  55. package/docs/list.html +38 -22
  56. package/docs/menu.html +246 -41
  57. package/docs/micl.css +1 -1
  58. package/docs/micl.js +1 -1
  59. package/docs/select.html +68 -19
  60. package/docs/shapes.html +85 -0
  61. package/foundations/index.scss +0 -1
  62. package/micl.ts +6 -1
  63. package/package.json +3 -3
  64. package/styles/README.md +4 -4
  65. package/styles/shapes.scss +81 -0
  66. package/styles/statelayer.scss +10 -0
@@ -20,48 +20,159 @@
20
20
  // SOFTWARE.
21
21
 
22
22
  @use '../../foundations';
23
+ @use '../../styles/elevation';
23
24
  @use '../../styles/motion';
24
25
  @use '../../styles/shapes';
25
26
  @use '../../styles/statelayer';
26
27
  @use '../../styles/typography';
27
28
 
28
29
  :root {
29
- --md-sys-list-padding: 8px;
30
- --md-sys-list-item-one-height: 56px;
31
- --md-sys-list-item-two-height: 72px;
32
- --md-sys-list-item-three-height: 88px;
33
- --md-sys-list-item-one-padding: 8px;
34
- --md-sys-list-item-two-padding: 8px;
35
- --md-sys-list-item-three-padding: 12px;
36
- --md-sys-list-item-space: 16px;
37
- --md-sys-list-item-padding-inline: 16px;
38
- --md-sys-accordion-item-space: 0px;
30
+ --md-comp-accordion-item-space: 0px;
31
+ }
32
+
33
+ $item-padding-block: var(--md-comp-list-item-top-space, 10px) var(--md-comp-list-item-bottom-space, 10px);
34
+ $item-padding-inline: var(--md-comp-list-item-leading-space, 16px) var(--md-comp-list-item-trailing-space, 16px);
35
+
36
+ %shared-interactive-states {
37
+ cursor: pointer;
38
+
39
+ &:not(:has(input[type=checkbox]:checked)) {
40
+ &:hover {
41
+ --_list-item-shape: var(--md-comp-list-item-container-hovered-expressive-shape, var(--md-sys-shape-corner-medium, 12px));
42
+ --_headline-color: var(--md-comp-list-item-hover-label-text-color, var(--md-sys-color-on-surface));
43
+ --_leading-icon-color: var(--md-comp-list-item-hover-leading-icon-color, var(--md-sys-color-on-surface-variant));
44
+ --_supporting-text-color: var(--md-comp-list-item-hover-supporting-text-color, var(--md-sys-color-on-surface-variant));
45
+ --_trailing-icon-color: var(--md-comp-list-item-hover-trailing-icon-color, var(--md-sys-color-on-surface-variant));
46
+ --_trailing-text-color: var(--md-comp-list-item-hover-trailing-supporting-text-color, var(--md-sys-color-on-surface-variant));
47
+ --statelayer-color: var(--md-comp-list-item-hover-state-layer-color, var(--md-sys-color-on-surface));
48
+ --statelayer-opacity: var(--md-comp-list-item-hover-state-layer-opacity, var(--md-sys-state-hover-state-layer-opacity, 8%));
49
+ }
50
+ &:focus-visible {
51
+ --_list-item-shape: var(--md-comp-list-item-container-focused-expressive-shape, var(--md-sys-shape-corner-large, 16px));
52
+ --_headline-color: var(--md-comp-list-item-focus-label-text-color, var(--md-sys-color-on-surface));
53
+ --_leading-icon-color: var(--md-comp-list-item-focus-leading-icon-color, var(--md-sys-color-on-surface-variant));
54
+ --_supporting-text-color: var(--md-comp-list-item-focus-supporting-text-color, var(--md-sys-color-on-surface-variant));
55
+ --_trailing-icon-color: var(--md-comp-list-item-focus-trailing-icon-color, var(--md-sys-color-on-surface-variant));
56
+ --_trailing-text-color: var(--md-comp-list-item-focus-trailing-supporting-text-color, var(--md-sys-color-on-surface-variant));
57
+ --statelayer-color: var(--md-comp-list-item-focus-state-layer-color, var(--md-sys-color-on-surface));
58
+ --statelayer-opacity: var(--md-comp-list-item-focus-state-layer-opacity, var(--md-sys-state-focus-state-layer-opacity, 10%));
59
+
60
+ outline: var(--md-comp-list-item-focus-indicator-thickness, var(--md-sys-state-focus-indicator-thickness, 3px)) solid var(--md-comp-list-item-focus-indicator-color, var(--md-sys-color-secondary));
61
+ outline-offset: var(--md-comp-list-item-focus-indicator-offset, var(--md-sys-state-focus-indicator-inner-offset, -3px));
62
+ }
63
+ &:active {
64
+ --_list-item-shape: var(--md-comp-list-item-container-pressed-expressive-shape, var(--md-sys-shape-corner-large, 16px));
65
+ --_headline-color: var(--md-comp-list-item-pressed-label-text-color, var(--md-sys-color-on-surface));
66
+ --_leading-icon-color: var(--md-comp-list-item-pressed-leading-icon-color, var(--md-sys-color-on-surface-variant));
67
+ --_supporting-text-color: var(--md-comp-list-item-pressed-supporting-text-color, var(--md-sys-color-on-surface-variant));
68
+ --_trailing-icon-color: var(--md-comp-list-item-pressed-trailing-icon-color, var(--md-sys-color-on-surface-variant));
69
+ --_trailing-text-color: var(--md-comp-list-item-pressed-trailing-supporting-text-color, var(--md-sys-color-on-surface-variant));
70
+ --statelayer-color: var(--md-comp-list-item-pressed-state-layer-color, var(--md-sys-color-on-surface));
71
+ --statelayer-opacity: var(--md-comp-list-item-pressed-state-layer-opacity, var(--md-sys-state-pressed-state-layer-opacity, 10%));
72
+ }
73
+ &.micl-list-item--dragging {
74
+ --_list-item-shape: var(--md-comp-list-item-container-dragged-expressive-shape, var(--md-sys-shape-corner-large, 16px));
75
+ --_headline-color: var(--md-comp-list-item-dragged-label-text-color, var(--md-sys-color-on-surface));
76
+ --_leading-icon-color: var(--md-comp-list-item-dragged-leading-icon-color, var(--md-sys-color-on-surface-variant));
77
+ --_supporting-text-color: var(--md-comp-list-item-dragged-supporting-text-color, var(--md-sys-color-on-surface-variant));
78
+ --_trailing-icon-color: var(--md-comp-list-item-dragged-trailing-icon-color, var(--md-sys-color-on-surface-variant));
79
+ --_trailing-text-color: var(--md-comp-list-item-dragged-trailing-supporting-text-color, var(--md-sys-color-on-surface-variant));
80
+ --statelayer-color: var(--md-comp-list-item-dragged-state-layer-color, var(--md-sys-color-on-surface));
81
+ --statelayer-opacity: var(--md-comp-list-item-dragged-state-layer-opacity, var(--md-sys-state-dragged-state-layer-opacity, 16%));
82
+
83
+ box-shadow: var(--md-comp-list-item-dragged-container-elevation, var(--md-sys-elevation-level4));
84
+ cursor: grabbing;
85
+ }
86
+ }
87
+ &:has(input[type=checkbox]:checked) {
88
+ &:hover {
89
+ --_list-item-shape: var(--md-comp-list-item-container-selected-hovered-expressive-shape, var(--md-sys-shape-corner-large, 16px));
90
+ --_headline-color: var(--md-comp-list-item-selected-hover-label-text-color, var(--md-sys-color-on-secondary-container));
91
+ --_leading-icon-color: var(--md-comp-list-item-selected-hover-leading-icon-color, var(--md-sys-color-on-surface));
92
+ --_supporting-text-color: var(--md-comp-list-item-selected-hover-supporting-text-color, var(--md-sys-color-on-surface));
93
+ --_trailing-icon-color: var(--md-comp-list-item-selected-hover-trailing-icon-color, var(--md-sys-color-on-surface));
94
+ --_trailing-text-color: var(--md-comp-list-item-selected-hover-trailing-supporting-text-color, var(--md-sys-color-on-surface));
95
+ --statelayer-color: var(--md-comp-list-item-selected-hover-state-layer-color, var(--md-sys-color-on-surface));
96
+ --statelayer-opacity: var(--md-comp-list-item-selected-hover-state-layer-opacity, var(--md-sys-state-hover-state-layer-opacity, 8%));
97
+ }
98
+ &:focus-visible {
99
+ --_list-item-shape: var(--md-comp-list-item-container-selected-focused-expressive-shape, var(--md-sys-shape-corner-large, 16px));
100
+ --_headline-color: var(--md-comp-list-item-selected-focus-label-text-color, var(--md-sys-color-on-secondary-container));
101
+ --_leading-icon-color: var(--md-comp-list-item-selected-focus-leading-icon-color, var(--md-sys-color-on-surface));
102
+ --_supporting-text-color: var(--md-comp-list-item-selected-focus-supporting-text-color, var(--md-sys-color-on-surface));
103
+ --_trailing-icon-color: var(--md-comp-list-item-selected-focus-trailing-icon-color, var(--md-sys-color-on-surface));
104
+ --_trailing-text-color: var(--md-comp-list-item-selected-focus-trailing-supporting-text-color, var(--md-sys-color-on-surface));
105
+ --statelayer-color: var(--md-comp-list-item-selected-focus-state-layer-color, var(--md-sys-color-on-surface));
106
+ --statelayer-opacity: var(--md-comp-list-item-selected-focus-state-layer-opacity, var(--md-sys-state-focus-state-layer-opacity, 10%));
107
+
108
+ outline: var(--md-comp-list-item-focus-indicator-thickness, var(--md-sys-state-focus-indicator-thickness, 3px)) solid var(--md-comp-list-item-focus-indicator-color, var(--md-sys-color-secondary));
109
+ outline-offset: var(--md-comp-list-item-focus-indicator-offset, var(--md-sys-state-focus-indicator-inner-offset, -3px));
110
+ }
111
+ &:active {
112
+ --_list-item-shape: var(--md-comp-list-item-container-selected-pressed-expressive-shape, var(--md-sys-shape-corner-large, 16px));
113
+ --_headline-color: var(--md-comp-list-item-selected-pressed-label-text-color, var(--md-sys-color-on-secondary-container));
114
+ --_leading-icon-color: var(--md-comp-list-item-selected-pressed-leading-icon-color, var(--md-sys-color-on-surface));
115
+ --_supporting-text-color: var(--md-comp-list-item-selected-pressed-supporting-text-color, var(--md-sys-color-on-surface));
116
+ --_trailing-icon-color: var(--md-comp-list-item-selected-pressed-trailing-icon-color, var(--md-sys-color-on-surface));
117
+ --_trailing-text-color: var(--md-comp-list-item-selected-pressed-trailing-supporting-text-color, var(--md-sys-color-on-surface));
118
+ --statelayer-color: var(--md-comp-list-item-selected-pressed-state-layer-color, var(--md-sys-color-on-surface));
119
+ --statelayer-opacity: var(--md-comp-list-item-selected-pressed-state-layer-opacity, var(--md-sys-state-pressed-state-layer-opacity, 10%));
120
+ }
121
+ &.micl-list-item--dragging {
122
+ --_list-item-shape: var(--md-comp-list-item-container-selected-dragged-expressive-shape, var(--md-sys-shape-corner-large, 16px));
123
+ --_headline-color: var(--md-comp-list-item-selected-dragged-label-text-color, var(--md-sys-color-on-secondary-container));
124
+ --_leading-icon-color: var(--md-comp-list-item-selected-dragged-leading-icon-color, var(--md-sys-color-on-surface));
125
+ --_supporting-text-color: var(--md-comp-list-item-selected-dragged-supporting-text-color, var(--md-sys-color-on-surface));
126
+ --_trailing-icon-color: var(--md-comp-list-item-selected-dragged-trailing-icon-color, var(--md-sys-color-on-surface));
127
+ --_trailing-text-color: var(--md-comp-list-item-selected-dragged-trailing-supporting-text-color, var(--md-sys-color-on-surface));
128
+ --statelayer-color: var(--md-comp-list-item-selected-dragged-state-layer-color, var(--md-sys-color-on-surface));
129
+ --statelayer-opacity: var(--md-comp-list-item-selected-dragged-state-layer-opacity, var(--md-sys-state-dragged-state-layer-opacity, 16%));
130
+
131
+ box-shadow: var(--md-comp-list-item-selected-dragged-container-elevation, var(--md-sys-elevation-level4));
132
+ }
133
+ }
134
+ &.micl-rippling {
135
+ animation: micl-ripple var(--md-sys-state-ripple-duration) motion.$md-sys-motion-easing-standard;
136
+ }
39
137
  }
40
138
 
41
139
  .micl-list {
42
- --md-sys-list-item-container-color: var(--md-sys-color-surface);
43
- --md-sys-list-motion-duration: #{motion.$md-sys-motion-expressive-default-effects-duration};
44
- --md-sys-accordion-motion-spatial: #{motion.$md-sys-motion-expressive-default-spatial};
45
- --md-sys-accordion-motion-duration: #{motion.$md-sys-motion-expressive-default-spatial-duration};
46
- --md-sys-divider-space: 8px;
47
-
48
- margin: 0;
49
- padding: var(--md-sys-list-padding, 8px) 0;
140
+ --md-comp-list-motion-effects: #{motion.$md-sys-motion-expressive-fast-spatial};
141
+ --md-comp-list-motion-duration: #{motion.$md-sys-motion-expressive-default-effects-duration};
142
+ --md-comp-accordion-motion-spatial: #{motion.$md-sys-motion-expressive-default-spatial};
143
+ --md-comp-accordion-motion-duration: #{motion.$md-sys-motion-expressive-default-spatial-duration};
144
+ --md-sys-divider-space: 0.5px;
145
+ --_list-shape: var(--md-comp-list-container-shape, var(--md-sys-shape-corner-large, 16px));
146
+ --_list-item-background-color: var(--md-comp-list-item-container-color, transparent);
147
+ --_list-item-background-opacity: 0%;
148
+
149
+ display: flex;
150
+ flex-direction: column;
151
+ margin: var(--md-comp-list-container-space, 0px) 0;
152
+ padding: 0;
153
+ border-radius: var(--_list-shape);
50
154
  interpolate-size: allow-keywords;
51
155
  list-style-type: none;
52
- overflow-x: hidden;
156
+ background-color: var(--md-comp-list-container-color, transparent);
157
+
158
+ &.micl-list--segmented {
159
+ --_list-item-background-color: var(--md-comp-list-item-segmented-container-color, var(--md-sys-color-surface));
160
+ --_list-item-background-opacity: 100%;
161
+
162
+ row-gap: var(--md-comp-list-segment-gap, 2px);
163
+ }
53
164
 
54
165
  &> details {
55
166
  &::details-content {
56
167
  block-size: 0;
57
168
  overflow: hidden;
58
169
  transition:
59
- block-size var( --md-sys-accordion-motion-duration) var(--md-sys-accordion-motion-spatial),
60
- content-visibility var(--md-sys-accordion-motion-duration) linear allow-discrete;
170
+ block-size var( --md-comp-accordion-motion-duration) var(--md-comp-accordion-motion-spatial),
171
+ content-visibility var(--md-comp-accordion-motion-duration) linear allow-discrete;
61
172
  }
62
173
  &[open]::details-content {
63
174
  block-size: auto;
64
- margin-block-end: var(--md-sys-accordion-item-space, 0px);
175
+ margin-block-end: var(--md-comp-accordion-item-space, 0px);
65
176
  }
66
177
  &[open] .micl-list-item__icon--expander {
67
178
  transform: rotate(180deg);
@@ -79,51 +190,22 @@
79
190
  pointer-events: none;
80
191
  }
81
192
  &:not(.micl-list-item--disabled) {
82
- cursor: pointer;
193
+ @extend %shared-interactive-states;
83
194
  }
84
195
  }
85
196
  .micl-list-item__content {
86
197
  box-sizing: border-box;
87
- padding-inline: var(--md-sys-list-item-padding-inline, 16px);
88
- background-color: var(--md-sys-list-item-container-color);
198
+ padding-inline-start: var(--md-comp-list-item-leading-space, 16px);
199
+ background-color: rgb(from var(--_list-item-background-color) r g b / var(--_list-item-background-opacity));
89
200
  overflow: hidden;
90
201
  }
91
202
  }
92
203
  }
93
204
 
94
- .micl-list:has(.micl-list-item-one[tabindex], .micl-list-item-two[tabindex], .micl-list-item-three[tabindex]),
95
- select {
96
- .micl-list-item-one:not(:disabled):not(.micl-list-item--disabled),
97
- .micl-list-item-two:not(:disabled):not(.micl-list-item--disabled),
98
- .micl-list-item-three:not(:disabled):not(.micl-list-item--disabled) {
99
- cursor: pointer;
100
-
101
- &:hover {
102
- --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity, 8%);
103
-
104
- .micl-list-item__icon {
105
- font-variation-settings: 'FILL' 1;
106
- }
107
- }
108
- &:focus-visible {
109
- --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity, 10%);
110
-
111
- outline: var(--md-sys-state-focus-indicator-thickness, 3px) solid var(--md-sys-color-secondary);
112
- outline-offset: var(--md-sys-state-focus-indicator-inner-offset, -3px);
113
-
114
- .micl-list-item__icon {
115
- font-variation-settings: 'FILL' 1;
116
- }
117
- }
118
- &:active {
119
- --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity, 10%);
120
-
121
- background-size: 0%, 100%;
122
- transition: background-size 0ms;
123
-
124
- .micl-list-item__icon {
125
- font-variation-settings: 'FILL' 1;
126
- }
205
+ .micl-list:has(.micl-list-item-one[tabindex], .micl-list-item-two[tabindex], .micl-list-item-three[tabindex]), select {
206
+ .micl-list-item-one, .micl-list-item-two, .micl-list-item-three {
207
+ &:not(:disabled):not(.micl-list-item--disabled) {
208
+ @extend %shared-interactive-states;
127
209
  }
128
210
  }
129
211
  }
@@ -132,28 +214,49 @@ select {
132
214
  .micl-list-item-two,
133
215
  .micl-list-item-three {
134
216
  --statelayer-color: var(--md-sys-color-on-surface);
135
- --md-sys-list-item-thumbnail-aspect-ratio: 1.778;
217
+ --_list-item-shape: var(--md-comp-list-item-container-expressive-shape, var(--md-sys-shape-corner-extra-small, 4px));
218
+ --_overline-color: var(--md-comp-list-item-overline-color, var(--md-sys-color-on-surface-variant));
219
+ --_headline-color: var(--md-comp-list-item-label-text-color, var(--md-sys-color-on-surface));
220
+ --_leading-icon-color: var(--md-comp-list-item-leading-icon-color, var(--md-sys-color-on-surface-variant));
221
+ --_supporting-text-color: var(--md-comp-list-item-supporting-text-color, var(--md-sys-color-on-surface-variant));
222
+ --_trailing-text-color: var(--md-comp-list-item-trailing-supporting-text-color, var(--md-sys-color-on-surface-variant));
223
+ --_trailing-icon-color: var(--md-comp-list-item-trailing-icon-color, var(--md-sys-color-on-surface-variant));
136
224
 
137
225
  box-sizing: border-box;
138
226
  display: flex;
139
227
  align-items: center;
140
- column-gap: var(--md-sys-list-item-space, 16px);
141
- padding-inline: var(--md-sys-list-item-space, 16px);
228
+ column-gap: var(--md-comp-list-item-between-space, 12px);
229
+ padding-block: $item-padding-block;
230
+ padding-inline: $item-padding-inline;
142
231
  border: none;
143
- border-radius: var(--md-sys-shape-corner-none, 0px);
232
+ border-radius: var(--_list-item-shape);
144
233
  outline: none;
145
- background-color: var(--md-sys-list-item-container-color);
234
+ background-color: rgb(from var(--_list-item-background-color) r g b / var(--_list-item-background-opacity));
146
235
  background-image:
147
- radial-gradient(circle at var(--micl-x, center) var(--micl-y, center), transparent 0%, rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)) 10%, transparent 10%),
236
+ radial-gradient(
237
+ circle at var(--micl-x, center) var(--micl-y, center),
238
+ transparent 0%,
239
+ rgb(from var(--statelayer-color) r g b / calc(var(--statelayer-opacity) * var(--md-sys-state-ripple-opacity-factor))) 10%,
240
+ transparent 10%
241
+ ),
148
242
  linear-gradient(rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)));
149
243
  background-repeat: no-repeat;
150
- background-size: 10000%, 100%;
244
+ background-size: 0%, 100%;
151
245
  list-style: none;
152
246
  transition:
153
- background-size 3000ms,
154
- --statelayer-opacity var(--md-sys-list-motion-duration) linear;
247
+ border-radius var(--md-comp-list-motion-duration) var(--md-comp-list-motion-effects),
248
+ background-size 0ms,
249
+ --statelayer-opacity var(--md-comp-list-motion-duration) linear;
155
250
  -webkit-tap-highlight-color: transparent;
156
251
 
252
+ &:first-of-type {
253
+ border-start-start-radius: max(var(--_list-item-shape), var(--_list-shape));
254
+ border-start-end-radius: max(var(--_list-item-shape), var(--_list-shape));
255
+ }
256
+ &:last-of-type {
257
+ border-end-start-radius: max(var(--_list-item-shape), var(--_list-shape));
258
+ border-end-end-radius: max(var(--_list-item-shape), var(--_list-shape));
259
+ }
157
260
  &:not(:has(> button)) {
158
261
  --micl-ripple: 1;
159
262
  }
@@ -166,7 +269,8 @@ select {
166
269
  column-gap: inherit;
167
270
  min-block-size: inherit;
168
271
  inline-size: 100%;
169
- padding-inline: var(--md-sys-list-item-space, 16px);
272
+ padding-block: $item-padding-block;
273
+ padding-inline: $item-padding-inline;
170
274
  border: none;
171
275
  border-radius: inherit;
172
276
  background-color: transparent;
@@ -174,39 +278,57 @@ select {
174
278
  cursor: pointer;
175
279
  }
176
280
  &:has(> a,> button,> label) {
177
- padding-inline: 0;
281
+ padding: 0;
178
282
  }
179
283
  &:disabled,
180
284
  &.micl-list-item--disabled {
181
- .micl-list-item__icon,
182
- .micl-list-item__headline,
183
- .micl-list-item__supporting-text,
184
- .micl-list-item__text,
185
- .micl-list-item__text::after,
186
- .micl-list-item__trailing-text {
187
- color: rgb(from var(--md-sys-color-on-surface) r g b / var(--md-sys-state-disabled-state-layer-opacity, 38%));
285
+ --_list-item-shape: var(--md-comp-list-item-container-disabled-expressive-shape, var(--md-sys-shape-corner-extra-small, 4px));
286
+ --_overline-color: rgb(from var(--md-comp-list-item-disabled-overline-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-disabled-overline-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
287
+ --_headline-color: rgb(from var(--md-comp-list-item-disabled-label-text-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-disabled-label-text-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
288
+ --_leading-icon-color: rgb(from var(--md-comp-list-item-disabled-leading-icon-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-disabled-leading-icon-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
289
+ --_supporting-text-color: rgb(from var(--md-comp-list-item-disabled-supporting-text-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-disabled-supporting-text-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
290
+ --_trailing-icon-color: rgb(from var(--md-comp-list-item-disabled-trailing-icon-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-disabled-trailing-icon-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
291
+ --_trailing-text-color: rgb(from var(--md-comp-list-item-disabled-trailing-supporting-text-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-disabled-trailing-supporting-text-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
292
+ --statelayer-color: var(--md-comp-list-item-disabled-state-layer-color, var(--md-sys-color-on-surface));
293
+ --statelayer-opacity: var(--md-comp-list-item-disabled-state-layer-opacity, 0%);
294
+
295
+ a, button, label {
296
+ pointer-events: none;
297
+ cursor: auto;
188
298
  }
299
+
189
300
  .micl-list-item__image,
190
301
  .micl-list-item__thumbnail {
191
302
  opacity: var(--md-sys-state-disabled-state-layer-opacity, 38%);
192
303
  }
193
- a, button, label {
194
- pointer-events: none;
195
- cursor: auto;
304
+
305
+ &:checked, &:has(input[type=checkbox]:checked) {
306
+ --_list-item-background-color: var(--md-comp-list-item-selected-disabled-container-color, var(--md-sys-color-on-surface));
307
+ --_list-item-background-opacity: var(--md-comp-list-item-selected-disabled-container-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%));
308
+ --_list-item-shape: var(--md-comp-list-item-container-selected-disabled-expressive-shape, var(--md-sys-shape-corner-large, 16px));
309
+ --_overline-color: rgb(from var(--md-comp-list-item-selected-disabled-overline-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-selected-disabled-overline-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
310
+ --_headline-color: rgb(from var(--md-comp-list-item-selected-disabled-label-text-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-selected-disabled-label-text-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
311
+ --_leading-icon-color: rgb(from var(--md-comp-list-item-selected-disabled-leading-icon-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-selected-disabled-leading-icon-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
312
+ --_supporting-text-color: rgb(from var(--md-comp-list-item-selected-disabled-supporting-text-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-selected-disabled-supporting-text-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
313
+ --_trailing-icon-color: rgb(from var(--md-comp-list-item-selected-disabled-trailing-icon-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-selected-disabled-trailing-icon-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
314
+ --_trailing-text-color: rgb(from var(--md-comp-list-item-selected-disabled-trailing-supporting-text-color, var(--md-sys-color-on-surface)) r g b / var(--md-comp-list-item-selected-disabled-trailing-supporting-text-opacity, var(--md-sys-state-disabled-state-layer-opacity, 38%)));
315
+ --statelayer-color: var(--md-comp-list-item-selected-disabled-state-layer-color, var(--md-sys-color-on-surface));
316
+ --statelayer-opacity: var(--md-comp-list-item-selected-disabled-state-layer-opacity, 0%);
196
317
  }
197
318
  }
319
+ &:checked, &:has(input[type=checkbox]:checked) {
320
+ --_list-item-background-color: var(--md-comp-list-item-selected-container-color, var(--md-sys-color-secondary-container));
321
+ --_list-item-background-opacity: 100%;
322
+ --_overline-color: var(--md-comp-list-item-selected-overline-color, var(--md-sys-color-on-secondary-container));
323
+ --_headline-color: var(--md-comp-list-item-selected-label-text-color, var(--md-sys-color-on-secondary-container));
324
+ --_leading-icon-color: var(--md-comp-list-item-selected-leading-icon-color, var(--md-sys-color-on-secondary-container));
325
+ --_supporting-text-color: var(--md-comp-list-item-selected-supporting-text-color, var(--md-sys-color-on-secondary-container));
326
+ --_trailing-text-color: var(--md-comp-list-item-selected-trailing-supporting-text-color, var(--md-sys-color-on-secondary-container));
327
+ --_trailing-icon-color: var(--md-comp-list-item-selected-trailing-icon-color, var(--md-sys-color-on-secondary-container));
328
+ }
198
329
  &:not(:disabled):not(.micl-list-item--disabled) {
199
- &:has(input[type=checkbox]:checked) {
200
- background-color: var(--md-sys-color-secondary-container);
201
-
202
- .micl-list-item__headline {
203
- color: var(--md-sys-color-on-secondary-container);
204
- }
205
- .micl-list-item__icon,
206
- .micl-list-item__supporting-text,
207
- .micl-list-item__trailing-text {
208
- color: var(--md-sys-color-on-surface);
209
- }
330
+ &:checked, &:has(input[type=checkbox]:checked) {
331
+ --_list-item-shape: var(--md-comp-list-item-container-selected-expressive-shape, var(--md-sys-shape-corner-large, 16px));
210
332
  }
211
333
  input[type=checkbox]:not(:disabled):hover,
212
334
  input[type=checkbox]:not(:disabled):active {
@@ -220,100 +342,29 @@ select {
220
342
  }
221
343
 
222
344
  .micl-list-item-one {
223
- min-block-size: var(--md-sys-list-item-one-height);
224
-
225
- &:not(:has(> a,> button,> label)) {
226
- padding-block-start: var(--md-sys-list-item-one-padding);
227
- padding-block-end: var(--md-sys-list-item-one-padding);
228
-
229
- &:has(.micl-list-item__thumbnail) {
230
- padding-block-start: var(--md-sys-list-item-three-padding);
231
- padding-block-end: var(--md-sys-list-item-three-padding);
232
- padding-inline-start: 0px;
233
- }
234
- }
235
- &> a,
236
- &> button,
237
- &> label {
238
- padding-block-start: var(--md-sys-list-item-one-padding);
239
- padding-block-end: var(--md-sys-list-item-one-padding);
240
-
241
- &:has(.micl-list-item__thumbnail) {
242
- padding-block-start: var(--md-sys-list-item-three-padding);
243
- padding-block-end: var(--md-sys-list-item-three-padding);
244
- padding-inline-start: 0px;
245
- }
246
- }
345
+ min-block-size: var(--md-comp-list-item-one-line-container-height, 56px);
247
346
  }
248
347
  .micl-list-item-two {
249
- min-block-size: var(--md-sys-list-item-two-height);
250
-
251
- &:not(:has(> a,> button,> label)) {
252
- padding-block-start: var(--md-sys-list-item-two-padding);
253
- padding-block-end: var(--md-sys-list-item-two-padding);
254
-
255
- &:has(.micl-list-item__thumbnail) {
256
- padding-inline-start: 0px;
257
- padding-block-start: 12px;
258
- padding-block-end: 12px;
259
- }
260
- }
261
- &> a,
262
- &> button,
263
- &> label {
264
- padding-block-start: var(--md-sys-list-item-two-padding);
265
- padding-block-end: var(--md-sys-list-item-two-padding);
348
+ min-block-size: var(--md-comp-list-item-two-line-container-height, 72px);
266
349
 
267
- &:has(.micl-list-item__thumbnail) {
268
- padding-inline-start: 0px;
269
- padding-block-start: 12px;
270
- padding-block-end: 12px;
271
- }
272
- }
273
350
  .micl-list-item__supporting-text {
274
351
  white-space: nowrap;
275
352
  overflow: hidden;
276
353
  text-overflow: ellipsis;
277
354
  }
278
- input[type=checkbox].micl-checkbox {
279
- block-size: 24px;
280
- min-block-size: 24px;
281
- inline-size: 24px;
282
- min-inline-size: 24px;
283
- }
284
355
  }
285
356
  .micl-list-item-three {
286
- min-block-size: var(--md-sys-list-item-three-height);
357
+ min-block-size: var(--md-comp-list-item-three-line-container-height, 88px);
287
358
  align-items: flex-start;
288
359
 
289
- &:not(:has(> a,> button,> label)) {
290
- padding-block-start: var(--md-sys-list-item-three-padding);
291
- padding-block-end: var(--md-sys-list-item-three-padding);
292
-
293
- &:has(.micl-list-item__thumbnail) {
294
- padding-block-start: var(--md-sys-list-item-three-padding);
295
- padding-block-end: var(--md-sys-list-item-three-padding);
296
- padding-inline-start: 0px;
297
- }
298
- }
299
- &> a,
300
- &> button,
301
- &> label {
302
- padding-block-start: var(--md-sys-list-item-three-padding);
303
- padding-block-end: var(--md-sys-list-item-three-padding);
304
-
305
- &:has(.micl-list-item__thumbnail) {
306
- padding-block-start: var(--md-sys-list-item-three-padding);
307
- padding-block-end: var(--md-sys-list-item-three-padding);
308
- padding-inline-start: 0px;
309
- }
310
- }
311
360
  .micl-list-item__supporting-text {
312
361
  display: -webkit-box;
313
362
  overflow: hidden;
314
363
  -webkit-box-orient: vertical;
315
364
  -webkit-line-clamp: 2;
316
365
  }
366
+ }
367
+ .micl-list-item-one, .micl-list-item-two, .micl-list-item-three {
317
368
  input[type=checkbox].micl-checkbox {
318
369
  block-size: 24px;
319
370
  min-block-size: 24px;
@@ -323,71 +374,86 @@ select {
323
374
  }
324
375
 
325
376
  .micl-list-item__icon {
326
- min-inline-size: var(--md-sys-icon-size, 24px);
327
- font-size: var(--md-sys-icon-size, 24px);
377
+ min-inline-size: var(--md-comp-list-item-leading-icon-expressive-size, 20px);
378
+ font-size: var(--md-comp-list-item-leading-icon-expressive-size, 20px);
328
379
  font-variation-settings: 'FILL' 0;
329
- color: var(--md-sys-color-on-surface-variant);
330
- transition: font-variation-settings var(--md-sys-list-motion-duration) linear;
380
+ color: var(--_leading-icon-color);
381
+ transition: font-variation-settings var(--md-comp-list-motion-duration) linear;
331
382
 
332
383
  &.micl-list-item__icon--expander {
333
384
  transform: rotate(0deg);
334
- transition: transform var(--md-sys-list-motion-duration) linear;
385
+ transition: transform var(--md-comp-list-motion-duration) linear;
335
386
  }
336
387
  }
388
+ .micl-list-item__text ~ .micl-list-item__icon {
389
+ min-inline-size: var(--md-comp-list-item-trailing-icon-expressive-size, 20px);
390
+ font-size: var(--md-comp-list-item-trailing-icon-expressive-size, 20px);
391
+ color: var(--_trailing-icon-color);
392
+ }
393
+
337
394
  .micl-list-item__avatar {
338
395
  @include typography.title-medium;
339
396
 
340
397
  display: flex;
341
398
  align-items: center;
342
399
  justify-content: center;
343
- block-size: 40px;
344
- min-inline-size: 40px;
345
- border-radius: var(--md-sys-shape-corner-full, 50%);
346
- color: var(--md-sys-color-on-primary-container);
347
- background-color: var(--md-sys-color-primary-container);
400
+ block-size: var(--md-comp-list-item-leading-avatar-size, 40px);
401
+ min-inline-size: var(--md-comp-list-item-leading-avatar-size, 40px);
402
+ border-radius: var(--md-comp-list-item-leading-avatar-shape, var(--md-sys-shape-corner-full, 50%));
403
+ color: var(--md-comp-list-item-leading-avatar-label-color, var(--md-sys-color-on-primary-container));
404
+ background-color: var(--md-comp-list-item-leading-avatar-color, var(--md-sys-color-primary-container));
348
405
  }
349
406
  .micl-list-item__image {
407
+ align-self: stretch;
350
408
  display: inline-block;
351
- block-size: 56px;
352
- min-inline-size: 56px;
353
- border-radius: var(--md-sys-shape-corner-none, 0px);
409
+ max-block-size: var(--md-comp-list-item-leading-image-height, 56px);
410
+ inline-size: var(--md-comp-list-item-leading-image-width, 56px);
411
+ max-inline-size: var(--md-comp-list-item-leading-image-width, 56px);
412
+ min-inline-size: var(--md-comp-list-item-leading-image-width, 56px);
413
+ border-radius: var(--md-comp-list-item-leading-image-expressive-shape, var(--md-sys-shape-corner-small, 8px));
354
414
  background-position: center;
355
415
  background-repeat: no-repeat;
356
416
  background-size: cover;
357
417
  }
358
418
  .micl-list-item__thumbnail {
419
+ align-self: stretch;
359
420
  display: inline-block;
360
- block-size: 64px;
361
- min-inline-size: calc(64px * var(--md-sys-list-item-thumbnail-aspect-ratio));
362
- border-radius: var(--md-sys-shape-corner-none, 0px);
421
+ max-block-size: var(--md-comp-list-item-leading-video-height, 56px);
422
+ inline-size: var(--md-comp-list-item-leading-video-width, 100px);
423
+ max-inline-size: var(--md-comp-list-item-leading-video-width, 100px);
424
+ min-inline-size: var(--md-comp-list-item-leading-video-width, 100px);
425
+ border-radius: var(--md-comp-list-item-leading-video-shape, var(--md-sys-shape-corner-small, 8px));
363
426
  background-position: center;
364
427
  background-repeat: no-repeat;
365
428
  background-size: cover;
366
429
  }
367
430
 
368
431
  .micl-list-item__text {
432
+ @include typography.body-large;
433
+
369
434
  display: flex;
370
435
  flex-direction: column;
371
436
  flex-basis: 100%;
372
437
  min-inline-size: 0;
373
438
  text-align: start;
439
+ color: var(--_headline-color);
374
440
 
441
+ .micl-list-item__overline {
442
+ @include typography.label-small;
443
+ color: var(--_overline-color);
444
+ }
375
445
  .micl-list-item__headline {
376
- @include typography.body-large;
377
-
378
- color: var(--md-sys-color-on-surface);
446
+ color: var(--_headline-color);
379
447
  }
380
- .micl-list-item__supporting-text {
448
+ &::after, .micl-list-item__supporting-text {
381
449
  @include typography.body-medium;
382
-
383
- color: var(--md-sys-color-on-surface-variant);
450
+ color: var(--_supporting-text-color);
384
451
  }
385
452
  }
386
453
 
387
454
  .micl-list-item__trailing-text {
388
455
  @include typography.label-small;
389
-
390
- color: var(--md-sys-color-on-surface-variant);
456
+ color: var(--_trailing-text-color);
391
457
  }
392
458
 
393
459
  [dir=rtl] .micl-list details[open] .micl-list-item__icon--expander {