morya-ui 0.4.3 → 0.4.4

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 (173) hide show
  1. package/CHANGELOG.md +780 -769
  2. package/LICENSE +21 -21
  3. package/README.md +156 -150
  4. package/README.zh-CN.md +156 -150
  5. package/dist/accordion/style.css +1205 -1205
  6. package/dist/affix/style.css +1205 -1205
  7. package/dist/alert/style.css +1205 -1205
  8. package/dist/anchor/style.css +1205 -1205
  9. package/dist/auto-complete/style.css +1749 -1749
  10. package/dist/avatar/style.css +1318 -1318
  11. package/dist/badge/style.css +1371 -1371
  12. package/dist/block-ui/style.css +1205 -1205
  13. package/dist/breadcrumb/style.css +1205 -1205
  14. package/dist/button/style.css +1909 -1909
  15. package/dist/calendar/style.css +1880 -1880
  16. package/dist/card/style.css +1205 -1205
  17. package/dist/carousel/style.css +2208 -2208
  18. package/dist/cascade-select/style.css +1909 -1909
  19. package/dist/checkbox/style.css +1205 -1205
  20. package/dist/chip/style.css +1349 -1349
  21. package/dist/command-menu/style.css +1438 -1438
  22. package/dist/components/AutoComplete/styles.css +209 -209
  23. package/dist/components/Avatar/styles.css +113 -113
  24. package/dist/components/Badge/styles.css +164 -164
  25. package/dist/components/Button/styles.css +698 -698
  26. package/dist/components/Carousel/styles.css +302 -302
  27. package/dist/components/CascadeSelect/styles.css +168 -168
  28. package/dist/components/Chip/styles.css +144 -144
  29. package/dist/components/CommandMenu/styles.css +102 -102
  30. package/dist/components/ConfigProvider/styles.css +6 -6
  31. package/dist/components/ConfirmDialog/styles.css +24 -24
  32. package/dist/components/ConfirmPopup/styles.css +35 -35
  33. package/dist/components/ContextMenu/styles.css +138 -138
  34. package/dist/components/DatePicker/styles.css +453 -453
  35. package/dist/components/Dialog/styles.css +420 -420
  36. package/dist/components/Dock/styles.css +84 -84
  37. package/dist/components/Drawer/styles.css +346 -346
  38. package/dist/components/Dropdown/styles.css +135 -135
  39. package/dist/components/Empty/styles.css +146 -146
  40. package/dist/components/FileUpload/styles.css +359 -359
  41. package/dist/components/Form/Form.vue.d.ts.map +1 -1
  42. package/dist/components/Form/styles.css +125 -125
  43. package/dist/components/Gallery/styles.css +100 -100
  44. package/dist/components/Input/styles.css +392 -392
  45. package/dist/components/InputColor/styles.css +139 -139
  46. package/dist/components/InputNumber/styles.css +262 -262
  47. package/dist/components/InputPassword/styles.css +189 -189
  48. package/dist/components/InputTags/styles.css +121 -121
  49. package/dist/components/Layout/styles.css +433 -433
  50. package/dist/components/List/styles.css +229 -229
  51. package/dist/components/Listbox/styles.css +130 -130
  52. package/dist/components/Loading/styles.css +378 -378
  53. package/dist/components/MegaMenu/styles.css +97 -97
  54. package/dist/components/Menu/styles.css +565 -565
  55. package/dist/components/Menubar/styles.css +144 -144
  56. package/dist/components/Message/styles.css +248 -248
  57. package/dist/components/MeterGroup/styles.css +49 -49
  58. package/dist/components/Page/styles.css +430 -430
  59. package/dist/components/Pagination/styles.css +124 -124
  60. package/dist/components/Popover/styles.css +92 -92
  61. package/dist/components/Result/styles.css +146 -146
  62. package/dist/components/Scrollbar/styles.css +131 -131
  63. package/dist/components/Select/styles.css +222 -222
  64. package/dist/components/SelectButton/styles.css +107 -107
  65. package/dist/components/Sidebar/styles.css +74 -74
  66. package/dist/components/Slider/styles.css +211 -211
  67. package/dist/components/SplitButton/styles.css +216 -216
  68. package/dist/components/Status/styles.css +190 -190
  69. package/dist/components/Stepper/styles.css +152 -152
  70. package/dist/components/Switch/styles.css +129 -129
  71. package/dist/components/Tabs/styles.css +165 -165
  72. package/dist/components/Terminal/styles.css +75 -75
  73. package/dist/components/Textarea/styles.css +146 -146
  74. package/dist/components/TieredMenu/styles.css +125 -125
  75. package/dist/components/Timeline/styles.css +157 -157
  76. package/dist/components/TreeSelect/styles.css +172 -172
  77. package/dist/components/VirtualScroller/styles.css +27 -27
  78. package/dist/config-provider/style.css +2301 -2301
  79. package/dist/confirm-dialog/style.css +2347 -2347
  80. package/dist/confirm-popup/style.css +1938 -1938
  81. package/dist/context-menu/style.css +1474 -1474
  82. package/dist/data-view/style.css +1707 -1707
  83. package/dist/date-picker/style.css +1658 -1658
  84. package/dist/descriptions/style.css +1205 -1205
  85. package/dist/dialog/style.css +2323 -2323
  86. package/dist/divider/style.css +1205 -1205
  87. package/dist/dock/style.css +1289 -1289
  88. package/dist/drawer/style.css +1551 -1551
  89. package/dist/dropdown/style.css +1471 -1471
  90. package/dist/empty/style.css +1351 -1351
  91. package/dist/fieldset/style.css +1205 -1205
  92. package/dist/file-upload/style.css +1564 -1564
  93. package/dist/flex/style.css +1205 -1205
  94. package/dist/float-label/style.css +1205 -1205
  95. package/dist/fluid/style.css +1205 -1205
  96. package/dist/form/style.css +1332 -1332
  97. package/dist/gallery/style.css +1436 -1436
  98. package/dist/grid/style.css +1205 -1205
  99. package/dist/icon/style.css +1205 -1205
  100. package/dist/icon-field/style.css +1597 -1597
  101. package/dist/image/style.css +1205 -1205
  102. package/dist/inplace/style.css +1205 -1205
  103. package/dist/input/style.css +1722 -1722
  104. package/dist/input-color/style.css +1346 -1346
  105. package/dist/input-group/style.css +1205 -1205
  106. package/dist/input-number/style.css +1467 -1467
  107. package/dist/input-otp/style.css +1205 -1205
  108. package/dist/input-password/style.css +1519 -1519
  109. package/dist/input-tags/style.css +1326 -1326
  110. package/dist/knob/style.css +1205 -1205
  111. package/dist/label/style.css +1205 -1205
  112. package/dist/layout/style.css +1769 -1769
  113. package/dist/list/style.css +2087 -2087
  114. package/dist/listbox/style.css +1497 -1497
  115. package/dist/loading/style.css +1585 -1585
  116. package/dist/mega-menu/style.css +1302 -1302
  117. package/dist/mentions/style.css +1330 -1330
  118. package/dist/menu/style.css +2059 -2059
  119. package/dist/menubar/style.css +1480 -1480
  120. package/dist/message/style.css +1453 -1453
  121. package/dist/meter-group/style.css +1256 -1256
  122. package/dist/order-list/style.css +1205 -1205
  123. package/dist/page/style.css +2597 -2597
  124. package/dist/pagination/style.css +1551 -1551
  125. package/dist/panel/style.css +1205 -1205
  126. package/dist/pick-list/style.css +1205 -1205
  127. package/dist/popover/style.css +1299 -1299
  128. package/dist/progress-bar/style.css +1205 -1205
  129. package/dist/progress-spinner/style.css +1205 -1205
  130. package/dist/qr-code/style.css +1903 -1903
  131. package/dist/radio/style.css +1205 -1205
  132. package/dist/rating/style.css +1205 -1205
  133. package/dist/result/style.css +1351 -1351
  134. package/dist/scroll-top/style.css +1336 -1336
  135. package/dist/scrollbar/style.css +1338 -1338
  136. package/dist/segmented/style.css +1205 -1205
  137. package/dist/select/style.css +2115 -2115
  138. package/dist/select-button/style.css +1314 -1314
  139. package/dist/shared/styles/control-affix-icon.css +110 -110
  140. package/dist/shared/styles/control-suffix.css +118 -118
  141. package/dist/shared/styles/select-overlay.css +177 -177
  142. package/dist/sidebar/style.css +1279 -1279
  143. package/dist/skeleton/style.css +1205 -1205
  144. package/dist/slider/style.css +1418 -1418
  145. package/dist/space/style.css +1205 -1205
  146. package/dist/speed-dial/style.css +1205 -1205
  147. package/dist/split-button/style.css +2119 -2119
  148. package/dist/splitter/style.css +1205 -1205
  149. package/dist/statistic/style.css +1205 -1205
  150. package/dist/status/style.css +1395 -1395
  151. package/dist/stepper/style.css +1357 -1357
  152. package/dist/styles/base.css +804 -804
  153. package/dist/switch/style.css +1336 -1336
  154. package/dist/table/style.css +1840 -1840
  155. package/dist/tabs/style.css +1501 -1501
  156. package/dist/tag/style.css +1205 -1205
  157. package/dist/terminal/style.css +1282 -1282
  158. package/dist/textarea/style.css +1476 -1476
  159. package/dist/theme/styles.css +401 -401
  160. package/dist/tiered-menu/style.css +1461 -1461
  161. package/dist/time-picker/style.css +1660 -1660
  162. package/dist/timeline/style.css +1493 -1493
  163. package/dist/toast/style.css +1903 -1903
  164. package/dist/toggle-button/style.css +1205 -1205
  165. package/dist/toolbar/style.css +1205 -1205
  166. package/dist/tooltip/style.css +1205 -1205
  167. package/dist/tour/style.css +1903 -1903
  168. package/dist/tree/style.css +1205 -1205
  169. package/dist/tree-select/style.css +1913 -1913
  170. package/dist/typography/style.css +1351 -1351
  171. package/dist/virtual-scroller/style.css +1366 -1366
  172. package/dist/watermark/style.css +1205 -1205
  173. package/package.json +2 -1
@@ -1,433 +1,433 @@
1
- /* —— Layout: Layout —— */
2
- .m-layout {
3
- --m-layout-height: 100%;
4
- height: var(--m-layout-height, 100%);
5
- background: var(--m-color-surface);
6
- box-sizing: border-box;
7
- color: var(--m-color-text);
8
- display: flex;
9
- flex-direction: column;
10
- flex: auto;
11
- min-height: 0;
12
- min-width: 0;
13
- overflow: hidden;
14
- position: relative;
15
- transition:
16
- background-color var(--m-motion-normal) var(--m-motion-ease),
17
- color var(--m-motion-normal) var(--m-motion-ease);
18
- width: 100%;
19
- z-index: auto;
20
- }
21
-
22
- .m-layout--embedded {
23
- background: color-mix(
24
- in srgb,
25
- var(--m-color-text-muted) 6%,
26
- var(--m-color-surface)
27
- );
28
- }
29
-
30
- .m-layout--fill-viewport {
31
- /* Definite height so has-sider children with min-height:100% / flex stretch fill the viewport.
32
- min-height alone leaves height:auto and percentage children collapse to content height. */
33
- height: 100vh;
34
- height: 100dvh;
35
- min-height: 100vh;
36
- min-height: 100dvh;
37
- }
38
-
39
- .m-layout--absolute-positioned {
40
- inset: 0;
41
- position: absolute;
42
- }
43
-
44
- .m-layout__scroll,
45
- .m-layout__scroll-view {
46
- box-sizing: border-box;
47
- display: flex;
48
- flex: 1 1 auto;
49
- flex-direction: column;
50
- min-height: 0;
51
- min-width: 0;
52
- position: relative;
53
- width: 100%;
54
- }
55
-
56
- .m-layout__scroll-view {
57
- min-height: 100%;
58
- }
59
-
60
- .m-layout__scrollbar {
61
- flex: 1 1 auto;
62
- height: 100%;
63
- min-height: 0;
64
- min-width: 0;
65
- width: 100%;
66
- }
67
-
68
- .m-layout__scroll--has-sider,
69
- .m-layout__scroll-view--has-sider {
70
- /* direction set inline */
71
- align-items: stretch;
72
- flex-wrap: nowrap;
73
- }
74
-
75
- .m-layout__scroll--has-sider > .m-layout-sider,
76
- .m-layout__scroll--has-sider > .m-layout,
77
- .m-layout__scroll-view--has-sider > .m-layout-sider,
78
- .m-layout__scroll-view--has-sider > .m-layout {
79
- align-self: stretch;
80
- min-height: 100%;
81
- }
82
-
83
- /* Nested layout / content grow to fill remaining space */
84
- .m-layout__scroll > .m-layout,
85
- .m-layout__scroll > .m-layout-content,
86
- .m-layout__scroll-view > .m-layout,
87
- .m-layout__scroll-view > .m-layout-content {
88
- flex: 1 1 auto;
89
- min-height: 0;
90
- min-width: 0;
91
- }
92
-
93
- .m-layout-content {
94
- --m-layout-radius: 0;
95
- display: flex;
96
- flex: 1 1 auto;
97
- flex-direction: column;
98
- min-height: 0;
99
- min-width: 0;
100
- }
101
-
102
- .m-layout-header,
103
- .m-layout-footer {
104
- background: var(--m-color-surface);
105
- box-sizing: border-box;
106
- color: var(--m-color-text);
107
- flex: 0 0 auto;
108
- transition:
109
- background-color var(--m-motion-fast) var(--m-motion-ease),
110
- color var(--m-motion-fast) var(--m-motion-ease),
111
- border-color var(--m-motion-fast) var(--m-motion-ease);
112
- width: 100%;
113
- display: flex;
114
- align-items: center;
115
- }
116
-
117
- .m-layout-header {
118
- --m-layout-padding: 0 var(--m-space-4);
119
- --m-layout-radius: 0;
120
- }
121
-
122
- .m-layout-footer {
123
- --m-layout-padding: 0 var(--m-space-4);
124
- --m-layout-radius: 0;
125
- }
126
-
127
- .m-layout-header--bordered {
128
- border-bottom: var(--m-border-width) solid var(--m-color-split);
129
- }
130
-
131
- .m-layout-footer--bordered {
132
- border-top: var(--m-border-width) solid var(--m-color-split);
133
- }
134
-
135
- .m-layout-header--inverted,
136
- .m-layout-footer--inverted,
137
- .m-layout-sider--inverted {
138
- background: var(--m-color-contrast);
139
- color: var(--m-color-contrast-fg);
140
- }
141
-
142
- .m-layout-header--inverted.m-layout-header--bordered {
143
- border-bottom-color: color-mix(
144
- in srgb,
145
- var(--m-color-contrast-fg) 18%,
146
- transparent
147
- );
148
- }
149
-
150
- .m-layout-footer--inverted.m-layout-footer--bordered {
151
- border-top-color: color-mix(
152
- in srgb,
153
- var(--m-color-contrast-fg) 18%,
154
- transparent
155
- );
156
- }
157
-
158
- .m-layout-header--absolute-positioned,
159
- .m-layout-footer--absolute-positioned,
160
- .m-layout-sider--absolute-positioned {
161
- position: absolute;
162
- z-index: 1;
163
- }
164
-
165
- .m-layout-header--absolute-positioned {
166
- inset-inline: 0;
167
- top: 0;
168
- }
169
-
170
- .m-layout-footer--absolute-positioned {
171
- bottom: 0;
172
- inset-inline: 0;
173
- }
174
-
175
- .m-layout-sider {
176
- --m-layout-sider-width: var(--m-nav-rail-width);
177
- --m-layout-sider-collapsed-width: var(--m-nav-rail-collapsed-width);
178
- --m-layout-radius: 0;
179
- --m-layout-trigger-size: var(--m-space-6);
180
- align-self: stretch;
181
- background: var(--m-color-surface);
182
- box-sizing: border-box;
183
- color: var(--m-color-text);
184
- display: flex;
185
- flex-basis: var(--m-layout-sider-width);
186
- flex-direction: column;
187
- flex-shrink: 0;
188
- min-width: 0;
189
- /* Do not clip the collapse trigger (it sits half outside the sider edge).
190
- Collapsed transform overflow is clipped by `.m-layout { overflow: hidden }`. */
191
- overflow: visible;
192
- position: relative;
193
- transition:
194
- color var(--m-motion-normal) var(--m-motion-ease),
195
- border-color var(--m-motion-normal) var(--m-motion-ease),
196
- background-color var(--m-motion-normal) var(--m-motion-ease),
197
- opacity var(--m-motion-normal) var(--m-motion-ease);
198
- z-index: 1;
199
- }
200
-
201
- /* Default: clip via max-width (no size transition) + opacity — avoids layout thrashing. */
202
- .m-layout-sider--collapse-transform {
203
- flex-shrink: 0;
204
- }
205
-
206
- /*
207
- * Opt-in layout animation for flex reflow. One-shot only; prefer `transform` mode.
208
- * `contain: layout` limits reflow cost to the sider subtree where possible.
209
- * Overflow stays visible so the collapse trigger (half outside the edge) is not clipped.
210
- */
211
- .m-layout-sider--collapse-width {
212
- contain: layout;
213
- flex-shrink: 1;
214
- min-width: 0;
215
- transition:
216
- color var(--m-motion-normal) var(--m-motion-ease),
217
- border-color var(--m-motion-normal) var(--m-motion-ease),
218
- width var(--m-motion-normal) var(--m-motion-ease),
219
- max-width var(--m-motion-normal) var(--m-motion-ease),
220
- background-color var(--m-motion-normal) var(--m-motion-ease),
221
- opacity var(--m-motion-normal) var(--m-motion-ease);
222
- }
223
-
224
- .m-layout-sider:not(.m-layout-sider--show-content) > :not(.m-layout-sider__trigger):not(.m-layout-sider__border) {
225
- opacity: 0;
226
- pointer-events: none;
227
- transition: opacity var(--m-motion-normal) var(--m-motion-ease);
228
- }
229
-
230
- .m-layout-sider__border {
231
- background: var(--m-color-border);
232
- bottom: 0;
233
- position: absolute;
234
- top: 0;
235
- transition: background-color var(--m-motion-fast) var(--m-motion-ease);
236
- width: var(--m-border-width);
237
- }
238
-
239
- .m-layout-sider--left-placement > .m-layout-sider__border {
240
- right: 0;
241
- }
242
-
243
- .m-layout-sider--right-placement > .m-layout-sider__border {
244
- left: 0;
245
- }
246
-
247
- .m-layout-sider--inverted > .m-layout-sider__border {
248
- background: color-mix(
249
- in srgb,
250
- var(--m-color-contrast-fg) 18%,
251
- transparent
252
- );
253
- }
254
-
255
- .m-layout-sider__trigger {
256
- background: transparent;
257
- border: 0;
258
- border-radius: var(--m-radius-sm);
259
- color: var(--m-color-text-muted);
260
- cursor: pointer;
261
- font: inherit;
262
- padding: 0;
263
- position: absolute;
264
- transition:
265
- color var(--m-motion-fast) var(--m-motion-ease),
266
- background-color var(--m-motion-fast) var(--m-motion-ease),
267
- border-color var(--m-motion-fast) var(--m-motion-ease);
268
- z-index: 2;
269
- }
270
-
271
- .m-layout-sider__trigger:hover:not(:disabled) {
272
- color: var(--m-color-primary);
273
- }
274
-
275
- .m-layout-sider__trigger:focus-visible {
276
- box-shadow: var(--m-focus-shadow);
277
- outline: none;
278
- }
279
-
280
- .m-layout-sider__trigger:disabled {
281
- cursor: not-allowed;
282
- opacity: var(--m-opacity-disabled);
283
- }
284
-
285
- .m-layout-sider__trigger--arrow-circle {
286
- align-items: center;
287
- background: var(--m-color-surface);
288
- border: var(--m-border-width) solid var(--m-color-border);
289
- border-radius: 50%;
290
- box-shadow: var(--m-shadow-sm);
291
- display: inline-flex;
292
- font-size: var(--m-font-size-md);
293
- height: var(--m-layout-trigger-size);
294
- justify-content: center;
295
- right: 0;
296
- top: 50%;
297
- transform: translate(50%, -50%);
298
- width: var(--m-layout-trigger-size);
299
- }
300
-
301
- .m-layout-sider__trigger--arrow-circle:hover:not(:disabled) {
302
- border-color: var(--m-color-primary);
303
- color: var(--m-color-primary);
304
- }
305
-
306
- .m-layout-sider--right-placement > .m-layout-sider__trigger--arrow-circle {
307
- left: 0;
308
- right: auto;
309
- transform: translate(-50%, -50%);
310
- }
311
-
312
- .m-layout-sider__arrow {
313
- display: inline-block;
314
- line-height: 1;
315
- transform: rotate(180deg);
316
- transition: transform var(--m-motion-normal) var(--m-motion-ease);
317
- }
318
-
319
- .m-layout-sider--collapsed
320
- > .m-layout-sider__trigger--arrow-circle
321
- .m-layout-sider__arrow {
322
- transform: rotate(0deg);
323
- }
324
-
325
- .m-layout-sider--right-placement
326
- > .m-layout-sider__trigger--arrow-circle
327
- .m-layout-sider__arrow {
328
- transform: rotate(0deg);
329
- }
330
-
331
- .m-layout-sider--right-placement.m-layout-sider--collapsed
332
- > .m-layout-sider__trigger--arrow-circle
333
- .m-layout-sider__arrow {
334
- transform: rotate(180deg);
335
- }
336
-
337
- .m-layout-sider--inverted > .m-layout-sider__trigger--arrow-circle {
338
- background: var(--m-color-contrast);
339
- border-color: color-mix(
340
- in srgb,
341
- var(--m-color-contrast-fg) 18%,
342
- transparent
343
- );
344
- color: var(--m-color-contrast-fg);
345
- }
346
-
347
- .m-layout-sider__trigger--bar {
348
- height: var(--m-layout-trigger-bar-height);
349
- right: calc(-1 * var(--m-layout-trigger-bar-offset));
350
- top: calc(50% - var(--m-layout-trigger-bar-top));
351
- width: var(--m-layout-trigger-bar-width);
352
- }
353
-
354
- .m-layout-sider--right-placement > .m-layout-sider__trigger--bar {
355
- left: calc(-1 * var(--m-layout-trigger-bar-offset));
356
- right: auto;
357
- transform: rotate(180deg);
358
- }
359
-
360
- .m-layout-sider__bar {
361
- display: block;
362
- height: 100%;
363
- position: relative;
364
- width: 100%;
365
- }
366
-
367
- .m-layout-sider__bar-top,
368
- .m-layout-sider__bar-bottom {
369
- background: var(--m-color-text-muted);
370
- border-radius: var(--m-radius-sm);
371
- /* The bars overlap by --m-space-1 at the joint: the rounded tips stay
372
- hidden inside each other when straight, and close the chevron vertex
373
- on hover. */
374
- height: calc(var(--m-space-8) + var(--m-space-2) - var(--m-space-1) / 2);
375
- left: calc(var(--m-space-3) + var(--m-space-1));
376
- position: absolute;
377
- transition:
378
- background-color var(--m-motion-fast) var(--m-motion-ease),
379
- transform var(--m-motion-fast) var(--m-motion-ease);
380
- width: var(--m-space-1);
381
- }
382
-
383
- .m-layout-sider__bar-top {
384
- top: 0;
385
- }
386
-
387
- .m-layout-sider__bar-bottom {
388
- top: calc(var(--m-space-8) + var(--m-space-1) / 2);
389
- }
390
-
391
- .m-layout-sider__trigger--bar:hover .m-layout-sider__bar-top {
392
- transform: rotate(12deg) scale(1.15) translateY(-2px);
393
- }
394
-
395
- .m-layout-sider__trigger--bar:hover .m-layout-sider__bar-bottom {
396
- transform: rotate(-12deg) scale(1.15) translateY(2px);
397
- }
398
-
399
- .m-layout-sider--collapsed
400
- > .m-layout-sider__trigger--bar:hover
401
- .m-layout-sider__bar-top {
402
- transform: rotate(-12deg) scale(1.15) translateY(-2px);
403
- }
404
-
405
- .m-layout-sider--collapsed
406
- > .m-layout-sider__trigger--bar:hover
407
- .m-layout-sider__bar-bottom {
408
- transform: rotate(12deg) scale(1.15) translateY(2px);
409
- }
410
-
411
- .m-layout-sider--absolute-positioned {
412
- bottom: 0;
413
- left: 0;
414
- position: absolute;
415
- top: 0;
416
- }
417
-
418
- [data-m-motion="reduced"] .m-layout,
419
- [data-m-motion="reduced"] .m-layout-header,
420
- [data-m-motion="reduced"] .m-layout-footer,
421
- [data-m-motion="reduced"] .m-layout-sider,
422
- [data-m-motion="reduced"] .m-layout-sider__arrow,
423
- [data-m-motion="reduced"] .m-layout-sider__bar-top,
424
- [data-m-motion="reduced"] .m-layout-sider__bar-bottom,
425
- [data-m-motion="none"] .m-layout,
426
- [data-m-motion="none"] .m-layout-header,
427
- [data-m-motion="none"] .m-layout-footer,
428
- [data-m-motion="none"] .m-layout-sider,
429
- [data-m-motion="none"] .m-layout-sider__arrow,
430
- [data-m-motion="none"] .m-layout-sider__bar-top,
431
- [data-m-motion="none"] .m-layout-sider__bar-bottom {
432
- transition: none;
433
- }
1
+ /* —— Layout: Layout —— */
2
+ .m-layout {
3
+ --m-layout-height: 100%;
4
+ height: var(--m-layout-height, 100%);
5
+ background: var(--m-color-surface);
6
+ box-sizing: border-box;
7
+ color: var(--m-color-text);
8
+ display: flex;
9
+ flex-direction: column;
10
+ flex: auto;
11
+ min-height: 0;
12
+ min-width: 0;
13
+ overflow: hidden;
14
+ position: relative;
15
+ transition:
16
+ background-color var(--m-motion-normal) var(--m-motion-ease),
17
+ color var(--m-motion-normal) var(--m-motion-ease);
18
+ width: 100%;
19
+ z-index: auto;
20
+ }
21
+
22
+ .m-layout--embedded {
23
+ background: color-mix(
24
+ in srgb,
25
+ var(--m-color-text-muted) 6%,
26
+ var(--m-color-surface)
27
+ );
28
+ }
29
+
30
+ .m-layout--fill-viewport {
31
+ /* Definite height so has-sider children with min-height:100% / flex stretch fill the viewport.
32
+ min-height alone leaves height:auto and percentage children collapse to content height. */
33
+ height: 100vh;
34
+ height: 100dvh;
35
+ min-height: 100vh;
36
+ min-height: 100dvh;
37
+ }
38
+
39
+ .m-layout--absolute-positioned {
40
+ inset: 0;
41
+ position: absolute;
42
+ }
43
+
44
+ .m-layout__scroll,
45
+ .m-layout__scroll-view {
46
+ box-sizing: border-box;
47
+ display: flex;
48
+ flex: 1 1 auto;
49
+ flex-direction: column;
50
+ min-height: 0;
51
+ min-width: 0;
52
+ position: relative;
53
+ width: 100%;
54
+ }
55
+
56
+ .m-layout__scroll-view {
57
+ min-height: 100%;
58
+ }
59
+
60
+ .m-layout__scrollbar {
61
+ flex: 1 1 auto;
62
+ height: 100%;
63
+ min-height: 0;
64
+ min-width: 0;
65
+ width: 100%;
66
+ }
67
+
68
+ .m-layout__scroll--has-sider,
69
+ .m-layout__scroll-view--has-sider {
70
+ /* direction set inline */
71
+ align-items: stretch;
72
+ flex-wrap: nowrap;
73
+ }
74
+
75
+ .m-layout__scroll--has-sider > .m-layout-sider,
76
+ .m-layout__scroll--has-sider > .m-layout,
77
+ .m-layout__scroll-view--has-sider > .m-layout-sider,
78
+ .m-layout__scroll-view--has-sider > .m-layout {
79
+ align-self: stretch;
80
+ min-height: 100%;
81
+ }
82
+
83
+ /* Nested layout / content grow to fill remaining space */
84
+ .m-layout__scroll > .m-layout,
85
+ .m-layout__scroll > .m-layout-content,
86
+ .m-layout__scroll-view > .m-layout,
87
+ .m-layout__scroll-view > .m-layout-content {
88
+ flex: 1 1 auto;
89
+ min-height: 0;
90
+ min-width: 0;
91
+ }
92
+
93
+ .m-layout-content {
94
+ --m-layout-radius: 0;
95
+ display: flex;
96
+ flex: 1 1 auto;
97
+ flex-direction: column;
98
+ min-height: 0;
99
+ min-width: 0;
100
+ }
101
+
102
+ .m-layout-header,
103
+ .m-layout-footer {
104
+ background: var(--m-color-surface);
105
+ box-sizing: border-box;
106
+ color: var(--m-color-text);
107
+ flex: 0 0 auto;
108
+ transition:
109
+ background-color var(--m-motion-fast) var(--m-motion-ease),
110
+ color var(--m-motion-fast) var(--m-motion-ease),
111
+ border-color var(--m-motion-fast) var(--m-motion-ease);
112
+ width: 100%;
113
+ display: flex;
114
+ align-items: center;
115
+ }
116
+
117
+ .m-layout-header {
118
+ --m-layout-padding: 0 var(--m-space-4);
119
+ --m-layout-radius: 0;
120
+ }
121
+
122
+ .m-layout-footer {
123
+ --m-layout-padding: 0 var(--m-space-4);
124
+ --m-layout-radius: 0;
125
+ }
126
+
127
+ .m-layout-header--bordered {
128
+ border-bottom: var(--m-border-width) solid var(--m-color-split);
129
+ }
130
+
131
+ .m-layout-footer--bordered {
132
+ border-top: var(--m-border-width) solid var(--m-color-split);
133
+ }
134
+
135
+ .m-layout-header--inverted,
136
+ .m-layout-footer--inverted,
137
+ .m-layout-sider--inverted {
138
+ background: var(--m-color-contrast);
139
+ color: var(--m-color-contrast-fg);
140
+ }
141
+
142
+ .m-layout-header--inverted.m-layout-header--bordered {
143
+ border-bottom-color: color-mix(
144
+ in srgb,
145
+ var(--m-color-contrast-fg) 18%,
146
+ transparent
147
+ );
148
+ }
149
+
150
+ .m-layout-footer--inverted.m-layout-footer--bordered {
151
+ border-top-color: color-mix(
152
+ in srgb,
153
+ var(--m-color-contrast-fg) 18%,
154
+ transparent
155
+ );
156
+ }
157
+
158
+ .m-layout-header--absolute-positioned,
159
+ .m-layout-footer--absolute-positioned,
160
+ .m-layout-sider--absolute-positioned {
161
+ position: absolute;
162
+ z-index: 1;
163
+ }
164
+
165
+ .m-layout-header--absolute-positioned {
166
+ inset-inline: 0;
167
+ top: 0;
168
+ }
169
+
170
+ .m-layout-footer--absolute-positioned {
171
+ bottom: 0;
172
+ inset-inline: 0;
173
+ }
174
+
175
+ .m-layout-sider {
176
+ --m-layout-sider-width: var(--m-nav-rail-width);
177
+ --m-layout-sider-collapsed-width: var(--m-nav-rail-collapsed-width);
178
+ --m-layout-radius: 0;
179
+ --m-layout-trigger-size: var(--m-space-6);
180
+ align-self: stretch;
181
+ background: var(--m-color-surface);
182
+ box-sizing: border-box;
183
+ color: var(--m-color-text);
184
+ display: flex;
185
+ flex-basis: var(--m-layout-sider-width);
186
+ flex-direction: column;
187
+ flex-shrink: 0;
188
+ min-width: 0;
189
+ /* Do not clip the collapse trigger (it sits half outside the sider edge).
190
+ Collapsed transform overflow is clipped by `.m-layout { overflow: hidden }`. */
191
+ overflow: visible;
192
+ position: relative;
193
+ transition:
194
+ color var(--m-motion-normal) var(--m-motion-ease),
195
+ border-color var(--m-motion-normal) var(--m-motion-ease),
196
+ background-color var(--m-motion-normal) var(--m-motion-ease),
197
+ opacity var(--m-motion-normal) var(--m-motion-ease);
198
+ z-index: 1;
199
+ }
200
+
201
+ /* Default: clip via max-width (no size transition) + opacity — avoids layout thrashing. */
202
+ .m-layout-sider--collapse-transform {
203
+ flex-shrink: 0;
204
+ }
205
+
206
+ /*
207
+ * Opt-in layout animation for flex reflow. One-shot only; prefer `transform` mode.
208
+ * `contain: layout` limits reflow cost to the sider subtree where possible.
209
+ * Overflow stays visible so the collapse trigger (half outside the edge) is not clipped.
210
+ */
211
+ .m-layout-sider--collapse-width {
212
+ contain: layout;
213
+ flex-shrink: 1;
214
+ min-width: 0;
215
+ transition:
216
+ color var(--m-motion-normal) var(--m-motion-ease),
217
+ border-color var(--m-motion-normal) var(--m-motion-ease),
218
+ width var(--m-motion-normal) var(--m-motion-ease),
219
+ max-width var(--m-motion-normal) var(--m-motion-ease),
220
+ background-color var(--m-motion-normal) var(--m-motion-ease),
221
+ opacity var(--m-motion-normal) var(--m-motion-ease);
222
+ }
223
+
224
+ .m-layout-sider:not(.m-layout-sider--show-content) > :not(.m-layout-sider__trigger):not(.m-layout-sider__border) {
225
+ opacity: 0;
226
+ pointer-events: none;
227
+ transition: opacity var(--m-motion-normal) var(--m-motion-ease);
228
+ }
229
+
230
+ .m-layout-sider__border {
231
+ background: var(--m-color-border);
232
+ bottom: 0;
233
+ position: absolute;
234
+ top: 0;
235
+ transition: background-color var(--m-motion-fast) var(--m-motion-ease);
236
+ width: var(--m-border-width);
237
+ }
238
+
239
+ .m-layout-sider--left-placement > .m-layout-sider__border {
240
+ right: 0;
241
+ }
242
+
243
+ .m-layout-sider--right-placement > .m-layout-sider__border {
244
+ left: 0;
245
+ }
246
+
247
+ .m-layout-sider--inverted > .m-layout-sider__border {
248
+ background: color-mix(
249
+ in srgb,
250
+ var(--m-color-contrast-fg) 18%,
251
+ transparent
252
+ );
253
+ }
254
+
255
+ .m-layout-sider__trigger {
256
+ background: transparent;
257
+ border: 0;
258
+ border-radius: var(--m-radius-sm);
259
+ color: var(--m-color-text-muted);
260
+ cursor: pointer;
261
+ font: inherit;
262
+ padding: 0;
263
+ position: absolute;
264
+ transition:
265
+ color var(--m-motion-fast) var(--m-motion-ease),
266
+ background-color var(--m-motion-fast) var(--m-motion-ease),
267
+ border-color var(--m-motion-fast) var(--m-motion-ease);
268
+ z-index: 2;
269
+ }
270
+
271
+ .m-layout-sider__trigger:hover:not(:disabled) {
272
+ color: var(--m-color-primary);
273
+ }
274
+
275
+ .m-layout-sider__trigger:focus-visible {
276
+ box-shadow: var(--m-focus-shadow);
277
+ outline: none;
278
+ }
279
+
280
+ .m-layout-sider__trigger:disabled {
281
+ cursor: not-allowed;
282
+ opacity: var(--m-opacity-disabled);
283
+ }
284
+
285
+ .m-layout-sider__trigger--arrow-circle {
286
+ align-items: center;
287
+ background: var(--m-color-surface);
288
+ border: var(--m-border-width) solid var(--m-color-border);
289
+ border-radius: 50%;
290
+ box-shadow: var(--m-shadow-sm);
291
+ display: inline-flex;
292
+ font-size: var(--m-font-size-md);
293
+ height: var(--m-layout-trigger-size);
294
+ justify-content: center;
295
+ right: 0;
296
+ top: 50%;
297
+ transform: translate(50%, -50%);
298
+ width: var(--m-layout-trigger-size);
299
+ }
300
+
301
+ .m-layout-sider__trigger--arrow-circle:hover:not(:disabled) {
302
+ border-color: var(--m-color-primary);
303
+ color: var(--m-color-primary);
304
+ }
305
+
306
+ .m-layout-sider--right-placement > .m-layout-sider__trigger--arrow-circle {
307
+ left: 0;
308
+ right: auto;
309
+ transform: translate(-50%, -50%);
310
+ }
311
+
312
+ .m-layout-sider__arrow {
313
+ display: inline-block;
314
+ line-height: 1;
315
+ transform: rotate(180deg);
316
+ transition: transform var(--m-motion-normal) var(--m-motion-ease);
317
+ }
318
+
319
+ .m-layout-sider--collapsed
320
+ > .m-layout-sider__trigger--arrow-circle
321
+ .m-layout-sider__arrow {
322
+ transform: rotate(0deg);
323
+ }
324
+
325
+ .m-layout-sider--right-placement
326
+ > .m-layout-sider__trigger--arrow-circle
327
+ .m-layout-sider__arrow {
328
+ transform: rotate(0deg);
329
+ }
330
+
331
+ .m-layout-sider--right-placement.m-layout-sider--collapsed
332
+ > .m-layout-sider__trigger--arrow-circle
333
+ .m-layout-sider__arrow {
334
+ transform: rotate(180deg);
335
+ }
336
+
337
+ .m-layout-sider--inverted > .m-layout-sider__trigger--arrow-circle {
338
+ background: var(--m-color-contrast);
339
+ border-color: color-mix(
340
+ in srgb,
341
+ var(--m-color-contrast-fg) 18%,
342
+ transparent
343
+ );
344
+ color: var(--m-color-contrast-fg);
345
+ }
346
+
347
+ .m-layout-sider__trigger--bar {
348
+ height: var(--m-layout-trigger-bar-height);
349
+ right: calc(-1 * var(--m-layout-trigger-bar-offset));
350
+ top: calc(50% - var(--m-layout-trigger-bar-top));
351
+ width: var(--m-layout-trigger-bar-width);
352
+ }
353
+
354
+ .m-layout-sider--right-placement > .m-layout-sider__trigger--bar {
355
+ left: calc(-1 * var(--m-layout-trigger-bar-offset));
356
+ right: auto;
357
+ transform: rotate(180deg);
358
+ }
359
+
360
+ .m-layout-sider__bar {
361
+ display: block;
362
+ height: 100%;
363
+ position: relative;
364
+ width: 100%;
365
+ }
366
+
367
+ .m-layout-sider__bar-top,
368
+ .m-layout-sider__bar-bottom {
369
+ background: var(--m-color-text-muted);
370
+ border-radius: var(--m-radius-sm);
371
+ /* The bars overlap by --m-space-1 at the joint: the rounded tips stay
372
+ hidden inside each other when straight, and close the chevron vertex
373
+ on hover. */
374
+ height: calc(var(--m-space-8) + var(--m-space-2) - var(--m-space-1) / 2);
375
+ left: calc(var(--m-space-3) + var(--m-space-1));
376
+ position: absolute;
377
+ transition:
378
+ background-color var(--m-motion-fast) var(--m-motion-ease),
379
+ transform var(--m-motion-fast) var(--m-motion-ease);
380
+ width: var(--m-space-1);
381
+ }
382
+
383
+ .m-layout-sider__bar-top {
384
+ top: 0;
385
+ }
386
+
387
+ .m-layout-sider__bar-bottom {
388
+ top: calc(var(--m-space-8) + var(--m-space-1) / 2);
389
+ }
390
+
391
+ .m-layout-sider__trigger--bar:hover .m-layout-sider__bar-top {
392
+ transform: rotate(12deg) scale(1.15) translateY(-2px);
393
+ }
394
+
395
+ .m-layout-sider__trigger--bar:hover .m-layout-sider__bar-bottom {
396
+ transform: rotate(-12deg) scale(1.15) translateY(2px);
397
+ }
398
+
399
+ .m-layout-sider--collapsed
400
+ > .m-layout-sider__trigger--bar:hover
401
+ .m-layout-sider__bar-top {
402
+ transform: rotate(-12deg) scale(1.15) translateY(-2px);
403
+ }
404
+
405
+ .m-layout-sider--collapsed
406
+ > .m-layout-sider__trigger--bar:hover
407
+ .m-layout-sider__bar-bottom {
408
+ transform: rotate(12deg) scale(1.15) translateY(2px);
409
+ }
410
+
411
+ .m-layout-sider--absolute-positioned {
412
+ bottom: 0;
413
+ left: 0;
414
+ position: absolute;
415
+ top: 0;
416
+ }
417
+
418
+ [data-m-motion="reduced"] .m-layout,
419
+ [data-m-motion="reduced"] .m-layout-header,
420
+ [data-m-motion="reduced"] .m-layout-footer,
421
+ [data-m-motion="reduced"] .m-layout-sider,
422
+ [data-m-motion="reduced"] .m-layout-sider__arrow,
423
+ [data-m-motion="reduced"] .m-layout-sider__bar-top,
424
+ [data-m-motion="reduced"] .m-layout-sider__bar-bottom,
425
+ [data-m-motion="none"] .m-layout,
426
+ [data-m-motion="none"] .m-layout-header,
427
+ [data-m-motion="none"] .m-layout-footer,
428
+ [data-m-motion="none"] .m-layout-sider,
429
+ [data-m-motion="none"] .m-layout-sider__arrow,
430
+ [data-m-motion="none"] .m-layout-sider__bar-top,
431
+ [data-m-motion="none"] .m-layout-sider__bar-bottom {
432
+ transition: none;
433
+ }