morya-ui 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/CHANGELOG.md +527 -490
  2. package/LICENSE +21 -21
  3. package/README.md +150 -150
  4. package/README.zh-CN.md +150 -150
  5. package/dist/{Button-dMqRmoYa.js → Button-gBiRj7wz.js} +11 -6
  6. package/dist/{FlyoutSubmenu-BrUPmJa1.js → FlyoutSubmenu-H_741alW.js} +2 -2
  7. package/dist/{Loading-BSsRs6v9.js → Loading-qS2Yv_gm.js} +1 -1
  8. package/dist/{Pagination-CqpC5EAs.js → Pagination-Bvv2qvEK.js} +1 -1
  9. package/dist/{Popover-BQ07q4VV.js → Popover-rnZG_ap0.js} +3 -3
  10. package/dist/{Select-CKGrSoaC.js → Select-CiXd074W.js} +3 -3
  11. package/dist/{Tooltip-D5DO0B3z.js → Tooltip-B02o9BOW.js} +3 -3
  12. package/dist/accordion/style.css +1148 -1148
  13. package/dist/auto-complete/index.js +3 -3
  14. package/dist/auto-complete/style.css +1690 -1690
  15. package/dist/avatar/style.css +1261 -1261
  16. package/dist/badge/style.css +1315 -1315
  17. package/dist/block-ui/index.js +1 -1
  18. package/dist/block-ui/style.css +1148 -1148
  19. package/dist/breadcrumb/style.css +1148 -1148
  20. package/dist/button/index.js +1 -1
  21. package/dist/button/style.css +2134 -1897
  22. package/dist/card/style.css +1148 -1148
  23. package/dist/carousel/style.css +1249 -1249
  24. package/dist/cascade-select/index.js +3 -3
  25. package/dist/cascade-select/style.css +1839 -1839
  26. package/dist/checkbox/style.css +1148 -1148
  27. package/dist/chip/style.css +1292 -1292
  28. package/dist/command-menu/index.js +1 -1
  29. package/dist/command-menu/style.css +1381 -1381
  30. package/dist/components/AutoComplete/styles.css +209 -209
  31. package/dist/components/Avatar/styles.css +113 -113
  32. package/dist/components/Badge/styles.css +165 -165
  33. package/dist/components/Button/Button.vue.d.ts +1 -0
  34. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  35. package/dist/components/Button/styles.css +962 -725
  36. package/dist/components/Button/types.d.ts +9 -4
  37. package/dist/components/Button/types.d.ts.map +1 -1
  38. package/dist/components/Carousel/styles.css +101 -101
  39. package/dist/components/CascadeSelect/styles.css +157 -157
  40. package/dist/components/Chip/styles.css +144 -144
  41. package/dist/components/CommandMenu/styles.css +102 -102
  42. package/dist/components/ConfigProvider/styles.css +6 -6
  43. package/dist/components/ConfirmDialog/styles.css +24 -24
  44. package/dist/components/ConfirmPopup/styles.css +35 -35
  45. package/dist/components/ContextMenu/ContextMenu.vue.d.ts.map +1 -1
  46. package/dist/components/ContextMenu/styles.css +138 -133
  47. package/dist/components/DatePicker/styles.css +335 -335
  48. package/dist/components/Dialog/styles.css +421 -421
  49. package/dist/components/Dock/styles.css +84 -84
  50. package/dist/components/Drawer/styles.css +334 -334
  51. package/dist/components/Dropdown/styles.css +130 -130
  52. package/dist/components/Empty/styles.css +146 -146
  53. package/dist/components/FileUpload/styles.css +359 -359
  54. package/dist/components/Form/styles.css +114 -114
  55. package/dist/components/Gallery/styles.css +100 -100
  56. package/dist/components/Input/styles.css +356 -356
  57. package/dist/components/InputColor/styles.css +129 -129
  58. package/dist/components/InputNumber/styles.css +261 -261
  59. package/dist/components/InputPassword/styles.css +178 -178
  60. package/dist/components/InputTags/styles.css +112 -112
  61. package/dist/components/Layout/styles.css +433 -433
  62. package/dist/components/Loading/styles.css +378 -378
  63. package/dist/components/MegaMenu/styles.css +97 -97
  64. package/dist/components/Menu/styles.css +564 -564
  65. package/dist/components/Menubar/styles.css +144 -144
  66. package/dist/components/Message/styles.css +250 -250
  67. package/dist/components/MeterGroup/styles.css +49 -49
  68. package/dist/components/Page/PageContent.vue.d.ts +1 -0
  69. package/dist/components/Page/PageContent.vue.d.ts.map +1 -1
  70. package/dist/components/Page/styles.css +412 -394
  71. package/dist/components/Page/types.d.ts +5 -0
  72. package/dist/components/Page/types.d.ts.map +1 -1
  73. package/dist/components/Pagination/styles.css +105 -105
  74. package/dist/components/Popover/styles.css +92 -153
  75. package/dist/components/Result/styles.css +146 -146
  76. package/dist/components/Scrollbar/styles.css +131 -131
  77. package/dist/components/Select/styles.css +192 -192
  78. package/dist/components/SelectButton/styles.css +105 -105
  79. package/dist/components/Sidebar/styles.css +74 -74
  80. package/dist/components/Slider/styles.css +211 -211
  81. package/dist/components/SplitButton/styles.css +216 -216
  82. package/dist/components/Status/styles.css +191 -191
  83. package/dist/components/Stepper/styles.css +135 -135
  84. package/dist/components/Switch/styles.css +129 -129
  85. package/dist/components/Table/Table.vue.d.ts +1 -0
  86. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  87. package/dist/components/Table/styles.css +28 -0
  88. package/dist/components/Table/types.d.ts +6 -0
  89. package/dist/components/Table/types.d.ts.map +1 -1
  90. package/dist/components/Tabs/styles.css +131 -131
  91. package/dist/components/Terminal/styles.css +74 -74
  92. package/dist/components/Textarea/styles.css +126 -126
  93. package/dist/components/TieredMenu/styles.css +125 -125
  94. package/dist/components/Timeline/styles.css +159 -159
  95. package/dist/components/TreeSelect/styles.css +161 -161
  96. package/dist/components/TreeTable/styles.css +97 -97
  97. package/dist/components/VirtualScroller/styles.css +27 -27
  98. package/dist/config-provider/style.css +2472 -2235
  99. package/dist/confirm-dialog/index.js +2 -2
  100. package/dist/confirm-dialog/style.css +2555 -2318
  101. package/dist/confirm-popup/index.js +5 -5
  102. package/dist/confirm-popup/style.css +2145 -1908
  103. package/dist/context-menu/index.js +105 -96
  104. package/dist/context-menu/style.css +1417 -1412
  105. package/dist/data-view/index.js +2 -2
  106. package/dist/data-view/style.css +1631 -1631
  107. package/dist/date-picker/index.js +3 -3
  108. package/dist/date-picker/style.css +1483 -1483
  109. package/dist/dialog/index.js +2 -2
  110. package/dist/dialog/style.css +2531 -2294
  111. package/dist/divider/style.css +1148 -1148
  112. package/dist/dock/style.css +1232 -1232
  113. package/dist/drawer/index.js +1 -1
  114. package/dist/drawer/style.css +1482 -1482
  115. package/dist/dropdown/index.js +4 -4
  116. package/dist/dropdown/style.css +1409 -1409
  117. package/dist/empty/style.css +1294 -1294
  118. package/dist/fieldset/style.css +1148 -1148
  119. package/dist/file-upload/style.css +1507 -1507
  120. package/dist/flex/index.js +1 -1
  121. package/dist/flex/style.css +1148 -1148
  122. package/dist/float-label/style.css +1148 -1148
  123. package/dist/fluid/style.css +1148 -1148
  124. package/dist/form/style.css +1264 -1264
  125. package/dist/gallery/style.css +1379 -1379
  126. package/dist/grid/index.js +1 -1
  127. package/dist/grid/style.css +1148 -1148
  128. package/dist/icon/style.css +1148 -1148
  129. package/dist/icon-field/style.css +1504 -1504
  130. package/dist/index.js +1246 -1225
  131. package/dist/inplace/style.css +1148 -1148
  132. package/dist/input/style.css +1504 -1504
  133. package/dist/input-color/style.css +1279 -1279
  134. package/dist/input-group/style.css +1148 -1148
  135. package/dist/input-number/style.css +1409 -1409
  136. package/dist/input-otp/style.css +1148 -1148
  137. package/dist/input-password/style.css +1326 -1326
  138. package/dist/input-tags/style.css +1260 -1260
  139. package/dist/knob/style.css +1148 -1148
  140. package/dist/label/style.css +1148 -1148
  141. package/dist/layout/style.css +1712 -1712
  142. package/dist/listbox/style.css +1306 -1306
  143. package/dist/loading/index.js +1 -1
  144. package/dist/loading/style.css +1528 -1528
  145. package/dist/mega-menu/index.js +3 -3
  146. package/dist/mega-menu/style.css +1245 -1245
  147. package/dist/menu/index.js +5 -5
  148. package/dist/menu/style.css +2001 -2062
  149. package/dist/menubar/index.js +3 -3
  150. package/dist/menubar/style.css +1423 -1423
  151. package/dist/message/index.js +1 -1
  152. package/dist/message/style.css +1398 -1398
  153. package/dist/meter-group/style.css +1199 -1199
  154. package/dist/order-list/style.css +1148 -1148
  155. package/dist/{overlayPlacement-Cd20JTD_.js → overlayPlacement-qwEJPVS4.js} +8 -8
  156. package/dist/page/index.js +8 -3
  157. package/dist/page/style.css +2668 -2413
  158. package/dist/pagination/index.js +1 -1
  159. package/dist/pagination/style.css +1445 -1445
  160. package/dist/panel/style.css +1148 -1148
  161. package/dist/pick-list/style.css +1148 -1148
  162. package/dist/popover/index.js +1 -1
  163. package/dist/popover/style.css +1242 -1303
  164. package/dist/progress-bar/style.css +1148 -1148
  165. package/dist/progress-spinner/style.css +1148 -1148
  166. package/dist/radio/style.css +1148 -1148
  167. package/dist/rating/style.css +1148 -1148
  168. package/dist/result/style.css +1294 -1294
  169. package/dist/scroll-top/style.css +1279 -1279
  170. package/dist/scrollbar/style.css +1281 -1281
  171. package/dist/select/index.js +1 -1
  172. package/dist/select/style.css +1901 -1901
  173. package/dist/select-button/style.css +1255 -1255
  174. package/dist/shared/gap.d.ts +4 -1
  175. package/dist/shared/gap.d.ts.map +1 -1
  176. package/dist/shared/overlayPlacement.d.ts.map +1 -1
  177. package/dist/shared/styles/control-affix-icon.css +110 -110
  178. package/dist/shared/styles/control-suffix.css +118 -118
  179. package/dist/shared/styles/select-overlay.css +175 -175
  180. package/dist/sidebar/style.css +1222 -1222
  181. package/dist/skeleton/style.css +1148 -1148
  182. package/dist/slider/style.css +1361 -1361
  183. package/dist/space/index.js +1 -1
  184. package/dist/space/style.css +1148 -1148
  185. package/dist/speed-dial/index.js +3 -3
  186. package/dist/speed-dial/style.css +1148 -1148
  187. package/dist/split-button/index.js +3 -3
  188. package/dist/split-button/style.css +2326 -2089
  189. package/dist/splitter/style.css +1148 -1148
  190. package/dist/status/style.css +1339 -1339
  191. package/dist/stepper/style.css +1283 -1283
  192. package/dist/styles/base.css +790 -790
  193. package/dist/styles.css +1 -1
  194. package/dist/switch/style.css +1279 -1279
  195. package/dist/table/index.js +245 -240
  196. package/dist/table/style.css +1840 -1812
  197. package/dist/tabs/style.css +1410 -1410
  198. package/dist/tag/style.css +1148 -1148
  199. package/dist/terminal/style.css +1224 -1224
  200. package/dist/textarea/style.css +1274 -1274
  201. package/dist/theme/motionPresets.d.ts.map +1 -1
  202. package/dist/theme/styles.css +358 -358
  203. package/dist/tiered-menu/index.js +4 -4
  204. package/dist/tiered-menu/style.css +1404 -1404
  205. package/dist/timeline/style.css +1438 -1438
  206. package/dist/toast/index.js +1 -1
  207. package/dist/toast/style.css +1148 -1148
  208. package/dist/toggle-button/style.css +1148 -1148
  209. package/dist/toolbar/style.css +1148 -1148
  210. package/dist/tooltip/index.js +1 -1
  211. package/dist/tooltip/style.css +1148 -1148
  212. package/dist/tree/style.css +1148 -1148
  213. package/dist/tree-select/index.js +3 -3
  214. package/dist/tree-select/style.css +1843 -1843
  215. package/dist/tree-table/style.css +1245 -1245
  216. package/dist/{useFloatingViewportSync-DZdJ7W8n.js → useFloatingViewportSync-wLLKIGUA.js} +4 -1
  217. package/dist/{useMotionTransition-Bxnnb_9u.js → useMotionTransition-95Y79FoL.js} +1 -1
  218. package/dist/virtual-scroller/style.css +1309 -1309
  219. package/dist/{vnode-C7Y1SjKB.js → vnode-CmdNQlN7.js} +18 -23
  220. package/package.json +32 -29
@@ -1,725 +1,962 @@
1
- .m-button {
2
- --m-button-padding-x-small: var(--m-control-padding-x-small);
3
- --m-button-padding-x-medium: calc(
4
- var(--m-control-padding-x-medium) + var(--m-space-1)
5
- );
6
- --m-button-padding-x-large: calc(
7
- var(--m-control-padding-x-large) + var(--m-space-1)
8
- );
9
- --m-button-icon-stack-min-height: 3.25rem;
10
- --m-button-badge-min-width: 1.15rem;
11
- --m-button-spinner-size: 0.875rem;
12
- --m-button-icon-size: 1rem;
13
- --m-button-bg: var(--m-color-primary);
14
- --m-button-fg: var(--m-color-on-emphasis);
15
- --m-button-border: var(--m-color-primary);
16
- --m-button-hover-bg: var(--m-color-primary-hover);
17
- --m-button-hover-fg: var(--m-color-on-emphasis);
18
- --m-button-hover-border: var(--m-color-primary-hover);
19
- --m-button-active-bg: color-mix(
20
- in srgb,
21
- var(--m-color-primary) 82%,
22
- black
23
- );
24
- align-items: center;
25
- background: var(--m-button-bg);
26
- border: var(--m-border-width) solid var(--m-button-border);
27
- border-radius: var(--m-radius-control);
28
- color: var(--m-button-fg);
29
- cursor: pointer;
30
- display: inline-flex;
31
- flex-direction: row;
32
- font-family: var(--m-font-sans);
33
- font-size: var(--m-control-font-medium);
34
- font-weight: 600;
35
- gap: var(--m-space-2);
36
- justify-content: center;
37
- line-height: 1;
38
- min-height: var(--m-control-height-medium);
39
- padding: 0 var(--m-button-padding-x-medium);
40
- position: relative;
41
- transition:
42
- background-color var(--m-motion-fast) var(--m-motion-ease),
43
- border-color var(--m-motion-fast) var(--m-motion-ease),
44
- color var(--m-motion-fast) var(--m-motion-ease),
45
- box-shadow var(--m-motion-fast) var(--m-motion-ease),
46
- opacity var(--m-motion-fast) var(--m-motion-ease),
47
- transform 160ms var(--m-motion-ease);
48
- vertical-align: middle;
49
- white-space: nowrap;
50
- }
51
-
52
- @media (hover: hover) and (pointer: fine) {
53
- .m-button:hover:not(:disabled) {
54
- background: var(--m-button-hover-bg);
55
- border-color: var(--m-button-hover-border);
56
- color: var(--m-button-hover-fg);
57
- }
58
- }
59
-
60
- .m-button:active:not(:disabled) {
61
- background: var(--m-button-active-bg);
62
- }
63
-
64
- .m-button--press:active:not(:disabled) {
65
- transform: scale(0.97);
66
- }
67
-
68
- /* Naive-style focus: soft glow, not outline-offset ring */
69
- .m-button:focus {
70
- outline: none;
71
- }
72
-
73
- .m-button:focus-visible {
74
- box-shadow: var(--m-focus-shadow);
75
- outline: none;
76
- }
77
-
78
- .m-button:disabled {
79
- cursor: not-allowed;
80
- opacity: var(--m-opacity-disabled);
81
- }
82
-
83
- .m-button--primary {
84
- --m-button-bg: var(--m-color-primary);
85
- --m-button-fg: var(--m-color-on-emphasis);
86
- --m-button-border: var(--m-color-primary);
87
- --m-button-hover-bg: var(--m-color-primary-hover);
88
- --m-button-hover-fg: var(--m-color-on-emphasis);
89
- --m-button-hover-border: var(--m-color-primary-hover);
90
- --m-button-active-bg: color-mix(
91
- in srgb,
92
- var(--m-color-primary) 82%,
93
- black
94
- );
95
- }
96
-
97
- .m-button--secondary {
98
- --m-button-bg: color-mix(
99
- in srgb,
100
- var(--m-color-text-muted) 16%,
101
- var(--m-color-surface)
102
- );
103
- --m-button-fg: var(--m-color-text);
104
- --m-button-border: transparent;
105
- --m-button-hover-bg: color-mix(
106
- in srgb,
107
- var(--m-color-text-muted) 24%,
108
- var(--m-color-surface)
109
- );
110
- --m-button-hover-fg: var(--m-color-text);
111
- --m-button-hover-border: transparent;
112
- --m-button-active-bg: color-mix(
113
- in srgb,
114
- var(--m-color-text-muted) 32%,
115
- var(--m-color-surface)
116
- );
117
- }
118
-
119
- .m-button--success {
120
- --m-button-bg: var(--m-color-success);
121
- --m-button-fg: var(--m-color-on-emphasis);
122
- --m-button-border: var(--m-color-success);
123
- --m-button-hover-bg: color-mix(
124
- in srgb,
125
- var(--m-color-success) 85%,
126
- black
127
- );
128
- --m-button-hover-fg: var(--m-color-on-emphasis);
129
- --m-button-hover-border: color-mix(
130
- in srgb,
131
- var(--m-color-success) 85%,
132
- black
133
- );
134
- --m-button-active-bg: color-mix(
135
- in srgb,
136
- var(--m-color-success) 75%,
137
- black
138
- );
139
- }
140
-
141
- .m-button--info {
142
- --m-button-bg: var(--m-color-info);
143
- --m-button-fg: var(--m-color-on-emphasis);
144
- --m-button-border: var(--m-color-info);
145
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-info) 85%, black);
146
- --m-button-hover-fg: var(--m-color-on-emphasis);
147
- --m-button-hover-border: color-mix(
148
- in srgb,
149
- var(--m-color-info) 85%,
150
- black
151
- );
152
- --m-button-active-bg: color-mix(in srgb, var(--m-color-info) 75%, black);
153
- }
154
-
155
- .m-button--warn {
156
- --m-button-bg: var(--m-color-warn);
157
- --m-button-fg: var(--m-color-on-emphasis);
158
- --m-button-border: var(--m-color-warn);
159
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-warn) 85%, black);
160
- --m-button-hover-fg: var(--m-color-on-emphasis);
161
- --m-button-hover-border: color-mix(
162
- in srgb,
163
- var(--m-color-warn) 85%,
164
- black
165
- );
166
- --m-button-active-bg: color-mix(in srgb, var(--m-color-warn) 75%, black);
167
- }
168
-
169
- .m-button--help {
170
- --m-button-bg: var(--m-color-help);
171
- --m-button-fg: var(--m-color-on-emphasis);
172
- --m-button-border: var(--m-color-help);
173
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-help) 85%, black);
174
- --m-button-hover-fg: var(--m-color-on-emphasis);
175
- --m-button-hover-border: color-mix(
176
- in srgb,
177
- var(--m-color-help) 85%,
178
- black
179
- );
180
- --m-button-active-bg: color-mix(in srgb, var(--m-color-help) 75%, black);
181
- }
182
-
183
- .m-button--danger {
184
- --m-button-bg: var(--m-color-danger);
185
- --m-button-fg: var(--m-color-on-emphasis);
186
- --m-button-border: var(--m-color-danger);
187
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-danger) 85%, black);
188
- --m-button-hover-fg: var(--m-color-on-emphasis);
189
- --m-button-hover-border: color-mix(
190
- in srgb,
191
- var(--m-color-danger) 85%,
192
- black
193
- );
194
- --m-button-active-bg: color-mix(
195
- in srgb,
196
- var(--m-color-danger) 75%,
197
- black
198
- );
199
- }
200
-
201
- .m-button--contrast {
202
- --m-button-bg: var(--m-color-contrast);
203
- --m-button-fg: var(--m-color-contrast-fg);
204
- --m-button-border: var(--m-color-contrast);
205
- --m-button-hover-bg: var(--m-color-contrast-hover);
206
- --m-button-hover-fg: var(--m-color-contrast-fg);
207
- --m-button-hover-border: var(--m-color-contrast-hover);
208
- --m-button-active-bg: var(--m-color-contrast-active);
209
- }
210
-
211
- .m-button--outlined {
212
- --m-button-bg: transparent;
213
- --m-button-fg: var(--m-button-border);
214
- --m-button-hover-bg: color-mix(
215
- in srgb,
216
- var(--m-button-border) 10%,
217
- transparent
218
- );
219
- --m-button-hover-fg: var(--m-button-border);
220
- --m-button-hover-border: var(--m-button-border);
221
- --m-button-active-bg: color-mix(
222
- in srgb,
223
- var(--m-button-border) 16%,
224
- transparent
225
- );
226
- }
227
-
228
- .m-button--secondary.m-button--outlined {
229
- --m-button-border: var(--m-color-border);
230
- --m-button-fg: var(--m-color-text);
231
- --m-button-hover-fg: var(--m-color-text);
232
- }
233
-
234
- .m-button--text,
235
- .m-button--link {
236
- --m-button-bg: transparent;
237
- --m-button-border: transparent;
238
- --m-button-fg: var(--m-color-primary);
239
- --m-button-hover-bg: color-mix(
240
- in srgb,
241
- var(--m-color-primary) 10%,
242
- transparent
243
- );
244
- --m-button-hover-fg: var(--m-color-primary);
245
- --m-button-hover-border: transparent;
246
- --m-button-active-bg: color-mix(
247
- in srgb,
248
- var(--m-color-primary) 16%,
249
- transparent
250
- );
251
- }
252
-
253
- .m-button--secondary.m-button--text,
254
- .m-button--secondary.m-button--link {
255
- --m-button-fg: var(--m-color-text-muted);
256
- --m-button-hover-bg: color-mix(
257
- in srgb,
258
- var(--m-color-text-muted) 12%,
259
- transparent
260
- );
261
- --m-button-hover-fg: var(--m-color-text);
262
- }
263
-
264
- .m-button--success.m-button--text,
265
- .m-button--success.m-button--link,
266
- .m-button--success.m-button--outlined {
267
- --m-button-fg: var(--m-color-success);
268
- --m-button-border: var(--m-color-success);
269
- --m-button-hover-bg: color-mix(
270
- in srgb,
271
- var(--m-color-success) 10%,
272
- transparent
273
- );
274
- --m-button-hover-fg: var(--m-color-success);
275
- --m-button-hover-border: var(--m-color-success);
276
- }
277
-
278
- .m-button--info.m-button--text,
279
- .m-button--info.m-button--link,
280
- .m-button--info.m-button--outlined {
281
- --m-button-fg: var(--m-color-info);
282
- --m-button-border: var(--m-color-info);
283
- --m-button-hover-bg: color-mix(
284
- in srgb,
285
- var(--m-color-info) 10%,
286
- transparent
287
- );
288
- --m-button-hover-fg: var(--m-color-info);
289
- --m-button-hover-border: var(--m-color-info);
290
- }
291
-
292
- .m-button--warn.m-button--text,
293
- .m-button--warn.m-button--link,
294
- .m-button--warn.m-button--outlined {
295
- --m-button-fg: var(--m-color-warn);
296
- --m-button-border: var(--m-color-warn);
297
- --m-button-hover-bg: color-mix(
298
- in srgb,
299
- var(--m-color-warn) 10%,
300
- transparent
301
- );
302
- --m-button-hover-fg: var(--m-color-warn);
303
- --m-button-hover-border: var(--m-color-warn);
304
- }
305
-
306
- .m-button--help.m-button--text,
307
- .m-button--help.m-button--link,
308
- .m-button--help.m-button--outlined {
309
- --m-button-fg: var(--m-color-help);
310
- --m-button-border: var(--m-color-help);
311
- --m-button-hover-bg: color-mix(
312
- in srgb,
313
- var(--m-color-help) 10%,
314
- transparent
315
- );
316
- --m-button-hover-fg: var(--m-color-help);
317
- --m-button-hover-border: var(--m-color-help);
318
- }
319
-
320
- .m-button--danger.m-button--text,
321
- .m-button--danger.m-button--link,
322
- .m-button--danger.m-button--outlined {
323
- --m-button-fg: var(--m-color-danger);
324
- --m-button-border: var(--m-color-danger);
325
- --m-button-hover-bg: color-mix(
326
- in srgb,
327
- var(--m-color-danger) 10%,
328
- transparent
329
- );
330
- --m-button-hover-fg: var(--m-color-danger);
331
- --m-button-hover-border: var(--m-color-danger);
332
- }
333
-
334
- .m-button--contrast.m-button--text,
335
- .m-button--contrast.m-button--link,
336
- .m-button--contrast.m-button--outlined {
337
- --m-button-fg: var(--m-color-contrast);
338
- --m-button-border: var(--m-color-contrast);
339
- --m-button-hover-bg: color-mix(
340
- in srgb,
341
- var(--m-color-contrast) 10%,
342
- transparent
343
- );
344
- --m-button-hover-fg: var(--m-color-contrast);
345
- --m-button-hover-border: var(--m-color-contrast);
346
- }
347
-
348
- .m-button--plain.m-button--text,
349
- .m-button--plain.m-button--outlined,
350
- .m-button--plain.m-button--link {
351
- --m-button-fg: var(--m-color-text-muted);
352
- --m-button-border: var(--m-color-border);
353
- --m-button-hover-bg: color-mix(
354
- in srgb,
355
- var(--m-color-text-muted) 12%,
356
- transparent
357
- );
358
- --m-button-hover-fg: var(--m-color-text);
359
- --m-button-hover-border: var(--m-color-border);
360
- }
361
-
362
- .m-button--link {
363
- height: auto;
364
- min-height: 0;
365
- padding: 0;
366
- }
367
-
368
- .m-button--link:hover:not(:disabled) {
369
- text-decoration: underline;
370
- }
371
-
372
- .m-button--ghost {
373
- --m-button-bg: transparent;
374
- --m-button-fg: var(--m-button-border);
375
- --m-button-hover-bg: color-mix(
376
- in srgb,
377
- var(--m-button-border) 12%,
378
- transparent
379
- );
380
- --m-button-hover-fg: var(--m-button-border);
381
- --m-button-hover-border: var(--m-button-border);
382
- --m-button-active-bg: color-mix(
383
- in srgb,
384
- var(--m-button-border) 18%,
385
- transparent
386
- );
387
- }
388
-
389
- .m-button--secondary.m-button--ghost {
390
- --m-button-border: var(--m-color-border);
391
- --m-button-fg: var(--m-color-text);
392
- --m-button-hover-fg: var(--m-color-text);
393
- }
394
-
395
- .m-button--success.m-button--ghost {
396
- --m-button-fg: var(--m-color-success);
397
- --m-button-border: var(--m-color-success);
398
- }
399
-
400
- .m-button--info.m-button--ghost {
401
- --m-button-fg: var(--m-color-info);
402
- --m-button-border: var(--m-color-info);
403
- }
404
-
405
- .m-button--warn.m-button--ghost {
406
- --m-button-fg: var(--m-color-warn);
407
- --m-button-border: var(--m-color-warn);
408
- }
409
-
410
- .m-button--help.m-button--ghost {
411
- --m-button-fg: var(--m-color-help);
412
- --m-button-border: var(--m-color-help);
413
- }
414
-
415
- .m-button--danger.m-button--ghost {
416
- --m-button-fg: var(--m-color-danger);
417
- --m-button-border: var(--m-color-danger);
418
- }
419
-
420
- .m-button--contrast.m-button--ghost {
421
- --m-button-fg: var(--m-color-contrast);
422
- --m-button-border: var(--m-color-contrast);
423
- }
424
-
425
- .m-button--quaternary {
426
- --m-button-bg: transparent;
427
- --m-button-border: transparent;
428
- --m-button-fg: var(--m-color-text);
429
- --m-button-hover-bg: color-mix(
430
- in srgb,
431
- var(--m-color-text-muted) 10%,
432
- transparent
433
- );
434
- --m-button-hover-fg: var(--m-color-text);
435
- --m-button-hover-border: transparent;
436
- --m-button-active-bg: color-mix(
437
- in srgb,
438
- var(--m-color-text-muted) 16%,
439
- transparent
440
- );
441
- }
442
-
443
- .m-button--custom {
444
- --m-button-bg: var(--m-button-color);
445
- --m-button-fg: var(--m-color-on-emphasis);
446
- --m-button-border: var(--m-button-color);
447
- --m-button-hover-bg: color-mix(in srgb, var(--m-button-color) 85%, black);
448
- --m-button-hover-fg: var(--m-color-on-emphasis);
449
- --m-button-hover-border: color-mix(
450
- in srgb,
451
- var(--m-button-color) 85%,
452
- black
453
- );
454
- --m-button-active-bg: color-mix(
455
- in srgb,
456
- var(--m-button-color) 75%,
457
- black
458
- );
459
- }
460
-
461
- .m-button--custom.m-button--outlined,
462
- .m-button--custom.m-button--ghost,
463
- .m-button--custom.m-button--text,
464
- .m-button--custom.m-button--quaternary,
465
- .m-button--custom.m-button--link {
466
- --m-button-bg: transparent;
467
- --m-button-fg: var(--m-button-color);
468
- --m-button-border: var(--m-button-color);
469
- --m-button-hover-bg: color-mix(
470
- in srgb,
471
- var(--m-button-color) 12%,
472
- transparent
473
- );
474
- --m-button-hover-fg: var(--m-button-color);
475
- --m-button-hover-border: var(--m-button-color);
476
- }
477
-
478
- .m-button--custom.m-button--text,
479
- .m-button--custom.m-button--quaternary,
480
- .m-button--custom.m-button--link {
481
- --m-button-border: transparent;
482
- --m-button-hover-border: transparent;
483
- }
484
-
485
- .m-button-group {
486
- display: inline-flex;
487
- vertical-align: middle;
488
- }
489
-
490
- .m-button-group--fluid {
491
- display: flex;
492
- width: 100%;
493
- }
494
-
495
- .m-button-group--fluid > .m-button {
496
- flex: 1;
497
- }
498
-
499
- .m-button-group > .m-button {
500
- border-radius: 0;
501
- margin: 0;
502
- }
503
-
504
- .m-button-group > .m-button + .m-button {
505
- margin-left: -1px;
506
- }
507
-
508
- .m-button-group > .m-button:first-child {
509
- border-top-left-radius: var(--m-radius-control);
510
- border-bottom-left-radius: var(--m-radius-control);
511
- }
512
-
513
- .m-button-group > .m-button:last-child {
514
- border-top-right-radius: var(--m-radius-control);
515
- border-bottom-right-radius: var(--m-radius-control);
516
- }
517
-
518
- .m-button--raised {
519
- box-shadow: var(--m-shadow-raised);
520
- }
521
-
522
- .m-button--raised:focus-visible {
523
- box-shadow: var(--m-focus-shadow), var(--m-shadow-raised);
524
- }
525
-
526
- .m-button--rounded {
527
- border-radius: var(--m-radius-full);
528
- }
529
-
530
- .m-button--icon-only {
531
- gap: 0;
532
- min-width: var(--m-control-height-medium);
533
- padding: 0;
534
- width: var(--m-control-height-medium);
535
- }
536
-
537
- .m-button--icon-only.m-button--small {
538
- min-width: var(--m-control-height-small);
539
- width: var(--m-control-height-small);
540
- }
541
-
542
- .m-button--icon-only.m-button--large {
543
- min-width: var(--m-control-height-large);
544
- width: var(--m-control-height-large);
545
- }
546
-
547
- .m-button--icon-right {
548
- flex-direction: row-reverse;
549
- }
550
-
551
- .m-button--icon-top {
552
- flex-direction: column;
553
- min-height: var(--m-button-icon-stack-min-height);
554
- padding-block: var(--m-space-2);
555
- }
556
-
557
- .m-button--icon-bottom {
558
- flex-direction: column-reverse;
559
- min-height: var(--m-button-icon-stack-min-height);
560
- padding-block: var(--m-space-2);
561
- }
562
-
563
- .m-button--fluid {
564
- display: flex;
565
- width: 100%;
566
- }
567
-
568
- .m-button--small {
569
- --m-button-icon-size: 0.875rem;
570
- font-size: var(--m-control-font-small);
571
- min-height: var(--m-control-height-small);
572
- padding: 0 var(--m-button-padding-x-small);
573
- }
574
-
575
- .m-button--large {
576
- --m-button-icon-size: 1.25rem;
577
- font-size: var(--m-control-font-large);
578
- min-height: var(--m-control-height-large);
579
- padding: 0 var(--m-button-padding-x-large);
580
- }
581
-
582
- .m-button__icon,
583
- .m-button__label {
584
- align-items: center;
585
- display: inline-flex;
586
- justify-content: center;
587
- }
588
-
589
- .m-button__icon,
590
- .m-button__label,
591
- .m-button__badge {
592
- position: relative;
593
- z-index: 1;
594
- }
595
-
596
- .m-button__ripple {
597
- border-radius: inherit;
598
- inset: 0;
599
- overflow: hidden;
600
- pointer-events: none;
601
- position: absolute;
602
- z-index: 0;
603
- }
604
-
605
- .m-button__ripple-wave {
606
- background: currentColor;
607
- border-radius: var(--m-radius-full);
608
- opacity: 0;
609
- pointer-events: none;
610
- position: absolute;
611
- transform: scale(0);
612
- will-change: transform, opacity;
613
- }
614
-
615
- /* Used only when Web Animations API is unavailable. */
616
- .m-button__ripple-wave--fallback {
617
- animation: m-button-ripple 560ms var(--m-motion-ease) forwards;
618
- }
619
-
620
- @keyframes m-button-ripple {
621
- 0% {
622
- opacity: 0.42;
623
- transform: scale(0);
624
- }
625
- 55% {
626
- opacity: 0.22;
627
- transform: scale(0.55);
628
- }
629
- 100% {
630
- opacity: 0;
631
- transform: scale(1);
632
- }
633
- }
634
-
635
- .m-button__icon {
636
- flex: 0 0 auto;
637
- width: var(--m-button-icon-size);
638
- height: var(--m-button-icon-size);
639
- line-height: 0;
640
- }
641
-
642
- .m-button__icon :is(.m-icon, .m-button__icon-graphic, svg) {
643
- display: block;
644
- flex-shrink: 0;
645
- width: 100%;
646
- height: 100%;
647
- }
648
-
649
- .m-button__icon .m-icon {
650
- max-width: 100%;
651
- max-height: 100%;
652
- }
653
-
654
- .m-button__badge {
655
- align-items: center;
656
- background: var(--m-color-contrast);
657
- border-radius: var(--m-radius-full);
658
- color: var(--m-color-contrast-fg);
659
- display: inline-flex;
660
- font-size: var(--m-font-size-xs);
661
- font-weight: 700;
662
- justify-content: center;
663
- line-height: 1;
664
- margin-inline-start: var(--m-space-1);
665
- min-width: var(--m-button-badge-min-width);
666
- padding: var(--m-space-1) var(--m-space-2);
667
- }
668
-
669
- .m-button__badge--secondary {
670
- background: color-mix(
671
- in srgb,
672
- var(--m-color-text-muted) 25%,
673
- var(--m-color-surface)
674
- );
675
- color: var(--m-color-text);
676
- }
677
-
678
- .m-button__badge--success {
679
- background: var(--m-color-success);
680
- color: var(--m-color-on-emphasis);
681
- }
682
-
683
- .m-button__badge--info {
684
- background: var(--m-color-info);
685
- color: var(--m-color-on-emphasis);
686
- }
687
-
688
- .m-button__badge--warn {
689
- background: var(--m-color-warn);
690
- color: var(--m-color-on-emphasis);
691
- }
692
-
693
- .m-button__badge--danger {
694
- background: var(--m-color-danger);
695
- color: var(--m-color-on-emphasis);
696
- }
697
-
698
- .m-button__badge--contrast {
699
- background: var(--m-color-contrast);
700
- color: var(--m-color-contrast-fg);
701
- }
702
-
703
- .m-button__spinner {
704
- animation: m-button-spin var(--m-motion-spin-fast) linear infinite;
705
- border: 2px solid currentColor;
706
- border-right-color: transparent;
707
- border-radius: var(--m-radius-full);
708
- height: var(--m-button-spinner-size);
709
- width: var(--m-button-spinner-size);
710
- }
711
-
712
- @keyframes m-button-spin {
713
- to {
714
- transform: rotate(360deg);
715
- }
716
- }
717
-
718
- [data-m-motion="reduced"] .m-button__spinner,
719
- [data-m-motion="none"] .m-button__spinner {
720
- animation: none;
721
- }
722
-
723
- [data-m-motion="none"] .m-button__ripple-wave {
724
- display: none;
725
- }
1
+ .m-button {
2
+ --m-button-padding-x-small: var(--m-control-padding-x-small);
3
+ --m-button-padding-x-medium: calc(
4
+ var(--m-control-padding-x-medium) + var(--m-space-1)
5
+ );
6
+ --m-button-padding-x-large: calc(
7
+ var(--m-control-padding-x-large) + var(--m-space-1)
8
+ );
9
+ --m-button-icon-stack-min-height: 3.25rem;
10
+ --m-button-badge-min-width: 1.15rem;
11
+ --m-button-spinner-size: 0.875rem;
12
+ --m-button-icon-size: 1rem;
13
+ --m-button-bg: var(--m-color-primary);
14
+ --m-button-fg: var(--m-color-on-emphasis);
15
+ --m-button-border: var(--m-color-primary);
16
+ --m-button-hover-bg: var(--m-color-primary-hover);
17
+ --m-button-hover-fg: var(--m-color-on-emphasis);
18
+ --m-button-hover-border: var(--m-color-primary-hover);
19
+ --m-button-active-bg: color-mix(
20
+ in srgb,
21
+ var(--m-color-primary) 82%,
22
+ black
23
+ );
24
+ align-items: center;
25
+ background: var(--m-button-bg);
26
+ border: var(--m-border-width) solid var(--m-button-border);
27
+ border-radius: var(--m-radius-control);
28
+ color: var(--m-button-fg);
29
+ cursor: pointer;
30
+ display: inline-flex;
31
+ flex-direction: row;
32
+ font-family: var(--m-font-sans);
33
+ font-size: var(--m-control-font-medium);
34
+ font-weight: 600;
35
+ gap: var(--m-space-2);
36
+ justify-content: center;
37
+ line-height: 1;
38
+ min-height: var(--m-control-height-medium);
39
+ padding: 0 var(--m-button-padding-x-medium);
40
+ position: relative;
41
+ transition:
42
+ background-color var(--m-motion-fast) var(--m-motion-ease),
43
+ border-color var(--m-motion-fast) var(--m-motion-ease),
44
+ color var(--m-motion-fast) var(--m-motion-ease),
45
+ box-shadow var(--m-motion-fast) var(--m-motion-ease),
46
+ opacity var(--m-motion-fast) var(--m-motion-ease),
47
+ transform 160ms var(--m-motion-ease);
48
+ vertical-align: middle;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ @media (hover: hover) and (pointer: fine) {
53
+ .m-button:hover:not(:disabled) {
54
+ background: var(--m-button-hover-bg);
55
+ border-color: var(--m-button-hover-border);
56
+ color: var(--m-button-hover-fg);
57
+ }
58
+ }
59
+
60
+ .m-button:active:not(:disabled) {
61
+ background: var(--m-button-active-bg);
62
+ }
63
+
64
+ .m-button--press:active:not(:disabled) {
65
+ transform: scale(0.97);
66
+ }
67
+
68
+ /* Naive-style focus: soft glow, not outline-offset ring */
69
+ .m-button:focus {
70
+ outline: none;
71
+ }
72
+
73
+ .m-button:focus-visible {
74
+ box-shadow: var(--m-focus-shadow);
75
+ outline: none;
76
+ }
77
+
78
+ .m-button:disabled {
79
+ cursor: not-allowed;
80
+ opacity: var(--m-opacity-disabled);
81
+ }
82
+
83
+ .m-button--primary {
84
+ --m-button-bg: var(--m-color-primary);
85
+ --m-button-fg: var(--m-color-on-emphasis);
86
+ --m-button-border: var(--m-color-primary);
87
+ --m-button-hover-bg: var(--m-color-primary-hover);
88
+ --m-button-hover-fg: var(--m-color-on-emphasis);
89
+ --m-button-hover-border: var(--m-color-primary-hover);
90
+ --m-button-active-bg: color-mix(
91
+ in srgb,
92
+ var(--m-color-primary) 82%,
93
+ black
94
+ );
95
+ }
96
+
97
+ .m-button--secondary {
98
+ --m-button-bg: color-mix(
99
+ in srgb,
100
+ var(--m-color-text-muted) 16%,
101
+ var(--m-color-surface)
102
+ );
103
+ --m-button-fg: var(--m-color-text);
104
+ --m-button-border: transparent;
105
+ --m-button-hover-bg: color-mix(
106
+ in srgb,
107
+ var(--m-color-text-muted) 24%,
108
+ var(--m-color-surface)
109
+ );
110
+ --m-button-hover-fg: var(--m-color-text);
111
+ --m-button-hover-border: transparent;
112
+ --m-button-active-bg: color-mix(
113
+ in srgb,
114
+ var(--m-color-text-muted) 32%,
115
+ var(--m-color-surface)
116
+ );
117
+ }
118
+
119
+ .m-button--success {
120
+ --m-button-bg: var(--m-color-success);
121
+ --m-button-fg: var(--m-color-on-emphasis);
122
+ --m-button-border: var(--m-color-success);
123
+ --m-button-hover-bg: color-mix(
124
+ in srgb,
125
+ var(--m-color-success) 85%,
126
+ black
127
+ );
128
+ --m-button-hover-fg: var(--m-color-on-emphasis);
129
+ --m-button-hover-border: color-mix(
130
+ in srgb,
131
+ var(--m-color-success) 85%,
132
+ black
133
+ );
134
+ --m-button-active-bg: color-mix(
135
+ in srgb,
136
+ var(--m-color-success) 75%,
137
+ black
138
+ );
139
+ }
140
+
141
+ .m-button--info {
142
+ --m-button-bg: var(--m-color-info);
143
+ --m-button-fg: var(--m-color-on-emphasis);
144
+ --m-button-border: var(--m-color-info);
145
+ --m-button-hover-bg: color-mix(in srgb, var(--m-color-info) 85%, black);
146
+ --m-button-hover-fg: var(--m-color-on-emphasis);
147
+ --m-button-hover-border: color-mix(
148
+ in srgb,
149
+ var(--m-color-info) 85%,
150
+ black
151
+ );
152
+ --m-button-active-bg: color-mix(in srgb, var(--m-color-info) 75%, black);
153
+ }
154
+
155
+ .m-button--warn {
156
+ --m-button-bg: var(--m-color-warn);
157
+ --m-button-fg: var(--m-color-on-emphasis);
158
+ --m-button-border: var(--m-color-warn);
159
+ --m-button-hover-bg: color-mix(in srgb, var(--m-color-warn) 85%, black);
160
+ --m-button-hover-fg: var(--m-color-on-emphasis);
161
+ --m-button-hover-border: color-mix(
162
+ in srgb,
163
+ var(--m-color-warn) 85%,
164
+ black
165
+ );
166
+ --m-button-active-bg: color-mix(in srgb, var(--m-color-warn) 75%, black);
167
+ }
168
+
169
+ .m-button--help {
170
+ --m-button-bg: var(--m-color-help);
171
+ --m-button-fg: var(--m-color-on-emphasis);
172
+ --m-button-border: var(--m-color-help);
173
+ --m-button-hover-bg: color-mix(in srgb, var(--m-color-help) 85%, black);
174
+ --m-button-hover-fg: var(--m-color-on-emphasis);
175
+ --m-button-hover-border: color-mix(
176
+ in srgb,
177
+ var(--m-color-help) 85%,
178
+ black
179
+ );
180
+ --m-button-active-bg: color-mix(in srgb, var(--m-color-help) 75%, black);
181
+ }
182
+
183
+ .m-button--danger {
184
+ --m-button-bg: var(--m-color-danger);
185
+ --m-button-fg: var(--m-color-on-emphasis);
186
+ --m-button-border: var(--m-color-danger);
187
+ --m-button-hover-bg: color-mix(in srgb, var(--m-color-danger) 85%, black);
188
+ --m-button-hover-fg: var(--m-color-on-emphasis);
189
+ --m-button-hover-border: color-mix(
190
+ in srgb,
191
+ var(--m-color-danger) 85%,
192
+ black
193
+ );
194
+ --m-button-active-bg: color-mix(
195
+ in srgb,
196
+ var(--m-color-danger) 75%,
197
+ black
198
+ );
199
+ }
200
+
201
+ .m-button--contrast {
202
+ --m-button-bg: var(--m-color-contrast);
203
+ --m-button-fg: var(--m-color-contrast-fg);
204
+ --m-button-border: var(--m-color-contrast);
205
+ --m-button-hover-bg: var(--m-color-contrast-hover);
206
+ --m-button-hover-fg: var(--m-color-contrast-fg);
207
+ --m-button-hover-border: var(--m-color-contrast-hover);
208
+ --m-button-active-bg: var(--m-color-contrast-active);
209
+ }
210
+
211
+ .m-button--outlined {
212
+ --m-button-bg: transparent;
213
+ --m-button-fg: var(--m-button-border);
214
+ --m-button-hover-bg: color-mix(
215
+ in srgb,
216
+ var(--m-button-border) 10%,
217
+ transparent
218
+ );
219
+ --m-button-hover-fg: var(--m-button-border);
220
+ --m-button-hover-border: var(--m-button-border);
221
+ --m-button-active-bg: color-mix(
222
+ in srgb,
223
+ var(--m-button-border) 16%,
224
+ transparent
225
+ );
226
+ }
227
+
228
+ /* Idle matches outlined hover; hover/active deepen the tint. */
229
+ .m-button--plain {
230
+ --m-button-bg: color-mix(
231
+ in srgb,
232
+ var(--m-button-border) 10%,
233
+ transparent
234
+ );
235
+ --m-button-fg: var(--m-button-border);
236
+ --m-button-hover-bg: color-mix(
237
+ in srgb,
238
+ var(--m-button-border) 16%,
239
+ transparent
240
+ );
241
+ --m-button-hover-fg: var(--m-button-border);
242
+ --m-button-hover-border: var(--m-button-border);
243
+ --m-button-active-bg: color-mix(
244
+ in srgb,
245
+ var(--m-button-border) 22%,
246
+ transparent
247
+ );
248
+ }
249
+
250
+ .m-button--secondary.m-button--outlined,
251
+ .m-button--secondary.m-button--plain {
252
+ --m-button-border: var(--m-color-border);
253
+ --m-button-fg: var(--m-color-text);
254
+ --m-button-hover-fg: var(--m-color-text);
255
+ }
256
+
257
+ .m-button--text,
258
+ .m-button--link {
259
+ --m-button-bg: transparent;
260
+ --m-button-border: transparent;
261
+ --m-button-fg: var(--m-color-primary);
262
+ --m-button-hover-fg: var(--m-color-primary);
263
+ --m-button-hover-border: transparent;
264
+ }
265
+
266
+ .m-button--text {
267
+ --m-button-hover-bg: color-mix(
268
+ in srgb,
269
+ var(--m-color-primary) 10%,
270
+ transparent
271
+ );
272
+ --m-button-active-bg: color-mix(
273
+ in srgb,
274
+ var(--m-color-primary) 16%,
275
+ transparent
276
+ );
277
+ }
278
+
279
+ .m-button--link {
280
+ --m-button-bg: transparent;
281
+ --m-button-hover-bg: transparent;
282
+ --m-button-active-bg: transparent;
283
+ height: auto;
284
+ min-height: 0;
285
+ padding: 0;
286
+ }
287
+
288
+ .m-button--link.m-button--link-underline:hover:not(:disabled) {
289
+ text-decoration: underline;
290
+ }
291
+
292
+ .m-button--link:not(.m-button--link-underline):hover:not(:disabled) {
293
+ opacity: 0.8;
294
+ }
295
+
296
+ .m-button--secondary.m-button--text {
297
+ --m-button-fg: var(--m-color-text-muted);
298
+ --m-button-hover-bg: color-mix(
299
+ in srgb,
300
+ var(--m-color-text-muted) 12%,
301
+ transparent
302
+ );
303
+ --m-button-hover-fg: var(--m-color-text);
304
+ }
305
+
306
+ .m-button--secondary.m-button--link {
307
+ --m-button-fg: var(--m-color-text-muted);
308
+ --m-button-hover-fg: var(--m-color-text);
309
+ }
310
+
311
+ .m-button--success.m-button--text,
312
+ .m-button--success.m-button--outlined {
313
+ --m-button-fg: var(--m-color-success);
314
+ --m-button-border: var(--m-color-success);
315
+ --m-button-hover-bg: color-mix(
316
+ in srgb,
317
+ var(--m-color-success) 10%,
318
+ transparent
319
+ );
320
+ --m-button-hover-fg: var(--m-color-success);
321
+ --m-button-hover-border: var(--m-color-success);
322
+ }
323
+
324
+ .m-button--success.m-button--link {
325
+ --m-button-fg: var(--m-color-success);
326
+ --m-button-hover-fg: var(--m-color-success);
327
+ }
328
+
329
+ .m-button--info.m-button--text,
330
+ .m-button--info.m-button--outlined {
331
+ --m-button-fg: var(--m-color-info);
332
+ --m-button-border: var(--m-color-info);
333
+ --m-button-hover-bg: color-mix(
334
+ in srgb,
335
+ var(--m-color-info) 10%,
336
+ transparent
337
+ );
338
+ --m-button-hover-fg: var(--m-color-info);
339
+ --m-button-hover-border: var(--m-color-info);
340
+ }
341
+
342
+ .m-button--info.m-button--link {
343
+ --m-button-fg: var(--m-color-info);
344
+ --m-button-hover-fg: var(--m-color-info);
345
+ }
346
+
347
+ .m-button--warn.m-button--text,
348
+ .m-button--warn.m-button--outlined {
349
+ --m-button-fg: var(--m-color-warn);
350
+ --m-button-border: var(--m-color-warn);
351
+ --m-button-hover-bg: color-mix(
352
+ in srgb,
353
+ var(--m-color-warn) 10%,
354
+ transparent
355
+ );
356
+ --m-button-hover-fg: var(--m-color-warn);
357
+ --m-button-hover-border: var(--m-color-warn);
358
+ }
359
+
360
+ .m-button--warn.m-button--link {
361
+ --m-button-fg: var(--m-color-warn);
362
+ --m-button-hover-fg: var(--m-color-warn);
363
+ }
364
+
365
+ .m-button--help.m-button--text,
366
+ .m-button--help.m-button--outlined {
367
+ --m-button-fg: var(--m-color-help);
368
+ --m-button-border: var(--m-color-help);
369
+ --m-button-hover-bg: color-mix(
370
+ in srgb,
371
+ var(--m-color-help) 10%,
372
+ transparent
373
+ );
374
+ --m-button-hover-fg: var(--m-color-help);
375
+ --m-button-hover-border: var(--m-color-help);
376
+ }
377
+
378
+ .m-button--help.m-button--link {
379
+ --m-button-fg: var(--m-color-help);
380
+ --m-button-hover-fg: var(--m-color-help);
381
+ }
382
+
383
+ .m-button--danger.m-button--text,
384
+ .m-button--danger.m-button--outlined {
385
+ --m-button-fg: var(--m-color-danger);
386
+ --m-button-border: var(--m-color-danger);
387
+ --m-button-hover-bg: color-mix(
388
+ in srgb,
389
+ var(--m-color-danger) 10%,
390
+ transparent
391
+ );
392
+ --m-button-hover-fg: var(--m-color-danger);
393
+ --m-button-hover-border: var(--m-color-danger);
394
+ }
395
+
396
+ .m-button--danger.m-button--link {
397
+ --m-button-fg: var(--m-color-danger);
398
+ --m-button-hover-fg: var(--m-color-danger);
399
+ }
400
+
401
+ .m-button--contrast.m-button--text,
402
+ .m-button--contrast.m-button--outlined {
403
+ --m-button-fg: var(--m-color-contrast);
404
+ --m-button-border: var(--m-color-contrast);
405
+ --m-button-hover-bg: color-mix(
406
+ in srgb,
407
+ var(--m-color-contrast) 10%,
408
+ transparent
409
+ );
410
+ --m-button-hover-fg: var(--m-color-contrast);
411
+ --m-button-hover-border: var(--m-color-contrast);
412
+ }
413
+
414
+ .m-button--contrast.m-button--link {
415
+ --m-button-fg: var(--m-color-contrast);
416
+ --m-button-hover-fg: var(--m-color-contrast);
417
+ }
418
+
419
+ .m-button--plain.m-button--text,
420
+ .m-button--plain.m-button--outlined {
421
+ --m-button-bg: transparent;
422
+ --m-button-fg: var(--m-color-text-muted);
423
+ --m-button-border: var(--m-color-border);
424
+ --m-button-hover-bg: color-mix(
425
+ in srgb,
426
+ var(--m-color-text-muted) 12%,
427
+ transparent
428
+ );
429
+ --m-button-hover-fg: var(--m-color-text);
430
+ --m-button-hover-border: var(--m-color-border);
431
+ --m-button-active-bg: color-mix(
432
+ in srgb,
433
+ var(--m-color-text-muted) 18%,
434
+ transparent
435
+ );
436
+ }
437
+
438
+ .m-button--plain.m-button--link {
439
+ --m-button-fg: var(--m-color-text-muted);
440
+ --m-button-hover-fg: var(--m-color-text);
441
+ }
442
+
443
+ .m-button--ghost {
444
+ --m-button-bg: color-mix(
445
+ in srgb,
446
+ var(--m-color-primary) 10%,
447
+ transparent
448
+ );
449
+ --m-button-border: transparent;
450
+ --m-button-fg: var(--m-color-primary);
451
+ --m-button-hover-bg: color-mix(
452
+ in srgb,
453
+ var(--m-color-primary) 16%,
454
+ transparent
455
+ );
456
+ --m-button-hover-fg: var(--m-color-primary);
457
+ --m-button-hover-border: transparent;
458
+ --m-button-active-bg: color-mix(
459
+ in srgb,
460
+ var(--m-color-primary) 22%,
461
+ transparent
462
+ );
463
+ }
464
+
465
+ .m-button--secondary.m-button--ghost {
466
+ --m-button-bg: color-mix(
467
+ in srgb,
468
+ var(--m-color-text-muted) 12%,
469
+ transparent
470
+ );
471
+ --m-button-fg: var(--m-color-text);
472
+ --m-button-hover-bg: color-mix(
473
+ in srgb,
474
+ var(--m-color-text-muted) 18%,
475
+ transparent
476
+ );
477
+ --m-button-hover-fg: var(--m-color-text);
478
+ --m-button-active-bg: color-mix(
479
+ in srgb,
480
+ var(--m-color-text-muted) 24%,
481
+ transparent
482
+ );
483
+ }
484
+
485
+ .m-button--success.m-button--ghost {
486
+ --m-button-bg: color-mix(
487
+ in srgb,
488
+ var(--m-color-success) 10%,
489
+ transparent
490
+ );
491
+ --m-button-fg: var(--m-color-success);
492
+ --m-button-hover-bg: color-mix(
493
+ in srgb,
494
+ var(--m-color-success) 16%,
495
+ transparent
496
+ );
497
+ --m-button-hover-fg: var(--m-color-success);
498
+ --m-button-active-bg: color-mix(
499
+ in srgb,
500
+ var(--m-color-success) 22%,
501
+ transparent
502
+ );
503
+ }
504
+
505
+ .m-button--info.m-button--ghost {
506
+ --m-button-bg: color-mix(
507
+ in srgb,
508
+ var(--m-color-info) 10%,
509
+ transparent
510
+ );
511
+ --m-button-fg: var(--m-color-info);
512
+ --m-button-hover-bg: color-mix(
513
+ in srgb,
514
+ var(--m-color-info) 16%,
515
+ transparent
516
+ );
517
+ --m-button-hover-fg: var(--m-color-info);
518
+ --m-button-active-bg: color-mix(
519
+ in srgb,
520
+ var(--m-color-info) 22%,
521
+ transparent
522
+ );
523
+ }
524
+
525
+ .m-button--warn.m-button--ghost {
526
+ --m-button-bg: color-mix(
527
+ in srgb,
528
+ var(--m-color-warn) 10%,
529
+ transparent
530
+ );
531
+ --m-button-fg: var(--m-color-warn);
532
+ --m-button-hover-bg: color-mix(
533
+ in srgb,
534
+ var(--m-color-warn) 16%,
535
+ transparent
536
+ );
537
+ --m-button-hover-fg: var(--m-color-warn);
538
+ --m-button-active-bg: color-mix(
539
+ in srgb,
540
+ var(--m-color-warn) 22%,
541
+ transparent
542
+ );
543
+ }
544
+
545
+ .m-button--help.m-button--ghost {
546
+ --m-button-bg: color-mix(
547
+ in srgb,
548
+ var(--m-color-help) 10%,
549
+ transparent
550
+ );
551
+ --m-button-fg: var(--m-color-help);
552
+ --m-button-hover-bg: color-mix(
553
+ in srgb,
554
+ var(--m-color-help) 16%,
555
+ transparent
556
+ );
557
+ --m-button-hover-fg: var(--m-color-help);
558
+ --m-button-active-bg: color-mix(
559
+ in srgb,
560
+ var(--m-color-help) 22%,
561
+ transparent
562
+ );
563
+ }
564
+
565
+ .m-button--danger.m-button--ghost {
566
+ --m-button-bg: color-mix(
567
+ in srgb,
568
+ var(--m-color-danger) 10%,
569
+ transparent
570
+ );
571
+ --m-button-fg: var(--m-color-danger);
572
+ --m-button-hover-bg: color-mix(
573
+ in srgb,
574
+ var(--m-color-danger) 16%,
575
+ transparent
576
+ );
577
+ --m-button-hover-fg: var(--m-color-danger);
578
+ --m-button-active-bg: color-mix(
579
+ in srgb,
580
+ var(--m-color-danger) 22%,
581
+ transparent
582
+ );
583
+ }
584
+
585
+ .m-button--contrast.m-button--ghost {
586
+ --m-button-bg: color-mix(
587
+ in srgb,
588
+ var(--m-color-contrast) 10%,
589
+ transparent
590
+ );
591
+ --m-button-fg: var(--m-color-contrast);
592
+ --m-button-hover-bg: color-mix(
593
+ in srgb,
594
+ var(--m-color-contrast) 16%,
595
+ transparent
596
+ );
597
+ --m-button-hover-fg: var(--m-color-contrast);
598
+ --m-button-active-bg: color-mix(
599
+ in srgb,
600
+ var(--m-color-contrast) 22%,
601
+ transparent
602
+ );
603
+ }
604
+
605
+ .m-button--quaternary {
606
+ --m-button-bg: transparent;
607
+ --m-button-border: transparent;
608
+ --m-button-fg: var(--m-color-text);
609
+ --m-button-hover-bg: color-mix(
610
+ in srgb,
611
+ var(--m-color-text-muted) 10%,
612
+ transparent
613
+ );
614
+ --m-button-hover-fg: var(--m-color-text);
615
+ --m-button-hover-border: transparent;
616
+ --m-button-active-bg: color-mix(
617
+ in srgb,
618
+ var(--m-color-text-muted) 16%,
619
+ transparent
620
+ );
621
+ }
622
+
623
+ .m-button--custom {
624
+ --m-button-bg: var(--m-button-color);
625
+ --m-button-fg: var(--m-color-on-emphasis);
626
+ --m-button-border: var(--m-button-color);
627
+ --m-button-hover-bg: color-mix(in srgb, var(--m-button-color) 85%, black);
628
+ --m-button-hover-fg: var(--m-color-on-emphasis);
629
+ --m-button-hover-border: color-mix(
630
+ in srgb,
631
+ var(--m-button-color) 85%,
632
+ black
633
+ );
634
+ --m-button-active-bg: color-mix(
635
+ in srgb,
636
+ var(--m-button-color) 75%,
637
+ black
638
+ );
639
+ }
640
+
641
+ .m-button--custom.m-button--outlined {
642
+ --m-button-bg: transparent;
643
+ --m-button-fg: var(--m-button-color);
644
+ --m-button-border: var(--m-button-color);
645
+ --m-button-hover-bg: color-mix(
646
+ in srgb,
647
+ var(--m-button-color) 12%,
648
+ transparent
649
+ );
650
+ --m-button-hover-fg: var(--m-button-color);
651
+ --m-button-hover-border: var(--m-button-color);
652
+ }
653
+
654
+ .m-button--custom.m-button--ghost {
655
+ --m-button-bg: color-mix(
656
+ in srgb,
657
+ var(--m-button-color) 10%,
658
+ transparent
659
+ );
660
+ --m-button-fg: var(--m-button-color);
661
+ --m-button-border: transparent;
662
+ --m-button-hover-bg: color-mix(
663
+ in srgb,
664
+ var(--m-button-color) 16%,
665
+ transparent
666
+ );
667
+ --m-button-hover-fg: var(--m-button-color);
668
+ --m-button-hover-border: transparent;
669
+ --m-button-active-bg: color-mix(
670
+ in srgb,
671
+ var(--m-button-color) 22%,
672
+ transparent
673
+ );
674
+ }
675
+
676
+ .m-button--custom.m-button--text,
677
+ .m-button--custom.m-button--quaternary {
678
+ --m-button-bg: transparent;
679
+ --m-button-fg: var(--m-button-color);
680
+ --m-button-border: transparent;
681
+ --m-button-hover-bg: color-mix(
682
+ in srgb,
683
+ var(--m-button-color) 12%,
684
+ transparent
685
+ );
686
+ --m-button-hover-fg: var(--m-button-color);
687
+ --m-button-hover-border: transparent;
688
+ }
689
+
690
+ .m-button--custom.m-button--plain {
691
+ --m-button-bg: color-mix(
692
+ in srgb,
693
+ var(--m-button-color) 10%,
694
+ transparent
695
+ );
696
+ --m-button-fg: var(--m-button-color);
697
+ --m-button-border: var(--m-button-color);
698
+ --m-button-hover-bg: color-mix(
699
+ in srgb,
700
+ var(--m-button-color) 16%,
701
+ transparent
702
+ );
703
+ --m-button-hover-fg: var(--m-button-color);
704
+ --m-button-hover-border: var(--m-button-color);
705
+ --m-button-active-bg: color-mix(
706
+ in srgb,
707
+ var(--m-button-color) 22%,
708
+ transparent
709
+ );
710
+ }
711
+
712
+ .m-button--custom.m-button--link {
713
+ --m-button-bg: transparent;
714
+ --m-button-fg: var(--m-button-color);
715
+ --m-button-border: transparent;
716
+ --m-button-hover-bg: transparent;
717
+ --m-button-hover-fg: var(--m-button-color);
718
+ --m-button-hover-border: transparent;
719
+ --m-button-active-bg: transparent;
720
+ }
721
+
722
+ .m-button-group {
723
+ display: inline-flex;
724
+ vertical-align: middle;
725
+ }
726
+
727
+ .m-button-group--fluid {
728
+ display: flex;
729
+ width: 100%;
730
+ }
731
+
732
+ .m-button-group--fluid > .m-button {
733
+ flex: 1;
734
+ }
735
+
736
+ .m-button-group > .m-button {
737
+ border-radius: 0;
738
+ margin: 0;
739
+ }
740
+
741
+ .m-button-group > .m-button + .m-button {
742
+ margin-left: -1px;
743
+ }
744
+
745
+ .m-button-group > .m-button:first-child {
746
+ border-top-left-radius: var(--m-radius-control);
747
+ border-bottom-left-radius: var(--m-radius-control);
748
+ }
749
+
750
+ .m-button-group > .m-button:last-child {
751
+ border-top-right-radius: var(--m-radius-control);
752
+ border-bottom-right-radius: var(--m-radius-control);
753
+ }
754
+
755
+ .m-button--raised {
756
+ box-shadow: var(--m-shadow-raised);
757
+ }
758
+
759
+ .m-button--raised:focus-visible {
760
+ box-shadow: var(--m-focus-shadow), var(--m-shadow-raised);
761
+ }
762
+
763
+ .m-button--rounded {
764
+ border-radius: var(--m-radius-full);
765
+ }
766
+
767
+ .m-button--icon-only {
768
+ gap: 0;
769
+ min-width: var(--m-control-height-medium);
770
+ padding: 0;
771
+ width: var(--m-control-height-medium);
772
+ }
773
+
774
+ .m-button--icon-only.m-button--small {
775
+ min-width: var(--m-control-height-small);
776
+ width: var(--m-control-height-small);
777
+ }
778
+
779
+ .m-button--icon-only.m-button--large {
780
+ min-width: var(--m-control-height-large);
781
+ width: var(--m-control-height-large);
782
+ }
783
+
784
+ .m-button--icon-right {
785
+ flex-direction: row-reverse;
786
+ }
787
+
788
+ .m-button--icon-top {
789
+ flex-direction: column;
790
+ min-height: var(--m-button-icon-stack-min-height);
791
+ padding-block: var(--m-space-2);
792
+ }
793
+
794
+ .m-button--icon-bottom {
795
+ flex-direction: column-reverse;
796
+ min-height: var(--m-button-icon-stack-min-height);
797
+ padding-block: var(--m-space-2);
798
+ }
799
+
800
+ .m-button--fluid {
801
+ display: flex;
802
+ width: 100%;
803
+ }
804
+
805
+ .m-button--small {
806
+ --m-button-icon-size: 0.875rem;
807
+ font-size: var(--m-control-font-small);
808
+ min-height: var(--m-control-height-small);
809
+ padding: 0 var(--m-button-padding-x-small);
810
+ }
811
+
812
+ .m-button--large {
813
+ --m-button-icon-size: 1.25rem;
814
+ font-size: var(--m-control-font-large);
815
+ min-height: var(--m-control-height-large);
816
+ padding: 0 var(--m-button-padding-x-large);
817
+ }
818
+
819
+ .m-button__icon,
820
+ .m-button__label {
821
+ align-items: center;
822
+ display: inline-flex;
823
+ justify-content: center;
824
+ }
825
+
826
+ .m-button__icon,
827
+ .m-button__label,
828
+ .m-button__badge {
829
+ position: relative;
830
+ z-index: 1;
831
+ }
832
+
833
+ .m-button__ripple {
834
+ border-radius: inherit;
835
+ inset: 0;
836
+ overflow: hidden;
837
+ pointer-events: none;
838
+ position: absolute;
839
+ z-index: 0;
840
+ }
841
+
842
+ .m-button__ripple-wave {
843
+ background: currentColor;
844
+ border-radius: var(--m-radius-full);
845
+ opacity: 0;
846
+ pointer-events: none;
847
+ position: absolute;
848
+ transform: scale(0);
849
+ will-change: transform, opacity;
850
+ }
851
+
852
+ /* Used only when Web Animations API is unavailable. */
853
+ .m-button__ripple-wave--fallback {
854
+ animation: m-button-ripple 560ms var(--m-motion-ease) forwards;
855
+ }
856
+
857
+ @keyframes m-button-ripple {
858
+ 0% {
859
+ opacity: 0.42;
860
+ transform: scale(0);
861
+ }
862
+ 55% {
863
+ opacity: 0.22;
864
+ transform: scale(0.55);
865
+ }
866
+ 100% {
867
+ opacity: 0;
868
+ transform: scale(1);
869
+ }
870
+ }
871
+
872
+ .m-button__icon {
873
+ flex: 0 0 auto;
874
+ width: var(--m-button-icon-size);
875
+ height: var(--m-button-icon-size);
876
+ line-height: 0;
877
+ }
878
+
879
+ .m-button__icon :is(.m-icon, .m-button__icon-graphic, svg) {
880
+ display: block;
881
+ flex-shrink: 0;
882
+ width: 100%;
883
+ height: 100%;
884
+ }
885
+
886
+ .m-button__icon .m-icon {
887
+ max-width: 100%;
888
+ max-height: 100%;
889
+ }
890
+
891
+ .m-button__badge {
892
+ align-items: center;
893
+ background: var(--m-color-contrast);
894
+ border-radius: var(--m-radius-full);
895
+ color: var(--m-color-contrast-fg);
896
+ display: inline-flex;
897
+ font-size: var(--m-font-size-xs);
898
+ font-weight: 700;
899
+ justify-content: center;
900
+ line-height: 1;
901
+ margin-inline-start: var(--m-space-1);
902
+ min-width: var(--m-button-badge-min-width);
903
+ padding: var(--m-space-1) var(--m-space-2);
904
+ }
905
+
906
+ .m-button__badge--secondary {
907
+ background: color-mix(
908
+ in srgb,
909
+ var(--m-color-text-muted) 25%,
910
+ var(--m-color-surface)
911
+ );
912
+ color: var(--m-color-text);
913
+ }
914
+
915
+ .m-button__badge--success {
916
+ background: var(--m-color-success);
917
+ color: var(--m-color-on-emphasis);
918
+ }
919
+
920
+ .m-button__badge--info {
921
+ background: var(--m-color-info);
922
+ color: var(--m-color-on-emphasis);
923
+ }
924
+
925
+ .m-button__badge--warn {
926
+ background: var(--m-color-warn);
927
+ color: var(--m-color-on-emphasis);
928
+ }
929
+
930
+ .m-button__badge--danger {
931
+ background: var(--m-color-danger);
932
+ color: var(--m-color-on-emphasis);
933
+ }
934
+
935
+ .m-button__badge--contrast {
936
+ background: var(--m-color-contrast);
937
+ color: var(--m-color-contrast-fg);
938
+ }
939
+
940
+ .m-button__spinner {
941
+ animation: m-button-spin var(--m-motion-spin-fast) linear infinite;
942
+ border: 2px solid currentColor;
943
+ border-right-color: transparent;
944
+ border-radius: var(--m-radius-full);
945
+ height: var(--m-button-spinner-size);
946
+ width: var(--m-button-spinner-size);
947
+ }
948
+
949
+ @keyframes m-button-spin {
950
+ to {
951
+ transform: rotate(360deg);
952
+ }
953
+ }
954
+
955
+ [data-m-motion="reduced"] .m-button__spinner,
956
+ [data-m-motion="none"] .m-button__spinner {
957
+ animation: none;
958
+ }
959
+
960
+ [data-m-motion="none"] .m-button__ripple-wave {
961
+ display: none;
962
+ }