material-inspired-component-library 6.0.7 → 7.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 (55) hide show
  1. package/README.md +11 -2
  2. package/components/accordion/README.md +4 -6
  3. package/components/appbar/index.scss +4 -4
  4. package/components/button/README.md +16 -1
  5. package/components/button/index.scss +6 -0
  6. package/components/button/index.ts +17 -0
  7. package/components/card/README.md +84 -11
  8. package/components/card/index.scss +178 -209
  9. package/components/checkbox/index.scss +4 -0
  10. package/components/datepicker/README.md +3 -2
  11. package/components/datepicker/index.ts +0 -8
  12. package/components/dialog/README.md +7 -7
  13. package/components/iconbutton/README.md +11 -0
  14. package/components/iconbutton/index.scss +12 -0
  15. package/components/iconbutton/index.ts +15 -0
  16. package/components/navigationrail/README.md +64 -59
  17. package/components/navigationrail/index.scss +197 -300
  18. package/components/navigationrail/index.ts +55 -38
  19. package/components/radio/index.scss +4 -0
  20. package/components/select/index.scss +14 -14
  21. package/components/snackbar/README.md +126 -0
  22. package/components/snackbar/index.scss +94 -73
  23. package/components/snackbar/index.ts +90 -28
  24. package/components/textfield/index.scss +6 -0
  25. package/components/timepicker/README.md +2 -1
  26. package/components/timepicker/index.ts +0 -3
  27. package/dist/appbar.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/navigationrail/index.d.ts +2 -1
  32. package/dist/components/snackbar/index.d.ts +1 -0
  33. package/dist/iconbutton.css +1 -1
  34. package/dist/micl.css +1 -1
  35. package/dist/micl.js +1 -1
  36. package/dist/navigationrail.css +1 -1
  37. package/dist/radio.css +1 -1
  38. package/dist/select.css +1 -1
  39. package/dist/snackbar.css +1 -1
  40. package/dist/textfield.css +1 -1
  41. package/docs/accordion.html +10 -10
  42. package/docs/button.html +43 -15
  43. package/docs/card.html +6 -5
  44. package/docs/datepicker.html +4 -4
  45. package/docs/dialog.html +17 -19
  46. package/docs/iconbutton.html +22 -8
  47. package/docs/index.html +31 -18
  48. package/docs/micl.css +1 -1
  49. package/docs/micl.js +1 -1
  50. package/docs/navigationrail.html +76 -22
  51. package/docs/snackbar.html +31 -14
  52. package/docs/timepicker.html +12 -3
  53. package/package.json +4 -4
  54. package/docs/snackbar1.html +0 -159
  55. package/docs/snackbar2.html +0 -159
@@ -27,415 +27,311 @@
27
27
  @use '../../styles/statelayer';
28
28
  @use '../../styles/typography';
29
29
 
30
- :root {
31
- --md-sys-navigationrail-collapsed-width: 96px;
32
- --md-sys-navigationrail-expanded-maxwidth: 360px;
33
- --md-sys-navigationrail-expanded-minwidth: 220px;
34
- }
35
-
36
30
  .micl-navigationrail {
37
- --md-sys-navigationrail-spring-buffer: 200px;
38
- --md-sys-navigationrail-header-space: 40px;
39
- --md-sys-navigationrail-top-space: 44px;
40
- --md-sys-navigationrail-item-space: 6px;
41
- --md-sys-navigationrail-item-height: 56px;
42
- --md-sys-divider-thickness: 0px;
43
- --md-sys-navigationrail-motion-spatial: #{motion.$md-sys-motion-expressive-slow-spatial};
44
- --md-sys-navigationrail-motion-duration: #{motion.$md-sys-motion-expressive-slow-spatial-duration};
45
- --md-sys-navigationrail-motion-duration-reverse: #{motion.$md-sys-motion-expressive-default-spatial-duration};
46
- --md-sys-navigationrail-morph-duration: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
47
- --md-sys-navigationrail-morph-duration-reverse: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
48
- --md-sys-badge-inline-offset: -16px;
49
- --md-sys-badge-block-offset: 4px;
31
+ --md-comp-nav-rail-spring-buffer: 100px;
32
+ --md-comp-nav-rail-divider-thickness: 0px;
33
+ --md-comp-nav-rail-motion-spatial: #{motion.$md-sys-motion-expressive-slow-spatial};
34
+ --md-comp-nav-rail-motion-duration: #{motion.$md-sys-motion-expressive-slow-spatial-duration};
35
+ --md-comp-nav-rail-motion-duration-reverse: #{motion.$md-sys-motion-expressive-default-spatial-duration};
36
+ --md-comp-nav-rail-morph-duration: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
37
+ --md-comp-nav-rail-morph-duration-reverse: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
38
+
39
+ --_current-max-width: var(--md-comp-nav-rail-collapsed-container-width, 96px);
40
+ --_current-min-width: var(--md-comp-nav-rail-collapsed-container-width, 96px);
41
+ --_item-direction: column;
42
+ --_item-width: var(--md-comp-nav-rail-item-short-container-height, 56px);
43
+
44
+ --_item-target-height: var(--_item-base-height);
45
+
46
+ --_content-gap: var(--md-comp-nav-rail-item-container-vertical-space, 6px);
47
+ --_morph-speed: var(--md-comp-nav-rail-morph-duration-reverse);
48
+ --_container-delay: calc(var(--_morph-speed) / 2);
49
+ --_item-delay: 0ms;
50
+ --_text-animation: none;
51
+ --_expanded-text-margin: calc(var(--md-comp-nav-rail-item-active-indicator-icon-label-space, 8px) - 16px);
50
52
 
51
53
  box-sizing: border-box;
52
54
  display: flex;
53
55
  flex-direction: column;
54
56
  align-items: flex-start;
55
- min-inline-size: var(--md-sys-navigationrail-collapsed-width);
56
- max-inline-size: var(--md-sys-navigationrail-collapsed-width);
57
57
  block-size: 100vh;
58
58
  min-block-size: 100%;
59
59
  margin-block: 0;
60
60
  margin-inline: calc(-1 * var(--md-sys-layout-window-margin, 0px)) auto;
61
- padding-block: var(--md-sys-navigationrail-top-space) 0;
61
+ padding-block: var(--md-comp-nav-rail-collapsed-top-space, 44px) 0;
62
62
  padding-inline: 0;
63
- background-color: var(--md-sys-color-surface);
63
+ background-color: var(--md-comp-nav-rail-collapsed-container-color, var(--md-sys-color-surface));
64
64
  border: none;
65
- box-shadow: var(--md-sys-elevation-level0);
65
+ border-radius: var(--md-comp-nav-rail-collapsed-container-shape, 0px);
66
+ box-shadow: var(--md-comp-nav-rail-collapsed-container-elevation, var(--md-sys-elevation-level0));
66
67
  opacity: 100%;
67
68
  overflow: hidden;
68
69
  z-index: 9;
69
70
  interpolate-size: allow-keywords;
70
71
 
72
+ transition:
73
+ min-inline-size var(--_morph-speed) var(--_container-delay) linear,
74
+ max-inline-size var(--_morph-speed) var(--_container-delay) linear,
75
+ padding-block-start var(--_morph-speed) var(--_container-delay) linear;
76
+ min-inline-size: var(--_current-min-width);
77
+ max-inline-size: var(--_current-max-width);
78
+
71
79
  &> .micl-navigationrail__headline {
72
- padding-inline-start: 24px;
80
+ padding-inline-start: 28px;
73
81
  }
82
+
74
83
  &> .micl-navigationrail__content {
75
84
  box-sizing: border-box;
76
85
  display: flex;
77
86
  flex-direction: column;
78
87
  flex: 1 1 auto;
79
88
  align-items: flex-start;
80
- row-gap: var(--md-sys-navigationrail-item-space);
81
89
  inline-size: 100%;
82
- padding-block: var(--md-sys-navigationrail-header-space) 16px;
90
+ row-gap: var(--_content-gap);
91
+ padding-block: var(--md-comp-nav-rail-item-header-space-minimum, 40px) 16px;
83
92
  padding-inline: 20px 0;
93
+
84
94
  overflow: hidden auto;
85
- transition: row-gap var(--md-sys-navigationrail-morph-duration-reverse) linear;
95
+ transition: row-gap var(--_morph-speed) linear;
86
96
 
87
- &> input[type=radio] {
88
- appearance: none;
89
- display: none;
90
- margin: 0;
97
+ &> a.micl-navigationrail__item:focus-visible {
98
+ --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity, 10%);
91
99
  }
92
- &> label.micl-navigationrail__item {
100
+
101
+ &> a.micl-navigationrail__item {
93
102
  --micl-ripple: 1;
94
103
  --statelayer-color: var(--md-sys-color-on-secondary-container);
104
+ --_item-base-height: var(--md-comp-nav-rail-item-short-container-height, 56px);
105
+ --_item-margin-bottom: 0px;
106
+ --_item-padding-block: 12px;
95
107
 
96
108
  box-sizing: border-box;
97
109
  display: flex;
98
110
  position: relative;
99
- flex-direction: column;
100
111
  align-items: center;
101
- block-size: var(--md-sys-navigationrail-item-height);
102
- inline-size: var(--md-sys-navigationrail-item-height);
103
- row-gap: 4px;
104
- padding-block: 12px;
105
- border-radius: calc(var(--md-sys-navigationrail-item-height) / 2);
112
+ row-gap: var(--md-comp-nav-rail-collapsed-item-vertical-space, 4px);
106
113
  outline: none;
114
+ text-decoration: none;
115
+ cursor: pointer;
116
+
117
+ overflow: visible;
107
118
  background-color: transparent;
108
119
  background-image:
109
120
  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%),
110
121
  linear-gradient(rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)));
111
122
  background-repeat: no-repeat;
112
123
  background-size: 10000%, 100%;
113
- cursor: pointer;
114
- transition:
115
- inline-size calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear,
116
- background-color calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear,
117
- background-size 3000ms,
118
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
119
124
 
120
- &:has(a) {
121
- padding-block: 0;
125
+ &:has(.micl-navigationrail__text) {
126
+ --_item-base-height: var(--md-comp-nav-rail-item-vertical-active-indicator-height, 32px);
127
+ --_item-margin-bottom: 40px;
128
+ --_item-padding-block: 0px;
122
129
  }
123
- a {
124
- display: inherit;
125
- align-items: inherit;
126
- padding-block: 12px;
127
- text-decoration: none;
128
- z-index: 0;
130
+ &:not(:has(.micl-navigationrail__icon)) {
131
+ --_item-base-height: var(--md-comp-nav-rail-item-short-container-height, 56px);
132
+ --_item-margin-bottom: 0px;
133
+ --_item-padding-block: 0px;
134
+
135
+ justify-content: center;
136
+
137
+ .micl-navigationrail__text {
138
+ inline-size: fit-content;
139
+ max-inline-size: 100%;
140
+ margin: 0;
141
+ padding-inline: 8px;
142
+
143
+ text-align: start;
144
+ white-space: nowrap;
145
+ text-overflow: ellipsis;
146
+ animation: none !important;
147
+
148
+ transition:
149
+ padding-inline calc(var(--_morph-speed) / 2) var(--_item-delay) linear,
150
+ margin-inline calc(var(--_morph-speed) / 2) var(--_item-delay) linear;
151
+ }
129
152
  }
130
- .micl-navigationrail__icon {
131
- --micl-ripple: 1;
132
153
 
133
- font-size: var(--md-sys-icon-size, 24px);
134
- inline-size: var(--md-sys-icon-size, 24px);
154
+ inline-size: var(--_item-width);
155
+ block-size: var(--_item-target-height, var(--_item-base-height));
156
+ margin-block-end: var(--_item-target-margin, var(--_item-margin-bottom));
157
+ padding-block: var(--_item-target-padding, var(--_item-padding-block));
158
+ flex-direction: var(--_item-direction);
159
+
160
+ border-radius: calc(var(--_item-target-height, var(--_item-base-height)) / 2);
161
+
162
+ transition:
163
+ inline-size calc(var(--_morph-speed) / 2) var(--_item-delay) linear,
164
+ block-size calc(var(--_morph-speed) / 2) var(--_item-delay) linear,
165
+ margin-block-end calc(var(--_morph-speed) / 2) var(--_item-delay) linear,
166
+ padding-block calc(var(--_morph-speed) / 2) var(--_item-delay) linear,
167
+ border-radius calc(var(--_morph-speed) / 2) var(--_item-delay) linear,
168
+ flex-direction 0s calc(var(--_morph-speed) / 2) linear allow-discrete,
169
+ background-color calc(var(--_morph-speed) / 2) linear,
170
+ background-size 3000ms linear,
171
+ --statelayer-opacity var(--md-comp-nav-rail-motion-duration) linear;
172
+
173
+ .micl-navigationrail__icon {
174
+ font-size: var(--md-comp-nav-rail-item-icon-size, var(--md-sys-icon-size));
175
+ inline-size: var(--md-comp-nav-rail-item-icon-size, var(--md-sys-icon-size));
135
176
  margin: 0;
136
177
  padding-block: 4px;
137
178
  padding-inline: 16px;
138
- border-radius: 16px;
139
179
  color: var(--md-sys-color-on-surface-variant);
140
- background-color: transparent;
141
- background-image:
142
- 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%),
143
- linear-gradient(rgb(from var(--statelayer-color) r g b / var(--statelayer-opacity)));
144
- background-repeat: no-repeat;
145
- background-size: 10000%, 100%;
146
180
  font-variation-settings: 'FILL' 0;
147
- transition:
148
- background-size 3000ms,
149
- background-color var(--md-sys-navigationrail-morph-duration-reverse) linear,
150
- font-variation-settings var(--md-sys-navigationrail-morph-duration-reverse) linear,
151
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
152
181
  }
153
182
  .micl-navigationrail__text {
154
183
  @include typography.label-medium;
155
-
156
184
  min-block-size: var(--md-sys-typescale-label-medium-line-height);
157
- margin-block-start: 0;
158
- margin-inline-start: 0px;
159
- padding-inline-end: 0px;
185
+ margin: 4px 0px 0px 0px;
160
186
  color: var(--md-sys-color-on-surface-variant);
161
- opacity: 100%;
162
187
  overflow: hidden;
188
+ animation: var(--_text-animation);
163
189
  }
164
- }
165
- &> input[type=radio]:checked + label.micl-navigationrail__item {
166
- .micl-navigationrail__icon {
167
- background-color: var(--md-sys-color-secondary-container);
168
- color: var(--md-sys-color-on-secondary-container);
169
- font-variation-settings: 'FILL' 1;
170
- transition:
171
- background-size 3000ms,
172
- background-color var(--md-sys-navigationrail-morph-duration) linear,
173
- font-variation-settings var(--md-sys-navigationrail-morph-duration) linear,
174
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
175
- }
176
- .micl-navigationrail__text {
177
- color: var(--md-sys-color-on-secondary-container);
178
- }
179
- }
180
- }
181
- }
182
- dialog.micl-navigationrail,
183
- nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle.micl-button--selected) {
184
- max-inline-size: var(--md-sys-navigationrail-expanded-maxwidth);
185
- min-inline-size: var(--md-sys-navigationrail-expanded-minwidth);
186
190
 
187
- &> .micl-navigationrail__content {
188
- row-gap: 0px;
189
-
190
- &> label.micl-navigationrail__item {
191
- flex-direction: row;
192
- inline-size: fit-content;
193
-
194
- &::before {
195
- content: "";
196
- position: absolute;
197
- inset: 0px;
198
- inset-inline-end: calc(-1 * (var(--md-sys-navigationrail-expanded-maxwidth) - 20px - 100%));
199
- background-color: transparent;
200
- }
201
191
  &:hover {
202
192
  --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity, 8%);
203
193
  }
204
- &:focus-visible {
205
- --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity, 10%);
206
- }
207
194
  &:active {
208
- background-size: 0%, 100%;
209
- transition: background-size 0ms;
210
195
  --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity, 10%);
211
- }
212
- .micl-navigationrail__text {
213
- @include typography.label-large;
214
-
215
- margin-inline-start: -8px;
216
- padding-inline-end: 16px;
196
+ background-size: 0%, 100%;
197
+ transition-duration: 0ms, 0ms, 0ms, calc(var(--_morph-speed) / 2), 0ms, var(--md-comp-nav-rail-motion-duration);
217
198
  }
218
199
  }
219
- &> input[type=radio]:checked + label.micl-navigationrail__item {
200
+
201
+ &> a.micl-navigationrail__item[aria-current="page"] {
220
202
  background-color: var(--md-sys-color-secondary-container);
221
203
 
222
204
  .micl-navigationrail__icon {
223
- background-color: transparent;
205
+ color: var(--md-sys-color-on-secondary-container);
206
+ font-variation-settings: 'FILL' 1;
224
207
  }
225
- }
226
- }
227
- }
228
- nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle.micl-button--selected) {
229
- &> .micl-navigationrail__content {
230
- transition: row-gap var(--md-sys-navigationrail-morph-duration) linear;
231
-
232
- &> label.micl-navigationrail__item {
233
- transition:
234
- inline-size calc(var(--md-sys-navigationrail-morph-duration) / 2) calc(var(--md-sys-navigationrail-morph-duration) / 2) linear,
235
- background-color calc(var(--md-sys-navigationrail-morph-duration) / 2) calc(var(--md-sys-navigationrail-morph-duration) / 2) linear,
236
- background-size 3000ms,
237
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
238
- }
239
- &> input[type=radio]:checked + label.micl-navigationrail__item {
240
- .micl-navigationrail__icon {
241
- transition:
242
- background-size 3000ms,
243
- background-color calc(var(--md-sys-navigationrail-morph-duration) / 2) linear,
244
- font-variation-settings calc(var(--md-sys-navigationrail-morph-duration) / 2) linear,
245
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
208
+ .micl-navigationrail__text {
209
+ color: var(--md-sys-color-secondary);
246
210
  }
247
211
  }
248
212
  }
249
- }
250
- nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle.micl-button--toggled.micl-button--selected) {
251
- animation: var(--md-sys-navigationrail-morph-duration) linear forwards navigationrail-to-expanded;
252
213
 
253
- &> .micl-navigationrail__content > label.micl-navigationrail__item {
254
- animation: calc(var(--md-sys-navigationrail-morph-duration) / 2) linear forwards navigationrail-item-to-expanded;
214
+ &[open] {
215
+ border-start-end-radius: var(--md-comp-nav-rail-expanded-modal-container-shape, var(--md-sys-shape-corner-large));
216
+ border-end-end-radius: var(--md-comp-nav-rail-expanded-modal-container-shape, var(--md-sys-shape-corner-large));
217
+ box-shadow: var(--md-comp-nav-rail-expanded-modal-container-elevation, var(--md-sys-elevation-level2));
218
+ background-color: var(--md-comp-nav-rail-expanded-modal-container-color, var(--md-sys-color-surface-container));
219
+ transition:
220
+ opacity var(--md-comp-nav-rail-motion-duration) linear,
221
+ margin-inline-start var(--md-comp-nav-rail-motion-duration) var(--md-comp-nav-rail-motion-spatial),
222
+ overlay var(--md-comp-nav-rail-motion-duration) linear allow-discrete,
223
+ display var(--md-comp-nav-rail-motion-duration) linear allow-discrete;
255
224
 
256
- .micl-navigationrail__text {
257
- animation: var(--md-sys-navigationrail-morph-duration) linear forwards navigationrail-text-to-expanded;
225
+ &::backdrop {
226
+ background-color: rgba(0, 0, 0, var(--md-sys-state-backdrop-opacity, 32%));
227
+ @starting-style { background-color: rgba(0, 0, 0, 0); }
258
228
  }
259
229
  }
260
- }
261
- nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle.micl-button--toggled:not(.micl-button--selected)) {
262
- animation: var(--md-sys-navigationrail-morph-duration-reverse) linear forwards navigationrail-to-collapsed;
263
230
 
264
- &> .micl-navigationrail__content {
265
- &> label.micl-navigationrail__item {
266
- animation: calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear forwards navigationrail-item-to-collapsed;
267
-
268
- .micl-navigationrail__text {
269
- animation: var(--md-sys-navigationrail-morph-duration-reverse) linear forwards navigationrail-text-to-collapsed;
270
- }
271
- }
272
- &> input[type=radio]:checked + label.micl-navigationrail__item {
273
- .micl-navigationrail__icon {
274
- transition:
275
- background-size 3000ms,
276
- background-color calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear,
277
- font-variation-settings calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear,
278
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
279
- }
280
- }
231
+ &::backdrop {
232
+ background-color: rgba(0, 0, 0, 0);
233
+ transition:
234
+ background-color var(--md-comp-nav-rail-motion-duration) linear,
235
+ overlay var(--md-comp-nav-rail-motion-duration) linear allow-discrete,
236
+ display var(--md-comp-nav-rail-motion-duration) linear allow-discrete;
281
237
  }
282
238
  }
283
- nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle:not(.micl-button--selected)) {
284
- &> .micl-navigationrail__content > label.micl-navigationrail__item {
285
- &:hover {
286
- .micl-navigationrail__icon {
287
- --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity, 8%);
288
- }
239
+
240
+ dialog.micl-navigationrail,
241
+ nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle.micl-button--selected) {
242
+ --_current-max-width: var(--md-comp-nav-rail-expanded-container-width-maximum, 360px);
243
+ --_current-min-width: var(--md-comp-nav-rail-expanded-container-width-minimum, 220px);
244
+ --_item-direction: row;
245
+ --_item-width: fit-content;
246
+
247
+ --_item-target-height: var(--md-comp-nav-rail-item-short-container-height, 56px);
248
+ --_item-target-margin: 0px;
249
+ --_item-target-padding: 16px;
250
+
251
+ --_content-gap: 0px;
252
+ --_morph-speed: var(--md-comp-nav-rail-morph-duration);
253
+ --_container-delay: 0ms;
254
+ --_item-delay: calc(var(--_morph-speed) / 2);
255
+ --_text-animation: var(--_morph-speed) linear forwards navigationrail-text-to-expanded;
256
+
257
+ padding-block: var(--md-comp-nav-rail-expanded-top-space, 44px) 0;
258
+ border-radius: var(--md-comp-nav-rail-expanded-container-shape, 0px);
259
+ box-shadow: var(--md-comp-nav-rail-expanded-container-elevation, var(--md-sys-elevation-level0));
260
+ background-color: var(--md-comp-nav-rail-expanded-container-color, var(--md-sys-color-surface));
261
+
262
+ & > .micl-navigationrail__content > a.micl-navigationrail__item {
263
+ &::before {
264
+ content: "";
265
+ position: absolute;
266
+ inset: 0px;
267
+ inset-inline-end: calc(-1 * (var(--md-comp-nav-rail-expanded-container-width-maximum, 360px) - 16px - 100%));
268
+ background-color: transparent;
289
269
  }
290
- &:focus-visible {
291
- .micl-navigationrail__icon {
292
- --statelayer-opacity: var(--md-sys-state-focus-state-layer-opacity, 10%);
293
- }
270
+ .micl-navigationrail__text {
271
+ @include typography.label-large;
272
+ margin-inline-start: var(--_expanded-text-margin);
273
+ padding-inline-end: 16px;
294
274
  }
295
- &:active {
296
- .micl-navigationrail__icon {
297
- --statelayer-opacity: var(--md-sys-state-pressed-state-layer-opacity, 10%);
298
275
 
299
- background-size: 0%, 100%;
300
- transition:
301
- background-size 0ms,
302
- background-color calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear,
303
- font-variation-settings calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) calc(var(--md-sys-navigationrail-morph-duration-reverse) / 2) linear,
304
- --statelayer-opacity var(--md-sys-navigationrail-motion-duration) linear;
305
- }
276
+ &:not(:has(.micl-navigationrail__icon)) .micl-navigationrail__text {
277
+ margin-inline-start: 0px;
278
+ padding-inline-start: 16px;
306
279
  }
307
280
  }
308
281
  }
309
282
 
283
+ nav.micl-navigationrail:has(> .micl-navigationrail__headline .micl-button--toggle.micl-button--toggled:not(.micl-button--selected)) {
284
+ --_morph-speed: var(--md-comp-nav-rail-morph-duration-reverse);
285
+ --_text-animation: var(--_morph-speed) linear forwards navigationrail-text-to-collapsed;
286
+ }
287
+
288
+ nav.micl-navigationrail {
289
+ position: sticky;
290
+ float: inline-start;
291
+ inset: unset;
292
+ inset-block-start: 0;
293
+ inset-inline-start: 0;
294
+ border-inline-end: var(--md-comp-nav-rail-divider-thickness, 0px) solid var(--md-comp-nav-rail-divider-color, var(--md-sys-divider-color));
295
+ }
296
+
310
297
  dialog.micl-navigationrail {
311
298
  display: none;
312
- min-inline-size: calc(var(--md-sys-navigationrail-expanded-minwidth) + var(--md-sys-navigationrail-spring-buffer));
313
- max-inline-size: calc(var(--md-sys-navigationrail-expanded-maxwidth) + var(--md-sys-navigationrail-spring-buffer));
314
- margin-inline-start: calc(-1 * (var(--md-sys-navigationrail-expanded-maxwidth) + var(--md-sys-navigationrail-spring-buffer)));
315
- padding-inline: var(--md-sys-navigationrail-spring-buffer) 0;
299
+ min-inline-size: calc(var(--md-comp-nav-rail-expanded-container-width-minimum, 220px) + var(--md-comp-nav-rail-spring-buffer));
300
+ max-inline-size: calc(var(--md-comp-nav-rail-expanded-container-width-maximum, 360px) + var(--md-comp-nav-rail-spring-buffer));
301
+ margin-inline-start: calc(-1 * (var(--md-comp-nav-rail-expanded-container-width-maximum, 360px) + var(--md-comp-nav-rail-spring-buffer)));
302
+ padding-inline: var(--md-comp-nav-rail-spring-buffer) 0;
316
303
  opacity: 0%;
304
+
317
305
  transition:
318
- opacity var(--md-sys-navigationrail-motion-duration-reverse) linear,
319
- margin-inline-start var(--md-sys-navigationrail-motion-duration-reverse) var(--md-sys-navigationrail-motion-spatial),
320
- overlay var(--md-sys-navigationrail-motion-duration-reverse) linear allow-discrete,
321
- display var(--md-sys-navigationrail-motion-duration-reverse) linear allow-discrete;
306
+ opacity var(--md-comp-nav-rail-motion-duration-reverse) linear,
307
+ margin-inline-start var(--md-comp-nav-rail-motion-duration-reverse) var(--md-comp-nav-rail-motion-spatial),
308
+ overlay var(--md-comp-nav-rail-motion-duration-reverse) linear allow-discrete,
309
+ display var(--md-comp-nav-rail-motion-duration-reverse) linear allow-discrete;
322
310
 
323
311
  &[open] {
324
312
  display: flex;
325
- margin-inline-start: calc(-1 * var(--md-sys-navigationrail-spring-buffer));
313
+ margin-inline-start: calc(-1 * var(--md-comp-nav-rail-spring-buffer));
326
314
  opacity: 100%;
327
315
 
328
316
  @starting-style {
329
- margin-inline-start: calc(-1 * (var(--md-sys-navigationrail-expanded-maxwidth) + var(--md-sys-navigationrail-spring-buffer)));
317
+ margin-inline-start: calc(-1 * (var(--md-comp-nav-rail-expanded-container-width-maximum, 360px) + var(--md-comp-nav-rail-spring-buffer)));
330
318
  opacity: 0%;
331
319
  }
332
320
  }
333
321
  }
334
- nav.micl-navigationrail {
335
- position: sticky;
336
- float: inline-start;
337
- inset: unset;
338
- inset-block-start: 0;
339
- inset-inline-start: 0;
340
- border-inline-end: var(--md-sys-divider-thickness) solid var(--md-sys-divider-color);
341
- }
342
- nav.micl-navigationrail[popover] {
343
- position: fixed;
344
- margin-inline-start: 0;
345
- }
346
- .micl-navigationrail {
347
- &[open],
348
- &:popover-open {
349
- border-start-end-radius: var(--md-sys-shape-corner-large);
350
- border-end-end-radius: var(--md-sys-shape-corner-large);
351
- box-shadow: var(--md-sys-elevation-level2);
352
- background-color: var(--md-sys-color-surface-container);
353
- transition:
354
- opacity var(--md-sys-navigationrail-motion-duration) linear,
355
- margin-inline-start var(--md-sys-navigationrail-motion-duration) var(--md-sys-navigationrail-motion-spatial),
356
- overlay var(--md-sys-navigationrail-motion-duration) linear allow-discrete,
357
- display var(--md-sys-navigationrail-motion-duration) linear allow-discrete;
358
-
359
- &::backdrop {
360
- background-color: rgba(0, 0, 0, var(--md-sys-state-backdrop-opacity, 32%));
361
-
362
- @starting-style {
363
- background-color: rgba(0, 0, 0, 0);
364
- }
365
- }
366
- }
367
- &::backdrop {
368
- background-color: rgba(0, 0, 0, 0);
369
- transition:
370
- background-color var(--md-sys-navigationrail-motion-duration) linear,
371
- overlay var(--md-sys-navigationrail-motion-duration) linear allow-discrete,
372
- display var(--md-sys-navigationrail-motion-duration) linear allow-discrete;
373
- }
374
- }
375
- .micl-window:has(nav.micl-navigationrail[popover]) {
376
- padding-inline-start: var(--md-sys-navigationrail-collapsed-width);
377
- }
378
- .micl-window.micl-window--explicit-containment nav.micl-navigationrail {
379
- block-size: fit-content;
380
- min-block-size: fit-content;
381
- padding-block: 16px;
382
- border-radius: calc(var(--md-sys-navigationrail-collapsed-width) / 2);
383
- }
384
322
 
385
- @keyframes navigationrail-to-expanded {
386
- from {
387
- max-inline-size: var(--md-sys-navigationrail-collapsed-width);
388
- min-inline-size: var(--md-sys-navigationrail-collapsed-width);
389
- }
390
- to {
391
- max-inline-size: var(--md-sys-navigationrail-expanded-maxwidth);
392
- min-inline-size: var(--md-sys-navigationrail-expanded-minwidth);
393
- }
394
- }
395
- @keyframes navigationrail-to-collapsed {
396
- from {
397
- max-inline-size: var(--md-sys-navigationrail-expanded-maxwidth);
398
- min-inline-size: var(--md-sys-navigationrail-expanded-minwidth);
399
- }
400
- to {
401
- max-inline-size: var(--md-sys-navigationrail-collapsed-width);
402
- min-inline-size: var(--md-sys-navigationrail-collapsed-width);
403
- }
404
- }
405
- @keyframes navigationrail-item-to-expanded {
406
- 0% {
407
- flex-direction: column;
408
- }
409
- 99% {
410
- flex-direction: column;
411
- }
412
- 100% {
413
- flex-direction: row;
414
- }
415
- }
416
- @keyframes navigationrail-item-to-collapsed {
417
- 0% {
418
- flex-direction: row;
419
- }
420
- 99% {
421
- flex-direction: row;
422
- }
423
- 100% {
424
- flex-direction: column;
425
- }
426
- }
427
323
  @keyframes navigationrail-text-to-collapsed {
428
324
  0% {
429
325
  @include typography.label-large;
430
326
  margin-block-start: 0;
431
- margin-inline-start: -8px;
327
+ margin-inline-start: var(--_expanded-text-margin);
432
328
  padding-inline-end: 16px;
433
329
  opacity: 100%
434
330
  }
435
331
  49.9% {
436
332
  @include typography.label-large;
437
333
  margin-block-start: 0;
438
- margin-inline-start: -8px;
334
+ margin-inline-start: var(--_expanded-text-margin);
439
335
  padding-inline-end: 16px;
440
336
  opacity: 0%;
441
337
  }
@@ -450,17 +346,18 @@ nav.micl-navigationrail[popover] {
450
346
  100% {
451
347
  @include typography.label-medium;
452
348
  min-block-size: var(--md-sys-typescale-label-medium-line-height);
453
- margin-block-start: 0;
349
+ margin-block-start: 4px;
454
350
  margin-inline-start: 0px;
455
351
  padding-inline-end: 0px;
456
352
  opacity: 100%;
457
353
  }
458
354
  }
355
+
459
356
  @keyframes navigationrail-text-to-expanded {
460
357
  0% {
461
358
  @include typography.label-medium;
462
359
  min-block-size: var(--md-sys-typescale-label-medium-line-height);
463
- margin-block-start: 0;
360
+ margin-block-start: 4px;
464
361
  margin-inline-start: 0px;
465
362
  padding-inline-end: 0px;
466
363
  opacity: 100%;
@@ -476,15 +373,15 @@ nav.micl-navigationrail[popover] {
476
373
  50.1% {
477
374
  @include typography.label-large;
478
375
  margin-block-start: 0px;
479
- margin-inline-start: -8px;
376
+ margin-inline-start: var(--_expanded-text-margin);
480
377
  padding-inline-end: 16px;
481
378
  opacity: 0%;
482
379
  }
483
380
  100% {
484
381
  @include typography.label-large;
485
382
  margin-block-start: 0px;
486
- margin-inline-start: -8px;
383
+ margin-inline-start: var(--_expanded-text-margin);
487
384
  padding-inline-end: 16px;
488
385
  opacity: 100%;
489
386
  }
490
- }
387
+ }