@@ -25,15 +25,57 @@ export const StyledTabs = styled(Flex).attrs(props => ({
2525 ...props ,
2626} ) ) ``
2727
28+ const colorsByFlavour = {
29+ success : { background : "menuItemSelected" , borderColor : "accent" , color : "menuItem" } ,
30+ warning : { background : "warningSemi" , borderColor : "warning" , color : "menuItem" } ,
31+ error : { background : "errorSemi" , borderColor : "error" , color : "menuItem" } ,
32+ default : { background : "modalBackground" , borderColor : "border" , color : "menuItem" } ,
33+ }
34+
35+ const activeColorsByFlavour = {
36+ success : { ...colorsByFlavour . success , color : "primary" } ,
37+ warning : { ...colorsByFlavour . warning , color : "warning" } ,
38+ error : { ...colorsByFlavour . error , color : "error" } ,
39+ default : { background : "menuItemSelected" , borderColor : "accent" , color : "primary" } ,
40+ }
41+
42+ const hoverColorsByFlavour = {
43+ ...colorsByFlavour ,
44+ default : { ...colorsByFlavour . default , borderColor : "primary" } ,
45+ }
46+
47+ const colors = ( { theme, active, green, flavour } ) => {
48+ const dictionary = active ? activeColorsByFlavour : colorsByFlavour
49+ const { background, borderColor, color } = dictionary [ flavour ] || dictionary . default
50+
51+ const styles = [
52+ `border-bottom-color: ${ getColor ( borderColor ) ( { theme } ) } ;` ,
53+ `background: ${ getColor ( background ) ( { theme } ) } ;` ,
54+ `& > span { color: ${ getColor ( color ) ( { theme } ) } ; }` ,
55+ ]
56+
57+ if ( ! active && green ) {
58+ styles . push ( `border-bottom-color: ${ getColor ( [ "transparent" , "full" ] ) ( { theme } ) } ;` )
59+ }
60+
61+ const hoverStyles = [
62+ `&:hover {
63+ border-bottom-color: ${ getColor ( ( hoverColorsByFlavour [ flavour ] || hoverColorsByFlavour . default ) ?. borderColor ) ( { theme } ) } ;
64+ }` ,
65+ ]
66+
67+ return [ ...styles , ...hoverStyles ] . join ( "" )
68+ }
69+
2870export const StyledTab = styled ( Flex ) . attrs ( props => ( {
2971 small : true ,
3072 padding : [ 0 , 6 ] ,
3173 ...props ,
3274} ) ) `
3375 white-space: nowrap;
34- border-bottom: 1px solid
35- ${ ( { active , green } ) =>
36- active ? getColor ( "accent" ) : green ? getColor ( [ "transparent" , "full" ] ) : getColor ( "border" ) } ;
76+ border-bottom-width : 1px;
77+ border-bottom-style: solid;
78+
3779 box-sizing: border-box;
3880
3981 border-radius: 2px 2px 0 0;
@@ -44,19 +86,12 @@ export const StyledTab = styled(Flex).attrs(props => ({
4486
4587 cursor: pointer;
4688 opacity: ${ ( { disabled } ) => ( disabled ? 0.4 : 1 ) } ;
47- background: ${ ( { active } ) =>
48- active ? getColor ( "menuItemSelected" ) : getColor ( "modalBackground" ) } ;
89+
4990 pointer-events: ${ ( { disabled } ) => ( disabled ? "none" : "auto" ) } ;
5091
5192 margin-bottom: -1px;
5293
53- &:hover {
54- border-bottom: 1px solid ${ getColor ( "primary" ) } ;
55- }
56-
57- & > span {
58- color: ${ ( { active } ) => ( active ? getColor ( "primary" ) : getColor ( "menuItem" ) ) } ;
59- }
94+ ${ colors }
6095`
6196
6297export const StyledTabMenu = styled ( Flex ) `
0 commit comments