morya-ui 0.4.1 → 0.4.2

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 (166) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/dist/Button-BaYLh91a.js +326 -0
  3. package/dist/{Checkbox-BKt8hdhV.js → Checkbox-LxCFF19I.js} +1 -1
  4. package/dist/{DatePicker-CSoMFEvh.js → DatePicker-DGPNukEW.js} +3 -3
  5. package/dist/{Empty-iNcc0G-q.js → Empty-2_f_FgyK.js} +1 -1
  6. package/dist/{FlyoutSubmenu-C1RfFRzH.js → FlyoutSubmenu-Da6AcoM4.js} +1 -1
  7. package/dist/{Input-DQHYqvNk.js → Input-NspPDc2R.js} +2 -2
  8. package/dist/{Loading-BPpR-jGa.js → Loading-BK4dQPCS.js} +10 -10
  9. package/dist/{Pagination-DLphD6LC.js → Pagination-tdrlaZ3u.js} +2 -2
  10. package/dist/{Popover-B_2c9NWs.js → Popover-BumMfUpV.js} +2 -2
  11. package/dist/{ProgressSpinner-B_OJG_0l.js → ProgressSpinner-BQ1tLioO.js} +1 -1
  12. package/dist/{Radio-Bxd806ys.js → Radio-BCn2OVCF.js} +1 -1
  13. package/dist/{Segmented-BRMSmXCl.js → Segmented-ppmDmku5.js} +1 -1
  14. package/dist/{Select-DxMlpgc5.js → Select-CN1tM76U.js} +4 -4
  15. package/dist/{Textarea-BBvpgIQL.js → Textarea-Ch1KCXEv.js} +2 -2
  16. package/dist/{Tooltip-BJp-ZMqQ.js → Tooltip-DKsXxU_B.js} +2 -2
  17. package/dist/alert/index.js +2 -2
  18. package/dist/auto-complete/index.js +3 -3
  19. package/dist/block-ui/index.js +1 -1
  20. package/dist/breadcrumb/index.js +1 -1
  21. package/dist/button/index.js +9 -9
  22. package/dist/button/style.css +464 -775
  23. package/dist/button/style.js +1 -0
  24. package/dist/calendar/index.js +3 -3
  25. package/dist/carousel/index.js +2 -4
  26. package/dist/carousel/style.css +457 -775
  27. package/dist/cascade-select/index.js +4 -4
  28. package/dist/checkbox/index.js +1 -1
  29. package/dist/chip/index.js +1 -1
  30. package/dist/command-menu/index.js +3 -3
  31. package/dist/components/Button/Button.vue.d.ts +15 -22
  32. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  33. package/dist/components/Button/ButtonGroup.vue.d.ts +1 -1
  34. package/dist/components/Button/ButtonGroup.vue.d.ts.map +1 -1
  35. package/dist/components/Button/buttonHelpers.d.ts +25 -0
  36. package/dist/components/Button/buttonHelpers.d.ts.map +1 -0
  37. package/dist/components/Button/index.d.ts +2 -1
  38. package/dist/components/Button/index.d.ts.map +1 -1
  39. package/dist/components/Button/styles.css +463 -781
  40. package/dist/components/Button/types.d.ts +67 -61
  41. package/dist/components/Button/types.d.ts.map +1 -1
  42. package/dist/components/Carousel/Carousel.vue.d.ts.map +1 -1
  43. package/dist/components/ConfirmDialog/ConfirmDialog.vue.d.ts +2 -2
  44. package/dist/components/ConfirmDialog/ConfirmDialog.vue.d.ts.map +1 -1
  45. package/dist/components/ConfirmDialog/types.d.ts +2 -2
  46. package/dist/components/ConfirmDialog/types.d.ts.map +1 -1
  47. package/dist/components/ConfirmDialog/useConfirm.d.ts +1 -1
  48. package/dist/components/ConfirmDialog/useConfirm.d.ts.map +1 -1
  49. package/dist/components/ConfirmPopup/ConfirmPopup.vue.d.ts.map +1 -1
  50. package/dist/components/ConfirmPopup/types.d.ts +3 -3
  51. package/dist/components/ConfirmPopup/types.d.ts.map +1 -1
  52. package/dist/components/Dialog/Dialog.vue.d.ts.map +1 -1
  53. package/dist/components/Dialog/types.d.ts +3 -3
  54. package/dist/components/Dialog/types.d.ts.map +1 -1
  55. package/dist/components/Dialog/useModal.d.ts +2 -2
  56. package/dist/components/Dialog/useModal.d.ts.map +1 -1
  57. package/dist/components/Divider/Divider.vue.d.ts +1 -1
  58. package/dist/components/Mentions/Mentions.vue.d.ts +1 -1
  59. package/dist/components/Message/styles.css +4 -2
  60. package/dist/components/Page/PageFilters.vue.d.ts.map +1 -1
  61. package/dist/components/QRCode/QRCode.vue.d.ts.map +1 -1
  62. package/dist/components/Select/Select.vue.d.ts +1 -1
  63. package/dist/components/SplitButton/SplitButton.vue.d.ts +0 -1
  64. package/dist/components/SplitButton/SplitButton.vue.d.ts.map +1 -1
  65. package/dist/components/SplitButton/types.d.ts +3 -3
  66. package/dist/components/SplitButton/types.d.ts.map +1 -1
  67. package/dist/components/Table/Table.vue.d.ts +4 -4
  68. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  69. package/dist/components/Table/render/TableThead.vue.d.ts +2 -0
  70. package/dist/components/Table/render/TableThead.vue.d.ts.map +1 -1
  71. package/dist/components/Table/state/internal.d.ts +1 -0
  72. package/dist/components/Table/state/internal.d.ts.map +1 -1
  73. package/dist/components/Table/styles.css +9 -0
  74. package/dist/components/Tag/Tag.vue.d.ts +1 -1
  75. package/dist/components/Tour/Tour.vue.d.ts.map +1 -1
  76. package/dist/{config-COgrsSV2.js → config-CB_TiIvg.js} +11 -4
  77. package/dist/config-provider/index.js +1 -1
  78. package/dist/config-provider/style.css +457 -775
  79. package/dist/confirm-dialog/index.js +45 -39
  80. package/dist/confirm-dialog/style.css +457 -775
  81. package/dist/confirm-popup/index.js +17 -14
  82. package/dist/confirm-popup/style.css +457 -775
  83. package/dist/context-menu/index.js +3 -3
  84. package/dist/data-view/index.js +3 -3
  85. package/dist/date-picker/index.js +1 -1
  86. package/dist/descriptions/index.js +1 -1
  87. package/dist/dialog/index.js +68 -55
  88. package/dist/dialog/style.css +457 -775
  89. package/dist/drawer/index.js +3 -3
  90. package/dist/dropdown/index.js +4 -4
  91. package/dist/empty/index.js +1 -1
  92. package/dist/file-upload/index.js +1 -1
  93. package/dist/flex/index.js +1 -1
  94. package/dist/form/index.js +1 -1
  95. package/dist/gallery/index.js +1 -1
  96. package/dist/image/index.js +1 -1
  97. package/dist/index.d.ts +1 -1
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +4018 -3908
  100. package/dist/input/index.js +1 -1
  101. package/dist/input-color/index.js +2 -2
  102. package/dist/input-number/index.js +2 -2
  103. package/dist/input-otp/index.js +2 -2
  104. package/dist/input-password/index.js +2 -2
  105. package/dist/input-tags/index.js +2 -2
  106. package/dist/layout/index.js +1 -1
  107. package/dist/list/index.js +4 -4
  108. package/dist/listbox/index.js +2 -2
  109. package/dist/loading/index.js +1 -1
  110. package/dist/locale-CR2PIaxt.js +21 -0
  111. package/dist/mega-menu/index.js +3 -3
  112. package/dist/mentions/index.js +3 -3
  113. package/dist/menu/index.js +4 -4
  114. package/dist/menubar/index.js +3 -3
  115. package/dist/message/index.js +3 -3
  116. package/dist/message/style.css +4 -2
  117. package/dist/order-list/index.js +1 -1
  118. package/dist/page/index.js +4 -7
  119. package/dist/page/style.css +457 -775
  120. package/dist/pagination/index.js +1 -1
  121. package/dist/panel/index.js +1 -1
  122. package/dist/pick-list/index.js +1 -1
  123. package/dist/popover/index.js +1 -1
  124. package/dist/progress-spinner/index.js +1 -1
  125. package/dist/qr-code/index.js +3 -3
  126. package/dist/qr-code/style.css +457 -775
  127. package/dist/radio/index.js +1 -1
  128. package/dist/rating/index.js +2 -2
  129. package/dist/result/index.js +1 -1
  130. package/dist/scroll-top/index.js +2 -2
  131. package/dist/segmented/index.js +1 -1
  132. package/dist/select/index.js +1 -1
  133. package/dist/select-button/index.js +1 -1
  134. package/dist/shared/componentDefaults.d.ts +6 -0
  135. package/dist/shared/componentDefaults.d.ts.map +1 -1
  136. package/dist/sidebar/index.js +1 -1
  137. package/dist/slider/index.js +2 -2
  138. package/dist/space/index.js +1 -1
  139. package/dist/speed-dial/index.js +3 -3
  140. package/dist/split-button/index.js +7 -10
  141. package/dist/split-button/style.css +463 -781
  142. package/dist/splitter/index.js +1 -1
  143. package/dist/status/index.js +1 -1
  144. package/dist/styles.css +1 -1
  145. package/dist/switch/index.js +1 -1
  146. package/dist/table/index.js +1628 -1622
  147. package/dist/table/style.css +9 -0
  148. package/dist/tabs/index.js +1 -1
  149. package/dist/tag/index.js +2 -2
  150. package/dist/terminal/index.js +1 -1
  151. package/dist/textarea/index.js +1 -1
  152. package/dist/tiered-menu/index.js +3 -3
  153. package/dist/time-picker/index.js +1 -1
  154. package/dist/toast/index.js +3 -3
  155. package/dist/toast/style.css +457 -775
  156. package/dist/toggle-button/index.js +1 -1
  157. package/dist/tooltip/index.js +1 -1
  158. package/dist/tour/index.js +7 -8
  159. package/dist/tour/style.css +457 -775
  160. package/dist/tree/index.js +2 -2
  161. package/dist/tree-select/index.js +4 -4
  162. package/dist/typography/index.js +2 -2
  163. package/dist/{useMotionTransition-S2rlviyZ.js → useMotionTransition-D8JOR3ih.js} +1 -1
  164. package/package.json +1 -1
  165. package/dist/Button-TaJ0LKtP.js +0 -234
  166. package/dist/locale-Dnk0UIie.js +0 -21
@@ -1206,6 +1206,14 @@
1206
1206
  }
1207
1207
 
1208
1208
  .m-button {
1209
+ /* Geometry */
1210
+ --m-button-radius: var(--m-radius-control);
1211
+ --m-button-border-width: var(--m-border-width);
1212
+ --m-button-gap: var(--m-space-2);
1213
+ --m-button-font-weight: var(--m-font-weight);
1214
+ --m-button-font-size: var(--m-control-font-medium);
1215
+ --m-button-height: var(--m-control-height-medium);
1216
+ --m-button-padding-x: var(--m-button-padding-x-medium);
1209
1217
  --m-button-padding-x-small: var(--m-control-padding-x-small);
1210
1218
  --m-button-padding-x-medium: calc(
1211
1219
  var(--m-control-padding-x-medium) + var(--m-space-1)
@@ -1213,62 +1221,117 @@
1213
1221
  --m-button-padding-x-large: calc(
1214
1222
  var(--m-control-padding-x-large) + var(--m-space-1)
1215
1223
  );
1216
- --m-button-icon-stack-min-height: 3.25rem;
1217
- --m-button-badge-min-width: 1.15rem;
1218
- --m-button-spinner-size: 0.875rem;
1224
+ --m-button-padding-x-round-extra: var(--m-space-2);
1225
+
1226
+ /* Icon / spinner */
1219
1227
  --m-button-icon-size: 1rem;
1220
- --m-button-bg: var(--m-color-primary);
1221
- --m-button-fg: var(--m-color-on-emphasis);
1222
- --m-button-border: var(--m-color-primary);
1223
- --m-button-hover-bg: var(--m-color-primary-hover);
1224
- --m-button-hover-fg: var(--m-color-on-emphasis);
1225
- --m-button-hover-border: var(--m-color-primary-hover);
1226
- --m-button-active-bg: var(--m-color-primary-active);
1228
+ --m-button-icon-size-small: 0.875rem;
1229
+ --m-button-icon-size-large: 1.25rem;
1230
+ --m-button-spinner-size: 0.875rem;
1231
+ --m-button-spinner-border-width: 2px;
1232
+ --m-button-cn-letter-spacing: 0.3em;
1233
+
1234
+ /* Soft fill opacities (theme-adaptive via surface mix) */
1235
+ --m-button-fill-opacity: 10%;
1236
+ --m-button-fill-opacity-hover: 16%;
1237
+ --m-button-fill-opacity-active: 22%;
1238
+ --m-button-fill-opacity-muted: 6%;
1239
+ --m-button-fill-opacity-muted-hover: 10%;
1240
+ --m-button-fill-opacity-muted-active: 14%;
1241
+
1242
+ /* Interaction */
1243
+ --m-button-loading-opacity: 0.72;
1244
+ --m-button-press-scale: 0.97;
1245
+ --m-button-press-duration: 160ms;
1246
+ --m-button-ripple-duration: 560ms;
1247
+ --m-button-ripple-opacity-start: 0.42;
1248
+ --m-button-ripple-opacity-mid: 0.22;
1249
+ --m-button-ghost-hover-opacity: 80%;
1250
+
1251
+ /* Color axis defaults (overridden by --color-*) */
1252
+ --m-button-color-base: var(--m-color-primary);
1253
+ --m-button-color-hover: var(--m-color-primary-hover);
1254
+ --m-button-color-active: var(--m-color-primary-active);
1255
+ --m-button-color-light: color-mix(
1256
+ in srgb,
1257
+ var(--m-button-color-base) var(--m-button-fill-opacity),
1258
+ var(--m-color-surface)
1259
+ );
1260
+ --m-button-color-light-hover: color-mix(
1261
+ in srgb,
1262
+ var(--m-button-color-base) var(--m-button-fill-opacity-hover),
1263
+ var(--m-color-surface)
1264
+ );
1265
+ --m-button-color-light-active: color-mix(
1266
+ in srgb,
1267
+ var(--m-button-color-base) var(--m-button-fill-opacity-active),
1268
+ var(--m-color-surface)
1269
+ );
1270
+ --m-button-on-color: var(--m-color-on-emphasis);
1271
+
1272
+ /* Variant surface vars */
1273
+ --m-button-bg: var(--m-color-surface);
1274
+ --m-button-fg: var(--m-color-text);
1275
+ --m-button-border: var(--m-color-border);
1276
+ --m-button-hover-bg: var(--m-button-bg);
1277
+ --m-button-hover-fg: var(--m-button-fg);
1278
+ --m-button-hover-border: var(--m-button-border);
1279
+ --m-button-active-bg: var(--m-button-bg);
1280
+ --m-button-border-style: solid;
1281
+
1282
+ --m-button-active-fg: var(--m-button-fg);
1283
+ --m-button-active-border: var(--m-button-border);
1284
+
1227
1285
  align-items: center;
1228
1286
  background: var(--m-button-bg);
1229
- border: var(--m-border-width) solid var(--m-button-border);
1230
- border-radius: var(--m-radius-control);
1287
+ border: var(--m-button-border-width) var(--m-button-border-style)
1288
+ var(--m-button-border);
1289
+ border-radius: var(--m-button-radius);
1231
1290
  color: var(--m-button-fg);
1232
1291
  cursor: pointer;
1233
1292
  display: inline-flex;
1234
1293
  flex-direction: row;
1235
1294
  font-family: var(--m-font-sans);
1236
- font-size: var(--m-control-font-medium);
1237
- font-weight: 400;
1238
- gap: var(--m-space-2);
1295
+ font-size: var(--m-button-font-size);
1296
+ font-weight: var(--m-button-font-weight);
1297
+ gap: var(--m-button-gap);
1239
1298
  justify-content: center;
1240
1299
  line-height: 1;
1241
- min-height: var(--m-control-height-medium);
1242
- padding: 0 var(--m-button-padding-x-medium);
1300
+ min-height: var(--m-button-height);
1301
+ padding: 0 var(--m-button-padding-x);
1243
1302
  position: relative;
1303
+ text-decoration: none;
1304
+ touch-action: manipulation;
1244
1305
  transition:
1245
1306
  background-color var(--m-motion-fast) var(--m-motion-ease),
1246
1307
  border-color var(--m-motion-fast) var(--m-motion-ease),
1247
1308
  color var(--m-motion-fast) var(--m-motion-ease),
1248
1309
  box-shadow var(--m-motion-fast) var(--m-motion-ease),
1249
1310
  opacity var(--m-motion-fast) var(--m-motion-ease),
1250
- transform 160ms var(--m-motion-ease);
1311
+ transform var(--m-button-press-duration) var(--m-motion-ease);
1312
+ user-select: none;
1251
1313
  vertical-align: middle;
1252
1314
  white-space: nowrap;
1253
1315
  }
1254
1316
 
1255
1317
  @media (hover: hover) and (pointer: fine) {
1256
- .m-button:hover:not(:disabled) {
1318
+ .m-button:hover:not(:disabled):not(.m-button--disabled) {
1257
1319
  background: var(--m-button-hover-bg);
1258
1320
  border-color: var(--m-button-hover-border);
1259
1321
  color: var(--m-button-hover-fg);
1260
1322
  }
1261
1323
  }
1262
1324
 
1263
- .m-button:active:not(:disabled) {
1325
+ .m-button:active:not(:disabled):not(.m-button--disabled):not(.m-button--loading) {
1264
1326
  background: var(--m-button-active-bg);
1327
+ border-color: var(--m-button-active-border);
1328
+ color: var(--m-button-active-fg);
1265
1329
  }
1266
1330
 
1267
- .m-button--press:active:not(:disabled) {
1268
- transform: scale(0.97);
1331
+ .m-button--press:active:not(:disabled):not(.m-button--disabled) {
1332
+ transform: scale(var(--m-button-press-scale));
1269
1333
  }
1270
1334
 
1271
- /* Soft glow focus, not outline-offset ring */
1272
1335
  .m-button:focus {
1273
1336
  outline: none;
1274
1337
  }
@@ -1278,804 +1341,419 @@
1278
1341
  outline: none;
1279
1342
  }
1280
1343
 
1281
- .m-button:disabled {
1282
- background: color-mix(in srgb, var(--m-color-text) 4%, var(--m-color-surface));
1344
+ .m-button:disabled,
1345
+ .m-button--disabled {
1346
+ background: var(--m-color-bg-disabled);
1283
1347
  border-color: var(--m-color-border);
1284
- color: color-mix(in srgb, var(--m-color-text) 35%, var(--m-color-surface));
1348
+ color: var(--m-color-text-disabled);
1285
1349
  cursor: not-allowed;
1286
1350
  opacity: 1;
1287
1351
  }
1288
1352
 
1289
- .m-button--text:disabled,
1290
- .m-button--link:disabled,
1353
+ .m-button--variant-text:disabled,
1354
+ .m-button--variant-link:disabled,
1355
+ .m-button--variant-text.m-button--disabled,
1356
+ .m-button--variant-link.m-button--disabled,
1291
1357
  .m-button--ghost:disabled,
1292
- .m-button--quaternary:disabled {
1358
+ .m-button--ghost.m-button--disabled {
1293
1359
  background: transparent;
1294
1360
  border-color: transparent;
1295
1361
  }
1296
1362
 
1297
- .m-button--primary {
1298
- --m-button-bg: var(--m-color-primary);
1299
- --m-button-fg: var(--m-color-on-emphasis);
1300
- --m-button-border: var(--m-color-primary);
1301
- --m-button-hover-bg: var(--m-color-primary-hover);
1302
- --m-button-hover-fg: var(--m-color-on-emphasis);
1303
- --m-button-hover-border: var(--m-color-primary-hover);
1304
- --m-button-active-bg: var(--m-color-primary-active);
1305
- }
1306
-
1307
- .m-button--secondary {
1308
- --m-button-bg: var(--m-color-surface);
1309
- --m-button-fg: var(--m-color-text);
1310
- --m-button-border: var(--m-color-border);
1311
- --m-button-hover-bg: var(--m-color-surface);
1312
- --m-button-hover-fg: var(--m-color-primary-hover);
1313
- --m-button-hover-border: var(--m-color-primary-hover);
1314
- --m-button-active-bg: var(--m-color-surface);
1315
- }
1363
+ /* ---------- Color axis ---------- */
1316
1364
 
1317
- .m-button--success {
1318
- --m-button-bg: var(--m-color-success);
1319
- --m-button-fg: var(--m-color-on-emphasis);
1320
- --m-button-border: var(--m-color-success);
1321
- --m-button-hover-bg: color-mix(
1365
+ .m-button--color-default {
1366
+ --m-button-color-base: var(--m-color-text);
1367
+ --m-button-color-hover: var(--m-color-primary-hover);
1368
+ --m-button-color-active: var(--m-color-primary-active);
1369
+ --m-button-color-light: color-mix(
1322
1370
  in srgb,
1323
- var(--m-color-success) 85%,
1324
- black
1371
+ var(--m-color-text) var(--m-button-fill-opacity-muted),
1372
+ var(--m-color-surface)
1325
1373
  );
1326
- --m-button-hover-fg: var(--m-color-on-emphasis);
1327
- --m-button-hover-border: color-mix(
1374
+ --m-button-color-light-hover: color-mix(
1328
1375
  in srgb,
1329
- var(--m-color-success) 85%,
1330
- black
1376
+ var(--m-color-text) var(--m-button-fill-opacity-muted-hover),
1377
+ var(--m-color-surface)
1331
1378
  );
1332
- --m-button-active-bg: color-mix(
1379
+ --m-button-color-light-active: color-mix(
1333
1380
  in srgb,
1334
- var(--m-color-success) 75%,
1335
- black
1381
+ var(--m-color-text) var(--m-button-fill-opacity-muted-active),
1382
+ var(--m-color-surface)
1336
1383
  );
1337
- }
1338
-
1339
- .m-button--info {
1340
- --m-button-bg: var(--m-color-info);
1341
- --m-button-fg: var(--m-color-on-emphasis);
1342
- --m-button-border: var(--m-color-info);
1343
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-info) 85%, black);
1344
- --m-button-hover-fg: var(--m-color-on-emphasis);
1345
- --m-button-hover-border: color-mix(
1384
+ --m-button-on-color: var(--m-color-contrast-fg);
1385
+ --m-button-solid-bg: var(--m-color-contrast);
1386
+ --m-button-solid-bg-hover: var(--m-color-contrast-hover);
1387
+ --m-button-solid-bg-active: var(--m-color-contrast-active);
1388
+ --m-button-outlined-border: var(--m-color-border);
1389
+ --m-button-outlined-fg: var(--m-color-text);
1390
+ --m-button-outlined-hover-border: var(--m-color-primary-hover);
1391
+ --m-button-outlined-hover-fg: var(--m-color-primary-hover);
1392
+ --m-button-outlined-bg: var(--m-color-surface);
1393
+ /* Match ant default outlined/dashed: keep surface bg, only shift border/text. */
1394
+ --m-button-outlined-hover-bg: var(--m-color-surface);
1395
+ --m-button-outlined-active-bg: var(--m-color-surface);
1396
+ }
1397
+
1398
+ .m-button--color-primary {
1399
+ --m-button-color-base: var(--m-color-primary);
1400
+ --m-button-color-hover: var(--m-color-primary-hover);
1401
+ --m-button-color-active: var(--m-color-primary-active);
1402
+ --m-button-solid-bg: var(--m-color-primary);
1403
+ --m-button-solid-bg-hover: var(--m-color-primary-hover);
1404
+ --m-button-solid-bg-active: var(--m-color-primary-active);
1405
+ --m-button-outlined-border: var(--m-color-primary);
1406
+ --m-button-outlined-fg: var(--m-color-primary);
1407
+ --m-button-outlined-hover-border: var(--m-color-primary-hover);
1408
+ --m-button-outlined-hover-fg: var(--m-color-primary-hover);
1409
+ --m-button-outlined-bg: var(--m-color-surface);
1410
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1411
+ }
1412
+
1413
+ .m-button--color-danger {
1414
+ --m-button-color-base: var(--m-color-danger);
1415
+ --m-button-color-hover: color-mix(
1346
1416
  in srgb,
1347
- var(--m-color-info) 85%,
1348
- black
1417
+ var(--m-color-danger) 88%,
1418
+ var(--m-color-text)
1349
1419
  );
1350
- --m-button-active-bg: color-mix(in srgb, var(--m-color-info) 75%, black);
1351
- }
1352
-
1353
- .m-button--warn {
1354
- --m-button-bg: var(--m-color-warn);
1355
- --m-button-fg: var(--m-color-on-emphasis);
1356
- --m-button-border: var(--m-color-warn);
1357
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-warn) 85%, black);
1358
- --m-button-hover-fg: var(--m-color-on-emphasis);
1359
- --m-button-hover-border: color-mix(
1420
+ --m-button-color-active: color-mix(
1360
1421
  in srgb,
1361
- var(--m-color-warn) 85%,
1362
- black
1363
- );
1364
- --m-button-active-bg: color-mix(in srgb, var(--m-color-warn) 75%, black);
1365
- }
1366
-
1367
- .m-button--help {
1368
- --m-button-bg: var(--m-color-help);
1369
- --m-button-fg: var(--m-color-on-emphasis);
1370
- --m-button-border: var(--m-color-help);
1371
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-help) 85%, black);
1372
- --m-button-hover-fg: var(--m-color-on-emphasis);
1373
- --m-button-hover-border: color-mix(
1422
+ var(--m-color-danger) 76%,
1423
+ var(--m-color-text)
1424
+ );
1425
+ --m-button-solid-bg: var(--m-color-danger);
1426
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1427
+ --m-button-solid-bg-active: var(--m-button-color-active);
1428
+ --m-button-outlined-border: var(--m-color-danger);
1429
+ --m-button-outlined-fg: var(--m-color-danger);
1430
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1431
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1432
+ --m-button-outlined-bg: var(--m-color-surface);
1433
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1434
+ }
1435
+
1436
+ .m-button--color-success {
1437
+ --m-button-color-base: var(--m-color-success);
1438
+ --m-button-color-hover: color-mix(
1374
1439
  in srgb,
1375
- var(--m-color-help) 85%,
1376
- black
1440
+ var(--m-color-success) 88%,
1441
+ var(--m-color-text)
1377
1442
  );
1378
- --m-button-active-bg: color-mix(in srgb, var(--m-color-help) 75%, black);
1379
- }
1380
-
1381
- .m-button--danger {
1382
- --m-button-bg: var(--m-color-danger);
1383
- --m-button-fg: var(--m-color-on-emphasis);
1384
- --m-button-border: var(--m-color-danger);
1385
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-danger) 85%, black);
1386
- --m-button-hover-fg: var(--m-color-on-emphasis);
1387
- --m-button-hover-border: color-mix(
1443
+ --m-button-color-active: color-mix(
1388
1444
  in srgb,
1389
- var(--m-color-danger) 85%,
1390
- black
1391
- );
1392
- --m-button-active-bg: color-mix(
1445
+ var(--m-color-success) 76%,
1446
+ var(--m-color-text)
1447
+ );
1448
+ --m-button-solid-bg: var(--m-color-success);
1449
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1450
+ --m-button-solid-bg-active: var(--m-button-color-active);
1451
+ --m-button-outlined-border: var(--m-color-success);
1452
+ --m-button-outlined-fg: var(--m-color-success);
1453
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1454
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1455
+ --m-button-outlined-bg: var(--m-color-surface);
1456
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1457
+ }
1458
+
1459
+ .m-button--color-info {
1460
+ --m-button-color-base: var(--m-color-info);
1461
+ --m-button-color-hover: color-mix(
1393
1462
  in srgb,
1394
- var(--m-color-danger) 75%,
1395
- black
1463
+ var(--m-color-info) 88%,
1464
+ var(--m-color-text)
1396
1465
  );
1397
- }
1398
-
1399
- .m-button--contrast {
1400
- --m-button-bg: var(--m-color-contrast);
1401
- --m-button-fg: var(--m-color-contrast-fg);
1402
- --m-button-border: var(--m-color-contrast);
1403
- --m-button-hover-bg: var(--m-color-contrast-hover);
1404
- --m-button-hover-fg: var(--m-color-contrast-fg);
1405
- --m-button-hover-border: var(--m-color-contrast-hover);
1406
- --m-button-active-bg: var(--m-color-contrast-active);
1407
- }
1408
-
1409
- .m-button--outlined {
1410
- --m-button-bg: transparent;
1411
- --m-button-fg: var(--m-button-border);
1412
- --m-button-hover-bg: color-mix(
1466
+ --m-button-color-active: color-mix(
1413
1467
  in srgb,
1414
- var(--m-button-border) 10%,
1415
- transparent
1416
- );
1417
- --m-button-hover-fg: var(--m-button-border);
1418
- --m-button-hover-border: var(--m-button-border);
1419
- --m-button-active-bg: color-mix(
1468
+ var(--m-color-info) 76%,
1469
+ var(--m-color-text)
1470
+ );
1471
+ --m-button-solid-bg: var(--m-color-info);
1472
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1473
+ --m-button-solid-bg-active: var(--m-button-color-active);
1474
+ --m-button-outlined-border: var(--m-color-info);
1475
+ --m-button-outlined-fg: var(--m-color-info);
1476
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1477
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1478
+ --m-button-outlined-bg: var(--m-color-surface);
1479
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1480
+ }
1481
+
1482
+ .m-button--color-warning {
1483
+ --m-button-color-base: var(--m-color-warn);
1484
+ --m-button-color-hover: color-mix(
1420
1485
  in srgb,
1421
- var(--m-button-border) 16%,
1422
- transparent
1486
+ var(--m-color-warn) 88%,
1487
+ var(--m-color-text)
1423
1488
  );
1424
- }
1425
-
1426
- /* Idle matches outlined hover; hover/active deepen the tint. */
1427
- .m-button--plain {
1428
- --m-button-bg: color-mix(
1489
+ --m-button-color-active: color-mix(
1429
1490
  in srgb,
1430
- var(--m-button-border) 10%,
1431
- transparent
1432
- );
1433
- --m-button-fg: var(--m-button-border);
1434
- --m-button-hover-bg: color-mix(
1491
+ var(--m-color-warn) 76%,
1492
+ var(--m-color-text)
1493
+ );
1494
+ --m-button-solid-bg: var(--m-color-warn);
1495
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1496
+ --m-button-solid-bg-active: var(--m-button-color-active);
1497
+ --m-button-outlined-border: var(--m-color-warn);
1498
+ --m-button-outlined-fg: var(--m-color-warn);
1499
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1500
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1501
+ --m-button-outlined-bg: var(--m-color-surface);
1502
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1503
+ }
1504
+
1505
+ .m-button--color-help {
1506
+ --m-button-color-base: var(--m-color-help);
1507
+ --m-button-color-hover: color-mix(
1435
1508
  in srgb,
1436
- var(--m-button-border) 16%,
1437
- transparent
1509
+ var(--m-color-help) 88%,
1510
+ var(--m-color-text)
1438
1511
  );
1439
- --m-button-hover-fg: var(--m-button-border);
1440
- --m-button-hover-border: var(--m-button-border);
1441
- --m-button-active-bg: color-mix(
1512
+ --m-button-color-active: color-mix(
1442
1513
  in srgb,
1443
- var(--m-button-border) 22%,
1444
- transparent
1445
- );
1446
- }
1447
-
1448
- .m-button--secondary.m-button--outlined,
1449
- .m-button--secondary.m-button--plain {
1450
- --m-button-border: var(--m-color-border);
1451
- --m-button-fg: var(--m-color-text);
1452
- --m-button-hover-fg: var(--m-color-text);
1453
- }
1454
-
1455
- .m-button--text,
1456
- .m-button--link {
1457
- --m-button-bg: transparent;
1514
+ var(--m-color-help) 76%,
1515
+ var(--m-color-text)
1516
+ );
1517
+ --m-button-solid-bg: var(--m-color-help);
1518
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1519
+ --m-button-solid-bg-active: var(--m-button-color-active);
1520
+ --m-button-outlined-border: var(--m-color-help);
1521
+ --m-button-outlined-fg: var(--m-color-help);
1522
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1523
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1524
+ --m-button-outlined-bg: var(--m-color-surface);
1525
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1526
+ }
1527
+
1528
+ .m-button--color-contrast {
1529
+ --m-button-color-base: var(--m-color-contrast);
1530
+ --m-button-color-hover: var(--m-color-contrast-hover);
1531
+ --m-button-color-active: var(--m-color-contrast-active);
1532
+ --m-button-on-color: var(--m-color-contrast-fg);
1533
+ --m-button-solid-bg: var(--m-color-contrast);
1534
+ --m-button-solid-bg-hover: var(--m-color-contrast-hover);
1535
+ --m-button-solid-bg-active: var(--m-color-contrast-active);
1536
+ --m-button-outlined-border: var(--m-color-contrast);
1537
+ --m-button-outlined-fg: var(--m-color-contrast);
1538
+ --m-button-outlined-hover-border: var(--m-color-contrast-hover);
1539
+ --m-button-outlined-hover-fg: var(--m-color-contrast-hover);
1540
+ --m-button-outlined-bg: var(--m-color-surface);
1541
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1542
+ }
1543
+
1544
+ .m-button--color-link {
1545
+ --m-button-color-base: var(--m-color-primary);
1546
+ --m-button-color-hover: var(--m-color-primary-hover);
1547
+ --m-button-color-active: var(--m-color-primary-active);
1548
+ }
1549
+
1550
+ /* ---------- Variant axis ---------- */
1551
+
1552
+ .m-button--variant-solid {
1553
+ --m-button-bg: var(--m-button-solid-bg, var(--m-button-color-base));
1554
+ --m-button-fg: var(--m-button-on-color);
1458
1555
  --m-button-border: transparent;
1459
- --m-button-fg: var(--m-color-primary);
1460
- --m-button-hover-fg: var(--m-color-primary);
1461
- --m-button-hover-border: transparent;
1462
- }
1463
-
1464
- .m-button--text {
1465
- --m-button-hover-bg: color-mix(
1466
- in srgb,
1467
- var(--m-color-primary) 10%,
1468
- transparent
1469
- );
1470
- --m-button-active-bg: color-mix(
1471
- in srgb,
1472
- var(--m-color-primary) 16%,
1473
- transparent
1556
+ --m-button-hover-bg: var(
1557
+ --m-button-solid-bg-hover,
1558
+ var(--m-button-color-hover)
1474
1559
  );
1475
- }
1476
-
1477
- .m-button--link {
1478
- --m-button-bg: transparent;
1479
- --m-button-hover-bg: transparent;
1480
- --m-button-active-bg: transparent;
1481
- height: auto;
1482
- min-height: 0;
1483
- padding: 0;
1484
- }
1485
-
1486
- .m-button--link.m-button--link-underline:hover:not(:disabled) {
1487
- text-decoration: underline;
1488
- }
1489
-
1490
- .m-button--link:not(.m-button--link-underline):hover:not(:disabled) {
1491
- opacity: 0.8;
1492
- }
1493
-
1494
- .m-button--secondary.m-button--text {
1495
- --m-button-fg: var(--m-color-text-muted);
1496
- --m-button-hover-bg: color-mix(
1497
- in srgb,
1498
- var(--m-color-text-muted) 12%,
1499
- transparent
1500
- );
1501
- --m-button-hover-fg: var(--m-color-text);
1502
- }
1503
-
1504
- .m-button--secondary.m-button--link {
1505
- --m-button-fg: var(--m-color-text-muted);
1506
- --m-button-hover-fg: var(--m-color-text);
1507
- }
1508
-
1509
- .m-button--success.m-button--text,
1510
- .m-button--success.m-button--outlined {
1511
- --m-button-fg: var(--m-color-success);
1512
- --m-button-border: var(--m-color-success);
1513
- --m-button-hover-bg: color-mix(
1514
- in srgb,
1515
- var(--m-color-success) 10%,
1516
- transparent
1560
+ --m-button-hover-fg: var(--m-button-on-color);
1561
+ --m-button-hover-border: transparent;
1562
+ --m-button-active-bg: var(
1563
+ --m-button-solid-bg-active,
1564
+ var(--m-button-color-active)
1517
1565
  );
1518
- --m-button-hover-fg: var(--m-color-success);
1519
- --m-button-hover-border: var(--m-color-success);
1520
- }
1521
-
1522
- .m-button--success.m-button--link {
1523
- --m-button-fg: var(--m-color-success);
1524
- --m-button-hover-fg: var(--m-color-success);
1566
+ --m-button-active-fg: var(--m-button-on-color);
1567
+ --m-button-active-border: transparent;
1525
1568
  }
1526
1569
 
1527
- .m-button--info.m-button--text,
1528
- .m-button--info.m-button--outlined {
1529
- --m-button-fg: var(--m-color-info);
1530
- --m-button-border: var(--m-color-info);
1531
- --m-button-hover-bg: color-mix(
1532
- in srgb,
1533
- var(--m-color-info) 10%,
1534
- transparent
1570
+ .m-button--variant-outlined,
1571
+ .m-button--variant-dashed {
1572
+ --m-button-bg: var(--m-button-outlined-bg, var(--m-color-surface));
1573
+ --m-button-fg: var(--m-button-outlined-fg, var(--m-button-color-base));
1574
+ --m-button-border: var(
1575
+ --m-button-outlined-border,
1576
+ var(--m-button-color-base)
1535
1577
  );
1536
- --m-button-hover-fg: var(--m-color-info);
1537
- --m-button-hover-border: var(--m-color-info);
1538
- }
1539
-
1540
- .m-button--info.m-button--link {
1541
- --m-button-fg: var(--m-color-info);
1542
- --m-button-hover-fg: var(--m-color-info);
1543
- }
1544
-
1545
- .m-button--warn.m-button--text,
1546
- .m-button--warn.m-button--outlined {
1547
- --m-button-fg: var(--m-color-warn);
1548
- --m-button-border: var(--m-color-warn);
1549
- --m-button-hover-bg: color-mix(
1550
- in srgb,
1551
- var(--m-color-warn) 10%,
1552
- transparent
1578
+ --m-button-hover-bg: var(
1579
+ --m-button-outlined-hover-bg,
1580
+ var(--m-button-color-light)
1553
1581
  );
1554
- --m-button-hover-fg: var(--m-color-warn);
1555
- --m-button-hover-border: var(--m-color-warn);
1556
- }
1557
-
1558
- .m-button--warn.m-button--link {
1559
- --m-button-fg: var(--m-color-warn);
1560
- --m-button-hover-fg: var(--m-color-warn);
1561
- }
1562
-
1563
- .m-button--help.m-button--text,
1564
- .m-button--help.m-button--outlined {
1565
- --m-button-fg: var(--m-color-help);
1566
- --m-button-border: var(--m-color-help);
1567
- --m-button-hover-bg: color-mix(
1568
- in srgb,
1569
- var(--m-color-help) 10%,
1570
- transparent
1582
+ --m-button-hover-fg: var(
1583
+ --m-button-outlined-hover-fg,
1584
+ var(--m-button-color-hover)
1571
1585
  );
1572
- --m-button-hover-fg: var(--m-color-help);
1573
- --m-button-hover-border: var(--m-color-help);
1574
- }
1575
-
1576
- .m-button--help.m-button--link {
1577
- --m-button-fg: var(--m-color-help);
1578
- --m-button-hover-fg: var(--m-color-help);
1579
- }
1580
-
1581
- .m-button--danger.m-button--text,
1582
- .m-button--danger.m-button--outlined {
1583
- --m-button-fg: var(--m-color-danger);
1584
- --m-button-border: var(--m-color-danger);
1585
- --m-button-hover-bg: color-mix(
1586
- in srgb,
1587
- var(--m-color-danger) 10%,
1588
- transparent
1586
+ --m-button-hover-border: var(
1587
+ --m-button-outlined-hover-border,
1588
+ var(--m-button-color-hover)
1589
1589
  );
1590
- --m-button-hover-fg: var(--m-color-danger);
1591
- --m-button-hover-border: var(--m-color-danger);
1592
- }
1593
-
1594
- .m-button--danger.m-button--link {
1595
- --m-button-fg: var(--m-color-danger);
1596
- --m-button-hover-fg: var(--m-color-danger);
1597
- }
1598
-
1599
- .m-button--contrast.m-button--text,
1600
- .m-button--contrast.m-button--outlined {
1601
- --m-button-fg: var(--m-color-contrast);
1602
- --m-button-border: var(--m-color-contrast);
1603
- --m-button-hover-bg: color-mix(
1604
- in srgb,
1605
- var(--m-color-contrast) 10%,
1606
- transparent
1590
+ --m-button-active-bg: var(
1591
+ --m-button-outlined-active-bg,
1592
+ var(--m-button-color-light-active, var(--m-button-color-light))
1607
1593
  );
1608
- --m-button-hover-fg: var(--m-color-contrast);
1609
- --m-button-hover-border: var(--m-color-contrast);
1610
- }
1611
-
1612
- .m-button--contrast.m-button--link {
1613
- --m-button-fg: var(--m-color-contrast);
1614
- --m-button-hover-fg: var(--m-color-contrast);
1615
- }
1616
-
1617
- .m-button--plain.m-button--text,
1618
- .m-button--plain.m-button--outlined {
1619
- --m-button-bg: transparent;
1620
- --m-button-fg: var(--m-color-text-muted);
1621
- --m-button-border: var(--m-color-border);
1622
- --m-button-hover-bg: color-mix(
1623
- in srgb,
1624
- var(--m-color-text-muted) 12%,
1625
- transparent
1594
+ --m-button-active-fg: var(
1595
+ --m-button-color-active,
1596
+ var(--m-button-hover-fg)
1626
1597
  );
1627
- --m-button-hover-fg: var(--m-color-text);
1628
- --m-button-hover-border: var(--m-color-border);
1629
- --m-button-active-bg: color-mix(
1630
- in srgb,
1631
- var(--m-color-text-muted) 18%,
1632
- transparent
1598
+ --m-button-active-border: var(
1599
+ --m-button-color-active,
1600
+ var(--m-button-hover-border)
1633
1601
  );
1634
1602
  }
1635
1603
 
1636
- .m-button--plain.m-button--link {
1637
- --m-button-fg: var(--m-color-text-muted);
1638
- --m-button-hover-fg: var(--m-color-text);
1604
+ .m-button--variant-dashed {
1605
+ --m-button-border-style: dashed;
1639
1606
  }
1640
1607
 
1641
- .m-button--ghost {
1642
- --m-button-bg: color-mix(
1643
- in srgb,
1644
- var(--m-color-primary) 10%,
1645
- transparent
1646
- );
1608
+ .m-button--variant-filled {
1609
+ --m-button-bg: var(--m-button-color-light);
1610
+ --m-button-fg: var(--m-button-color-base);
1647
1611
  --m-button-border: transparent;
1648
- --m-button-fg: var(--m-color-primary);
1649
- --m-button-hover-bg: color-mix(
1650
- in srgb,
1651
- var(--m-color-primary) 16%,
1652
- transparent
1653
- );
1654
- --m-button-hover-fg: var(--m-color-primary);
1612
+ --m-button-hover-bg: var(--m-button-color-light-hover);
1613
+ --m-button-hover-fg: var(--m-button-color-base);
1655
1614
  --m-button-hover-border: transparent;
1656
- --m-button-active-bg: color-mix(
1657
- in srgb,
1658
- var(--m-color-primary) 22%,
1659
- transparent
1660
- );
1615
+ --m-button-active-bg: var(--m-button-color-light-active);
1616
+ --m-button-active-fg: var(--m-button-color-base);
1617
+ --m-button-active-border: transparent;
1661
1618
  }
1662
1619
 
1663
- .m-button--secondary.m-button--ghost {
1664
- --m-button-bg: color-mix(
1665
- in srgb,
1666
- var(--m-color-text-muted) 12%,
1667
- transparent
1668
- );
1669
- --m-button-fg: var(--m-color-text);
1670
- --m-button-hover-bg: color-mix(
1671
- in srgb,
1672
- var(--m-color-text-muted) 18%,
1673
- transparent
1674
- );
1675
- --m-button-hover-fg: var(--m-color-text);
1676
- --m-button-active-bg: color-mix(
1677
- in srgb,
1678
- var(--m-color-text-muted) 24%,
1679
- transparent
1680
- );
1681
- }
1682
-
1683
- .m-button--success.m-button--ghost {
1684
- --m-button-bg: color-mix(
1685
- in srgb,
1686
- var(--m-color-success) 10%,
1687
- transparent
1688
- );
1689
- --m-button-fg: var(--m-color-success);
1690
- --m-button-hover-bg: color-mix(
1691
- in srgb,
1692
- var(--m-color-success) 16%,
1693
- transparent
1694
- );
1695
- --m-button-hover-fg: var(--m-color-success);
1696
- --m-button-active-bg: color-mix(
1697
- in srgb,
1698
- var(--m-color-success) 22%,
1699
- transparent
1700
- );
1701
- }
1702
-
1703
- .m-button--info.m-button--ghost {
1704
- --m-button-bg: color-mix(
1705
- in srgb,
1706
- var(--m-color-info) 10%,
1707
- transparent
1708
- );
1709
- --m-button-fg: var(--m-color-info);
1710
- --m-button-hover-bg: color-mix(
1711
- in srgb,
1712
- var(--m-color-info) 16%,
1713
- transparent
1714
- );
1715
- --m-button-hover-fg: var(--m-color-info);
1716
- --m-button-active-bg: color-mix(
1717
- in srgb,
1718
- var(--m-color-info) 22%,
1719
- transparent
1720
- );
1620
+ .m-button--variant-text,
1621
+ .m-button--variant-link {
1622
+ --m-button-bg: transparent;
1623
+ --m-button-fg: var(--m-button-color-base);
1624
+ --m-button-border: transparent;
1625
+ --m-button-hover-fg: var(--m-button-color-hover);
1626
+ --m-button-hover-border: transparent;
1627
+ --m-button-active-bg: transparent;
1628
+ --m-button-active-fg: var(--m-button-color-active, var(--m-button-color-hover));
1629
+ --m-button-active-border: transparent;
1721
1630
  }
1722
1631
 
1723
- .m-button--warn.m-button--ghost {
1724
- --m-button-bg: color-mix(
1725
- in srgb,
1726
- var(--m-color-warn) 10%,
1727
- transparent
1728
- );
1729
- --m-button-fg: var(--m-color-warn);
1730
- --m-button-hover-bg: color-mix(
1731
- in srgb,
1732
- var(--m-color-warn) 16%,
1733
- transparent
1734
- );
1735
- --m-button-hover-fg: var(--m-color-warn);
1736
- --m-button-active-bg: color-mix(
1737
- in srgb,
1738
- var(--m-color-warn) 22%,
1739
- transparent
1740
- );
1632
+ .m-button--variant-text {
1633
+ --m-button-hover-bg: var(--m-button-color-light);
1634
+ --m-button-active-bg: var(--m-button-color-light-active);
1741
1635
  }
1742
1636
 
1743
- .m-button--help.m-button--ghost {
1744
- --m-button-bg: color-mix(
1745
- in srgb,
1746
- var(--m-color-help) 10%,
1747
- transparent
1748
- );
1749
- --m-button-fg: var(--m-color-help);
1750
- --m-button-hover-bg: color-mix(
1751
- in srgb,
1752
- var(--m-color-help) 16%,
1753
- transparent
1754
- );
1755
- --m-button-hover-fg: var(--m-color-help);
1756
- --m-button-active-bg: color-mix(
1757
- in srgb,
1758
- var(--m-color-help) 22%,
1759
- transparent
1760
- );
1637
+ .m-button--variant-link {
1638
+ --m-button-hover-bg: transparent;
1639
+ --m-button-height: auto;
1640
+ height: auto;
1641
+ min-height: 0;
1642
+ padding: 0;
1761
1643
  }
1762
1644
 
1763
- .m-button--danger.m-button--ghost {
1764
- --m-button-bg: color-mix(
1765
- in srgb,
1766
- var(--m-color-danger) 10%,
1767
- transparent
1768
- );
1769
- --m-button-fg: var(--m-color-danger);
1770
- --m-button-hover-bg: color-mix(
1771
- in srgb,
1772
- var(--m-color-danger) 16%,
1773
- transparent
1774
- );
1775
- --m-button-hover-fg: var(--m-color-danger);
1776
- --m-button-active-bg: color-mix(
1777
- in srgb,
1778
- var(--m-color-danger) 22%,
1779
- transparent
1780
- );
1645
+ .m-button--variant-link:hover:not(:disabled):not(.m-button--disabled) {
1646
+ text-decoration: underline;
1781
1647
  }
1782
1648
 
1783
- .m-button--contrast.m-button--ghost {
1784
- --m-button-bg: color-mix(
1785
- in srgb,
1786
- var(--m-color-contrast) 10%,
1787
- transparent
1788
- );
1789
- --m-button-fg: var(--m-color-contrast);
1790
- --m-button-hover-bg: color-mix(
1791
- in srgb,
1792
- var(--m-color-contrast) 16%,
1793
- transparent
1794
- );
1795
- --m-button-hover-fg: var(--m-color-contrast);
1796
- --m-button-active-bg: color-mix(
1797
- in srgb,
1798
- var(--m-color-contrast) 22%,
1799
- transparent
1800
- );
1649
+ .m-button--color-default.m-button--variant-text {
1650
+ --m-button-color-base: var(--m-color-text);
1651
+ --m-button-color-hover: var(--m-color-text);
1652
+ --m-button-hover-bg: var(--m-button-color-light);
1653
+ --m-button-active-bg: var(--m-button-color-light-hover);
1801
1654
  }
1802
1655
 
1803
- .m-button--quaternary {
1804
- --m-button-bg: transparent;
1805
- --m-button-border: transparent;
1806
- --m-button-fg: var(--m-color-text);
1807
- --m-button-hover-bg: color-mix(
1808
- in srgb,
1809
- var(--m-color-text-muted) 10%,
1810
- transparent
1811
- );
1812
- --m-button-hover-fg: var(--m-color-text);
1813
- --m-button-hover-border: transparent;
1814
- --m-button-active-bg: color-mix(
1815
- in srgb,
1816
- var(--m-color-text-muted) 16%,
1817
- transparent
1818
- );
1656
+ .m-button--color-default.m-button--variant-filled {
1657
+ --m-button-color-base: var(--m-color-text);
1819
1658
  }
1820
1659
 
1821
- .m-button--custom {
1822
- --m-button-bg: var(--m-button-color);
1823
- --m-button-fg: var(--m-color-on-emphasis);
1824
- --m-button-border: var(--m-button-color);
1825
- --m-button-hover-bg: color-mix(in srgb, var(--m-button-color) 85%, black);
1826
- --m-button-hover-fg: var(--m-color-on-emphasis);
1827
- --m-button-hover-border: color-mix(
1828
- in srgb,
1829
- var(--m-button-color) 85%,
1830
- black
1831
- );
1832
- --m-button-active-bg: color-mix(
1833
- in srgb,
1834
- var(--m-button-color) 75%,
1835
- black
1836
- );
1660
+ .m-button--color-link.m-button--variant-link {
1661
+ --m-button-color-base: var(--m-color-primary);
1662
+ --m-button-color-hover: var(--m-color-primary-hover);
1837
1663
  }
1838
1664
 
1839
- .m-button--custom.m-button--outlined {
1665
+ /* Ghost: transparent fill on bordered variants */
1666
+ .m-button--ghost {
1840
1667
  --m-button-bg: transparent;
1841
- --m-button-fg: var(--m-button-color);
1842
- --m-button-border: var(--m-button-color);
1843
- --m-button-hover-bg: color-mix(
1844
- in srgb,
1845
- var(--m-button-color) 12%,
1846
- transparent
1847
- );
1848
- --m-button-hover-fg: var(--m-button-color);
1849
- --m-button-hover-border: var(--m-button-color);
1668
+ --m-button-hover-bg: transparent;
1669
+ --m-button-active-bg: transparent;
1850
1670
  }
1851
1671
 
1852
- .m-button--custom.m-button--ghost {
1853
- --m-button-bg: color-mix(
1854
- in srgb,
1855
- var(--m-button-color) 10%,
1856
- transparent
1857
- );
1858
- --m-button-fg: var(--m-button-color);
1859
- --m-button-border: transparent;
1860
- --m-button-hover-bg: color-mix(
1861
- in srgb,
1862
- var(--m-button-color) 16%,
1863
- transparent
1864
- );
1865
- --m-button-hover-fg: var(--m-button-color);
1866
- --m-button-hover-border: transparent;
1867
- --m-button-active-bg: color-mix(
1868
- in srgb,
1869
- var(--m-button-color) 22%,
1870
- transparent
1871
- );
1672
+ .m-button--ghost.m-button--variant-solid,
1673
+ .m-button--ghost.m-button--variant-outlined,
1674
+ .m-button--ghost.m-button--variant-dashed {
1675
+ --m-button-fg: var(--m-button-color-base);
1676
+ --m-button-border: var(--m-button-color-base);
1677
+ --m-button-hover-fg: var(--m-button-color-hover);
1678
+ --m-button-hover-border: var(--m-button-color-hover);
1679
+ --m-button-active-fg: var(--m-button-color-active, var(--m-button-color-hover));
1680
+ --m-button-active-border: var(--m-button-color-active, var(--m-button-color-hover));
1872
1681
  }
1873
-
1874
- .m-button--custom.m-button--text,
1875
- .m-button--custom.m-button--quaternary {
1876
- --m-button-bg: transparent;
1877
- --m-button-fg: var(--m-button-color);
1878
- --m-button-border: transparent;
1879
- --m-button-hover-bg: color-mix(
1682
+ .m-button--ghost.m-button--color-default {
1683
+ --m-button-color-base: var(--m-color-on-emphasis);
1684
+ --m-button-color-hover: color-mix(
1880
1685
  in srgb,
1881
- var(--m-button-color) 12%,
1686
+ var(--m-color-on-emphasis) var(--m-button-ghost-hover-opacity),
1882
1687
  transparent
1883
1688
  );
1884
- --m-button-hover-fg: var(--m-button-color);
1885
- --m-button-hover-border: transparent;
1689
+ --m-button-fg: var(--m-color-on-emphasis);
1690
+ --m-button-border: var(--m-color-on-emphasis);
1691
+ --m-button-hover-fg: var(--m-button-color-hover);
1692
+ --m-button-hover-border: var(--m-button-color-hover);
1886
1693
  }
1887
1694
 
1888
- .m-button--custom.m-button--plain {
1889
- --m-button-bg: color-mix(
1890
- in srgb,
1891
- var(--m-button-color) 10%,
1892
- transparent
1893
- );
1894
- --m-button-fg: var(--m-button-color);
1895
- --m-button-border: var(--m-button-color);
1896
- --m-button-hover-bg: color-mix(
1897
- in srgb,
1898
- var(--m-button-color) 16%,
1899
- transparent
1900
- );
1901
- --m-button-hover-fg: var(--m-button-color);
1902
- --m-button-hover-border: var(--m-button-color);
1903
- --m-button-active-bg: color-mix(
1904
- in srgb,
1905
- var(--m-button-color) 22%,
1906
- transparent
1907
- );
1908
- }
1695
+ /* ---------- Size / shape / layout ---------- */
1909
1696
 
1910
- .m-button--custom.m-button--link {
1911
- --m-button-bg: transparent;
1912
- --m-button-fg: var(--m-button-color);
1913
- --m-button-border: transparent;
1914
- --m-button-hover-bg: transparent;
1915
- --m-button-hover-fg: var(--m-button-color);
1916
- --m-button-hover-border: transparent;
1917
- --m-button-active-bg: transparent;
1697
+ .m-button--small {
1698
+ --m-button-icon-size: var(--m-button-icon-size-small);
1699
+ --m-button-font-size: var(--m-control-font-small);
1700
+ --m-button-height: var(--m-control-height-small);
1701
+ --m-button-padding-x: var(--m-button-padding-x-small);
1918
1702
  }
1919
1703
 
1920
- .m-button-group {
1921
- display: inline-flex;
1922
- vertical-align: middle;
1704
+ .m-button--large {
1705
+ --m-button-icon-size: var(--m-button-icon-size-large);
1706
+ --m-button-font-size: var(--m-control-font-large);
1707
+ --m-button-height: var(--m-control-height-large);
1708
+ --m-button-padding-x: var(--m-button-padding-x-large);
1923
1709
  }
1924
1710
 
1925
- .m-button-group--fluid {
1711
+ .m-button--block {
1926
1712
  display: flex;
1927
1713
  width: 100%;
1928
1714
  }
1929
1715
 
1930
- .m-button-group--fluid > .m-button {
1931
- flex: 1;
1932
- }
1933
-
1934
- .m-button-group > .m-button {
1935
- border-radius: 0;
1936
- margin: 0;
1937
- }
1938
-
1939
- .m-button-group > .m-button + .m-button {
1940
- margin-left: calc(var(--m-border-width) * -1);
1941
- }
1942
-
1943
- .m-button-group > .m-button:hover,
1944
- .m-button-group > .m-button:focus-visible,
1945
- .m-button-group > .m-button:active {
1946
- position: relative;
1947
- z-index: 1;
1948
- }
1949
-
1950
- .m-button-group > .m-button:first-child {
1951
- border-top-left-radius: var(--m-radius-control);
1952
- border-bottom-left-radius: var(--m-radius-control);
1953
- }
1954
-
1955
- .m-button-group > .m-button:last-child {
1956
- border-top-right-radius: var(--m-radius-control);
1957
- border-bottom-right-radius: var(--m-radius-control);
1958
- }
1959
-
1960
- .m-button--raised {
1961
- box-shadow: var(--m-shadow-raised);
1962
- }
1963
-
1964
- .m-button--raised:focus-visible {
1965
- box-shadow: var(--m-focus-shadow), var(--m-shadow-raised);
1966
- }
1967
-
1968
- .m-button--rounded {
1969
- border-radius: var(--m-radius-full);
1716
+ .m-button--shape-round {
1717
+ --m-button-radius: var(--m-radius-full);
1718
+ padding-inline: calc(
1719
+ var(--m-button-padding-x) + var(--m-button-padding-x-round-extra)
1720
+ );
1970
1721
  }
1971
1722
 
1972
1723
  .m-button--shape-circle {
1973
- border-radius: var(--m-radius-full);
1974
- min-width: var(--m-control-height-medium);
1724
+ --m-button-radius: var(--m-radius-full);
1725
+ min-width: var(--m-button-height);
1975
1726
  padding-inline: 0;
1976
- width: var(--m-control-height-medium);
1977
- }
1978
-
1979
- .m-button--shape-circle.m-button--small {
1980
- min-width: var(--m-control-height-small);
1981
- width: var(--m-control-height-small);
1982
- }
1983
-
1984
- .m-button--shape-circle.m-button--large {
1985
- min-width: var(--m-control-height-large);
1986
- width: var(--m-control-height-large);
1987
- }
1988
-
1989
- .m-button--shape-round {
1990
- border-radius: var(--m-radius-full);
1991
- padding-inline: calc(var(--m-button-padding-x-medium) + var(--m-space-2));
1727
+ width: var(--m-button-height);
1992
1728
  }
1993
1729
 
1994
1730
  .m-button--shape-square {
1995
- border-radius: 0;
1996
- }
1997
-
1998
- .m-button--dashed {
1999
- background: var(--m-color-surface);
2000
- border-style: dashed;
2001
- color: var(--m-color-text);
2002
- }
2003
-
2004
- .m-button--dashed:not(:disabled):hover {
2005
- border-color: var(--m-color-primary-hover);
2006
- color: var(--m-color-primary-hover);
2007
- }
2008
-
2009
- .m-button--primary.m-button--dashed {
2010
- --m-button-bg: var(--m-color-surface);
2011
- --m-button-fg: var(--m-color-primary);
2012
- --m-button-border: var(--m-color-primary);
2013
- --m-button-hover-bg: var(--m-color-surface);
2014
- --m-button-hover-fg: var(--m-color-primary-hover);
2015
- --m-button-hover-border: var(--m-color-primary-hover);
2016
- --m-button-active-bg: var(--m-color-surface);
2017
- }
2018
-
2019
- .m-button--secondary.m-button--dashed {
2020
- --m-button-bg: var(--m-color-surface);
2021
- --m-button-fg: var(--m-color-text);
2022
- --m-button-border: var(--m-color-border);
2023
- --m-button-hover-bg: var(--m-color-surface);
2024
- --m-button-hover-fg: var(--m-color-primary-hover);
2025
- --m-button-hover-border: var(--m-color-primary-hover);
1731
+ --m-button-radius: 0;
2026
1732
  }
2027
1733
 
2028
1734
  .m-button--icon-only {
2029
1735
  gap: 0;
2030
- min-width: var(--m-control-height-medium);
1736
+ min-width: var(--m-button-height);
2031
1737
  padding: 0;
2032
- width: var(--m-control-height-medium);
2033
- }
2034
-
2035
- .m-button--icon-only.m-button--small {
2036
- min-width: var(--m-control-height-small);
2037
- width: var(--m-control-height-small);
1738
+ width: var(--m-button-height);
2038
1739
  }
2039
1740
 
2040
- .m-button--icon-only.m-button--large {
2041
- min-width: var(--m-control-height-large);
2042
- width: var(--m-control-height-large);
2043
- }
2044
-
2045
- .m-button--icon-right {
1741
+ .m-button--icon-end {
2046
1742
  flex-direction: row-reverse;
2047
1743
  }
2048
1744
 
2049
- .m-button--icon-top {
2050
- flex-direction: column;
2051
- min-height: var(--m-button-icon-stack-min-height);
2052
- padding-block: var(--m-space-2);
2053
- }
2054
-
2055
- .m-button--icon-bottom {
2056
- flex-direction: column-reverse;
2057
- min-height: var(--m-button-icon-stack-min-height);
2058
- padding-block: var(--m-space-2);
1745
+ .m-button--two-chinese-chars > .m-button__label {
1746
+ letter-spacing: var(--m-button-cn-letter-spacing);
1747
+ margin-inline-end: calc(var(--m-button-cn-letter-spacing) * -1);
2059
1748
  }
2060
1749
 
2061
- .m-button--fluid {
2062
- display: flex;
2063
- width: 100%;
2064
- }
2065
-
2066
- .m-button--small {
2067
- --m-button-icon-size: 0.875rem;
2068
- font-size: var(--m-control-font-small);
2069
- min-height: var(--m-control-height-small);
2070
- padding: 0 var(--m-button-padding-x-small);
1750
+ .m-button--loading {
1751
+ cursor: default;
1752
+ opacity: var(--m-button-loading-opacity);
1753
+ pointer-events: none;
2071
1754
  }
2072
1755
 
2073
- .m-button--large {
2074
- --m-button-icon-size: 1.25rem;
2075
- font-size: var(--m-control-font-large);
2076
- min-height: var(--m-control-height-large);
2077
- padding: 0 var(--m-button-padding-x-large);
2078
- }
1756
+ /* ---------- Parts ---------- */
2079
1757
 
2080
1758
  .m-button__icon,
2081
1759
  .m-button__label {
@@ -2085,8 +1763,7 @@
2085
1763
  }
2086
1764
 
2087
1765
  .m-button__icon,
2088
- .m-button__label,
2089
- .m-button__badge {
1766
+ .m-button__label {
2090
1767
  position: relative;
2091
1768
  z-index: 1;
2092
1769
  }
@@ -2110,18 +1787,18 @@
2110
1787
  will-change: transform, opacity;
2111
1788
  }
2112
1789
 
2113
- /* Used only when Web Animations API is unavailable. */
2114
1790
  .m-button__ripple-wave--fallback {
2115
- animation: m-button-ripple 560ms var(--m-motion-ease) forwards;
1791
+ animation: m-button-ripple var(--m-button-ripple-duration)
1792
+ var(--m-motion-ease) forwards;
2116
1793
  }
2117
1794
 
2118
1795
  @keyframes m-button-ripple {
2119
1796
  0% {
2120
- opacity: 0.42;
1797
+ opacity: var(--m-button-ripple-opacity-start);
2121
1798
  transform: scale(0);
2122
1799
  }
2123
1800
  55% {
2124
- opacity: 0.22;
1801
+ opacity: var(--m-button-ripple-opacity-mid);
2125
1802
  transform: scale(0.55);
2126
1803
  }
2127
1804
  100% {
@@ -2132,94 +1809,99 @@
2132
1809
 
2133
1810
  .m-button__icon {
2134
1811
  flex: 0 0 auto;
2135
- width: var(--m-button-icon-size);
2136
1812
  height: var(--m-button-icon-size);
2137
1813
  line-height: 0;
1814
+ width: var(--m-button-icon-size);
2138
1815
  }
2139
1816
 
2140
1817
  .m-button__icon :is(.m-icon, .m-button__icon-graphic, svg) {
2141
1818
  display: block;
2142
1819
  flex-shrink: 0;
2143
- width: 100%;
2144
1820
  height: 100%;
1821
+ width: 100%;
2145
1822
  }
2146
1823
 
2147
1824
  .m-button__icon .m-icon {
2148
- max-width: 100%;
2149
1825
  max-height: 100%;
1826
+ max-width: 100%;
2150
1827
  }
2151
1828
 
2152
- .m-button__badge {
2153
- align-items: center;
2154
- background: var(--m-color-contrast);
1829
+ .m-button__spinner {
1830
+ animation: m-button-spin var(--m-motion-spin-fast) linear infinite;
1831
+ border: var(--m-button-spinner-border-width) solid currentColor;
2155
1832
  border-radius: var(--m-radius-full);
2156
- color: var(--m-color-contrast-fg);
2157
- display: inline-flex;
2158
- font-size: var(--m-font-size-xs);
2159
- font-weight: 700;
2160
- justify-content: center;
2161
- line-height: 1;
2162
- margin-inline-start: var(--m-space-1);
2163
- min-width: var(--m-button-badge-min-width);
2164
- padding: var(--m-space-1) var(--m-space-2);
1833
+ border-right-color: transparent;
1834
+ height: var(--m-button-spinner-size);
1835
+ width: var(--m-button-spinner-size);
2165
1836
  }
2166
1837
 
2167
- .m-button__badge--secondary {
2168
- background: color-mix(
2169
- in srgb,
2170
- var(--m-color-text-muted) 25%,
2171
- var(--m-color-surface)
2172
- );
2173
- color: var(--m-color-text);
1838
+ @keyframes m-button-spin {
1839
+ to {
1840
+ transform: rotate(360deg);
1841
+ }
2174
1842
  }
2175
1843
 
2176
- .m-button__badge--success {
2177
- background: var(--m-color-success);
2178
- color: var(--m-color-on-emphasis);
1844
+ @media (prefers-reduced-motion: reduce) {
1845
+ .m-button {
1846
+ --m-button-ripple-duration: 0ms;
1847
+ transition-duration: 0ms;
1848
+ }
1849
+
1850
+ .m-button__spinner {
1851
+ animation-duration: 0ms;
1852
+ }
2179
1853
  }
2180
1854
 
2181
- .m-button__badge--info {
2182
- background: var(--m-color-info);
2183
- color: var(--m-color-on-emphasis);
1855
+ :root[data-m-motion='reduced'] .m-button {
1856
+ --m-button-ripple-duration: 280ms;
1857
+ --m-button-press-duration: 120ms;
2184
1858
  }
2185
1859
 
2186
- .m-button__badge--warn {
2187
- background: var(--m-color-warn);
2188
- color: var(--m-color-on-emphasis);
1860
+ :root[data-m-motion='none'] .m-button {
1861
+ --m-button-ripple-duration: 0ms;
1862
+ --m-button-press-duration: 0ms;
2189
1863
  }
2190
1864
 
2191
- .m-button__badge--danger {
2192
- background: var(--m-color-danger);
2193
- color: var(--m-color-on-emphasis);
1865
+ /* ---------- Group ---------- */
1866
+
1867
+ .m-button-group {
1868
+ display: inline-flex;
1869
+ vertical-align: middle;
2194
1870
  }
2195
1871
 
2196
- .m-button__badge--contrast {
2197
- background: var(--m-color-contrast);
2198
- color: var(--m-color-contrast-fg);
1872
+ .m-button-group--block {
1873
+ display: flex;
1874
+ width: 100%;
2199
1875
  }
2200
1876
 
2201
- .m-button__spinner {
2202
- animation: m-button-spin var(--m-motion-spin-fast) linear infinite;
2203
- border: 2px solid currentColor;
2204
- border-right-color: transparent;
2205
- border-radius: var(--m-radius-full);
2206
- height: var(--m-button-spinner-size);
2207
- width: var(--m-button-spinner-size);
1877
+ .m-button-group--block > .m-button {
1878
+ flex: 1;
2208
1879
  }
2209
1880
 
2210
- @keyframes m-button-spin {
2211
- to {
2212
- transform: rotate(360deg);
2213
- }
1881
+ .m-button-group > .m-button {
1882
+ border-radius: 0;
1883
+ margin: 0;
2214
1884
  }
2215
1885
 
2216
- [data-m-motion="reduced"] .m-button__spinner,
2217
- [data-m-motion="none"] .m-button__spinner {
2218
- animation: none;
1886
+ .m-button-group > .m-button + .m-button {
1887
+ margin-inline-start: calc(var(--m-border-width) * -1);
2219
1888
  }
2220
1889
 
2221
- [data-m-motion="none"] .m-button__ripple-wave {
2222
- display: none;
1890
+ .m-button-group > .m-button:hover,
1891
+ .m-button-group > .m-button:focus-visible,
1892
+ .m-button-group > .m-button:active {
1893
+ position: relative;
1894
+ z-index: 1;
1895
+ }
1896
+
1897
+ .m-button-group > .m-button:first-child {
1898
+ border-end-start-radius: var(--m-radius-control);
1899
+ border-start-start-radius: var(--m-radius-control);
1900
+ }
1901
+
1902
+ .m-button-group > .m-button:last-child {
1903
+ border-end-end-radius: var(--m-radius-control);
1904
+ border-start-end-radius: var(--m-radius-control);
2223
1905
  }
2224
1906
 
2225
1907
  .m-icon {