// @flow
import * as React from "react";
import styled from "styled-components";
import { LabelText } from "components/Input";
type Props = {
width?: number,
height?: number,
label?: string,
id?: string,
};
function Switch({ width = 38, height = 20, label, ...props }: Props) {
const component = (
);
if (label) {
return (
);
}
return component;
}
const Label = styled.label`
display: flex;
align-items: center;
`;
const Wrapper = styled.label`
position: relative;
display: inline-block;
width: ${props => props.width}px;
height: ${props => props.height}px;
margin-bottom: 4px;
`;
const Slider = styled.span`
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: ${props => props.theme.slate};
-webkit-transition: 0.4s;
transition: 0.4s;
border-radius: ${props => props.height}px;
&:before {
position: absolute;
content: "";
height: ${props => props.height - 8}px;
width: ${props => props.height - 8}px;
left: 4px;
bottom: 4px;
background-color: white;
border-radius: 50%;
-webkit-transition: 0.4s;
transition: 0.4s;
}
`;
const HiddenInput = styled.input`
opacity: 0;
width: 0;
height: 0;
visibility: hidden;
&:checked + ${Slider} {
background-color: ${props => props.theme.primary};
}
&:focus + ${Slider} {
box-shadow: 0 0 1px ${props => props.theme.primary};
}
&:checked + ${Slider}:before {
transform: translateX(${props => props.width - props.height}px);
}
`;
export default Switch;