UNPKG

seti-ramesesv1

Version:

Reusable components and context for Next.js apps

20 lines (17 loc) 1.51 kB
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