import styled from 'styled-components'; import {ChangeEventHandler, FC, ReactChild} from 'react'; const Base = styled('div')({ height: '3rem', borderRadius: '0.25rem', overflow: 'hidden', position: 'relative', '::after': { content: "''", borderWidth: 1, borderStyle: 'solid', borderColor: 'inherit', position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', borderRadius: 'inherit', boxSizing: 'border-box', pointerEvents: 'none', opacity: 0.5, }, }) const ClickArea = styled('label')({ display: 'block', width: '100%', height: '100%', margin: 0, padding: '0 1rem', boxSizing: 'border-box', font: 'inherit', border: 0, backgroundColor: 'transparent', color: 'inherit', outline: 0, textTransform: 'uppercase', fontWeight: 'bolder', position: 'relative', borderRadius: 'inherit', }) const Input = styled('input')({ position: 'absolute', left: -999999, }) const ButtonWrapper = styled('span')({ display: 'grid', placeContent: 'center', borderRadius: 'inherit', position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', lineHeight: 0, cursor: 'pointer', [`${Input}:disabled + &`]: { cursor: 'not-allowed', }, [`${Input}:checked + &`]: { backgroundColor: 'Highlight !important', }, }) const VARIANTS = { default: { backgroundColor: 'var(--color-bg, white)', borderColor: 'var(--color-fg, black)', color: 'var(--color-fg, black)', }, primary: { backgroundColor: 'var(--color-fg, black)', borderColor: 'var(--color-fg, black)', color: 'var(--color-bg, white)', }, } type Props = { children?: ReactChild, className?: string, type?: 'checkbox' | 'radio', block?: boolean, variant?: keyof typeof VARIANTS, name?: string, value?: string, defaultChecked?: boolean, onChange?: ChangeEventHandler, disabled?: boolean, } const ToggleButton: FC = ({ children, className, type = 'checkbox', block, variant = 'default', ...etcProps }) => { return ( {children} ) } export default ToggleButton