nano style
1.0.0
Reaccionar CSS-in-JS funcional
npm i nano-style import styled from 'nano-style'
const Button = styled ( 'button' ) ( props => ( {
fontFamily : 'inherit' ,
fontSize : '14px' ,
fontWeight : props . theme . bold ,
lineHeight : 16 / 14 ,
display : 'inline-block' ,
margin : 0 ,
paddingLeft : props . theme . space [ 3 ] + 'px' ,
paddingRight : props . theme . space [ 3 ] + 'px' ,
paddingTop : props . theme . space [ 2 ] + 'px' ,
paddingBottom : props . theme . space [ 2 ] + 'px' ,
verticalAlign : 'middle' ,
textAlign : 'center' ,
textDecoration : 'none' ,
borderRadius : props . theme . radius ,
border : 0 ,
appearance : 'none' ,
color : 'white' ,
backgroundColor : props . theme . colors . blue ,
'&:hover' : {
boxShadow : `inset 0 0 0 999px ${ darken ( 1 / 8 ) } `
} ,
'&:focus' : {
outline : 0 ,
boxShadow : `0 0 0 2px ${ props . theme . colors . blue } `
} ,
'&:active' : {
boxShadow : `inset 0 0 8px ${ darken ( 1 / 4 ) } `
} ,
'&:disabled' : {
opacity : 1 / 4
}
} ) ) import styled from 'nano-style/css'
const Button = styled ( 'button' ) `
font-family: inherit;
font-size: 14px;
font-weight: ${ props => props . theme . bold } ;
line-height: ${ 16 / 14 } ;
display: inline-block;
margin: 0;
padding-left: ${ props => props . theme . space [ 3 ] + 'px' } ;
padding-right: ${ props => props . theme . space [ 3 ] + 'px' } ;
padding-top: ${ props => props . theme . space [ 2 ] + 'px' } ;
padding-bottom: ${ props => props . theme . space [ 2 ] + 'px' } ;
vertical-align: middle;
text-align: center;
text-decoration: none;
border-radius: ${ props => props . theme . radius } ;
border: 0;
appearance: none;
color: white;
background-color: props.theme.colors.blue;
&:hover {
box-shadow: inset 0 0 0 999px ${ darken ( 1 / 8 ) } ;
}
&:focus {
outline: 0;
box-shadow: 0 0 0 2px ${ props => props . theme . colors . blue } ;
}
&:active {
box-shadow: inset 0 0 8px ${ darken ( 1 / 4 ) } ;
}
&:disabled {
opacity: 1/4
}
` Utilizando la capacidad de React 16 para devolver conjuntos de elementos, el estilo nano genera CSS durante la representación de componentes e inserta CSS en un elemento <style> en línea con el componente. La matriz devuelta se parece a esto:
return [
< Style css = { css } /> ,
< Component { ... props } />
]Actualmente, este enfoque no intenta deduplicar CSS repetido cuando un solo componente se representa en múltiples instancias. Si bien esto funciona, puede presentar algunos problemas de rendimiento leves cuando un componente se usa varias veces en una página.
Licencia de MIT