morya-ui 0.3.5 → 0.3.7

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 (259) hide show
  1. package/CHANGELOG.md +573 -523
  2. package/LICENSE +21 -21
  3. package/README.md +150 -150
  4. package/README.zh-CN.md +150 -150
  5. package/dist/Input-DQiiKSm3.js +174 -0
  6. package/dist/accordion/style.css +1146 -1148
  7. package/dist/auto-complete/style.css +1688 -1690
  8. package/dist/avatar/style.css +1259 -1261
  9. package/dist/badge/style.css +1313 -1315
  10. package/dist/block-ui/style.css +1146 -1148
  11. package/dist/breadcrumb/style.css +1146 -1148
  12. package/dist/button/style.css +2136 -2138
  13. package/dist/card/style.css +1146 -1148
  14. package/dist/carousel/style.css +1247 -1249
  15. package/dist/cascade-select/style.css +1837 -1839
  16. package/dist/checkbox/style.css +1146 -1148
  17. package/dist/chip/style.css +1290 -1292
  18. package/dist/command-menu/style.css +1379 -1381
  19. package/dist/component-registry.d.ts.map +1 -1
  20. package/dist/components/AutoComplete/styles.css +209 -209
  21. package/dist/components/Avatar/styles.css +113 -113
  22. package/dist/components/Badge/styles.css +165 -165
  23. package/dist/components/Button/styles.css +962 -962
  24. package/dist/components/Carousel/styles.css +101 -101
  25. package/dist/components/CascadeSelect/styles.css +157 -157
  26. package/dist/components/Chip/styles.css +144 -144
  27. package/dist/components/CommandMenu/styles.css +102 -102
  28. package/dist/components/ConfigProvider/styles.css +6 -6
  29. package/dist/components/ConfirmDialog/styles.css +24 -24
  30. package/dist/components/ConfirmPopup/styles.css +35 -35
  31. package/dist/components/ContextMenu/styles.css +138 -138
  32. package/dist/components/DatePicker/styles.css +335 -335
  33. package/dist/components/Dialog/styles.css +421 -421
  34. package/dist/components/Dock/styles.css +84 -84
  35. package/dist/components/Drawer/Drawer.vue.d.ts +3 -1
  36. package/dist/components/Drawer/Drawer.vue.d.ts.map +1 -1
  37. package/dist/components/Drawer/styles.css +346 -334
  38. package/dist/components/Dropdown/styles.css +130 -130
  39. package/dist/components/Empty/styles.css +146 -146
  40. package/dist/components/FileUpload/styles.css +359 -359
  41. package/dist/components/Form/styles.css +114 -114
  42. package/dist/components/Gallery/styles.css +100 -100
  43. package/dist/components/Input/styles.css +356 -356
  44. package/dist/components/InputColor/styles.css +129 -129
  45. package/dist/components/InputNumber/styles.css +261 -261
  46. package/dist/components/InputPassword/styles.css +178 -178
  47. package/dist/components/InputTags/styles.css +112 -112
  48. package/dist/components/Layout/styles.css +433 -433
  49. package/dist/components/Loading/styles.css +378 -378
  50. package/dist/components/MegaMenu/styles.css +97 -97
  51. package/dist/components/Menu/styles.css +564 -564
  52. package/dist/components/Menubar/styles.css +144 -144
  53. package/dist/components/Message/styles.css +250 -250
  54. package/dist/components/MeterGroup/styles.css +49 -49
  55. package/dist/components/Page/styles.css +430 -430
  56. package/dist/components/Pagination/styles.css +105 -105
  57. package/dist/components/Popover/styles.css +92 -92
  58. package/dist/components/Result/styles.css +146 -146
  59. package/dist/components/Scrollbar/styles.css +131 -131
  60. package/dist/components/Select/styles.css +192 -192
  61. package/dist/components/SelectButton/styles.css +105 -105
  62. package/dist/components/Sidebar/styles.css +74 -74
  63. package/dist/components/Slider/styles.css +211 -211
  64. package/dist/components/SplitButton/styles.css +216 -216
  65. package/dist/components/Status/styles.css +191 -191
  66. package/dist/components/Stepper/styles.css +135 -135
  67. package/dist/components/Switch/styles.css +129 -129
  68. package/dist/components/Table/Table.vue.d.ts +188 -733
  69. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  70. package/dist/components/Table/columns/keys.d.ts +13 -0
  71. package/dist/components/Table/columns/keys.d.ts.map +1 -0
  72. package/dist/components/Table/{hooks → columns}/useFixedColumn.d.ts +1 -1
  73. package/dist/components/Table/columns/useFixedColumn.d.ts.map +1 -0
  74. package/dist/components/Table/columns/useHeaders.d.ts +37 -0
  75. package/dist/components/Table/columns/useHeaders.d.ts.map +1 -0
  76. package/dist/components/Table/core/layout.d.ts +26 -0
  77. package/dist/components/Table/core/layout.d.ts.map +1 -0
  78. package/dist/components/Table/core/normalize.d.ts +30 -0
  79. package/dist/components/Table/core/normalize.d.ts.map +1 -0
  80. package/dist/components/Table/{tableQuery.d.ts → core/tableQuery.d.ts} +3 -2
  81. package/dist/components/Table/core/tableQuery.d.ts.map +1 -0
  82. package/dist/components/Table/core/tree.d.ts +31 -0
  83. package/dist/components/Table/core/tree.d.ts.map +1 -0
  84. package/dist/components/Table/core/treeSelection.d.ts +35 -0
  85. package/dist/components/Table/core/treeSelection.d.ts.map +1 -0
  86. package/dist/components/Table/core/utils.d.ts +15 -0
  87. package/dist/components/Table/core/utils.d.ts.map +1 -0
  88. package/dist/components/Table/hooks/index.d.ts +14 -10
  89. package/dist/components/Table/hooks/index.d.ts.map +1 -1
  90. package/dist/components/Table/index.d.ts +1 -1
  91. package/dist/components/Table/index.d.ts.map +1 -1
  92. package/dist/components/Table/render/TableDefaultCell.vue.d.ts +11 -0
  93. package/dist/components/Table/render/TableDefaultCell.vue.d.ts.map +1 -0
  94. package/dist/components/Table/render/TableHeaderFilter.vue.d.ts +20 -0
  95. package/dist/components/Table/render/TableHeaderFilter.vue.d.ts.map +1 -0
  96. package/dist/components/Table/render/TableLoadingLine.vue.d.ts.map +1 -0
  97. package/dist/components/Table/render/TableTbody.vue.d.ts +154 -0
  98. package/dist/components/Table/render/TableTbody.vue.d.ts.map +1 -0
  99. package/dist/components/Table/render/TableThead.vue.d.ts +76 -0
  100. package/dist/components/Table/render/TableThead.vue.d.ts.map +1 -0
  101. package/dist/components/Table/{hooks → state}/internal.d.ts +8 -2
  102. package/dist/components/Table/state/internal.d.ts.map +1 -0
  103. package/dist/components/Table/state/useClickRow.d.ts +7 -0
  104. package/dist/components/Table/state/useClickRow.d.ts.map +1 -0
  105. package/dist/components/Table/state/useColumnResize.d.ts +11 -0
  106. package/dist/components/Table/state/useColumnResize.d.ts.map +1 -0
  107. package/dist/components/Table/state/useExpandableRow.d.ts +25 -0
  108. package/dist/components/Table/state/useExpandableRow.d.ts.map +1 -0
  109. package/dist/components/Table/state/usePageItems.d.ts +15 -0
  110. package/dist/components/Table/state/usePageItems.d.ts.map +1 -0
  111. package/dist/components/Table/{hooks → state}/usePagination.d.ts.map +1 -1
  112. package/dist/components/Table/{hooks → state}/useRows.d.ts +2 -2
  113. package/dist/components/Table/{hooks → state}/useRows.d.ts.map +1 -1
  114. package/dist/components/Table/state/useServerOptions.d.ts.map +1 -0
  115. package/dist/components/Table/{hooks → state}/useTotalItems.d.ts +2 -2
  116. package/dist/components/Table/{hooks → state}/useTotalItems.d.ts.map +1 -1
  117. package/dist/components/Table/state/useTreeRows.d.ts +21 -0
  118. package/dist/components/Table/state/useTreeRows.d.ts.map +1 -0
  119. package/dist/components/Table/state/useVirtualRows.d.ts +23 -0
  120. package/dist/components/Table/state/useVirtualRows.d.ts.map +1 -0
  121. package/dist/components/Table/styles.css +182 -6
  122. package/dist/components/Table/types.d.ts +108 -25
  123. package/dist/components/Table/types.d.ts.map +1 -1
  124. package/dist/components/Tabs/styles.css +131 -131
  125. package/dist/components/Terminal/styles.css +74 -74
  126. package/dist/components/Textarea/styles.css +126 -126
  127. package/dist/components/TieredMenu/styles.css +125 -125
  128. package/dist/components/Timeline/styles.css +159 -159
  129. package/dist/components/Tree/Tree.vue.d.ts +2 -2
  130. package/dist/components/TreeSelect/TreeSelect.vue.d.ts +1 -1
  131. package/dist/components/TreeSelect/styles.css +161 -161
  132. package/dist/components/VirtualScroller/styles.css +27 -27
  133. package/dist/config-provider/style.css +2470 -2472
  134. package/dist/confirm-dialog/style.css +2553 -2555
  135. package/dist/confirm-popup/style.css +2143 -2145
  136. package/dist/context-menu/style.css +1415 -1417
  137. package/dist/data-view/style.css +1629 -1631
  138. package/dist/date-picker/style.css +1481 -1483
  139. package/dist/dialog/style.css +2529 -2531
  140. package/dist/divider/style.css +1146 -1148
  141. package/dist/dock/style.css +1230 -1232
  142. package/dist/drawer/index.js +57 -50
  143. package/dist/drawer/style.css +1492 -1482
  144. package/dist/dropdown/style.css +1407 -1409
  145. package/dist/empty/style.css +1292 -1294
  146. package/dist/fieldset/style.css +1146 -1148
  147. package/dist/file-upload/style.css +1505 -1507
  148. package/dist/flex/style.css +1146 -1148
  149. package/dist/float-label/style.css +1146 -1148
  150. package/dist/fluid/style.css +1146 -1148
  151. package/dist/form/style.css +1262 -1264
  152. package/dist/gallery/style.css +1377 -1379
  153. package/dist/grid/style.css +1146 -1148
  154. package/dist/icon/style.css +1146 -1148
  155. package/dist/icon-field/style.css +1502 -1504
  156. package/dist/index.d.ts +1 -3
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +4899 -3591
  159. package/dist/inplace/style.css +1146 -1148
  160. package/dist/input/index.js +2 -174
  161. package/dist/input/style.css +1502 -1504
  162. package/dist/input-color/style.css +1277 -1279
  163. package/dist/input-group/style.css +1146 -1148
  164. package/dist/input-number/style.css +1407 -1409
  165. package/dist/input-otp/style.css +1146 -1148
  166. package/dist/input-password/style.css +1324 -1326
  167. package/dist/input-tags/style.css +1258 -1260
  168. package/dist/knob/style.css +1146 -1148
  169. package/dist/label/style.css +1146 -1148
  170. package/dist/layout/style.css +1710 -1712
  171. package/dist/listbox/style.css +1304 -1306
  172. package/dist/loading/style.css +1526 -1528
  173. package/dist/mega-menu/style.css +1243 -1245
  174. package/dist/menu/style.css +1999 -2001
  175. package/dist/menubar/style.css +1421 -1423
  176. package/dist/message/style.css +1396 -1398
  177. package/dist/meter-group/style.css +1197 -1199
  178. package/dist/order-list/style.css +1146 -1148
  179. package/dist/page/style.css +2802 -2804
  180. package/dist/pagination/style.css +1443 -1445
  181. package/dist/panel/style.css +1146 -1148
  182. package/dist/pick-list/style.css +1146 -1148
  183. package/dist/popover/style.css +1240 -1242
  184. package/dist/progress-bar/style.css +1146 -1148
  185. package/dist/progress-spinner/style.css +1146 -1148
  186. package/dist/radio/style.css +1146 -1148
  187. package/dist/rating/style.css +1146 -1148
  188. package/dist/resolver-map.d.ts.map +1 -1
  189. package/dist/resolver.js +0 -1
  190. package/dist/result/style.css +1292 -1294
  191. package/dist/scroll-top/style.css +1277 -1279
  192. package/dist/scrollbar/style.css +1279 -1281
  193. package/dist/select/style.css +1899 -1901
  194. package/dist/select-button/style.css +1253 -1255
  195. package/dist/shared/styles/control-affix-icon.css +110 -110
  196. package/dist/shared/styles/control-suffix.css +118 -118
  197. package/dist/shared/styles/select-overlay.css +175 -175
  198. package/dist/sidebar/style.css +1220 -1222
  199. package/dist/skeleton/style.css +1146 -1148
  200. package/dist/slider/style.css +1359 -1361
  201. package/dist/space/style.css +1146 -1148
  202. package/dist/speed-dial/style.css +1146 -1148
  203. package/dist/split-button/style.css +2324 -2326
  204. package/dist/splitter/style.css +1146 -1148
  205. package/dist/status/style.css +1337 -1339
  206. package/dist/stepper/style.css +1281 -1283
  207. package/dist/styles/base.css +788 -790
  208. package/dist/styles.css +1 -1
  209. package/dist/switch/style.css +1277 -1279
  210. package/dist/table/index.js +2027 -601
  211. package/dist/table/style.css +1940 -1917
  212. package/dist/table/style.js +0 -4
  213. package/dist/tabs/style.css +1408 -1410
  214. package/dist/tag/style.css +1146 -1148
  215. package/dist/terminal/style.css +1222 -1224
  216. package/dist/textarea/style.css +1272 -1274
  217. package/dist/theme/styles.css +358 -358
  218. package/dist/tiered-menu/style.css +1402 -1404
  219. package/dist/timeline/style.css +1436 -1438
  220. package/dist/toast/style.css +1146 -1148
  221. package/dist/toggle-button/style.css +1146 -1148
  222. package/dist/toolbar/style.css +1146 -1148
  223. package/dist/tooltip/style.css +1146 -1148
  224. package/dist/tree/style.css +1146 -1148
  225. package/dist/tree-select/style.css +1841 -1843
  226. package/dist/virtual-scroller/style.css +1307 -1309
  227. package/package.json +1 -8
  228. package/dist/components/Table/TableLoadingLine.vue.d.ts.map +0 -1
  229. package/dist/components/Table/hooks/internal.d.ts.map +0 -1
  230. package/dist/components/Table/hooks/useClickRow.d.ts +0 -7
  231. package/dist/components/Table/hooks/useClickRow.d.ts.map +0 -1
  232. package/dist/components/Table/hooks/useExpandableRow.d.ts +0 -9
  233. package/dist/components/Table/hooks/useExpandableRow.d.ts.map +0 -1
  234. package/dist/components/Table/hooks/useFixedColumn.d.ts.map +0 -1
  235. package/dist/components/Table/hooks/useHeaders.d.ts +0 -14
  236. package/dist/components/Table/hooks/useHeaders.d.ts.map +0 -1
  237. package/dist/components/Table/hooks/usePageItems.d.ts +0 -17
  238. package/dist/components/Table/hooks/usePageItems.d.ts.map +0 -1
  239. package/dist/components/Table/hooks/useServerOptions.d.ts.map +0 -1
  240. package/dist/components/Table/normalize.d.ts +0 -9
  241. package/dist/components/Table/normalize.d.ts.map +0 -1
  242. package/dist/components/Table/tableQuery.d.ts.map +0 -1
  243. package/dist/components/Table/utils.d.ts +0 -10
  244. package/dist/components/Table/utils.d.ts.map +0 -1
  245. package/dist/components/TreeTable/TreeTable.vue.d.ts +0 -24
  246. package/dist/components/TreeTable/TreeTable.vue.d.ts.map +0 -1
  247. package/dist/components/TreeTable/TreeTableRow.vue.d.ts +0 -17
  248. package/dist/components/TreeTable/TreeTableRow.vue.d.ts.map +0 -1
  249. package/dist/components/TreeTable/index.d.ts +0 -3
  250. package/dist/components/TreeTable/index.d.ts.map +0 -1
  251. package/dist/components/TreeTable/styles.css +0 -97
  252. package/dist/components/TreeTable/types.d.ts +0 -25
  253. package/dist/components/TreeTable/types.d.ts.map +0 -1
  254. package/dist/tree-table/index.js +0 -128
  255. package/dist/tree-table/style.css +0 -1296
  256. package/dist/tree-table/style.js +0 -4
  257. /package/dist/components/Table/{TableLoadingLine.vue.d.ts → render/TableLoadingLine.vue.d.ts} +0 -0
  258. /package/dist/components/Table/{hooks → state}/usePagination.d.ts +0 -0
  259. /package/dist/components/Table/{hooks → state}/useServerOptions.d.ts +0 -0
@@ -1,564 +1,564 @@
1
- /* —— Menu —— */
2
- .m-menu {
3
- --m-menu-indent: var(--m-space-3);
4
- --m-menu-root-indent: var(--m-space-4);
5
- --m-menu-submenu-gap: var(--m-space-2);
6
- --m-menu-submenu-inset: var(--m-space-2);
7
- --m-menu-item-radius: var(--m-radius-md);
8
- --m-menu-color: transparent;
9
- --m-menu-item-color-hover: color-mix(
10
- in srgb,
11
- var(--m-color-text) 6%,
12
- var(--m-color-surface)
13
- );
14
- --m-menu-item-color-active: color-mix(
15
- in srgb,
16
- var(--m-color-primary) 10%,
17
- var(--m-color-surface)
18
- );
19
- --m-menu-item-text: var(--m-color-text);
20
- --m-menu-item-text-active: var(--m-color-primary);
21
- --m-menu-item-text-child-active: var(--m-color-primary);
22
- --m-menu-item-icon: var(--m-color-text);
23
- --m-menu-item-icon-active: var(--m-color-primary);
24
- --m-menu-arrow: var(--m-color-text-muted);
25
-
26
- background: var(--m-menu-color);
27
- border: var(--m-border-width) solid var(--m-color-border);
28
- border-radius: var(--m-radius-md);
29
- box-sizing: border-box;
30
- color: var(--m-menu-item-text);
31
- display: flex;
32
- flex-direction: column;
33
- font-size: var(--m-font-size-sm);
34
- min-width: 10rem;
35
- overflow: hidden;
36
- padding: 0 0 var(--m-space-1);
37
- user-select: none;
38
- }
39
-
40
- .m-menu--embedded {
41
- background: transparent;
42
- border: 0;
43
- border-radius: 0;
44
- min-width: 0;
45
- /* Keep a block inset so the first item does not sit on a brand rule or sider edge.
46
- Horizontal embed resets this below. */
47
- padding-block: var(--m-space-2);
48
- padding-inline: 0;
49
- width: 100%;
50
- }
51
-
52
- .m-menu--flyout {
53
- --m-menu-flyout-gap: var(--m-space-1);
54
- --m-menu-flyout-item-height: var(--m-menu-item-height);
55
- --m-menu-flyout-padding: var(--m-space-2);
56
- --m-menu-flyout-radius: var(--m-radius-md);
57
-
58
- background: var(--m-color-surface);
59
- border: var(--m-border-width) solid color-mix(in srgb, var(--m-color-border) 88%, transparent);
60
- border-radius: var(--m-menu-flyout-radius);
61
- box-shadow: var(--m-shadow-lg);
62
- box-sizing: border-box;
63
- min-width: 11.5rem;
64
- overflow: hidden;
65
- padding: var(--m-menu-flyout-padding);
66
- }
67
-
68
- .m-menu--popup {
69
- --m-menu-popup-max-height: min(18rem, 45vh);
70
- box-shadow: var(--m-shadow-md);
71
- display: flex;
72
- flex-direction: column;
73
- max-height: var(--m-menu-popup-max-height);
74
- max-width: calc(100vw - 2 * var(--m-space-4));
75
- overflow: hidden;
76
- padding: var(--m-space-1) 0 var(--m-space-2);
77
- position: absolute;
78
- /* Grow with the content: shrink-to-fit would clamp to the anchor width
79
- (the containing block) when not teleported. */
80
- width: max-content;
81
- z-index: var(--m-z-popper);
82
- }
83
-
84
- .m-menu--popup .m-menu__scroll {
85
- max-height: 100%;
86
- min-height: 0;
87
- }
88
-
89
- .m-menu-popup {
90
- display: inline-flex;
91
- position: relative;
92
- }
93
-
94
- .m-menu-popup__anchor {
95
- display: inline-flex;
96
- }
97
-
98
- .m-menu-popup .m-menu--popup:not(.m-menu--teleported) {
99
- left: 0;
100
- /* Keep the in-place popup at least as wide as its anchor. */
101
- min-width: 100%;
102
- top: calc(100% + var(--m-space-2));
103
- }
104
-
105
- .m-menu--teleported {
106
- position: fixed;
107
- z-index: var(--m-z-dropdown);
108
- }
109
-
110
- .m-menu--horizontal {
111
- --m-menu-horizontal-gap: var(--m-space-1);
112
- --m-menu-horizontal-height: var(--m-menu-item-height);
113
-
114
- align-items: stretch;
115
- flex-direction: row;
116
- flex-wrap: nowrap;
117
- gap: var(--m-menu-horizontal-gap);
118
- max-width: 100%;
119
- min-width: 0;
120
- overflow: visible;
121
- padding: var(--m-space-1) var(--m-space-2);
122
- width: auto;
123
- }
124
-
125
- .m-menu--horizontal.m-menu--embedded {
126
- padding: 0;
127
- }
128
-
129
- .m-menu--horizontal .m-menu__item,
130
- .m-menu--horizontal .m-menu__item--submenu {
131
- margin-top: 0;
132
- }
133
-
134
- .m-menu--horizontal .m-menu__item--horizontal {
135
- display: flex;
136
- align-items: stretch;
137
- }
138
-
139
- .m-menu--horizontal .m-popover,
140
- .m-menu--horizontal .m-menu__collapsed-popover {
141
- display: flex;
142
- align-items: stretch;
143
- height: 100%;
144
- }
145
-
146
- .m-menu--horizontal .m-popover__trigger {
147
- display: flex;
148
- align-items: stretch;
149
- height: 100%;
150
- }
151
-
152
- .m-menu--horizontal .m-menu__item-content {
153
- align-items: center;
154
- border-bottom: none;
155
- border-radius: var(--m-radius-control);
156
- font-weight: 500;
157
- height: var(--m-menu-horizontal-height);
158
- padding-inline: var(--m-space-3);
159
- white-space: nowrap;
160
- }
161
-
162
- .m-menu--horizontal .m-menu__item-content::before {
163
- border-radius: var(--m-radius-control);
164
- display: block;
165
- inset: 0;
166
- }
167
-
168
- .m-menu--horizontal .m-menu__item-content--selected::before,
169
- .m-menu--horizontal .m-menu__item-content--child-active::before {
170
- background: var(--m-menu-item-color-active) !important;
171
- }
172
-
173
- .m-menu--horizontal .m-menu__item-content--selected,
174
- .m-menu--horizontal .m-menu__item-content--child-active {
175
- border-bottom-color: transparent;
176
- }
177
-
178
- .m-menu--horizontal .m-menu__item-content--selected .m-menu__label,
179
- .m-menu--horizontal .m-menu__item-content--child-active .m-menu__label,
180
- .m-menu--horizontal .m-menu__item-content--selected .m-menu__arrow,
181
- .m-menu--horizontal .m-menu__item-content--child-active .m-menu__arrow {
182
- color: var(--m-menu-item-text-active);
183
- }
184
-
185
- .m-menu--horizontal .m-menu__arrow {
186
- margin-inline-start: var(--m-space-1);
187
- }
188
-
189
- .m-menu--horizontal .m-menu__submenu {
190
- display: none;
191
- }
192
-
193
- .m-menu--inverted {
194
- --m-menu-item-color-hover: color-mix(
195
- in srgb,
196
- var(--m-color-contrast-fg) 8%,
197
- transparent
198
- );
199
- --m-menu-item-color-active: var(--m-color-primary);
200
- --m-menu-item-text: color-mix(
201
- in srgb,
202
- var(--m-color-contrast-fg) 82%,
203
- transparent
204
- );
205
- --m-menu-item-text-active: var(--m-color-contrast-fg);
206
- --m-menu-item-text-child-active: var(--m-color-contrast-fg);
207
- --m-menu-item-icon: color-mix(
208
- in srgb,
209
- var(--m-color-contrast-fg) 82%,
210
- transparent
211
- );
212
- --m-menu-item-icon-active: var(--m-color-contrast-fg);
213
- --m-menu-arrow: color-mix(
214
- in srgb,
215
- var(--m-color-contrast-fg) 72%,
216
- transparent
217
- );
218
- }
219
-
220
- /* —— Collapsed (icon rail) —— */
221
- .m-menu--collapsed {
222
- padding: var(--m-space-1) 0;
223
- }
224
-
225
- .m-menu--collapsed .m-menu__label,
226
- .m-menu--collapsed .m-menu__arrow {
227
- display: none;
228
- }
229
-
230
- .m-menu--collapsed .m-menu__item {
231
- margin-top: var(--m-space-1);
232
- }
233
-
234
- .m-menu--collapsed .m-menu__item .m-tooltip,
235
- .m-menu--collapsed .m-menu__collapsed-popover .m-tooltip {
236
- display: flex;
237
- width: 100%;
238
- }
239
-
240
- .m-menu--collapsed .m-menu__item-content {
241
- align-items: center;
242
- display: flex;
243
- grid-template-areas: none;
244
- grid-template-columns: unset;
245
- height: var(--m-menu-item-height);
246
- justify-content: center;
247
- padding-inline: 0 !important;
248
- width: 100%;
249
- }
250
-
251
- .m-menu--collapsed .m-menu__item-content::before {
252
- inset: 0 var(--m-space-2);
253
- }
254
-
255
- .m-menu--collapsed .m-menu__icon {
256
- height: 1.375rem;
257
- margin-inline: 0;
258
- width: 1.375rem;
259
- }
260
-
261
- .m-menu--collapsed .m-menu__icon .m-icon {
262
- height: 1.375rem;
263
- width: 1.375rem;
264
- }
265
-
266
- .m-menu--collapsed .m-menu__item-content--selected::before,
267
- .m-menu--collapsed .m-menu__item-content--child-active::before {
268
- background: var(--m-menu-item-color-active) !important;
269
- }
270
-
271
- .m-menu__item {
272
- margin-top: 0.375rem;
273
- position: relative;
274
- }
275
-
276
- .m-menu__item:first-child {
277
- margin-top: 0;
278
- }
279
-
280
- .m-menu__item-content {
281
- align-items: center;
282
- border-radius: var(--m-menu-item-radius);
283
- box-sizing: border-box;
284
- color: var(--m-menu-item-text);
285
- cursor: pointer;
286
- display: grid;
287
- grid-template-areas: "icon label arrow";
288
- grid-template-columns: auto minmax(0, 1fr) auto;
289
- height: var(--m-menu-item-height);
290
- line-height: 1.75;
291
- padding-inline-end: 0.75rem;
292
- position: relative;
293
- text-decoration: none;
294
- transition:
295
- color var(--m-motion-fast) var(--m-motion-ease),
296
- background-color var(--m-motion-fast) var(--m-motion-ease),
297
- padding-inline-start var(--m-motion-fast) var(--m-motion-ease);
298
- }
299
-
300
- /* RouterLink / <a> must not keep browser link chrome (blue + underline). */
301
- a.m-menu__item-content,
302
- a.m-menu__item-content:link,
303
- a.m-menu__item-content:visited,
304
- a.m-menu__item-content:hover,
305
- a.m-menu__item-content:active {
306
- color: var(--m-menu-item-text);
307
- text-decoration: none;
308
- }
309
-
310
- .m-menu__item-content--no-icon {
311
- grid-template-areas: "label arrow";
312
- grid-template-columns: minmax(0, 1fr) auto;
313
- }
314
-
315
- .m-menu__item-content::before {
316
- background: transparent;
317
- border-radius: var(--m-menu-item-radius);
318
- content: "";
319
- inset: 0 0.5rem;
320
- pointer-events: none;
321
- position: absolute;
322
- transition: background-color var(--m-motion-fast) var(--m-motion-ease);
323
- z-index: 0;
324
- }
325
-
326
- .m-menu__item-content > * {
327
- position: relative;
328
- z-index: 1;
329
- }
330
-
331
- .m-menu__item-content:hover:not(.m-menu__item-content--disabled)::before,
332
- .m-menu__item-content:focus-visible:not(.m-menu__item-content--disabled)::before,
333
- .m-menu__item-content--active:not(.m-menu__item-content--disabled)::before {
334
- background: var(--m-menu-item-color-hover);
335
- }
336
-
337
- .m-menu__item-content--selected::before {
338
- background: var(--m-menu-item-color-active) !important;
339
- }
340
-
341
- .m-menu__item-content--selected,
342
- a.m-menu__item-content--selected,
343
- a.m-menu__item-content--selected:link,
344
- a.m-menu__item-content--selected:visited {
345
- color: var(--m-menu-item-text-active);
346
- }
347
-
348
- .m-menu__item-content--selected .m-menu__label,
349
- .m-menu__item-content--selected .m-menu__icon,
350
- .m-menu__item-content--selected .m-menu__arrow {
351
- color: var(--m-menu-item-text-active);
352
- }
353
-
354
- .m-menu__item-content--child-active .m-menu__label,
355
- .m-menu__item-content--child-active .m-menu__icon,
356
- .m-menu__item-content--child-active .m-menu__arrow {
357
- color: var(--m-menu-item-text-child-active);
358
- }
359
-
360
- .m-menu--inverted .m-menu__item-content--selected::before {
361
- background: var(--m-menu-item-color-active) !important;
362
- }
363
-
364
- .m-menu__item-content--disabled {
365
- cursor: not-allowed;
366
- opacity: var(--m-opacity-disabled);
367
- }
368
-
369
- .m-menu__item-content:focus-visible {
370
- outline: none;
371
- }
372
-
373
- .m-menu__item-content:focus-visible::before {
374
- box-shadow: var(--m-focus-shadow);
375
- }
376
-
377
- .m-menu__icon {
378
- align-items: center;
379
- color: var(--m-menu-item-icon);
380
- display: inline-flex;
381
- flex-shrink: 0;
382
- grid-area: icon;
383
- height: 1.25rem;
384
- justify-content: center;
385
- margin-inline-end: 0.5rem;
386
- width: 1.25rem;
387
- }
388
-
389
- .m-menu__icon .m-icon {
390
- height: 1.25rem;
391
- width: 1.25rem;
392
- }
393
-
394
- .m-menu__item-content--selected .m-menu__icon,
395
- .m-menu__item-content--child-active .m-menu__icon {
396
- color: var(--m-menu-item-icon-active);
397
- }
398
-
399
- .m-menu__label {
400
- color: inherit;
401
- grid-area: label;
402
- min-width: 0;
403
- overflow: hidden;
404
- text-overflow: ellipsis;
405
- white-space: nowrap;
406
- }
407
-
408
- .m-menu__arrow {
409
- align-items: center;
410
- color: var(--m-menu-arrow);
411
- display: inline-flex;
412
- flex-shrink: 0;
413
- grid-area: arrow;
414
- height: 1rem;
415
- justify-content: center;
416
- margin-inline-start: 0.25rem;
417
- transition: transform var(--m-motion-fast) var(--m-motion-ease);
418
- width: 1rem;
419
- }
420
-
421
- .m-menu__arrow--expanded {
422
- transform: rotate(90deg);
423
- }
424
-
425
- .m-menu__separator {
426
- background: var(--m-color-border);
427
- height: 1px;
428
- margin: 0.375rem 0.75rem;
429
- }
430
-
431
- .m-menu__submenu {
432
- contain: layout;
433
- display: grid;
434
- grid-template-rows: 1fr;
435
- }
436
-
437
- .m-menu__submenu-inner {
438
- min-height: 0;
439
- overflow: hidden;
440
- padding-block-start: var(--m-menu-submenu-gap);
441
- padding-inline-start: var(--m-menu-submenu-inset);
442
- }
443
-
444
- .m-menu-expand-enter-active,
445
- .m-menu-expand-leave-active {
446
- overflow: hidden;
447
- transition:
448
- grid-template-rows var(--m-motion-normal) var(--m-motion-ease),
449
- opacity var(--m-motion-normal) var(--m-motion-ease);
450
- }
451
-
452
- .m-menu-expand-enter-from,
453
- .m-menu-expand-leave-to {
454
- grid-template-rows: 0fr;
455
- opacity: 0;
456
- }
457
-
458
- .m-menu-expand-enter-to,
459
- .m-menu-expand-leave-from {
460
- grid-template-rows: 1fr;
461
- opacity: 1;
462
- }
463
-
464
- [data-m-motion="reduced"] .m-menu-expand-enter-active,
465
- [data-m-motion="reduced"] .m-menu-expand-leave-active,
466
- [data-m-motion="none"] .m-menu-expand-enter-active,
467
- [data-m-motion="none"] .m-menu-expand-leave-active {
468
- transition: none;
469
- }
470
-
471
- /* Popover flyout: strip outer chrome, menu card provides it */
472
- .m-popover__trigger {
473
- display: block;
474
- width: 100%;
475
- }
476
-
477
- .m-menu--collapsed .m-popover {
478
- display: block;
479
- width: 100%;
480
- }
481
-
482
- .m-popover__content:has(.m-menu--flyout) {
483
- background: transparent;
484
- border: 0;
485
- box-shadow: none;
486
- min-width: 0;
487
- overflow: visible;
488
- padding: 0;
489
- }
490
-
491
- .m-popover__content--right:has(.m-menu--flyout),
492
- .m-popover__content--right-start:has(.m-menu--flyout) {
493
- left: calc(100% + var(--m-space-2));
494
- }
495
-
496
- .m-popover__content--bottom-start:has(.m-menu--flyout) {
497
- left: 0;
498
- top: calc(100% + var(--m-space-1));
499
- }
500
-
501
- .m-popover__content--teleported:has(.m-menu--flyout) {
502
- padding: 0;
503
- }
504
-
505
- .m-popover__content--right-start:has(.m-menu--flyout).m-scale-fade-enter-from,
506
- .m-popover__content--right-start:has(.m-menu--flyout).m-scale-fade-leave-to {
507
- opacity: 0;
508
- transform: translateX(calc(var(--m-motion-distance) * -0.5)) scale(0.98);
509
- }
510
-
511
- .m-popover__content--bottom-start:has(.m-menu--flyout).m-scale-fade-enter-from,
512
- .m-popover__content--bottom-start:has(.m-menu--flyout).m-scale-fade-leave-to {
513
- opacity: 0;
514
- transform: translateY(calc(var(--m-motion-distance) * -0.35)) scale(0.98);
515
- }
516
-
517
- .m-menu--flyout .m-menu__item {
518
- margin-top: var(--m-menu-flyout-gap);
519
- }
520
-
521
- .m-menu--flyout .m-menu__item:first-child {
522
- margin-top: 0;
523
- }
524
-
525
- .m-menu--flyout .m-menu__item-content {
526
- height: var(--m-menu-flyout-item-height);
527
- padding-inline: var(--m-space-3);
528
- }
529
-
530
- .m-menu--flyout .m-menu__item-content::before {
531
- inset: 0 0.375rem;
532
- border-radius: calc(var(--m-menu-flyout-radius) - 0.125rem);
533
- }
534
-
535
- .m-menu--flyout .m-menu__icon {
536
- height: 1.125rem;
537
- margin-inline-end: 0.625rem;
538
- width: 1.125rem;
539
- }
540
-
541
- .m-menu--flyout .m-menu__icon .m-icon {
542
- height: 1.125rem;
543
- width: 1.125rem;
544
- }
545
-
546
- .m-menu--flyout .m-menu__label {
547
- font-size: var(--m-font-size-sm);
548
- font-weight: 500;
549
- line-height: 1.4;
550
- }
551
-
552
- .m-menu--flyout .m-menu__item-content--selected::before {
553
- background: var(--m-menu-item-color-active) !important;
554
- }
555
-
556
- .m-menu--flyout .m-menu__item-content--selected .m-menu__label,
557
- .m-menu--flyout .m-menu__item-content--selected .m-menu__icon {
558
- color: var(--m-menu-item-text-active);
559
- font-weight: 600;
560
- }
561
-
562
- .m-menu--flyout .m-menu__separator {
563
- margin: var(--m-menu-flyout-gap) 0.5rem;
564
- }
1
+ /* —— Menu —— */
2
+ .m-menu {
3
+ --m-menu-indent: var(--m-space-3);
4
+ --m-menu-root-indent: var(--m-space-4);
5
+ --m-menu-submenu-gap: var(--m-space-2);
6
+ --m-menu-submenu-inset: var(--m-space-2);
7
+ --m-menu-item-radius: var(--m-radius-md);
8
+ --m-menu-color: transparent;
9
+ --m-menu-item-color-hover: color-mix(
10
+ in srgb,
11
+ var(--m-color-text) 6%,
12
+ var(--m-color-surface)
13
+ );
14
+ --m-menu-item-color-active: color-mix(
15
+ in srgb,
16
+ var(--m-color-primary) 10%,
17
+ var(--m-color-surface)
18
+ );
19
+ --m-menu-item-text: var(--m-color-text);
20
+ --m-menu-item-text-active: var(--m-color-primary);
21
+ --m-menu-item-text-child-active: var(--m-color-primary);
22
+ --m-menu-item-icon: var(--m-color-text);
23
+ --m-menu-item-icon-active: var(--m-color-primary);
24
+ --m-menu-arrow: var(--m-color-text-muted);
25
+
26
+ background: var(--m-menu-color);
27
+ border: var(--m-border-width) solid var(--m-color-border);
28
+ border-radius: var(--m-radius-md);
29
+ box-sizing: border-box;
30
+ color: var(--m-menu-item-text);
31
+ display: flex;
32
+ flex-direction: column;
33
+ font-size: var(--m-font-size-sm);
34
+ min-width: 10rem;
35
+ overflow: hidden;
36
+ padding: 0 0 var(--m-space-1);
37
+ user-select: none;
38
+ }
39
+
40
+ .m-menu--embedded {
41
+ background: transparent;
42
+ border: 0;
43
+ border-radius: 0;
44
+ min-width: 0;
45
+ /* Keep a block inset so the first item does not sit on a brand rule or sider edge.
46
+ Horizontal embed resets this below. */
47
+ padding-block: var(--m-space-2);
48
+ padding-inline: 0;
49
+ width: 100%;
50
+ }
51
+
52
+ .m-menu--flyout {
53
+ --m-menu-flyout-gap: var(--m-space-1);
54
+ --m-menu-flyout-item-height: var(--m-menu-item-height);
55
+ --m-menu-flyout-padding: var(--m-space-2);
56
+ --m-menu-flyout-radius: var(--m-radius-md);
57
+
58
+ background: var(--m-color-surface);
59
+ border: var(--m-border-width) solid color-mix(in srgb, var(--m-color-border) 88%, transparent);
60
+ border-radius: var(--m-menu-flyout-radius);
61
+ box-shadow: var(--m-shadow-lg);
62
+ box-sizing: border-box;
63
+ min-width: 11.5rem;
64
+ overflow: hidden;
65
+ padding: var(--m-menu-flyout-padding);
66
+ }
67
+
68
+ .m-menu--popup {
69
+ --m-menu-popup-max-height: min(18rem, 45vh);
70
+ box-shadow: var(--m-shadow-md);
71
+ display: flex;
72
+ flex-direction: column;
73
+ max-height: var(--m-menu-popup-max-height);
74
+ max-width: calc(100vw - 2 * var(--m-space-4));
75
+ overflow: hidden;
76
+ padding: var(--m-space-1) 0 var(--m-space-2);
77
+ position: absolute;
78
+ /* Grow with the content: shrink-to-fit would clamp to the anchor width
79
+ (the containing block) when not teleported. */
80
+ width: max-content;
81
+ z-index: var(--m-z-popper);
82
+ }
83
+
84
+ .m-menu--popup .m-menu__scroll {
85
+ max-height: 100%;
86
+ min-height: 0;
87
+ }
88
+
89
+ .m-menu-popup {
90
+ display: inline-flex;
91
+ position: relative;
92
+ }
93
+
94
+ .m-menu-popup__anchor {
95
+ display: inline-flex;
96
+ }
97
+
98
+ .m-menu-popup .m-menu--popup:not(.m-menu--teleported) {
99
+ left: 0;
100
+ /* Keep the in-place popup at least as wide as its anchor. */
101
+ min-width: 100%;
102
+ top: calc(100% + var(--m-space-2));
103
+ }
104
+
105
+ .m-menu--teleported {
106
+ position: fixed;
107
+ z-index: var(--m-z-dropdown);
108
+ }
109
+
110
+ .m-menu--horizontal {
111
+ --m-menu-horizontal-gap: var(--m-space-1);
112
+ --m-menu-horizontal-height: var(--m-menu-item-height);
113
+
114
+ align-items: stretch;
115
+ flex-direction: row;
116
+ flex-wrap: nowrap;
117
+ gap: var(--m-menu-horizontal-gap);
118
+ max-width: 100%;
119
+ min-width: 0;
120
+ overflow: visible;
121
+ padding: var(--m-space-1) var(--m-space-2);
122
+ width: auto;
123
+ }
124
+
125
+ .m-menu--horizontal.m-menu--embedded {
126
+ padding: 0;
127
+ }
128
+
129
+ .m-menu--horizontal .m-menu__item,
130
+ .m-menu--horizontal .m-menu__item--submenu {
131
+ margin-top: 0;
132
+ }
133
+
134
+ .m-menu--horizontal .m-menu__item--horizontal {
135
+ display: flex;
136
+ align-items: stretch;
137
+ }
138
+
139
+ .m-menu--horizontal .m-popover,
140
+ .m-menu--horizontal .m-menu__collapsed-popover {
141
+ display: flex;
142
+ align-items: stretch;
143
+ height: 100%;
144
+ }
145
+
146
+ .m-menu--horizontal .m-popover__trigger {
147
+ display: flex;
148
+ align-items: stretch;
149
+ height: 100%;
150
+ }
151
+
152
+ .m-menu--horizontal .m-menu__item-content {
153
+ align-items: center;
154
+ border-bottom: none;
155
+ border-radius: var(--m-radius-control);
156
+ font-weight: 500;
157
+ height: var(--m-menu-horizontal-height);
158
+ padding-inline: var(--m-space-3);
159
+ white-space: nowrap;
160
+ }
161
+
162
+ .m-menu--horizontal .m-menu__item-content::before {
163
+ border-radius: var(--m-radius-control);
164
+ display: block;
165
+ inset: 0;
166
+ }
167
+
168
+ .m-menu--horizontal .m-menu__item-content--selected::before,
169
+ .m-menu--horizontal .m-menu__item-content--child-active::before {
170
+ background: var(--m-menu-item-color-active) !important;
171
+ }
172
+
173
+ .m-menu--horizontal .m-menu__item-content--selected,
174
+ .m-menu--horizontal .m-menu__item-content--child-active {
175
+ border-bottom-color: transparent;
176
+ }
177
+
178
+ .m-menu--horizontal .m-menu__item-content--selected .m-menu__label,
179
+ .m-menu--horizontal .m-menu__item-content--child-active .m-menu__label,
180
+ .m-menu--horizontal .m-menu__item-content--selected .m-menu__arrow,
181
+ .m-menu--horizontal .m-menu__item-content--child-active .m-menu__arrow {
182
+ color: var(--m-menu-item-text-active);
183
+ }
184
+
185
+ .m-menu--horizontal .m-menu__arrow {
186
+ margin-inline-start: var(--m-space-1);
187
+ }
188
+
189
+ .m-menu--horizontal .m-menu__submenu {
190
+ display: none;
191
+ }
192
+
193
+ .m-menu--inverted {
194
+ --m-menu-item-color-hover: color-mix(
195
+ in srgb,
196
+ var(--m-color-contrast-fg) 8%,
197
+ transparent
198
+ );
199
+ --m-menu-item-color-active: var(--m-color-primary);
200
+ --m-menu-item-text: color-mix(
201
+ in srgb,
202
+ var(--m-color-contrast-fg) 82%,
203
+ transparent
204
+ );
205
+ --m-menu-item-text-active: var(--m-color-contrast-fg);
206
+ --m-menu-item-text-child-active: var(--m-color-contrast-fg);
207
+ --m-menu-item-icon: color-mix(
208
+ in srgb,
209
+ var(--m-color-contrast-fg) 82%,
210
+ transparent
211
+ );
212
+ --m-menu-item-icon-active: var(--m-color-contrast-fg);
213
+ --m-menu-arrow: color-mix(
214
+ in srgb,
215
+ var(--m-color-contrast-fg) 72%,
216
+ transparent
217
+ );
218
+ }
219
+
220
+ /* —— Collapsed (icon rail) —— */
221
+ .m-menu--collapsed {
222
+ padding: var(--m-space-1) 0;
223
+ }
224
+
225
+ .m-menu--collapsed .m-menu__label,
226
+ .m-menu--collapsed .m-menu__arrow {
227
+ display: none;
228
+ }
229
+
230
+ .m-menu--collapsed .m-menu__item {
231
+ margin-top: var(--m-space-1);
232
+ }
233
+
234
+ .m-menu--collapsed .m-menu__item .m-tooltip,
235
+ .m-menu--collapsed .m-menu__collapsed-popover .m-tooltip {
236
+ display: flex;
237
+ width: 100%;
238
+ }
239
+
240
+ .m-menu--collapsed .m-menu__item-content {
241
+ align-items: center;
242
+ display: flex;
243
+ grid-template-areas: none;
244
+ grid-template-columns: unset;
245
+ height: var(--m-menu-item-height);
246
+ justify-content: center;
247
+ padding-inline: 0 !important;
248
+ width: 100%;
249
+ }
250
+
251
+ .m-menu--collapsed .m-menu__item-content::before {
252
+ inset: 0 var(--m-space-2);
253
+ }
254
+
255
+ .m-menu--collapsed .m-menu__icon {
256
+ height: 1.375rem;
257
+ margin-inline: 0;
258
+ width: 1.375rem;
259
+ }
260
+
261
+ .m-menu--collapsed .m-menu__icon .m-icon {
262
+ height: 1.375rem;
263
+ width: 1.375rem;
264
+ }
265
+
266
+ .m-menu--collapsed .m-menu__item-content--selected::before,
267
+ .m-menu--collapsed .m-menu__item-content--child-active::before {
268
+ background: var(--m-menu-item-color-active) !important;
269
+ }
270
+
271
+ .m-menu__item {
272
+ margin-top: 0.375rem;
273
+ position: relative;
274
+ }
275
+
276
+ .m-menu__item:first-child {
277
+ margin-top: 0;
278
+ }
279
+
280
+ .m-menu__item-content {
281
+ align-items: center;
282
+ border-radius: var(--m-menu-item-radius);
283
+ box-sizing: border-box;
284
+ color: var(--m-menu-item-text);
285
+ cursor: pointer;
286
+ display: grid;
287
+ grid-template-areas: "icon label arrow";
288
+ grid-template-columns: auto minmax(0, 1fr) auto;
289
+ height: var(--m-menu-item-height);
290
+ line-height: 1.75;
291
+ padding-inline-end: 0.75rem;
292
+ position: relative;
293
+ text-decoration: none;
294
+ transition:
295
+ color var(--m-motion-fast) var(--m-motion-ease),
296
+ background-color var(--m-motion-fast) var(--m-motion-ease),
297
+ padding-inline-start var(--m-motion-fast) var(--m-motion-ease);
298
+ }
299
+
300
+ /* RouterLink / <a> must not keep browser link chrome (blue + underline). */
301
+ a.m-menu__item-content,
302
+ a.m-menu__item-content:link,
303
+ a.m-menu__item-content:visited,
304
+ a.m-menu__item-content:hover,
305
+ a.m-menu__item-content:active {
306
+ color: var(--m-menu-item-text);
307
+ text-decoration: none;
308
+ }
309
+
310
+ .m-menu__item-content--no-icon {
311
+ grid-template-areas: "label arrow";
312
+ grid-template-columns: minmax(0, 1fr) auto;
313
+ }
314
+
315
+ .m-menu__item-content::before {
316
+ background: transparent;
317
+ border-radius: var(--m-menu-item-radius);
318
+ content: "";
319
+ inset: 0 0.5rem;
320
+ pointer-events: none;
321
+ position: absolute;
322
+ transition: background-color var(--m-motion-fast) var(--m-motion-ease);
323
+ z-index: 0;
324
+ }
325
+
326
+ .m-menu__item-content > * {
327
+ position: relative;
328
+ z-index: 1;
329
+ }
330
+
331
+ .m-menu__item-content:hover:not(.m-menu__item-content--disabled)::before,
332
+ .m-menu__item-content:focus-visible:not(.m-menu__item-content--disabled)::before,
333
+ .m-menu__item-content--active:not(.m-menu__item-content--disabled)::before {
334
+ background: var(--m-menu-item-color-hover);
335
+ }
336
+
337
+ .m-menu__item-content--selected::before {
338
+ background: var(--m-menu-item-color-active) !important;
339
+ }
340
+
341
+ .m-menu__item-content--selected,
342
+ a.m-menu__item-content--selected,
343
+ a.m-menu__item-content--selected:link,
344
+ a.m-menu__item-content--selected:visited {
345
+ color: var(--m-menu-item-text-active);
346
+ }
347
+
348
+ .m-menu__item-content--selected .m-menu__label,
349
+ .m-menu__item-content--selected .m-menu__icon,
350
+ .m-menu__item-content--selected .m-menu__arrow {
351
+ color: var(--m-menu-item-text-active);
352
+ }
353
+
354
+ .m-menu__item-content--child-active .m-menu__label,
355
+ .m-menu__item-content--child-active .m-menu__icon,
356
+ .m-menu__item-content--child-active .m-menu__arrow {
357
+ color: var(--m-menu-item-text-child-active);
358
+ }
359
+
360
+ .m-menu--inverted .m-menu__item-content--selected::before {
361
+ background: var(--m-menu-item-color-active) !important;
362
+ }
363
+
364
+ .m-menu__item-content--disabled {
365
+ cursor: not-allowed;
366
+ opacity: var(--m-opacity-disabled);
367
+ }
368
+
369
+ .m-menu__item-content:focus-visible {
370
+ outline: none;
371
+ }
372
+
373
+ .m-menu__item-content:focus-visible::before {
374
+ box-shadow: var(--m-focus-shadow);
375
+ }
376
+
377
+ .m-menu__icon {
378
+ align-items: center;
379
+ color: var(--m-menu-item-icon);
380
+ display: inline-flex;
381
+ flex-shrink: 0;
382
+ grid-area: icon;
383
+ height: 1.25rem;
384
+ justify-content: center;
385
+ margin-inline-end: 0.5rem;
386
+ width: 1.25rem;
387
+ }
388
+
389
+ .m-menu__icon .m-icon {
390
+ height: 1.25rem;
391
+ width: 1.25rem;
392
+ }
393
+
394
+ .m-menu__item-content--selected .m-menu__icon,
395
+ .m-menu__item-content--child-active .m-menu__icon {
396
+ color: var(--m-menu-item-icon-active);
397
+ }
398
+
399
+ .m-menu__label {
400
+ color: inherit;
401
+ grid-area: label;
402
+ min-width: 0;
403
+ overflow: hidden;
404
+ text-overflow: ellipsis;
405
+ white-space: nowrap;
406
+ }
407
+
408
+ .m-menu__arrow {
409
+ align-items: center;
410
+ color: var(--m-menu-arrow);
411
+ display: inline-flex;
412
+ flex-shrink: 0;
413
+ grid-area: arrow;
414
+ height: 1rem;
415
+ justify-content: center;
416
+ margin-inline-start: 0.25rem;
417
+ transition: transform var(--m-motion-fast) var(--m-motion-ease);
418
+ width: 1rem;
419
+ }
420
+
421
+ .m-menu__arrow--expanded {
422
+ transform: rotate(90deg);
423
+ }
424
+
425
+ .m-menu__separator {
426
+ background: var(--m-color-border);
427
+ height: 1px;
428
+ margin: 0.375rem 0.75rem;
429
+ }
430
+
431
+ .m-menu__submenu {
432
+ contain: layout;
433
+ display: grid;
434
+ grid-template-rows: 1fr;
435
+ }
436
+
437
+ .m-menu__submenu-inner {
438
+ min-height: 0;
439
+ overflow: hidden;
440
+ padding-block-start: var(--m-menu-submenu-gap);
441
+ padding-inline-start: var(--m-menu-submenu-inset);
442
+ }
443
+
444
+ .m-menu-expand-enter-active,
445
+ .m-menu-expand-leave-active {
446
+ overflow: hidden;
447
+ transition:
448
+ grid-template-rows var(--m-motion-normal) var(--m-motion-ease),
449
+ opacity var(--m-motion-normal) var(--m-motion-ease);
450
+ }
451
+
452
+ .m-menu-expand-enter-from,
453
+ .m-menu-expand-leave-to {
454
+ grid-template-rows: 0fr;
455
+ opacity: 0;
456
+ }
457
+
458
+ .m-menu-expand-enter-to,
459
+ .m-menu-expand-leave-from {
460
+ grid-template-rows: 1fr;
461
+ opacity: 1;
462
+ }
463
+
464
+ [data-m-motion="reduced"] .m-menu-expand-enter-active,
465
+ [data-m-motion="reduced"] .m-menu-expand-leave-active,
466
+ [data-m-motion="none"] .m-menu-expand-enter-active,
467
+ [data-m-motion="none"] .m-menu-expand-leave-active {
468
+ transition: none;
469
+ }
470
+
471
+ /* Popover flyout: strip outer chrome, menu card provides it */
472
+ .m-popover__trigger {
473
+ display: block;
474
+ width: 100%;
475
+ }
476
+
477
+ .m-menu--collapsed .m-popover {
478
+ display: block;
479
+ width: 100%;
480
+ }
481
+
482
+ .m-popover__content:has(.m-menu--flyout) {
483
+ background: transparent;
484
+ border: 0;
485
+ box-shadow: none;
486
+ min-width: 0;
487
+ overflow: visible;
488
+ padding: 0;
489
+ }
490
+
491
+ .m-popover__content--right:has(.m-menu--flyout),
492
+ .m-popover__content--right-start:has(.m-menu--flyout) {
493
+ left: calc(100% + var(--m-space-2));
494
+ }
495
+
496
+ .m-popover__content--bottom-start:has(.m-menu--flyout) {
497
+ left: 0;
498
+ top: calc(100% + var(--m-space-1));
499
+ }
500
+
501
+ .m-popover__content--teleported:has(.m-menu--flyout) {
502
+ padding: 0;
503
+ }
504
+
505
+ .m-popover__content--right-start:has(.m-menu--flyout).m-scale-fade-enter-from,
506
+ .m-popover__content--right-start:has(.m-menu--flyout).m-scale-fade-leave-to {
507
+ opacity: 0;
508
+ transform: translateX(calc(var(--m-motion-distance) * -0.5)) scale(0.98);
509
+ }
510
+
511
+ .m-popover__content--bottom-start:has(.m-menu--flyout).m-scale-fade-enter-from,
512
+ .m-popover__content--bottom-start:has(.m-menu--flyout).m-scale-fade-leave-to {
513
+ opacity: 0;
514
+ transform: translateY(calc(var(--m-motion-distance) * -0.35)) scale(0.98);
515
+ }
516
+
517
+ .m-menu--flyout .m-menu__item {
518
+ margin-top: var(--m-menu-flyout-gap);
519
+ }
520
+
521
+ .m-menu--flyout .m-menu__item:first-child {
522
+ margin-top: 0;
523
+ }
524
+
525
+ .m-menu--flyout .m-menu__item-content {
526
+ height: var(--m-menu-flyout-item-height);
527
+ padding-inline: var(--m-space-3);
528
+ }
529
+
530
+ .m-menu--flyout .m-menu__item-content::before {
531
+ inset: 0 0.375rem;
532
+ border-radius: calc(var(--m-menu-flyout-radius) - 0.125rem);
533
+ }
534
+
535
+ .m-menu--flyout .m-menu__icon {
536
+ height: 1.125rem;
537
+ margin-inline-end: 0.625rem;
538
+ width: 1.125rem;
539
+ }
540
+
541
+ .m-menu--flyout .m-menu__icon .m-icon {
542
+ height: 1.125rem;
543
+ width: 1.125rem;
544
+ }
545
+
546
+ .m-menu--flyout .m-menu__label {
547
+ font-size: var(--m-font-size-sm);
548
+ font-weight: 500;
549
+ line-height: 1.4;
550
+ }
551
+
552
+ .m-menu--flyout .m-menu__item-content--selected::before {
553
+ background: var(--m-menu-item-color-active) !important;
554
+ }
555
+
556
+ .m-menu--flyout .m-menu__item-content--selected .m-menu__label,
557
+ .m-menu--flyout .m-menu__item-content--selected .m-menu__icon {
558
+ color: var(--m-menu-item-text-active);
559
+ font-weight: 600;
560
+ }
561
+
562
+ .m-menu--flyout .m-menu__separator {
563
+ margin: var(--m-menu-flyout-gap) 0.5rem;
564
+ }