forked from alibaba/lowcode-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsvg-icon.tsx
More file actions
50 lines (46 loc) · 879 Bytes
/
svg-icon.tsx
File metadata and controls
50 lines (46 loc) · 879 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import React, { ReactNode } from 'react';
const SizePresets: any = {
xsmall: 8,
small: 12,
medium: 16,
large: 20,
xlarge: 30,
};
export interface IconProps {
className?: string;
fill?: string;
size?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | number;
children?: ReactNode;
style?: Record<string, unknown>;
}
export function SVGIcon({
fill,
size = 'medium',
viewBox,
style,
children,
...props
}: IconProps & {
viewBox: string;
}) {
// eslint-disable-next-line no-prototype-builtins
if (SizePresets.hasOwnProperty(size)) {
size = SizePresets[size];
}
return (
<svg
fill="currentColor"
preserveAspectRatio="xMidYMid meet"
width={size}
height={size}
viewBox={viewBox}
{...props}
style={{
color: fill,
...style,
}}
>
{children}
</svg>
);
}