@chayns-components/color-picker 5.0.0-beta.1000
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.
- package/LICENSE +21 -0
- package/README.md +34 -0
- package/lib/cjs/api/color/get.js +33 -0
- package/lib/cjs/api/color/get.js.map +1 -0
- package/lib/cjs/api/color/put.js +37 -0
- package/lib/cjs/api/color/put.js.map +1 -0
- package/lib/cjs/components/ColorPickerProvider.js +96 -0
- package/lib/cjs/components/ColorPickerProvider.js.map +1 -0
- package/lib/cjs/components/color-picker/ColorPicker.js +43 -0
- package/lib/cjs/components/color-picker/ColorPicker.js.map +1 -0
- package/lib/cjs/components/color-picker/ColorPicker.styles.js +12 -0
- package/lib/cjs/components/color-picker/ColorPicker.styles.js.map +1 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +50 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +64 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js +32 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.styles.js +13 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js +246 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js +45 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js +90 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.styles.js +35 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js +148 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.styles.js +15 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +47 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +28 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +50 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +44 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.js +75 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.styles.js +20 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js +22 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +46 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
- package/lib/cjs/components/hue-slider/HueSlider.js +135 -0
- package/lib/cjs/components/hue-slider/HueSlider.js.map +1 -0
- package/lib/cjs/components/hue-slider/HueSlider.styles.js +88 -0
- package/lib/cjs/components/hue-slider/HueSlider.styles.js.map +1 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.js +122 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.js.map +1 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js +123 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
- package/lib/cjs/constants/color.js +72 -0
- package/lib/cjs/constants/color.js.map +1 -0
- package/lib/cjs/index.js +48 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types/colorPicker.js +2 -0
- package/lib/cjs/types/colorPicker.js.map +1 -0
- package/lib/cjs/utils/color.js +245 -0
- package/lib/cjs/utils/color.js.map +1 -0
- package/lib/esm/api/color/get.js +26 -0
- package/lib/esm/api/color/get.js.map +1 -0
- package/lib/esm/api/color/put.js +30 -0
- package/lib/esm/api/color/put.js.map +1 -0
- package/lib/esm/components/ColorPickerProvider.js +89 -0
- package/lib/esm/components/ColorPickerProvider.js.map +1 -0
- package/lib/esm/components/color-picker/ColorPicker.js +39 -0
- package/lib/esm/components/color-picker/ColorPicker.js.map +1 -0
- package/lib/esm/components/color-picker/ColorPicker.styles.js +5 -0
- package/lib/esm/components/color-picker/ColorPicker.styles.js.map +1 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +42 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +69 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.js +28 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.js.map +1 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.styles.js +6 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.js +237 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.js.map +1 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js +38 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.js +82 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.js.map +1 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js +37 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js +152 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.styles.js +8 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +40 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +27 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +43 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +43 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.js +67 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.styles.js +13 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.js +14 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +42 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
- package/lib/esm/components/hue-slider/HueSlider.js +128 -0
- package/lib/esm/components/hue-slider/HueSlider.js.map +1 -0
- package/lib/esm/components/hue-slider/HueSlider.styles.js +84 -0
- package/lib/esm/components/hue-slider/HueSlider.styles.js.map +1 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.js +115 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.js.map +1 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.styles.js +125 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
- package/lib/esm/constants/color.js +66 -0
- package/lib/esm/constants/color.js.map +1 -0
- package/lib/esm/index.js +6 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types/colorPicker.js +2 -0
- package/lib/esm/types/colorPicker.js.map +1 -0
- package/lib/esm/utils/color.js +229 -0
- package/lib/esm/utils/color.js.map +1 -0
- package/lib/types/api/color/get.d.ts +1 -0
- package/lib/types/api/color/put.d.ts +2 -0
- package/lib/types/components/ColorPickerProvider.d.ts +35 -0
- package/lib/types/components/color-picker/ColorPicker.d.ts +61 -0
- package/lib/types/components/color-picker/ColorPicker.styles.d.ts +1 -0
- package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.d.ts +20 -0
- package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.d.ts +18 -0
- package/lib/types/components/color-picker-popup/ColorPickerPopup.d.ts +16 -0
- package/lib/types/components/color-picker-popup/ColorPickerPopup.styles.d.ts +1 -0
- package/lib/types/components/color-picker-popup/color-area/ColorArea.d.ts +6 -0
- package/lib/types/components/color-picker-popup/color-area/ColorArea.styles.d.ts +267 -0
- package/lib/types/components/color-picker-popup/more-options/MoreOptions.d.ts +6 -0
- package/lib/types/components/color-picker-popup/more-options/MoreOptions.styles.d.ts +9 -0
- package/lib/types/components/color-picker-popup/preset-colors/PresetColors.d.ts +13 -0
- package/lib/types/components/color-picker-popup/preset-colors/PresetColors.styles.d.ts +1 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-button/PresetButton.d.ts +13 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.d.ts +6 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-color/PresetColor.d.ts +10 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.d.ts +12 -0
- package/lib/types/components/color-picker-popup/sliders/Sliders.d.ts +9 -0
- package/lib/types/components/color-picker-popup/sliders/Sliders.styles.d.ts +2 -0
- package/lib/types/components/color-picker-popup/sliders/color-preview/ColorPreview.d.ts +6 -0
- package/lib/types/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.d.ts +10 -0
- package/lib/types/components/hue-slider/HueSlider.d.ts +25 -0
- package/lib/types/components/hue-slider/HueSlider.styles.d.ts +15 -0
- package/lib/types/components/transparency-slider/TransparencySlider.d.ts +24 -0
- package/lib/types/components/transparency-slider/TransparencySlider.styles.d.ts +24 -0
- package/lib/types/constants/color.d.ts +3 -0
- package/lib/types/index.d.ts +6 -0
- package/lib/types/types/colorPicker.d.ts +27 -0
- package/lib/types/utils/color.d.ts +32 -0
- package/package.json +86 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { hexToHsl, rgb255ToHsl, rgb255ToHsv } from '@chayns/colors';
|
|
2
|
+
export const getColorFromCoordinates = _ref => {
|
|
3
|
+
let {
|
|
4
|
+
coordinates,
|
|
5
|
+
canvas,
|
|
6
|
+
opacity,
|
|
7
|
+
scale
|
|
8
|
+
} = _ref;
|
|
9
|
+
if (!canvas.current) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const xCords = coordinates.x;
|
|
13
|
+
const yCords = coordinates.y;
|
|
14
|
+
const x = (xCords - 0.5) * scale.scaleX;
|
|
15
|
+
const y = (yCords - 0.5) * scale.scaleY;
|
|
16
|
+
const ctx = canvas.current?.getContext('2d', {
|
|
17
|
+
willReadFrequently: true
|
|
18
|
+
});
|
|
19
|
+
const pixels = ctx?.getImageData(x, y, 1, 1).data;
|
|
20
|
+
if (!pixels) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// If transparency
|
|
25
|
+
if (pixels[0] === 0 && pixels[1] === 0 && pixels[2] === 0 && pixels[3] === 0) {
|
|
26
|
+
return 'transparent';
|
|
27
|
+
}
|
|
28
|
+
return `rgba(${pixels[0] ?? 0}, ${pixels[1] ?? 0}, ${pixels[2] ?? 0}, ${opacity})`;
|
|
29
|
+
};
|
|
30
|
+
export const getCoordinatesFromColor = _ref2 => {
|
|
31
|
+
let {
|
|
32
|
+
canvas,
|
|
33
|
+
color,
|
|
34
|
+
tolerance = 0
|
|
35
|
+
} = _ref2;
|
|
36
|
+
const ctx = canvas.current?.getContext('2d', {
|
|
37
|
+
willReadFrequently: true
|
|
38
|
+
});
|
|
39
|
+
if (!ctx) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const height = canvas.current?.height ?? 150;
|
|
43
|
+
const width = canvas.current?.width ?? 300;
|
|
44
|
+
const imageData = ctx.getImageData(0, 0, width, height);
|
|
45
|
+
const pixels = imageData.data;
|
|
46
|
+
const rgb = splitRgb(color);
|
|
47
|
+
if (!rgb) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const {
|
|
51
|
+
r: targetR,
|
|
52
|
+
g: targetG,
|
|
53
|
+
b: targetB
|
|
54
|
+
} = rgb;
|
|
55
|
+
for (let y = 0; y < height; y++) {
|
|
56
|
+
for (let x = 0; x < width; x++) {
|
|
57
|
+
const index = (y * width + x) * 4;
|
|
58
|
+
const r = pixels[index] ?? 0;
|
|
59
|
+
const g = pixels[index + 1] ?? 0;
|
|
60
|
+
const b = pixels[index + 2] ?? 0;
|
|
61
|
+
if (Math.abs(targetR - r) <= tolerance && Math.abs(targetG - g) <= tolerance && Math.abs(targetB - b) <= tolerance) {
|
|
62
|
+
return {
|
|
63
|
+
x,
|
|
64
|
+
y
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
};
|
|
71
|
+
export const isValidRGBA = rgbaString => {
|
|
72
|
+
if (rgbaString === '') {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const rgbaRegex = /^rgba\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((0?\.\d+)|(1|0))\s*\)$/;
|
|
76
|
+
if (!rgbaRegex.test(rgbaString)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const matches = rgbaString.match(rgbaRegex);
|
|
80
|
+
if (!matches) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const red = parseInt(matches[1] ?? '', 10);
|
|
84
|
+
const green = parseInt(matches[2] ?? '', 10);
|
|
85
|
+
const blue = parseInt(matches[3] ?? '', 10);
|
|
86
|
+
const alpha = parseFloat(matches[4] ?? '');
|
|
87
|
+
return !(red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255 || alpha < 0 || alpha > 1);
|
|
88
|
+
};
|
|
89
|
+
export const isValidRGB = rgbString => {
|
|
90
|
+
if (rgbString === '') {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const rgbRegex = /^rgb\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\s*\)$/;
|
|
94
|
+
if (!rgbRegex.test(rgbString)) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
const matches = rgbString.match(rgbRegex);
|
|
98
|
+
if (!matches) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const red = parseInt(matches[1] ?? '', 10);
|
|
102
|
+
const green = parseInt(matches[2] ?? '', 10);
|
|
103
|
+
const blue = parseInt(matches[3] ?? '', 10);
|
|
104
|
+
return red >= 0 && red <= 255 && green >= 0 && green <= 255 && blue >= 0 && blue <= 255;
|
|
105
|
+
};
|
|
106
|
+
export const convertColorToHsl = color => {
|
|
107
|
+
const hexRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
|
|
108
|
+
const rgbRegex = /^rgb(a)?\(\s*((25[0-5]|2[0-4]\d|1\d{2}|\d{1,2})\s*,\s*){2}(25[0-5]|2[0-4]\d|1\d{2}|\d{1,2})\s*(,\s*\d+(\.\d+)?)?\)$/i;
|
|
109
|
+
const hslRegex = /^hsla?\(\s*((360|3[0-5]\d|[12]\d{2}|[1-9]\d|\d)\s*,\s*){2}(360|3[0-5]\d|[12]\d{2}|[1-9]\d|\d)\s*(,\s*\d+(\.\d+)?)?\)$/i;
|
|
110
|
+
let rgba;
|
|
111
|
+
let hsl;
|
|
112
|
+
const newColor = color.replaceAll('%', '');
|
|
113
|
+
switch (true) {
|
|
114
|
+
case hexRegex.test(newColor):
|
|
115
|
+
hsl = hexToHsl(color);
|
|
116
|
+
if (!hsl) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
return `hsl(${Math.floor(hsl.h)},100%,100%)`;
|
|
120
|
+
case rgbRegex.test(newColor):
|
|
121
|
+
rgba = color.match(/[\d.]+/g);
|
|
122
|
+
if (!rgba) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
hsl = rgb255ToHsl({
|
|
126
|
+
r: Number(rgba[0]),
|
|
127
|
+
g: Number(rgba[1]),
|
|
128
|
+
b: Number(rgba[2])
|
|
129
|
+
});
|
|
130
|
+
if (!hsl) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
return `hsl(${Math.floor(hsl.h)},100%,100%)`;
|
|
134
|
+
case hslRegex.test(newColor):
|
|
135
|
+
return color;
|
|
136
|
+
default:
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
export const rgbToHsv = color => rgb255ToHsv(extractRgbValues(color ?? ''));
|
|
141
|
+
export const extractHsl = hsl => {
|
|
142
|
+
const match = hsl.match(/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%\s*\)/i);
|
|
143
|
+
if (!match) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const h = parseFloat(match[1] ?? '');
|
|
147
|
+
const s = parseFloat(match[2] ?? '') / 100;
|
|
148
|
+
const l = parseFloat(match[3] ?? '') / 100;
|
|
149
|
+
return {
|
|
150
|
+
h,
|
|
151
|
+
s,
|
|
152
|
+
l
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
export const splitRgb = color => {
|
|
156
|
+
const rgba = color?.match(/[\d.]+/g);
|
|
157
|
+
if (!rgba) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
r: Number(rgba[0]),
|
|
162
|
+
g: Number(rgba[1]),
|
|
163
|
+
b: Number(rgba[2]),
|
|
164
|
+
a: Number(rgba[3])
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
export const extractRgbValues = rgbString => {
|
|
168
|
+
const rgbaRegex = /rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/;
|
|
169
|
+
const match = rgbString.match(rgbaRegex);
|
|
170
|
+
if (match) {
|
|
171
|
+
const r = parseInt(match[1] ?? '', 10);
|
|
172
|
+
const g = parseInt(match[2] ?? '', 10);
|
|
173
|
+
const b = parseInt(match[3] ?? '', 10);
|
|
174
|
+
const a = parseFloat(match[4] ?? '');
|
|
175
|
+
return {
|
|
176
|
+
r,
|
|
177
|
+
g,
|
|
178
|
+
b,
|
|
179
|
+
a
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
r: 255,
|
|
184
|
+
g: 255,
|
|
185
|
+
b: 255,
|
|
186
|
+
a: 1
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
export const hexToRgb = hex => {
|
|
190
|
+
let r;
|
|
191
|
+
let g;
|
|
192
|
+
let b;
|
|
193
|
+
let a;
|
|
194
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(hex);
|
|
195
|
+
if (result) {
|
|
196
|
+
r = parseInt(result[1] ?? '0', 16);
|
|
197
|
+
g = parseInt(result[2] ?? '0', 16);
|
|
198
|
+
b = parseInt(result[3] ?? '0', 16);
|
|
199
|
+
a = result[4] ? parseInt(result[4], 16) / 100 : 1;
|
|
200
|
+
return {
|
|
201
|
+
r,
|
|
202
|
+
g,
|
|
203
|
+
b,
|
|
204
|
+
a
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
r: 255,
|
|
209
|
+
g: 255,
|
|
210
|
+
b: 255,
|
|
211
|
+
a: 1
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
export const rgbToHex = _ref3 => {
|
|
215
|
+
let {
|
|
216
|
+
r,
|
|
217
|
+
g,
|
|
218
|
+
b,
|
|
219
|
+
a = 1
|
|
220
|
+
} = _ref3;
|
|
221
|
+
const clamp = value => Math.max(0, Math.min(255, Math.round(value)));
|
|
222
|
+
const alpha = Math.max(0, Math.min(1, a));
|
|
223
|
+
const hex = x => {
|
|
224
|
+
const hexValue = clamp(x).toString(16);
|
|
225
|
+
return hexValue.length === 1 ? `0${hexValue}` : hexValue;
|
|
226
|
+
};
|
|
227
|
+
return `#${hex(r)}${hex(g)}${hex(b)}${alpha <= 1 ? hex(alpha * 100) : ''}`;
|
|
228
|
+
};
|
|
229
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","names":["hexToHsl","rgb255ToHsl","rgb255ToHsv","getColorFromCoordinates","_ref","coordinates","canvas","opacity","scale","current","undefined","xCords","x","yCords","y","scaleX","scaleY","ctx","getContext","willReadFrequently","pixels","getImageData","data","getCoordinatesFromColor","_ref2","color","tolerance","height","width","imageData","rgb","splitRgb","r","targetR","g","targetG","b","targetB","index","Math","abs","isValidRGBA","rgbaString","rgbaRegex","test","matches","match","red","parseInt","green","blue","alpha","parseFloat","isValidRGB","rgbString","rgbRegex","convertColorToHsl","hexRegex","hslRegex","rgba","hsl","newColor","replaceAll","floor","h","Number","rgbToHsv","extractRgbValues","extractHsl","s","l","a","hexToRgb","hex","result","exec","rgbToHex","_ref3","clamp","value","max","min","round","hexValue","toString","length"],"sources":["../../../src/utils/color.ts"],"sourcesContent":["import type { CSSProperties, RefObject } from 'react';\n\nimport { hexToHsl, rgb255ToHsl, rgb255ToHsv } from '@chayns/colors';\nimport type { HSL, HSLA } from '@chayns/colors/lib/types/hsl';\nimport type { Coordinates, RGBA, Scale } from '../types/colorPicker';\n\ninterface GetColorFromCoordinatesOptions {\n coordinates: Coordinates;\n canvas: RefObject<HTMLCanvasElement>;\n opacity: number;\n scale: Scale;\n}\n\nexport const getColorFromCoordinates = ({\n coordinates,\n canvas,\n opacity,\n scale,\n}: GetColorFromCoordinatesOptions) => {\n if (!canvas.current) {\n return undefined;\n }\n\n const xCords = coordinates.x;\n const yCords = coordinates.y;\n\n const x = (xCords - 0.5) * scale.scaleX;\n const y = (yCords - 0.5) * scale.scaleY;\n\n const ctx = canvas.current?.getContext('2d', { willReadFrequently: true });\n const pixels = ctx?.getImageData(x, y, 1, 1).data;\n\n if (!pixels) {\n return undefined;\n }\n\n // If transparency\n if (pixels[0] === 0 && pixels[1] === 0 && pixels[2] === 0 && pixels[3] === 0) {\n return 'transparent';\n }\n\n return `rgba(${pixels[0] ?? 0}, ${pixels[1] ?? 0}, ${pixels[2] ?? 0}, ${opacity})`;\n};\n\ninterface GetCoordinatesFromColorOptions {\n color: CSSProperties['color'];\n canvas: RefObject<HTMLCanvasElement>;\n tolerance?: number;\n}\n\nexport const getCoordinatesFromColor = ({\n canvas,\n color,\n tolerance = 0,\n}: GetCoordinatesFromColorOptions) => {\n const ctx = canvas.current?.getContext('2d', { willReadFrequently: true });\n\n if (!ctx) {\n return null;\n }\n\n const height = canvas.current?.height ?? 150;\n const width = canvas.current?.width ?? 300;\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const pixels = imageData.data;\n\n const rgb = splitRgb(color);\n\n if (!rgb) {\n return null;\n }\n\n const { r: targetR, g: targetG, b: targetB } = rgb;\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const index = (y * width + x) * 4;\n const r = pixels[index] ?? 0;\n const g = pixels[index + 1] ?? 0;\n const b = pixels[index + 2] ?? 0;\n\n if (\n Math.abs(targetR - r) <= tolerance &&\n Math.abs(targetG - g) <= tolerance &&\n Math.abs(targetB - b) <= tolerance\n ) {\n return { x, y };\n }\n }\n }\n\n return null;\n};\n\nexport const isValidRGBA = (rgbaString: string): boolean => {\n if (rgbaString === '') {\n return false;\n }\n\n const rgbaRegex = /^rgba\\(\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((0?\\.\\d+)|(1|0))\\s*\\)$/;\n if (!rgbaRegex.test(rgbaString)) {\n return false;\n }\n\n const matches = rgbaString.match(rgbaRegex);\n if (!matches) {\n return false;\n }\n\n const red = parseInt(matches[1] ?? '', 10);\n const green = parseInt(matches[2] ?? '', 10);\n const blue = parseInt(matches[3] ?? '', 10);\n const alpha = parseFloat(matches[4] ?? '');\n\n return !(\n red < 0 ||\n red > 255 ||\n green < 0 ||\n green > 255 ||\n blue < 0 ||\n blue > 255 ||\n alpha < 0 ||\n alpha > 1\n );\n};\n\nexport const isValidRGB = (rgbString: string): boolean => {\n if (rgbString === '') {\n return false;\n }\n\n const rgbRegex = /^rgb\\(\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\s*\\)$/;\n if (!rgbRegex.test(rgbString)) {\n return false;\n }\n\n const matches = rgbString.match(rgbRegex);\n if (!matches) {\n return false;\n }\n\n const red = parseInt(matches[1] ?? '', 10);\n const green = parseInt(matches[2] ?? '', 10);\n const blue = parseInt(matches[3] ?? '', 10);\n\n return red >= 0 && red <= 255 && green >= 0 && green <= 255 && blue >= 0 && blue <= 255;\n};\n\nexport const convertColorToHsl = (color: string) => {\n const hexRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n const rgbRegex =\n /^rgb(a)?\\(\\s*((25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\s*,\\s*){2}(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\s*(,\\s*\\d+(\\.\\d+)?)?\\)$/i;\n const hslRegex =\n /^hsla?\\(\\s*((360|3[0-5]\\d|[12]\\d{2}|[1-9]\\d|\\d)\\s*,\\s*){2}(360|3[0-5]\\d|[12]\\d{2}|[1-9]\\d|\\d)\\s*(,\\s*\\d+(\\.\\d+)?)?\\)$/i;\n\n let rgba: string[] | null;\n let hsl: HSL | HSLA | null;\n\n const newColor = color.replaceAll('%', '');\n\n switch (true) {\n case hexRegex.test(newColor):\n hsl = hexToHsl(color);\n\n if (!hsl) {\n return undefined;\n }\n\n return `hsl(${Math.floor(hsl.h)},100%,100%)`;\n case rgbRegex.test(newColor):\n rgba = color.match(/[\\d.]+/g);\n\n if (!rgba) {\n return undefined;\n }\n\n hsl = rgb255ToHsl({\n r: Number(rgba[0]),\n g: Number(rgba[1]),\n b: Number(rgba[2]),\n });\n\n if (!hsl) {\n return undefined;\n }\n\n return `hsl(${Math.floor(hsl.h)},100%,100%)`;\n case hslRegex.test(newColor):\n return color;\n default:\n return undefined;\n }\n};\n\nexport const rgbToHsv = (color: CSSProperties['color']) =>\n rgb255ToHsv(extractRgbValues(color ?? ''));\n\nexport const extractHsl = (hsl: string) => {\n const match = hsl.match(\n /hsl\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\d+(?:\\.\\d+)?)%\\s*\\)/i,\n );\n\n if (!match) {\n return null;\n }\n\n const h = parseFloat(match[1] ?? '');\n const s = parseFloat(match[2] ?? '') / 100;\n const l = parseFloat(match[3] ?? '') / 100;\n\n return { h, s, l };\n};\n\nexport const splitRgb = (color: CSSProperties['color']): null | RGBA => {\n const rgba = color?.match(/[\\d.]+/g);\n\n if (!rgba) {\n return null;\n }\n\n return { r: Number(rgba[0]), g: Number(rgba[1]), b: Number(rgba[2]), a: Number(rgba[3]) };\n};\n\nexport const extractRgbValues = (rgbString: string): RGBA => {\n const rgbaRegex = /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\n const match = rgbString.match(rgbaRegex);\n\n if (match) {\n const r = parseInt(match[1] ?? '', 10);\n const g = parseInt(match[2] ?? '', 10);\n const b = parseInt(match[3] ?? '', 10);\n const a = parseFloat(match[4] ?? '');\n\n return { r, g, b, a };\n }\n\n return {\n r: 255,\n g: 255,\n b: 255,\n a: 1,\n };\n};\n\nexport const hexToRgb = (hex: string): RGBA => {\n let r: number;\n let g: number;\n let b: number;\n let a: number;\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i.exec(hex);\n\n if (result) {\n r = parseInt(result[1] ?? '0', 16);\n g = parseInt(result[2] ?? '0', 16);\n b = parseInt(result[3] ?? '0', 16);\n a = result[4] ? parseInt(result[4], 16) / 100 : 1;\n\n return { r, g, b, a };\n }\n\n return {\n r: 255,\n g: 255,\n b: 255,\n a: 1,\n };\n};\n\nexport const rgbToHex = ({ r, g, b, a = 1 }: RGBA): string => {\n const clamp = (value: number) => Math.max(0, Math.min(255, Math.round(value)));\n const alpha = Math.max(0, Math.min(1, a));\n const hex = (x: number) => {\n const hexValue = clamp(x).toString(16);\n return hexValue.length === 1 ? `0${hexValue}` : hexValue;\n };\n return `#${hex(r)}${hex(g)}${hex(b)}${alpha <= 1 ? hex(alpha * 100) : ''}`;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const putSiteColors: (colorsArray: string[]) => Promise<boolean>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
interface IColorPickerContext {
|
|
3
|
+
selectedColor?: string;
|
|
4
|
+
updateSelectedColor?: (color: string | undefined) => void;
|
|
5
|
+
hueColor?: string;
|
|
6
|
+
updateHueColor?: (color: string | undefined) => void;
|
|
7
|
+
isPresetColor?: boolean;
|
|
8
|
+
updateIsPresetColor?: (isPresetColor: boolean) => void;
|
|
9
|
+
shouldGetCoordinates?: boolean;
|
|
10
|
+
updateShouldGetCoordinates?: (shouldGetCoordinates: boolean) => void;
|
|
11
|
+
shouldCallOnSelect?: boolean;
|
|
12
|
+
updateShouldCallOnSelect?: (shouldCallOnSelect: boolean) => void;
|
|
13
|
+
canGetColorFromArea?: boolean;
|
|
14
|
+
updateCanGetColorFromArea?: (canGetColorFromArea: boolean) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const ColorPickerContext: React.Context<IColorPickerContext>;
|
|
17
|
+
interface ColorPickerProviderProps {
|
|
18
|
+
/**
|
|
19
|
+
* The children of the provider.
|
|
20
|
+
*/
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Function to be executed when a color is selected.
|
|
24
|
+
*/
|
|
25
|
+
onSelect?: (color: string) => void;
|
|
26
|
+
/**
|
|
27
|
+
* The color that should be preselected.
|
|
28
|
+
*/
|
|
29
|
+
selectedColor?: string;
|
|
30
|
+
}
|
|
31
|
+
declare const ColorPickerProvider: {
|
|
32
|
+
({ children, selectedColor, onSelect }: ColorPickerProviderProps): React.JSX.Element;
|
|
33
|
+
displayName: string;
|
|
34
|
+
};
|
|
35
|
+
export default ColorPickerProvider;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import type { IPresetColor } from '../../types/colorPicker';
|
|
3
|
+
interface ColorPickerProps {
|
|
4
|
+
/**
|
|
5
|
+
* The element that should be rendered to trigger the ColorPicker popup on click.
|
|
6
|
+
*/
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Function to be executed when a preset color is added.
|
|
10
|
+
*/
|
|
11
|
+
onPresetColorAdd?: (presetColor: IPresetColor) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Function to be executed when a preset color is removed.
|
|
14
|
+
*/
|
|
15
|
+
onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Function to be executed when a color is selected.
|
|
18
|
+
*/
|
|
19
|
+
onSelect?: (color: string) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Colors the user can select from.
|
|
22
|
+
*/
|
|
23
|
+
presetColors?: IPresetColor[];
|
|
24
|
+
/**
|
|
25
|
+
* The color that should be preselected.
|
|
26
|
+
*/
|
|
27
|
+
selectedColor?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the ColorPicker should be displayed inside a popup.
|
|
30
|
+
*/
|
|
31
|
+
shouldShowAsPopup?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the more options accordion should be displayed.
|
|
34
|
+
*/
|
|
35
|
+
shouldShowMoreOptions?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether the preset colors should be displayed.
|
|
38
|
+
*/
|
|
39
|
+
shouldShowPresetColors?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the preview color should be displayed as text.
|
|
42
|
+
*/
|
|
43
|
+
shouldShowPreviewColorString?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Whether the preview color should be displayed round.
|
|
46
|
+
*/
|
|
47
|
+
shouldShowRoundPreviewColor?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Whether the transparency slider should be displayed.
|
|
50
|
+
*/
|
|
51
|
+
shouldShowTransparencySlider?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Whether presetColors should be got and uploaded to the site storage.
|
|
54
|
+
*/
|
|
55
|
+
shouldUseSiteColors?: boolean;
|
|
56
|
+
}
|
|
57
|
+
declare const ColorPicker: {
|
|
58
|
+
({ children, onPresetColorAdd, onPresetColorRemove, onSelect, presetColors, selectedColor, shouldShowAsPopup, shouldShowMoreOptions, shouldShowPresetColors, shouldShowPreviewColorString, shouldShowRoundPreviewColor, shouldShowTransparencySlider, shouldUseSiteColors, }: ColorPickerProps): React.JSX.Element;
|
|
59
|
+
displayName: string;
|
|
60
|
+
};
|
|
61
|
+
export default ColorPicker;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const StyledColorPicker: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import type { IPresetColor } from '../../../types/colorPicker';
|
|
3
|
+
interface ColorPickerWrapperProps {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
onPresetColorAdd?: (presetColor: IPresetColor) => void;
|
|
6
|
+
onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
|
|
7
|
+
presetColors?: IPresetColor[];
|
|
8
|
+
shouldShowAsPopup: boolean;
|
|
9
|
+
shouldShowMoreOptions: boolean;
|
|
10
|
+
shouldShowPresetColors: boolean;
|
|
11
|
+
shouldShowPreviewColorString: boolean;
|
|
12
|
+
shouldShowRoundPreviewColor: boolean;
|
|
13
|
+
shouldShowTransparencySlider: boolean;
|
|
14
|
+
shouldUseSiteColors: boolean;
|
|
15
|
+
}
|
|
16
|
+
declare const ColorPickerWrapper: {
|
|
17
|
+
({ children, onPresetColorAdd, onPresetColorRemove, presetColors, shouldShowAsPopup, shouldShowMoreOptions, shouldShowPresetColors, shouldShowPreviewColorString, shouldShowRoundPreviewColor, shouldShowTransparencySlider, shouldUseSiteColors, }: ColorPickerWrapperProps): React.JSX.Element;
|
|
18
|
+
displayName: string;
|
|
19
|
+
};
|
|
20
|
+
export default ColorPickerWrapper;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WithTheme } from '@chayns-components/core';
|
|
2
|
+
export declare const StyledColorPickerWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
3
|
+
export declare const StyledColorPickerWrapperInfo: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
4
|
+
type StyledColorPickerWrapperInfoColorProps = WithTheme<{
|
|
5
|
+
$color?: string;
|
|
6
|
+
}>;
|
|
7
|
+
type StyledColorPickerWrapperInfoColorWrapperProps = WithTheme<{
|
|
8
|
+
$shouldShowRoundPreviewColor: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const StyledColorPickerWrapperInfoColorWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, StyledColorPickerWrapperInfoColorWrapperProps>> & string;
|
|
11
|
+
export declare const StyledColorPickerWrapperInfoColorBackground: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
12
|
+
export declare const StyledColorPickerWrapperInfoColor: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components/dist/types").Substitute<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
13
|
+
ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
14
|
+
}>, StyledColorPickerWrapperInfoColorProps>, never>> & string;
|
|
15
|
+
export declare const StyledColorPickerWrapperInfoText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
|
|
16
|
+
theme: import("@chayns-components/core/lib/types/components/color-scheme-provider/ColorSchemeProvider").Theme;
|
|
17
|
+
}>> & string;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { IPresetColor } from '../../types/colorPicker';
|
|
3
|
+
interface ColorPickerPopupProps {
|
|
4
|
+
presetColors?: IPresetColor[];
|
|
5
|
+
shouldShowPresetColors: boolean;
|
|
6
|
+
onPresetColorAdd?: (presetColor: IPresetColor) => void;
|
|
7
|
+
onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
|
|
8
|
+
shouldShowTransparencySlider: boolean;
|
|
9
|
+
shouldShowMoreOptions: boolean;
|
|
10
|
+
shouldUseSiteColors: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const ColorPickerPopup: {
|
|
13
|
+
({ presetColors, onPresetColorRemove, onPresetColorAdd, shouldShowPresetColors, shouldShowTransparencySlider, shouldUseSiteColors, shouldShowMoreOptions, }: ColorPickerPopupProps): React.JSX.Element;
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
export default ColorPickerPopup;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const StyledColorPickerPopup: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|