morya-ui 0.3.3 → 0.3.5

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 (260) hide show
  1. package/CHANGELOG.md +530 -516
  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 +2134 -2134
  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/PageContent.vue.d.ts +1 -0
  71. package/dist/components/Page/PageContent.vue.d.ts.map +1 -1
  72. package/dist/components/Page/PageFilters.vue.d.ts +5 -3
  73. package/dist/components/Page/PageFilters.vue.d.ts.map +1 -1
  74. package/dist/components/Page/styles.css +430 -394
  75. package/dist/components/Page/types.d.ts +7 -2
  76. package/dist/components/Page/types.d.ts.map +1 -1
  77. package/dist/components/Pagination/styles.css +105 -105
  78. package/dist/components/Popover/styles.css +92 -92
  79. package/dist/components/Result/styles.css +146 -146
  80. package/dist/components/Scrollbar/styles.css +131 -131
  81. package/dist/components/Select/styles.css +192 -192
  82. package/dist/components/SelectButton/styles.css +105 -105
  83. package/dist/components/Sidebar/styles.css +74 -74
  84. package/dist/components/Slider/styles.css +211 -211
  85. package/dist/components/SplitButton/styles.css +216 -216
  86. package/dist/components/Status/styles.css +191 -191
  87. package/dist/components/Stepper/styles.css +135 -135
  88. package/dist/components/Switch/styles.css +129 -129
  89. package/dist/components/Table/Table.vue.d.ts +1 -0
  90. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  91. package/dist/components/Table/styles.css +28 -0
  92. package/dist/components/Table/types.d.ts +6 -0
  93. package/dist/components/Table/types.d.ts.map +1 -1
  94. package/dist/components/Tabs/styles.css +131 -131
  95. package/dist/components/Terminal/styles.css +74 -74
  96. package/dist/components/Textarea/styles.css +126 -126
  97. package/dist/components/TieredMenu/styles.css +125 -125
  98. package/dist/components/Timeline/styles.css +159 -159
  99. package/dist/components/TreeSelect/styles.css +161 -161
  100. package/dist/components/TreeTable/styles.css +97 -97
  101. package/dist/components/VirtualScroller/styles.css +27 -27
  102. package/dist/{config-CapALqt3.js → config-De8ueCY-.js} +2 -0
  103. package/dist/config-provider/index.js +1 -1
  104. package/dist/config-provider/style.css +2472 -2472
  105. package/dist/confirm-dialog/index.js +4 -4
  106. package/dist/confirm-dialog/style.css +2555 -2555
  107. package/dist/confirm-popup/index.js +4 -4
  108. package/dist/confirm-popup/style.css +2145 -2145
  109. package/dist/context-menu/index.js +3 -3
  110. package/dist/context-menu/style.css +1417 -1417
  111. package/dist/data-view/index.js +3 -3
  112. package/dist/data-view/style.css +1631 -1631
  113. package/dist/date-picker/index.js +3 -3
  114. package/dist/date-picker/style.css +1483 -1483
  115. package/dist/dialog/index.js +4 -4
  116. package/dist/dialog/style.css +2531 -2531
  117. package/dist/divider/style.css +1148 -1148
  118. package/dist/dock/style.css +1232 -1232
  119. package/dist/drawer/index.js +3 -3
  120. package/dist/drawer/style.css +1482 -1482
  121. package/dist/dropdown/index.js +4 -4
  122. package/dist/dropdown/style.css +1409 -1409
  123. package/dist/empty/index.js +1 -1
  124. package/dist/empty/style.css +1294 -1294
  125. package/dist/fieldset/style.css +1148 -1148
  126. package/dist/file-upload/index.js +1 -1
  127. package/dist/file-upload/style.css +1507 -1507
  128. package/dist/flex/index.js +2 -2
  129. package/dist/flex/style.css +1148 -1148
  130. package/dist/float-label/style.css +1148 -1148
  131. package/dist/fluid/style.css +1148 -1148
  132. package/dist/form/index.js +1 -1
  133. package/dist/form/style.css +1264 -1264
  134. package/dist/gallery/index.js +1 -1
  135. package/dist/gallery/style.css +1379 -1379
  136. package/dist/grid/index.js +1 -1
  137. package/dist/grid/style.css +1148 -1148
  138. package/dist/icon/style.css +1148 -1148
  139. package/dist/icon-field/style.css +1504 -1504
  140. package/dist/index.js +1235 -1215
  141. package/dist/inplace/style.css +1148 -1148
  142. package/dist/input/index.js +2 -2
  143. package/dist/input/style.css +1504 -1504
  144. package/dist/input-color/index.js +2 -2
  145. package/dist/input-color/style.css +1279 -1279
  146. package/dist/input-group/style.css +1148 -1148
  147. package/dist/input-number/index.js +2 -2
  148. package/dist/input-number/style.css +1409 -1409
  149. package/dist/input-otp/index.js +2 -2
  150. package/dist/input-otp/style.css +1148 -1148
  151. package/dist/input-password/index.js +2 -2
  152. package/dist/input-password/style.css +1326 -1326
  153. package/dist/input-tags/index.js +2 -2
  154. package/dist/input-tags/style.css +1260 -1260
  155. package/dist/knob/style.css +1148 -1148
  156. package/dist/label/style.css +1148 -1148
  157. package/dist/layout/index.js +1 -1
  158. package/dist/layout/style.css +1712 -1712
  159. package/dist/listbox/index.js +2 -2
  160. package/dist/listbox/style.css +1306 -1306
  161. package/dist/loading/index.js +1 -1
  162. package/dist/loading/style.css +1528 -1528
  163. package/dist/locale/en-US.d.ts.map +1 -1
  164. package/dist/locale/types.d.ts +4 -0
  165. package/dist/locale/types.d.ts.map +1 -1
  166. package/dist/locale/zh-CN.d.ts.map +1 -1
  167. package/dist/{locale-Bzm2nbEp.js → locale-xavS6-Hw.js} +1 -1
  168. package/dist/mega-menu/index.js +3 -3
  169. package/dist/mega-menu/style.css +1245 -1245
  170. package/dist/menu/index.js +4 -4
  171. package/dist/menu/style.css +2001 -2001
  172. package/dist/menubar/index.js +3 -3
  173. package/dist/menubar/style.css +1423 -1423
  174. package/dist/message/index.js +3 -3
  175. package/dist/message/style.css +1398 -1398
  176. package/dist/meter-group/style.css +1199 -1199
  177. package/dist/order-list/index.js +1 -1
  178. package/dist/order-list/style.css +1148 -1148
  179. package/dist/page/index.js +70 -54
  180. package/dist/page/style.css +2803 -2767
  181. package/dist/pagination/index.js +1 -1
  182. package/dist/pagination/style.css +1445 -1445
  183. package/dist/panel/index.js +1 -1
  184. package/dist/panel/style.css +1148 -1148
  185. package/dist/pick-list/index.js +1 -1
  186. package/dist/pick-list/style.css +1148 -1148
  187. package/dist/popover/index.js +1 -1
  188. package/dist/popover/style.css +1242 -1242
  189. package/dist/progress-bar/style.css +1148 -1148
  190. package/dist/progress-spinner/index.js +1 -1
  191. package/dist/progress-spinner/style.css +1148 -1148
  192. package/dist/radio/index.js +1 -1
  193. package/dist/radio/style.css +1148 -1148
  194. package/dist/rating/index.js +2 -2
  195. package/dist/rating/style.css +1148 -1148
  196. package/dist/result/index.js +1 -1
  197. package/dist/result/style.css +1294 -1294
  198. package/dist/scroll-top/index.js +2 -2
  199. package/dist/scroll-top/style.css +1279 -1279
  200. package/dist/scrollbar/style.css +1281 -1281
  201. package/dist/select/index.js +1 -1
  202. package/dist/select/style.css +1901 -1901
  203. package/dist/select-button/index.js +1 -1
  204. package/dist/select-button/style.css +1255 -1255
  205. package/dist/shared/gap.d.ts +4 -1
  206. package/dist/shared/gap.d.ts.map +1 -1
  207. package/dist/shared/styles/control-affix-icon.css +110 -110
  208. package/dist/shared/styles/control-suffix.css +118 -118
  209. package/dist/shared/styles/select-overlay.css +175 -175
  210. package/dist/sidebar/index.js +1 -1
  211. package/dist/sidebar/style.css +1222 -1222
  212. package/dist/skeleton/style.css +1148 -1148
  213. package/dist/slider/index.js +2 -2
  214. package/dist/slider/style.css +1361 -1361
  215. package/dist/space/index.js +2 -2
  216. package/dist/space/style.css +1148 -1148
  217. package/dist/speed-dial/index.js +3 -3
  218. package/dist/speed-dial/style.css +1148 -1148
  219. package/dist/split-button/index.js +3 -3
  220. package/dist/split-button/style.css +2326 -2326
  221. package/dist/splitter/index.js +1 -1
  222. package/dist/splitter/style.css +1148 -1148
  223. package/dist/status/index.js +1 -1
  224. package/dist/status/style.css +1339 -1339
  225. package/dist/stepper/style.css +1283 -1283
  226. package/dist/styles/base.css +790 -790
  227. package/dist/styles.css +1 -1
  228. package/dist/switch/index.js +1 -1
  229. package/dist/switch/style.css +1279 -1279
  230. package/dist/table/index.js +249 -244
  231. package/dist/table/style.css +1840 -1812
  232. package/dist/tabs/index.js +1 -1
  233. package/dist/tabs/style.css +1410 -1410
  234. package/dist/tag/index.js +2 -2
  235. package/dist/tag/style.css +1148 -1148
  236. package/dist/terminal/index.js +1 -1
  237. package/dist/terminal/style.css +1224 -1224
  238. package/dist/textarea/index.js +2 -2
  239. package/dist/textarea/style.css +1274 -1274
  240. package/dist/theme/styles.css +358 -358
  241. package/dist/tiered-menu/index.js +3 -3
  242. package/dist/tiered-menu/style.css +1404 -1404
  243. package/dist/timeline/style.css +1438 -1438
  244. package/dist/toast/index.js +3 -3
  245. package/dist/toast/style.css +1148 -1148
  246. package/dist/toggle-button/index.js +1 -1
  247. package/dist/toggle-button/style.css +1148 -1148
  248. package/dist/toolbar/style.css +1148 -1148
  249. package/dist/tooltip/index.js +1 -1
  250. package/dist/tooltip/style.css +1148 -1148
  251. package/dist/tree/index.js +2 -2
  252. package/dist/tree/style.css +1148 -1148
  253. package/dist/tree-select/index.js +4 -4
  254. package/dist/tree-select/style.css +1843 -1843
  255. package/dist/tree-table/index.js +1 -1
  256. package/dist/tree-table/style.css +1245 -1245
  257. package/dist/{useMotionTransition-95Y79FoL.js → useMotionTransition-tW0yeJsy.js} +1 -1
  258. package/dist/virtual-scroller/style.css +1309 -1309
  259. package/dist/{vnode-C7Y1SjKB.js → vnode-CmdNQlN7.js} +18 -23
  260. package/package.json +1 -1
@@ -1,394 +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
- .m-page-content--bands-uniform {
52
- --m-page-content-body-lead: 0;
53
- --m-page-content-tools-pull: 0;
54
- }
55
-
56
- .m-page-content--bands-uniform > .m-page-header + :is(.m-page-filters, .m-page-toolbar) {
57
- margin-top: 0;
58
- }
59
-
60
- .m-page-content--bands-uniform
61
- > :is(.m-page-filters, .m-page-toolbar)
62
- + :is(.m-table, .m-grid, .m-page-section:not(.m-page-section--actions)) {
63
- margin-top: 0;
64
- }
65
-
66
- .m-page-filters {
67
- box-sizing: border-box;
68
- display: grid;
69
- gap: var(--m-space-3);
70
- width: 100%;
71
- }
72
-
73
- .m-page-filters__row {
74
- align-items: flex-start;
75
- display: flex;
76
- flex-wrap: wrap;
77
- gap: var(--m-space-3);
78
- justify-content: space-between;
79
- width: 100%;
80
- }
81
-
82
- .m-page-filters__controls {
83
- flex: 1 1 auto;
84
- min-width: 0;
85
- }
86
-
87
- .m-page-filters__toggle {
88
- flex-shrink: 0;
89
- }
90
-
91
- .m-page-filters__advanced {
92
- width: 100%;
93
- }
94
-
95
- .m-page-filters--filled {
96
- background: var(--m-color-fill-light);
97
- padding: var(--m-space-3) var(--m-space-4);
98
- }
99
-
100
- .m-page-filters--filled .m-page-filters__advanced {
101
- padding-top: var(--m-space-1);
102
- }
103
-
104
- .m-page-filter-chips {
105
- align-items: center;
106
- display: flex;
107
- flex-wrap: wrap;
108
- gap: var(--m-space-2);
109
- width: 100%;
110
- }
111
-
112
- .m-page-filter-chips__label {
113
- color: var(--m-color-text-muted);
114
- flex-shrink: 0;
115
- font-size: var(--m-font-size-sm);
116
- line-height: 1.4;
117
- }
118
-
119
- .m-page-filter-chips__items {
120
- align-items: center;
121
- display: flex;
122
- flex: 1 1 auto;
123
- flex-wrap: wrap;
124
- gap: var(--m-space-2);
125
- min-width: 0;
126
- }
127
-
128
- .m-page-toolbar {
129
- align-items: center;
130
- box-sizing: border-box;
131
- display: flex;
132
- flex-wrap: wrap;
133
- gap: var(--m-space-3);
134
- justify-content: space-between;
135
- width: 100%;
136
- }
137
-
138
- .m-page-toolbar__title {
139
- color: var(--m-color-text);
140
- font-family: var(--m-font-sans);
141
- font-size: var(--m-font-size-md);
142
- font-weight: 600;
143
- line-height: 1.4;
144
- margin: 0;
145
- }
146
-
147
- .m-page-toolbar__actions {
148
- align-items: center;
149
- display: flex;
150
- flex-wrap: wrap;
151
- gap: var(--m-space-2);
152
- margin-left: auto;
153
- }
154
-
155
- .m-page-header {
156
- align-items: flex-start;
157
- box-sizing: border-box;
158
- display: flex;
159
- flex-wrap: wrap;
160
- gap: var(--m-space-3);
161
- justify-content: space-between;
162
- width: 100%;
163
- }
164
-
165
- .m-page-header__main {
166
- display: grid;
167
- gap: var(--m-space-1);
168
- min-width: 0;
169
- }
170
-
171
- .m-page-header__breadcrumb {
172
- margin: 0 0 var(--m-space-1);
173
- }
174
-
175
- .m-page-header__heading {
176
- align-items: center;
177
- display: flex;
178
- flex-wrap: wrap;
179
- gap: var(--m-space-2);
180
- min-width: 0;
181
- }
182
-
183
- .m-page-header__title {
184
- color: var(--m-color-text);
185
- font-family: var(--m-font-sans);
186
- font-size: var(--m-font-size-xl);
187
- font-weight: 600;
188
- letter-spacing: -0.01em;
189
- line-height: 1.4;
190
- margin: 0;
191
- }
192
-
193
- .m-page-header__tags {
194
- align-items: center;
195
- display: inline-flex;
196
- flex-wrap: wrap;
197
- gap: var(--m-space-2);
198
- }
199
-
200
- .m-page-header__description {
201
- color: var(--m-color-text-muted);
202
- font-size: var(--m-font-size-md);
203
- line-height: 1.55;
204
- margin: 0;
205
- max-width: 65ch;
206
- }
207
-
208
- .m-page-header__actions {
209
- align-items: center;
210
- display: flex;
211
- flex-shrink: 0;
212
- flex-wrap: wrap;
213
- gap: var(--m-space-2);
214
- }
215
-
216
- .m-page-section {
217
- box-sizing: border-box;
218
- width: 100%;
219
- }
220
-
221
- .m-page-section__header {
222
- align-items: center;
223
- display: flex;
224
- flex-wrap: wrap;
225
- gap: var(--m-space-3);
226
- justify-content: space-between;
227
- margin: 0 0 var(--m-space-3);
228
- }
229
-
230
- .m-page-section__title {
231
- color: var(--m-color-text);
232
- font-size: var(--m-font-size-md);
233
- font-weight: 600;
234
- line-height: 1.4;
235
- margin: 0;
236
- }
237
-
238
- .m-page-section__actions {
239
- align-items: center;
240
- display: flex;
241
- flex-wrap: wrap;
242
- gap: var(--m-space-2);
243
- }
244
-
245
- .m-page-section--muted {
246
- background: var(--m-color-fill-light);
247
- padding: var(--m-space-4);
248
- }
249
-
250
- .m-page-section--form .m-page-section__header {
251
- margin: 0;
252
- width: 100%;
253
- }
254
-
255
- .m-page-section--actions {
256
- border-top: var(--m-border-width) solid var(--m-color-border);
257
- margin-top: var(--m-space-4);
258
- padding-top: var(--m-space-4);
259
- }
260
-
261
- .m-page-stat__body {
262
- align-items: flex-start;
263
- display: flex;
264
- gap: var(--m-space-3);
265
- justify-content: space-between;
266
- }
267
-
268
- .m-page-stat__content {
269
- display: grid;
270
- gap: var(--m-space-1);
271
- justify-items: start;
272
- min-width: 0;
273
- }
274
-
275
- .m-page-stat__label {
276
- color: var(--m-color-text-muted);
277
- font-size: var(--m-font-size-sm);
278
- line-height: 1.4;
279
- margin: 0;
280
- }
281
-
282
- .m-page-stat__value {
283
- --m-page-stat-value-size: var(--m-font-size-2xl);
284
- color: var(--m-color-text);
285
- font-family: var(--m-font-sans);
286
- font-size: var(--m-page-stat-value-size);
287
- font-variant-numeric: tabular-nums;
288
- font-weight: 600;
289
- letter-spacing: -0.01em;
290
- line-height: 1.25;
291
- margin: 0;
292
- }
293
-
294
- .m-page-stat__meta {
295
- align-items: center;
296
- display: flex;
297
- flex-wrap: wrap;
298
- gap: var(--m-space-2);
299
- }
300
-
301
- .m-page-stat__trend {
302
- align-items: center;
303
- display: inline-flex;
304
- font-size: var(--m-font-size-sm);
305
- font-weight: 500;
306
- gap: var(--m-space-1);
307
- line-height: 1.25;
308
- margin: 0;
309
- }
310
-
311
- .m-page-stat__trend .m-page-stat__trend-icon {
312
- height: var(--m-font-size-sm);
313
- width: var(--m-font-size-sm);
314
- }
315
-
316
- .m-page-stat__trend--primary {
317
- color: var(--m-color-primary);
318
- }
319
-
320
- .m-page-stat__trend--success {
321
- color: var(--m-color-success);
322
- }
323
-
324
- .m-page-stat__trend--warn {
325
- color: var(--m-color-warn);
326
- }
327
-
328
- .m-page-stat__trend--danger {
329
- color: var(--m-color-danger);
330
- }
331
-
332
- .m-page-stat__trend--secondary {
333
- color: var(--m-color-text-muted);
334
- }
335
-
336
- .m-page-stat__trend-label {
337
- color: var(--m-color-text-muted);
338
- font-size: var(--m-font-size-sm);
339
- }
340
-
341
- .m-page-stat__icon {
342
- align-items: center;
343
- color: var(--m-color-text-muted);
344
- display: inline-flex;
345
- flex-shrink: 0;
346
- justify-content: center;
347
- }
348
-
349
- .m-page-stat__icon :is(.m-icon, svg) {
350
- display: block;
351
- height: 1.25rem;
352
- width: 1.25rem;
353
- }
354
-
355
- .m-page-stat--compact .m-page-stat__value {
356
- --m-page-stat-value-size: var(--m-font-size-xl);
357
- }
358
-
359
- .m-page-stat--compact .m-page-stat__icon :is(.m-icon, svg) {
360
- height: 1rem;
361
- width: 1rem;
362
- }
363
-
364
- .m-page-stat--plain {
365
- padding: var(--m-space-2) 0;
366
- }
367
-
368
- .m-page-stat--inline .m-page-stat__content {
369
- align-items: baseline;
370
- display: flex;
371
- flex-wrap: wrap;
372
- gap: var(--m-space-2) var(--m-space-3);
373
- row-gap: var(--m-space-1);
374
- }
375
-
376
- .m-page-stat--inline .m-page-stat__label {
377
- margin: 0;
378
- }
379
-
380
- .m-page-stat--inline .m-page-stat__meta {
381
- flex-basis: 100%;
382
- }
383
-
384
- .m-page-placeholder {
385
- box-sizing: border-box;
386
- display: flex;
387
- min-height: var(--m-page-placeholder-min-height, 12rem);
388
- width: 100%;
389
- }
390
-
391
- .m-page-placeholder__empty {
392
- flex: 1;
393
- min-width: 0;
394
- }
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
+ }