seti-ramesesv1
Version:
Reusable components and context for Next.js apps
20 lines (17 loc) • 1.51 kB
JavaScript
import { jsxs, jsx } from 'react/jsx-runtime';
import { clsx } from '../../node_modules/clsx/dist/clsx.js';
import styles from '../../styles/Radio.module.css.js';
import { useRadioGroupContext } from '../common/RadioGroup.js';
function Radio({ value, label, disabled: radioDisabled = false, labelPlacement = "right" }) {
const { name, selectedValue, onChange, size, disabled: groupDisabled } = useRadioGroupContext();
const stringValue = String(value);
const isDisabled = groupDisabled || radioDisabled;
const isChecked = selectedValue === stringValue;
return (jsxs("label", { className: clsx(styles.radioLabel, styles[labelPlacement], isDisabled ? styles.disabled : styles.enabled), children: [jsx("input", { type: "radio", name: name, value: stringValue, checked: isChecked, onChange: onChange, disabled: isDisabled, className: styles.radioInput }), jsx("div", { className: clsx(styles.radioOuter, styles[`${size}Outer`], {
[styles.checkedOuter]: isChecked && !isDisabled,
[styles.uncheckedOuter]: !isChecked,
[styles.disabledOuter]: isDisabled,
}), children: jsx("div", { className: clsx(styles.radioInner, styles[`${size}Inner`], isChecked ? styles.checkedInner : styles.uncheckedInner) }) }), label && (jsx("span", { className: clsx(styles[`${size}Label`], isDisabled ? styles.labelDisabled : styles.labelEnabled), children: label }))] }));
}
export { Radio as default };
//# sourceMappingURL=Radio.js.map