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
@@ -0,0 +1,8 @@
1
+ import '../theme/styles.css'
2
+ import '../styles/base.css'
3
+ import '../components/Icon/styles.css'
4
+ import '../components/Input/styles.css'
5
+ import '../components/InputNumber/styles.css'
6
+ import '../components/Segmented/styles.css'
7
+ import '../components/Select/styles.css'
8
+ import '../components/ColorPicker/styles.css'
@@ -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
  }
@@ -0,0 +1,41 @@
1
+ import { ColorPickerFormat, ColorPickerProps, ColorPickerPlacement, ColorPickerPreset } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ import { MSizeInput, MotionPresetId } from '../..';
4
+ import { FieldPassThrough } from '../../shared/passThrough';
5
+ declare function openPanel(): void;
6
+ declare function closePanel(): void;
7
+ declare function togglePanel(): void;
8
+ declare const __VLS_export: DefineComponent<ColorPickerProps, {
9
+ open: typeof openPanel;
10
+ close: typeof closePanel;
11
+ toggle: typeof togglePanel;
12
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
13
+ "update:modelValue": (value: string) => any;
14
+ clear: () => any;
15
+ change: (value: string) => any;
16
+ show: () => any;
17
+ hide: () => any;
18
+ }, string, PublicProps, Readonly<ColorPickerProps> & Readonly<{
19
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
20
+ onClear?: (() => any) | undefined;
21
+ onChange?: ((value: string) => any) | undefined;
22
+ onShow?: (() => any) | undefined;
23
+ onHide?: (() => any) | undefined;
24
+ }>, {
25
+ size: MSizeInput;
26
+ pt: FieldPassThrough;
27
+ modelValue: string;
28
+ disabled: boolean;
29
+ transition: MotionPresetId | false;
30
+ teleport: boolean;
31
+ allowClear: boolean;
32
+ placement: ColorPickerPlacement;
33
+ format: ColorPickerFormat;
34
+ gradient: boolean;
35
+ disabledAlpha: boolean;
36
+ presets: ColorPickerPreset[];
37
+ showText: boolean;
38
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
39
+ declare const _default: typeof __VLS_export;
40
+ export default _default;
41
+ //# sourceMappingURL=ColorPicker.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ColorPicker/ColorPicker.vue"],"names":[],"mappings":";;;AAuvBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAA+B,MAAM,SAAS,CAAA;AA8gB/F,iBAAS,SAAS,SAQjB;AAED,iBAAS,UAAU,SAOlB;AAED,iBAAS,WAAW,SAGnB;AAyiBD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAKhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,23 @@
1
+ export interface RGB {
2
+ r: number;
3
+ g: number;
4
+ b: number;
5
+ }
6
+ export interface HSB {
7
+ h: number;
8
+ s: number;
9
+ b: number;
10
+ }
11
+ export interface HSV extends HSB {
12
+ }
13
+ export declare function clamp(value: number, min: number, max: number): number;
14
+ export declare function round(value: number, precision?: number): number;
15
+ export declare function hexToRgb(hex: string): RGB | null;
16
+ export declare function rgbToHex(rgb: RGB): string;
17
+ export declare function rgbToHsb(rgb: RGB): HSB;
18
+ export declare function hsbToRgb(hsb: HSB): RGB;
19
+ export declare function rgbToHsvString(rgb: RGB): string;
20
+ export declare function hsbToHsvString(hsb: HSB): string;
21
+ export declare function isValidHex(value: string): boolean;
22
+ export declare function normalizeHex(value: string): string;
23
+ //# sourceMappingURL=colorUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorUtils.d.ts","sourceRoot":"","sources":["../../../src/components/ColorPicker/colorUtils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,GAAI,SAAQ,GAAG;CAAG;AAEnC,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM,CAG1D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAQhD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAGzC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAetC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAmBtC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE/C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD"}
@@ -0,0 +1,9 @@
1
+ import { GradientStop, GradientValue } from './types';
2
+ export declare function createStopId(): string;
3
+ export declare function isGradient(value: string): boolean;
4
+ export declare function parseGradient(value: string): GradientValue | null;
5
+ export declare function gradientToString(gradient: GradientValue): string;
6
+ export declare function normalizeColor(color: string): string;
7
+ export declare function createDefaultGradient(): GradientValue;
8
+ export declare function stopsToGradientPreview(stops: GradientStop[]): string;
9
+ //# sourceMappingURL=gradientUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradientUtils.d.ts","sourceRoot":"","sources":["../../../src/components/ColorPicker/gradientUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAI1D,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA2FjE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAShE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBpD;AAED,wBAAgB,qBAAqB,IAAI,aAAa,CASrD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAGpE"}
@@ -0,0 +1,3 @@
1
+ export { default as MColorPicker } from './ColorPicker.vue';
2
+ export type { ColorPickerEmits, ColorPickerFormat, ColorPickerMode, ColorPickerPreset, ColorPickerProps, GradientStop, GradientType, GradientValue, } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ColorPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC3D,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAA"}
@@ -0,0 +1,405 @@
1
+ /* --- Form: ColorPicker --- */
2
+ .m-colorpicker {
3
+ display: inline-block;
4
+ position: relative;
5
+ }
6
+
7
+ .m-colorpicker--disabled {
8
+ cursor: not-allowed;
9
+ opacity: var(--m-opacity-disabled);
10
+ }
11
+
12
+ .m-colorpicker__trigger {
13
+ align-items: center;
14
+ background: var(--m-color-surface);
15
+ border: var(--m-border-width) solid var(--m-color-border);
16
+ border-radius: var(--m-radius-control);
17
+ box-sizing: border-box;
18
+ color: var(--m-color-text);
19
+ cursor: pointer;
20
+ display: inline-flex;
21
+ font-family: var(--m-font-sans);
22
+ font-size: var(--m-control-font-medium);
23
+ gap: var(--m-space-2);
24
+ height: var(--m-control-height-medium);
25
+ justify-content: center;
26
+ padding: 0 var(--m-space-2);
27
+ transition:
28
+ border-color var(--m-motion-fast) var(--m-motion-ease),
29
+ box-shadow var(--m-motion-fast) var(--m-motion-ease);
30
+ }
31
+
32
+ .m-colorpicker__trigger:hover:not(:disabled) {
33
+ border-color: var(--m-color-primary-hover);
34
+ }
35
+
36
+ .m-colorpicker__trigger:focus-visible {
37
+ border-color: var(--m-color-primary);
38
+ box-shadow: var(--m-focus-shadow);
39
+ outline: none;
40
+ }
41
+
42
+ .m-colorpicker__trigger:disabled {
43
+ cursor: not-allowed;
44
+ }
45
+
46
+ .m-colorpicker--open .m-colorpicker__trigger {
47
+ border-color: var(--m-color-primary);
48
+ box-shadow: var(--m-focus-shadow);
49
+ }
50
+
51
+ .m-colorpicker__trigger-swatch {
52
+ border: 1px solid rgb(0 0 0 / 10%);
53
+ border-radius: var(--m-radius-sm);
54
+ display: inline-block;
55
+ flex: 0 0 auto;
56
+ height: calc(var(--m-control-height-medium) - 2 * var(--m-space-2));
57
+ width: calc(var(--m-control-height-medium) - 2 * var(--m-space-2));
58
+ }
59
+
60
+ .m-colorpicker--small .m-colorpicker__trigger {
61
+ font-size: var(--m-control-font-small);
62
+ height: var(--m-control-height-small);
63
+ padding: 0 var(--m-space-1);
64
+ }
65
+
66
+ .m-colorpicker--small .m-colorpicker__trigger-swatch {
67
+ height: calc(var(--m-control-height-small) - 2 * var(--m-space-1));
68
+ width: calc(var(--m-control-height-small) - 2 * var(--m-space-1));
69
+ }
70
+
71
+ .m-colorpicker--large .m-colorpicker__trigger {
72
+ font-size: var(--m-control-font-large);
73
+ height: var(--m-control-height-large);
74
+ padding: 0 var(--m-space-3);
75
+ }
76
+
77
+ .m-colorpicker--large .m-colorpicker__trigger-swatch {
78
+ height: calc(var(--m-control-height-large) - 2 * var(--m-space-3));
79
+ width: calc(var(--m-control-height-large) - 2 * var(--m-space-3));
80
+ }
81
+
82
+ .m-colorpicker__trigger-text {
83
+ font-variant-numeric: tabular-nums;
84
+ white-space: nowrap;
85
+ }
86
+
87
+ .m-colorpicker__arrow {
88
+ color: var(--m-color-text-muted);
89
+ transition: transform var(--m-motion-fast) var(--m-motion-ease);
90
+ }
91
+
92
+ .m-colorpicker--open .m-colorpicker__arrow {
93
+ transform: rotate(180deg);
94
+ }
95
+
96
+ .m-colorpicker__clear {
97
+ color: var(--m-color-text-muted);
98
+ cursor: pointer;
99
+ }
100
+
101
+ .m-colorpicker__clear:hover {
102
+ color: var(--m-color-text);
103
+ }
104
+
105
+ /* Panel */
106
+ .m-colorpicker__panel {
107
+ background: var(--m-color-surface);
108
+ border: var(--m-border-width) solid var(--m-color-border);
109
+ border-radius: var(--m-radius-control);
110
+ box-shadow: var(--m-shadow-lg);
111
+ box-sizing: border-box;
112
+ padding: var(--m-space-3);
113
+ position: absolute;
114
+ width: 260px;
115
+ z-index: var(--m-z-overlay, 1000);
116
+ }
117
+
118
+ .m-colorpicker__panel-inner {
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: var(--m-space-3);
122
+ }
123
+
124
+ /* Saturation / Brightness area */
125
+ .m-colorpicker__saturation {
126
+ border-radius: var(--m-radius-sm);
127
+ cursor: pointer;
128
+ height: 160px;
129
+ overflow: hidden;
130
+ position: relative;
131
+ touch-action: none;
132
+ user-select: none;
133
+ width: 100%;
134
+ }
135
+
136
+ .m-colorpicker__saturation-white {
137
+ background: linear-gradient(to right, #fff, rgb(255 255 255 / 0));
138
+ inset: 0;
139
+ position: absolute;
140
+ }
141
+
142
+ .m-colorpicker__saturation-black {
143
+ background: linear-gradient(to top, #000, rgb(0 0 0 / 0));
144
+ inset: 0;
145
+ position: absolute;
146
+ }
147
+
148
+ .m-colorpicker__saturation-handle {
149
+ border: 2px solid #fff;
150
+ border-radius: 50%;
151
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 20%), inset 0 0 0 1px rgb(0 0 0 / 10%);
152
+ box-sizing: border-box;
153
+ height: 12px;
154
+ position: absolute;
155
+ transform: translate(-50%, -50%);
156
+ width: 12px;
157
+ }
158
+
159
+ /* Sliders */
160
+ .m-colorpicker__sliders {
161
+ display: flex;
162
+ flex-direction: column;
163
+ gap: var(--m-space-2);
164
+ }
165
+
166
+ .m-colorpicker__hue,
167
+ .m-colorpicker__alpha {
168
+ border-radius: var(--m-radius-sm);
169
+ cursor: pointer;
170
+ height: 12px;
171
+ position: relative;
172
+ touch-action: none;
173
+ user-select: none;
174
+ }
175
+
176
+ .m-colorpicker__hue-track {
177
+ background: linear-gradient(
178
+ to right,
179
+ #f00 0%,
180
+ #ff0 17%,
181
+ #0f0 33%,
182
+ #0ff 50%,
183
+ #00f 67%,
184
+ #f0f 83%,
185
+ #f00 100%
186
+ );
187
+ border-radius: inherit;
188
+ inset: 0;
189
+ position: absolute;
190
+ }
191
+
192
+ .m-colorpicker__alpha-track {
193
+ border-radius: inherit;
194
+ inset: 0;
195
+ position: absolute;
196
+ }
197
+
198
+ .m-colorpicker__hue-handle,
199
+ .m-colorpicker__alpha-handle {
200
+ border: 2px solid #fff;
201
+ border-radius: 50%;
202
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 20%);
203
+ box-sizing: border-box;
204
+ height: 16px;
205
+ position: absolute;
206
+ top: 50%;
207
+ transform: translate(-50%, -50%);
208
+ width: 16px;
209
+ }
210
+
211
+ /* Input */
212
+ .m-colorpicker__input-row {
213
+ display: flex;
214
+ gap: var(--m-space-2);
215
+ }
216
+
217
+ /* Presets */
218
+ .m-colorpicker__presets {
219
+ border-top: var(--m-border-width) solid var(--m-color-border);
220
+ display: flex;
221
+ flex-direction: column;
222
+ gap: var(--m-space-2);
223
+ padding-top: var(--m-space-2);
224
+ }
225
+
226
+ .m-colorpicker__preset-group {
227
+ display: flex;
228
+ flex-direction: column;
229
+ gap: var(--m-space-1);
230
+ }
231
+
232
+ .m-colorpicker__preset-label {
233
+ color: var(--m-color-text-muted);
234
+ font-size: var(--m-font-size-xs);
235
+ }
236
+
237
+ .m-colorpicker__preset-colors {
238
+ display: flex;
239
+ flex-wrap: wrap;
240
+ gap: var(--m-space-1);
241
+ }
242
+
243
+ .m-colorpicker__preset-swatch {
244
+ border: var(--m-border-width) solid rgb(0 0 0 / 10%);
245
+ border-radius: var(--m-radius-sm);
246
+ cursor: pointer;
247
+ height: 20px;
248
+ padding: 0;
249
+ transition:
250
+ transform var(--m-motion-fast) var(--m-motion-ease),
251
+ box-shadow var(--m-motion-fast) var(--m-motion-ease);
252
+ width: 20px;
253
+ }
254
+
255
+ .m-colorpicker__preset-swatch:hover:not(:disabled) {
256
+ transform: scale(1.1);
257
+ }
258
+
259
+ .m-colorpicker__preset-swatch--active {
260
+ box-shadow: 0 0 0 2px var(--m-color-primary);
261
+ }
262
+
263
+ .m-colorpicker__preset-swatch:disabled {
264
+ cursor: not-allowed;
265
+ opacity: var(--m-opacity-disabled);
266
+ }
267
+
268
+ /* Mode Switch */
269
+ .m-colorpicker__mode-switch {
270
+ margin-bottom: var(--m-space-1);
271
+ }
272
+
273
+ /* Gradient Bar */
274
+ .m-colorpicker__gradient-section {
275
+ display: flex;
276
+ flex-direction: column;
277
+ gap: var(--m-space-2);
278
+ }
279
+
280
+ .m-colorpicker__gradient-bar {
281
+ border: var(--m-border-width) solid var(--m-color-border);
282
+ border-radius: var(--m-radius-sm);
283
+ cursor: pointer;
284
+ height: 24px;
285
+ position: relative;
286
+ touch-action: none;
287
+ user-select: none;
288
+ }
289
+
290
+ .m-colorpicker__gradient-stop {
291
+ border: 2px solid #fff;
292
+ border-radius: 50%;
293
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 20%), 0 2px 4px rgb(0 0 0 / 20%);
294
+ box-sizing: border-box;
295
+ cursor: grab;
296
+ height: 16px;
297
+ position: absolute;
298
+ top: 50%;
299
+ transform: translate(-50%, -50%);
300
+ width: 16px;
301
+ }
302
+
303
+ .m-colorpicker__gradient-stop:active {
304
+ cursor: grabbing;
305
+ }
306
+
307
+ .m-colorpicker__gradient-stop--active {
308
+ box-shadow: 0 0 0 2px var(--m-color-primary), 0 2px 4px rgb(0 0 0 / 20%);
309
+ z-index: 1;
310
+ }
311
+
312
+ .m-colorpicker__gradient-stops-list {
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: var(--m-space-1);
316
+ max-height: 120px;
317
+ overflow-y: auto;
318
+ }
319
+
320
+ .m-colorpicker__gradient-stop-item {
321
+ align-items: center;
322
+ border: var(--m-border-width) solid transparent;
323
+ border-radius: var(--m-radius-sm);
324
+ cursor: pointer;
325
+ display: flex;
326
+ gap: var(--m-space-2);
327
+ padding: var(--m-space-1) var(--m-space-2);
328
+ transition: all var(--m-motion-fast) var(--m-motion-ease);
329
+ }
330
+
331
+ .m-colorpicker__gradient-stop-item:hover {
332
+ background: var(--m-color-surface-secondary, rgb(0 0 0 / 4%));
333
+ }
334
+
335
+ .m-colorpicker__gradient-stop-item--active {
336
+ background: var(--m-color-primary-light, rgb(22 119 255 / 10%));
337
+ border-color: var(--m-color-primary);
338
+ }
339
+
340
+ .m-colorpicker__gradient-stop-color {
341
+ border: 1px solid rgb(0 0 0 / 10%);
342
+ border-radius: var(--m-radius-sm);
343
+ display: inline-block;
344
+ height: 16px;
345
+ width: 16px;
346
+ }
347
+
348
+ .m-colorpicker__gradient-stop-pos {
349
+ color: var(--m-color-text-muted);
350
+ flex: 1;
351
+ font-size: var(--m-font-size-xs);
352
+ font-variant-numeric: tabular-nums;
353
+ }
354
+
355
+ .m-colorpicker__gradient-stop-delete {
356
+ align-items: center;
357
+ background: transparent;
358
+ border: 0;
359
+ border-radius: var(--m-radius-sm);
360
+ color: var(--m-color-text-muted);
361
+ cursor: pointer;
362
+ display: flex;
363
+ height: 20px;
364
+ justify-content: center;
365
+ padding: 0;
366
+ width: 20px;
367
+ }
368
+
369
+ .m-colorpicker__gradient-stop-delete:hover:not(:disabled) {
370
+ background: rgb(0 0 0 / 8%);
371
+ color: var(--m-color-danger);
372
+ }
373
+
374
+ .m-colorpicker__gradient-stop-delete:disabled {
375
+ cursor: not-allowed;
376
+ opacity: var(--m-opacity-disabled);
377
+ }
378
+
379
+ /* Gradient Options */
380
+ .m-colorpicker__gradient-options {
381
+ align-items: center;
382
+ display: flex;
383
+ gap: var(--m-space-2);
384
+ }
385
+
386
+ .m-colorpicker__gradient-options > * {
387
+ flex: 0 0 auto;
388
+ }
389
+
390
+ .m-colorpicker__gradient-options .m-select__control {
391
+ width: 90px;
392
+ }
393
+
394
+ .m-colorpicker__gradient-options .m-inputnumber {
395
+ width: 70px;
396
+ }
397
+
398
+ .m-colorpicker__gradient-options .m-inputnumber .m-inputnumber__input-wrap {
399
+ width: 100%;
400
+ }
401
+
402
+ .m-colorpicker__gradient-angle-unit {
403
+ color: var(--m-color-text-muted);
404
+ font-size: var(--m-font-size-xs);
405
+ }
@@ -0,0 +1,60 @@
1
+ import { MAppendTo } from '../../shared/overlay';
2
+ import { FieldPassThrough } from '../../shared/passThrough';
3
+ import { MSizeInput } from '../../shared/types';
4
+ import { MotionPresetId } from '../../theme/motionPresets';
5
+ export type ColorPickerFormat = 'hex' | 'rgb' | 'hsb';
6
+ export type ColorPickerPlacement = 'top' | 'bottom' | 'left' | 'right' | 'bottom-start' | 'bottom-end' | 'right-start' | 'left-start';
7
+ export interface ColorPickerPreset {
8
+ label?: string;
9
+ colors: string[];
10
+ defaultOpen?: boolean;
11
+ }
12
+ export type ColorPickerMode = 'single' | 'gradient';
13
+ export type GradientType = 'linear' | 'radial';
14
+ export interface GradientStop {
15
+ id: string;
16
+ color: string;
17
+ position: number;
18
+ }
19
+ export interface GradientValue {
20
+ type: GradientType;
21
+ angle: number;
22
+ stops: GradientStop[];
23
+ }
24
+ export interface ColorPickerProps {
25
+ /** Current color value in hex (e.g. '#1677ff') or CSS gradient string. */
26
+ modelValue?: string;
27
+ disabled?: boolean;
28
+ /** Disable alpha channel. */
29
+ disabledAlpha?: boolean;
30
+ /** Show clear button. */
31
+ allowClear?: boolean;
32
+ /** Format of the displayed value. */
33
+ format?: ColorPickerFormat;
34
+ /** Preset color palettes. */
35
+ presets?: ColorPickerPreset[];
36
+ /** Show text input in trigger. */
37
+ showText?: boolean;
38
+ /** Trigger size. */
39
+ size?: MSizeInput;
40
+ /** Popup placement. */
41
+ placement?: ColorPickerPlacement;
42
+ /** Teleport overlay. Defaults to `true`. */
43
+ teleport?: boolean;
44
+ /** Mount target. Defaults to `'body'`. */
45
+ appendTo?: MAppendTo;
46
+ /** Named motion preset, or `false` to disable transition. */
47
+ transition?: MotionPresetId | false;
48
+ /** Pass-through attrs/classes/styles per DOM part. */
49
+ pt?: FieldPassThrough;
50
+ /** Enable gradient mode. */
51
+ gradient?: boolean;
52
+ }
53
+ export interface ColorPickerEmits {
54
+ (event: 'update:modelValue', value: string): void;
55
+ (event: 'change', value: string): void;
56
+ (event: 'clear'): void;
57
+ (event: 'show'): void;
58
+ (event: 'hide'): void;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/ColorPicker/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAErD,MAAM,MAAM,oBAAoB,GAC5B,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,cAAc,GACd,YAAY,GACZ,aAAa,GACb,YAAY,CAAA;AAEhB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE9C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,yBAAyB;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qCAAqC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oBAAoB;IACpB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,oBAAoB,CAAA;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,cAAc,GAAG,KAAK,CAAA;IACnC,sDAAsD;IACtD,EAAE,CAAC,EAAE,gBAAgB,CAAA;IACrB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACjD,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB"}
@@ -1,6 +1,6 @@
1
1
  /* —— Navigation: ContextMenu —— */
2
2
  .m-contextmenu {
3
- --m-contextmenu-min-width: var(--m-menu-min-width, 10rem);
3
+ --m-contextmenu-min-width: var(--m-overlay-menu-min-width, 10rem);
4
4
  --m-contextmenu-item-gap: var(--m-space-1);
5
5
  --m-contextmenu-max-height: min(18rem, 45vh);
6
6
  background: var(--m-color-surface);
@@ -1,5 +1,5 @@
1
1
  .m-dropdown {
2
- --m-dropdown-menu-min-width: var(--m-menu-min-width, 10rem);
2
+ --m-dropdown-menu-min-width: var(--m-overlay-menu-min-width, 10rem);
3
3
  display: inline-block;
4
4
  font-family: var(--m-font-sans);
5
5
  position: relative;