/** * Copyright 2024 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved. */ import React, {ChangeEvent, MouseEvent} from 'react'; import styled from 'styled-components'; import {Label} from 'components/label'; import {theme} from 'components/shared/theme'; const {colors, spacing} = theme; const Container = styled.div` display: flex; flex-direction: row; align-items: center; label { margin-left: ${spacing.xxSmall}; margin-right: ${spacing.xxSmall}; } `; const CheckboxContainer = styled.div` display: inline-block; vertical-align: middle; outline: none; height: 1rem; `; const Icon = styled.svg` fill: none; stroke: ${colors.black}; stroke-width: 2px; `; const HiddenCheckbox = styled.input.attrs({type: 'checkbox'})` border: 0; clip: rect(0 0 0 0); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; width: 1px; `; const StyledCheckbox = styled.div<{checked?: boolean}>` display: inline-block; width: 1rem; height: 1rem; background: ${({checked}) => (checked ? colors.red : colors.transparent)}; border-radius: 3px; transition: all 150ms; outline: none; border: 1px solid ${({checked}) => (checked ? 'none' : colors.gray400)}; ${Icon} { visibility: ${({checked}) => (checked ? 'visible' : 'hidden')}; } `; const Checkbox = (props: { value: string; id?: string; checked?: boolean; onChange: (event: ChangeEvent | MouseEvent) => void; label?: string; }): React.JSX.Element => { const {checked, onChange, label, id} = props; return ( {label && ); }; export default Checkbox;