material-inspired-component-library 7.0.2 → 8.0.1

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