import React from 'react';
import { css, cx } from '@leafygreen-ui/emotion';
import { useIdAllocator } from '@leafygreen-ui/hooks';
import { useDarkMode } from '@leafygreen-ui/leafygreen-provider';
import { Description, Label } from '@leafygreen-ui/typography';
import { Size } from '../types';
import {
containerSizeStyle,
containerStyle,
descriptionStyles,
disabledStyle,
hoverThemeStyles,
inputBaseStyle,
inputClassName,
inputDisplayBaseStyle,
inputDisplayClassName,
inputDisplaySizeStyles,
inputDisplayThemeStyles,
inputDisplayWrapperClassName,
inputThemeStyles,
labelBaseStyle,
labelWeightStyle,
radioBoxBaseStyle,
radioBoxSizeStyles,
} from './Radio.styles';
import { RadioProps } from './Radio.types';
/**
* # Radio
*
* Radio component
*
* ```
Radio 1
```
* @param props.disabled Boolean that determines if the Radio is disabled.
* @param props.children Content that will appear inside of Radio.
* @param props.value Used to determine what Radio is active.
* @param props.id Id for Radio and respective label.
* @param props.default If RadioGroup is uncontrolled, the default property makes this Radio checked on the initial render.
* @param props.className className supplied to Radio container.
* @param props.size Size of Radio buttons.
*/
function Radio({
children,
className,
onChange = () => {},
value,
disabled = false,
id,
name,
darkMode: darkModeProp,
checked,
size = Size.Default,
description,
bold,
...rest
}: RadioProps) {
const { darkMode } = useDarkMode(darkModeProp);
const normalizedSize =
size === Size.Small || size === Size.XSmall ? Size.Small : Size.Default;
const { theme } = useDarkMode(darkModeProp);
const descriptionId = useIdAllocator({});
const handleChange = (e: React.ChangeEvent) => {
if (!disabled) {
onChange?.(e);
}
};
return (
);
}
Radio.displayName = 'Radio';
export default Radio;