morya-ui 0.4.5 → 0.5.0

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 (145) hide show
  1. package/CHANGELOG.md +19 -2
  2. package/dist/InputNumber-DjbXtTzR.js +245 -0
  3. package/dist/accordion/style.css +6 -15
  4. package/dist/affix/style.css +6 -15
  5. package/dist/alert/style.css +6 -15
  6. package/dist/anchor/style.css +6 -15
  7. package/dist/auto-complete/style.css +6 -15
  8. package/dist/avatar/style.css +6 -15
  9. package/dist/badge/style.css +6 -15
  10. package/dist/block-ui/style.css +6 -15
  11. package/dist/breadcrumb/style.css +6 -15
  12. package/dist/button/style.css +6 -15
  13. package/dist/calendar/style.css +6 -15
  14. package/dist/card/style.css +6 -15
  15. package/dist/carousel/style.css +6 -15
  16. package/dist/cascade-select/style.css +6 -15
  17. package/dist/checkbox/style.css +6 -15
  18. package/dist/chip/style.css +6 -15
  19. package/dist/color-picker/index.js +676 -0
  20. package/dist/{input-color → color-picker}/style.css +1406 -83
  21. package/dist/color-picker/style.js +8 -0
  22. package/dist/command-menu/style.css +6 -15
  23. package/dist/components/ColorPicker/ColorPicker.vue.d.ts +41 -0
  24. package/dist/components/ColorPicker/ColorPicker.vue.d.ts.map +1 -0
  25. package/dist/components/ColorPicker/colorUtils.d.ts +23 -0
  26. package/dist/components/ColorPicker/colorUtils.d.ts.map +1 -0
  27. package/dist/components/ColorPicker/gradientUtils.d.ts +9 -0
  28. package/dist/components/ColorPicker/gradientUtils.d.ts.map +1 -0
  29. package/dist/components/ColorPicker/index.d.ts +3 -0
  30. package/dist/components/ColorPicker/index.d.ts.map +1 -0
  31. package/dist/components/ColorPicker/styles.css +405 -0
  32. package/dist/components/ColorPicker/types.d.ts +60 -0
  33. package/dist/components/ColorPicker/types.d.ts.map +1 -0
  34. package/dist/components/ContextMenu/styles.css +1 -1
  35. package/dist/components/Dropdown/styles.css +1 -1
  36. package/dist/components/InputNumber/styles.css +28 -10
  37. package/dist/components/Menubar/styles.css +1 -1
  38. package/dist/components/TieredMenu/styles.css +2 -2
  39. package/dist/config-provider/style.css +6 -15
  40. package/dist/confirm-dialog/style.css +6 -15
  41. package/dist/confirm-popup/style.css +6 -15
  42. package/dist/context-menu/style.css +7 -16
  43. package/dist/data-view/style.css +6 -15
  44. package/dist/date-picker/style.css +6 -15
  45. package/dist/descriptions/style.css +6 -15
  46. package/dist/dialog/style.css +6 -15
  47. package/dist/divider/style.css +6 -15
  48. package/dist/dock/style.css +6 -15
  49. package/dist/drawer/style.css +6 -15
  50. package/dist/dropdown/style.css +7 -16
  51. package/dist/empty/style.css +6 -15
  52. package/dist/fieldset/style.css +6 -15
  53. package/dist/file-upload/style.css +6 -15
  54. package/dist/flex/style.css +6 -15
  55. package/dist/float-label/style.css +6 -15
  56. package/dist/fluid/style.css +6 -15
  57. package/dist/form/style.css +6 -15
  58. package/dist/gallery/style.css +6 -15
  59. package/dist/grid/style.css +6 -15
  60. package/dist/icon/style.css +6 -15
  61. package/dist/icon-field/style.css +6 -15
  62. package/dist/image/style.css +6 -15
  63. package/dist/index.d.ts +2 -2
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +1975 -1421
  66. package/dist/inplace/style.css +6 -15
  67. package/dist/input/style.css +6 -15
  68. package/dist/input-group/style.css +6 -15
  69. package/dist/input-number/index.js +2 -245
  70. package/dist/input-number/style.css +34 -25
  71. package/dist/input-otp/style.css +6 -15
  72. package/dist/input-password/style.css +6 -15
  73. package/dist/input-tags/style.css +6 -15
  74. package/dist/knob/style.css +6 -15
  75. package/dist/label/style.css +6 -15
  76. package/dist/layout/style.css +6 -15
  77. package/dist/list/style.css +6 -15
  78. package/dist/listbox/style.css +6 -15
  79. package/dist/loading/style.css +6 -15
  80. package/dist/mega-menu/style.css +6 -15
  81. package/dist/mentions/style.css +6 -15
  82. package/dist/menu/style.css +6 -15
  83. package/dist/menubar/index.js +1 -1
  84. package/dist/menubar/style.css +7 -16
  85. package/dist/message/style.css +6 -15
  86. package/dist/meter-group/style.css +6 -15
  87. package/dist/order-list/style.css +6 -15
  88. package/dist/page/style.css +6 -15
  89. package/dist/pagination/style.css +6 -15
  90. package/dist/panel/style.css +6 -15
  91. package/dist/pick-list/style.css +6 -15
  92. package/dist/popover/style.css +6 -15
  93. package/dist/progress-bar/style.css +6 -15
  94. package/dist/progress-spinner/style.css +6 -15
  95. package/dist/qr-code/style.css +6 -15
  96. package/dist/radio/style.css +6 -15
  97. package/dist/rating/style.css +6 -15
  98. package/dist/resolver.js +1 -1
  99. package/dist/result/style.css +6 -15
  100. package/dist/scroll-top/style.css +6 -15
  101. package/dist/scrollbar/style.css +6 -15
  102. package/dist/segmented/style.css +6 -15
  103. package/dist/select/style.css +6 -15
  104. package/dist/select-button/style.css +6 -15
  105. package/dist/sidebar/style.css +6 -15
  106. package/dist/skeleton/style.css +6 -15
  107. package/dist/slider/style.css +6 -15
  108. package/dist/space/style.css +6 -15
  109. package/dist/speed-dial/style.css +6 -15
  110. package/dist/split-button/style.css +6 -15
  111. package/dist/splitter/style.css +6 -15
  112. package/dist/statistic/style.css +6 -15
  113. package/dist/status/style.css +6 -15
  114. package/dist/stepper/style.css +6 -15
  115. package/dist/styles/base.css +6 -15
  116. package/dist/styles.css +1 -1
  117. package/dist/switch/style.css +6 -15
  118. package/dist/table/style.css +6 -15
  119. package/dist/tabs/style.css +6 -15
  120. package/dist/tag/style.css +6 -15
  121. package/dist/terminal/style.css +6 -15
  122. package/dist/textarea/style.css +6 -15
  123. package/dist/tiered-menu/style.css +8 -17
  124. package/dist/time-picker/style.css +6 -15
  125. package/dist/timeline/style.css +6 -15
  126. package/dist/toast/style.css +6 -15
  127. package/dist/toggle-button/style.css +6 -15
  128. package/dist/toolbar/style.css +6 -15
  129. package/dist/tooltip/style.css +6 -15
  130. package/dist/tour/style.css +6 -15
  131. package/dist/tree/style.css +6 -15
  132. package/dist/tree-select/style.css +6 -15
  133. package/dist/typography/style.css +6 -15
  134. package/dist/virtual-scroller/style.css +6 -15
  135. package/dist/watermark/style.css +6 -15
  136. package/package.json +8 -8
  137. package/dist/components/InputColor/InputColor.vue.d.ts +0 -24
  138. package/dist/components/InputColor/InputColor.vue.d.ts.map +0 -1
  139. package/dist/components/InputColor/index.d.ts +0 -3
  140. package/dist/components/InputColor/index.d.ts.map +0 -1
  141. package/dist/components/InputColor/styles.css +0 -139
  142. package/dist/components/InputColor/types.d.ts +0 -19
  143. package/dist/components/InputColor/types.d.ts.map +0 -1
  144. package/dist/input-color/index.js +0 -118
  145. package/dist/input-color/style.js +0 -3
@@ -405,7 +405,7 @@
405
405
 
406
406
  :root {
407
407
  /* Shared minimum width for menu-like panels (select/orderlist/picklist) */
408
- --m-menu-min-width: 12rem;
408
+ --m-overlay-menu-min-width: 12rem;
409
409
  }
410
410
 
411
411
  .m-button,
@@ -463,7 +463,7 @@
463
463
  .m-progress-spinner,
464
464
  .m-cascadeselect,
465
465
  .m-treeselect,
466
- .m-inputcolor,
466
+ .m-colorpicker,
467
467
  .m-inputtags,
468
468
  .m-label,
469
469
  .m-speeddial,
@@ -489,8 +489,7 @@
489
489
  .m-password__input:disabled,
490
490
  .m-inputnumber__input:disabled,
491
491
  .m-inputotp__input:disabled,
492
- .m-inputcolor__text:disabled,
493
- .m-inputcolor__swatch:disabled,
492
+ .m-colorpicker__trigger:disabled,
494
493
  .m-inputtags--disabled {
495
494
  background-color: var(--m-color-bg-disabled);
496
495
  color: var(--m-color-text-disabled);
@@ -513,8 +512,7 @@
513
512
  .m-textarea::placeholder,
514
513
  .m-password__input::placeholder,
515
514
  .m-inputnumber__input::placeholder,
516
- .m-inputtags__input::placeholder,
517
- .m-inputcolor__text::placeholder {
515
+ .m-inputtags__input::placeholder {
518
516
  color: var(--m-color-text-muted);
519
517
  opacity: 1;
520
518
  }
@@ -858,9 +856,7 @@
858
856
  font-family: var(--m-font-sans);
859
857
  gap: var(--m-space-2);
860
858
  max-width: 100%;
861
- min-width: var(--m-menu-min-width);
862
859
  position: relative;
863
- width: fit-content;
864
860
  }
865
861
 
866
862
  .m-textarea-field--fluid,
@@ -1051,7 +1047,7 @@
1051
1047
  flex: 1;
1052
1048
  max-height: 16rem;
1053
1049
  min-height: 12rem;
1054
- min-width: var(--m-menu-min-width);
1050
+ min-width: var(--m-overlay-menu-min-width);
1055
1051
  }
1056
1052
 
1057
1053
  .m-orderlist__list,
@@ -1119,7 +1115,6 @@
1119
1115
  .m-cascadeselect__trigger:hover:not(:disabled):not(:focus):not(:focus-visible),
1120
1116
  .m-treeselect:not(.m-treeselect--open)
1121
1117
  .m-treeselect__trigger:hover:not(:disabled):not(:focus):not(:focus-visible),
1122
- .m-inputcolor__text:hover:not(:disabled):not(:focus),
1123
1118
  .m-inputtags:hover:not(.m-inputtags--disabled):not(:focus-within),
1124
1119
  .m-togglebutton:hover:not(:disabled):not(.m-togglebutton--checked):not(:focus-visible),
1125
1120
  .m-inplace__display:hover:not(:focus-visible) {
@@ -1134,8 +1129,6 @@
1134
1129
  .m-treeselect--open .m-treeselect__trigger,
1135
1130
  .m-treeselect__trigger:focus,
1136
1131
  .m-treeselect__trigger:focus-visible,
1137
- .m-inputcolor__text:focus,
1138
- .m-inputcolor__text:focus-visible,
1139
1132
  .m-inputtags:focus-within,
1140
1133
  .m-togglebutton:focus-visible,
1141
1134
  .m-selectbutton__button:focus-visible,
@@ -1150,9 +1143,7 @@
1150
1143
 
1151
1144
  .m-inputotp--invalid .m-inputotp__input:focus,
1152
1145
  .m-inputotp--invalid .m-inputotp__input:focus-visible,
1153
- .m-inputtags--invalid:focus-within,
1154
- .m-inputcolor--invalid .m-inputcolor__text:focus,
1155
- .m-inputcolor--invalid .m-inputcolor__text:focus-visible {
1146
+ .m-inputtags--invalid:focus-within {
1156
1147
  border-color: var(--m-color-danger);
1157
1148
  box-shadow: var(--m-focus-shadow-danger);
1158
1149
  }
@@ -1206,55 +1197,338 @@
1206
1197
  animation: none !important;
1207
1198
  }
1208
1199
 
1209
- /* --- Form: InputColor --- */
1210
- .m-inputcolor-field {
1200
+ .m-icon {
1201
+ color: currentColor;
1202
+ display: inline-flex;
1203
+ flex-shrink: 0;
1204
+ height: 1rem;
1205
+ line-height: 0;
1206
+ vertical-align: middle;
1207
+ width: 1rem;
1208
+ }
1209
+
1210
+ .m-icon svg {
1211
+ display: block;
1212
+ height: 100%;
1213
+ width: 100%;
1214
+ }
1215
+
1216
+ .m-icon--sm,
1217
+ .m-icon--small {
1218
+ height: 0.875rem;
1219
+ width: 0.875rem;
1220
+ }
1221
+
1222
+ .m-icon--md,
1223
+ .m-icon--normal {
1224
+ height: 1rem;
1225
+ width: 1rem;
1226
+ }
1227
+
1228
+ .m-icon--lg,
1229
+ .m-icon--large {
1230
+ height: 1.25rem;
1231
+ width: 1.25rem;
1232
+ }
1233
+
1234
+ .m-icon--spin svg {
1235
+ animation: m-icon-spin var(--m-motion-spin-fast) linear infinite;
1236
+ }
1237
+
1238
+ @keyframes m-icon-spin {
1239
+ to {
1240
+ transform: rotate(360deg);
1241
+ }
1242
+ }
1243
+
1244
+ :root[data-m-motion='none'] .m-icon--spin svg,
1245
+ :root[data-m-motion='reduced'] .m-icon--spin svg {
1246
+ animation: none;
1247
+ }
1248
+
1249
+ .m-input:hover:not(:disabled):not(:focus):not(.m-input--invalid):not(
1250
+ .m-input--warning
1251
+ ) {
1252
+ border-color: var(--m-color-primary-hover);
1253
+ }
1254
+
1255
+ /* Outlined active state: border color + soft control-outline shadow */
1256
+ .m-input:focus,
1257
+ .m-input:focus-visible {
1258
+ border-color: var(--m-color-primary);
1259
+ box-shadow: var(--m-focus-shadow);
1260
+ outline: 0;
1261
+ }
1262
+
1263
+ .m-input--invalid:hover:not(:disabled):not(:focus) {
1264
+ border-color: var(--m-color-danger);
1265
+ }
1266
+
1267
+ .m-input--invalid:focus,
1268
+ .m-input--invalid:focus-visible {
1269
+ border-color: var(--m-color-danger);
1270
+ box-shadow: var(--m-focus-shadow-danger);
1271
+ outline: 0;
1272
+ }
1273
+
1274
+ .m-input--warning:hover:not(:disabled):not(:focus) {
1275
+ border-color: var(--m-color-warning);
1276
+ }
1277
+
1278
+ .m-input--warning:focus,
1279
+ .m-input--warning:focus-visible {
1280
+ border-color: var(--m-color-warning);
1281
+ box-shadow: var(--m-focus-shadow-warning);
1282
+ outline: 0;
1283
+ }
1284
+
1285
+ .m-input-field {
1211
1286
  display: grid;
1212
1287
  gap: var(--m-space-2);
1213
1288
  }
1214
1289
 
1215
- .m-inputcolor-field__label {
1290
+ .m-input-field--fluid {
1291
+ width: 100%;
1292
+ }
1293
+
1294
+ .m-input-field__label {
1216
1295
  color: var(--m-color-text);
1217
1296
  font-family: var(--m-font-sans);
1218
1297
  font-size: var(--m-font-size-md);
1219
1298
  font-weight: 500;
1220
1299
  }
1221
1300
 
1222
- .m-inputcolor {
1223
- --m-inputcolor-text-min-width: 7rem;
1224
- --m-inputcolor-preset-size: 1.25rem;
1225
- display: inline-flex;
1226
- flex-direction: column;
1227
- gap: var(--m-space-2);
1301
+ .m-input-field__help {
1302
+ color: var(--m-color-text-muted);
1303
+ font-size: var(--m-font-size-xs);
1228
1304
  }
1229
1305
 
1230
- .m-inputcolor--disabled {
1231
- cursor: not-allowed;
1232
- opacity: var(--m-opacity-disabled);
1306
+ .m-input-field__help--invalid {
1307
+ color: var(--m-color-danger);
1233
1308
  }
1234
1309
 
1235
- .m-inputcolor__swatch {
1236
- background: transparent;
1310
+ .m-input-field__control {
1311
+ position: relative;
1312
+ }
1313
+
1314
+ /*
1315
+ * Affix/clear shell: prefix/suffix participate in flex flow so long slot
1316
+ * content reserves real width instead of fighting fixed input padding.
1317
+ */
1318
+ .m-input-field__control--prefixed,
1319
+ .m-input-field__control--suffixed,
1320
+ .m-input-field__control--clearable {
1321
+ align-items: center;
1322
+ background: var(--m-color-surface);
1237
1323
  border: var(--m-border-width) solid var(--m-color-border);
1238
1324
  border-radius: var(--m-radius-control);
1239
- cursor: pointer;
1240
- height: var(--m-control-height-medium);
1241
- padding: 0;
1325
+ box-sizing: border-box;
1326
+ display: flex;
1327
+ max-width: 100%;
1328
+ min-height: var(--m-control-height-medium);
1242
1329
  transition:
1243
1330
  border-color var(--m-motion-fast) var(--m-motion-ease),
1244
1331
  box-shadow var(--m-motion-fast) var(--m-motion-ease),
1245
- opacity var(--m-motion-fast) var(--m-motion-ease);
1246
- width: var(--m-control-height-medium);
1332
+ background-color var(--m-motion-fast) var(--m-motion-ease);
1333
+ }
1334
+
1335
+ .m-input-field--fluid .m-input-field__control--prefixed,
1336
+ .m-input-field--fluid .m-input-field__control--suffixed,
1337
+ .m-input-field--fluid .m-input-field__control--clearable {
1338
+ width: 100%;
1339
+ }
1340
+
1341
+ .m-input-field__control--prefixed:has(.m-input--small),
1342
+ .m-input-field__control--suffixed:has(.m-input--small),
1343
+ .m-input-field__control--clearable:has(.m-input--small),
1344
+ .m-input-field__control--prefixed:has(.m-input--sm),
1345
+ .m-input-field__control--suffixed:has(.m-input--sm),
1346
+ .m-input-field__control--clearable:has(.m-input--sm) {
1347
+ min-height: var(--m-control-height-small);
1348
+ }
1349
+
1350
+ .m-input-field__control--prefixed:has(.m-input--large),
1351
+ .m-input-field__control--suffixed:has(.m-input--large),
1352
+ .m-input-field__control--clearable:has(.m-input--large),
1353
+ .m-input-field__control--prefixed:has(.m-input--lg),
1354
+ .m-input-field__control--suffixed:has(.m-input--lg),
1355
+ .m-input-field__control--clearable:has(.m-input--lg) {
1356
+ min-height: var(--m-control-height-large);
1357
+ }
1358
+
1359
+ .m-input-field__control--prefixed:has(.m-input--filled),
1360
+ .m-input-field__control--suffixed:has(.m-input--filled),
1361
+ .m-input-field__control--clearable:has(.m-input--filled) {
1362
+ background: color-mix(
1363
+ in srgb,
1364
+ var(--m-color-text-muted) 12%,
1365
+ var(--m-color-surface)
1366
+ );
1367
+ border-color: transparent;
1368
+ }
1369
+
1370
+ .m-input-field__control--prefixed:has(.m-input--invalid),
1371
+ .m-input-field__control--suffixed:has(.m-input--invalid),
1372
+ .m-input-field__control--clearable:has(.m-input--invalid) {
1373
+ border-color: var(--m-color-danger);
1374
+ }
1375
+
1376
+ .m-input-field__control--prefixed:has(.m-input--warning),
1377
+ .m-input-field__control--suffixed:has(.m-input--warning),
1378
+ .m-input-field__control--clearable:has(.m-input--warning) {
1379
+ border-color: var(--m-color-warning);
1380
+ }
1381
+
1382
+ .m-input-field__control--prefixed:hover:not(:focus-within):has(
1383
+ .m-input:not(:disabled)
1384
+ ),
1385
+ .m-input-field__control--suffixed:hover:not(:focus-within):has(
1386
+ .m-input:not(:disabled)
1387
+ ),
1388
+ .m-input-field__control--clearable:hover:not(:focus-within):has(
1389
+ .m-input:not(:disabled)
1390
+ ) {
1391
+ border-color: var(--m-color-primary-hover);
1392
+ }
1393
+
1394
+ .m-input-field__control--prefixed:focus-within,
1395
+ .m-input-field__control--suffixed:focus-within,
1396
+ .m-input-field__control--clearable:focus-within {
1397
+ border-color: var(--m-color-primary);
1398
+ box-shadow: var(--m-focus-shadow);
1399
+ }
1400
+
1401
+ .m-input-field__control--prefixed:has(.m-input--invalid):focus-within,
1402
+ .m-input-field__control--suffixed:has(.m-input--invalid):focus-within,
1403
+ .m-input-field__control--clearable:has(.m-input--invalid):focus-within {
1404
+ border-color: var(--m-color-danger);
1405
+ box-shadow: var(--m-focus-shadow-danger);
1406
+ }
1407
+
1408
+ .m-input-field__control--prefixed:has(.m-input--warning):focus-within,
1409
+ .m-input-field__control--suffixed:has(.m-input--warning):focus-within,
1410
+ .m-input-field__control--clearable:has(.m-input--warning):focus-within {
1411
+ border-color: var(--m-color-warning);
1412
+ box-shadow: var(--m-focus-shadow-warning);
1413
+ }
1414
+
1415
+ .m-input-field__control--prefixed:has(.m-input:disabled),
1416
+ .m-input-field__control--suffixed:has(.m-input:disabled),
1417
+ .m-input-field__control--clearable:has(.m-input:disabled) {
1418
+ background-color: var(--m-color-bg-disabled);
1419
+ color: var(--m-color-text-disabled);
1420
+ cursor: not-allowed;
1421
+ opacity: 1;
1422
+ }
1423
+
1424
+ .m-input-field__control--prefixed .m-input,
1425
+ .m-input-field__control--suffixed .m-input,
1426
+ .m-input-field__control--clearable .m-input {
1427
+ background: transparent;
1428
+ border: 0;
1429
+ border-radius: 0;
1430
+ box-shadow: none;
1431
+ flex: 1 1 auto;
1432
+ height: calc(var(--m-control-height-medium) - 2 * var(--m-border-width));
1433
+ line-height: calc(var(--m-control-height-medium) - 2 * var(--m-border-width));
1434
+ min-height: 0;
1435
+ min-width: 0;
1436
+ width: auto;
1437
+ }
1438
+
1439
+ .m-input-field__control--prefixed:has(.m-input--small) .m-input,
1440
+ .m-input-field__control--suffixed:has(.m-input--small) .m-input,
1441
+ .m-input-field__control--clearable:has(.m-input--small) .m-input,
1442
+ .m-input-field__control--prefixed:has(.m-input--sm) .m-input,
1443
+ .m-input-field__control--suffixed:has(.m-input--sm) .m-input,
1444
+ .m-input-field__control--clearable:has(.m-input--sm) .m-input {
1445
+ height: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1446
+ line-height: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1447
+ }
1448
+
1449
+ .m-input-field__control--prefixed:has(.m-input--large) .m-input,
1450
+ .m-input-field__control--suffixed:has(.m-input--large) .m-input,
1451
+ .m-input-field__control--clearable:has(.m-input--large) .m-input,
1452
+ .m-input-field__control--prefixed:has(.m-input--lg) .m-input,
1453
+ .m-input-field__control--suffixed:has(.m-input--lg) .m-input,
1454
+ .m-input-field__control--clearable:has(.m-input--lg) .m-input {
1455
+ height: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1456
+ line-height: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1457
+ }
1458
+
1459
+ .m-input-field__control--prefixed .m-input:hover:not(:disabled):not(:focus),
1460
+ .m-input-field__control--suffixed .m-input:hover:not(:disabled):not(:focus),
1461
+ .m-input-field__control--clearable .m-input:hover:not(:disabled):not(:focus),
1462
+ .m-input-field__control--prefixed .m-input:focus-visible,
1463
+ .m-input-field__control--suffixed .m-input:focus-visible,
1464
+ .m-input-field__control--clearable .m-input:focus-visible,
1465
+ .m-input-field__control--prefixed .m-input--invalid:focus-visible,
1466
+ .m-input-field__control--suffixed .m-input--invalid:focus-visible,
1467
+ .m-input-field__control--clearable .m-input--invalid:focus-visible {
1468
+ border-color: transparent;
1469
+ box-shadow: none;
1247
1470
  }
1248
1471
 
1249
- .m-inputcolor__text {
1472
+ .m-input-field__control--prefixed .m-input {
1473
+ padding-left: 0;
1474
+ }
1475
+
1476
+ .m-input-field__control--suffixed .m-input,
1477
+ .m-input-field__control--clearable.m-input-field__control--suffixed .m-input {
1478
+ padding-right: 0;
1479
+ }
1480
+
1481
+ .m-input__prefix,
1482
+ .m-input__suffix {
1483
+ align-items: center;
1484
+ color: var(--m-color-text-muted);
1485
+ display: inline-flex;
1486
+ flex: 0 0 auto;
1487
+ font-size: inherit;
1488
+ gap: var(--m-space-1);
1489
+ line-height: 1;
1490
+ padding-inline: var(--m-space-2);
1491
+ pointer-events: none;
1492
+ white-space: nowrap;
1493
+ }
1494
+
1495
+ .m-input-field__control--prefixed .m-input__prefix,
1496
+ .m-input-field__control--suffixed .m-input__suffix {
1497
+ font-size: var(--m-control-font-medium);
1498
+ }
1499
+
1500
+ .m-input-field__control:has(.m-input--small) .m-input__prefix,
1501
+ .m-input-field__control:has(.m-input--small) .m-input__suffix,
1502
+ .m-input-field__control:has(.m-input--sm) .m-input__prefix,
1503
+ .m-input-field__control:has(.m-input--sm) .m-input__suffix {
1504
+ font-size: var(--m-control-font-small);
1505
+ padding-inline: var(--m-space-2);
1506
+ }
1507
+
1508
+ .m-input-field__control:has(.m-input--large) .m-input__prefix,
1509
+ .m-input-field__control:has(.m-input--large) .m-input__suffix,
1510
+ .m-input-field__control:has(.m-input--lg) .m-input__prefix,
1511
+ .m-input-field__control:has(.m-input--lg) .m-input__suffix {
1512
+ font-size: var(--m-control-font-large);
1513
+ padding-inline: var(--m-space-3);
1514
+ }
1515
+
1516
+ .m-input__prefix button,
1517
+ .m-input__suffix button,
1518
+ .m-input__prefix a,
1519
+ .m-input__suffix a {
1520
+ pointer-events: auto;
1521
+ }
1522
+
1523
+ .m-input {
1250
1524
  background: var(--m-color-surface);
1251
1525
  border: var(--m-border-width) solid var(--m-color-border);
1252
1526
  border-radius: var(--m-radius-control);
1253
1527
  color: var(--m-color-text);
1254
1528
  font-family: var(--m-font-sans);
1255
1529
  font-size: var(--m-control-font-medium);
1530
+ line-height: calc(var(--m-control-height-medium) - 2 * var(--m-border-width));
1256
1531
  min-height: var(--m-control-height-medium);
1257
- min-width: var(--m-inputcolor-text-min-width);
1258
1532
  padding: 0 var(--m-control-padding-x-medium);
1259
1533
  transition:
1260
1534
  border-color var(--m-motion-fast) var(--m-motion-ease),
@@ -1263,85 +1537,1134 @@
1263
1537
  opacity var(--m-motion-fast) var(--m-motion-ease);
1264
1538
  }
1265
1539
 
1266
- .m-inputcolor__text:hover:not(:disabled):not(:focus),
1267
- .m-inputcolor__swatch:hover:not(:disabled):not(:focus) {
1268
- border-color: var(--m-color-primary-hover);
1540
+ .m-input--filled {
1541
+ background: color-mix(
1542
+ in srgb,
1543
+ var(--m-color-text-muted) 12%,
1544
+ var(--m-color-surface)
1545
+ );
1546
+ border-color: transparent;
1269
1547
  }
1270
1548
 
1271
- .m-inputcolor__text:focus,
1272
- .m-inputcolor__text:focus-visible,
1273
- .m-inputcolor__swatch:focus,
1274
- .m-inputcolor__swatch:focus-visible {
1275
- border-color: var(--m-color-primary);
1276
- box-shadow: var(--m-focus-shadow);
1277
- outline: none;
1549
+ .m-input--fluid {
1550
+ width: 100%;
1551
+ }
1552
+
1553
+ .m-input--invalid {
1554
+ border-color: var(--m-color-danger);
1555
+ }
1556
+
1557
+ .m-input--warning {
1558
+ border-color: var(--m-color-warning);
1559
+ }
1560
+
1561
+ .m-input--small,
1562
+ .m-input--sm {
1563
+ font-size: var(--m-control-font-small);
1564
+ line-height: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1565
+ min-height: var(--m-control-height-small);
1566
+ padding: 0 var(--m-control-padding-x-small);
1567
+ }
1568
+
1569
+ .m-input--normal {
1570
+ font-size: var(--m-control-font-medium);
1571
+ line-height: calc(var(--m-control-height-medium) - 2 * var(--m-border-width));
1572
+ min-height: var(--m-control-height-medium);
1573
+ padding: 0 var(--m-control-padding-x-medium);
1574
+ }
1575
+
1576
+ .m-input--large,
1577
+ .m-input--lg {
1578
+ font-size: var(--m-control-font-large);
1579
+ line-height: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1580
+ min-height: var(--m-control-height-large);
1581
+ padding: 0 var(--m-control-padding-x-large);
1278
1582
  }
1279
1583
 
1280
- .m-inputcolor__row {
1584
+ .m-input-field__control .m-input {
1585
+ width: 100%;
1586
+ }
1587
+
1588
+ .m-input-field__control--prefixed .m-input,
1589
+ .m-input-field__control--suffixed .m-input,
1590
+ .m-input-field__control--clearable .m-input {
1591
+ width: auto;
1592
+ }
1593
+
1594
+ .m-input__clear {
1281
1595
  align-items: center;
1596
+ align-self: center;
1597
+ background: transparent;
1598
+ border: 0;
1599
+ border-radius: var(--m-radius-sm);
1600
+ color: var(--m-color-text-muted);
1601
+ cursor: pointer;
1282
1602
  display: flex;
1603
+ flex: 0 0 auto;
1604
+ font-size: var(--m-font-size-lg);
1605
+ height: min(
1606
+ var(--m-control-affix-size),
1607
+ calc(var(--m-control-height-medium) - 2 * var(--m-border-width))
1608
+ );
1609
+ justify-content: center;
1610
+ max-height: 100%;
1611
+ padding: 0;
1612
+ width: min(
1613
+ var(--m-control-affix-size),
1614
+ calc(var(--m-control-height-medium) - 2 * var(--m-border-width))
1615
+ );
1616
+ }
1617
+
1618
+ .m-input-field__control:has(.m-input--small) .m-input__clear {
1619
+ height: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1620
+ width: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1621
+ }
1622
+
1623
+ .m-input-field__control:has(.m-input--large) .m-input__clear {
1624
+ height: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1625
+ width: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1626
+ }
1627
+
1628
+ .m-input__clear:hover:not(:disabled) {
1629
+ color: var(--m-color-text);
1630
+ }
1631
+
1632
+ .m-input__clear:focus-visible {
1633
+ box-shadow: var(--m-focus-shadow);
1634
+ outline: none;
1635
+ }
1636
+
1637
+ .m-input__clear:disabled {
1638
+ cursor: not-allowed;
1639
+ opacity: var(--m-opacity-disabled);
1640
+ }
1641
+
1642
+ /* --- Form: InputNumber --- */
1643
+ .m-inputnumber-field {
1644
+ display: grid;
1283
1645
  gap: var(--m-space-2);
1284
1646
  }
1285
1647
 
1286
- .m-inputcolor__swatches {
1648
+ .m-inputnumber-field--fluid {
1649
+ width: 100%;
1650
+ }
1651
+
1652
+ .m-inputnumber-field__label {
1653
+ color: var(--m-color-text);
1654
+ font-family: var(--m-font-sans);
1655
+ font-size: var(--m-font-size-md);
1656
+ font-weight: 500;
1657
+ }
1658
+
1659
+ .m-inputnumber-field__help {
1660
+ color: var(--m-color-text-muted);
1661
+ font-size: var(--m-font-size-xs);
1662
+ }
1663
+
1664
+ .m-inputnumber-field__help--invalid {
1665
+ color: var(--m-color-danger);
1666
+ }
1667
+
1668
+ .m-inputnumber {
1669
+ --m-inputnumber-width: 8rem;
1670
+ --m-inputnumber-stack-button-padding-x: var(--m-space-2);
1671
+ align-items: stretch;
1672
+ display: inline-flex;
1673
+ max-width: 100%;
1674
+ }
1675
+
1676
+ .m-inputnumber--fluid {
1287
1677
  display: flex;
1288
- flex-wrap: wrap;
1289
- gap: var(--m-space-1);
1290
- margin-top: var(--m-space-2);
1678
+ width: 100%;
1291
1679
  }
1292
1680
 
1293
- .m-inputcolor__preset {
1681
+ .m-inputnumber__input-wrap {
1682
+ align-items: center;
1683
+ background: var(--m-color-surface);
1294
1684
  border: var(--m-border-width) solid var(--m-color-border);
1295
- border-radius: var(--m-radius-sm);
1296
- cursor: pointer;
1297
- height: var(--m-inputcolor-preset-size);
1298
- padding: 0;
1685
+ border-radius: var(--m-radius-control);
1686
+ box-sizing: border-box;
1687
+ display: flex;
1688
+ max-width: 100%;
1689
+ min-height: var(--m-control-height-medium);
1299
1690
  transition:
1300
1691
  border-color var(--m-motion-fast) var(--m-motion-ease),
1301
1692
  box-shadow var(--m-motion-fast) var(--m-motion-ease);
1302
- width: var(--m-inputcolor-preset-size);
1693
+ width: var(--m-inputnumber-width);
1694
+ }
1695
+
1696
+ .m-inputnumber--fluid .m-inputnumber__input-wrap {
1697
+ flex: 1 1 auto;
1698
+ min-width: 0;
1699
+ width: auto;
1303
1700
  }
1304
1701
 
1305
- .m-inputcolor__preset:hover:not(:disabled) {
1702
+ .m-inputnumber__input-wrap:hover:has(.m-inputnumber__input:not(:disabled)):not(
1703
+ :focus-within
1704
+ ) {
1306
1705
  border-color: var(--m-color-primary-hover);
1307
1706
  }
1308
1707
 
1309
- .m-inputcolor__preset:focus-visible {
1708
+ .m-inputnumber__input-wrap:focus-within {
1709
+ border-color: var(--m-color-primary);
1310
1710
  box-shadow: var(--m-focus-shadow);
1311
- outline: none;
1312
1711
  }
1313
1712
 
1314
- .m-inputcolor--small .m-inputcolor__swatch,
1315
- .m-inputcolor--small .m-inputcolor__text {
1316
- min-height: var(--m-control-height-small);
1317
- height: var(--m-control-height-small);
1318
- font-size: var(--m-control-font-small);
1713
+ .m-inputnumber--invalid .m-inputnumber__input-wrap {
1714
+ border-color: var(--m-color-danger);
1319
1715
  }
1320
1716
 
1321
- .m-inputcolor--small .m-inputcolor__swatch {
1322
- width: var(--m-control-height-small);
1717
+ .m-inputnumber--invalid .m-inputnumber__input-wrap:focus-within {
1718
+ border-color: var(--m-color-danger);
1719
+ box-shadow: var(--m-focus-shadow-danger);
1323
1720
  }
1324
1721
 
1325
- .m-inputcolor--large .m-inputcolor__swatch,
1326
- .m-inputcolor--large .m-inputcolor__text {
1327
- min-height: var(--m-control-height-large);
1328
- height: var(--m-control-height-large);
1329
- font-size: var(--m-control-font-large);
1722
+ .m-inputnumber--buttons .m-inputnumber__input-wrap {
1723
+ border-radius: 0;
1330
1724
  }
1331
1725
 
1332
- .m-inputcolor--large .m-inputcolor__swatch {
1333
- width: var(--m-control-height-large);
1726
+ .m-inputnumber--buttons-right .m-inputnumber__input-wrap {
1727
+ border-radius: var(--m-radius-control) 0 0 var(--m-radius-control);
1728
+ border-right: 0;
1334
1729
  }
1335
1730
 
1336
- .m-inputcolor--invalid .m-inputcolor__text,
1337
- .m-inputcolor--invalid .m-inputcolor__swatch {
1338
- border-color: var(--m-color-danger);
1731
+ .m-inputnumber__prefix,
1732
+ .m-inputnumber__suffix {
1733
+ align-items: center;
1734
+ color: var(--m-color-text-muted);
1735
+ display: inline-flex;
1736
+ flex: 0 0 auto;
1737
+ padding-inline: var(--m-space-2);
1738
+ white-space: nowrap;
1339
1739
  }
1340
1740
 
1341
- .m-inputcolor--invalid .m-inputcolor__text:focus,
1342
- .m-inputcolor--invalid .m-inputcolor__text:focus-visible,
1343
- .m-inputcolor--invalid .m-inputcolor__swatch:focus,
1344
- .m-inputcolor--invalid .m-inputcolor__swatch:focus-visible {
1345
- border-color: var(--m-color-danger);
1346
- box-shadow: var(--m-focus-shadow-danger);
1741
+ .m-inputnumber__input {
1742
+ background: transparent;
1743
+ border: 0;
1744
+ border-radius: 0;
1745
+ box-shadow: none;
1746
+ color: var(--m-color-text);
1747
+ flex: 1 1 auto;
1748
+ font-family: var(--m-font-sans);
1749
+ font-size: var(--m-control-font-medium);
1750
+ height: calc(var(--m-control-height-medium) - 2 * var(--m-border-width));
1751
+ line-height: calc(var(--m-control-height-medium) - 2 * var(--m-border-width));
1752
+ min-height: 0;
1753
+ min-width: 0;
1754
+ padding: 0 var(--m-control-padding-x-medium);
1755
+ width: 100%;
1756
+ }
1757
+
1758
+ .m-inputnumber__input-wrap:has(.m-inputnumber__prefix) .m-inputnumber__input {
1759
+ padding-left: 0;
1760
+ }
1761
+
1762
+ .m-inputnumber__input-wrap:has(.m-inputnumber__suffix) .m-inputnumber__input {
1763
+ padding-right: 0;
1764
+ }
1765
+
1766
+ .m-inputnumber__input:focus,
1767
+ .m-inputnumber__input:focus-visible {
1768
+ box-shadow: none;
1769
+ outline: none;
1770
+ }
1771
+
1772
+ .m-inputnumber__clear {
1773
+ align-items: center;
1774
+ align-self: center;
1775
+ background: transparent;
1776
+ border: 0;
1777
+ border-radius: var(--m-radius-sm);
1778
+ color: var(--m-color-text-muted);
1779
+ cursor: pointer;
1780
+ display: flex;
1781
+ flex: 0 0 auto;
1782
+ height: var(--m-control-affix-size);
1783
+ justify-content: center;
1784
+ padding: 0;
1785
+ width: var(--m-control-affix-size);
1786
+ }
1787
+
1788
+ .m-inputnumber__clear:hover:not(:disabled) {
1789
+ color: var(--m-color-text);
1790
+ }
1791
+
1792
+ .m-inputnumber__clear:focus-visible {
1793
+ box-shadow: var(--m-focus-shadow);
1794
+ outline: none;
1795
+ }
1796
+
1797
+ .m-inputnumber__clear:disabled {
1798
+ cursor: not-allowed;
1799
+ opacity: var(--m-opacity-disabled);
1800
+ }
1801
+
1802
+ .m-inputnumber--buttons .m-inputnumber__input {
1803
+ text-align: center;
1804
+ }
1805
+
1806
+ .m-inputnumber--small .m-inputnumber__input,
1807
+ .m-inputnumber--small .m-inputnumber__button {
1808
+ font-size: var(--m-control-font-small);
1809
+ min-height: var(--m-control-height-small);
1810
+ }
1811
+
1812
+ .m-inputnumber--small .m-inputnumber__input {
1813
+ height: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1814
+ line-height: calc(var(--m-control-height-small) - 2 * var(--m-border-width));
1815
+ min-height: 0;
1816
+ }
1817
+
1818
+ .m-inputnumber--small .m-inputnumber__input-wrap {
1819
+ min-height: var(--m-control-height-small);
1820
+ }
1821
+
1822
+ .m-inputnumber--small .m-inputnumber__prefix,
1823
+ .m-inputnumber--small .m-inputnumber__suffix {
1824
+ padding-inline: var(--m-space-2);
1825
+ }
1826
+
1827
+ .m-inputnumber--large .m-inputnumber__input,
1828
+ .m-inputnumber--large .m-inputnumber__button {
1829
+ font-size: var(--m-control-font-large);
1830
+ min-height: var(--m-control-height-large);
1831
+ }
1832
+
1833
+ .m-inputnumber--large .m-inputnumber__input {
1834
+ height: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1835
+ line-height: calc(var(--m-control-height-large) - 2 * var(--m-border-width));
1836
+ min-height: 0;
1837
+ }
1838
+
1839
+ .m-inputnumber--large .m-inputnumber__input-wrap {
1840
+ min-height: var(--m-control-height-large);
1841
+ }
1842
+
1843
+ .m-inputnumber--large .m-inputnumber__prefix,
1844
+ .m-inputnumber--large .m-inputnumber__suffix {
1845
+ padding-inline: var(--m-space-3);
1846
+ }
1847
+
1848
+ .m-inputnumber__button {
1849
+ align-items: center;
1850
+ background: color-mix(
1851
+ in srgb,
1852
+ var(--m-color-text-muted) 12%,
1853
+ var(--m-color-surface)
1854
+ );
1855
+ border: var(--m-border-width) solid var(--m-color-border);
1856
+ color: var(--m-color-text);
1857
+ cursor: pointer;
1858
+ display: inline-flex;
1859
+ font-family: var(--m-font-sans);
1860
+ font-size: var(--m-control-font-medium);
1861
+ justify-content: center;
1862
+ min-height: var(--m-control-height-medium);
1863
+ min-width: var(--m-control-height-medium);
1864
+ padding: 0;
1865
+ transition:
1866
+ background-color var(--m-motion-fast) var(--m-motion-ease),
1867
+ opacity var(--m-motion-fast) var(--m-motion-ease);
1868
+ }
1869
+
1870
+ .m-inputnumber__button--decrement {
1871
+ border-radius: var(--m-radius-control) 0 0 var(--m-radius-control);
1872
+ border-right: 0;
1873
+ }
1874
+
1875
+ .m-inputnumber__button--increment {
1876
+ border-left: 0;
1877
+ border-radius: 0 var(--m-radius-control) var(--m-radius-control) 0;
1878
+ }
1879
+
1880
+ /* Right-stacked buttons: only the outer corners keep radius, inner seams are square. */
1881
+ .m-inputnumber__stack {
1882
+ border: var(--m-border-width) solid var(--m-color-border);
1883
+ border-left: 0;
1884
+ border-radius: 0 var(--m-radius-control) var(--m-radius-control) 0;
1885
+ display: flex;
1886
+ flex-direction: column;
1887
+ overflow: hidden;
1888
+ }
1889
+
1890
+ .m-inputnumber__stack .m-inputnumber__button {
1891
+ border: 0;
1892
+ border-radius: 0;
1893
+ flex: 1 1 0;
1894
+ min-height: 0;
1895
+ min-width: 0;
1896
+ padding: 0 var(--m-inputnumber-stack-button-padding-x);
1897
+ }
1898
+
1899
+ .m-inputnumber__stack .m-inputnumber__button + .m-inputnumber__button {
1900
+ border-top: var(--m-border-width) solid var(--m-color-border);
1901
+ }
1902
+
1903
+ .m-inputnumber__button:hover:not(:disabled) {
1904
+ background: color-mix(
1905
+ in srgb,
1906
+ var(--m-color-text-muted) 20%,
1907
+ var(--m-color-surface)
1908
+ );
1909
+ }
1910
+
1911
+ .m-inputnumber__button:disabled,
1912
+ .m-inputnumber--disabled .m-inputnumber__input-wrap {
1913
+ cursor: not-allowed;
1914
+ opacity: var(--m-opacity-disabled);
1915
+ }
1916
+
1917
+ .m-inputnumber__button:focus-visible {
1918
+ box-shadow: var(--m-focus-shadow);
1919
+ outline: none;
1920
+ z-index: 1;
1921
+ }
1922
+
1923
+ /* —— Form: Segmented —— */
1924
+ .m-segmented {
1925
+ --m-segmented-track-padding: var(--m-space-1);
1926
+ background: color-mix(in srgb, var(--m-color-text-muted) 8%, var(--m-color-surface));
1927
+ border-radius: var(--m-radius-control);
1928
+ display: inline-flex;
1929
+ gap: 0;
1930
+ padding: var(--m-segmented-track-padding);
1931
+ position: relative;
1932
+ }
1933
+
1934
+ .m-segmented--block {
1935
+ display: flex;
1936
+ width: 100%;
1937
+ }
1938
+
1939
+ .m-segmented--round {
1940
+ border-radius: var(--m-radius-pill);
1941
+ }
1942
+
1943
+ .m-segmented--disabled {
1944
+ cursor: not-allowed;
1945
+ opacity: var(--m-opacity-disabled);
1946
+ pointer-events: none;
1947
+ }
1948
+
1949
+ .m-segmented__item {
1950
+ cursor: pointer;
1951
+ flex: 0 1 auto;
1952
+ margin: 0;
1953
+ min-width: 0;
1954
+ position: relative;
1955
+ }
1956
+
1957
+ .m-segmented--block .m-segmented__item {
1958
+ flex: 1 1 0;
1959
+ }
1960
+
1961
+ .m-segmented__input {
1962
+ height: 1px;
1963
+ margin: 0;
1964
+ opacity: 0;
1965
+ overflow: hidden;
1966
+ pointer-events: none;
1967
+ position: absolute;
1968
+ width: 1px;
1969
+ clip: rect(0, 0, 0, 0);
1970
+ }
1971
+
1972
+ .m-segmented__label {
1973
+ align-items: center;
1974
+ border-radius: calc(var(--m-radius-control) - var(--m-space-1));
1975
+ color: var(--m-color-text-muted);
1976
+ display: inline-flex;
1977
+ font-family: var(--m-font-sans);
1978
+ font-size: var(--m-control-font-medium);
1979
+ font-weight: 400;
1980
+ gap: var(--m-space-1);
1981
+ justify-content: center;
1982
+ line-height: 1.4;
1983
+ min-height: calc(var(--m-control-height-medium) - var(--m-segmented-track-padding) * 2);
1984
+ padding: 0 var(--m-space-3);
1985
+ transition:
1986
+ background-color var(--m-motion-fast) var(--m-motion-ease),
1987
+ box-shadow var(--m-motion-fast) var(--m-motion-ease),
1988
+ color var(--m-motion-fast) var(--m-motion-ease);
1989
+ user-select: none;
1990
+ white-space: nowrap;
1991
+ width: 100%;
1992
+ }
1993
+
1994
+ .m-segmented--round .m-segmented__label {
1995
+ border-radius: var(--m-radius-pill);
1996
+ }
1997
+
1998
+ .m-segmented__item--checked .m-segmented__label {
1999
+ background: var(--m-color-surface);
2000
+ box-shadow: var(--m-shadow-sm);
2001
+ color: var(--m-color-text);
2002
+ }
2003
+
2004
+ .m-segmented__item:not(.m-segmented__item--disabled):hover .m-segmented__label {
2005
+ color: var(--m-color-text);
2006
+ }
2007
+
2008
+ .m-segmented__item--disabled {
2009
+ cursor: not-allowed;
2010
+ }
2011
+
2012
+ .m-segmented__item--disabled .m-segmented__label {
2013
+ color: var(--m-color-text-disabled);
2014
+ }
2015
+
2016
+ .m-segmented__input:focus-visible + .m-segmented__label {
2017
+ box-shadow: var(--m-focus-shadow);
2018
+ outline: none;
2019
+ }
2020
+
2021
+ .m-segmented__icon {
2022
+ flex-shrink: 0;
2023
+ font-size: 1em;
2024
+ }
2025
+
2026
+ .m-segmented__text {
2027
+ overflow: hidden;
2028
+ text-overflow: ellipsis;
2029
+ }
2030
+
2031
+ .m-segmented--small .m-segmented__label {
2032
+ font-size: var(--m-control-font-small);
2033
+ min-height: calc(var(--m-control-height-small) - var(--m-segmented-track-padding) * 2);
2034
+ padding: 0 var(--m-space-2);
2035
+ }
2036
+
2037
+ .m-segmented--large .m-segmented__label {
2038
+ font-size: var(--m-control-font-large);
2039
+ min-height: calc(var(--m-control-height-large) - var(--m-segmented-track-padding) * 2);
2040
+ padding: 0 var(--m-space-4);
2041
+ }
2042
+
2043
+ .m-select__control {
2044
+ position: relative;
2045
+ width: 100%;
2046
+ }
2047
+
2048
+ .m-select {
2049
+ align-items: center;
2050
+ cursor: pointer;
2051
+ display: flex;
2052
+ font-family: var(--m-font-sans);
2053
+ font-size: var(--m-control-font-medium);
2054
+ min-height: var(--m-control-height-medium);
2055
+ padding: 0 var(--m-control-padding-x-medium);
2056
+ padding-right: var(--m-control-end-padding);
2057
+ position: relative;
2058
+ text-align: left;
2059
+ }
2060
+
2061
+ .m-select--small,
2062
+ .m-select--sm {
2063
+ font-size: var(--m-control-font-small);
2064
+ min-height: var(--m-control-height-small);
2065
+ padding-left: var(--m-control-padding-x-small);
2066
+ padding-right: var(--m-control-end-padding);
2067
+ }
2068
+
2069
+ .m-select--normal {
2070
+ font-size: var(--m-control-font-medium);
2071
+ min-height: var(--m-control-height-medium);
2072
+ }
2073
+
2074
+ .m-select--large,
2075
+ .m-select--lg {
2076
+ font-size: var(--m-control-font-large);
2077
+ min-height: var(--m-control-height-large);
2078
+ padding-left: var(--m-control-padding-x-large);
2079
+ padding-right: var(--m-control-end-padding);
2080
+ }
2081
+
2082
+ .m-select--multiple {
2083
+ align-items: center;
2084
+ gap: var(--m-space-1);
2085
+ padding-bottom: var(--m-space-1);
2086
+ padding-top: var(--m-space-1);
2087
+ }
2088
+
2089
+ .m-select__tags {
2090
+ display: flex;
2091
+ flex: 1 1 auto;
2092
+ flex-wrap: wrap;
2093
+ gap: var(--m-space-1);
2094
+ min-width: 0;
2095
+ }
2096
+
2097
+ .m-select__spinner {
2098
+ --m-select-spinner-size: 0.85rem;
2099
+ border: var(--m-border-width) solid
2100
+ color-mix(in srgb, var(--m-color-text-muted) 35%, transparent);
2101
+ border-radius: 50%;
2102
+ border-top-color: var(--m-color-primary);
2103
+ flex: 0 0 auto;
2104
+ height: var(--m-select-spinner-size);
2105
+ width: var(--m-select-spinner-size);
2106
+ animation: m-progress-spinner-rotate var(--m-motion-spin-medium) linear infinite;
2107
+ }
2108
+
2109
+ [data-m-motion="reduced"] .m-select__spinner {
2110
+ animation: none;
2111
+ border-top-color: var(--m-color-text-muted);
2112
+ }
2113
+
2114
+ .m-select:hover:not(:disabled):not(.m-select--disabled):not(
2115
+ .m-select--open
2116
+ ):not(:focus):not(.m-select--invalid):not(.m-select--warning) {
2117
+ border-color: var(--m-color-primary-hover);
2118
+ }
2119
+
2120
+ .m-select--open,
2121
+ .m-select:focus,
2122
+ .m-select:focus-visible {
2123
+ border-color: var(--m-color-primary);
2124
+ box-shadow: var(--m-focus-shadow);
2125
+ outline: 0;
2126
+ }
2127
+
2128
+ .m-select--placeholder .m-select__value {
2129
+ color: var(--m-color-text-muted);
2130
+ }
2131
+
2132
+ .m-select--filled {
2133
+ background: color-mix(
2134
+ in srgb,
2135
+ var(--m-color-text-muted) 12%,
2136
+ var(--m-color-surface)
2137
+ );
2138
+ border-color: transparent;
2139
+ }
2140
+
2141
+ .m-select__value {
2142
+ flex: 1 1 auto;
2143
+ min-width: 0;
2144
+ overflow: hidden;
2145
+ text-overflow: ellipsis;
2146
+ white-space: nowrap;
2147
+ }
2148
+
2149
+ .m-select__menu {
2150
+ --m-select-menu-max-height: min(18rem, 45vh);
2151
+ --m-select-list-max-height: var(--m-select-menu-max-height);
2152
+ display: flex;
2153
+ flex-direction: column;
2154
+ max-height: var(--m-select-menu-max-height);
2155
+ min-width: 100%;
2156
+ overscroll-behavior: contain;
2157
+ padding: var(--m-space-1);
2158
+ position: absolute;
2159
+ transform-origin: top center;
2160
+ width: max-content;
2161
+ }
2162
+
2163
+ .m-select__menu:has(.m-select__filter) {
2164
+ --m-select-list-max-height: calc(
2165
+ var(--m-select-menu-max-height) - var(--m-control-height-small) - var(--m-space-6)
2166
+ );
2167
+ }
2168
+
2169
+ .m-select__list {
2170
+ max-height: var(--m-select-list-max-height);
2171
+ min-height: 0;
2172
+ overscroll-behavior: contain;
2173
+ }
2174
+
2175
+ .m-select__menu--bottom-start {
2176
+ left: 0;
2177
+ transform-origin: top left;
2178
+ }
2179
+
2180
+ .m-select__menu--bottom-end {
2181
+ right: 0;
2182
+ transform-origin: top right;
2183
+ }
2184
+
2185
+ .m-select__required-input {
2186
+ clip: rect(0, 0, 0, 0);
2187
+ clip-path: inset(50%);
2188
+ height: 1px;
2189
+ margin: -1px;
2190
+ overflow: hidden;
2191
+ opacity: 0;
2192
+ pointer-events: none;
2193
+ position: absolute;
2194
+ white-space: nowrap;
2195
+ width: 1px;
2196
+ }
2197
+
2198
+ .m-select--invalid {
2199
+ border-color: var(--m-color-danger);
2200
+ }
2201
+
2202
+ .m-select--warning {
2203
+ border-color: var(--m-color-warning);
2204
+ }
2205
+
2206
+ .m-select--invalid:focus,
2207
+ .m-select--invalid:focus-visible,
2208
+ .m-select--invalid.m-select--open {
2209
+ border-color: var(--m-color-danger);
2210
+ box-shadow: var(--m-focus-shadow-danger);
2211
+ outline: 0;
2212
+ }
2213
+
2214
+ .m-select--warning:focus,
2215
+ .m-select--warning:focus-visible,
2216
+ .m-select--warning.m-select--open {
2217
+ border-color: var(--m-color-warning);
2218
+ box-shadow: var(--m-focus-shadow-warning);
2219
+ outline: 0;
2220
+ }
2221
+
2222
+ .m-select__option--create {
2223
+ color: var(--m-color-primary);
2224
+ font-style: italic;
2225
+ }
2226
+
2227
+ .m-select__list--virtual .m-virtualscroller__item {
2228
+ display: flex;
2229
+ }
2230
+
2231
+ .m-select__list--virtual .m-select__option {
2232
+ height: 100%;
2233
+ min-height: 0;
2234
+ width: 100%;
2235
+ }
2236
+
2237
+ .m-select__group-label {
2238
+ color: var(--m-color-text-muted);
2239
+ font-size: var(--m-font-size-xs);
2240
+ padding: var(--m-space-2) var(--m-control-padding-x-medium) var(--m-space-1);
2241
+ }
2242
+
2243
+ /* Virtual rows are fixed-height: center the group label like an option row. */
2244
+ .m-select__list--virtual .m-select__group-label {
2245
+ align-items: center;
2246
+ box-sizing: border-box;
2247
+ display: flex;
2248
+ height: 100%;
2249
+ padding-bottom: 0;
2250
+ padding-top: 0;
2251
+ }
2252
+
2253
+ .m-select__header,
2254
+ .m-select__footer {
2255
+ flex: 0 0 auto;
2256
+ padding: var(--m-space-2) var(--m-control-padding-x-medium);
2257
+ }
2258
+
2259
+ /* Header/footer live outside the scroll list; let the menu grow past the list
2260
+ cap so the panel's overflow:hidden does not clip them. */
2261
+ .m-select__menu:has(.m-select__header),
2262
+ .m-select__menu:has(.m-select__footer) {
2263
+ max-height: none;
2264
+ }
2265
+
2266
+ /* --- Form: ColorPicker --- */
2267
+ .m-colorpicker {
2268
+ display: inline-block;
2269
+ position: relative;
2270
+ }
2271
+
2272
+ .m-colorpicker--disabled {
2273
+ cursor: not-allowed;
2274
+ opacity: var(--m-opacity-disabled);
2275
+ }
2276
+
2277
+ .m-colorpicker__trigger {
2278
+ align-items: center;
2279
+ background: var(--m-color-surface);
2280
+ border: var(--m-border-width) solid var(--m-color-border);
2281
+ border-radius: var(--m-radius-control);
2282
+ box-sizing: border-box;
2283
+ color: var(--m-color-text);
2284
+ cursor: pointer;
2285
+ display: inline-flex;
2286
+ font-family: var(--m-font-sans);
2287
+ font-size: var(--m-control-font-medium);
2288
+ gap: var(--m-space-2);
2289
+ height: var(--m-control-height-medium);
2290
+ justify-content: center;
2291
+ padding: 0 var(--m-space-2);
2292
+ transition:
2293
+ border-color var(--m-motion-fast) var(--m-motion-ease),
2294
+ box-shadow var(--m-motion-fast) var(--m-motion-ease);
2295
+ }
2296
+
2297
+ .m-colorpicker__trigger:hover:not(:disabled) {
2298
+ border-color: var(--m-color-primary-hover);
2299
+ }
2300
+
2301
+ .m-colorpicker__trigger:focus-visible {
2302
+ border-color: var(--m-color-primary);
2303
+ box-shadow: var(--m-focus-shadow);
2304
+ outline: none;
2305
+ }
2306
+
2307
+ .m-colorpicker__trigger:disabled {
2308
+ cursor: not-allowed;
2309
+ }
2310
+
2311
+ .m-colorpicker--open .m-colorpicker__trigger {
2312
+ border-color: var(--m-color-primary);
2313
+ box-shadow: var(--m-focus-shadow);
2314
+ }
2315
+
2316
+ .m-colorpicker__trigger-swatch {
2317
+ border: 1px solid rgb(0 0 0 / 10%);
2318
+ border-radius: var(--m-radius-sm);
2319
+ display: inline-block;
2320
+ flex: 0 0 auto;
2321
+ height: calc(var(--m-control-height-medium) - 2 * var(--m-space-2));
2322
+ width: calc(var(--m-control-height-medium) - 2 * var(--m-space-2));
2323
+ }
2324
+
2325
+ .m-colorpicker--small .m-colorpicker__trigger {
2326
+ font-size: var(--m-control-font-small);
2327
+ height: var(--m-control-height-small);
2328
+ padding: 0 var(--m-space-1);
2329
+ }
2330
+
2331
+ .m-colorpicker--small .m-colorpicker__trigger-swatch {
2332
+ height: calc(var(--m-control-height-small) - 2 * var(--m-space-1));
2333
+ width: calc(var(--m-control-height-small) - 2 * var(--m-space-1));
2334
+ }
2335
+
2336
+ .m-colorpicker--large .m-colorpicker__trigger {
2337
+ font-size: var(--m-control-font-large);
2338
+ height: var(--m-control-height-large);
2339
+ padding: 0 var(--m-space-3);
2340
+ }
2341
+
2342
+ .m-colorpicker--large .m-colorpicker__trigger-swatch {
2343
+ height: calc(var(--m-control-height-large) - 2 * var(--m-space-3));
2344
+ width: calc(var(--m-control-height-large) - 2 * var(--m-space-3));
2345
+ }
2346
+
2347
+ .m-colorpicker__trigger-text {
2348
+ font-variant-numeric: tabular-nums;
2349
+ white-space: nowrap;
2350
+ }
2351
+
2352
+ .m-colorpicker__arrow {
2353
+ color: var(--m-color-text-muted);
2354
+ transition: transform var(--m-motion-fast) var(--m-motion-ease);
2355
+ }
2356
+
2357
+ .m-colorpicker--open .m-colorpicker__arrow {
2358
+ transform: rotate(180deg);
2359
+ }
2360
+
2361
+ .m-colorpicker__clear {
2362
+ color: var(--m-color-text-muted);
2363
+ cursor: pointer;
2364
+ }
2365
+
2366
+ .m-colorpicker__clear:hover {
2367
+ color: var(--m-color-text);
2368
+ }
2369
+
2370
+ /* Panel */
2371
+ .m-colorpicker__panel {
2372
+ background: var(--m-color-surface);
2373
+ border: var(--m-border-width) solid var(--m-color-border);
2374
+ border-radius: var(--m-radius-control);
2375
+ box-shadow: var(--m-shadow-lg);
2376
+ box-sizing: border-box;
2377
+ padding: var(--m-space-3);
2378
+ position: absolute;
2379
+ width: 260px;
2380
+ z-index: var(--m-z-overlay, 1000);
2381
+ }
2382
+
2383
+ .m-colorpicker__panel-inner {
2384
+ display: flex;
2385
+ flex-direction: column;
2386
+ gap: var(--m-space-3);
2387
+ }
2388
+
2389
+ /* Saturation / Brightness area */
2390
+ .m-colorpicker__saturation {
2391
+ border-radius: var(--m-radius-sm);
2392
+ cursor: pointer;
2393
+ height: 160px;
2394
+ overflow: hidden;
2395
+ position: relative;
2396
+ touch-action: none;
2397
+ user-select: none;
2398
+ width: 100%;
2399
+ }
2400
+
2401
+ .m-colorpicker__saturation-white {
2402
+ background: linear-gradient(to right, #fff, rgb(255 255 255 / 0));
2403
+ inset: 0;
2404
+ position: absolute;
2405
+ }
2406
+
2407
+ .m-colorpicker__saturation-black {
2408
+ background: linear-gradient(to top, #000, rgb(0 0 0 / 0));
2409
+ inset: 0;
2410
+ position: absolute;
2411
+ }
2412
+
2413
+ .m-colorpicker__saturation-handle {
2414
+ border: 2px solid #fff;
2415
+ border-radius: 50%;
2416
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 20%), inset 0 0 0 1px rgb(0 0 0 / 10%);
2417
+ box-sizing: border-box;
2418
+ height: 12px;
2419
+ position: absolute;
2420
+ transform: translate(-50%, -50%);
2421
+ width: 12px;
2422
+ }
2423
+
2424
+ /* Sliders */
2425
+ .m-colorpicker__sliders {
2426
+ display: flex;
2427
+ flex-direction: column;
2428
+ gap: var(--m-space-2);
2429
+ }
2430
+
2431
+ .m-colorpicker__hue,
2432
+ .m-colorpicker__alpha {
2433
+ border-radius: var(--m-radius-sm);
2434
+ cursor: pointer;
2435
+ height: 12px;
2436
+ position: relative;
2437
+ touch-action: none;
2438
+ user-select: none;
2439
+ }
2440
+
2441
+ .m-colorpicker__hue-track {
2442
+ background: linear-gradient(
2443
+ to right,
2444
+ #f00 0%,
2445
+ #ff0 17%,
2446
+ #0f0 33%,
2447
+ #0ff 50%,
2448
+ #00f 67%,
2449
+ #f0f 83%,
2450
+ #f00 100%
2451
+ );
2452
+ border-radius: inherit;
2453
+ inset: 0;
2454
+ position: absolute;
2455
+ }
2456
+
2457
+ .m-colorpicker__alpha-track {
2458
+ border-radius: inherit;
2459
+ inset: 0;
2460
+ position: absolute;
2461
+ }
2462
+
2463
+ .m-colorpicker__hue-handle,
2464
+ .m-colorpicker__alpha-handle {
2465
+ border: 2px solid #fff;
2466
+ border-radius: 50%;
2467
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 20%);
2468
+ box-sizing: border-box;
2469
+ height: 16px;
2470
+ position: absolute;
2471
+ top: 50%;
2472
+ transform: translate(-50%, -50%);
2473
+ width: 16px;
2474
+ }
2475
+
2476
+ /* Input */
2477
+ .m-colorpicker__input-row {
2478
+ display: flex;
2479
+ gap: var(--m-space-2);
2480
+ }
2481
+
2482
+ /* Presets */
2483
+ .m-colorpicker__presets {
2484
+ border-top: var(--m-border-width) solid var(--m-color-border);
2485
+ display: flex;
2486
+ flex-direction: column;
2487
+ gap: var(--m-space-2);
2488
+ padding-top: var(--m-space-2);
2489
+ }
2490
+
2491
+ .m-colorpicker__preset-group {
2492
+ display: flex;
2493
+ flex-direction: column;
2494
+ gap: var(--m-space-1);
2495
+ }
2496
+
2497
+ .m-colorpicker__preset-label {
2498
+ color: var(--m-color-text-muted);
2499
+ font-size: var(--m-font-size-xs);
2500
+ }
2501
+
2502
+ .m-colorpicker__preset-colors {
2503
+ display: flex;
2504
+ flex-wrap: wrap;
2505
+ gap: var(--m-space-1);
2506
+ }
2507
+
2508
+ .m-colorpicker__preset-swatch {
2509
+ border: var(--m-border-width) solid rgb(0 0 0 / 10%);
2510
+ border-radius: var(--m-radius-sm);
2511
+ cursor: pointer;
2512
+ height: 20px;
2513
+ padding: 0;
2514
+ transition:
2515
+ transform var(--m-motion-fast) var(--m-motion-ease),
2516
+ box-shadow var(--m-motion-fast) var(--m-motion-ease);
2517
+ width: 20px;
2518
+ }
2519
+
2520
+ .m-colorpicker__preset-swatch:hover:not(:disabled) {
2521
+ transform: scale(1.1);
2522
+ }
2523
+
2524
+ .m-colorpicker__preset-swatch--active {
2525
+ box-shadow: 0 0 0 2px var(--m-color-primary);
2526
+ }
2527
+
2528
+ .m-colorpicker__preset-swatch:disabled {
2529
+ cursor: not-allowed;
2530
+ opacity: var(--m-opacity-disabled);
2531
+ }
2532
+
2533
+ /* Mode Switch */
2534
+ .m-colorpicker__mode-switch {
2535
+ margin-bottom: var(--m-space-1);
2536
+ }
2537
+
2538
+ /* Gradient Bar */
2539
+ .m-colorpicker__gradient-section {
2540
+ display: flex;
2541
+ flex-direction: column;
2542
+ gap: var(--m-space-2);
2543
+ }
2544
+
2545
+ .m-colorpicker__gradient-bar {
2546
+ border: var(--m-border-width) solid var(--m-color-border);
2547
+ border-radius: var(--m-radius-sm);
2548
+ cursor: pointer;
2549
+ height: 24px;
2550
+ position: relative;
2551
+ touch-action: none;
2552
+ user-select: none;
2553
+ }
2554
+
2555
+ .m-colorpicker__gradient-stop {
2556
+ border: 2px solid #fff;
2557
+ border-radius: 50%;
2558
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 20%), 0 2px 4px rgb(0 0 0 / 20%);
2559
+ box-sizing: border-box;
2560
+ cursor: grab;
2561
+ height: 16px;
2562
+ position: absolute;
2563
+ top: 50%;
2564
+ transform: translate(-50%, -50%);
2565
+ width: 16px;
2566
+ }
2567
+
2568
+ .m-colorpicker__gradient-stop:active {
2569
+ cursor: grabbing;
2570
+ }
2571
+
2572
+ .m-colorpicker__gradient-stop--active {
2573
+ box-shadow: 0 0 0 2px var(--m-color-primary), 0 2px 4px rgb(0 0 0 / 20%);
2574
+ z-index: 1;
2575
+ }
2576
+
2577
+ .m-colorpicker__gradient-stops-list {
2578
+ display: flex;
2579
+ flex-direction: column;
2580
+ gap: var(--m-space-1);
2581
+ max-height: 120px;
2582
+ overflow-y: auto;
2583
+ }
2584
+
2585
+ .m-colorpicker__gradient-stop-item {
2586
+ align-items: center;
2587
+ border: var(--m-border-width) solid transparent;
2588
+ border-radius: var(--m-radius-sm);
2589
+ cursor: pointer;
2590
+ display: flex;
2591
+ gap: var(--m-space-2);
2592
+ padding: var(--m-space-1) var(--m-space-2);
2593
+ transition: all var(--m-motion-fast) var(--m-motion-ease);
2594
+ }
2595
+
2596
+ .m-colorpicker__gradient-stop-item:hover {
2597
+ background: var(--m-color-surface-secondary, rgb(0 0 0 / 4%));
2598
+ }
2599
+
2600
+ .m-colorpicker__gradient-stop-item--active {
2601
+ background: var(--m-color-primary-light, rgb(22 119 255 / 10%));
2602
+ border-color: var(--m-color-primary);
2603
+ }
2604
+
2605
+ .m-colorpicker__gradient-stop-color {
2606
+ border: 1px solid rgb(0 0 0 / 10%);
2607
+ border-radius: var(--m-radius-sm);
2608
+ display: inline-block;
2609
+ height: 16px;
2610
+ width: 16px;
2611
+ }
2612
+
2613
+ .m-colorpicker__gradient-stop-pos {
2614
+ color: var(--m-color-text-muted);
2615
+ flex: 1;
2616
+ font-size: var(--m-font-size-xs);
2617
+ font-variant-numeric: tabular-nums;
2618
+ }
2619
+
2620
+ .m-colorpicker__gradient-stop-delete {
2621
+ align-items: center;
2622
+ background: transparent;
2623
+ border: 0;
2624
+ border-radius: var(--m-radius-sm);
2625
+ color: var(--m-color-text-muted);
2626
+ cursor: pointer;
2627
+ display: flex;
2628
+ height: 20px;
2629
+ justify-content: center;
2630
+ padding: 0;
2631
+ width: 20px;
2632
+ }
2633
+
2634
+ .m-colorpicker__gradient-stop-delete:hover:not(:disabled) {
2635
+ background: rgb(0 0 0 / 8%);
2636
+ color: var(--m-color-danger);
2637
+ }
2638
+
2639
+ .m-colorpicker__gradient-stop-delete:disabled {
2640
+ cursor: not-allowed;
2641
+ opacity: var(--m-opacity-disabled);
2642
+ }
2643
+
2644
+ /* Gradient Options */
2645
+ .m-colorpicker__gradient-options {
2646
+ align-items: center;
2647
+ display: flex;
2648
+ gap: var(--m-space-2);
2649
+ }
2650
+
2651
+ .m-colorpicker__gradient-options > * {
2652
+ flex: 0 0 auto;
2653
+ }
2654
+
2655
+ .m-colorpicker__gradient-options .m-select__control {
2656
+ width: 90px;
2657
+ }
2658
+
2659
+ .m-colorpicker__gradient-options .m-inputnumber {
2660
+ width: 70px;
2661
+ }
2662
+
2663
+ .m-colorpicker__gradient-options .m-inputnumber .m-inputnumber__input-wrap {
2664
+ width: 100%;
2665
+ }
2666
+
2667
+ .m-colorpicker__gradient-angle-unit {
2668
+ color: var(--m-color-text-muted);
2669
+ font-size: var(--m-font-size-xs);
1347
2670
  }