ar-design 0.3.3 → 0.3.5
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/dist/assets/css/components/data-display/dnd/dnd.css +62 -40
- package/dist/assets/css/components/data-display/kanban-board/styles.css +68 -0
- package/dist/assets/css/components/data-display/table/styles.css +30 -0
- package/dist/assets/css/components/form/upload/dropzone.css +1 -0
- package/dist/components/data-display/diagram/index.d.ts +2 -1
- package/dist/components/data-display/diagram/index.js +11 -3
- package/dist/components/data-display/dnd/IProps.d.ts +2 -1
- package/dist/components/data-display/dnd/index.d.ts +1 -1
- package/dist/components/data-display/dnd/index.js +55 -17
- package/dist/components/data-display/kanban-board/IProps.d.ts +5 -0
- package/dist/components/data-display/kanban-board/IProps.js +1 -0
- package/dist/components/data-display/kanban-board/index.d.ts +5 -0
- package/dist/components/data-display/kanban-board/index.js +71 -0
- package/dist/components/data-display/table/Editable.d.ts +9 -0
- package/dist/components/data-display/table/Editable.js +44 -0
- package/dist/components/data-display/table/IProps.d.ts +1 -0
- package/dist/components/data-display/table/index.js +10 -5
- package/dist/components/feedback/popup/index.js +2 -2
- package/dist/components/form/date-picker/Props.d.ts +2 -2
- package/dist/components/form/date-picker/index.js +2 -2
- package/dist/components/form/upload/Buttons.js +2 -2
- package/dist/components/form/upload/Dropzone.js +3 -4
- package/dist/components/form/upload/List.js +1 -1
- package/dist/components/form/upload/Props.d.ts +3 -46
- package/dist/components/form/upload/index.js +50 -101
- package/dist/components/icons/Compiler.d.ts +2 -2
- package/dist/components/icons/Compiler.js +118 -124
- package/dist/components/icons/index.d.ts +1 -2
- package/dist/components/icons/index.js +2 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/libs/core/service/Api.js +0 -2
- package/dist/libs/infrastructure/shared/Utils.d.ts +1 -2
- package/dist/libs/infrastructure/shared/Utils.js +2 -4
- package/dist/libs/types/index.d.ts +13 -2
- package/package.json +1 -1
|
@@ -21,7 +21,7 @@ const months = [
|
|
|
21
21
|
{ value: 10, text: "Kasım" },
|
|
22
22
|
{ value: 11, text: "Aralık" },
|
|
23
23
|
];
|
|
24
|
-
const DatePicker = ({ onChange, isClock, validation, ...attributes }) => {
|
|
24
|
+
const DatePicker = ({ variant, color, onChange, isClock, validation, ...attributes }) => {
|
|
25
25
|
// refs
|
|
26
26
|
const _arCalendar = useRef(null);
|
|
27
27
|
const _arClock = useRef(null);
|
|
@@ -249,7 +249,7 @@ const DatePicker = ({ onChange, isClock, validation, ...attributes }) => {
|
|
|
249
249
|
attributes.placeholder && attributes.placeholder.length > 0 && (React.createElement("label", null,
|
|
250
250
|
validation ? "* " : "",
|
|
251
251
|
attributes.placeholder)),
|
|
252
|
-
React.createElement(Input, { ref: _beginDate, ...attributes, value: DATE.ParseValue(String(attributes.value), isClock), type: isClock ? "datetime-local" : "date", onKeyDown: (event) => {
|
|
252
|
+
React.createElement(Input, { ref: _beginDate, variant: variant, color: color, ...attributes, value: DATE.ParseValue(String(attributes.value), isClock), type: isClock ? "datetime-local" : "date", onKeyDown: (event) => {
|
|
253
253
|
if (event.code === "Space")
|
|
254
254
|
event.preventDefault();
|
|
255
255
|
else if (event.code === "Enter")
|
|
@@ -13,13 +13,13 @@ const Buttons = ({ selectedFile, handleFileToBase64, handleFileRemove }) => {
|
|
|
13
13
|
a.click();
|
|
14
14
|
window.URL.revokeObjectURL(url);
|
|
15
15
|
} }),
|
|
16
|
-
selectedFile.type.includes("image") && (React.createElement(Button, { variant: "borderless", color: "blue", type: "button", icon: { element: React.createElement(ARIcon, {
|
|
16
|
+
selectedFile.type.includes("image") && (React.createElement(Button, { variant: "borderless", color: "blue", type: "button", icon: { element: React.createElement(ARIcon, { icon: "Eye-Fill", fill: "currentColor" }) }, onClick: async (e) => {
|
|
17
17
|
e.stopPropagation();
|
|
18
18
|
const base64 = await handleFileToBase64(selectedFile);
|
|
19
19
|
const newTab = window.open();
|
|
20
20
|
newTab?.document.write(`<img src="${base64}" title="${selectedFile.name}" alt="${selectedFile.name}" />`);
|
|
21
21
|
} })),
|
|
22
|
-
React.createElement(Button, { variant: "borderless", color: "red", type: "button", icon: { element: React.createElement(ARIcon, {
|
|
22
|
+
React.createElement(Button, { variant: "borderless", color: "red", type: "button", icon: { element: React.createElement(ARIcon, { icon: "Trash-Fill", fill: "currentColor" }) }, onClick: (e) => {
|
|
23
23
|
e.stopPropagation();
|
|
24
24
|
handleFileRemove(selectedFile);
|
|
25
25
|
} }))));
|
|
@@ -21,15 +21,13 @@ const Dropzone = ({ selectedFiles, validationErrors = [], handleFileToBase64, ha
|
|
|
21
21
|
handleSelectFile(file);
|
|
22
22
|
} },
|
|
23
23
|
message && (React.createElement("div", { className: "error" },
|
|
24
|
-
React.createElement(ARIcon, {
|
|
24
|
+
React.createElement(ARIcon, { icon: "ExclamationDiamond-Fill", fill: "var(--white)" }),
|
|
25
25
|
React.createElement("span", null, message))),
|
|
26
26
|
React.createElement(Buttons, { selectedFile: file, handleFileToBase64: handleFileToBase64, handleFileRemove: handleFileRemove }),
|
|
27
27
|
file.type.includes("image") ? (React.createElement("img", { src: base64 })) : (React.createElement(ARIcon, { icon: fileInfo.icon ?? "Document", fill: "var(--white)", size: 32 }))));
|
|
28
28
|
};
|
|
29
29
|
// useEffects
|
|
30
30
|
useEffect(() => {
|
|
31
|
-
if (selectedFiles.length === 0)
|
|
32
|
-
return;
|
|
33
31
|
(async () => {
|
|
34
32
|
const newMap = {};
|
|
35
33
|
for (const file of selectedFiles) {
|
|
@@ -38,12 +36,13 @@ const Dropzone = ({ selectedFiles, validationErrors = [], handleFileToBase64, ha
|
|
|
38
36
|
}
|
|
39
37
|
setFileBase64Map(newMap);
|
|
40
38
|
setSelectedFile(selectedFiles[0]);
|
|
41
|
-
setSelectedFileBase64(newMap[selectedFiles[0]
|
|
39
|
+
setSelectedFileBase64(newMap[selectedFiles[0]?.name]);
|
|
42
40
|
})();
|
|
43
41
|
}, [selectedFiles]);
|
|
44
42
|
return selectedFile ? (React.createElement(React.Fragment, null,
|
|
45
43
|
React.createElement("div", { className: "preview" },
|
|
46
44
|
selectedFile.type.includes("image") ? (React.createElement("img", { src: selectedFileBase64, className: "selected-image" })) : ("Önizleme Yok."),
|
|
45
|
+
React.createElement(Buttons, { selectedFile: selectedFile, handleFileToBase64: handleFileToBase64, handleFileRemove: handleFileRemove }),
|
|
47
46
|
React.createElement("div", { className: "informations" },
|
|
48
47
|
React.createElement("span", { className: "file-name" }, selectedFile.name),
|
|
49
48
|
React.createElement("div", null,
|
|
@@ -8,7 +8,7 @@ const List = ({ selectedFiles, validationErrors = [], handleFileToBase64, handle
|
|
|
8
8
|
const message = validationErrors.find((v) => v.fileName === selectedFile.name)?.message;
|
|
9
9
|
return (React.createElement("li", null,
|
|
10
10
|
message && (React.createElement("div", { className: "error" },
|
|
11
|
-
React.createElement(ARIcon, {
|
|
11
|
+
React.createElement(ARIcon, { icon: "ExclamationDiamond-Fill", fill: "var(--white)" }),
|
|
12
12
|
React.createElement("span", null, message))),
|
|
13
13
|
React.createElement(Buttons, { selectedFile: selectedFile, handleFileToBase64: handleFileToBase64, handleFileRemove: handleFileRemove }),
|
|
14
14
|
React.createElement("span", { className: "file-name" }, selectedFile.name),
|
|
@@ -14,7 +14,7 @@ interface IMultiple {
|
|
|
14
14
|
* />
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
files: File[];
|
|
18
18
|
/**
|
|
19
19
|
* Dosya seçimi veya değişikliğinde tetiklenen fonksiyon.
|
|
20
20
|
*
|
|
@@ -33,50 +33,6 @@ interface IMultiple {
|
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
35
|
onChange: (formData: FormData, files: File[], base64: string[], isInvalidFileExist: boolean) => void;
|
|
36
|
-
/**
|
|
37
|
-
* Çoklu dosya seçiminin aktif olduğunu belirtir.
|
|
38
|
-
*
|
|
39
|
-
* Örneğin;
|
|
40
|
-
* ```jsx
|
|
41
|
-
* <Upload multiple={true} />
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
multiple: true;
|
|
45
|
-
}
|
|
46
|
-
interface ISingle {
|
|
47
|
-
/**
|
|
48
|
-
* Yüklenen tek dosya veya undefined.
|
|
49
|
-
*
|
|
50
|
-
* Örneğin;
|
|
51
|
-
*
|
|
52
|
-
* ```jsx
|
|
53
|
-
* <Upload file={selectedFile} />
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
file: File | undefined;
|
|
57
|
-
/**
|
|
58
|
-
* Dosya seçimi veya değişikliğinde tetiklenen fonksiyon.
|
|
59
|
-
*
|
|
60
|
-
* @param formData - Dosyayla oluşturulmuş FormData nesnesi veya undefined.
|
|
61
|
-
* @param files - Seçilen dosya veya null.
|
|
62
|
-
*
|
|
63
|
-
* Örneğin;
|
|
64
|
-
*
|
|
65
|
-
* ```jsx
|
|
66
|
-
* <Upload onChange={(formData, file) => console.log(file)} />
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
onChange: (formData: FormData | undefined, files: File | null, base64: string) => void;
|
|
70
|
-
/**
|
|
71
|
-
* Çoklu dosya seçiminin devre dışı olduğunu belirtir.
|
|
72
|
-
*
|
|
73
|
-
* Örneğin;
|
|
74
|
-
*
|
|
75
|
-
* ```jsx
|
|
76
|
-
* <Upload multiple={false} />
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
multiple?: false;
|
|
80
36
|
}
|
|
81
37
|
type Props = {
|
|
82
38
|
/**
|
|
@@ -109,5 +65,6 @@ type Props = {
|
|
|
109
65
|
*/
|
|
110
66
|
maxSize?: number;
|
|
111
67
|
type?: "list" | "dropzone";
|
|
112
|
-
|
|
68
|
+
multiple?: boolean;
|
|
69
|
+
} & IMultiple & IValidation & IDisabled;
|
|
113
70
|
export default Props;
|
|
@@ -5,7 +5,7 @@ import { ARIcon } from "../../icons";
|
|
|
5
5
|
import Dropzone from "./Dropzone";
|
|
6
6
|
import Button from "../button";
|
|
7
7
|
import List from "./List";
|
|
8
|
-
const Upload = ({ text,
|
|
8
|
+
const Upload = ({ text, files, onChange, allowedTypes, maxSize, type = "list", multiple }) => {
|
|
9
9
|
// refs
|
|
10
10
|
const _firstLoad = useRef(false);
|
|
11
11
|
const _input = useRef(null);
|
|
@@ -15,45 +15,28 @@ const Upload = ({ text, file, onChange, allowedTypes, maxSize, type = "list", mu
|
|
|
15
15
|
// variables
|
|
16
16
|
const [className, setClassName] = useState(["button"]);
|
|
17
17
|
// states
|
|
18
|
-
const [selectedFile, setSelectedFile] = useState(undefined);
|
|
19
18
|
const [selectedFiles, setSelectedFiles] = useState([]);
|
|
20
19
|
const [validationErrors, setValidationErrors] = useState([]);
|
|
21
20
|
// methods
|
|
22
21
|
const handleFileChange = useCallback((files) => {
|
|
23
22
|
const _files = Array.from(files ?? []);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return [...prev, ...newFiles];
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
setSelectedFile(_files[0]);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
multiple ? setSelectedFiles(file) : setSelectedFile(file);
|
|
38
|
-
}
|
|
23
|
+
setSelectedFiles((prev) => {
|
|
24
|
+
const previousFileNames = prev.map((f) => f.name);
|
|
25
|
+
const newFiles = _files.filter((f) => !previousFileNames.includes(f.name)) ?? [];
|
|
26
|
+
return [...prev, ...newFiles];
|
|
27
|
+
});
|
|
39
28
|
}, []);
|
|
40
29
|
const handleFileRemove = useCallback((fileToRemove) => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
setSelectedFile(undefined);
|
|
55
|
-
setClassName((prev) => prev.filter((c) => c !== "has-file"));
|
|
56
|
-
}
|
|
30
|
+
const dataTransfer = new DataTransfer();
|
|
31
|
+
setSelectedFiles((prev) => {
|
|
32
|
+
const newList = prev.filter((x) => x.name !== fileToRemove.name);
|
|
33
|
+
newList.forEach((file) => dataTransfer.items.add(file));
|
|
34
|
+
if (_input.current)
|
|
35
|
+
_input.current.files = dataTransfer.files;
|
|
36
|
+
if (newList.length === 0)
|
|
37
|
+
setClassName((prev) => prev.filter((c) => c !== "has-file"));
|
|
38
|
+
return newList;
|
|
39
|
+
});
|
|
57
40
|
}, []);
|
|
58
41
|
const handleValidationFile = useCallback((file) => {
|
|
59
42
|
const newErrors = [];
|
|
@@ -106,15 +89,8 @@ const Upload = ({ text, file, onChange, allowedTypes, maxSize, type = "list", mu
|
|
|
106
89
|
e.preventDefault();
|
|
107
90
|
e.stopPropagation();
|
|
108
91
|
const files = e.dataTransfer.files;
|
|
109
|
-
if (files && files.length > 0)
|
|
110
|
-
|
|
111
|
-
setSelectedFiles(Array.from(files));
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
setSelectedFile(files[files.length - 1]);
|
|
115
|
-
_firstLoad.current = true;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
92
|
+
if (files && files.length > 0)
|
|
93
|
+
setSelectedFiles(Array.from(files));
|
|
118
94
|
setClassName((prev) => prev.filter((c) => c !== "dragging"));
|
|
119
95
|
}, []);
|
|
120
96
|
const renderUploadFile = (params) => {
|
|
@@ -130,65 +106,38 @@ const Upload = ({ text, file, onChange, allowedTypes, maxSize, type = "list", mu
|
|
|
130
106
|
setValidationErrors([]);
|
|
131
107
|
_validationErrors.current = [];
|
|
132
108
|
if (_input.current) {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
// Seçilmiş olan dosyalar validasyona gönderiliyor.
|
|
139
|
-
selectedFiles.forEach((f) => handleValidationFile(f));
|
|
140
|
-
const inValidFiles = Array.from(new Set(_validationErrors.current));
|
|
141
|
-
// Input içerisine dosyalar aktarılıyor.
|
|
142
|
-
selectedFiles.forEach((f) => dataTransfer.items.add(f));
|
|
143
|
-
_input.current.files = dataTransfer.files;
|
|
144
|
-
// Geçerli olan dosyalar alındı...
|
|
145
|
-
const validFiles = [...selectedFiles.filter((x) => !inValidFiles.includes(x.name))];
|
|
146
|
-
validFiles.forEach((f) => fileFormData.append("file", f));
|
|
147
|
-
// Geçerli olan dosyalar base64'e dönüştürülüyor...
|
|
148
|
-
const base64Array = await Promise.all(validFiles.map((validFile) => handleFileToBase64(validFile)));
|
|
149
|
-
onChange(fileFormData, validFiles, base64Array, _validationErrors.current.length === 0);
|
|
150
|
-
// Eğer dosya varsa.
|
|
151
|
-
setClassName((prev) => {
|
|
152
|
-
const index = prev.findIndex((c) => c === "has-file");
|
|
153
|
-
if (index === -1)
|
|
154
|
-
return [...prev, "has-file"];
|
|
155
|
-
return prev;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
if (selectedFile) {
|
|
160
|
-
handleValidationFile(selectedFile);
|
|
161
|
-
fileFormData.append("file", selectedFile);
|
|
162
|
-
onChange(fileFormData, selectedFile, await handleFileToBase64(selectedFile));
|
|
163
|
-
// Input içerisine dosyalar aktarılıyor.
|
|
164
|
-
dataTransfer.items.add(selectedFile);
|
|
165
|
-
_input.current.files = dataTransfer.files;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
onChange(undefined, null, "");
|
|
169
|
-
}
|
|
109
|
+
if (selectedFiles.length === 0) {
|
|
110
|
+
onChange(fileFormData, [], [], false);
|
|
111
|
+
return;
|
|
170
112
|
}
|
|
113
|
+
// Seçilmiş olan dosyalar validasyona gönderiliyor.
|
|
114
|
+
selectedFiles.forEach((f) => handleValidationFile(f));
|
|
115
|
+
const inValidFiles = Array.from(new Set(_validationErrors.current));
|
|
116
|
+
// Input içerisine dosyalar aktarılıyor.
|
|
117
|
+
selectedFiles.forEach((f) => dataTransfer.items.add(f));
|
|
118
|
+
_input.current.files = dataTransfer.files;
|
|
119
|
+
// Geçerli olan dosyalar alındı...
|
|
120
|
+
const validFiles = [...selectedFiles.filter((x) => !inValidFiles.includes(x.name))];
|
|
121
|
+
validFiles.forEach((f) => fileFormData.append("file", f));
|
|
122
|
+
// Geçerli olan dosyalar base64'e dönüştürülüyor...
|
|
123
|
+
const base64Array = await Promise.all(validFiles.map((validFile) => handleFileToBase64(validFile)));
|
|
124
|
+
onChange(fileFormData, validFiles, base64Array, _validationErrors.current.length === 0);
|
|
125
|
+
// Eğer dosya varsa.
|
|
126
|
+
setClassName((prev) => {
|
|
127
|
+
const index = prev.findIndex((c) => c === "has-file");
|
|
128
|
+
if (index === -1)
|
|
129
|
+
return [...prev, "has-file"];
|
|
130
|
+
return prev;
|
|
131
|
+
});
|
|
171
132
|
}
|
|
172
133
|
})();
|
|
173
|
-
}, [selectedFiles
|
|
134
|
+
}, [selectedFiles]);
|
|
174
135
|
useEffect(() => {
|
|
175
|
-
if (_firstLoad.current)
|
|
176
|
-
// if (multiple && file.length === 0) {
|
|
177
|
-
// setSelectedFiles([]);
|
|
178
|
-
// } else {
|
|
179
|
-
// if (!file) setSelectedFile(undefined);
|
|
180
|
-
// }
|
|
136
|
+
if (_firstLoad.current)
|
|
181
137
|
return;
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
_firstLoad.current = true;
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
setSelectedFile(file);
|
|
189
|
-
_firstLoad.current = true;
|
|
190
|
-
}
|
|
191
|
-
}, [file]);
|
|
138
|
+
setSelectedFiles(files);
|
|
139
|
+
_firstLoad.current = true;
|
|
140
|
+
}, [files]);
|
|
192
141
|
useEffect(() => {
|
|
193
142
|
if (type === "dropzone")
|
|
194
143
|
setClassName((prev) => [...prev, "dropzone"]);
|
|
@@ -197,11 +146,11 @@ const Upload = ({ text, file, onChange, allowedTypes, maxSize, type = "list", mu
|
|
|
197
146
|
case "list":
|
|
198
147
|
return renderUploadFile({
|
|
199
148
|
children: (React.createElement(React.Fragment, null,
|
|
200
|
-
React.createElement(Button, { variant: "outlined", color: "gray", icon: { element: React.createElement(ARIcon, {
|
|
149
|
+
React.createElement(Button, { variant: "outlined", color: "gray", icon: { element: React.createElement(ARIcon, { icon: "CloudUpload-Fill" }) }, onClick: () => {
|
|
201
150
|
if (_input.current)
|
|
202
151
|
_input.current.click();
|
|
203
152
|
} }, text && React.createElement("span", null, text)),
|
|
204
|
-
React.createElement(List, { selectedFiles: selectedFiles
|
|
153
|
+
React.createElement(List, { selectedFiles: selectedFiles ?? [], validationErrors: validationErrors, handleFileToBase64: handleFileToBase64, handleFileRemove: handleFileRemove }))),
|
|
205
154
|
});
|
|
206
155
|
case "dropzone":
|
|
207
156
|
return renderUploadFile({
|
|
@@ -210,10 +159,10 @@ const Upload = ({ text, file, onChange, allowedTypes, maxSize, type = "list", mu
|
|
|
210
159
|
if (_input.current)
|
|
211
160
|
_input.current.click();
|
|
212
161
|
} },
|
|
213
|
-
React.createElement(Dropzone, { selectedFiles: selectedFiles
|
|
214
|
-
|
|
162
|
+
React.createElement(Dropzone, { selectedFiles: selectedFiles ?? [], validationErrors: validationErrors, handleFileToBase64: handleFileToBase64, handleFileRemove: handleFileRemove }),
|
|
163
|
+
selectedFiles && selectedFiles.length === 0 && (React.createElement(React.Fragment, null,
|
|
215
164
|
React.createElement("div", { className: "upload" },
|
|
216
|
-
React.createElement(ARIcon, {
|
|
165
|
+
React.createElement(ARIcon, { icon: "CloudUpload-Fill", size: 32 }),
|
|
217
166
|
React.createElement("div", { className: "properies" },
|
|
218
167
|
allowedTypes && (React.createElement("div", { className: "allow-types" }, allowedTypes?.map((allowedType) => allowedType.split("/")[1].toLocaleUpperCase()).join(", "))),
|
|
219
168
|
maxSize && React.createElement("div", { className: "max-size" },
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Icons
|
|
2
|
+
import { Icons } from "../../libs/types";
|
|
3
3
|
declare class Icon {
|
|
4
4
|
private _stroke?;
|
|
5
5
|
private _strokeWidth?;
|
|
6
6
|
constructor(stroke?: string, strokeWidth?: number);
|
|
7
|
-
Compiler: (
|
|
7
|
+
Compiler: (icon: Icons) => React.JSX.Element | null;
|
|
8
8
|
}
|
|
9
9
|
export default Icon;
|