morya-ui 0.4.4 → 0.4.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 (322) hide show
  1. package/CHANGELOG.md +811 -775
  2. package/LICENSE +21 -21
  3. package/README.md +156 -156
  4. package/README.zh-CN.md +156 -156
  5. package/dist/{Button-Bjsth0ct.js → Button-fKkfCnYv.js} +1 -1
  6. package/dist/{Checkbox-Bo26OGHP.js → Checkbox-BXC2mLNd.js} +1 -1
  7. package/dist/DatePicker-DcVjiS5d.js +848 -0
  8. package/dist/{Empty-rMhOPi79.js → Empty-By1qe-ew.js} +1 -1
  9. package/dist/{FlyoutSubmenu-C0id6-Sb.js → FlyoutSubmenu-C1n-fr6i.js} +1 -1
  10. package/dist/{Input-CxSTVp9E.js → Input-D2bee2LU.js} +2 -2
  11. package/dist/{Loading-D_qRwfKv.js → Loading-DE9Iaiao.js} +3 -3
  12. package/dist/Pagination-DpNOb0CS.js +178 -0
  13. package/dist/{Popover-D1uZ1N9Z.js → Popover-Bnz7KNZq.js} +2 -2
  14. package/dist/{ProgressSpinner-hmR23xpi.js → ProgressSpinner-vBXGvQ92.js} +1 -1
  15. package/dist/{Radio-CZAyelC_.js → Radio-BbznzRbr.js} +1 -1
  16. package/dist/{Segmented-BpdO7arR.js → Segmented-CMP3nBAP.js} +1 -1
  17. package/dist/{Select-CySmusHs.js → Select-q4X2ff_M.js} +3 -3
  18. package/dist/{Textarea-DskjTCcz.js → Textarea-DsFOAtPd.js} +2 -2
  19. package/dist/{Tooltip-DSfkflHp.js → Tooltip-5zRVTTVs.js} +2 -2
  20. package/dist/accordion/style.css +1206 -1205
  21. package/dist/affix/style.css +1206 -1205
  22. package/dist/alert/index.js +2 -2
  23. package/dist/alert/style.css +1206 -1205
  24. package/dist/anchor/style.css +1206 -1205
  25. package/dist/auto-complete/index.js +3 -3
  26. package/dist/auto-complete/style.css +1750 -1749
  27. package/dist/avatar/style.css +1319 -1318
  28. package/dist/badge/style.css +1372 -1371
  29. package/dist/block-ui/index.js +1 -1
  30. package/dist/block-ui/style.css +1206 -1205
  31. package/dist/breadcrumb/index.js +1 -1
  32. package/dist/breadcrumb/style.css +1206 -1205
  33. package/dist/button/index.js +1 -1
  34. package/dist/button/style.css +1910 -1909
  35. package/dist/calendar/index.js +3 -3
  36. package/dist/calendar/style.css +2081 -1880
  37. package/dist/card/style.css +1206 -1205
  38. package/dist/carousel/index.js +2 -2
  39. package/dist/carousel/style.css +2209 -2208
  40. package/dist/cascade-select/index.js +3 -3
  41. package/dist/cascade-select/style.css +1910 -1909
  42. package/dist/checkbox/index.js +1 -1
  43. package/dist/checkbox/style.css +1206 -1205
  44. package/dist/chip/index.js +1 -1
  45. package/dist/chip/style.css +1350 -1349
  46. package/dist/command-menu/index.js +3 -3
  47. package/dist/command-menu/style.css +1439 -1438
  48. package/dist/components/AutoComplete/styles.css +209 -209
  49. package/dist/components/Avatar/styles.css +113 -113
  50. package/dist/components/Badge/styles.css +164 -164
  51. package/dist/components/Button/styles.css +698 -698
  52. package/dist/components/Carousel/styles.css +302 -302
  53. package/dist/components/CascadeSelect/styles.css +168 -168
  54. package/dist/components/Chip/styles.css +144 -144
  55. package/dist/components/CommandMenu/styles.css +102 -102
  56. package/dist/components/ConfigProvider/styles.css +6 -6
  57. package/dist/components/ConfirmDialog/styles.css +24 -24
  58. package/dist/components/ConfirmPopup/styles.css +35 -35
  59. package/dist/components/ContextMenu/styles.css +138 -138
  60. package/dist/components/DatePicker/DatePicker.vue.d.ts +21 -0
  61. package/dist/components/DatePicker/DatePicker.vue.d.ts.map +1 -1
  62. package/dist/components/DatePicker/styles.css +653 -453
  63. package/dist/components/DatePicker/types.d.ts +20 -2
  64. package/dist/components/DatePicker/types.d.ts.map +1 -1
  65. package/dist/components/Dialog/styles.css +420 -420
  66. package/dist/components/Dock/styles.css +84 -84
  67. package/dist/components/Drawer/styles.css +346 -346
  68. package/dist/components/Dropdown/styles.css +135 -135
  69. package/dist/components/Empty/styles.css +146 -146
  70. package/dist/components/FileUpload/styles.css +359 -359
  71. package/dist/components/Form/Form.vue.d.ts.map +1 -1
  72. package/dist/components/Form/styles.css +125 -125
  73. package/dist/components/Gallery/styles.css +100 -100
  74. package/dist/components/Input/styles.css +392 -392
  75. package/dist/components/InputColor/styles.css +139 -139
  76. package/dist/components/InputNumber/styles.css +262 -262
  77. package/dist/components/InputPassword/styles.css +189 -189
  78. package/dist/components/InputTags/styles.css +121 -121
  79. package/dist/components/Layout/styles.css +433 -433
  80. package/dist/components/List/styles.css +229 -229
  81. package/dist/components/Listbox/styles.css +130 -130
  82. package/dist/components/Loading/styles.css +378 -378
  83. package/dist/components/MegaMenu/styles.css +97 -97
  84. package/dist/components/Menu/styles.css +565 -565
  85. package/dist/components/Menubar/styles.css +144 -144
  86. package/dist/components/Message/styles.css +248 -248
  87. package/dist/components/MeterGroup/styles.css +49 -49
  88. package/dist/components/OrderList/OrderList.vue.d.ts +13 -7
  89. package/dist/components/OrderList/OrderList.vue.d.ts.map +1 -1
  90. package/dist/components/OrderList/styles.css +80 -7
  91. package/dist/components/OrderList/types.d.ts +20 -3
  92. package/dist/components/OrderList/types.d.ts.map +1 -1
  93. package/dist/components/Page/styles.css +430 -430
  94. package/dist/components/Pagination/Pagination.vue.d.ts.map +1 -1
  95. package/dist/components/Pagination/styles.css +97 -124
  96. package/dist/components/Popover/styles.css +92 -92
  97. package/dist/components/Result/styles.css +146 -146
  98. package/dist/components/Scrollbar/styles.css +131 -131
  99. package/dist/components/Select/styles.css +222 -222
  100. package/dist/components/SelectButton/styles.css +107 -107
  101. package/dist/components/Sidebar/styles.css +74 -74
  102. package/dist/components/Slider/styles.css +211 -211
  103. package/dist/components/SplitButton/styles.css +216 -216
  104. package/dist/components/Status/styles.css +190 -190
  105. package/dist/components/Stepper/styles.css +152 -152
  106. package/dist/components/Switch/styles.css +129 -129
  107. package/dist/components/Table/Table.vue.d.ts +37 -282
  108. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  109. package/dist/components/Table/core/tree.d.ts +4 -0
  110. package/dist/components/Table/core/tree.d.ts.map +1 -1
  111. package/dist/components/Table/core/utils.d.ts +11 -3
  112. package/dist/components/Table/core/utils.d.ts.map +1 -1
  113. package/dist/components/Table/index.d.ts +1 -1
  114. package/dist/components/Table/index.d.ts.map +1 -1
  115. package/dist/components/Table/render/TableColumnSetting.vue.d.ts +25 -0
  116. package/dist/components/Table/render/TableColumnSetting.vue.d.ts.map +1 -0
  117. package/dist/components/Table/render/TableTbody.vue.d.ts +16 -0
  118. package/dist/components/Table/render/TableTbody.vue.d.ts.map +1 -1
  119. package/dist/components/Table/render/TableThead.vue.d.ts +8 -0
  120. package/dist/components/Table/render/TableThead.vue.d.ts.map +1 -1
  121. package/dist/components/Table/state/internal.d.ts +1 -1
  122. package/dist/components/Table/state/internal.d.ts.map +1 -1
  123. package/dist/components/Table/state/usePageItems.d.ts +1 -3
  124. package/dist/components/Table/state/usePageItems.d.ts.map +1 -1
  125. package/dist/components/Table/state/useVirtualRows.d.ts +20 -2
  126. package/dist/components/Table/state/useVirtualRows.d.ts.map +1 -1
  127. package/dist/components/Table/styles.css +95 -0
  128. package/dist/components/Table/types.d.ts +77 -12
  129. package/dist/components/Table/types.d.ts.map +1 -1
  130. package/dist/components/Tabs/styles.css +165 -165
  131. package/dist/components/Terminal/styles.css +75 -75
  132. package/dist/components/Textarea/styles.css +146 -146
  133. package/dist/components/TieredMenu/styles.css +125 -125
  134. package/dist/components/Timeline/styles.css +157 -157
  135. package/dist/components/TreeSelect/styles.css +172 -172
  136. package/dist/components/VirtualScroller/styles.css +27 -27
  137. package/dist/{config-BEpyhJi3.js → config-Cd20zAyW.js} +11 -1
  138. package/dist/config-provider/index.js +1 -1
  139. package/dist/config-provider/style.css +2302 -2301
  140. package/dist/confirm-dialog/index.js +4 -4
  141. package/dist/confirm-dialog/style.css +2348 -2347
  142. package/dist/confirm-popup/index.js +4 -4
  143. package/dist/confirm-popup/style.css +1939 -1938
  144. package/dist/context-menu/index.js +3 -3
  145. package/dist/context-menu/style.css +1475 -1474
  146. package/dist/data-view/index.js +3 -3
  147. package/dist/data-view/style.css +1681 -1707
  148. package/dist/date-picker/index.js +1 -1
  149. package/dist/date-picker/style.css +1991 -1658
  150. package/dist/date-picker/style.js +1 -0
  151. package/dist/descriptions/index.js +1 -1
  152. package/dist/descriptions/style.css +1206 -1205
  153. package/dist/dialog/index.js +4 -4
  154. package/dist/dialog/style.css +2324 -2323
  155. package/dist/divider/style.css +1206 -1205
  156. package/dist/dock/style.css +1290 -1289
  157. package/dist/drawer/index.js +3 -3
  158. package/dist/drawer/style.css +1552 -1551
  159. package/dist/dropdown/index.js +4 -4
  160. package/dist/dropdown/style.css +1472 -1471
  161. package/dist/empty/index.js +1 -1
  162. package/dist/empty/style.css +1352 -1351
  163. package/dist/fieldset/style.css +1206 -1205
  164. package/dist/file-upload/index.js +1 -1
  165. package/dist/file-upload/style.css +1565 -1564
  166. package/dist/flex/index.js +1 -1
  167. package/dist/flex/style.css +1206 -1205
  168. package/dist/float-label/style.css +1206 -1205
  169. package/dist/fluid/style.css +1206 -1205
  170. package/dist/form/index.js +1 -1
  171. package/dist/form/style.css +1333 -1332
  172. package/dist/gallery/index.js +1 -1
  173. package/dist/gallery/style.css +1437 -1436
  174. package/dist/grid/style.css +1206 -1205
  175. package/dist/icon/style.css +1206 -1205
  176. package/dist/icon-field/style.css +1598 -1597
  177. package/dist/image/index.js +1 -1
  178. package/dist/image/style.css +1206 -1205
  179. package/dist/index.d.ts +1 -1
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +4118 -3439
  182. package/dist/inplace/style.css +1206 -1205
  183. package/dist/input/index.js +1 -1
  184. package/dist/input/style.css +1723 -1722
  185. package/dist/input-color/index.js +2 -2
  186. package/dist/input-color/style.css +1347 -1346
  187. package/dist/input-group/style.css +1206 -1205
  188. package/dist/input-number/index.js +2 -2
  189. package/dist/input-number/style.css +1468 -1467
  190. package/dist/input-otp/index.js +2 -2
  191. package/dist/input-otp/style.css +1206 -1205
  192. package/dist/input-password/index.js +2 -2
  193. package/dist/input-password/style.css +1520 -1519
  194. package/dist/input-tags/index.js +2 -2
  195. package/dist/input-tags/style.css +1327 -1326
  196. package/dist/knob/style.css +1206 -1205
  197. package/dist/label/style.css +1206 -1205
  198. package/dist/layout/index.js +1 -1
  199. package/dist/layout/style.css +1770 -1769
  200. package/dist/list/index.js +4 -4
  201. package/dist/list/style.css +2061 -2087
  202. package/dist/listbox/index.js +2 -2
  203. package/dist/listbox/style.css +1498 -1497
  204. package/dist/loading/index.js +1 -1
  205. package/dist/loading/style.css +1586 -1585
  206. package/dist/locale/de-DE.d.ts.map +1 -1
  207. package/dist/locale/en-US.d.ts.map +1 -1
  208. package/dist/locale/es-ES.d.ts.map +1 -1
  209. package/dist/locale/fr-FR.d.ts.map +1 -1
  210. package/dist/locale/ja-JP.d.ts.map +1 -1
  211. package/dist/locale/ko-KR.d.ts.map +1 -1
  212. package/dist/locale/pt-BR.d.ts.map +1 -1
  213. package/dist/locale/ru-RU.d.ts.map +1 -1
  214. package/dist/locale/types.d.ts +18 -0
  215. package/dist/locale/types.d.ts.map +1 -1
  216. package/dist/locale/zh-CN.d.ts.map +1 -1
  217. package/dist/locale/zh-TW.d.ts.map +1 -1
  218. package/dist/{locale-CZddM-tH.js → locale-BcxMPufl.js} +1 -1
  219. package/dist/mega-menu/index.js +3 -3
  220. package/dist/mega-menu/style.css +1303 -1302
  221. package/dist/mentions/index.js +3 -3
  222. package/dist/mentions/style.css +1331 -1330
  223. package/dist/menu/index.js +4 -4
  224. package/dist/menu/style.css +2060 -2059
  225. package/dist/menubar/index.js +3 -3
  226. package/dist/menubar/style.css +1481 -1480
  227. package/dist/message/index.js +3 -3
  228. package/dist/message/style.css +1454 -1453
  229. package/dist/meter-group/style.css +1257 -1256
  230. package/dist/order-list/index.js +191 -101
  231. package/dist/order-list/style.css +1286 -1212
  232. package/dist/page/index.js +3 -3
  233. package/dist/page/style.css +2601 -2600
  234. package/dist/pagination/index.js +1 -1
  235. package/dist/pagination/style.css +1525 -1551
  236. package/dist/panel/index.js +1 -1
  237. package/dist/panel/style.css +1206 -1205
  238. package/dist/pick-list/index.js +1 -1
  239. package/dist/pick-list/style.css +1206 -1205
  240. package/dist/popover/index.js +1 -1
  241. package/dist/popover/style.css +1300 -1299
  242. package/dist/progress-bar/style.css +1206 -1205
  243. package/dist/progress-spinner/index.js +1 -1
  244. package/dist/progress-spinner/style.css +1206 -1205
  245. package/dist/qr-code/index.js +3 -3
  246. package/dist/qr-code/style.css +1904 -1903
  247. package/dist/radio/index.js +1 -1
  248. package/dist/radio/style.css +1206 -1205
  249. package/dist/rating/index.js +2 -2
  250. package/dist/rating/style.css +1206 -1205
  251. package/dist/result/index.js +1 -1
  252. package/dist/result/style.css +1352 -1351
  253. package/dist/scroll-top/index.js +2 -2
  254. package/dist/scroll-top/style.css +1337 -1336
  255. package/dist/scrollbar/style.css +1339 -1338
  256. package/dist/segmented/index.js +1 -1
  257. package/dist/segmented/style.css +1206 -1205
  258. package/dist/select/index.js +1 -1
  259. package/dist/select/style.css +2116 -2115
  260. package/dist/select-button/index.js +1 -1
  261. package/dist/select-button/style.css +1315 -1314
  262. package/dist/shared/styles/control-affix-icon.css +110 -110
  263. package/dist/shared/styles/control-suffix.css +118 -118
  264. package/dist/shared/styles/select-overlay.css +177 -177
  265. package/dist/sidebar/index.js +1 -1
  266. package/dist/sidebar/style.css +1280 -1279
  267. package/dist/skeleton/style.css +1206 -1205
  268. package/dist/slider/index.js +2 -2
  269. package/dist/slider/style.css +1419 -1418
  270. package/dist/space/index.js +1 -1
  271. package/dist/space/style.css +1206 -1205
  272. package/dist/speed-dial/index.js +3 -3
  273. package/dist/speed-dial/style.css +1206 -1205
  274. package/dist/split-button/index.js +3 -3
  275. package/dist/split-button/style.css +2120 -2119
  276. package/dist/splitter/index.js +1 -1
  277. package/dist/splitter/style.css +1206 -1205
  278. package/dist/statistic/style.css +1206 -1205
  279. package/dist/status/index.js +1 -1
  280. package/dist/status/style.css +1396 -1395
  281. package/dist/stepper/style.css +1358 -1357
  282. package/dist/styles/base.css +804 -804
  283. package/dist/styles.css +1 -1
  284. package/dist/switch/index.js +1 -1
  285. package/dist/switch/style.css +1337 -1336
  286. package/dist/table/index.js +975 -714
  287. package/dist/table/style.css +1908 -1839
  288. package/dist/tabs/index.js +1 -1
  289. package/dist/tabs/style.css +1502 -1501
  290. package/dist/tag/index.js +2 -2
  291. package/dist/tag/style.css +1206 -1205
  292. package/dist/terminal/index.js +1 -1
  293. package/dist/terminal/style.css +1283 -1282
  294. package/dist/textarea/index.js +1 -1
  295. package/dist/textarea/style.css +1477 -1476
  296. package/dist/theme/styles.css +402 -401
  297. package/dist/tiered-menu/index.js +3 -3
  298. package/dist/tiered-menu/style.css +1462 -1461
  299. package/dist/time-picker/index.js +5 -1
  300. package/dist/time-picker/style.css +1861 -1660
  301. package/dist/timeline/style.css +1494 -1493
  302. package/dist/toast/index.js +3 -3
  303. package/dist/toast/style.css +1904 -1903
  304. package/dist/toggle-button/index.js +1 -1
  305. package/dist/toggle-button/style.css +1206 -1205
  306. package/dist/toolbar/style.css +1206 -1205
  307. package/dist/tooltip/index.js +1 -1
  308. package/dist/tooltip/style.css +1206 -1205
  309. package/dist/tour/index.js +3 -3
  310. package/dist/tour/style.css +1904 -1903
  311. package/dist/tree/index.js +2 -2
  312. package/dist/tree/style.css +1206 -1205
  313. package/dist/tree-select/index.js +4 -4
  314. package/dist/tree-select/style.css +1914 -1913
  315. package/dist/typography/index.js +2 -2
  316. package/dist/typography/style.css +1352 -1351
  317. package/dist/{useMotionTransition-DqL_SEML.js → useMotionTransition-DohkfWRB.js} +1 -1
  318. package/dist/virtual-scroller/style.css +1367 -1366
  319. package/dist/watermark/style.css +1206 -1205
  320. package/package.json +1 -1
  321. package/dist/DatePicker-CsMGzCqY.js +0 -630
  322. package/dist/Pagination-CnGOpp0m.js +0 -171
@@ -1,430 +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: 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--warning {
361
- color: var(--m-color-warning);
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
- }
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--warning {
361
+ color: var(--m-color-warning);
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
+ }