morya-ui 0.3.4 → 0.3.6

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 (249) hide show
  1. package/CHANGELOG.md +536 -523
  2. package/LICENSE +21 -21
  3. package/README.md +150 -150
  4. package/README.zh-CN.md +150 -150
  5. package/dist/{Button-gBiRj7wz.js → Button-3vJoiEQC.js} +1 -1
  6. package/dist/{Checkbox-BzbAUfyZ.js → Checkbox-B2gcDJHM.js} +1 -1
  7. package/dist/{Empty-C5tndBOm.js → Empty-5pTDp3ZM.js} +1 -1
  8. package/dist/{FlyoutSubmenu-H_741alW.js → FlyoutSubmenu-C_OrDaPN.js} +1 -1
  9. package/dist/{Loading-qS2Yv_gm.js → Loading-Ba-Js5-u.js} +3 -3
  10. package/dist/{Pagination-Bvv2qvEK.js → Pagination-lJ7cce6g.js} +2 -2
  11. package/dist/{Popover-rnZG_ap0.js → Popover-CQ2VYpFJ.js} +2 -2
  12. package/dist/{Radio-rF6zdR5Y.js → Radio-BbJ_Jyil.js} +1 -1
  13. package/dist/{Select-CiXd074W.js → Select-DyxORH6Q.js} +3 -3
  14. package/dist/{Tooltip-B02o9BOW.js → Tooltip-D3WUemno.js} +2 -2
  15. package/dist/accordion/style.css +1148 -1148
  16. package/dist/auto-complete/index.js +3 -3
  17. package/dist/auto-complete/style.css +1690 -1690
  18. package/dist/avatar/style.css +1261 -1261
  19. package/dist/badge/style.css +1315 -1315
  20. package/dist/block-ui/index.js +1 -1
  21. package/dist/block-ui/style.css +1148 -1148
  22. package/dist/breadcrumb/index.js +1 -1
  23. package/dist/breadcrumb/style.css +1148 -1148
  24. package/dist/button/index.js +1 -1
  25. package/dist/button/style.css +2138 -2138
  26. package/dist/card/style.css +1148 -1148
  27. package/dist/carousel/index.js +1 -1
  28. package/dist/carousel/style.css +1249 -1249
  29. package/dist/cascade-select/index.js +3 -3
  30. package/dist/cascade-select/style.css +1839 -1839
  31. package/dist/checkbox/index.js +1 -1
  32. package/dist/checkbox/style.css +1148 -1148
  33. package/dist/chip/index.js +1 -1
  34. package/dist/chip/style.css +1292 -1292
  35. package/dist/command-menu/index.js +3 -3
  36. package/dist/command-menu/style.css +1381 -1381
  37. package/dist/components/AutoComplete/styles.css +209 -209
  38. package/dist/components/Avatar/styles.css +113 -113
  39. package/dist/components/Badge/styles.css +165 -165
  40. package/dist/components/Button/styles.css +962 -962
  41. package/dist/components/Carousel/styles.css +101 -101
  42. package/dist/components/CascadeSelect/styles.css +157 -157
  43. package/dist/components/Chip/styles.css +144 -144
  44. package/dist/components/CommandMenu/styles.css +102 -102
  45. package/dist/components/ConfigProvider/styles.css +6 -6
  46. package/dist/components/ConfirmDialog/styles.css +24 -24
  47. package/dist/components/ConfirmPopup/styles.css +35 -35
  48. package/dist/components/ContextMenu/styles.css +138 -138
  49. package/dist/components/DatePicker/styles.css +335 -335
  50. package/dist/components/Dialog/styles.css +421 -421
  51. package/dist/components/Dock/styles.css +84 -84
  52. package/dist/components/Drawer/styles.css +334 -334
  53. package/dist/components/Dropdown/styles.css +130 -130
  54. package/dist/components/Empty/styles.css +146 -146
  55. package/dist/components/FileUpload/styles.css +359 -359
  56. package/dist/components/Form/styles.css +114 -114
  57. package/dist/components/Gallery/styles.css +100 -100
  58. package/dist/components/Input/styles.css +356 -356
  59. package/dist/components/InputColor/styles.css +129 -129
  60. package/dist/components/InputNumber/styles.css +261 -261
  61. package/dist/components/InputPassword/styles.css +178 -178
  62. package/dist/components/InputTags/styles.css +112 -112
  63. package/dist/components/Layout/styles.css +433 -433
  64. package/dist/components/Loading/styles.css +378 -378
  65. package/dist/components/MegaMenu/styles.css +97 -97
  66. package/dist/components/Menu/styles.css +564 -564
  67. package/dist/components/Menubar/styles.css +144 -144
  68. package/dist/components/Message/styles.css +250 -250
  69. package/dist/components/MeterGroup/styles.css +49 -49
  70. package/dist/components/Page/PageFilters.vue.d.ts +5 -3
  71. package/dist/components/Page/PageFilters.vue.d.ts.map +1 -1
  72. package/dist/components/Page/styles.css +430 -412
  73. package/dist/components/Page/types.d.ts +2 -2
  74. package/dist/components/Page/types.d.ts.map +1 -1
  75. package/dist/components/Pagination/styles.css +105 -105
  76. package/dist/components/Popover/styles.css +92 -92
  77. package/dist/components/Result/styles.css +146 -146
  78. package/dist/components/Scrollbar/styles.css +131 -131
  79. package/dist/components/Select/styles.css +192 -192
  80. package/dist/components/SelectButton/styles.css +105 -105
  81. package/dist/components/Sidebar/styles.css +74 -74
  82. package/dist/components/Slider/styles.css +211 -211
  83. package/dist/components/SplitButton/styles.css +216 -216
  84. package/dist/components/Status/styles.css +191 -191
  85. package/dist/components/Stepper/styles.css +135 -135
  86. package/dist/components/Switch/styles.css +129 -129
  87. package/dist/components/Tabs/styles.css +131 -131
  88. package/dist/components/Terminal/styles.css +74 -74
  89. package/dist/components/Textarea/styles.css +126 -126
  90. package/dist/components/TieredMenu/styles.css +125 -125
  91. package/dist/components/Timeline/styles.css +159 -159
  92. package/dist/components/TreeSelect/styles.css +161 -161
  93. package/dist/components/TreeTable/styles.css +97 -97
  94. package/dist/components/VirtualScroller/styles.css +27 -27
  95. package/dist/{config-CapALqt3.js → config-De8ueCY-.js} +2 -0
  96. package/dist/config-provider/index.js +1 -1
  97. package/dist/config-provider/style.css +2472 -2472
  98. package/dist/confirm-dialog/index.js +4 -4
  99. package/dist/confirm-dialog/style.css +2555 -2555
  100. package/dist/confirm-popup/index.js +4 -4
  101. package/dist/confirm-popup/style.css +2145 -2145
  102. package/dist/context-menu/index.js +3 -3
  103. package/dist/context-menu/style.css +1417 -1417
  104. package/dist/data-view/index.js +3 -3
  105. package/dist/data-view/style.css +1631 -1631
  106. package/dist/date-picker/index.js +3 -3
  107. package/dist/date-picker/style.css +1483 -1483
  108. package/dist/dialog/index.js +4 -4
  109. package/dist/dialog/style.css +2531 -2531
  110. package/dist/divider/style.css +1148 -1148
  111. package/dist/dock/style.css +1232 -1232
  112. package/dist/drawer/index.js +3 -3
  113. package/dist/drawer/style.css +1482 -1482
  114. package/dist/dropdown/index.js +4 -4
  115. package/dist/dropdown/style.css +1409 -1409
  116. package/dist/empty/index.js +1 -1
  117. package/dist/empty/style.css +1294 -1294
  118. package/dist/fieldset/style.css +1148 -1148
  119. package/dist/file-upload/index.js +1 -1
  120. package/dist/file-upload/style.css +1507 -1507
  121. package/dist/flex/index.js +1 -1
  122. package/dist/flex/style.css +1148 -1148
  123. package/dist/float-label/style.css +1148 -1148
  124. package/dist/fluid/style.css +1148 -1148
  125. package/dist/form/index.js +1 -1
  126. package/dist/form/style.css +1264 -1264
  127. package/dist/gallery/index.js +1 -1
  128. package/dist/gallery/style.css +1379 -1379
  129. package/dist/grid/style.css +1148 -1148
  130. package/dist/icon/style.css +1148 -1148
  131. package/dist/icon-field/style.css +1504 -1504
  132. package/dist/index.js +84 -69
  133. package/dist/inplace/style.css +1148 -1148
  134. package/dist/input/index.js +2 -2
  135. package/dist/input/style.css +1504 -1504
  136. package/dist/input-color/index.js +2 -2
  137. package/dist/input-color/style.css +1279 -1279
  138. package/dist/input-group/style.css +1148 -1148
  139. package/dist/input-number/index.js +2 -2
  140. package/dist/input-number/style.css +1409 -1409
  141. package/dist/input-otp/index.js +2 -2
  142. package/dist/input-otp/style.css +1148 -1148
  143. package/dist/input-password/index.js +2 -2
  144. package/dist/input-password/style.css +1326 -1326
  145. package/dist/input-tags/index.js +2 -2
  146. package/dist/input-tags/style.css +1260 -1260
  147. package/dist/knob/style.css +1148 -1148
  148. package/dist/label/style.css +1148 -1148
  149. package/dist/layout/index.js +1 -1
  150. package/dist/layout/style.css +1712 -1712
  151. package/dist/listbox/index.js +2 -2
  152. package/dist/listbox/style.css +1306 -1306
  153. package/dist/loading/index.js +1 -1
  154. package/dist/loading/style.css +1528 -1528
  155. package/dist/locale/en-US.d.ts.map +1 -1
  156. package/dist/locale/types.d.ts +4 -0
  157. package/dist/locale/types.d.ts.map +1 -1
  158. package/dist/locale/zh-CN.d.ts.map +1 -1
  159. package/dist/{locale-Bzm2nbEp.js → locale-xavS6-Hw.js} +1 -1
  160. package/dist/mega-menu/index.js +3 -3
  161. package/dist/mega-menu/style.css +1245 -1245
  162. package/dist/menu/index.js +4 -4
  163. package/dist/menu/style.css +2001 -2001
  164. package/dist/menubar/index.js +3 -3
  165. package/dist/menubar/style.css +1423 -1423
  166. package/dist/message/index.js +3 -3
  167. package/dist/message/style.css +1398 -1398
  168. package/dist/meter-group/style.css +1199 -1199
  169. package/dist/order-list/index.js +1 -1
  170. package/dist/order-list/style.css +1148 -1148
  171. package/dist/page/index.js +63 -52
  172. package/dist/page/style.css +2806 -2788
  173. package/dist/pagination/index.js +1 -1
  174. package/dist/pagination/style.css +1445 -1445
  175. package/dist/panel/index.js +1 -1
  176. package/dist/panel/style.css +1148 -1148
  177. package/dist/pick-list/index.js +1 -1
  178. package/dist/pick-list/style.css +1148 -1148
  179. package/dist/popover/index.js +1 -1
  180. package/dist/popover/style.css +1242 -1242
  181. package/dist/progress-bar/style.css +1148 -1148
  182. package/dist/progress-spinner/index.js +1 -1
  183. package/dist/progress-spinner/style.css +1148 -1148
  184. package/dist/radio/index.js +1 -1
  185. package/dist/radio/style.css +1148 -1148
  186. package/dist/rating/index.js +2 -2
  187. package/dist/rating/style.css +1148 -1148
  188. package/dist/result/index.js +1 -1
  189. package/dist/result/style.css +1294 -1294
  190. package/dist/scroll-top/index.js +2 -2
  191. package/dist/scroll-top/style.css +1279 -1279
  192. package/dist/scrollbar/style.css +1281 -1281
  193. package/dist/select/index.js +1 -1
  194. package/dist/select/style.css +1901 -1901
  195. package/dist/select-button/index.js +1 -1
  196. package/dist/select-button/style.css +1255 -1255
  197. package/dist/shared/styles/control-affix-icon.css +110 -110
  198. package/dist/shared/styles/control-suffix.css +118 -118
  199. package/dist/shared/styles/select-overlay.css +175 -175
  200. package/dist/sidebar/index.js +1 -1
  201. package/dist/sidebar/style.css +1222 -1222
  202. package/dist/skeleton/style.css +1148 -1148
  203. package/dist/slider/index.js +2 -2
  204. package/dist/slider/style.css +1361 -1361
  205. package/dist/space/index.js +1 -1
  206. package/dist/space/style.css +1148 -1148
  207. package/dist/speed-dial/index.js +3 -3
  208. package/dist/speed-dial/style.css +1148 -1148
  209. package/dist/split-button/index.js +3 -3
  210. package/dist/split-button/style.css +2326 -2326
  211. package/dist/splitter/index.js +1 -1
  212. package/dist/splitter/style.css +1148 -1148
  213. package/dist/status/index.js +1 -1
  214. package/dist/status/style.css +1339 -1339
  215. package/dist/stepper/style.css +1283 -1283
  216. package/dist/styles/base.css +790 -790
  217. package/dist/styles.css +1 -1
  218. package/dist/switch/index.js +1 -1
  219. package/dist/switch/style.css +1279 -1279
  220. package/dist/table/index.js +7 -7
  221. package/dist/table/style.css +1812 -1812
  222. package/dist/tabs/index.js +1 -1
  223. package/dist/tabs/style.css +1410 -1410
  224. package/dist/tag/index.js +2 -2
  225. package/dist/tag/style.css +1148 -1148
  226. package/dist/terminal/index.js +1 -1
  227. package/dist/terminal/style.css +1224 -1224
  228. package/dist/textarea/index.js +2 -2
  229. package/dist/textarea/style.css +1274 -1274
  230. package/dist/theme/styles.css +358 -358
  231. package/dist/tiered-menu/index.js +3 -3
  232. package/dist/tiered-menu/style.css +1404 -1404
  233. package/dist/timeline/style.css +1438 -1438
  234. package/dist/toast/index.js +3 -3
  235. package/dist/toast/style.css +1148 -1148
  236. package/dist/toggle-button/index.js +1 -1
  237. package/dist/toggle-button/style.css +1148 -1148
  238. package/dist/toolbar/style.css +1148 -1148
  239. package/dist/tooltip/index.js +1 -1
  240. package/dist/tooltip/style.css +1148 -1148
  241. package/dist/tree/index.js +2 -2
  242. package/dist/tree/style.css +1148 -1148
  243. package/dist/tree-select/index.js +4 -4
  244. package/dist/tree-select/style.css +1843 -1843
  245. package/dist/tree-table/index.js +1 -1
  246. package/dist/tree-table/style.css +1245 -1245
  247. package/dist/{useMotionTransition-95Y79FoL.js → useMotionTransition-tW0yeJsy.js} +1 -1
  248. package/dist/virtual-scroller/style.css +1309 -1309
  249. package/package.json +29 -31
@@ -1,412 +1,430 @@
1
- /* —— Layout: Page ——
2
- * Surface contract (kept in sync with Card / Table / controls):
3
- * - Page chrome stays flat: whitespace and type hierarchy, not a second kit.
4
- * - Recessive bands (filled filters, muted section) = Table-header fill, no radius.
5
- * - Elevated surfaces reuse Card: surface + 1px border + radius-lg, same padding.
6
- * - Never invent glow, dashed frames, or pill chips on Ops page chrome.
7
- */
8
- .m-page-content {
9
- --m-page-content-body-lead: var(--m-space-2);
10
- --m-page-content-tools-pull: var(--m-space-2);
11
- box-sizing: border-box;
12
- display: flex;
13
- flex-direction: column;
14
- font-family: var(--m-font-sans);
15
- gap: var(--m-page-content-gap, var(--m-space-4));
16
- padding: var(--m-page-content-padding, var(--m-space-6));
17
- width: 100%;
18
- }
19
-
20
- .m-page-content > .m-page-header + :is(.m-page-filters, .m-page-toolbar) {
21
- margin-top: calc(var(--m-space-1) - var(--m-page-content-gap, var(--m-space-4)));
22
- }
23
-
24
- .m-page-content > .m-page-filters + .m-page-toolbar {
25
- margin-top: calc(var(--m-page-content-tools-pull) * -1);
26
- }
27
-
28
- .m-page-content
29
- > :is(.m-page-filters, .m-page-toolbar)
30
- + :is(.m-table, .m-grid, .m-page-section:not(.m-page-section--actions)) {
31
- margin-top: var(--m-page-content-body-lead);
32
- }
33
-
34
- .m-page-content--compact {
35
- --m-page-content-body-lead: var(--m-space-1);
36
- --m-page-content-gap: var(--m-space-3);
37
- --m-page-content-padding: var(--m-space-4);
38
- --m-page-content-tools-pull: var(--m-space-1);
39
- }
40
-
41
- .m-page-content--spacious {
42
- --m-page-content-body-lead: var(--m-space-4);
43
- --m-page-content-gap: var(--m-space-6);
44
- --m-page-content-tools-pull: var(--m-space-3);
45
- }
46
-
47
- .m-page-content--narrow {
48
- max-width: 42rem;
49
- }
50
-
51
- /* Full-viewport main lists only: fill LayoutContent; pair with MTable fill. Skip for embedded/short pages. */
52
- .m-page-content--fill {
53
- flex: 1 1 auto;
54
- height: 100%;
55
- min-height: 0;
56
- overflow: hidden;
57
- }
58
-
59
- .m-page-content--fill
60
- > :is(.m-page-header, .m-page-filters, .m-page-filter-chips, .m-page-toolbar, .m-pagination) {
61
- flex-shrink: 0;
62
- }
63
-
64
- .m-page-content--fill > .m-table {
65
- flex: 1 1 auto;
66
- min-height: 0;
67
- }
68
-
69
- .m-page-content--bands-uniform {
70
- --m-page-content-body-lead: 0;
71
- --m-page-content-tools-pull: 0;
72
- }
73
-
74
- .m-page-content--bands-uniform > .m-page-header + :is(.m-page-filters, .m-page-toolbar) {
75
- margin-top: 0;
76
- }
77
-
78
- .m-page-content--bands-uniform
79
- > :is(.m-page-filters, .m-page-toolbar)
80
- + :is(.m-table, .m-grid, .m-page-section:not(.m-page-section--actions)) {
81
- margin-top: 0;
82
- }
83
-
84
- .m-page-filters {
85
- box-sizing: border-box;
86
- display: grid;
87
- gap: var(--m-space-3);
88
- width: 100%;
89
- }
90
-
91
- .m-page-filters__row {
92
- align-items: flex-start;
93
- display: flex;
94
- flex-wrap: wrap;
95
- gap: var(--m-space-3);
96
- justify-content: space-between;
97
- width: 100%;
98
- }
99
-
100
- .m-page-filters__controls {
101
- flex: 1 1 auto;
102
- min-width: 0;
103
- }
104
-
105
- .m-page-filters__toggle {
106
- flex-shrink: 0;
107
- }
108
-
109
- .m-page-filters__advanced {
110
- width: 100%;
111
- }
112
-
113
- .m-page-filters--filled {
114
- background: var(--m-color-fill-light);
115
- padding: var(--m-space-3) var(--m-space-4);
116
- }
117
-
118
- .m-page-filters--filled .m-page-filters__advanced {
119
- padding-top: var(--m-space-1);
120
- }
121
-
122
- .m-page-filter-chips {
123
- align-items: center;
124
- display: flex;
125
- flex-wrap: wrap;
126
- gap: var(--m-space-2);
127
- width: 100%;
128
- }
129
-
130
- .m-page-filter-chips__label {
131
- color: var(--m-color-text-muted);
132
- flex-shrink: 0;
133
- font-size: var(--m-font-size-sm);
134
- line-height: 1.4;
135
- }
136
-
137
- .m-page-filter-chips__items {
138
- align-items: center;
139
- display: flex;
140
- flex: 1 1 auto;
141
- flex-wrap: wrap;
142
- gap: var(--m-space-2);
143
- min-width: 0;
144
- }
145
-
146
- .m-page-toolbar {
147
- align-items: center;
148
- box-sizing: border-box;
149
- display: flex;
150
- flex-wrap: wrap;
151
- gap: var(--m-space-3);
152
- justify-content: space-between;
153
- width: 100%;
154
- }
155
-
156
- .m-page-toolbar__title {
157
- color: var(--m-color-text);
158
- font-family: var(--m-font-sans);
159
- font-size: var(--m-font-size-md);
160
- font-weight: 600;
161
- line-height: 1.4;
162
- margin: 0;
163
- }
164
-
165
- .m-page-toolbar__actions {
166
- align-items: center;
167
- display: flex;
168
- flex-wrap: wrap;
169
- gap: var(--m-space-2);
170
- margin-left: auto;
171
- }
172
-
173
- .m-page-header {
174
- align-items: flex-start;
175
- box-sizing: border-box;
176
- display: flex;
177
- flex-wrap: wrap;
178
- gap: var(--m-space-3);
179
- justify-content: space-between;
180
- width: 100%;
181
- }
182
-
183
- .m-page-header__main {
184
- display: grid;
185
- gap: var(--m-space-1);
186
- min-width: 0;
187
- }
188
-
189
- .m-page-header__breadcrumb {
190
- margin: 0 0 var(--m-space-1);
191
- }
192
-
193
- .m-page-header__heading {
194
- align-items: center;
195
- display: flex;
196
- flex-wrap: wrap;
197
- gap: var(--m-space-2);
198
- min-width: 0;
199
- }
200
-
201
- .m-page-header__title {
202
- color: var(--m-color-text);
203
- font-family: var(--m-font-sans);
204
- font-size: var(--m-font-size-xl);
205
- font-weight: 600;
206
- letter-spacing: -0.01em;
207
- line-height: 1.4;
208
- margin: 0;
209
- }
210
-
211
- .m-page-header__tags {
212
- align-items: center;
213
- display: inline-flex;
214
- flex-wrap: wrap;
215
- gap: var(--m-space-2);
216
- }
217
-
218
- .m-page-header__description {
219
- color: var(--m-color-text-muted);
220
- font-size: var(--m-font-size-md);
221
- line-height: 1.55;
222
- margin: 0;
223
- max-width: 65ch;
224
- }
225
-
226
- .m-page-header__actions {
227
- align-items: center;
228
- display: flex;
229
- flex-shrink: 0;
230
- flex-wrap: wrap;
231
- gap: var(--m-space-2);
232
- }
233
-
234
- .m-page-section {
235
- box-sizing: border-box;
236
- width: 100%;
237
- }
238
-
239
- .m-page-section__header {
240
- align-items: center;
241
- display: flex;
242
- flex-wrap: wrap;
243
- gap: var(--m-space-3);
244
- justify-content: space-between;
245
- margin: 0 0 var(--m-space-3);
246
- }
247
-
248
- .m-page-section__title {
249
- color: var(--m-color-text);
250
- font-size: var(--m-font-size-md);
251
- font-weight: 600;
252
- line-height: 1.4;
253
- margin: 0;
254
- }
255
-
256
- .m-page-section__actions {
257
- align-items: center;
258
- display: flex;
259
- flex-wrap: wrap;
260
- gap: var(--m-space-2);
261
- }
262
-
263
- .m-page-section--muted {
264
- background: var(--m-color-fill-light);
265
- padding: var(--m-space-4);
266
- }
267
-
268
- .m-page-section--form .m-page-section__header {
269
- margin: 0;
270
- width: 100%;
271
- }
272
-
273
- .m-page-section--actions {
274
- border-top: var(--m-border-width) solid var(--m-color-border);
275
- margin-top: var(--m-space-4);
276
- padding-top: var(--m-space-4);
277
- }
278
-
279
- .m-page-stat__body {
280
- align-items: flex-start;
281
- display: flex;
282
- gap: var(--m-space-3);
283
- justify-content: space-between;
284
- }
285
-
286
- .m-page-stat__content {
287
- display: grid;
288
- gap: var(--m-space-1);
289
- justify-items: start;
290
- min-width: 0;
291
- }
292
-
293
- .m-page-stat__label {
294
- color: var(--m-color-text-muted);
295
- font-size: var(--m-font-size-sm);
296
- line-height: 1.4;
297
- margin: 0;
298
- }
299
-
300
- .m-page-stat__value {
301
- --m-page-stat-value-size: var(--m-font-size-2xl);
302
- color: var(--m-color-text);
303
- font-family: var(--m-font-sans);
304
- font-size: var(--m-page-stat-value-size);
305
- font-variant-numeric: tabular-nums;
306
- font-weight: 600;
307
- letter-spacing: -0.01em;
308
- line-height: 1.25;
309
- margin: 0;
310
- }
311
-
312
- .m-page-stat__meta {
313
- align-items: center;
314
- display: flex;
315
- flex-wrap: wrap;
316
- gap: var(--m-space-2);
317
- }
318
-
319
- .m-page-stat__trend {
320
- align-items: center;
321
- display: inline-flex;
322
- font-size: var(--m-font-size-sm);
323
- font-weight: 500;
324
- gap: var(--m-space-1);
325
- line-height: 1.25;
326
- margin: 0;
327
- }
328
-
329
- .m-page-stat__trend .m-page-stat__trend-icon {
330
- height: var(--m-font-size-sm);
331
- width: var(--m-font-size-sm);
332
- }
333
-
334
- .m-page-stat__trend--primary {
335
- color: var(--m-color-primary);
336
- }
337
-
338
- .m-page-stat__trend--success {
339
- color: var(--m-color-success);
340
- }
341
-
342
- .m-page-stat__trend--warn {
343
- color: var(--m-color-warn);
344
- }
345
-
346
- .m-page-stat__trend--danger {
347
- color: var(--m-color-danger);
348
- }
349
-
350
- .m-page-stat__trend--secondary {
351
- color: var(--m-color-text-muted);
352
- }
353
-
354
- .m-page-stat__trend-label {
355
- color: var(--m-color-text-muted);
356
- font-size: var(--m-font-size-sm);
357
- }
358
-
359
- .m-page-stat__icon {
360
- align-items: center;
361
- color: var(--m-color-text-muted);
362
- display: inline-flex;
363
- flex-shrink: 0;
364
- justify-content: center;
365
- }
366
-
367
- .m-page-stat__icon :is(.m-icon, svg) {
368
- display: block;
369
- height: 1.25rem;
370
- width: 1.25rem;
371
- }
372
-
373
- .m-page-stat--compact .m-page-stat__value {
374
- --m-page-stat-value-size: var(--m-font-size-xl);
375
- }
376
-
377
- .m-page-stat--compact .m-page-stat__icon :is(.m-icon, svg) {
378
- height: 1rem;
379
- width: 1rem;
380
- }
381
-
382
- .m-page-stat--plain {
383
- padding: var(--m-space-2) 0;
384
- }
385
-
386
- .m-page-stat--inline .m-page-stat__content {
387
- align-items: baseline;
388
- display: flex;
389
- flex-wrap: wrap;
390
- gap: var(--m-space-2) var(--m-space-3);
391
- row-gap: var(--m-space-1);
392
- }
393
-
394
- .m-page-stat--inline .m-page-stat__label {
395
- margin: 0;
396
- }
397
-
398
- .m-page-stat--inline .m-page-stat__meta {
399
- flex-basis: 100%;
400
- }
401
-
402
- .m-page-placeholder {
403
- box-sizing: border-box;
404
- display: flex;
405
- min-height: var(--m-page-placeholder-min-height, 12rem);
406
- width: 100%;
407
- }
408
-
409
- .m-page-placeholder__empty {
410
- flex: 1;
411
- min-width: 0;
412
- }
1
+ /* —— Layout: Page ——
2
+ * Surface contract (kept in sync with Card / Table / controls):
3
+ * - Page chrome stays flat: whitespace and type hierarchy, not a second kit.
4
+ * - Recessive bands (filled filters, muted section) = Table-header fill, no radius.
5
+ * - Elevated surfaces reuse Card: surface + 1px border + radius-lg, same padding.
6
+ * - Never invent glow, dashed frames, or pill chips on Ops page chrome.
7
+ */
8
+ .m-page-content {
9
+ --m-page-content-body-lead: var(--m-space-2);
10
+ --m-page-content-tools-pull: var(--m-space-2);
11
+ box-sizing: border-box;
12
+ display: flex;
13
+ flex-direction: column;
14
+ font-family: var(--m-font-sans);
15
+ gap: var(--m-page-content-gap, var(--m-space-4));
16
+ padding: var(--m-page-content-padding, var(--m-space-6));
17
+ width: 100%;
18
+ }
19
+
20
+ .m-page-content > .m-page-header + :is(.m-page-filters, .m-page-toolbar) {
21
+ margin-top: calc(var(--m-space-1) - var(--m-page-content-gap, var(--m-space-4)));
22
+ }
23
+
24
+ .m-page-content > .m-page-filters + .m-page-toolbar {
25
+ margin-top: calc(var(--m-page-content-tools-pull) * -1);
26
+ }
27
+
28
+ .m-page-content
29
+ > :is(.m-page-filters, .m-page-toolbar)
30
+ + :is(.m-table, .m-grid, .m-page-section:not(.m-page-section--actions)) {
31
+ margin-top: var(--m-page-content-body-lead);
32
+ }
33
+
34
+ .m-page-content--compact {
35
+ --m-page-content-body-lead: var(--m-space-1);
36
+ --m-page-content-gap: var(--m-space-3);
37
+ --m-page-content-padding: var(--m-space-4);
38
+ --m-page-content-tools-pull: var(--m-space-1);
39
+ }
40
+
41
+ .m-page-content--spacious {
42
+ --m-page-content-body-lead: var(--m-space-4);
43
+ --m-page-content-gap: var(--m-space-6);
44
+ --m-page-content-tools-pull: var(--m-space-3);
45
+ }
46
+
47
+ .m-page-content--narrow {
48
+ max-width: 42rem;
49
+ }
50
+
51
+ /* Full-viewport main lists only: fill LayoutContent; pair with MTable fill. Skip for embedded/short pages. */
52
+ .m-page-content--fill {
53
+ flex: 1 1 auto;
54
+ height: 100%;
55
+ min-height: 0;
56
+ overflow: hidden;
57
+ }
58
+
59
+ .m-page-content--fill
60
+ > :is(.m-page-header, .m-page-filters, .m-page-filter-chips, .m-page-toolbar, .m-pagination) {
61
+ flex-shrink: 0;
62
+ }
63
+
64
+ .m-page-content--fill > .m-table {
65
+ flex: 1 1 auto;
66
+ min-height: 0;
67
+ }
68
+
69
+ .m-page-content--bands-uniform {
70
+ --m-page-content-body-lead: 0;
71
+ --m-page-content-tools-pull: 0;
72
+ }
73
+
74
+ .m-page-content--bands-uniform > .m-page-header + :is(.m-page-filters, .m-page-toolbar) {
75
+ margin-top: 0;
76
+ }
77
+
78
+ .m-page-content--bands-uniform
79
+ > :is(.m-page-filters, .m-page-toolbar)
80
+ + :is(.m-table, .m-grid, .m-page-section:not(.m-page-section--actions)) {
81
+ margin-top: 0;
82
+ }
83
+
84
+ .m-page-filters {
85
+ box-sizing: border-box;
86
+ display: grid;
87
+ gap: var(--m-space-3);
88
+ width: 100%;
89
+ }
90
+
91
+ .m-page-filters__row {
92
+ align-items: center;
93
+ display: flex;
94
+ flex-wrap: wrap;
95
+ gap: var(--m-space-2) var(--m-space-3);
96
+ width: 100%;
97
+ }
98
+
99
+ .m-page-filters__controls {
100
+ flex: 1 1 12rem;
101
+ min-width: 0;
102
+ }
103
+
104
+ .m-page-filters__trailing {
105
+ align-items: center;
106
+ display: flex;
107
+ flex-shrink: 0;
108
+ flex-wrap: wrap;
109
+ gap: var(--m-space-2);
110
+ margin-inline-start: auto;
111
+ }
112
+
113
+ .m-page-filters__actions {
114
+ align-items: center;
115
+ display: flex;
116
+ flex-wrap: wrap;
117
+ gap: var(--m-space-2);
118
+ }
119
+
120
+ .m-page-filters__toggle {
121
+ flex-shrink: 0;
122
+ }
123
+
124
+ .m-page-filters__advanced {
125
+ border-block-start: 1px solid var(--m-color-border);
126
+ padding-block-start: var(--m-space-3);
127
+ width: 100%;
128
+ }
129
+
130
+ .m-page-filters--filled {
131
+ background: var(--m-color-fill-light);
132
+ padding: var(--m-space-3) var(--m-space-4);
133
+ }
134
+
135
+ .m-page-filters--filled .m-page-filters__advanced {
136
+ border-block-start-color: color-mix(in srgb, var(--m-color-border) 70%, transparent);
137
+ padding-block-start: var(--m-space-3);
138
+ }
139
+
140
+ .m-page-filter-chips {
141
+ align-items: center;
142
+ display: flex;
143
+ flex-wrap: wrap;
144
+ gap: var(--m-space-2);
145
+ width: 100%;
146
+ }
147
+
148
+ .m-page-filter-chips__label {
149
+ color: var(--m-color-text-muted);
150
+ flex-shrink: 0;
151
+ font-size: var(--m-font-size-sm);
152
+ line-height: 1.4;
153
+ }
154
+
155
+ .m-page-filter-chips__items {
156
+ align-items: center;
157
+ display: flex;
158
+ flex: 1 1 auto;
159
+ flex-wrap: wrap;
160
+ gap: var(--m-space-2);
161
+ min-width: 0;
162
+ }
163
+
164
+ .m-page-toolbar {
165
+ align-items: center;
166
+ box-sizing: border-box;
167
+ display: flex;
168
+ flex-wrap: wrap;
169
+ gap: var(--m-space-3);
170
+ justify-content: space-between;
171
+ width: 100%;
172
+ }
173
+
174
+ .m-page-toolbar__title {
175
+ color: var(--m-color-text);
176
+ font-family: var(--m-font-sans);
177
+ font-size: var(--m-font-size-md);
178
+ font-weight: 600;
179
+ line-height: 1.4;
180
+ margin: 0;
181
+ }
182
+
183
+ .m-page-toolbar__actions {
184
+ align-items: center;
185
+ display: flex;
186
+ flex-wrap: wrap;
187
+ gap: var(--m-space-2);
188
+ margin-left: auto;
189
+ }
190
+
191
+ .m-page-header {
192
+ align-items: flex-start;
193
+ box-sizing: border-box;
194
+ display: flex;
195
+ flex-wrap: wrap;
196
+ gap: var(--m-space-3);
197
+ justify-content: space-between;
198
+ width: 100%;
199
+ }
200
+
201
+ .m-page-header__main {
202
+ display: grid;
203
+ gap: var(--m-space-1);
204
+ min-width: 0;
205
+ }
206
+
207
+ .m-page-header__breadcrumb {
208
+ margin: 0 0 var(--m-space-1);
209
+ }
210
+
211
+ .m-page-header__heading {
212
+ align-items: center;
213
+ display: flex;
214
+ flex-wrap: wrap;
215
+ gap: var(--m-space-2);
216
+ min-width: 0;
217
+ }
218
+
219
+ .m-page-header__title {
220
+ color: var(--m-color-text);
221
+ font-family: var(--m-font-sans);
222
+ font-size: var(--m-font-size-xl);
223
+ font-weight: 600;
224
+ letter-spacing: -0.01em;
225
+ line-height: 1.4;
226
+ margin: 0;
227
+ }
228
+
229
+ .m-page-header__tags {
230
+ align-items: center;
231
+ display: inline-flex;
232
+ flex-wrap: wrap;
233
+ gap: var(--m-space-2);
234
+ }
235
+
236
+ .m-page-header__description {
237
+ color: var(--m-color-text-muted);
238
+ font-size: var(--m-font-size-md);
239
+ line-height: 1.55;
240
+ margin: 0;
241
+ max-width: 65ch;
242
+ }
243
+
244
+ .m-page-header__actions {
245
+ align-items: center;
246
+ display: flex;
247
+ flex-shrink: 0;
248
+ flex-wrap: wrap;
249
+ gap: var(--m-space-2);
250
+ }
251
+
252
+ .m-page-section {
253
+ box-sizing: border-box;
254
+ width: 100%;
255
+ }
256
+
257
+ .m-page-section__header {
258
+ align-items: center;
259
+ display: flex;
260
+ flex-wrap: wrap;
261
+ gap: var(--m-space-3);
262
+ justify-content: space-between;
263
+ margin: 0 0 var(--m-space-3);
264
+ }
265
+
266
+ .m-page-section__title {
267
+ color: var(--m-color-text);
268
+ font-size: var(--m-font-size-md);
269
+ font-weight: 600;
270
+ line-height: 1.4;
271
+ margin: 0;
272
+ }
273
+
274
+ .m-page-section__actions {
275
+ align-items: center;
276
+ display: flex;
277
+ flex-wrap: wrap;
278
+ gap: var(--m-space-2);
279
+ }
280
+
281
+ .m-page-section--muted {
282
+ background: var(--m-color-fill-light);
283
+ padding: var(--m-space-4);
284
+ }
285
+
286
+ .m-page-section--form .m-page-section__header {
287
+ margin: 0;
288
+ width: 100%;
289
+ }
290
+
291
+ .m-page-section--actions {
292
+ border-top: var(--m-border-width) solid var(--m-color-border);
293
+ margin-top: var(--m-space-4);
294
+ padding-top: var(--m-space-4);
295
+ }
296
+
297
+ .m-page-stat__body {
298
+ align-items: flex-start;
299
+ display: flex;
300
+ gap: var(--m-space-3);
301
+ justify-content: space-between;
302
+ }
303
+
304
+ .m-page-stat__content {
305
+ display: grid;
306
+ gap: var(--m-space-1);
307
+ justify-items: start;
308
+ min-width: 0;
309
+ }
310
+
311
+ .m-page-stat__label {
312
+ color: var(--m-color-text-muted);
313
+ font-size: var(--m-font-size-sm);
314
+ line-height: 1.4;
315
+ margin: 0;
316
+ }
317
+
318
+ .m-page-stat__value {
319
+ --m-page-stat-value-size: var(--m-font-size-2xl);
320
+ color: var(--m-color-text);
321
+ font-family: var(--m-font-sans);
322
+ font-size: var(--m-page-stat-value-size);
323
+ font-variant-numeric: tabular-nums;
324
+ font-weight: 600;
325
+ letter-spacing: -0.01em;
326
+ line-height: 1.25;
327
+ margin: 0;
328
+ }
329
+
330
+ .m-page-stat__meta {
331
+ align-items: center;
332
+ display: flex;
333
+ flex-wrap: wrap;
334
+ gap: var(--m-space-2);
335
+ }
336
+
337
+ .m-page-stat__trend {
338
+ align-items: center;
339
+ display: inline-flex;
340
+ font-size: var(--m-font-size-sm);
341
+ font-weight: 500;
342
+ gap: var(--m-space-1);
343
+ line-height: 1.25;
344
+ margin: 0;
345
+ }
346
+
347
+ .m-page-stat__trend .m-page-stat__trend-icon {
348
+ height: var(--m-font-size-sm);
349
+ width: var(--m-font-size-sm);
350
+ }
351
+
352
+ .m-page-stat__trend--primary {
353
+ color: var(--m-color-primary);
354
+ }
355
+
356
+ .m-page-stat__trend--success {
357
+ color: var(--m-color-success);
358
+ }
359
+
360
+ .m-page-stat__trend--warn {
361
+ color: var(--m-color-warn);
362
+ }
363
+
364
+ .m-page-stat__trend--danger {
365
+ color: var(--m-color-danger);
366
+ }
367
+
368
+ .m-page-stat__trend--secondary {
369
+ color: var(--m-color-text-muted);
370
+ }
371
+
372
+ .m-page-stat__trend-label {
373
+ color: var(--m-color-text-muted);
374
+ font-size: var(--m-font-size-sm);
375
+ }
376
+
377
+ .m-page-stat__icon {
378
+ align-items: center;
379
+ color: var(--m-color-text-muted);
380
+ display: inline-flex;
381
+ flex-shrink: 0;
382
+ justify-content: center;
383
+ }
384
+
385
+ .m-page-stat__icon :is(.m-icon, svg) {
386
+ display: block;
387
+ height: 1.25rem;
388
+ width: 1.25rem;
389
+ }
390
+
391
+ .m-page-stat--compact .m-page-stat__value {
392
+ --m-page-stat-value-size: var(--m-font-size-xl);
393
+ }
394
+
395
+ .m-page-stat--compact .m-page-stat__icon :is(.m-icon, svg) {
396
+ height: 1rem;
397
+ width: 1rem;
398
+ }
399
+
400
+ .m-page-stat--plain {
401
+ padding: var(--m-space-2) 0;
402
+ }
403
+
404
+ .m-page-stat--inline .m-page-stat__content {
405
+ align-items: baseline;
406
+ display: flex;
407
+ flex-wrap: wrap;
408
+ gap: var(--m-space-2) var(--m-space-3);
409
+ row-gap: var(--m-space-1);
410
+ }
411
+
412
+ .m-page-stat--inline .m-page-stat__label {
413
+ margin: 0;
414
+ }
415
+
416
+ .m-page-stat--inline .m-page-stat__meta {
417
+ flex-basis: 100%;
418
+ }
419
+
420
+ .m-page-placeholder {
421
+ box-sizing: border-box;
422
+ display: flex;
423
+ min-height: var(--m-page-placeholder-min-height, 12rem);
424
+ width: 100%;
425
+ }
426
+
427
+ .m-page-placeholder__empty {
428
+ flex: 1;
429
+ min-width: 0;
430
+ }