@buffetjs/styles
Version:
Buffetjs Styles - The styling solution of Buffetjs
96 lines (86 loc) • 1.84 kB
JavaScript
/**
*
* Checkbox
*
*/
import styled from 'styled-components';
import PropTypes from 'prop-types';
import colors from '../../assets/styles/colors';
import sizes from '../../assets/styles/sizes';
const Checkbox = styled.input`
cursor: pointer;
margin: 0;
position: relative;
width: ${sizes.checkbox.width};
&:focus,
&:active {
outline: 0;
}
&:before {
content: '';
position: absolute;
left: 0;
top: 50%;
margin-top: calc(-${sizes.checkbox.width} / 2);
width: ${sizes.checkbox.width};
height: ${sizes.checkbox.height};
border: 1px solid rgba(16, 22, 34, 0.15);
background-color: #fdfdfd;
border-radius: 3px;
box-sizing: border-box;
}
&:after {
display: none;
content: '\f00c';
font-family: 'FontAwesome';
position: absolute;
left: 0;
top: 55%;
margin-top: calc(-${sizes.checkbox.width} / 2);
width: ${sizes.checkbox.width};
height: ${sizes.checkbox.height};
text-align: center;
font-size: 9px;
color: ${colors.darkBlue};
line-height: ${sizes.checkbox.height};
}
&:checked {
&:after {
display: block;
}
}
${({ someChecked }) => {
if (someChecked) {
return `
&:after {
content: '\f068';
display: block;
top: 50%;
font-size: 10px;
}
`;
}
return '';
}}
&:disabled {
background-color: ${colors.greyIconBkgd};
cursor: initial;
&:after {
color: ${colors.brightGrey};
}
}
& + label {
display: inline-block;
font-weight: ${sizes.fontWeight.semiBold};
font-size: ${sizes.input.fontSize};
}
`;
Checkbox.defaultProps = {
someChecked: false,
type: 'checkbox',
};
Checkbox.propTypes = {
someChecked: PropTypes.bool,
type: PropTypes.string,
};
export default Checkbox;