@unicity/design-system
Version:
A comprehensive React component library built on Material-UI with advanced theming capabilities including neumorphism design support
21 lines • 1.67 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { RadioGroup, FormControlLabel, FormLabel, FormHelperText, } from '@mui/material';
import { StyledRadio, StyledFormControl } from './Radio.style';
export const Radio = ({ label, options, value, onChange, disabled = false, error = false, helperText, size = 'medium', color = 'primary', required = false, labelPlacement = 'end', row = false, groupLabel, ...props }) => {
const handleChange = (event) => {
if (onChange) {
onChange(event.target.value, event);
}
};
const radioElement = (_jsx(StyledRadio, { value: value, onChange: handleChange, disabled: disabled, size: size, color: color, required: required, ...props }));
// Single radio usage
if (label && !options) {
return (_jsx(FormControlLabel, { control: radioElement, label: label, labelPlacement: labelPlacement, disabled: disabled, required: required }));
}
// Radio group usage
if (options) {
return (_jsxs(StyledFormControl, { error: error, disabled: disabled, required: required, children: [groupLabel && (_jsx(FormLabel, { component: "legend", children: groupLabel })), _jsx(RadioGroup, { value: value, onChange: handleChange, row: row, children: options.map((option) => (_jsx(FormControlLabel, { value: option.value, control: _jsx(StyledRadio, { size: size, color: color, disabled: option.disabled || disabled }), label: option.label, labelPlacement: labelPlacement, disabled: option.disabled || disabled }, option.value))) }), helperText && (_jsx(FormHelperText, { children: helperText }))] }));
}
return radioElement;
};
//# sourceMappingURL=Radio.js.map