morya-ui 0.2.2 → 0.2.3

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 (39) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/Card-BQfmv5Iw.js +62 -0
  3. package/dist/card/index.js +2 -62
  4. package/dist/components/Layout/Layout.vue.d.ts +1 -0
  5. package/dist/components/Layout/Layout.vue.d.ts.map +1 -1
  6. package/dist/components/Layout/styles.css +4 -0
  7. package/dist/components/Layout/types.d.ts +2 -0
  8. package/dist/components/Layout/types.d.ts.map +1 -1
  9. package/dist/components/Page/PageContent.vue.d.ts +19 -0
  10. package/dist/components/Page/PageContent.vue.d.ts.map +1 -0
  11. package/dist/components/Page/PageFilters.vue.d.ts +16 -0
  12. package/dist/components/Page/PageFilters.vue.d.ts.map +1 -0
  13. package/dist/components/Page/PageHeader.vue.d.ts +22 -0
  14. package/dist/components/Page/PageHeader.vue.d.ts.map +1 -0
  15. package/dist/components/Page/PagePlaceholder.vue.d.ts +20 -0
  16. package/dist/components/Page/PagePlaceholder.vue.d.ts.map +1 -0
  17. package/dist/components/Page/PageSection.vue.d.ts +19 -0
  18. package/dist/components/Page/PageSection.vue.d.ts.map +1 -0
  19. package/dist/components/Page/PageStat.vue.d.ts +18 -0
  20. package/dist/components/Page/PageStat.vue.d.ts.map +1 -0
  21. package/dist/components/Page/PageToolbar.vue.d.ts +20 -0
  22. package/dist/components/Page/PageToolbar.vue.d.ts.map +1 -0
  23. package/dist/components/Page/index.d.ts +9 -0
  24. package/dist/components/Page/index.d.ts.map +1 -0
  25. package/dist/components/Page/styles.css +193 -0
  26. package/dist/components/Page/types.d.ts +54 -0
  27. package/dist/components/Page/types.d.ts.map +1 -0
  28. package/dist/index.d.ts +8 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +495 -325
  31. package/dist/layout/index.js +6 -1
  32. package/dist/layout/style.css +4 -0
  33. package/dist/page/index.js +176 -0
  34. package/dist/page/style.css +1157 -0
  35. package/dist/page/style.js +5 -0
  36. package/dist/resolver-map.d.ts.map +1 -1
  37. package/dist/resolver.js +7 -0
  38. package/dist/styles.css +1 -1
  39. package/package.json +8 -1
@@ -0,0 +1,1157 @@
1
+ :root {
2
+ --m-color-primary: #2563eb;
3
+ --m-color-primary-hover: #1d4ed8;
4
+ --m-color-surface: #ffffff;
5
+ --m-color-text: #0f172a;
6
+ --m-color-text-muted: #64748b;
7
+ --m-color-border: #e2e8f0;
8
+ --m-color-focus-ring: #2563eb;
9
+ /* Naive-inspired control sizing (tiny omitted; medium = default) */
10
+ --m-control-height-small: 28px;
11
+ --m-control-height-medium: 34px;
12
+ --m-control-height-large: 40px;
13
+ --m-control-font-small: 14px;
14
+ --m-control-font-medium: 14px;
15
+ --m-control-font-large: 15px;
16
+ --m-control-padding-x-small: 10px;
17
+ --m-control-padding-x-medium: 12px;
18
+ --m-control-padding-x-large: 14px;
19
+
20
+ --m-radius-control: 3px;
21
+ --m-border-width: 1px;
22
+ --m-focus-shadow: 0 0 0 2px
23
+ color-mix(in srgb, var(--m-color-primary) 20%, transparent);
24
+ --m-focus-shadow-danger: 0 0 0 2px
25
+ color-mix(in srgb, var(--m-color-danger) 20%, transparent);
26
+ --m-color-success: #159570;
27
+ --m-color-info: #2563eb;
28
+ --m-color-warning: #d97706;
29
+ --m-color-warn: var(--m-color-warning);
30
+ --m-color-help: #9333ea;
31
+ --m-color-danger: #dc2626;
32
+ --m-color-contrast: #0f172a;
33
+ --m-color-contrast-fg: #ffffff;
34
+ --m-color-contrast-hover: #1e293b;
35
+ --m-color-contrast-active: #020617;
36
+ --m-color-on-emphasis: #ffffff;
37
+ --m-overlay-scrim: rgb(15 23 42 / 0.55);
38
+ --m-shadow-sm: 0 1px 2px rgb(15 23 42 / 0.25);
39
+ --m-shadow-md: 0 0.75rem 2rem rgb(15 23 42 / 0.16);
40
+ --m-shadow-lg: 0 1rem 3rem rgb(15 23 42 / 0.25);
41
+ --m-shadow-sticky: 4px 0 8px color-mix(in srgb, #000 6%, transparent);
42
+ --m-shadow-sticky-end: -4px 0 8px color-mix(in srgb, #000 6%, transparent);
43
+
44
+ /* Typography scale (component text, not control-height fonts) */
45
+ --m-font-size-xs: 0.75rem;
46
+ --m-font-size-sm: 0.8125rem;
47
+ --m-font-size-md: 0.875rem;
48
+ --m-font-size-lg: 1.125rem;
49
+ --m-opacity-disabled: 0.55;
50
+ /* Layering: override --m-z-base via ConfigProvider / createMoryaUI */
51
+ --m-z-base: 1000;
52
+ --m-z-overlay: var(--m-z-base);
53
+ --m-z-overlay-raised: calc(var(--m-z-base) + 1);
54
+ --m-z-dropdown: calc(var(--m-z-base) + 50);
55
+ --m-z-tooltip: calc(var(--m-z-base) + 60);
56
+ --m-z-toast: calc(var(--m-z-base) + 100);
57
+ --m-z-popper: 40;
58
+
59
+ --m-control-affix-size: 2rem;
60
+ --m-control-affix-gap: 2.35rem;
61
+ --m-control-affix-padding: 2.5rem;
62
+ --m-space-1: 0.25rem;
63
+ --m-space-2: 0.5rem;
64
+ --m-space-3: 0.75rem;
65
+ --m-space-4: 1rem;
66
+ --m-space-5: 1.25rem;
67
+ --m-space-6: 1.5rem;
68
+ --m-space-8: 2rem;
69
+ --m-radius-sm: 0.25rem;
70
+ --m-radius-md: 0.5rem;
71
+ --m-radius-lg: 0.75rem;
72
+ --m-radius-full: 9999px;
73
+ --m-font-sans: Inter, ui-sans-serif, system-ui, sans-serif;
74
+ --m-motion-fast: 150ms;
75
+ --m-motion-normal: 250ms;
76
+ --m-motion-ease: cubic-bezier(0.2, 0, 0, 1);
77
+ --m-motion-enter: 180ms;
78
+ --m-motion-exit: 130ms;
79
+ --m-motion-distance: 0.5rem;
80
+ --m-motion-spin: 1s;
81
+ --m-motion-spin-dash: 1.5s;
82
+ --m-motion-spin-fast: 0.8s;
83
+ --m-motion-spin-medium: 0.7s;
84
+ --m-motion-skeleton: 1.4s;
85
+ --m-motion-pulse: 1.2s;
86
+ --m-motion-scrollbar-show: 340ms;
87
+ --m-motion-scrollbar-hide: 120ms;
88
+ --m-dataview-grid-min: 10rem;
89
+ --m-tree-indent: 0.7rem;
90
+ --m-tree-indent-padding: var(--m-space-3);
91
+ --m-layout-trigger-bar-height: 4.5rem;
92
+ --m-layout-trigger-bar-offset: 1.75rem;
93
+ --m-layout-trigger-bar-width: 2rem;
94
+ --m-layout-trigger-bar-top: 2.25rem;
95
+ --m-timeline-event-min-height: 4rem;
96
+ --m-timeline-marker-size: 1.5rem;
97
+ --m-tag-font-size-small: var(--m-font-size-xs);
98
+ --m-slider-tooltip-offset: 1.5rem;
99
+ --m-slider-tooltip-padding-block: 0.15rem;
100
+ --m-slider-tooltip-padding-inline: 0.4rem;
101
+ --m-rating-star-size-small: 1rem;
102
+ --m-rating-star-size-medium: 1.25rem;
103
+ --m-rating-star-size-large: 1.5rem;
104
+ --m-rating-star-padding: 0.15rem;
105
+ --m-slider-marks-inset: 0.9rem;
106
+ --m-slider-marks-side: 0.5rem;
107
+ --m-stepper-connector-color: var(--m-color-border);
108
+
109
+ /* Table (Element Plus–aligned) */
110
+ --m-color-fill-light: color-mix(in srgb, var(--m-color-text) 6%, var(--m-color-surface));
111
+ --m-color-fill-lighter: color-mix(in srgb, var(--m-color-text) 3.5%, var(--m-color-surface));
112
+ --m-table-border-color: var(--m-color-border);
113
+ --m-table-header-bg: var(--m-color-fill-light);
114
+ --m-table-header-text: var(--m-color-text);
115
+ --m-table-text: var(--m-color-text);
116
+ --m-table-row-bg: var(--m-color-surface);
117
+ --m-table-row-hover-bg: var(--m-color-fill-light);
118
+ --m-table-row-striped-bg: var(--m-color-fill-lighter);
119
+ --m-table-row-current-bg: color-mix(in srgb, var(--m-color-primary) 10%, var(--m-color-surface));
120
+ --m-table-row-selected-bg: color-mix(in srgb, var(--m-color-primary) 14%, var(--m-color-surface));
121
+ --m-table-expanded-bg: var(--m-color-fill-lighter);
122
+ --m-table-font-size: var(--m-font-size-md);
123
+ --m-table-row-height: 40px;
124
+ --m-table-cell-line-height: 23px;
125
+ --m-table-cell-padding-inline: 12px;
126
+ }
127
+
128
+ :root[data-m-motion="reduced"] {
129
+ --m-motion-fast: 80ms;
130
+ --m-motion-normal: 120ms;
131
+ --m-motion-enter: 100ms;
132
+ --m-motion-exit: 80ms;
133
+ --m-motion-distance: 0;
134
+ }
135
+
136
+ :root[data-m-motion="none"] {
137
+ --m-motion-fast: 0ms;
138
+ --m-motion-normal: 0ms;
139
+ --m-motion-enter: 0ms;
140
+ --m-motion-exit: 0ms;
141
+ --m-motion-distance: 0;
142
+ }
143
+
144
+ /* Global density: scales spacing + control heights (Vuetify-inspired, WD tokens) */
145
+ :root,
146
+ [data-m-density="comfortable"] {
147
+ --m-density-scale: 1;
148
+ --m-menu-item-height: calc(var(--m-control-height-medium) + var(--m-space-2));
149
+ --m-checkbox-control-size: 1.125rem;
150
+ }
151
+
152
+ [data-m-density="compact"] {
153
+ --m-menu-item-height: calc(var(--m-control-height-medium) + var(--m-space-1));
154
+ --m-control-affix-padding: 2.15rem;
155
+ --m-control-affix-gap: 2rem;
156
+ --m-checkbox-control-size: 1rem;
157
+ --m-space-1: 0.2rem;
158
+ --m-space-2: 0.4rem;
159
+ --m-space-3: 0.6rem;
160
+ --m-space-4: 0.85rem;
161
+ --m-space-5: 1.05rem;
162
+ --m-space-6: 1.25rem;
163
+ --m-space-8: 1.7rem;
164
+ --m-control-height-small: 24px;
165
+ --m-control-height-medium: 28px;
166
+ --m-control-height-large: 34px;
167
+ --m-control-font-small: 13px;
168
+ --m-control-font-medium: 13px;
169
+ --m-control-font-large: 14px;
170
+ --m-control-padding-x-small: 8px;
171
+ --m-control-padding-x-medium: 10px;
172
+ --m-control-padding-x-large: 12px;
173
+ --m-table-row-height: 36px;
174
+ --m-table-cell-line-height: 20px;
175
+ --m-table-cell-padding-inline: 10px;
176
+ --m-table-font-size: var(--m-font-size-sm);
177
+ }
178
+
179
+ [data-m-density="spacious"] {
180
+ --m-menu-item-height: calc(var(--m-control-height-medium) + var(--m-space-3));
181
+ --m-control-affix-padding: 2.85rem;
182
+ --m-control-affix-gap: 2.65rem;
183
+ --m-checkbox-control-size: 1.25rem;
184
+ --m-space-1: 0.3rem;
185
+ --m-space-2: 0.6rem;
186
+ --m-space-3: 0.9rem;
187
+ --m-space-4: 1.15rem;
188
+ --m-space-5: 1.45rem;
189
+ --m-space-6: 1.75rem;
190
+ --m-space-8: 2.35rem;
191
+ --m-control-height-small: 32px;
192
+ --m-control-height-medium: 40px;
193
+ --m-control-height-large: 46px;
194
+ --m-control-font-small: 14px;
195
+ --m-control-font-medium: 15px;
196
+ --m-control-font-large: 16px;
197
+ --m-control-padding-x-small: 12px;
198
+ --m-control-padding-x-medium: 14px;
199
+ --m-control-padding-x-large: 16px;
200
+ --m-table-row-height: 48px;
201
+ --m-table-cell-line-height: 26px;
202
+ --m-table-cell-padding-inline: 16px;
203
+ --m-table-font-size: 1rem;
204
+ }
205
+
206
+ [data-m-density="compact"] .m-layout-header {
207
+ --m-layout-header-height: 48px;
208
+ }
209
+
210
+ [data-m-density="compact"] .m-layout-footer {
211
+ --m-layout-footer-height: 40px;
212
+ }
213
+
214
+ [data-m-density="compact"] .m-layout-sider {
215
+ --m-layout-sider-width: 240px;
216
+ --m-layout-sider-collapsed-width: 52px;
217
+ }
218
+
219
+ [data-m-density="spacious"] .m-layout-header {
220
+ --m-layout-header-height: 64px;
221
+ }
222
+
223
+ [data-m-density="spacious"] .m-layout-footer {
224
+ --m-layout-footer-height: 56px;
225
+ }
226
+
227
+ [data-m-density="spacious"] .m-layout-sider {
228
+ --m-layout-sider-width: 288px;
229
+ --m-layout-sider-collapsed-width: 72px;
230
+ }
231
+
232
+ [data-theme="dark"] {
233
+ --m-color-primary: #60a5fa;
234
+ --m-color-primary-hover: #93c5fd;
235
+ --m-color-surface: #0f172a;
236
+ --m-color-text: #f8fafc;
237
+ --m-color-text-muted: #94a3b8;
238
+ --m-color-border: #334155;
239
+ --m-color-focus-ring: #93c5fd;
240
+ --m-focus-shadow: 0 0 0 2px
241
+ color-mix(in srgb, var(--m-color-primary) 28%, transparent);
242
+ --m-focus-shadow-danger: 0 0 0 2px
243
+ color-mix(in srgb, var(--m-color-danger) 28%, transparent);
244
+ --m-color-success: #5eead4;
245
+ --m-color-info: #93c5fd;
246
+ --m-color-warning: #fbbf24;
247
+ --m-color-warn: var(--m-color-warning);
248
+ --m-color-help: #c084fc;
249
+ --m-color-danger: #fca5a5;
250
+ --m-color-contrast: #f8fafc;
251
+ --m-color-contrast-fg: #0f172a;
252
+ --m-color-contrast-hover: #e2e8f0;
253
+ --m-color-contrast-active: #cbd5e1;
254
+ --m-overlay-scrim: rgb(2 6 23 / 0.72);
255
+ --m-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.45);
256
+ --m-shadow-md: 0 0.75rem 2rem rgb(0 0 0 / 0.45);
257
+ --m-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 0.55);
258
+ --m-shadow-sticky: 4px 0 8px color-mix(in srgb, #000 35%, transparent);
259
+ --m-shadow-sticky-end: -4px 0 8px color-mix(in srgb, #000 35%, transparent);
260
+
261
+ --m-table-border-color: color-mix(in srgb, var(--m-color-border) 88%, var(--m-color-text));
262
+ --m-color-fill-light: color-mix(in srgb, var(--m-color-text) 10%, var(--m-color-surface));
263
+ --m-color-fill-lighter: color-mix(in srgb, var(--m-color-text) 6%, var(--m-color-surface));
264
+ --m-table-header-bg: var(--m-color-fill-light);
265
+ --m-table-row-bg: var(--m-color-surface);
266
+ --m-table-row-hover-bg: color-mix(in srgb, var(--m-color-text) 8%, var(--m-color-surface));
267
+ --m-table-row-striped-bg: var(--m-color-fill-lighter);
268
+ --m-table-row-current-bg: color-mix(in srgb, var(--m-color-primary) 16%, var(--m-color-surface));
269
+ --m-table-row-selected-bg: color-mix(in srgb, var(--m-color-primary) 20%, var(--m-color-surface));
270
+ --m-table-expanded-bg: var(--m-color-fill-lighter);
271
+ }
272
+
273
+ /* Shared tokens consumption, type, focus, and mixed selectors. */
274
+
275
+ :root {
276
+ /* Shared minimum width for menu-like panels (select/orderlist/picklist) */
277
+ --m-menu-min-width: 12rem;
278
+ }
279
+
280
+ .m-button,
281
+ .m-input,
282
+ .m-card,
283
+ .m-dialog,
284
+ .m-drawer,
285
+ .m-popover,
286
+ .m-accordion,
287
+ .m-scrollbar,
288
+ .m-panel,
289
+ .m-fieldset,
290
+ .m-flex,
291
+ .m-space,
292
+ .m-grid,
293
+ .m-layout,
294
+ .m-layout-header,
295
+ .m-layout-footer,
296
+ .m-layout-sider,
297
+ .m-splitter,
298
+ .m-stepper,
299
+ .m-toolbar,
300
+ .m-menu,
301
+ .m-menubar,
302
+ .m-contextmenu,
303
+ .m-tieredmenu,
304
+ .m-datepicker,
305
+ .m-listbox,
306
+ .m-togglebutton,
307
+ .m-inputotp,
308
+ .m-knob,
309
+ .m-autocomplete,
310
+ .m-splitbutton,
311
+ .m-tree,
312
+ .m-timeline,
313
+ .m-dataview,
314
+ .m-confirmpopup,
315
+ .m-scrolltop,
316
+ .m-blockui,
317
+ .m-inplace,
318
+ .m-cascadeselect,
319
+ .m-treeselect,
320
+ .m-inputcolor,
321
+ .m-inputtags,
322
+ .m-label,
323
+ .m-speeddial,
324
+ .m-orderlist,
325
+ .m-picklist,
326
+ .m-virtualscroller,
327
+ .m-treetable,
328
+ .m-megamenu,
329
+ .m-dock,
330
+ .m-sidebar,
331
+ .m-commandmenu,
332
+ .m-fileupload,
333
+ .m-carousel,
334
+ .m-gallery,
335
+ .m-metergroup,
336
+ .m-fluid,
337
+ .m-terminal {
338
+ font-family: var(--m-font-sans);
339
+ box-sizing: border-box;
340
+ }
341
+
342
+ .m-button:disabled,
343
+ .m-input:disabled {
344
+ cursor: not-allowed;
345
+ opacity: var(--m-opacity-disabled);
346
+ }
347
+
348
+ .m-input-field__meta,
349
+ .m-textarea-field__meta,
350
+ .m-password-field__meta {
351
+ align-items: baseline;
352
+ display: flex;
353
+ gap: var(--m-space-2);
354
+ justify-content: space-between;
355
+ }
356
+
357
+ .m-input-field__meta:not(:has(.m-input-field__help)),
358
+ .m-textarea-field__meta:not(:has(.m-textarea-field__help)),
359
+ .m-password-field__meta:not(:has(.m-password__feedback)) {
360
+ justify-content: flex-end;
361
+ }
362
+
363
+ .m-input-field__count,
364
+ .m-textarea-field__count,
365
+ .m-password-field__count {
366
+ color: var(--m-color-text-muted);
367
+ flex: 0 0 auto;
368
+ font-size: var(--m-font-size-xs);
369
+ margin-left: auto;
370
+ }
371
+
372
+ .m-dropdown__item--parent {
373
+ align-items: center;
374
+ display: flex;
375
+ justify-content: space-between;
376
+ width: 100%;
377
+ }
378
+
379
+ .m-dropdown__icon,
380
+ .m-dropdown__caret,
381
+ .m-menu__icon,
382
+ .m-menubar__icon {
383
+ flex-shrink: 0;
384
+ }
385
+
386
+ .m-dropdown__submenu-wrap {
387
+ position: relative;
388
+ }
389
+
390
+ .m-dropdown__submenu {
391
+ background: var(--m-color-surface);
392
+ border: var(--m-border-width) solid var(--m-color-border);
393
+ border-radius: var(--m-radius-md);
394
+ box-shadow: var(--m-shadow-md);
395
+ left: 100%;
396
+ min-width: 10rem;
397
+ padding: var(--m-space-1);
398
+ position: absolute;
399
+ top: 0;
400
+ z-index: var(--m-z-popper);
401
+ }
402
+
403
+ .m-fade-enter-active,
404
+ .m-fade-leave-active {
405
+ transition: opacity var(--m-motion-exit) var(--m-motion-ease);
406
+ }
407
+
408
+ .m-fade-enter-from,
409
+ .m-fade-leave-to {
410
+ opacity: 0;
411
+ }
412
+
413
+ .m-scale-fade-enter-active {
414
+ transition:
415
+ opacity var(--m-motion-enter) var(--m-motion-ease),
416
+ transform var(--m-motion-enter) var(--m-motion-ease);
417
+ }
418
+
419
+ .m-scale-fade-leave-active {
420
+ transition:
421
+ opacity var(--m-motion-exit) var(--m-motion-ease),
422
+ transform var(--m-motion-exit) var(--m-motion-ease);
423
+ }
424
+
425
+ .m-scale-fade-enter-from,
426
+ .m-scale-fade-leave-to {
427
+ opacity: 0;
428
+ transform: translateY(calc(var(--m-motion-distance) * -1)) scale(0.98);
429
+ }
430
+
431
+ .m-slide-fade-enter-active {
432
+ transition:
433
+ opacity var(--m-motion-enter) var(--m-motion-ease),
434
+ transform var(--m-motion-enter) var(--m-motion-ease);
435
+ }
436
+
437
+ .m-slide-fade-leave-active {
438
+ transition:
439
+ opacity var(--m-motion-exit) var(--m-motion-ease),
440
+ transform var(--m-motion-exit) var(--m-motion-ease);
441
+ }
442
+
443
+ .m-slide-fade-enter-from,
444
+ .m-slide-fade-leave-to {
445
+ opacity: 0;
446
+ transform: translateY(calc(var(--m-motion-distance) * -1));
447
+ }
448
+
449
+ /* Shared loading spinner rotation (ProgressSpinner, Switch, ProgressBar, AutoComplete) */
450
+ @keyframes m-progress-spinner-rotate {
451
+ 100% {
452
+ transform: rotate(360deg);
453
+ }
454
+ }
455
+
456
+ .m-checkbox,
457
+ .m-radio,
458
+ .m-switch {
459
+ align-items: center;
460
+ color: var(--m-color-text);
461
+ cursor: pointer;
462
+ display: inline-flex;
463
+ font-family: var(--m-font-sans);
464
+ gap: var(--m-space-2);
465
+ /* 避免绝对定位 input 挂到上层 MScrollbar,聚焦时把滚动容器拽回顶部 */
466
+ position: relative;
467
+ }
468
+
469
+ .m-checkbox--disabled,
470
+ .m-radio--disabled,
471
+ .m-switch--disabled {
472
+ color: var(--m-color-text-muted);
473
+ cursor: not-allowed;
474
+ opacity: var(--m-opacity-disabled);
475
+ }
476
+
477
+ .m-checkbox--invalid .m-checkbox__control,
478
+ .m-radio--invalid .m-radio__control {
479
+ border-color: var(--m-color-danger);
480
+ }
481
+
482
+ .m-checkbox__input,
483
+ .m-radio__input,
484
+ .m-switch__input {
485
+ clip: rect(0, 0, 0, 0);
486
+ clip-path: inset(50%);
487
+ height: 1px;
488
+ margin: -1px;
489
+ overflow: hidden;
490
+ opacity: 0;
491
+ position: absolute;
492
+ white-space: nowrap;
493
+ width: 1px;
494
+ }
495
+
496
+ .m-checkbox__control,
497
+ .m-radio__control {
498
+ align-items: center;
499
+ background: var(--m-color-surface);
500
+ border: var(--m-border-width) solid var(--m-color-border);
501
+ display: inline-flex;
502
+ flex: 0 0 auto;
503
+ height: var(--m-checkbox-control-size, 1.125rem);
504
+ justify-content: center;
505
+ transition:
506
+ background-color var(--m-motion-fast) var(--m-motion-ease),
507
+ border-color var(--m-motion-fast) var(--m-motion-ease);
508
+ width: var(--m-checkbox-control-size, 1.125rem);
509
+ }
510
+
511
+ .m-checkbox__input:checked + .m-checkbox__control,
512
+ .m-radio__input:checked + .m-radio__control {
513
+ background: var(--m-color-primary);
514
+ border-color: var(--m-color-primary);
515
+ }
516
+
517
+ .m-checkbox:not(.m-checkbox--disabled):hover .m-checkbox__control,
518
+ .m-radio:not(.m-radio--disabled):hover .m-radio__control {
519
+ border-color: color-mix(in srgb, var(--m-color-primary) 45%, var(--m-color-border));
520
+ }
521
+
522
+ .m-checkbox__input:focus-visible + .m-checkbox__control,
523
+ .m-radio__input:focus-visible + .m-radio__control,
524
+ .m-switch__input:focus-visible + .m-switch__track {
525
+ box-shadow: var(--m-focus-shadow);
526
+ outline: none;
527
+ }
528
+
529
+ .m-checkbox__label,
530
+ .m-radio__label,
531
+ .m-switch__label {
532
+ font-size: var(--m-font-size-md);
533
+ }
534
+
535
+ .m-textarea-field,
536
+ .m-select-field {
537
+ display: grid;
538
+ font-family: var(--m-font-sans);
539
+ gap: var(--m-space-2);
540
+ max-width: 100%;
541
+ min-width: var(--m-menu-min-width);
542
+ position: relative;
543
+ width: fit-content;
544
+ }
545
+
546
+ .m-textarea-field--fluid,
547
+ .m-select-field--fluid {
548
+ width: 100%;
549
+ }
550
+
551
+ .m-textarea-field__label,
552
+ .m-select-field__label {
553
+ color: var(--m-color-text);
554
+ font-size: var(--m-font-size-md);
555
+ font-weight: 600;
556
+ }
557
+
558
+ .m-textarea-field__help,
559
+ .m-select-field__help {
560
+ color: var(--m-color-text-muted);
561
+ font-size: var(--m-font-size-xs);
562
+ }
563
+
564
+ .m-textarea-field__help--invalid,
565
+ .m-select-field__help--invalid {
566
+ color: var(--m-color-danger);
567
+ }
568
+
569
+ .m-textarea,
570
+ .m-select {
571
+ background: var(--m-color-surface);
572
+ border: var(--m-border-width) solid var(--m-color-border);
573
+ border-radius: var(--m-radius-control);
574
+ color: var(--m-color-text);
575
+ font: inherit;
576
+ transition:
577
+ border-color var(--m-motion-fast) var(--m-motion-ease),
578
+ box-shadow var(--m-motion-fast) var(--m-motion-ease),
579
+ background-color var(--m-motion-fast) var(--m-motion-ease);
580
+ width: 100%;
581
+ }
582
+
583
+ .m-textarea--invalid:focus-visible,
584
+ .m-select--invalid.m-select--open,
585
+ .m-select--invalid:focus-visible {
586
+ border-color: var(--m-color-danger);
587
+ box-shadow: var(--m-focus-shadow-danger);
588
+ }
589
+
590
+ .m-textarea:disabled,
591
+ .m-select:disabled,
592
+ .m-select--disabled {
593
+ cursor: not-allowed;
594
+ opacity: var(--m-opacity-disabled);
595
+ }
596
+
597
+ .m-icon-field--left :is(.m-input, .m-password__input, .m-inputnumber__input, input) {
598
+ padding-left: 2.5rem;
599
+ }
600
+
601
+ .m-icon-field--right :is(.m-input, .m-password__input, .m-inputnumber__input, input) {
602
+ padding-right: var(--m-control-affix-padding);
603
+ }
604
+
605
+ .m-inputgroup > .m-input,
606
+ .m-inputgroup > .m-input-field,
607
+ .m-inputgroup > .m-password-field,
608
+ .m-inputgroup > .m-inputnumber-field {
609
+ flex: 1 1 auto;
610
+ min-width: 0;
611
+ }
612
+
613
+ .m-inputgroup > .m-input-field,
614
+ .m-inputgroup > .m-password-field,
615
+ .m-inputgroup > .m-inputnumber-field {
616
+ display: flex;
617
+ flex-direction: column;
618
+ gap: 0;
619
+ }
620
+
621
+ .m-inputgroup > .m-input,
622
+ .m-inputgroup .m-input,
623
+ .m-inputgroup .m-password__input,
624
+ .m-inputgroup .m-inputnumber__input {
625
+ border-radius: 0;
626
+ width: 100%;
627
+ }
628
+
629
+ .m-inputgroup > :first-child.m-input,
630
+ .m-inputgroup > :first-child .m-input,
631
+ .m-inputgroup > :first-child .m-password__input,
632
+ .m-inputgroup > :first-child .m-inputnumber__input,
633
+ .m-inputgroup > :first-child.m-inputgroup-addon {
634
+ border-bottom-left-radius: var(--m-radius-control);
635
+ border-top-left-radius: var(--m-radius-control);
636
+ }
637
+
638
+ .m-inputgroup > :last-child.m-input,
639
+ .m-inputgroup > :last-child .m-input,
640
+ .m-inputgroup > :last-child .m-password__input,
641
+ .m-inputgroup > :last-child .m-inputnumber__input,
642
+ .m-inputgroup > :last-child.m-inputgroup-addon {
643
+ border-bottom-right-radius: var(--m-radius-control);
644
+ border-top-right-radius: var(--m-radius-control);
645
+ }
646
+
647
+ .m-inputgroup > .m-inputgroup-addon + .m-input,
648
+ .m-inputgroup > .m-inputgroup-addon + .m-input-field .m-input,
649
+ .m-inputgroup > .m-input + .m-inputgroup-addon,
650
+ .m-inputgroup > .m-input-field + .m-inputgroup-addon {
651
+ margin-left: -1px;
652
+ }
653
+
654
+ .m-layout__scrollbar > .m-scrollbar__wrap {
655
+ height: 100%;
656
+ overflow-x: hidden;
657
+ }
658
+
659
+ .m-layout-sider__scrollbar > .m-scrollbar__wrap {
660
+ height: 100%;
661
+ overflow-x: hidden;
662
+ }
663
+
664
+ .m-orderlist__btn,
665
+ .m-picklist__btn {
666
+ align-items: center;
667
+ background: var(--m-color-surface);
668
+ border: var(--m-border-width) solid var(--m-color-border);
669
+ border-radius: var(--m-radius-sm);
670
+ color: var(--m-color-text);
671
+ cursor: pointer;
672
+ display: inline-flex;
673
+ font: inherit;
674
+ gap: 0;
675
+ justify-content: center;
676
+ min-height: var(--m-control-height-small, 1.75rem);
677
+ min-width: var(--m-control-affix-size);
678
+ padding: var(--m-space-1) var(--m-space-2);
679
+ }
680
+
681
+ .m-orderlist__btn:hover,
682
+ .m-picklist__btn:hover {
683
+ border-color: var(--m-color-primary);
684
+ color: var(--m-color-primary);
685
+ }
686
+
687
+ .m-orderlist__btn:focus-visible,
688
+ .m-picklist__btn:focus-visible {
689
+ border-color: var(--m-color-primary);
690
+ box-shadow: var(--m-focus-shadow);
691
+ outline: none;
692
+ }
693
+
694
+ .m-picklist__btn .m-icon + .m-icon {
695
+ margin-left: -0.35rem;
696
+ }
697
+
698
+ .m-orderlist__list,
699
+ .m-picklist__list {
700
+ background: var(--m-color-surface);
701
+ border: var(--m-border-width) solid var(--m-color-border);
702
+ border-radius: var(--m-radius-md);
703
+ flex: 1;
704
+ list-style: none;
705
+ margin: 0;
706
+ max-height: 16rem;
707
+ min-height: 12rem;
708
+ min-width: var(--m-menu-min-width);
709
+ overflow: auto;
710
+ padding: var(--m-space-1);
711
+ }
712
+
713
+ .m-orderlist__item,
714
+ .m-picklist__item {
715
+ border-radius: var(--m-radius-sm);
716
+ cursor: pointer;
717
+ padding: var(--m-space-2) var(--m-space-3);
718
+ }
719
+
720
+ .m-orderlist__item:hover,
721
+ .m-picklist__item:hover {
722
+ background: color-mix(in srgb, var(--m-color-primary) 8%, var(--m-color-surface));
723
+ }
724
+
725
+ .m-orderlist__item:focus-visible,
726
+ .m-picklist__item:focus-visible {
727
+ box-shadow: var(--m-focus-shadow);
728
+ outline: none;
729
+ }
730
+
731
+ .m-orderlist__item--selected,
732
+ .m-picklist__item--selected {
733
+ background: color-mix(in srgb, var(--m-color-primary) 14%, var(--m-color-surface));
734
+ color: var(--m-color-primary);
735
+ font-weight: 600;
736
+ }
737
+
738
+ .m-carousel__nav,
739
+ .m-gallery__nav {
740
+ background: var(--m-color-surface);
741
+ border: var(--m-border-width) solid var(--m-color-border);
742
+ border-radius: var(--m-radius-full, 999px);
743
+ color: var(--m-color-text);
744
+ cursor: pointer;
745
+ flex: 0 0 auto;
746
+ font: inherit;
747
+ height: var(--m-control-affix-size);
748
+ width: var(--m-control-affix-size);
749
+ }
750
+
751
+ .m-carousel__nav:disabled,
752
+ .m-gallery__nav:disabled {
753
+ cursor: not-allowed;
754
+ opacity: var(--m-opacity-disabled);
755
+ }
756
+
757
+ /* Shared Naive-like hover/focus for remaining form triggers */
758
+ .m-inputnumber__input:hover:not(:disabled):not(:focus),
759
+ .m-password__input:hover:not(:disabled):not(:focus),
760
+ .m-datepicker__input:hover:not(:disabled):not(:focus),
761
+ .m-inputotp__input:hover:not(:disabled):not(:focus),
762
+ .m-cascadeselect__trigger:hover:not(:disabled):not(:focus-visible),
763
+ .m-treeselect__trigger:hover:not(:disabled):not(:focus-visible),
764
+ .m-inputcolor__text:hover:not(:disabled):not(:focus),
765
+ .m-inputtags:hover:not(.m-inputtags--disabled),
766
+ .m-togglebutton:hover:not(:disabled):not(.m-togglebutton--checked),
767
+ .m-inplace__display:hover {
768
+ border-color: var(--m-color-primary-hover);
769
+ }
770
+
771
+ .m-inputnumber__input:focus-visible,
772
+ .m-password__input:focus-visible,
773
+ .m-datepicker__input:focus-visible,
774
+ .m-inputotp__input:focus-visible,
775
+ .m-cascadeselect__trigger:focus-visible,
776
+ .m-treeselect__trigger:focus-visible,
777
+ .m-inputcolor__text:focus-visible,
778
+ .m-inputtags:focus-within,
779
+ .m-togglebutton:focus-visible,
780
+ .m-selectbutton__button:focus-visible,
781
+ .m-splitbutton__main:focus-visible,
782
+ .m-splitbutton__trigger:focus-visible,
783
+ .m-inplace__display:focus-visible,
784
+ .m-pagination__button:focus-visible {
785
+ border-color: var(--m-color-primary-hover);
786
+ box-shadow: var(--m-focus-shadow);
787
+ outline: none;
788
+ }
789
+
790
+ .m-inputnumber--invalid .m-inputnumber__input:focus-visible,
791
+ .m-password--invalid .m-password__input:focus-visible,
792
+ .m-datepicker--invalid .m-datepicker__input:focus-visible {
793
+ border-color: var(--m-color-danger);
794
+ box-shadow: var(--m-focus-shadow-danger);
795
+ }
796
+
797
+ .m-checkbox-group,
798
+ .m-radio-group {
799
+ display: flex;
800
+ flex-wrap: wrap;
801
+ gap: var(--m-space-3);
802
+ }
803
+
804
+ .m-checkbox--small .m-checkbox__control,
805
+ .m-radio--small .m-radio__control {
806
+ height: 0.95rem;
807
+ width: 0.95rem;
808
+ }
809
+
810
+ .m-checkbox--large .m-checkbox__control,
811
+ .m-radio--large .m-radio__control {
812
+ height: 1.35rem;
813
+ width: 1.35rem;
814
+ }
815
+
816
+ .m-inputnumber__clear,
817
+ .m-autocomplete__clear {
818
+ background: transparent;
819
+ border: 0;
820
+ color: var(--m-color-text-muted);
821
+ cursor: pointer;
822
+ font: inherit;
823
+ line-height: 1;
824
+ }
825
+
826
+ [data-m-motion="none"] *,
827
+ [data-m-motion="none"] *::before,
828
+ [data-m-motion="none"] *::after {
829
+ animation-duration: 0.01ms !important;
830
+ animation-iteration-count: 1 !important;
831
+ scroll-behavior: auto !important;
832
+ transition-duration: 0.01ms !important;
833
+ }
834
+
835
+ [data-m-motion="reduced"] .m-progress-spinner,
836
+ [data-m-motion="reduced"] .m-progress-spinner__svg,
837
+ [data-m-motion="reduced"] .m-skeleton,
838
+ [data-m-motion="reduced"] .m-badge--pulse,
839
+ [data-m-motion="reduced"] .m-icon--spin,
840
+ [data-m-motion="reduced"] .m-button--loading .m-button__icon,
841
+ [data-m-motion="reduced"] .m-select__loading-icon,
842
+ [data-m-motion="reduced"] .m-switch__loading-icon {
843
+ animation-duration: calc(var(--m-motion-spin) * 2) !important;
844
+ }
845
+
846
+ @media (prefers-reduced-motion: reduce) {
847
+ html:not([data-m-ignore-reduced-motion]) *,
848
+ html:not([data-m-ignore-reduced-motion]) *::before,
849
+ html:not([data-m-ignore-reduced-motion]) *::after {
850
+ animation-duration: 0.01ms !important;
851
+ animation-iteration-count: 1 !important;
852
+ scroll-behavior: auto !important;
853
+ transition-duration: 0.01ms !important;
854
+ }
855
+ }
856
+
857
+ .m-card {
858
+ background: var(--m-color-surface);
859
+ border: var(--m-border-width) solid var(--m-color-border);
860
+ border-radius: var(--m-radius-lg);
861
+ color: var(--m-color-text);
862
+ overflow: hidden;
863
+ }
864
+
865
+ .m-card__header,
866
+ .m-card__body,
867
+ .m-card__footer {
868
+ padding: var(--m-space-4);
869
+ }
870
+
871
+ .m-card__header,
872
+ .m-card__footer {
873
+ border-bottom: var(--m-border-width) solid var(--m-color-border);
874
+ }
875
+
876
+ .m-card__footer {
877
+ border-bottom: 0;
878
+ border-top: var(--m-border-width) solid var(--m-color-border);
879
+ }
880
+
881
+ .m-card__title {
882
+ font-size: var(--m-font-size-lg);
883
+ margin: 0;
884
+ }
885
+
886
+ .m-card__subtitle {
887
+ color: var(--m-color-text-muted);
888
+ font-size: var(--m-font-size-md);
889
+ margin: var(--m-space-1) 0 0;
890
+ }
891
+
892
+ .m-card--borderless {
893
+ border-color: transparent;
894
+ }
895
+
896
+ .m-card--hoverable {
897
+ transition: box-shadow var(--m-motion-fast) var(--m-motion-ease), border-color var(--m-motion-fast) var(--m-motion-ease);
898
+ }
899
+
900
+ .m-card--hoverable:hover {
901
+ box-shadow: var(--m-shadow-md);
902
+ }
903
+
904
+ .m-card--small .m-card__header,
905
+ .m-card--small .m-card__body,
906
+ .m-card--small .m-card__footer {
907
+ padding: var(--m-space-3);
908
+ }
909
+
910
+ .m-card--large .m-card__header,
911
+ .m-card--large .m-card__body,
912
+ .m-card--large .m-card__footer {
913
+ padding: var(--m-space-5);
914
+ }
915
+
916
+ .m-card__cover {
917
+ display: block;
918
+ overflow: hidden;
919
+ }
920
+
921
+ .m-card__cover img {
922
+ display: block;
923
+ width: 100%;
924
+ }
925
+
926
+ .m-icon {
927
+ display: inline-flex;
928
+ height: 1rem;
929
+ width: 1rem;
930
+ }
931
+
932
+ .m-icon svg {
933
+ height: 100%;
934
+ width: 100%;
935
+ }
936
+
937
+ .m-icon--sm,
938
+ .m-icon--small {
939
+ height: 0.875rem;
940
+ width: 0.875rem;
941
+ }
942
+
943
+ .m-icon--md,
944
+ .m-icon--normal {
945
+ height: 1rem;
946
+ width: 1rem;
947
+ }
948
+
949
+ .m-icon--lg,
950
+ .m-icon--large {
951
+ height: 1.25rem;
952
+ width: 1.25rem;
953
+ }
954
+
955
+ .m-icon--spin svg {
956
+ animation: m-icon-spin var(--m-motion-spin-fast) linear infinite;
957
+ }
958
+
959
+ @keyframes m-icon-spin {
960
+ to {
961
+ transform: rotate(360deg);
962
+ }
963
+ }
964
+
965
+ .m-page-content {
966
+ box-sizing: border-box;
967
+ display: flex;
968
+ flex-direction: column;
969
+ gap: var(--m-page-content-gap, var(--m-space-4));
970
+ padding: var(--m-page-content-padding, var(--m-space-6));
971
+ width: 100%;
972
+ }
973
+
974
+ .m-page-content--compact {
975
+ --m-page-content-padding: var(--m-space-4);
976
+ }
977
+
978
+ .m-page-content--spacious {
979
+ --m-page-content-gap: var(--m-space-6);
980
+ }
981
+
982
+ .m-page-content--narrow {
983
+ max-width: 42rem;
984
+ }
985
+
986
+ .m-page-filters {
987
+ background: color-mix(in srgb, var(--m-color-border) 25%, transparent);
988
+ border: var(--m-border-width) solid var(--m-color-border);
989
+ border-radius: var(--m-radius-md);
990
+ box-sizing: border-box;
991
+ padding: var(--m-space-4);
992
+ width: 100%;
993
+ }
994
+
995
+ .m-page-toolbar {
996
+ align-items: center;
997
+ box-sizing: border-box;
998
+ display: flex;
999
+ flex-wrap: wrap;
1000
+ gap: var(--m-space-4);
1001
+ justify-content: space-between;
1002
+ width: 100%;
1003
+ }
1004
+
1005
+ .m-page-toolbar__title {
1006
+ color: var(--m-color-text);
1007
+ font-size: var(--m-font-size-lg);
1008
+ font-weight: 600;
1009
+ margin: 0;
1010
+ }
1011
+
1012
+ .m-page-toolbar__actions {
1013
+ align-items: center;
1014
+ display: flex;
1015
+ flex-wrap: wrap;
1016
+ gap: var(--m-space-3);
1017
+ }
1018
+
1019
+ .m-page-header {
1020
+ box-sizing: border-box;
1021
+ display: flex;
1022
+ flex-wrap: wrap;
1023
+ gap: var(--m-space-4);
1024
+ justify-content: space-between;
1025
+ width: 100%;
1026
+ }
1027
+
1028
+ .m-page-header__main {
1029
+ display: grid;
1030
+ gap: var(--m-space-2);
1031
+ min-width: 0;
1032
+ }
1033
+
1034
+ .m-page-header__title {
1035
+ color: var(--m-color-text);
1036
+ font-size: var(--m-font-size-lg);
1037
+ font-weight: 600;
1038
+ margin: 0;
1039
+ }
1040
+
1041
+ .m-page-header__description {
1042
+ color: var(--m-color-text-muted);
1043
+ font-size: var(--m-font-size-md);
1044
+ margin: 0;
1045
+ }
1046
+
1047
+ .m-page-header__actions {
1048
+ align-items: center;
1049
+ display: flex;
1050
+ flex-wrap: wrap;
1051
+ gap: var(--m-space-3);
1052
+ }
1053
+
1054
+ .m-page-section {
1055
+ box-sizing: border-box;
1056
+ width: 100%;
1057
+ }
1058
+
1059
+ .m-page-section__title {
1060
+ color: var(--m-color-text);
1061
+ font-size: var(--m-font-size-md);
1062
+ font-weight: 600;
1063
+ margin: 0 0 var(--m-space-3);
1064
+ }
1065
+
1066
+ .m-page-section--muted {
1067
+ background: color-mix(in srgb, var(--m-color-border) 25%, transparent);
1068
+ border: var(--m-border-width) solid var(--m-color-border);
1069
+ border-radius: var(--m-radius-md);
1070
+ padding: var(--m-space-4);
1071
+ }
1072
+
1073
+ .m-page-section--form {
1074
+ background: var(--m-color-surface);
1075
+ border: var(--m-border-width) solid var(--m-color-border);
1076
+ border-radius: var(--m-radius-md);
1077
+ box-shadow: var(--m-shadow-sm);
1078
+ padding: var(--m-space-6);
1079
+ }
1080
+
1081
+ .m-page-section--actions {
1082
+ border-top: var(--m-border-width) solid var(--m-color-border);
1083
+ margin-top: var(--m-space-6);
1084
+ padding-top: var(--m-space-4);
1085
+ }
1086
+
1087
+ .m-page-stat {
1088
+ box-shadow: var(--m-shadow-sm);
1089
+ }
1090
+
1091
+ .m-page-stat__body {
1092
+ align-items: center;
1093
+ display: flex;
1094
+ gap: var(--m-space-4);
1095
+ justify-content: space-between;
1096
+ }
1097
+
1098
+ .m-page-stat__label {
1099
+ color: var(--m-color-text-muted);
1100
+ font-size: var(--m-font-size-sm);
1101
+ margin: 0;
1102
+ }
1103
+
1104
+ .m-page-stat__value {
1105
+ color: var(--m-color-text);
1106
+ font-size: 1.5rem;
1107
+ font-weight: 700;
1108
+ line-height: 1.2;
1109
+ margin: var(--m-space-1) 0;
1110
+ }
1111
+
1112
+ .m-page-stat__trend {
1113
+ font-size: var(--m-font-size-sm);
1114
+ margin: 0;
1115
+ }
1116
+
1117
+ .m-page-stat__trend--primary {
1118
+ color: var(--m-color-primary);
1119
+ }
1120
+
1121
+ .m-page-stat__trend--success {
1122
+ color: var(--m-color-success);
1123
+ }
1124
+
1125
+ .m-page-stat__trend--warn {
1126
+ color: var(--m-color-warn);
1127
+ }
1128
+
1129
+ .m-page-stat__trend--danger {
1130
+ color: var(--m-color-danger);
1131
+ }
1132
+
1133
+ .m-page-stat__trend--secondary {
1134
+ color: var(--m-color-text-muted);
1135
+ }
1136
+
1137
+ .m-page-stat__icon {
1138
+ color: var(--m-color-primary);
1139
+ flex-shrink: 0;
1140
+ opacity: 0.85;
1141
+ }
1142
+
1143
+ .m-page-placeholder {
1144
+ align-items: center;
1145
+ background: color-mix(in srgb, var(--m-color-border) 15%, transparent);
1146
+ border: var(--m-border-width) dashed var(--m-color-border);
1147
+ border-radius: var(--m-radius-md);
1148
+ box-sizing: border-box;
1149
+ color: var(--m-color-text-muted);
1150
+ display: grid;
1151
+ font-size: var(--m-font-size-sm);
1152
+ justify-items: center;
1153
+ min-height: var(--m-page-placeholder-min-height, 12rem);
1154
+ padding: var(--m-space-4);
1155
+ text-align: center;
1156
+ width: 100%;
1157
+ }