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
@@ -1205,6 +1205,13 @@
1205
1205
  animation: none !important;
1206
1206
  }
1207
1207
 
1208
+ /* ConfigProvider passes height to layout roots when the app shell is full-height. */
1209
+ .m-config-provider {
1210
+ position: relative;
1211
+ width: 100%;
1212
+ height: 100%;
1213
+ }
1214
+
1208
1215
  .m-icon {
1209
1216
  color: currentColor;
1210
1217
  display: inline-flex;
@@ -1255,6 +1262,14 @@
1255
1262
  }
1256
1263
 
1257
1264
  .m-button {
1265
+ /* Geometry */
1266
+ --m-button-radius: var(--m-radius-control);
1267
+ --m-button-border-width: var(--m-border-width);
1268
+ --m-button-gap: var(--m-space-2);
1269
+ --m-button-font-weight: var(--m-font-weight);
1270
+ --m-button-font-size: var(--m-control-font-medium);
1271
+ --m-button-height: var(--m-control-height-medium);
1272
+ --m-button-padding-x: var(--m-button-padding-x-medium);
1258
1273
  --m-button-padding-x-small: var(--m-control-padding-x-small);
1259
1274
  --m-button-padding-x-medium: calc(
1260
1275
  var(--m-control-padding-x-medium) + var(--m-space-1)
@@ -1262,62 +1277,117 @@
1262
1277
  --m-button-padding-x-large: calc(
1263
1278
  var(--m-control-padding-x-large) + var(--m-space-1)
1264
1279
  );
1265
- --m-button-icon-stack-min-height: 3.25rem;
1266
- --m-button-badge-min-width: 1.15rem;
1267
- --m-button-spinner-size: 0.875rem;
1280
+ --m-button-padding-x-round-extra: var(--m-space-2);
1281
+
1282
+ /* Icon / spinner */
1268
1283
  --m-button-icon-size: 1rem;
1269
- --m-button-bg: var(--m-color-primary);
1270
- --m-button-fg: var(--m-color-on-emphasis);
1271
- --m-button-border: var(--m-color-primary);
1272
- --m-button-hover-bg: var(--m-color-primary-hover);
1273
- --m-button-hover-fg: var(--m-color-on-emphasis);
1274
- --m-button-hover-border: var(--m-color-primary-hover);
1275
- --m-button-active-bg: var(--m-color-primary-active);
1284
+ --m-button-icon-size-small: 0.875rem;
1285
+ --m-button-icon-size-large: 1.25rem;
1286
+ --m-button-spinner-size: 0.875rem;
1287
+ --m-button-spinner-border-width: 2px;
1288
+ --m-button-cn-letter-spacing: 0.3em;
1289
+
1290
+ /* Soft fill opacities (theme-adaptive via surface mix) */
1291
+ --m-button-fill-opacity: 10%;
1292
+ --m-button-fill-opacity-hover: 16%;
1293
+ --m-button-fill-opacity-active: 22%;
1294
+ --m-button-fill-opacity-muted: 6%;
1295
+ --m-button-fill-opacity-muted-hover: 10%;
1296
+ --m-button-fill-opacity-muted-active: 14%;
1297
+
1298
+ /* Interaction */
1299
+ --m-button-loading-opacity: 0.72;
1300
+ --m-button-press-scale: 0.97;
1301
+ --m-button-press-duration: 160ms;
1302
+ --m-button-ripple-duration: 560ms;
1303
+ --m-button-ripple-opacity-start: 0.42;
1304
+ --m-button-ripple-opacity-mid: 0.22;
1305
+ --m-button-ghost-hover-opacity: 80%;
1306
+
1307
+ /* Color axis defaults (overridden by --color-*) */
1308
+ --m-button-color-base: var(--m-color-primary);
1309
+ --m-button-color-hover: var(--m-color-primary-hover);
1310
+ --m-button-color-active: var(--m-color-primary-active);
1311
+ --m-button-color-light: color-mix(
1312
+ in srgb,
1313
+ var(--m-button-color-base) var(--m-button-fill-opacity),
1314
+ var(--m-color-surface)
1315
+ );
1316
+ --m-button-color-light-hover: color-mix(
1317
+ in srgb,
1318
+ var(--m-button-color-base) var(--m-button-fill-opacity-hover),
1319
+ var(--m-color-surface)
1320
+ );
1321
+ --m-button-color-light-active: color-mix(
1322
+ in srgb,
1323
+ var(--m-button-color-base) var(--m-button-fill-opacity-active),
1324
+ var(--m-color-surface)
1325
+ );
1326
+ --m-button-on-color: var(--m-color-on-emphasis);
1327
+
1328
+ /* Variant surface vars */
1329
+ --m-button-bg: var(--m-color-surface);
1330
+ --m-button-fg: var(--m-color-text);
1331
+ --m-button-border: var(--m-color-border);
1332
+ --m-button-hover-bg: var(--m-button-bg);
1333
+ --m-button-hover-fg: var(--m-button-fg);
1334
+ --m-button-hover-border: var(--m-button-border);
1335
+ --m-button-active-bg: var(--m-button-bg);
1336
+ --m-button-border-style: solid;
1337
+
1338
+ --m-button-active-fg: var(--m-button-fg);
1339
+ --m-button-active-border: var(--m-button-border);
1340
+
1276
1341
  align-items: center;
1277
1342
  background: var(--m-button-bg);
1278
- border: var(--m-border-width) solid var(--m-button-border);
1279
- border-radius: var(--m-radius-control);
1343
+ border: var(--m-button-border-width) var(--m-button-border-style)
1344
+ var(--m-button-border);
1345
+ border-radius: var(--m-button-radius);
1280
1346
  color: var(--m-button-fg);
1281
1347
  cursor: pointer;
1282
1348
  display: inline-flex;
1283
1349
  flex-direction: row;
1284
1350
  font-family: var(--m-font-sans);
1285
- font-size: var(--m-control-font-medium);
1286
- font-weight: 400;
1287
- gap: var(--m-space-2);
1351
+ font-size: var(--m-button-font-size);
1352
+ font-weight: var(--m-button-font-weight);
1353
+ gap: var(--m-button-gap);
1288
1354
  justify-content: center;
1289
1355
  line-height: 1;
1290
- min-height: var(--m-control-height-medium);
1291
- padding: 0 var(--m-button-padding-x-medium);
1356
+ min-height: var(--m-button-height);
1357
+ padding: 0 var(--m-button-padding-x);
1292
1358
  position: relative;
1359
+ text-decoration: none;
1360
+ touch-action: manipulation;
1293
1361
  transition:
1294
1362
  background-color var(--m-motion-fast) var(--m-motion-ease),
1295
1363
  border-color var(--m-motion-fast) var(--m-motion-ease),
1296
1364
  color var(--m-motion-fast) var(--m-motion-ease),
1297
1365
  box-shadow var(--m-motion-fast) var(--m-motion-ease),
1298
1366
  opacity var(--m-motion-fast) var(--m-motion-ease),
1299
- transform 160ms var(--m-motion-ease);
1367
+ transform var(--m-button-press-duration) var(--m-motion-ease);
1368
+ user-select: none;
1300
1369
  vertical-align: middle;
1301
1370
  white-space: nowrap;
1302
1371
  }
1303
1372
 
1304
1373
  @media (hover: hover) and (pointer: fine) {
1305
- .m-button:hover:not(:disabled) {
1374
+ .m-button:hover:not(:disabled):not(.m-button--disabled) {
1306
1375
  background: var(--m-button-hover-bg);
1307
1376
  border-color: var(--m-button-hover-border);
1308
1377
  color: var(--m-button-hover-fg);
1309
1378
  }
1310
1379
  }
1311
1380
 
1312
- .m-button:active:not(:disabled) {
1381
+ .m-button:active:not(:disabled):not(.m-button--disabled):not(.m-button--loading) {
1313
1382
  background: var(--m-button-active-bg);
1383
+ border-color: var(--m-button-active-border);
1384
+ color: var(--m-button-active-fg);
1314
1385
  }
1315
1386
 
1316
- .m-button--press:active:not(:disabled) {
1317
- transform: scale(0.97);
1387
+ .m-button--press:active:not(:disabled):not(.m-button--disabled) {
1388
+ transform: scale(var(--m-button-press-scale));
1318
1389
  }
1319
1390
 
1320
- /* Soft glow focus, not outline-offset ring */
1321
1391
  .m-button:focus {
1322
1392
  outline: none;
1323
1393
  }
@@ -1327,804 +1397,419 @@
1327
1397
  outline: none;
1328
1398
  }
1329
1399
 
1330
- .m-button:disabled {
1331
- background: color-mix(in srgb, var(--m-color-text) 4%, var(--m-color-surface));
1400
+ .m-button:disabled,
1401
+ .m-button--disabled {
1402
+ background: var(--m-color-bg-disabled);
1332
1403
  border-color: var(--m-color-border);
1333
- color: color-mix(in srgb, var(--m-color-text) 35%, var(--m-color-surface));
1404
+ color: var(--m-color-text-disabled);
1334
1405
  cursor: not-allowed;
1335
1406
  opacity: 1;
1336
1407
  }
1337
1408
 
1338
- .m-button--text:disabled,
1339
- .m-button--link:disabled,
1409
+ .m-button--variant-text:disabled,
1410
+ .m-button--variant-link:disabled,
1411
+ .m-button--variant-text.m-button--disabled,
1412
+ .m-button--variant-link.m-button--disabled,
1340
1413
  .m-button--ghost:disabled,
1341
- .m-button--quaternary:disabled {
1414
+ .m-button--ghost.m-button--disabled {
1342
1415
  background: transparent;
1343
1416
  border-color: transparent;
1344
1417
  }
1345
1418
 
1346
- .m-button--primary {
1347
- --m-button-bg: var(--m-color-primary);
1348
- --m-button-fg: var(--m-color-on-emphasis);
1349
- --m-button-border: var(--m-color-primary);
1350
- --m-button-hover-bg: var(--m-color-primary-hover);
1351
- --m-button-hover-fg: var(--m-color-on-emphasis);
1352
- --m-button-hover-border: var(--m-color-primary-hover);
1353
- --m-button-active-bg: var(--m-color-primary-active);
1354
- }
1355
-
1356
- .m-button--secondary {
1357
- --m-button-bg: var(--m-color-surface);
1358
- --m-button-fg: var(--m-color-text);
1359
- --m-button-border: var(--m-color-border);
1360
- --m-button-hover-bg: var(--m-color-surface);
1361
- --m-button-hover-fg: var(--m-color-primary-hover);
1362
- --m-button-hover-border: var(--m-color-primary-hover);
1363
- --m-button-active-bg: var(--m-color-surface);
1364
- }
1419
+ /* ---------- Color axis ---------- */
1365
1420
 
1366
- .m-button--success {
1367
- --m-button-bg: var(--m-color-success);
1368
- --m-button-fg: var(--m-color-on-emphasis);
1369
- --m-button-border: var(--m-color-success);
1370
- --m-button-hover-bg: color-mix(
1421
+ .m-button--color-default {
1422
+ --m-button-color-base: var(--m-color-text);
1423
+ --m-button-color-hover: var(--m-color-primary-hover);
1424
+ --m-button-color-active: var(--m-color-primary-active);
1425
+ --m-button-color-light: color-mix(
1371
1426
  in srgb,
1372
- var(--m-color-success) 85%,
1373
- black
1427
+ var(--m-color-text) var(--m-button-fill-opacity-muted),
1428
+ var(--m-color-surface)
1374
1429
  );
1375
- --m-button-hover-fg: var(--m-color-on-emphasis);
1376
- --m-button-hover-border: color-mix(
1430
+ --m-button-color-light-hover: color-mix(
1377
1431
  in srgb,
1378
- var(--m-color-success) 85%,
1379
- black
1432
+ var(--m-color-text) var(--m-button-fill-opacity-muted-hover),
1433
+ var(--m-color-surface)
1380
1434
  );
1381
- --m-button-active-bg: color-mix(
1435
+ --m-button-color-light-active: color-mix(
1382
1436
  in srgb,
1383
- var(--m-color-success) 75%,
1384
- black
1437
+ var(--m-color-text) var(--m-button-fill-opacity-muted-active),
1438
+ var(--m-color-surface)
1385
1439
  );
1386
- }
1387
-
1388
- .m-button--info {
1389
- --m-button-bg: var(--m-color-info);
1390
- --m-button-fg: var(--m-color-on-emphasis);
1391
- --m-button-border: var(--m-color-info);
1392
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-info) 85%, black);
1393
- --m-button-hover-fg: var(--m-color-on-emphasis);
1394
- --m-button-hover-border: color-mix(
1440
+ --m-button-on-color: var(--m-color-contrast-fg);
1441
+ --m-button-solid-bg: var(--m-color-contrast);
1442
+ --m-button-solid-bg-hover: var(--m-color-contrast-hover);
1443
+ --m-button-solid-bg-active: var(--m-color-contrast-active);
1444
+ --m-button-outlined-border: var(--m-color-border);
1445
+ --m-button-outlined-fg: var(--m-color-text);
1446
+ --m-button-outlined-hover-border: var(--m-color-primary-hover);
1447
+ --m-button-outlined-hover-fg: var(--m-color-primary-hover);
1448
+ --m-button-outlined-bg: var(--m-color-surface);
1449
+ /* Match ant default outlined/dashed: keep surface bg, only shift border/text. */
1450
+ --m-button-outlined-hover-bg: var(--m-color-surface);
1451
+ --m-button-outlined-active-bg: var(--m-color-surface);
1452
+ }
1453
+
1454
+ .m-button--color-primary {
1455
+ --m-button-color-base: var(--m-color-primary);
1456
+ --m-button-color-hover: var(--m-color-primary-hover);
1457
+ --m-button-color-active: var(--m-color-primary-active);
1458
+ --m-button-solid-bg: var(--m-color-primary);
1459
+ --m-button-solid-bg-hover: var(--m-color-primary-hover);
1460
+ --m-button-solid-bg-active: var(--m-color-primary-active);
1461
+ --m-button-outlined-border: var(--m-color-primary);
1462
+ --m-button-outlined-fg: var(--m-color-primary);
1463
+ --m-button-outlined-hover-border: var(--m-color-primary-hover);
1464
+ --m-button-outlined-hover-fg: var(--m-color-primary-hover);
1465
+ --m-button-outlined-bg: var(--m-color-surface);
1466
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1467
+ }
1468
+
1469
+ .m-button--color-danger {
1470
+ --m-button-color-base: var(--m-color-danger);
1471
+ --m-button-color-hover: color-mix(
1395
1472
  in srgb,
1396
- var(--m-color-info) 85%,
1397
- black
1473
+ var(--m-color-danger) 88%,
1474
+ var(--m-color-text)
1398
1475
  );
1399
- --m-button-active-bg: color-mix(in srgb, var(--m-color-info) 75%, black);
1400
- }
1401
-
1402
- .m-button--warn {
1403
- --m-button-bg: var(--m-color-warn);
1404
- --m-button-fg: var(--m-color-on-emphasis);
1405
- --m-button-border: var(--m-color-warn);
1406
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-warn) 85%, black);
1407
- --m-button-hover-fg: var(--m-color-on-emphasis);
1408
- --m-button-hover-border: color-mix(
1476
+ --m-button-color-active: color-mix(
1409
1477
  in srgb,
1410
- var(--m-color-warn) 85%,
1411
- black
1412
- );
1413
- --m-button-active-bg: color-mix(in srgb, var(--m-color-warn) 75%, black);
1414
- }
1415
-
1416
- .m-button--help {
1417
- --m-button-bg: var(--m-color-help);
1418
- --m-button-fg: var(--m-color-on-emphasis);
1419
- --m-button-border: var(--m-color-help);
1420
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-help) 85%, black);
1421
- --m-button-hover-fg: var(--m-color-on-emphasis);
1422
- --m-button-hover-border: color-mix(
1478
+ var(--m-color-danger) 76%,
1479
+ var(--m-color-text)
1480
+ );
1481
+ --m-button-solid-bg: var(--m-color-danger);
1482
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1483
+ --m-button-solid-bg-active: var(--m-button-color-active);
1484
+ --m-button-outlined-border: var(--m-color-danger);
1485
+ --m-button-outlined-fg: var(--m-color-danger);
1486
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1487
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1488
+ --m-button-outlined-bg: var(--m-color-surface);
1489
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1490
+ }
1491
+
1492
+ .m-button--color-success {
1493
+ --m-button-color-base: var(--m-color-success);
1494
+ --m-button-color-hover: color-mix(
1423
1495
  in srgb,
1424
- var(--m-color-help) 85%,
1425
- black
1496
+ var(--m-color-success) 88%,
1497
+ var(--m-color-text)
1426
1498
  );
1427
- --m-button-active-bg: color-mix(in srgb, var(--m-color-help) 75%, black);
1428
- }
1429
-
1430
- .m-button--danger {
1431
- --m-button-bg: var(--m-color-danger);
1432
- --m-button-fg: var(--m-color-on-emphasis);
1433
- --m-button-border: var(--m-color-danger);
1434
- --m-button-hover-bg: color-mix(in srgb, var(--m-color-danger) 85%, black);
1435
- --m-button-hover-fg: var(--m-color-on-emphasis);
1436
- --m-button-hover-border: color-mix(
1499
+ --m-button-color-active: color-mix(
1437
1500
  in srgb,
1438
- var(--m-color-danger) 85%,
1439
- black
1440
- );
1441
- --m-button-active-bg: color-mix(
1501
+ var(--m-color-success) 76%,
1502
+ var(--m-color-text)
1503
+ );
1504
+ --m-button-solid-bg: var(--m-color-success);
1505
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1506
+ --m-button-solid-bg-active: var(--m-button-color-active);
1507
+ --m-button-outlined-border: var(--m-color-success);
1508
+ --m-button-outlined-fg: var(--m-color-success);
1509
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1510
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1511
+ --m-button-outlined-bg: var(--m-color-surface);
1512
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1513
+ }
1514
+
1515
+ .m-button--color-info {
1516
+ --m-button-color-base: var(--m-color-info);
1517
+ --m-button-color-hover: color-mix(
1442
1518
  in srgb,
1443
- var(--m-color-danger) 75%,
1444
- black
1519
+ var(--m-color-info) 88%,
1520
+ var(--m-color-text)
1445
1521
  );
1446
- }
1447
-
1448
- .m-button--contrast {
1449
- --m-button-bg: var(--m-color-contrast);
1450
- --m-button-fg: var(--m-color-contrast-fg);
1451
- --m-button-border: var(--m-color-contrast);
1452
- --m-button-hover-bg: var(--m-color-contrast-hover);
1453
- --m-button-hover-fg: var(--m-color-contrast-fg);
1454
- --m-button-hover-border: var(--m-color-contrast-hover);
1455
- --m-button-active-bg: var(--m-color-contrast-active);
1456
- }
1457
-
1458
- .m-button--outlined {
1459
- --m-button-bg: transparent;
1460
- --m-button-fg: var(--m-button-border);
1461
- --m-button-hover-bg: color-mix(
1522
+ --m-button-color-active: color-mix(
1462
1523
  in srgb,
1463
- var(--m-button-border) 10%,
1464
- transparent
1465
- );
1466
- --m-button-hover-fg: var(--m-button-border);
1467
- --m-button-hover-border: var(--m-button-border);
1468
- --m-button-active-bg: color-mix(
1524
+ var(--m-color-info) 76%,
1525
+ var(--m-color-text)
1526
+ );
1527
+ --m-button-solid-bg: var(--m-color-info);
1528
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1529
+ --m-button-solid-bg-active: var(--m-button-color-active);
1530
+ --m-button-outlined-border: var(--m-color-info);
1531
+ --m-button-outlined-fg: var(--m-color-info);
1532
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1533
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1534
+ --m-button-outlined-bg: var(--m-color-surface);
1535
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1536
+ }
1537
+
1538
+ .m-button--color-warning {
1539
+ --m-button-color-base: var(--m-color-warn);
1540
+ --m-button-color-hover: color-mix(
1469
1541
  in srgb,
1470
- var(--m-button-border) 16%,
1471
- transparent
1542
+ var(--m-color-warn) 88%,
1543
+ var(--m-color-text)
1472
1544
  );
1473
- }
1474
-
1475
- /* Idle matches outlined hover; hover/active deepen the tint. */
1476
- .m-button--plain {
1477
- --m-button-bg: color-mix(
1545
+ --m-button-color-active: color-mix(
1478
1546
  in srgb,
1479
- var(--m-button-border) 10%,
1480
- transparent
1481
- );
1482
- --m-button-fg: var(--m-button-border);
1483
- --m-button-hover-bg: color-mix(
1547
+ var(--m-color-warn) 76%,
1548
+ var(--m-color-text)
1549
+ );
1550
+ --m-button-solid-bg: var(--m-color-warn);
1551
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1552
+ --m-button-solid-bg-active: var(--m-button-color-active);
1553
+ --m-button-outlined-border: var(--m-color-warn);
1554
+ --m-button-outlined-fg: var(--m-color-warn);
1555
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1556
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1557
+ --m-button-outlined-bg: var(--m-color-surface);
1558
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1559
+ }
1560
+
1561
+ .m-button--color-help {
1562
+ --m-button-color-base: var(--m-color-help);
1563
+ --m-button-color-hover: color-mix(
1484
1564
  in srgb,
1485
- var(--m-button-border) 16%,
1486
- transparent
1565
+ var(--m-color-help) 88%,
1566
+ var(--m-color-text)
1487
1567
  );
1488
- --m-button-hover-fg: var(--m-button-border);
1489
- --m-button-hover-border: var(--m-button-border);
1490
- --m-button-active-bg: color-mix(
1568
+ --m-button-color-active: color-mix(
1491
1569
  in srgb,
1492
- var(--m-button-border) 22%,
1493
- transparent
1494
- );
1495
- }
1496
-
1497
- .m-button--secondary.m-button--outlined,
1498
- .m-button--secondary.m-button--plain {
1499
- --m-button-border: var(--m-color-border);
1500
- --m-button-fg: var(--m-color-text);
1501
- --m-button-hover-fg: var(--m-color-text);
1502
- }
1503
-
1504
- .m-button--text,
1505
- .m-button--link {
1506
- --m-button-bg: transparent;
1570
+ var(--m-color-help) 76%,
1571
+ var(--m-color-text)
1572
+ );
1573
+ --m-button-solid-bg: var(--m-color-help);
1574
+ --m-button-solid-bg-hover: var(--m-button-color-hover);
1575
+ --m-button-solid-bg-active: var(--m-button-color-active);
1576
+ --m-button-outlined-border: var(--m-color-help);
1577
+ --m-button-outlined-fg: var(--m-color-help);
1578
+ --m-button-outlined-hover-border: var(--m-button-color-hover);
1579
+ --m-button-outlined-hover-fg: var(--m-button-color-hover);
1580
+ --m-button-outlined-bg: var(--m-color-surface);
1581
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1582
+ }
1583
+
1584
+ .m-button--color-contrast {
1585
+ --m-button-color-base: var(--m-color-contrast);
1586
+ --m-button-color-hover: var(--m-color-contrast-hover);
1587
+ --m-button-color-active: var(--m-color-contrast-active);
1588
+ --m-button-on-color: var(--m-color-contrast-fg);
1589
+ --m-button-solid-bg: var(--m-color-contrast);
1590
+ --m-button-solid-bg-hover: var(--m-color-contrast-hover);
1591
+ --m-button-solid-bg-active: var(--m-color-contrast-active);
1592
+ --m-button-outlined-border: var(--m-color-contrast);
1593
+ --m-button-outlined-fg: var(--m-color-contrast);
1594
+ --m-button-outlined-hover-border: var(--m-color-contrast-hover);
1595
+ --m-button-outlined-hover-fg: var(--m-color-contrast-hover);
1596
+ --m-button-outlined-bg: var(--m-color-surface);
1597
+ --m-button-outlined-hover-bg: var(--m-button-color-light);
1598
+ }
1599
+
1600
+ .m-button--color-link {
1601
+ --m-button-color-base: var(--m-color-primary);
1602
+ --m-button-color-hover: var(--m-color-primary-hover);
1603
+ --m-button-color-active: var(--m-color-primary-active);
1604
+ }
1605
+
1606
+ /* ---------- Variant axis ---------- */
1607
+
1608
+ .m-button--variant-solid {
1609
+ --m-button-bg: var(--m-button-solid-bg, var(--m-button-color-base));
1610
+ --m-button-fg: var(--m-button-on-color);
1507
1611
  --m-button-border: transparent;
1508
- --m-button-fg: var(--m-color-primary);
1509
- --m-button-hover-fg: var(--m-color-primary);
1510
- --m-button-hover-border: transparent;
1511
- }
1512
-
1513
- .m-button--text {
1514
- --m-button-hover-bg: color-mix(
1515
- in srgb,
1516
- var(--m-color-primary) 10%,
1517
- transparent
1612
+ --m-button-hover-bg: var(
1613
+ --m-button-solid-bg-hover,
1614
+ var(--m-button-color-hover)
1518
1615
  );
1519
- --m-button-active-bg: color-mix(
1520
- in srgb,
1521
- var(--m-color-primary) 16%,
1522
- transparent
1523
- );
1524
- }
1525
-
1526
- .m-button--link {
1527
- --m-button-bg: transparent;
1528
- --m-button-hover-bg: transparent;
1529
- --m-button-active-bg: transparent;
1530
- height: auto;
1531
- min-height: 0;
1532
- padding: 0;
1533
- }
1534
-
1535
- .m-button--link.m-button--link-underline:hover:not(:disabled) {
1536
- text-decoration: underline;
1537
- }
1538
-
1539
- .m-button--link:not(.m-button--link-underline):hover:not(:disabled) {
1540
- opacity: 0.8;
1541
- }
1542
-
1543
- .m-button--secondary.m-button--text {
1544
- --m-button-fg: var(--m-color-text-muted);
1545
- --m-button-hover-bg: color-mix(
1546
- in srgb,
1547
- var(--m-color-text-muted) 12%,
1548
- transparent
1549
- );
1550
- --m-button-hover-fg: var(--m-color-text);
1551
- }
1552
-
1553
- .m-button--secondary.m-button--link {
1554
- --m-button-fg: var(--m-color-text-muted);
1555
- --m-button-hover-fg: var(--m-color-text);
1556
- }
1557
-
1558
- .m-button--success.m-button--text,
1559
- .m-button--success.m-button--outlined {
1560
- --m-button-fg: var(--m-color-success);
1561
- --m-button-border: var(--m-color-success);
1562
- --m-button-hover-bg: color-mix(
1563
- in srgb,
1564
- var(--m-color-success) 10%,
1565
- transparent
1616
+ --m-button-hover-fg: var(--m-button-on-color);
1617
+ --m-button-hover-border: transparent;
1618
+ --m-button-active-bg: var(
1619
+ --m-button-solid-bg-active,
1620
+ var(--m-button-color-active)
1566
1621
  );
1567
- --m-button-hover-fg: var(--m-color-success);
1568
- --m-button-hover-border: var(--m-color-success);
1622
+ --m-button-active-fg: var(--m-button-on-color);
1623
+ --m-button-active-border: transparent;
1569
1624
  }
1570
1625
 
1571
- .m-button--success.m-button--link {
1572
- --m-button-fg: var(--m-color-success);
1573
- --m-button-hover-fg: var(--m-color-success);
1574
- }
1575
-
1576
- .m-button--info.m-button--text,
1577
- .m-button--info.m-button--outlined {
1578
- --m-button-fg: var(--m-color-info);
1579
- --m-button-border: var(--m-color-info);
1580
- --m-button-hover-bg: color-mix(
1581
- in srgb,
1582
- var(--m-color-info) 10%,
1583
- transparent
1626
+ .m-button--variant-outlined,
1627
+ .m-button--variant-dashed {
1628
+ --m-button-bg: var(--m-button-outlined-bg, var(--m-color-surface));
1629
+ --m-button-fg: var(--m-button-outlined-fg, var(--m-button-color-base));
1630
+ --m-button-border: var(
1631
+ --m-button-outlined-border,
1632
+ var(--m-button-color-base)
1584
1633
  );
1585
- --m-button-hover-fg: var(--m-color-info);
1586
- --m-button-hover-border: var(--m-color-info);
1587
- }
1588
-
1589
- .m-button--info.m-button--link {
1590
- --m-button-fg: var(--m-color-info);
1591
- --m-button-hover-fg: var(--m-color-info);
1592
- }
1593
-
1594
- .m-button--warn.m-button--text,
1595
- .m-button--warn.m-button--outlined {
1596
- --m-button-fg: var(--m-color-warn);
1597
- --m-button-border: var(--m-color-warn);
1598
- --m-button-hover-bg: color-mix(
1599
- in srgb,
1600
- var(--m-color-warn) 10%,
1601
- transparent
1634
+ --m-button-hover-bg: var(
1635
+ --m-button-outlined-hover-bg,
1636
+ var(--m-button-color-light)
1602
1637
  );
1603
- --m-button-hover-fg: var(--m-color-warn);
1604
- --m-button-hover-border: var(--m-color-warn);
1605
- }
1606
-
1607
- .m-button--warn.m-button--link {
1608
- --m-button-fg: var(--m-color-warn);
1609
- --m-button-hover-fg: var(--m-color-warn);
1610
- }
1611
-
1612
- .m-button--help.m-button--text,
1613
- .m-button--help.m-button--outlined {
1614
- --m-button-fg: var(--m-color-help);
1615
- --m-button-border: var(--m-color-help);
1616
- --m-button-hover-bg: color-mix(
1617
- in srgb,
1618
- var(--m-color-help) 10%,
1619
- transparent
1638
+ --m-button-hover-fg: var(
1639
+ --m-button-outlined-hover-fg,
1640
+ var(--m-button-color-hover)
1620
1641
  );
1621
- --m-button-hover-fg: var(--m-color-help);
1622
- --m-button-hover-border: var(--m-color-help);
1623
- }
1624
-
1625
- .m-button--help.m-button--link {
1626
- --m-button-fg: var(--m-color-help);
1627
- --m-button-hover-fg: var(--m-color-help);
1628
- }
1629
-
1630
- .m-button--danger.m-button--text,
1631
- .m-button--danger.m-button--outlined {
1632
- --m-button-fg: var(--m-color-danger);
1633
- --m-button-border: var(--m-color-danger);
1634
- --m-button-hover-bg: color-mix(
1635
- in srgb,
1636
- var(--m-color-danger) 10%,
1637
- transparent
1642
+ --m-button-hover-border: var(
1643
+ --m-button-outlined-hover-border,
1644
+ var(--m-button-color-hover)
1638
1645
  );
1639
- --m-button-hover-fg: var(--m-color-danger);
1640
- --m-button-hover-border: var(--m-color-danger);
1641
- }
1642
-
1643
- .m-button--danger.m-button--link {
1644
- --m-button-fg: var(--m-color-danger);
1645
- --m-button-hover-fg: var(--m-color-danger);
1646
- }
1647
-
1648
- .m-button--contrast.m-button--text,
1649
- .m-button--contrast.m-button--outlined {
1650
- --m-button-fg: var(--m-color-contrast);
1651
- --m-button-border: var(--m-color-contrast);
1652
- --m-button-hover-bg: color-mix(
1653
- in srgb,
1654
- var(--m-color-contrast) 10%,
1655
- transparent
1646
+ --m-button-active-bg: var(
1647
+ --m-button-outlined-active-bg,
1648
+ var(--m-button-color-light-active, var(--m-button-color-light))
1656
1649
  );
1657
- --m-button-hover-fg: var(--m-color-contrast);
1658
- --m-button-hover-border: var(--m-color-contrast);
1659
- }
1660
-
1661
- .m-button--contrast.m-button--link {
1662
- --m-button-fg: var(--m-color-contrast);
1663
- --m-button-hover-fg: var(--m-color-contrast);
1664
- }
1665
-
1666
- .m-button--plain.m-button--text,
1667
- .m-button--plain.m-button--outlined {
1668
- --m-button-bg: transparent;
1669
- --m-button-fg: var(--m-color-text-muted);
1670
- --m-button-border: var(--m-color-border);
1671
- --m-button-hover-bg: color-mix(
1672
- in srgb,
1673
- var(--m-color-text-muted) 12%,
1674
- transparent
1650
+ --m-button-active-fg: var(
1651
+ --m-button-color-active,
1652
+ var(--m-button-hover-fg)
1675
1653
  );
1676
- --m-button-hover-fg: var(--m-color-text);
1677
- --m-button-hover-border: var(--m-color-border);
1678
- --m-button-active-bg: color-mix(
1679
- in srgb,
1680
- var(--m-color-text-muted) 18%,
1681
- transparent
1654
+ --m-button-active-border: var(
1655
+ --m-button-color-active,
1656
+ var(--m-button-hover-border)
1682
1657
  );
1683
1658
  }
1684
1659
 
1685
- .m-button--plain.m-button--link {
1686
- --m-button-fg: var(--m-color-text-muted);
1687
- --m-button-hover-fg: var(--m-color-text);
1660
+ .m-button--variant-dashed {
1661
+ --m-button-border-style: dashed;
1688
1662
  }
1689
1663
 
1690
- .m-button--ghost {
1691
- --m-button-bg: color-mix(
1692
- in srgb,
1693
- var(--m-color-primary) 10%,
1694
- transparent
1695
- );
1664
+ .m-button--variant-filled {
1665
+ --m-button-bg: var(--m-button-color-light);
1666
+ --m-button-fg: var(--m-button-color-base);
1696
1667
  --m-button-border: transparent;
1697
- --m-button-fg: var(--m-color-primary);
1698
- --m-button-hover-bg: color-mix(
1699
- in srgb,
1700
- var(--m-color-primary) 16%,
1701
- transparent
1702
- );
1703
- --m-button-hover-fg: var(--m-color-primary);
1668
+ --m-button-hover-bg: var(--m-button-color-light-hover);
1669
+ --m-button-hover-fg: var(--m-button-color-base);
1704
1670
  --m-button-hover-border: transparent;
1705
- --m-button-active-bg: color-mix(
1706
- in srgb,
1707
- var(--m-color-primary) 22%,
1708
- transparent
1709
- );
1671
+ --m-button-active-bg: var(--m-button-color-light-active);
1672
+ --m-button-active-fg: var(--m-button-color-base);
1673
+ --m-button-active-border: transparent;
1710
1674
  }
1711
1675
 
1712
- .m-button--secondary.m-button--ghost {
1713
- --m-button-bg: color-mix(
1714
- in srgb,
1715
- var(--m-color-text-muted) 12%,
1716
- transparent
1717
- );
1718
- --m-button-fg: var(--m-color-text);
1719
- --m-button-hover-bg: color-mix(
1720
- in srgb,
1721
- var(--m-color-text-muted) 18%,
1722
- transparent
1723
- );
1724
- --m-button-hover-fg: var(--m-color-text);
1725
- --m-button-active-bg: color-mix(
1726
- in srgb,
1727
- var(--m-color-text-muted) 24%,
1728
- transparent
1729
- );
1730
- }
1731
-
1732
- .m-button--success.m-button--ghost {
1733
- --m-button-bg: color-mix(
1734
- in srgb,
1735
- var(--m-color-success) 10%,
1736
- transparent
1737
- );
1738
- --m-button-fg: var(--m-color-success);
1739
- --m-button-hover-bg: color-mix(
1740
- in srgb,
1741
- var(--m-color-success) 16%,
1742
- transparent
1743
- );
1744
- --m-button-hover-fg: var(--m-color-success);
1745
- --m-button-active-bg: color-mix(
1746
- in srgb,
1747
- var(--m-color-success) 22%,
1748
- transparent
1749
- );
1750
- }
1751
-
1752
- .m-button--info.m-button--ghost {
1753
- --m-button-bg: color-mix(
1754
- in srgb,
1755
- var(--m-color-info) 10%,
1756
- transparent
1757
- );
1758
- --m-button-fg: var(--m-color-info);
1759
- --m-button-hover-bg: color-mix(
1760
- in srgb,
1761
- var(--m-color-info) 16%,
1762
- transparent
1763
- );
1764
- --m-button-hover-fg: var(--m-color-info);
1765
- --m-button-active-bg: color-mix(
1766
- in srgb,
1767
- var(--m-color-info) 22%,
1768
- transparent
1769
- );
1676
+ .m-button--variant-text,
1677
+ .m-button--variant-link {
1678
+ --m-button-bg: transparent;
1679
+ --m-button-fg: var(--m-button-color-base);
1680
+ --m-button-border: transparent;
1681
+ --m-button-hover-fg: var(--m-button-color-hover);
1682
+ --m-button-hover-border: transparent;
1683
+ --m-button-active-bg: transparent;
1684
+ --m-button-active-fg: var(--m-button-color-active, var(--m-button-color-hover));
1685
+ --m-button-active-border: transparent;
1770
1686
  }
1771
1687
 
1772
- .m-button--warn.m-button--ghost {
1773
- --m-button-bg: color-mix(
1774
- in srgb,
1775
- var(--m-color-warn) 10%,
1776
- transparent
1777
- );
1778
- --m-button-fg: var(--m-color-warn);
1779
- --m-button-hover-bg: color-mix(
1780
- in srgb,
1781
- var(--m-color-warn) 16%,
1782
- transparent
1783
- );
1784
- --m-button-hover-fg: var(--m-color-warn);
1785
- --m-button-active-bg: color-mix(
1786
- in srgb,
1787
- var(--m-color-warn) 22%,
1788
- transparent
1789
- );
1688
+ .m-button--variant-text {
1689
+ --m-button-hover-bg: var(--m-button-color-light);
1690
+ --m-button-active-bg: var(--m-button-color-light-active);
1790
1691
  }
1791
1692
 
1792
- .m-button--help.m-button--ghost {
1793
- --m-button-bg: color-mix(
1794
- in srgb,
1795
- var(--m-color-help) 10%,
1796
- transparent
1797
- );
1798
- --m-button-fg: var(--m-color-help);
1799
- --m-button-hover-bg: color-mix(
1800
- in srgb,
1801
- var(--m-color-help) 16%,
1802
- transparent
1803
- );
1804
- --m-button-hover-fg: var(--m-color-help);
1805
- --m-button-active-bg: color-mix(
1806
- in srgb,
1807
- var(--m-color-help) 22%,
1808
- transparent
1809
- );
1693
+ .m-button--variant-link {
1694
+ --m-button-hover-bg: transparent;
1695
+ --m-button-height: auto;
1696
+ height: auto;
1697
+ min-height: 0;
1698
+ padding: 0;
1810
1699
  }
1811
1700
 
1812
- .m-button--danger.m-button--ghost {
1813
- --m-button-bg: color-mix(
1814
- in srgb,
1815
- var(--m-color-danger) 10%,
1816
- transparent
1817
- );
1818
- --m-button-fg: var(--m-color-danger);
1819
- --m-button-hover-bg: color-mix(
1820
- in srgb,
1821
- var(--m-color-danger) 16%,
1822
- transparent
1823
- );
1824
- --m-button-hover-fg: var(--m-color-danger);
1825
- --m-button-active-bg: color-mix(
1826
- in srgb,
1827
- var(--m-color-danger) 22%,
1828
- transparent
1829
- );
1701
+ .m-button--variant-link:hover:not(:disabled):not(.m-button--disabled) {
1702
+ text-decoration: underline;
1830
1703
  }
1831
1704
 
1832
- .m-button--contrast.m-button--ghost {
1833
- --m-button-bg: color-mix(
1834
- in srgb,
1835
- var(--m-color-contrast) 10%,
1836
- transparent
1837
- );
1838
- --m-button-fg: var(--m-color-contrast);
1839
- --m-button-hover-bg: color-mix(
1840
- in srgb,
1841
- var(--m-color-contrast) 16%,
1842
- transparent
1843
- );
1844
- --m-button-hover-fg: var(--m-color-contrast);
1845
- --m-button-active-bg: color-mix(
1846
- in srgb,
1847
- var(--m-color-contrast) 22%,
1848
- transparent
1849
- );
1705
+ .m-button--color-default.m-button--variant-text {
1706
+ --m-button-color-base: var(--m-color-text);
1707
+ --m-button-color-hover: var(--m-color-text);
1708
+ --m-button-hover-bg: var(--m-button-color-light);
1709
+ --m-button-active-bg: var(--m-button-color-light-hover);
1850
1710
  }
1851
1711
 
1852
- .m-button--quaternary {
1853
- --m-button-bg: transparent;
1854
- --m-button-border: transparent;
1855
- --m-button-fg: var(--m-color-text);
1856
- --m-button-hover-bg: color-mix(
1857
- in srgb,
1858
- var(--m-color-text-muted) 10%,
1859
- transparent
1860
- );
1861
- --m-button-hover-fg: var(--m-color-text);
1862
- --m-button-hover-border: transparent;
1863
- --m-button-active-bg: color-mix(
1864
- in srgb,
1865
- var(--m-color-text-muted) 16%,
1866
- transparent
1867
- );
1712
+ .m-button--color-default.m-button--variant-filled {
1713
+ --m-button-color-base: var(--m-color-text);
1868
1714
  }
1869
1715
 
1870
- .m-button--custom {
1871
- --m-button-bg: var(--m-button-color);
1872
- --m-button-fg: var(--m-color-on-emphasis);
1873
- --m-button-border: var(--m-button-color);
1874
- --m-button-hover-bg: color-mix(in srgb, var(--m-button-color) 85%, black);
1875
- --m-button-hover-fg: var(--m-color-on-emphasis);
1876
- --m-button-hover-border: color-mix(
1877
- in srgb,
1878
- var(--m-button-color) 85%,
1879
- black
1880
- );
1881
- --m-button-active-bg: color-mix(
1882
- in srgb,
1883
- var(--m-button-color) 75%,
1884
- black
1885
- );
1716
+ .m-button--color-link.m-button--variant-link {
1717
+ --m-button-color-base: var(--m-color-primary);
1718
+ --m-button-color-hover: var(--m-color-primary-hover);
1886
1719
  }
1887
1720
 
1888
- .m-button--custom.m-button--outlined {
1721
+ /* Ghost: transparent fill on bordered variants */
1722
+ .m-button--ghost {
1889
1723
  --m-button-bg: transparent;
1890
- --m-button-fg: var(--m-button-color);
1891
- --m-button-border: var(--m-button-color);
1892
- --m-button-hover-bg: color-mix(
1893
- in srgb,
1894
- var(--m-button-color) 12%,
1895
- transparent
1896
- );
1897
- --m-button-hover-fg: var(--m-button-color);
1898
- --m-button-hover-border: var(--m-button-color);
1724
+ --m-button-hover-bg: transparent;
1725
+ --m-button-active-bg: transparent;
1899
1726
  }
1900
1727
 
1901
- .m-button--custom.m-button--ghost {
1902
- --m-button-bg: color-mix(
1903
- in srgb,
1904
- var(--m-button-color) 10%,
1905
- transparent
1906
- );
1907
- --m-button-fg: var(--m-button-color);
1908
- --m-button-border: transparent;
1909
- --m-button-hover-bg: color-mix(
1910
- in srgb,
1911
- var(--m-button-color) 16%,
1912
- transparent
1913
- );
1914
- --m-button-hover-fg: var(--m-button-color);
1915
- --m-button-hover-border: transparent;
1916
- --m-button-active-bg: color-mix(
1917
- in srgb,
1918
- var(--m-button-color) 22%,
1919
- transparent
1920
- );
1728
+ .m-button--ghost.m-button--variant-solid,
1729
+ .m-button--ghost.m-button--variant-outlined,
1730
+ .m-button--ghost.m-button--variant-dashed {
1731
+ --m-button-fg: var(--m-button-color-base);
1732
+ --m-button-border: var(--m-button-color-base);
1733
+ --m-button-hover-fg: var(--m-button-color-hover);
1734
+ --m-button-hover-border: var(--m-button-color-hover);
1735
+ --m-button-active-fg: var(--m-button-color-active, var(--m-button-color-hover));
1736
+ --m-button-active-border: var(--m-button-color-active, var(--m-button-color-hover));
1921
1737
  }
1922
-
1923
- .m-button--custom.m-button--text,
1924
- .m-button--custom.m-button--quaternary {
1925
- --m-button-bg: transparent;
1926
- --m-button-fg: var(--m-button-color);
1927
- --m-button-border: transparent;
1928
- --m-button-hover-bg: color-mix(
1738
+ .m-button--ghost.m-button--color-default {
1739
+ --m-button-color-base: var(--m-color-on-emphasis);
1740
+ --m-button-color-hover: color-mix(
1929
1741
  in srgb,
1930
- var(--m-button-color) 12%,
1742
+ var(--m-color-on-emphasis) var(--m-button-ghost-hover-opacity),
1931
1743
  transparent
1932
1744
  );
1933
- --m-button-hover-fg: var(--m-button-color);
1934
- --m-button-hover-border: transparent;
1745
+ --m-button-fg: var(--m-color-on-emphasis);
1746
+ --m-button-border: var(--m-color-on-emphasis);
1747
+ --m-button-hover-fg: var(--m-button-color-hover);
1748
+ --m-button-hover-border: var(--m-button-color-hover);
1935
1749
  }
1936
1750
 
1937
- .m-button--custom.m-button--plain {
1938
- --m-button-bg: color-mix(
1939
- in srgb,
1940
- var(--m-button-color) 10%,
1941
- transparent
1942
- );
1943
- --m-button-fg: var(--m-button-color);
1944
- --m-button-border: var(--m-button-color);
1945
- --m-button-hover-bg: color-mix(
1946
- in srgb,
1947
- var(--m-button-color) 16%,
1948
- transparent
1949
- );
1950
- --m-button-hover-fg: var(--m-button-color);
1951
- --m-button-hover-border: var(--m-button-color);
1952
- --m-button-active-bg: color-mix(
1953
- in srgb,
1954
- var(--m-button-color) 22%,
1955
- transparent
1956
- );
1957
- }
1751
+ /* ---------- Size / shape / layout ---------- */
1958
1752
 
1959
- .m-button--custom.m-button--link {
1960
- --m-button-bg: transparent;
1961
- --m-button-fg: var(--m-button-color);
1962
- --m-button-border: transparent;
1963
- --m-button-hover-bg: transparent;
1964
- --m-button-hover-fg: var(--m-button-color);
1965
- --m-button-hover-border: transparent;
1966
- --m-button-active-bg: transparent;
1753
+ .m-button--small {
1754
+ --m-button-icon-size: var(--m-button-icon-size-small);
1755
+ --m-button-font-size: var(--m-control-font-small);
1756
+ --m-button-height: var(--m-control-height-small);
1757
+ --m-button-padding-x: var(--m-button-padding-x-small);
1967
1758
  }
1968
1759
 
1969
- .m-button-group {
1970
- display: inline-flex;
1971
- vertical-align: middle;
1760
+ .m-button--large {
1761
+ --m-button-icon-size: var(--m-button-icon-size-large);
1762
+ --m-button-font-size: var(--m-control-font-large);
1763
+ --m-button-height: var(--m-control-height-large);
1764
+ --m-button-padding-x: var(--m-button-padding-x-large);
1972
1765
  }
1973
1766
 
1974
- .m-button-group--fluid {
1767
+ .m-button--block {
1975
1768
  display: flex;
1976
1769
  width: 100%;
1977
1770
  }
1978
1771
 
1979
- .m-button-group--fluid > .m-button {
1980
- flex: 1;
1981
- }
1982
-
1983
- .m-button-group > .m-button {
1984
- border-radius: 0;
1985
- margin: 0;
1986
- }
1987
-
1988
- .m-button-group > .m-button + .m-button {
1989
- margin-left: calc(var(--m-border-width) * -1);
1990
- }
1991
-
1992
- .m-button-group > .m-button:hover,
1993
- .m-button-group > .m-button:focus-visible,
1994
- .m-button-group > .m-button:active {
1995
- position: relative;
1996
- z-index: 1;
1997
- }
1998
-
1999
- .m-button-group > .m-button:first-child {
2000
- border-top-left-radius: var(--m-radius-control);
2001
- border-bottom-left-radius: var(--m-radius-control);
2002
- }
2003
-
2004
- .m-button-group > .m-button:last-child {
2005
- border-top-right-radius: var(--m-radius-control);
2006
- border-bottom-right-radius: var(--m-radius-control);
2007
- }
2008
-
2009
- .m-button--raised {
2010
- box-shadow: var(--m-shadow-raised);
2011
- }
2012
-
2013
- .m-button--raised:focus-visible {
2014
- box-shadow: var(--m-focus-shadow), var(--m-shadow-raised);
2015
- }
2016
-
2017
- .m-button--rounded {
2018
- border-radius: var(--m-radius-full);
1772
+ .m-button--shape-round {
1773
+ --m-button-radius: var(--m-radius-full);
1774
+ padding-inline: calc(
1775
+ var(--m-button-padding-x) + var(--m-button-padding-x-round-extra)
1776
+ );
2019
1777
  }
2020
1778
 
2021
1779
  .m-button--shape-circle {
2022
- border-radius: var(--m-radius-full);
2023
- min-width: var(--m-control-height-medium);
1780
+ --m-button-radius: var(--m-radius-full);
1781
+ min-width: var(--m-button-height);
2024
1782
  padding-inline: 0;
2025
- width: var(--m-control-height-medium);
2026
- }
2027
-
2028
- .m-button--shape-circle.m-button--small {
2029
- min-width: var(--m-control-height-small);
2030
- width: var(--m-control-height-small);
2031
- }
2032
-
2033
- .m-button--shape-circle.m-button--large {
2034
- min-width: var(--m-control-height-large);
2035
- width: var(--m-control-height-large);
2036
- }
2037
-
2038
- .m-button--shape-round {
2039
- border-radius: var(--m-radius-full);
2040
- padding-inline: calc(var(--m-button-padding-x-medium) + var(--m-space-2));
1783
+ width: var(--m-button-height);
2041
1784
  }
2042
1785
 
2043
1786
  .m-button--shape-square {
2044
- border-radius: 0;
2045
- }
2046
-
2047
- .m-button--dashed {
2048
- background: var(--m-color-surface);
2049
- border-style: dashed;
2050
- color: var(--m-color-text);
2051
- }
2052
-
2053
- .m-button--dashed:not(:disabled):hover {
2054
- border-color: var(--m-color-primary-hover);
2055
- color: var(--m-color-primary-hover);
2056
- }
2057
-
2058
- .m-button--primary.m-button--dashed {
2059
- --m-button-bg: var(--m-color-surface);
2060
- --m-button-fg: var(--m-color-primary);
2061
- --m-button-border: var(--m-color-primary);
2062
- --m-button-hover-bg: var(--m-color-surface);
2063
- --m-button-hover-fg: var(--m-color-primary-hover);
2064
- --m-button-hover-border: var(--m-color-primary-hover);
2065
- --m-button-active-bg: var(--m-color-surface);
2066
- }
2067
-
2068
- .m-button--secondary.m-button--dashed {
2069
- --m-button-bg: var(--m-color-surface);
2070
- --m-button-fg: var(--m-color-text);
2071
- --m-button-border: var(--m-color-border);
2072
- --m-button-hover-bg: var(--m-color-surface);
2073
- --m-button-hover-fg: var(--m-color-primary-hover);
2074
- --m-button-hover-border: var(--m-color-primary-hover);
1787
+ --m-button-radius: 0;
2075
1788
  }
2076
1789
 
2077
1790
  .m-button--icon-only {
2078
1791
  gap: 0;
2079
- min-width: var(--m-control-height-medium);
1792
+ min-width: var(--m-button-height);
2080
1793
  padding: 0;
2081
- width: var(--m-control-height-medium);
2082
- }
2083
-
2084
- .m-button--icon-only.m-button--small {
2085
- min-width: var(--m-control-height-small);
2086
- width: var(--m-control-height-small);
1794
+ width: var(--m-button-height);
2087
1795
  }
2088
1796
 
2089
- .m-button--icon-only.m-button--large {
2090
- min-width: var(--m-control-height-large);
2091
- width: var(--m-control-height-large);
2092
- }
2093
-
2094
- .m-button--icon-right {
1797
+ .m-button--icon-end {
2095
1798
  flex-direction: row-reverse;
2096
1799
  }
2097
1800
 
2098
- .m-button--icon-top {
2099
- flex-direction: column;
2100
- min-height: var(--m-button-icon-stack-min-height);
2101
- padding-block: var(--m-space-2);
2102
- }
2103
-
2104
- .m-button--icon-bottom {
2105
- flex-direction: column-reverse;
2106
- min-height: var(--m-button-icon-stack-min-height);
2107
- padding-block: var(--m-space-2);
2108
- }
2109
-
2110
- .m-button--fluid {
2111
- display: flex;
2112
- width: 100%;
1801
+ .m-button--two-chinese-chars > .m-button__label {
1802
+ letter-spacing: var(--m-button-cn-letter-spacing);
1803
+ margin-inline-end: calc(var(--m-button-cn-letter-spacing) * -1);
2113
1804
  }
2114
1805
 
2115
- .m-button--small {
2116
- --m-button-icon-size: 0.875rem;
2117
- font-size: var(--m-control-font-small);
2118
- min-height: var(--m-control-height-small);
2119
- padding: 0 var(--m-button-padding-x-small);
1806
+ .m-button--loading {
1807
+ cursor: default;
1808
+ opacity: var(--m-button-loading-opacity);
1809
+ pointer-events: none;
2120
1810
  }
2121
1811
 
2122
- .m-button--large {
2123
- --m-button-icon-size: 1.25rem;
2124
- font-size: var(--m-control-font-large);
2125
- min-height: var(--m-control-height-large);
2126
- padding: 0 var(--m-button-padding-x-large);
2127
- }
1812
+ /* ---------- Parts ---------- */
2128
1813
 
2129
1814
  .m-button__icon,
2130
1815
  .m-button__label {
@@ -2134,8 +1819,7 @@
2134
1819
  }
2135
1820
 
2136
1821
  .m-button__icon,
2137
- .m-button__label,
2138
- .m-button__badge {
1822
+ .m-button__label {
2139
1823
  position: relative;
2140
1824
  z-index: 1;
2141
1825
  }
@@ -2159,18 +1843,18 @@
2159
1843
  will-change: transform, opacity;
2160
1844
  }
2161
1845
 
2162
- /* Used only when Web Animations API is unavailable. */
2163
1846
  .m-button__ripple-wave--fallback {
2164
- animation: m-button-ripple 560ms var(--m-motion-ease) forwards;
1847
+ animation: m-button-ripple var(--m-button-ripple-duration)
1848
+ var(--m-motion-ease) forwards;
2165
1849
  }
2166
1850
 
2167
1851
  @keyframes m-button-ripple {
2168
1852
  0% {
2169
- opacity: 0.42;
1853
+ opacity: var(--m-button-ripple-opacity-start);
2170
1854
  transform: scale(0);
2171
1855
  }
2172
1856
  55% {
2173
- opacity: 0.22;
1857
+ opacity: var(--m-button-ripple-opacity-mid);
2174
1858
  transform: scale(0.55);
2175
1859
  }
2176
1860
  100% {
@@ -2181,92 +1865,97 @@
2181
1865
 
2182
1866
  .m-button__icon {
2183
1867
  flex: 0 0 auto;
2184
- width: var(--m-button-icon-size);
2185
1868
  height: var(--m-button-icon-size);
2186
1869
  line-height: 0;
1870
+ width: var(--m-button-icon-size);
2187
1871
  }
2188
1872
 
2189
1873
  .m-button__icon :is(.m-icon, .m-button__icon-graphic, svg) {
2190
1874
  display: block;
2191
1875
  flex-shrink: 0;
2192
- width: 100%;
2193
1876
  height: 100%;
1877
+ width: 100%;
2194
1878
  }
2195
1879
 
2196
1880
  .m-button__icon .m-icon {
2197
- max-width: 100%;
2198
1881
  max-height: 100%;
1882
+ max-width: 100%;
2199
1883
  }
2200
1884
 
2201
- .m-button__badge {
2202
- align-items: center;
2203
- background: var(--m-color-contrast);
1885
+ .m-button__spinner {
1886
+ animation: m-button-spin var(--m-motion-spin-fast) linear infinite;
1887
+ border: var(--m-button-spinner-border-width) solid currentColor;
2204
1888
  border-radius: var(--m-radius-full);
2205
- color: var(--m-color-contrast-fg);
2206
- display: inline-flex;
2207
- font-size: var(--m-font-size-xs);
2208
- font-weight: 700;
2209
- justify-content: center;
2210
- line-height: 1;
2211
- margin-inline-start: var(--m-space-1);
2212
- min-width: var(--m-button-badge-min-width);
2213
- padding: var(--m-space-1) var(--m-space-2);
1889
+ border-right-color: transparent;
1890
+ height: var(--m-button-spinner-size);
1891
+ width: var(--m-button-spinner-size);
2214
1892
  }
2215
1893
 
2216
- .m-button__badge--secondary {
2217
- background: color-mix(
2218
- in srgb,
2219
- var(--m-color-text-muted) 25%,
2220
- var(--m-color-surface)
2221
- );
2222
- color: var(--m-color-text);
1894
+ @keyframes m-button-spin {
1895
+ to {
1896
+ transform: rotate(360deg);
1897
+ }
2223
1898
  }
2224
1899
 
2225
- .m-button__badge--success {
2226
- background: var(--m-color-success);
2227
- color: var(--m-color-on-emphasis);
1900
+ @media (prefers-reduced-motion: reduce) {
1901
+ .m-button {
1902
+ --m-button-ripple-duration: 0ms;
1903
+ transition-duration: 0ms;
1904
+ }
1905
+
1906
+ .m-button__spinner {
1907
+ animation-duration: 0ms;
1908
+ }
2228
1909
  }
2229
1910
 
2230
- .m-button__badge--info {
2231
- background: var(--m-color-info);
2232
- color: var(--m-color-on-emphasis);
1911
+ :root[data-m-motion='reduced'] .m-button {
1912
+ --m-button-ripple-duration: 280ms;
1913
+ --m-button-press-duration: 120ms;
2233
1914
  }
2234
1915
 
2235
- .m-button__badge--warn {
2236
- background: var(--m-color-warn);
2237
- color: var(--m-color-on-emphasis);
1916
+ :root[data-m-motion='none'] .m-button {
1917
+ --m-button-ripple-duration: 0ms;
1918
+ --m-button-press-duration: 0ms;
2238
1919
  }
2239
1920
 
2240
- .m-button__badge--danger {
2241
- background: var(--m-color-danger);
2242
- color: var(--m-color-on-emphasis);
1921
+ /* ---------- Group ---------- */
1922
+
1923
+ .m-button-group {
1924
+ display: inline-flex;
1925
+ vertical-align: middle;
2243
1926
  }
2244
1927
 
2245
- .m-button__badge--contrast {
2246
- background: var(--m-color-contrast);
2247
- color: var(--m-color-contrast-fg);
1928
+ .m-button-group--block {
1929
+ display: flex;
1930
+ width: 100%;
2248
1931
  }
2249
1932
 
2250
- .m-button__spinner {
2251
- animation: m-button-spin var(--m-motion-spin-fast) linear infinite;
2252
- border: 2px solid currentColor;
2253
- border-right-color: transparent;
2254
- border-radius: var(--m-radius-full);
2255
- height: var(--m-button-spinner-size);
2256
- width: var(--m-button-spinner-size);
1933
+ .m-button-group--block > .m-button {
1934
+ flex: 1;
2257
1935
  }
2258
1936
 
2259
- @keyframes m-button-spin {
2260
- to {
2261
- transform: rotate(360deg);
2262
- }
1937
+ .m-button-group > .m-button {
1938
+ border-radius: 0;
1939
+ margin: 0;
2263
1940
  }
2264
1941
 
2265
- [data-m-motion="reduced"] .m-button__spinner,
2266
- [data-m-motion="none"] .m-button__spinner {
2267
- animation: none;
1942
+ .m-button-group > .m-button + .m-button {
1943
+ margin-inline-start: calc(var(--m-border-width) * -1);
2268
1944
  }
2269
1945
 
2270
- [data-m-motion="none"] .m-button__ripple-wave {
2271
- display: none;
1946
+ .m-button-group > .m-button:hover,
1947
+ .m-button-group > .m-button:focus-visible,
1948
+ .m-button-group > .m-button:active {
1949
+ position: relative;
1950
+ z-index: 1;
1951
+ }
1952
+
1953
+ .m-button-group > .m-button:first-child {
1954
+ border-end-start-radius: var(--m-radius-control);
1955
+ border-start-start-radius: var(--m-radius-control);
1956
+ }
1957
+
1958
+ .m-button-group > .m-button:last-child {
1959
+ border-end-end-radius: var(--m-radius-control);
1960
+ border-start-end-radius: var(--m-radius-control);
2272
1961
  }