import React from "react"; import styled from "styled-components"; const Container = styled.label` display: block; position: relative; padding-left: 35px; margin-bottom: 12px; cursor: pointer; font-size: 22px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* On mouse-over, add a grey background color */ &:hover input ~ .checkbox { background-color: #ccc; } /* When the checkbox is checked, add a blue background */ & input:checked ~ .checkbox { background-color: #2196F3; } /* Style the checkmark/indicator */ & .checkbox:after { left: 9px; top: 5px; width: 5px; height: 10px; border: solid white; border-width: 0 3px 3px 0; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } /* Show the checkmark when checked */ & input:checked ~ .checkbox:after { display: block; } `; /* Hide the browser's default checkbox */ const DefaultBox = styled.input` position: absolute; opacity: 0; cursor: pointer; height: 0; width: 0; `; /* Create a custom checkbox */ const CustomBox = styled.span` position: absolute; top: 0; left: 0; height: 25px; width: 25px; background-color: #eee; /* Create the checkmark/indicator (hidden when not checked) */ &:after { content: ""; position: absolute; display: none; } `; type CheckboxProps = Omit< React.InputHTMLAttributes, "type" >; const Checkbox: React.FC = ({children, ...props}) => ( {children} ) export default Checkbox;