forked from gorangajic/react-icon-base
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
54 lines (47 loc) · 1.18 KB
/
index.js
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
51
52
53
54
import React from 'react'
import PropTypes from 'prop-types'
const IconBase = ({ children, color, size, style = {}, width, height, ...props }, { reactIconBase = {} }) => {
const computedSize = size || reactIconBase.size || '1em'
const baseStyle = reactIconBase.style || {}
const styleProp = {
verticalAlign: 'middle',
...baseStyle,
...style
}
const computedColor = color || style.color || reactIconBase.color || baseStyle.color
if (computedColor) {
styleProp.color = computedColor
}
return (
<svg
children={children}
fill='currentColor'
preserveAspectRatio='xMidYMid meet'
height={height || computedSize}
width={width || computedSize}
{...reactIconBase}
{...props}
style={styleProp}
/>
)
}
IconBase.propTypes = {
color: PropTypes.string,
size: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
width: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
height: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
style: PropTypes.object
}
IconBase.contextTypes = {
reactIconBase: PropTypes.shape(IconBase.propTypes)
}
export default IconBase