morya-ui 0.4.0 → 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 (326) hide show
  1. package/CHANGELOG.md +70 -2
  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-BkPBWEQq.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-DzfyO0FE.js → Select-CN1tM76U.js} +8 -6
  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/accordion/style.css +39 -20
  18. package/dist/affix/style.css +39 -20
  19. package/dist/alert/index.js +2 -2
  20. package/dist/alert/style.css +39 -20
  21. package/dist/anchor/style.css +39 -20
  22. package/dist/auto-complete/index.js +3 -3
  23. package/dist/auto-complete/style.css +42 -21
  24. package/dist/avatar/style.css +39 -20
  25. package/dist/badge/index.js +29 -28
  26. package/dist/badge/style.css +39 -20
  27. package/dist/block-ui/index.js +1 -1
  28. package/dist/block-ui/style.css +39 -20
  29. package/dist/breadcrumb/index.js +1 -1
  30. package/dist/breadcrumb/style.css +39 -20
  31. package/dist/button/index.js +9 -9
  32. package/dist/button/style.css +503 -795
  33. package/dist/button/style.js +1 -0
  34. package/dist/calendar/index.js +3 -3
  35. package/dist/calendar/style.css +49 -24
  36. package/dist/card/style.css +40 -21
  37. package/dist/carousel/index.js +311 -119
  38. package/dist/carousel/style.css +987 -117
  39. package/dist/carousel/style.js +1 -1
  40. package/dist/cascade-select/index.js +4 -4
  41. package/dist/cascade-select/style.css +54 -22
  42. package/dist/checkbox/index.js +1 -1
  43. package/dist/checkbox/style.css +41 -21
  44. package/dist/chip/index.js +39 -36
  45. package/dist/chip/style.css +39 -20
  46. package/dist/command-menu/index.js +3 -3
  47. package/dist/command-menu/style.css +39 -20
  48. package/dist/component-registry.d.ts.map +1 -1
  49. package/dist/components/Badge/Badge.vue.d.ts.map +1 -1
  50. package/dist/components/Badge/types.d.ts +3 -0
  51. package/dist/components/Badge/types.d.ts.map +1 -1
  52. package/dist/components/Button/Button.vue.d.ts +15 -22
  53. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  54. package/dist/components/Button/ButtonGroup.vue.d.ts +1 -1
  55. package/dist/components/Button/ButtonGroup.vue.d.ts.map +1 -1
  56. package/dist/components/Button/buttonHelpers.d.ts +25 -0
  57. package/dist/components/Button/buttonHelpers.d.ts.map +1 -0
  58. package/dist/components/Button/index.d.ts +2 -1
  59. package/dist/components/Button/index.d.ts.map +1 -1
  60. package/dist/components/Button/styles.css +463 -781
  61. package/dist/components/Button/types.d.ts +67 -61
  62. package/dist/components/Button/types.d.ts.map +1 -1
  63. package/dist/components/Card/styles.css +1 -1
  64. package/dist/components/Carousel/Carousel.vue.d.ts +41 -11
  65. package/dist/components/Carousel/Carousel.vue.d.ts.map +1 -1
  66. package/dist/components/Carousel/CarouselItem.vue.d.ts +16 -0
  67. package/dist/components/Carousel/CarouselItem.vue.d.ts.map +1 -0
  68. package/dist/components/Carousel/context.d.ts +10 -0
  69. package/dist/components/Carousel/context.d.ts.map +1 -0
  70. package/dist/components/Carousel/index.d.ts +2 -1
  71. package/dist/components/Carousel/index.d.ts.map +1 -1
  72. package/dist/components/Carousel/styles.css +250 -49
  73. package/dist/components/Carousel/types.d.ts +64 -9
  74. package/dist/components/Carousel/types.d.ts.map +1 -1
  75. package/dist/components/CascadeSelect/styles.css +12 -1
  76. package/dist/components/Checkbox/styles.css +2 -1
  77. package/dist/components/Chip/Chip.vue.d.ts.map +1 -1
  78. package/dist/components/Chip/types.d.ts +3 -0
  79. package/dist/components/Chip/types.d.ts.map +1 -1
  80. package/dist/components/ConfirmDialog/ConfirmDialog.vue.d.ts +2 -2
  81. package/dist/components/ConfirmDialog/ConfirmDialog.vue.d.ts.map +1 -1
  82. package/dist/components/ConfirmDialog/types.d.ts +2 -2
  83. package/dist/components/ConfirmDialog/types.d.ts.map +1 -1
  84. package/dist/components/ConfirmDialog/useConfirm.d.ts +1 -1
  85. package/dist/components/ConfirmDialog/useConfirm.d.ts.map +1 -1
  86. package/dist/components/ConfirmPopup/ConfirmPopup.vue.d.ts.map +1 -1
  87. package/dist/components/ConfirmPopup/types.d.ts +3 -3
  88. package/dist/components/ConfirmPopup/types.d.ts.map +1 -1
  89. package/dist/components/DatePicker/styles.css +2 -1
  90. package/dist/components/Dialog/Dialog.vue.d.ts.map +1 -1
  91. package/dist/components/Dialog/types.d.ts +3 -3
  92. package/dist/components/Dialog/types.d.ts.map +1 -1
  93. package/dist/components/Dialog/useModal.d.ts +2 -2
  94. package/dist/components/Dialog/useModal.d.ts.map +1 -1
  95. package/dist/components/Divider/Divider.vue.d.ts +1 -1
  96. package/dist/components/Divider/Divider.vue.d.ts.map +1 -1
  97. package/dist/components/Divider/types.d.ts +3 -0
  98. package/dist/components/Divider/types.d.ts.map +1 -1
  99. package/dist/components/IconField/styles.css +1 -1
  100. package/dist/components/Input/styles.css +20 -8
  101. package/dist/components/InputColor/styles.css +10 -0
  102. package/dist/components/InputNumber/styles.css +2 -1
  103. package/dist/components/InputOtp/styles.css +8 -0
  104. package/dist/components/InputPassword/styles.css +1 -1
  105. package/dist/components/InputTags/styles.css +9 -0
  106. package/dist/components/Layout/styles.css +1 -1
  107. package/dist/components/Listbox/styles.css +3 -0
  108. package/dist/components/Mentions/Mentions.vue.d.ts +1 -1
  109. package/dist/components/Mentions/styles.css +13 -4
  110. package/dist/components/Message/styles.css +4 -2
  111. package/dist/components/Page/PageFilters.vue.d.ts.map +1 -1
  112. package/dist/components/Pagination/styles.css +3 -2
  113. package/dist/components/ProgressBar/ProgressBar.vue.d.ts.map +1 -1
  114. package/dist/components/ProgressBar/types.d.ts +3 -0
  115. package/dist/components/ProgressBar/types.d.ts.map +1 -1
  116. package/dist/components/QRCode/QRCode.vue.d.ts.map +1 -1
  117. package/dist/components/Radio/styles.css +2 -1
  118. package/dist/components/Result/styles.css +1 -1
  119. package/dist/components/Select/Select.vue.d.ts +1 -1
  120. package/dist/components/Select/Select.vue.d.ts.map +1 -1
  121. package/dist/components/Select/styles.css +8 -3
  122. package/dist/components/SelectButton/styles.css +2 -0
  123. package/dist/components/SplitButton/SplitButton.vue.d.ts +0 -1
  124. package/dist/components/SplitButton/SplitButton.vue.d.ts.map +1 -1
  125. package/dist/components/SplitButton/types.d.ts +3 -3
  126. package/dist/components/SplitButton/types.d.ts.map +1 -1
  127. package/dist/components/Table/Table.vue.d.ts +4 -4
  128. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  129. package/dist/components/Table/render/TableThead.vue.d.ts +2 -0
  130. package/dist/components/Table/render/TableThead.vue.d.ts.map +1 -1
  131. package/dist/components/Table/state/internal.d.ts +1 -0
  132. package/dist/components/Table/state/internal.d.ts.map +1 -1
  133. package/dist/components/Table/styles.css +9 -0
  134. package/dist/components/Tag/Tag.vue.d.ts +1 -1
  135. package/dist/components/Tag/Tag.vue.d.ts.map +1 -1
  136. package/dist/components/Tag/styles.css +10 -8
  137. package/dist/components/Tag/types.d.ts +3 -0
  138. package/dist/components/Tag/types.d.ts.map +1 -1
  139. package/dist/components/Terminal/styles.css +1 -0
  140. package/dist/components/Textarea/styles.css +18 -7
  141. package/dist/components/ToggleButton/styles.css +2 -1
  142. package/dist/components/Tour/Tour.vue.d.ts.map +1 -1
  143. package/dist/components/Tree/Tree.vue.d.ts +1 -1
  144. package/dist/components/TreeSelect/styles.css +12 -1
  145. package/dist/{config-COgrsSV2.js → config-CB_TiIvg.js} +11 -4
  146. package/dist/config-provider/index.js +141 -120
  147. package/dist/config-provider/style.css +514 -801
  148. package/dist/confirm-dialog/index.js +45 -39
  149. package/dist/confirm-dialog/style.css +496 -795
  150. package/dist/confirm-popup/index.js +17 -14
  151. package/dist/confirm-popup/style.css +496 -795
  152. package/dist/context-menu/index.js +3 -3
  153. package/dist/context-menu/style.css +39 -20
  154. package/dist/data-view/index.js +3 -3
  155. package/dist/data-view/style.css +42 -22
  156. package/dist/date-picker/index.js +1 -1
  157. package/dist/date-picker/style.css +41 -21
  158. package/dist/descriptions/index.js +1 -1
  159. package/dist/descriptions/style.css +39 -20
  160. package/dist/dialog/index.js +68 -55
  161. package/dist/dialog/style.css +496 -795
  162. package/dist/divider/index.js +25 -22
  163. package/dist/divider/style.css +39 -20
  164. package/dist/dock/style.css +39 -20
  165. package/dist/drawer/index.js +3 -3
  166. package/dist/drawer/style.css +39 -20
  167. package/dist/dropdown/index.js +4 -4
  168. package/dist/dropdown/style.css +39 -20
  169. package/dist/empty/index.js +1 -1
  170. package/dist/empty/style.css +39 -20
  171. package/dist/fieldset/style.css +39 -20
  172. package/dist/file-upload/index.js +1 -1
  173. package/dist/file-upload/style.css +39 -20
  174. package/dist/flex/index.js +8 -8
  175. package/dist/flex/style.css +39 -20
  176. package/dist/float-label/style.css +39 -20
  177. package/dist/fluid/style.css +39 -20
  178. package/dist/form/index.js +1 -1
  179. package/dist/form/style.css +39 -20
  180. package/dist/gallery/index.js +1 -1
  181. package/dist/gallery/style.css +39 -20
  182. package/dist/grid/index.js +5 -5
  183. package/dist/grid/style.css +39 -20
  184. package/dist/icon/style.css +39 -20
  185. package/dist/icon-field/style.css +60 -29
  186. package/dist/image/index.js +1 -1
  187. package/dist/image/style.css +39 -20
  188. package/dist/index.d.ts +3 -2
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +6500 -6163
  191. package/dist/inplace/style.css +39 -20
  192. package/dist/input/index.js +1 -1
  193. package/dist/input/style.css +59 -28
  194. package/dist/input-color/index.js +2 -2
  195. package/dist/input-color/style.css +49 -20
  196. package/dist/input-group/style.css +39 -20
  197. package/dist/input-number/index.js +2 -2
  198. package/dist/input-number/style.css +41 -21
  199. package/dist/input-otp/index.js +2 -2
  200. package/dist/input-otp/style.css +47 -20
  201. package/dist/input-password/index.js +2 -2
  202. package/dist/input-password/style.css +40 -21
  203. package/dist/input-tags/index.js +2 -2
  204. package/dist/input-tags/style.css +48 -20
  205. package/dist/knob/style.css +39 -20
  206. package/dist/label/style.css +39 -20
  207. package/dist/layout/index.js +1 -1
  208. package/dist/layout/style.css +40 -21
  209. package/dist/list/index.js +4 -4
  210. package/dist/list/style.css +42 -22
  211. package/dist/listbox/index.js +2 -2
  212. package/dist/listbox/style.css +42 -20
  213. package/dist/loading/index.js +1 -1
  214. package/dist/loading/style.css +39 -20
  215. package/dist/locale-CR2PIaxt.js +21 -0
  216. package/dist/mega-menu/index.js +3 -3
  217. package/dist/mega-menu/style.css +39 -20
  218. package/dist/mentions/index.js +3 -3
  219. package/dist/mentions/style.css +52 -24
  220. package/dist/menu/index.js +4 -4
  221. package/dist/menu/style.css +39 -20
  222. package/dist/menubar/index.js +3 -3
  223. package/dist/menubar/style.css +39 -20
  224. package/dist/message/index.js +3 -3
  225. package/dist/message/style.css +43 -22
  226. package/dist/meter-group/style.css +39 -20
  227. package/dist/order-list/index.js +1 -1
  228. package/dist/order-list/style.css +39 -20
  229. package/dist/page/index.js +4 -7
  230. package/dist/page/style.css +497 -796
  231. package/dist/pagination/index.js +1 -1
  232. package/dist/pagination/style.css +50 -25
  233. package/dist/panel/index.js +1 -1
  234. package/dist/panel/style.css +39 -20
  235. package/dist/pick-list/index.js +1 -1
  236. package/dist/pick-list/style.css +39 -20
  237. package/dist/popover/index.js +1 -1
  238. package/dist/popover/style.css +39 -20
  239. package/dist/progress-bar/index.js +38 -35
  240. package/dist/progress-bar/style.css +39 -20
  241. package/dist/progress-spinner/index.js +1 -1
  242. package/dist/progress-spinner/style.css +39 -20
  243. package/dist/qr-code/index.js +3 -3
  244. package/dist/qr-code/style.css +496 -795
  245. package/dist/radio/index.js +1 -1
  246. package/dist/radio/style.css +41 -21
  247. package/dist/rating/index.js +2 -2
  248. package/dist/rating/style.css +39 -20
  249. package/dist/resolver-map.d.ts.map +1 -1
  250. package/dist/resolver.js +1 -0
  251. package/dist/result/index.js +1 -1
  252. package/dist/result/style.css +40 -21
  253. package/dist/scroll-top/index.js +2 -2
  254. package/dist/scroll-top/style.css +39 -20
  255. package/dist/scrollbar/style.css +39 -20
  256. package/dist/segmented/index.js +1 -1
  257. package/dist/segmented/style.css +39 -20
  258. package/dist/select/index.js +1 -1
  259. package/dist/select/style.css +50 -24
  260. package/dist/select-button/index.js +1 -1
  261. package/dist/select-button/style.css +41 -20
  262. package/dist/shared/componentDefaults.d.ts +6 -0
  263. package/dist/shared/componentDefaults.d.ts.map +1 -1
  264. package/dist/shared/styles/select-overlay.css +3 -1
  265. package/dist/sidebar/index.js +1 -1
  266. package/dist/sidebar/style.css +39 -20
  267. package/dist/skeleton/style.css +39 -20
  268. package/dist/slider/index.js +2 -2
  269. package/dist/slider/style.css +39 -20
  270. package/dist/space/index.js +8 -8
  271. package/dist/space/style.css +39 -20
  272. package/dist/speed-dial/index.js +3 -3
  273. package/dist/speed-dial/style.css +39 -20
  274. package/dist/split-button/index.js +7 -10
  275. package/dist/split-button/style.css +502 -801
  276. package/dist/splitter/index.js +1 -1
  277. package/dist/splitter/style.css +39 -20
  278. package/dist/statistic/style.css +39 -20
  279. package/dist/status/index.js +1 -1
  280. package/dist/status/style.css +39 -20
  281. package/dist/stepper/style.css +39 -20
  282. package/dist/styles/base.css +19 -7
  283. package/dist/styles.css +1 -1
  284. package/dist/switch/index.js +1 -1
  285. package/dist/switch/style.css +39 -20
  286. package/dist/table/index.js +1628 -1622
  287. package/dist/table/style.css +51 -22
  288. package/dist/tabs/index.js +1 -1
  289. package/dist/tabs/style.css +39 -20
  290. package/dist/tag/index.js +57 -54
  291. package/dist/tag/style.css +49 -28
  292. package/dist/terminal/index.js +1 -1
  293. package/dist/terminal/style.css +40 -20
  294. package/dist/textarea/index.js +1 -1
  295. package/dist/textarea/style.css +57 -27
  296. package/dist/theme/color.d.ts +5 -0
  297. package/dist/theme/color.d.ts.map +1 -1
  298. package/dist/theme/derive.d.ts.map +1 -1
  299. package/dist/theme/seed.d.ts +2 -2
  300. package/dist/theme/styles.css +20 -13
  301. package/dist/tiered-menu/index.js +3 -3
  302. package/dist/tiered-menu/style.css +39 -20
  303. package/dist/time-picker/index.js +1 -1
  304. package/dist/time-picker/style.css +41 -21
  305. package/dist/timeline/style.css +39 -20
  306. package/dist/toast/index.js +3 -3
  307. package/dist/toast/style.css +496 -795
  308. package/dist/toggle-button/index.js +1 -1
  309. package/dist/toggle-button/style.css +41 -21
  310. package/dist/toolbar/style.css +39 -20
  311. package/dist/tooltip/index.js +1 -1
  312. package/dist/tooltip/style.css +39 -20
  313. package/dist/tour/index.js +7 -8
  314. package/dist/tour/style.css +496 -795
  315. package/dist/tree/index.js +2 -2
  316. package/dist/tree/style.css +41 -21
  317. package/dist/tree-select/index.js +4 -4
  318. package/dist/tree-select/style.css +56 -23
  319. package/dist/typography/index.js +2 -2
  320. package/dist/typography/style.css +57 -27
  321. package/dist/{useMotionTransition-S2rlviyZ.js → useMotionTransition-D8JOR3ih.js} +1 -1
  322. package/dist/virtual-scroller/style.css +39 -20
  323. package/dist/watermark/style.css +39 -20
  324. package/package.json +1 -1
  325. package/dist/Button-TaJ0LKtP.js +0 -234
  326. package/dist/locale-Dnk0UIie.js +0 -21
@@ -9,6 +9,10 @@
9
9
  --m-color-border: #d9d9d9;
10
10
  --m-color-split: #f0f0f0;
11
11
  --m-color-focus-ring: #1677ff;
12
+ /* Soft translucent control-outline ring (primary bg composited over container) */
13
+ --m-color-control-outline: rgba(5, 145, 255, 0.1);
14
+ --m-color-control-outline-danger: rgba(255, 38, 5, 0.06);
15
+ --m-color-control-outline-warning: rgba(255, 215, 5, 0.1);
12
16
  /* Control sizing: medium control height 32px */
13
17
  --m-control-height-small: 24px;
14
18
  --m-control-height-medium: 32px;
@@ -22,12 +26,12 @@
22
26
 
23
27
  --m-radius-control: 6px;
24
28
  --m-border-width: 1px;
25
- --m-focus-shadow: 0 0 0 2px
26
- color-mix(in srgb, var(--m-color-primary) 45%, transparent);
27
- --m-focus-shadow-danger: 0 0 0 2px
28
- color-mix(in srgb, var(--m-color-danger) 45%, transparent);
29
- --m-focus-shadow-warning: 0 0 0 2px
30
- color-mix(in srgb, var(--m-color-warning) 45%, transparent);
29
+ --m-focus-outline-width: 2px;
30
+ --m-focus-shadow: 0 0 0 var(--m-focus-outline-width) var(--m-color-control-outline);
31
+ --m-focus-shadow-danger: 0 0 0 var(--m-focus-outline-width)
32
+ var(--m-color-control-outline-danger);
33
+ --m-focus-shadow-warning: 0 0 0 var(--m-focus-outline-width)
34
+ var(--m-color-control-outline-warning);
31
35
  --m-color-success: #52c41a;
32
36
  --m-color-info: #1677ff;
33
37
  --m-color-warning: #faad14;
@@ -253,7 +257,7 @@
253
257
  animation-play-state: paused !important;
254
258
  }
255
259
 
256
- /* Global density: scales spacing + control heights (Vuetify-inspired, WD tokens) */
260
+ /* Global density: scales spacing + control heights (WD tokens) */
257
261
  :root,
258
262
  [data-m-density="comfortable"] {
259
263
  --m-density-scale: 1;
@@ -348,12 +352,15 @@
348
352
  --m-color-border: #424242;
349
353
  --m-color-split: #303030;
350
354
  --m-color-focus-ring: #3c89e8;
351
- --m-focus-shadow: 0 0 0 2px
352
- color-mix(in srgb, var(--m-color-primary) 50%, transparent);
353
- --m-focus-shadow-danger: 0 0 0 2px
354
- color-mix(in srgb, var(--m-color-danger) 50%, transparent);
355
- --m-focus-shadow-warning: 0 0 0 2px
356
- color-mix(in srgb, var(--m-color-warning) 50%, transparent);
355
+ /* Dark: getAlphaColor(color*Bg, colorBgContainer) */
356
+ --m-color-control-outline: rgba(23, 117, 249, 0.31);
357
+ --m-color-control-outline-danger: rgba(249, 75, 78, 0.31);
358
+ --m-color-control-outline-warning: rgba(250, 173, 20, 0.3);
359
+ --m-focus-shadow: 0 0 0 var(--m-focus-outline-width) var(--m-color-control-outline);
360
+ --m-focus-shadow-danger: 0 0 0 var(--m-focus-outline-width)
361
+ var(--m-color-control-outline-danger);
362
+ --m-focus-shadow-warning: 0 0 0 var(--m-focus-outline-width)
363
+ var(--m-color-control-outline-warning);
357
364
  /* Mid solids: keep ≥~4.5:1 with --m-color-on-emphasis on dark surfaces */
358
365
  --m-color-success: #49aa19;
359
366
  --m-color-info: #1668dc;
@@ -893,8 +900,10 @@
893
900
  width: 100%;
894
901
  }
895
902
 
903
+ .m-textarea--invalid:focus,
896
904
  .m-textarea--invalid:focus-visible,
897
905
  .m-select--invalid.m-select--open,
906
+ .m-select--invalid:focus,
898
907
  .m-select--invalid:focus-visible {
899
908
  border-color: var(--m-color-danger);
900
909
  box-shadow: var(--m-focus-shadow-danger);
@@ -1103,20 +1112,28 @@
1103
1112
  opacity: var(--m-opacity-disabled);
1104
1113
  }
1105
1114
 
1106
- /* Shared Naive-like hover/focus for remaining form triggers */
1115
+ /* Shared hover/focus for remaining form triggers */
1107
1116
  .m-inputotp__input:hover:not(:disabled):not(:focus),
1108
- .m-cascadeselect__trigger:hover:not(:disabled):not(:focus-visible),
1109
- .m-treeselect__trigger:hover:not(:disabled):not(:focus-visible),
1117
+ .m-cascadeselect:not(.m-cascadeselect--open)
1118
+ .m-cascadeselect__trigger:hover:not(:disabled):not(:focus):not(:focus-visible),
1119
+ .m-treeselect:not(.m-treeselect--open)
1120
+ .m-treeselect__trigger:hover:not(:disabled):not(:focus):not(:focus-visible),
1110
1121
  .m-inputcolor__text:hover:not(:disabled):not(:focus),
1111
- .m-inputtags:hover:not(.m-inputtags--disabled),
1112
- .m-togglebutton:hover:not(:disabled):not(.m-togglebutton--checked),
1113
- .m-inplace__display:hover {
1122
+ .m-inputtags:hover:not(.m-inputtags--disabled):not(:focus-within),
1123
+ .m-togglebutton:hover:not(:disabled):not(.m-togglebutton--checked):not(:focus-visible),
1124
+ .m-inplace__display:hover:not(:focus-visible) {
1114
1125
  border-color: var(--m-color-primary-hover);
1115
1126
  }
1116
1127
 
1128
+ .m-inputotp__input:focus,
1117
1129
  .m-inputotp__input:focus-visible,
1130
+ .m-cascadeselect--open .m-cascadeselect__trigger,
1131
+ .m-cascadeselect__trigger:focus,
1118
1132
  .m-cascadeselect__trigger:focus-visible,
1133
+ .m-treeselect--open .m-treeselect__trigger,
1134
+ .m-treeselect__trigger:focus,
1119
1135
  .m-treeselect__trigger:focus-visible,
1136
+ .m-inputcolor__text:focus,
1120
1137
  .m-inputcolor__text:focus-visible,
1121
1138
  .m-inputtags:focus-within,
1122
1139
  .m-togglebutton:focus-visible,
@@ -1125,13 +1142,15 @@
1125
1142
  .m-splitbutton__trigger:focus-visible,
1126
1143
  .m-inplace__display:focus-visible,
1127
1144
  .m-pagination__button:focus-visible {
1128
- border-color: var(--m-color-primary-hover);
1145
+ border-color: var(--m-color-primary);
1129
1146
  box-shadow: var(--m-focus-shadow);
1130
1147
  outline: none;
1131
1148
  }
1132
1149
 
1150
+ .m-inputotp--invalid .m-inputotp__input:focus,
1133
1151
  .m-inputotp--invalid .m-inputotp__input:focus-visible,
1134
1152
  .m-inputtags--invalid:focus-within,
1153
+ .m-inputcolor--invalid .m-inputcolor__text:focus,
1135
1154
  .m-inputcolor--invalid .m-inputcolor__text:focus-visible {
1136
1155
  border-color: var(--m-color-danger);
1137
1156
  box-shadow: var(--m-focus-shadow-danger);
@@ -1186,153 +1205,1004 @@
1186
1205
  animation: none !important;
1187
1206
  }
1188
1207
 
1189
- .m-icon {
1190
- color: currentColor;
1191
- display: inline-flex;
1192
- flex-shrink: 0;
1193
- height: 1rem;
1194
- line-height: 0;
1195
- vertical-align: middle;
1196
- width: 1rem;
1197
- }
1198
-
1199
- .m-icon svg {
1200
- display: block;
1201
- height: 100%;
1202
- width: 100%;
1203
- }
1204
-
1205
- .m-icon--sm,
1206
- .m-icon--small {
1207
- height: 0.875rem;
1208
- width: 0.875rem;
1209
- }
1210
-
1211
- .m-icon--md,
1212
- .m-icon--normal {
1213
- height: 1rem;
1214
- width: 1rem;
1215
- }
1216
-
1217
- .m-icon--lg,
1218
- .m-icon--large {
1219
- height: 1.25rem;
1220
- width: 1.25rem;
1221
- }
1222
-
1223
- .m-icon--spin svg {
1224
- animation: m-icon-spin var(--m-motion-spin-fast) linear infinite;
1225
- }
1226
-
1227
- @keyframes m-icon-spin {
1228
- to {
1229
- transform: rotate(360deg);
1230
- }
1231
- }
1232
-
1233
- :root[data-m-motion='none'] .m-icon--spin svg,
1234
- :root[data-m-motion='reduced'] .m-icon--spin svg {
1235
- animation: none;
1236
- }
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);
1217
+ --m-button-padding-x-small: var(--m-control-padding-x-small);
1218
+ --m-button-padding-x-medium: calc(
1219
+ var(--m-control-padding-x-medium) + var(--m-space-1)
1220
+ );
1221
+ --m-button-padding-x-large: calc(
1222
+ var(--m-control-padding-x-large) + var(--m-space-1)
1223
+ );
1224
+ --m-button-padding-x-round-extra: var(--m-space-2);
1225
+
1226
+ /* Icon / spinner */
1227
+ --m-button-icon-size: 1rem;
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);
1237
1284
 
1238
- /* —— Media: Carousel —— */
1239
- .m-carousel {
1240
- --m-carousel-indicator-size: 0.45rem;
1241
- --m-carousel-gap: var(--m-space-2);
1242
1285
  align-items: center;
1286
+ background: var(--m-button-bg);
1287
+ border: var(--m-button-border-width) var(--m-button-border-style)
1288
+ var(--m-button-border);
1289
+ border-radius: var(--m-button-radius);
1290
+ color: var(--m-button-fg);
1291
+ cursor: pointer;
1292
+ display: inline-flex;
1293
+ flex-direction: row;
1294
+ font-family: var(--m-font-sans);
1295
+ font-size: var(--m-button-font-size);
1296
+ font-weight: var(--m-button-font-weight);
1297
+ gap: var(--m-button-gap);
1298
+ justify-content: center;
1299
+ line-height: 1;
1300
+ min-height: var(--m-button-height);
1301
+ padding: 0 var(--m-button-padding-x);
1302
+ position: relative;
1303
+ text-decoration: none;
1304
+ touch-action: manipulation;
1305
+ transition:
1306
+ background-color var(--m-motion-fast) var(--m-motion-ease),
1307
+ border-color var(--m-motion-fast) var(--m-motion-ease),
1308
+ color var(--m-motion-fast) var(--m-motion-ease),
1309
+ box-shadow var(--m-motion-fast) var(--m-motion-ease),
1310
+ opacity var(--m-motion-fast) var(--m-motion-ease),
1311
+ transform var(--m-button-press-duration) var(--m-motion-ease);
1312
+ user-select: none;
1313
+ vertical-align: middle;
1314
+ white-space: nowrap;
1315
+ }
1316
+
1317
+ @media (hover: hover) and (pointer: fine) {
1318
+ .m-button:hover:not(:disabled):not(.m-button--disabled) {
1319
+ background: var(--m-button-hover-bg);
1320
+ border-color: var(--m-button-hover-border);
1321
+ color: var(--m-button-hover-fg);
1322
+ }
1323
+ }
1324
+
1325
+ .m-button:active:not(:disabled):not(.m-button--disabled):not(.m-button--loading) {
1326
+ background: var(--m-button-active-bg);
1327
+ border-color: var(--m-button-active-border);
1328
+ color: var(--m-button-active-fg);
1329
+ }
1330
+
1331
+ .m-button--press:active:not(:disabled):not(.m-button--disabled) {
1332
+ transform: scale(var(--m-button-press-scale));
1333
+ }
1334
+
1335
+ .m-button:focus {
1336
+ outline: none;
1337
+ }
1338
+
1339
+ .m-button:focus-visible {
1340
+ box-shadow: var(--m-focus-shadow);
1341
+ outline: none;
1342
+ }
1343
+
1344
+ .m-button:disabled,
1345
+ .m-button--disabled {
1346
+ background: var(--m-color-bg-disabled);
1347
+ border-color: var(--m-color-border);
1348
+ color: var(--m-color-text-disabled);
1349
+ cursor: not-allowed;
1350
+ opacity: 1;
1351
+ }
1352
+
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,
1357
+ .m-button--ghost:disabled,
1358
+ .m-button--ghost.m-button--disabled {
1359
+ background: transparent;
1360
+ border-color: transparent;
1361
+ }
1362
+
1363
+ /* ---------- Color axis ---------- */
1364
+
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(
1370
+ in srgb,
1371
+ var(--m-color-text) var(--m-button-fill-opacity-muted),
1372
+ var(--m-color-surface)
1373
+ );
1374
+ --m-button-color-light-hover: color-mix(
1375
+ in srgb,
1376
+ var(--m-color-text) var(--m-button-fill-opacity-muted-hover),
1377
+ var(--m-color-surface)
1378
+ );
1379
+ --m-button-color-light-active: color-mix(
1380
+ in srgb,
1381
+ var(--m-color-text) var(--m-button-fill-opacity-muted-active),
1382
+ var(--m-color-surface)
1383
+ );
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(
1416
+ in srgb,
1417
+ var(--m-color-danger) 88%,
1418
+ var(--m-color-text)
1419
+ );
1420
+ --m-button-color-active: color-mix(
1421
+ in srgb,
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(
1439
+ in srgb,
1440
+ var(--m-color-success) 88%,
1441
+ var(--m-color-text)
1442
+ );
1443
+ --m-button-color-active: color-mix(
1444
+ in srgb,
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(
1462
+ in srgb,
1463
+ var(--m-color-info) 88%,
1464
+ var(--m-color-text)
1465
+ );
1466
+ --m-button-color-active: color-mix(
1467
+ in srgb,
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(
1485
+ in srgb,
1486
+ var(--m-color-warn) 88%,
1487
+ var(--m-color-text)
1488
+ );
1489
+ --m-button-color-active: color-mix(
1490
+ in srgb,
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(
1508
+ in srgb,
1509
+ var(--m-color-help) 88%,
1510
+ var(--m-color-text)
1511
+ );
1512
+ --m-button-color-active: color-mix(
1513
+ in srgb,
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);
1555
+ --m-button-border: transparent;
1556
+ --m-button-hover-bg: var(
1557
+ --m-button-solid-bg-hover,
1558
+ var(--m-button-color-hover)
1559
+ );
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)
1565
+ );
1566
+ --m-button-active-fg: var(--m-button-on-color);
1567
+ --m-button-active-border: transparent;
1568
+ }
1569
+
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)
1577
+ );
1578
+ --m-button-hover-bg: var(
1579
+ --m-button-outlined-hover-bg,
1580
+ var(--m-button-color-light)
1581
+ );
1582
+ --m-button-hover-fg: var(
1583
+ --m-button-outlined-hover-fg,
1584
+ var(--m-button-color-hover)
1585
+ );
1586
+ --m-button-hover-border: var(
1587
+ --m-button-outlined-hover-border,
1588
+ var(--m-button-color-hover)
1589
+ );
1590
+ --m-button-active-bg: var(
1591
+ --m-button-outlined-active-bg,
1592
+ var(--m-button-color-light-active, var(--m-button-color-light))
1593
+ );
1594
+ --m-button-active-fg: var(
1595
+ --m-button-color-active,
1596
+ var(--m-button-hover-fg)
1597
+ );
1598
+ --m-button-active-border: var(
1599
+ --m-button-color-active,
1600
+ var(--m-button-hover-border)
1601
+ );
1602
+ }
1603
+
1604
+ .m-button--variant-dashed {
1605
+ --m-button-border-style: dashed;
1606
+ }
1607
+
1608
+ .m-button--variant-filled {
1609
+ --m-button-bg: var(--m-button-color-light);
1610
+ --m-button-fg: var(--m-button-color-base);
1611
+ --m-button-border: transparent;
1612
+ --m-button-hover-bg: var(--m-button-color-light-hover);
1613
+ --m-button-hover-fg: var(--m-button-color-base);
1614
+ --m-button-hover-border: transparent;
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;
1618
+ }
1619
+
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;
1630
+ }
1631
+
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);
1635
+ }
1636
+
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;
1643
+ }
1644
+
1645
+ .m-button--variant-link:hover:not(:disabled):not(.m-button--disabled) {
1646
+ text-decoration: underline;
1647
+ }
1648
+
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);
1654
+ }
1655
+
1656
+ .m-button--color-default.m-button--variant-filled {
1657
+ --m-button-color-base: var(--m-color-text);
1658
+ }
1659
+
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);
1663
+ }
1664
+
1665
+ /* Ghost: transparent fill on bordered variants */
1666
+ .m-button--ghost {
1667
+ --m-button-bg: transparent;
1668
+ --m-button-hover-bg: transparent;
1669
+ --m-button-active-bg: transparent;
1670
+ }
1671
+
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));
1681
+ }
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(
1685
+ in srgb,
1686
+ var(--m-color-on-emphasis) var(--m-button-ghost-hover-opacity),
1687
+ transparent
1688
+ );
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);
1693
+ }
1694
+
1695
+ /* ---------- Size / shape / layout ---------- */
1696
+
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);
1702
+ }
1703
+
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);
1709
+ }
1710
+
1711
+ .m-button--block {
1243
1712
  display: flex;
1244
- gap: var(--m-space-2);
1245
1713
  width: 100%;
1246
1714
  }
1247
1715
 
1248
- .m-carousel__viewport {
1249
- margin-inline: calc(var(--m-carousel-gap) / -2);
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
+ );
1721
+ }
1722
+
1723
+ .m-button--shape-circle {
1724
+ --m-button-radius: var(--m-radius-full);
1725
+ min-width: var(--m-button-height);
1726
+ padding-inline: 0;
1727
+ width: var(--m-button-height);
1728
+ }
1729
+
1730
+ .m-button--shape-square {
1731
+ --m-button-radius: 0;
1732
+ }
1733
+
1734
+ .m-button--icon-only {
1735
+ gap: 0;
1736
+ min-width: var(--m-button-height);
1737
+ padding: 0;
1738
+ width: var(--m-button-height);
1739
+ }
1740
+
1741
+ .m-button--icon-end {
1742
+ flex-direction: row-reverse;
1743
+ }
1744
+
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);
1748
+ }
1749
+
1750
+ .m-button--loading {
1751
+ cursor: default;
1752
+ opacity: var(--m-button-loading-opacity);
1753
+ pointer-events: none;
1754
+ }
1755
+
1756
+ /* ---------- Parts ---------- */
1757
+
1758
+ .m-button__icon,
1759
+ .m-button__label {
1760
+ align-items: center;
1761
+ display: inline-flex;
1762
+ justify-content: center;
1763
+ }
1764
+
1765
+ .m-button__icon,
1766
+ .m-button__label {
1767
+ position: relative;
1768
+ z-index: 1;
1769
+ }
1770
+
1771
+ .m-button__ripple {
1772
+ border-radius: inherit;
1773
+ inset: 0;
1250
1774
  overflow: hidden;
1251
- touch-action: pan-y;
1775
+ pointer-events: none;
1776
+ position: absolute;
1777
+ z-index: 0;
1778
+ }
1779
+
1780
+ .m-button__ripple-wave {
1781
+ background: currentColor;
1782
+ border-radius: var(--m-radius-full);
1783
+ opacity: 0;
1784
+ pointer-events: none;
1785
+ position: absolute;
1786
+ transform: scale(0);
1787
+ will-change: transform, opacity;
1788
+ }
1789
+
1790
+ .m-button__ripple-wave--fallback {
1791
+ animation: m-button-ripple var(--m-button-ripple-duration)
1792
+ var(--m-motion-ease) forwards;
1793
+ }
1794
+
1795
+ @keyframes m-button-ripple {
1796
+ 0% {
1797
+ opacity: var(--m-button-ripple-opacity-start);
1798
+ transform: scale(0);
1799
+ }
1800
+ 55% {
1801
+ opacity: var(--m-button-ripple-opacity-mid);
1802
+ transform: scale(0.55);
1803
+ }
1804
+ 100% {
1805
+ opacity: 0;
1806
+ transform: scale(1);
1807
+ }
1808
+ }
1809
+
1810
+ .m-button__icon {
1811
+ flex: 0 0 auto;
1812
+ height: var(--m-button-icon-size);
1813
+ line-height: 0;
1814
+ width: var(--m-button-icon-size);
1815
+ }
1816
+
1817
+ .m-button__icon :is(.m-icon, .m-button__icon-graphic, svg) {
1818
+ display: block;
1819
+ flex-shrink: 0;
1820
+ height: 100%;
1252
1821
  width: 100%;
1253
1822
  }
1254
1823
 
1255
- .m-carousel__track {
1256
- --m-carousel-page: 0;
1257
- --m-carousel-count: 1;
1258
- --m-carousel-visible: 1;
1824
+ .m-button__icon .m-icon {
1825
+ max-height: 100%;
1826
+ max-width: 100%;
1827
+ }
1828
+
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;
1832
+ border-radius: var(--m-radius-full);
1833
+ border-right-color: transparent;
1834
+ height: var(--m-button-spinner-size);
1835
+ width: var(--m-button-spinner-size);
1836
+ }
1837
+
1838
+ @keyframes m-button-spin {
1839
+ to {
1840
+ transform: rotate(360deg);
1841
+ }
1842
+ }
1843
+
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
+ }
1853
+ }
1854
+
1855
+ :root[data-m-motion='reduced'] .m-button {
1856
+ --m-button-ripple-duration: 280ms;
1857
+ --m-button-press-duration: 120ms;
1858
+ }
1859
+
1860
+ :root[data-m-motion='none'] .m-button {
1861
+ --m-button-ripple-duration: 0ms;
1862
+ --m-button-press-duration: 0ms;
1863
+ }
1864
+
1865
+ /* ---------- Group ---------- */
1866
+
1867
+ .m-button-group {
1868
+ display: inline-flex;
1869
+ vertical-align: middle;
1870
+ }
1871
+
1872
+ .m-button-group--block {
1259
1873
  display: flex;
1260
- transform: translate3d(
1261
- calc(-100% * var(--m-carousel-page) / var(--m-carousel-count)),
1262
- 0,
1263
- 0
1264
- );
1265
- transition: transform var(--m-motion-normal) var(--m-motion-ease);
1266
- width: calc(100% * var(--m-carousel-count) / var(--m-carousel-visible));
1267
- will-change: transform;
1874
+ width: 100%;
1268
1875
  }
1269
1876
 
1270
- .m-carousel__track--instant {
1271
- transition: none;
1877
+ .m-button-group--block > .m-button {
1878
+ flex: 1;
1272
1879
  }
1273
1880
 
1274
- .m-carousel__item {
1881
+ .m-button-group > .m-button {
1882
+ border-radius: 0;
1883
+ margin: 0;
1884
+ }
1885
+
1886
+ .m-button-group > .m-button + .m-button {
1887
+ margin-inline-start: calc(var(--m-border-width) * -1);
1888
+ }
1889
+
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);
1905
+ }
1906
+
1907
+ /* —— Media: Carousel —— */
1908
+ .m-carousel {
1909
+ --m-carousel-dot-size: 0.5rem;
1910
+ --m-carousel-dot-line-width: 1rem;
1911
+ --m-carousel-dot-line-width-active: 1.75rem;
1912
+ --m-carousel-dot-line-thickness: 0.25rem;
1913
+ --m-carousel-duration: 300ms;
1914
+ --m-carousel-gap: 0px;
1915
+ --m-carousel-arrow-inset: var(--m-space-3);
1916
+ --m-carousel-dots-inset: var(--m-space-3);
1275
1917
  box-sizing: border-box;
1276
- flex: 0 0 calc(100% / var(--m-carousel-count));
1918
+ display: block;
1919
+ height: 100%;
1920
+ max-width: 100%;
1277
1921
  min-width: 0;
1278
- padding-inline: calc(var(--m-carousel-gap) / 2);
1922
+ outline: none;
1923
+ overflow: hidden;
1924
+ position: relative;
1925
+ touch-action: pan-y;
1926
+ width: 100%;
1279
1927
  }
1280
1928
 
1281
- .m-carousel__main {
1929
+ .m-carousel--vertical {
1930
+ touch-action: pan-x;
1931
+ }
1932
+
1933
+ .m-carousel__viewport {
1934
+ height: 100%;
1935
+ overflow: hidden;
1936
+ width: 100%;
1937
+ }
1938
+
1939
+ .m-carousel__slides {
1282
1940
  display: flex;
1283
- flex: 1;
1941
+ gap: var(--m-carousel-gap);
1942
+ height: 100%;
1943
+ transition: transform var(--m-carousel-duration) var(--m-motion-ease);
1944
+ will-change: transform;
1945
+ }
1946
+
1947
+ .m-carousel__slides--instant {
1948
+ transition: none;
1949
+ }
1950
+
1951
+ .m-carousel--vertical .m-carousel__slides {
1284
1952
  flex-direction: column;
1285
- gap: var(--m-space-2);
1953
+ }
1954
+
1955
+ .m-carousel__slide {
1956
+ box-sizing: border-box;
1957
+ flex-shrink: 0;
1958
+ height: 100%;
1286
1959
  min-width: 0;
1960
+ outline: none;
1961
+ overflow: hidden;
1962
+ position: relative;
1963
+ width: 100%;
1964
+ }
1965
+
1966
+ .m-carousel__slide-content {
1967
+ height: 100%;
1968
+ width: 100%;
1969
+ }
1970
+
1971
+ .m-carousel__slide-content > img {
1972
+ display: block;
1973
+ height: 100%;
1974
+ object-fit: cover;
1975
+ width: 100%;
1976
+ }
1977
+
1978
+ /* fade */
1979
+ .m-carousel--fade .m-carousel__slides {
1980
+ display: block;
1981
+ height: 100%;
1982
+ position: relative;
1983
+ transform: none !important;
1984
+ width: 100%;
1985
+ }
1986
+
1987
+ .m-carousel--fade .m-carousel__slide {
1988
+ inset: 0;
1989
+ opacity: 0;
1990
+ pointer-events: none;
1991
+ position: absolute;
1992
+ transition: opacity var(--m-carousel-duration) var(--m-motion-ease);
1993
+ width: 100%;
1994
+ }
1995
+
1996
+ .m-carousel--fade .m-carousel__slide--current {
1997
+ height: 100%;
1998
+ opacity: 1;
1999
+ pointer-events: auto;
2000
+ position: relative;
2001
+ width: 100%;
2002
+ }
2003
+
2004
+ /* card */
2005
+ .m-carousel--card .m-carousel__slides {
2006
+ height: 100%;
2007
+ perspective: 1000px;
2008
+ position: relative;
2009
+ transform: none !important;
2010
+ width: 100%;
2011
+ }
2012
+
2013
+ .m-carousel--card .m-carousel__slide {
2014
+ left: 50%;
2015
+ opacity: 0;
2016
+ position: absolute;
2017
+ top: 0;
2018
+ transform: translateX(-50%) translateZ(-400px);
2019
+ transition:
2020
+ opacity var(--m-carousel-duration) var(--m-motion-ease),
2021
+ transform var(--m-carousel-duration) var(--m-motion-ease);
2022
+ width: 60%;
2023
+ }
2024
+
2025
+ .m-carousel--card .m-carousel__slide--current {
2026
+ opacity: 1;
2027
+ transform: translateX(-50%) translateZ(0);
2028
+ z-index: 2;
2029
+ }
2030
+
2031
+ .m-carousel--card .m-carousel__slide--prev {
2032
+ opacity: 0.45;
2033
+ transform: translateX(-100%) translateZ(-200px);
2034
+ z-index: 1;
2035
+ }
2036
+
2037
+ .m-carousel--card .m-carousel__slide--next {
2038
+ opacity: 0.45;
2039
+ transform: translateX(0%) translateZ(-200px);
2040
+ z-index: 1;
2041
+ }
2042
+
2043
+ .m-carousel--card.m-carousel--vertical .m-carousel__slide {
2044
+ left: 0;
2045
+ top: 50%;
2046
+ transform: translateY(-50%) translateZ(-400px);
2047
+ width: 100%;
2048
+ }
2049
+
2050
+ .m-carousel--card.m-carousel--vertical .m-carousel__slide--current {
2051
+ transform: translateY(-50%) translateZ(0);
2052
+ }
2053
+
2054
+ .m-carousel--card.m-carousel--vertical .m-carousel__slide--prev {
2055
+ transform: translateY(-100%) translateZ(-200px);
2056
+ }
2057
+
2058
+ .m-carousel--card.m-carousel--vertical .m-carousel__slide--next {
2059
+ transform: translateY(0%) translateZ(-200px);
2060
+ }
2061
+
2062
+ /* arrows */
2063
+ .m-carousel__arrows {
2064
+ display: contents;
2065
+ }
2066
+
2067
+ .m-carousel__arrow {
2068
+ backdrop-filter: blur(6px);
2069
+ box-shadow: var(--m-shadow-sm);
2070
+ position: absolute;
2071
+ z-index: 3;
1287
2072
  }
1288
2073
 
1289
- .m-carousel__indicators {
2074
+ .m-carousel--horizontal .m-carousel__arrow--prev {
2075
+ left: var(--m-carousel-arrow-inset);
2076
+ top: 50%;
2077
+ transform: translateY(-50%);
2078
+ }
2079
+
2080
+ .m-carousel--horizontal .m-carousel__arrow--next {
2081
+ right: var(--m-carousel-arrow-inset);
2082
+ top: 50%;
2083
+ transform: translateY(-50%);
2084
+ }
2085
+
2086
+ .m-carousel--vertical .m-carousel__arrow {
2087
+ left: 50%;
2088
+ }
2089
+
2090
+ .m-carousel--vertical .m-carousel__arrow--prev {
2091
+ top: var(--m-carousel-arrow-inset);
2092
+ transform: translateX(-50%) rotate(90deg);
2093
+ }
2094
+
2095
+ .m-carousel--vertical .m-carousel__arrow--next {
2096
+ bottom: var(--m-carousel-arrow-inset);
2097
+ top: auto;
2098
+ transform: translateX(-50%) rotate(90deg);
2099
+ }
2100
+
2101
+ /* dots */
2102
+ .m-carousel__dots {
1290
2103
  display: flex;
2104
+ flex-wrap: nowrap;
1291
2105
  gap: var(--m-space-1);
1292
- justify-content: center;
2106
+ position: absolute;
2107
+ z-index: 3;
1293
2108
  }
1294
2109
 
1295
- .m-carousel__indicator {
1296
- background: color-mix(in srgb, var(--m-color-text-muted) 40%, transparent);
2110
+ .m-carousel--dots-bottom .m-carousel__dots {
2111
+ bottom: var(--m-carousel-dots-inset);
2112
+ left: 50%;
2113
+ transform: translateX(-50%);
2114
+ }
2115
+
2116
+ .m-carousel--dots-top .m-carousel__dots {
2117
+ left: 50%;
2118
+ top: var(--m-carousel-dots-inset);
2119
+ transform: translateX(-50%);
2120
+ }
2121
+
2122
+ .m-carousel--dots-left .m-carousel__dots {
2123
+ flex-direction: column;
2124
+ left: var(--m-carousel-dots-inset);
2125
+ top: 50%;
2126
+ transform: translateY(-50%);
2127
+ }
2128
+
2129
+ .m-carousel--dots-right .m-carousel__dots {
2130
+ flex-direction: column;
2131
+ right: var(--m-carousel-dots-inset);
2132
+ top: 50%;
2133
+ transform: translateY(-50%);
2134
+ }
2135
+
2136
+ .m-carousel__dot {
2137
+ background: color-mix(in srgb, var(--m-color-text-muted) 45%, transparent);
1297
2138
  border: 0;
1298
- border-radius: var(--m-radius-full);
1299
2139
  cursor: pointer;
1300
- height: var(--m-carousel-indicator-size);
1301
2140
  padding: 0;
1302
2141
  position: relative;
1303
- width: var(--m-carousel-indicator-size);
2142
+ transition:
2143
+ background-color var(--m-motion-fast) var(--m-motion-ease),
2144
+ width var(--m-motion-fast) var(--m-motion-ease),
2145
+ height var(--m-motion-fast) var(--m-motion-ease),
2146
+ box-shadow var(--m-motion-fast) var(--m-motion-ease);
1304
2147
  }
1305
2148
 
1306
- .m-carousel__indicator::after {
2149
+ .m-carousel__dot::after {
1307
2150
  content: '';
1308
- inset: -0.45rem;
2151
+ inset: -0.4rem;
1309
2152
  position: absolute;
1310
2153
  }
1311
2154
 
1312
- .m-carousel__indicator:hover {
1313
- background: color-mix(in srgb, var(--m-color-text-muted) 70%, transparent);
2155
+ .m-carousel__dots--dot .m-carousel__dot {
2156
+ border-radius: var(--m-radius-full);
2157
+ height: var(--m-carousel-dot-size);
2158
+ width: var(--m-carousel-dot-size);
2159
+ }
2160
+
2161
+ .m-carousel__dots--line .m-carousel__dot {
2162
+ background: color-mix(in srgb, var(--m-color-text-muted) 40%, transparent);
2163
+ border-radius: var(--m-radius-full);
2164
+ height: var(--m-carousel-dot-line-thickness);
2165
+ width: var(--m-carousel-dot-line-width);
2166
+ }
2167
+
2168
+ .m-carousel--dots-left .m-carousel__dots--line .m-carousel__dot,
2169
+ .m-carousel--dots-right .m-carousel__dots--line .m-carousel__dot {
2170
+ height: var(--m-carousel-dot-line-width);
2171
+ width: var(--m-carousel-dot-line-thickness);
2172
+ }
2173
+
2174
+ .m-carousel__dot:hover {
2175
+ background: color-mix(in srgb, var(--m-color-text-muted) 75%, transparent);
1314
2176
  }
1315
2177
 
1316
- .m-carousel__indicator:focus-visible {
2178
+ .m-carousel__dot:focus-visible {
1317
2179
  box-shadow: var(--m-focus-shadow);
1318
2180
  outline: none;
1319
2181
  }
1320
2182
 
1321
- .m-carousel__indicator--active,
1322
- .m-carousel__indicator--active:hover {
2183
+ .m-carousel__dot--active,
2184
+ .m-carousel__dot--active:hover {
1323
2185
  background: var(--m-color-primary);
1324
2186
  }
1325
2187
 
1326
- .m-carousel__nav:hover:not(:disabled) {
1327
- background: color-mix(in srgb, var(--m-color-primary) 8%, transparent);
2188
+ .m-carousel__dots--line .m-carousel__dot--active {
2189
+ width: var(--m-carousel-dot-line-width-active);
1328
2190
  }
1329
2191
 
1330
- .m-carousel__nav:focus-visible {
1331
- box-shadow: var(--m-focus-shadow);
1332
- outline: none;
2192
+ .m-carousel--dots-left .m-carousel__dots--line .m-carousel__dot--active,
2193
+ .m-carousel--dots-right .m-carousel__dots--line .m-carousel__dot--active {
2194
+ height: var(--m-carousel-dot-line-width-active);
2195
+ width: var(--m-carousel-dot-line-thickness);
2196
+ }
2197
+
2198
+ .m-carousel--dragging {
2199
+ cursor: grabbing;
2200
+ user-select: none;
1333
2201
  }
1334
2202
 
1335
- [data-m-motion="reduced"] .m-carousel__track,
1336
- [data-m-motion="none"] .m-carousel__track {
2203
+ [data-m-motion='reduced'] .m-carousel__slides,
2204
+ [data-m-motion='none'] .m-carousel__slides,
2205
+ [data-m-motion='reduced'] .m-carousel__slide,
2206
+ [data-m-motion='none'] .m-carousel__slide {
1337
2207
  transition: none;
1338
2208
  }