1
1
import styled , { css } from "styled-components"
2
+ import { lighten , darken } from "polished"
2
3
import { getColor , getSizeBy , DefaultTheme , DarkTheme } from "src/theme"
3
4
import margin from "src/mixins/margin"
4
5
import padding from "src/mixins/padding"
@@ -28,25 +29,29 @@ const withTheme = props => {
28
29
}
29
30
30
31
const getPrimaryColor = props =>
31
- props . neutral ? getColor ( "text" ) ( props ) : getColor ( "primary" ) ( props )
32
+ props . neutral
33
+ ? getColor ( props . flavour === HOLLOW ? "textFocus" : "text" ) ( props )
34
+ : getColor ( "primary" ) ( props )
32
35
33
36
const getBorderColor = props =>
34
- props . neutral ? getColor ( "border " ) ( props ) : getColor ( "primary" ) ( props )
35
- const getTextColor = getColor ( "bright" )
37
+ props . neutral ? getColor ( "textFocus " ) ( props ) : getColor ( "primary" ) ( props )
38
+ const getTextColor = props => getColor ( "mainBackground" ) ( props )
36
39
const getHoverColor = props =>
37
40
props . neutral ? getColor ( "textFocus" ) ( props ) : getColor ( "accent" ) ( props )
38
41
const getAccentColor = props =>
39
- props . neutral ? getColor ( "textFocus" ) ( props ) : getColor ( "successLite" ) ( props )
40
- const getMain = props =>
41
- props . neutral
42
- ? getColor ( props . disabled ? "disabled" : "mainBackground" ) ( props )
43
- : getColor ( "mainBackground" ) ( props )
42
+ props . neutral ? lighten ( 0.2 , getColor ( "textFocus" ) ( props ) ) : getColor ( "successLite" ) ( props )
44
43
const getTransparent = getColor ( [ "transparent" , "full" ] )
45
44
46
45
const colorsByFlavour = ( { flavour = DEFAULT , danger, warning, iconColor } ) => {
47
46
const getErrorColor = danger ? getColor ( "error" ) : undefined
48
47
const getWarningColor = warning ? getColor ( "warning" ) : undefined
49
48
const getSpecialColor = getErrorColor || getWarningColor
49
+ const getSpecialColorHover = getSpecialColor
50
+ ? props => lighten ( 0.2 , getSpecialColor ( props ) )
51
+ : undefined
52
+ const getSpecialColorActive = getSpecialColor
53
+ ? props => darken ( 0.2 , getSpecialColor ( props ) )
54
+ : undefined
50
55
const specialIconColor = iconColor ? getColor ( iconColor ) : undefined
51
56
52
57
const flavours = {
@@ -55,44 +60,44 @@ const colorsByFlavour = ({ flavour = DEFAULT, danger, warning, iconColor }) => {
55
60
colorHover : getTextColor ,
56
61
colorActive : getTextColor ,
57
62
bg : getSpecialColor || getPrimaryColor ,
58
- bgHover : getSpecialColor || getHoverColor ,
59
- bgActive : getSpecialColor || getAccentColor ,
63
+ bgHover : getSpecialColorHover || getHoverColor ,
64
+ bgActive : getSpecialColorActive || getAccentColor ,
60
65
border : getSpecialColor || getPrimaryColor ,
61
- borderHover : getSpecialColor || getHoverColor ,
62
- borderActive : getSpecialColor || getAccentColor ,
66
+ borderHover : getSpecialColorHover || getHoverColor ,
67
+ borderActive : getSpecialColorActive || getAccentColor ,
63
68
iconColor : specialIconColor || getTextColor ,
64
69
} ,
65
70
[ HOLLOW ] : {
66
71
color : getSpecialColor || getPrimaryColor ,
67
- colorHover : getSpecialColor || getAccentColor ,
68
- colorActive : getSpecialColor || getAccentColor ,
72
+ colorHover : getSpecialColorHover || getAccentColor ,
73
+ colorActive : getSpecialColorActive || getAccentColor ,
69
74
bg : getTransparent ,
70
75
bgHover : getTransparent ,
71
- bgActive : getSpecialColor || getMain ,
76
+ bgActive : getTransparent ,
72
77
border : getSpecialColor || getBorderColor ,
73
- borderHover : getSpecialColor || getHoverColor ,
74
- borderActive : getSpecialColor || getAccentColor ,
75
- iconColor : specialIconColor || getTextColor ,
78
+ borderHover : getSpecialColorHover || getAccentColor ,
79
+ borderActive : getSpecialColorActive || getAccentColor ,
80
+ iconColor : specialIconColor || getSpecialColor || getPrimaryColor ,
76
81
} ,
77
82
[ BORDER_LESS ] : {
78
83
color : getSpecialColor || getPrimaryColor ,
79
- colorHover : getSpecialColor || getAccentColor ,
80
- colorActive : getSpecialColor || getAccentColor ,
84
+ colorHover : getSpecialColorHover || getAccentColor ,
85
+ colorActive : getSpecialColorActive || getAccentColor ,
81
86
bg : getTransparent ,
82
87
bgHover : getTransparent ,
83
88
bgActive : getTransparent ,
84
89
border : getTransparent ,
85
90
borderHover : getTransparent ,
86
91
borderActive : getTransparent ,
87
- iconColor : specialIconColor || getTextColor ,
92
+ iconColor : specialIconColor || getSpecialColor || getPrimaryColor ,
88
93
} ,
89
94
}
90
95
91
96
return flavours [ flavour ] || flavours [ DEFAULT ]
92
97
}
93
98
94
99
export const StyledButton = styled . button . attrs ( props => ( {
95
- padding : props . padding || [ 2 ] ,
100
+ padding : props . padding || props . tiny ? [ 0.5 ] : props . small ? [ 1 ] : [ 2 ] ,
96
101
colors : colorsByFlavour ( props ) ,
97
102
...withTheme ( props ) ,
98
103
} ) ) `
@@ -103,15 +108,6 @@ export const StyledButton = styled.button.attrs(props => ({
103
108
position: relative;
104
109
${ alignSelf } ;
105
110
106
- width: ${ props =>
107
- props . width
108
- ? props . width
109
- : getSizeBy ( props . tiny ? 2 : props . small ? 3 : props . hasLabel ? 16 : 4 ) } ;
110
- height: ${ props =>
111
- props . height
112
- ? props . height
113
- : getSizeBy ( props . tiny ? 2 : props . small ? 3 : props . hasLabel ? 5 : 4 ) } ;
114
-
115
111
font-weight: ${ ( { strong } ) => ( strong ? 700 : 500 ) } ;
116
112
font-size: ${ ( { small, tiny } ) => ( tiny ? "10px" : small ? "12px" : "14px" ) } ;
117
113
line-height: ${ getSizeBy ( 2 ) } ;
0 commit comments