@trellixio/roaster-coffee
Version:
Beans' product component library
19 lines (18 loc) • 1.09 kB
JavaScript
import * as React from 'react';
import { classNames, useUid } from '@/utils';
export const Switch = React.forwardRef((props, ref) => {
const { id, label, name, disabled, defaultChecked = false, helpText, labelClassName, inputClassName, onChange, } = props;
const [checked, setChecked] = React.useState(defaultChecked);
const uid = useUid(id);
const handleChange = (event) => {
setChecked(event.currentTarget.checked);
onChange === null || onChange === void 0 ? void 0 : onChange(event.currentTarget.checked);
};
return (React.createElement("label", { htmlFor: uid },
label && React.createElement("p", { className: labelClassName }, label),
React.createElement("span", { className: classNames('switch', inputClassName) },
React.createElement("input", { ref: ref, type: "checkbox", name: name, id: uid, checked: checked, disabled: disabled, onChange: handleChange }),
React.createElement("figure", null)),
helpText && React.createElement("small", null, helpText)));
});
Switch.displayName = 'Switch';