import PropTypes from 'prop-types';
import './Checkbox.scss';
-function Checkbox({ variant, isActive, onToggle }) {
+function Checkbox({
+ variant, isActive, onToggle, disabled,
+}) {
const className = `checkbox checkbox-${variant}${isActive ? ' checkbox--active' : ''}`;
if (onToggle === null) return <span className={className} />;
return (
onClick={() => onToggle(!isActive)}
className={className}
type="button"
+ disabled={disabled}
/>
);
}
variant: 'primary',
isActive: false,
onToggle: null,
+ disabled: false,
};
Checkbox.propTypes = {
variant: PropTypes.oneOf(['primary', 'positive', 'caution', 'danger']),
isActive: PropTypes.bool,
onToggle: PropTypes.func,
+ disabled: PropTypes.bool,
};
export default Checkbox;
@use '../../partials/flex';
+@use './state';
.checkbox {
width: 20px;
background-color: var(--bg-surface-border);
box-shadow: var(--bs-surface-border);
cursor: pointer;
+ @include state.disabled;
@extend .cp-fx__row--c-c;
&--active {
import PropTypes from 'prop-types';
import './RadioButton.scss';
-function RadioButton({ isActive, onToggle }) {
+function RadioButton({ isActive, onToggle, disabled }) {
if (onToggle === null) return <span className={`radio-btn${isActive ? ' radio-btn--active' : ''}`} />;
return (
// eslint-disable-next-line jsx-a11y/control-has-associated-label
onClick={() => onToggle(!isActive)}
className={`radio-btn${isActive ? ' radio-btn--active' : ''}`}
type="button"
+ disabled={disabled}
/>
);
}
RadioButton.defaultProps = {
isActive: false,
onToggle: null,
+ disabled: false,
};
RadioButton.propTypes = {
isActive: PropTypes.bool,
onToggle: PropTypes.func,
+ disabled: PropTypes.bool,
};
export default RadioButton;
@use '../../partials/flex';
+@use './state';
.radio-btn {
@extend .cp-fx__row--c-c;
background-color: var(--bg-surface-border);
border: 2px solid var(--bg-surface-border);
cursor: pointer;
+ @include state.disabled;
&::before {
content: '';
import PropTypes from 'prop-types';
import './Toggle.scss';
-function Toggle({ isActive, onToggle }) {
+function Toggle({ isActive, onToggle, disabled }) {
+ const className = `toggle${isActive ? ' toggle--active' : ''}`;
+ if (onToggle === null) return <span className={className} />;
return (
// eslint-disable-next-line jsx-a11y/control-has-associated-label
<button
onClick={() => onToggle(!isActive)}
- className={`toggle${isActive ? ' toggle--active' : ''}`}
+ className={className}
type="button"
+ disabled={disabled}
/>
);
}
Toggle.defaultProps = {
isActive: false,
+ disabled: false,
+ onToggle: null,
};
Toggle.propTypes = {
isActive: PropTypes.bool,
- onToggle: PropTypes.func.isRequired,
+ onToggle: PropTypes.func,
+ disabled: PropTypes.bool,
};
export default Toggle;
@use '../../partials/dir';
+@use './state';
.toggle {
width: 44px;
box-shadow: var(--bs-surface-border);
cursor: pointer;
background-color: var(--bg-surface-low);
+ @include state.disabled;
transition: background 200ms ease-in-out;