11import styled , { css } from "styled-components"
2+ import { lighten , darken } from "polished"
23import { getColor , getSizeBy , DefaultTheme , DarkTheme } from "src/theme"
34import margin from "src/mixins/margin"
45import padding from "src/mixins/padding"
@@ -28,25 +29,29 @@ const withTheme = props => {
2829}
2930
3031const 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 )
3235
3336const 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 )
3639const getHoverColor = props =>
3740 props . neutral ? getColor ( "textFocus" ) ( props ) : getColor ( "accent" ) ( props )
3841const 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 )
4443const getTransparent = getColor ( [ "transparent" , "full" ] )
4544
4645const colorsByFlavour = ( { flavour = DEFAULT , danger, warning, iconColor } ) => {
4746 const getErrorColor = danger ? getColor ( "error" ) : undefined
4847 const getWarningColor = warning ? getColor ( "warning" ) : undefined
4948 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
5055 const specialIconColor = iconColor ? getColor ( iconColor ) : undefined
5156
5257 const flavours = {
@@ -55,44 +60,44 @@ const colorsByFlavour = ({ flavour = DEFAULT, danger, warning, iconColor }) => {
5560 colorHover : getTextColor ,
5661 colorActive : getTextColor ,
5762 bg : getSpecialColor || getPrimaryColor ,
58- bgHover : getSpecialColor || getHoverColor ,
59- bgActive : getSpecialColor || getAccentColor ,
63+ bgHover : getSpecialColorHover || getHoverColor ,
64+ bgActive : getSpecialColorActive || getAccentColor ,
6065 border : getSpecialColor || getPrimaryColor ,
61- borderHover : getSpecialColor || getHoverColor ,
62- borderActive : getSpecialColor || getAccentColor ,
66+ borderHover : getSpecialColorHover || getHoverColor ,
67+ borderActive : getSpecialColorActive || getAccentColor ,
6368 iconColor : specialIconColor || getTextColor ,
6469 } ,
6570 [ HOLLOW ] : {
6671 color : getSpecialColor || getPrimaryColor ,
67- colorHover : getSpecialColor || getAccentColor ,
68- colorActive : getSpecialColor || getAccentColor ,
72+ colorHover : getSpecialColorHover || getAccentColor ,
73+ colorActive : getSpecialColorActive || getAccentColor ,
6974 bg : getTransparent ,
7075 bgHover : getTransparent ,
71- bgActive : getSpecialColor || getMain ,
76+ bgActive : getTransparent ,
7277 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 ,
7681 } ,
7782 [ BORDER_LESS ] : {
7883 color : getSpecialColor || getPrimaryColor ,
79- colorHover : getSpecialColor || getAccentColor ,
80- colorActive : getSpecialColor || getAccentColor ,
84+ colorHover : getSpecialColorHover || getAccentColor ,
85+ colorActive : getSpecialColorActive || getAccentColor ,
8186 bg : getTransparent ,
8287 bgHover : getTransparent ,
8388 bgActive : getTransparent ,
8489 border : getTransparent ,
8590 borderHover : getTransparent ,
8691 borderActive : getTransparent ,
87- iconColor : specialIconColor || getTextColor ,
92+ iconColor : specialIconColor || getSpecialColor || getPrimaryColor ,
8893 } ,
8994 }
9095
9196 return flavours [ flavour ] || flavours [ DEFAULT ]
9297}
9398
9499export const StyledButton = styled . button . attrs ( props => ( {
95- padding : props . padding || [ 2 ] ,
100+ padding : props . padding || props . tiny ? [ 0.5 ] : props . small ? [ 1 ] : [ 2 ] ,
96101 colors : colorsByFlavour ( props ) ,
97102 ...withTheme ( props ) ,
98103} ) ) `
@@ -103,15 +108,6 @@ export const StyledButton = styled.button.attrs(props => ({
103108 position: relative;
104109 ${ alignSelf } ;
105110
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-
115111 font-weight: ${ ( { strong } ) => ( strong ? 700 : 500 ) } ;
116112 font-size: ${ ( { small, tiny } ) => ( tiny ? "10px" : small ? "12px" : "14px" ) } ;
117113 line-height: ${ getSizeBy ( 2 ) } ;
0 commit comments