
"use client";
import React from 'react';
import { Box } from '@mui/material';
import { styled } from '@mui/material/styles';
import Radio, { RadioProps } from '@mui/material/Radio';
const BpIcon = styled('span')(({ theme }) => ({
borderRadius: '50%',
width: 21,
height: 21,
boxShadow:
theme.palette.mode === 'dark'
? '0 0 0 1px {theme.palette.grey[200]}'
: 'inset 0 0 0 1px {theme.palette.grey[300]}',
backgroundColor: 'transparent',
'.Mui-focusVisible &': {
outline:
theme.palette.mode === 'dark'
? '0px auto {theme.palette.grey[200]}'
: '0px auto {theme.palette.grey[300]}',
outlineOffset: 2,
},
'input:hover ~ &': {
backgroundColor: theme.palette.primary,
},
'input:disabled ~ &': {
boxShadow: 'none',
background: theme.palette.grey[100],
},
}));
const BpCheckedIcon = styled(BpIcon)(({ theme }) => ({
boxShadow: 'none',
'&:before': {
display: 'block',
width: 21,
height: 21,
backgroundImage:
theme.palette.mode === 'dark'
? 'radial-gradient({theme.palette.background.paper},{theme.palette.background.paper} 28%,transparent 32%)'
: 'radial-gradient(#fff,#fff 28%,transparent 32%)',
content: '""',
},
}));
function CustomRadio(props: RadioProps) {
return (
<Radio
disableRipple
color="default"
checkedIcon={
<BpCheckedIcon
sx={{
backgroundColor: props.color ? '{props.color}.main' : 'primary.main',
}}
/>
}
icon={<BpIcon />}
inputProps={{ 'aria-label': 'Checkbox demo' }}
{...props}
/>
);
}
const [checked, setChecked] = React.useState(true);
const handleChange = (event) => {
setChecked(event.target.checked);
};
<Box textAlign="center">
<CustomRadio
checked={checked}
onChange={handleChange}
inputProps={{ 'aria-label': 'primary checkbox' }}
/>
<CustomRadio disabled inputProps={{ 'aria-label': 'disabled checked checkbox' }} />
<CustomRadio
checked={!checked}
inputProps={{ 'aria-label': 'checkbox with default color' }}
/>
</Box>
"use client";
import React from 'react';
import { Box, FormControlLabel } from '@mui/material';
import { styled } from '@mui/material/styles';
import Radio, { RadioProps } from '@mui/material/Radio';
const BpIcon = styled('span')(({ theme }) => ({
borderRadius: '50%',
width: 21,
height: 21,
boxShadow:
theme.palette.mode === 'dark'
? '0 0 0 1px {theme.palette.grey[200]}'
: 'inset 0 0 0 1px {theme.palette.grey[300]}',
backgroundColor: 'transparent',
'.Mui-focusVisible &': {
outline:
theme.palette.mode === 'dark'
? '0px auto {theme.palette.grey[200]}'
: '0px auto {theme.palette.grey[300]}',
outlineOffset: 2,
},
'input:hover ~ &': {
backgroundColor: theme.palette.primary,
},
'input:disabled ~ &': {
boxShadow: 'none',
background: theme.palette.grey[100],
},
}));
const BpCheckedIcon = styled(BpIcon)(({ theme }) => ({
boxShadow: 'none',
'&:before': {
display: 'block',
width: 21,
height: 21,
backgroundImage:
theme.palette.mode === 'dark'
? 'radial-gradient({theme.palette.background.paper},{theme.palette.background.paper} 28%,transparent 32%)'
: 'radial-gradient(#fff,#fff 28%,transparent 32%)',
content: '""',
},
}));
function CustomRadio(props: RadioProps) {
return (
<Radio
disableRipple
color="default"
checkedIcon={
<BpCheckedIcon
sx={{
backgroundColor: props.color ? '{props.color}.main' : 'primary.main',
}}
/>
}
icon={<BpIcon />}
inputProps={{ 'aria-label': 'Checkbox demo' }}
{...props}
/>
);
}
const [checked, setChecked] = React.useState(true);
const handleChange = (event) => {
setChecked(event.target.checked);
};
<Box textAlign="center">
<FormControlLabel
value="end"
control={<CustomRadio color="primary" checked />}
label="Primary"
labelPlacement="end"
/>
<FormControlLabel
value="end"
control={<CustomRadio color="secondary" checked />}
label="Secondary"
labelPlacement="end"
/>
<FormControlLabel
value="end"
control={<CustomRadio color="success" checked />}
label="Success"
labelPlacement="end"
/>
<FormControlLabel
value="end"
control={<CustomRadio color="error" checked />}
label="Danger"
labelPlacement="end"
/>
<FormControlLabel
value="end"
control={<CustomRadio color="warning" checked />}
label="Warning"
labelPlacement="end"
/>
</Box>
"use client";
import React from 'react';
import { Box, Radio } from '@mui/material';
const [checked, setChecked] = React.useState(true);
const handleChange = (event) => {
setChecked(event.target.checked);
};
<Box textAlign="center">
<Radio
checked={checked}
onChange={handleChange}
inputProps={{ 'aria-label': 'primary checkbox' }}
/>
<Radio disabled inputProps={{ 'aria-label': 'disabled checked checkbox' }} />
<Radio color="default" inputProps={{ 'aria-label': 'checkbox with default color' }} />
</Box>
"use client";
import React from 'react';
import { Box, Radio } from '@mui/material';
const [checked, setChecked] = React.useState(true);
const handleChange = (event) => {
setChecked(event.target.checked);
};
<Box textAlign="center">
<Radio
checked={checked}
onChange={handleChange}
color="primary"
inputProps={{ 'aria-label': 'primary checkbox' }}
/>
<Radio
checked={checked}
onChange={handleChange}
color="secondary"
inputProps={{ 'aria-label': 'primary checkbox' }}
/>
<Radio
checked={checked}
onChange={handleChange}
inputProps={{ 'aria-label': 'primary checkbox' }}
sx={{
color: (theme) => theme.palette.success.main,
'&.Mui-checked': {
color: (theme) => theme.palette.success.main,
},
}}
/>
<Radio
checked={checked}
onChange={handleChange}
inputProps={{ 'aria-label': 'primary checkbox' }}
sx={{
color: (theme) => theme.palette.error.main,
'&.Mui-checked': {
color: (theme) => theme.palette.error.main,
},
}}
/>
<Radio
checked={checked}
onChange={handleChange}
inputProps={{ 'aria-label': 'primary checkbox' }}
sx={{
color: (theme) => theme.palette.warning.main,
'&.Mui-checked': {
color: (theme) => theme.palette.warning.main,
},
}}
/>
</Box>
"use client";
import React from 'react';
import { Box, Radio } from '@mui/material';
const [selectedValue, setSelectedValue] = React.useState('a');
const handleChange2 = (event) => {
setSelectedValue(event.target.value);
};
const controlProps = (item) => ({
checked: selectedValue === item,
onChange: handleChange2,
value: item,
name: 'size-radio-button-demo',
inputProps: { 'aria-label': item },
});
<Box textAlign="center">
<Radio {...controlProps('a')} size="small" />
<Radio {...controlProps('b')} />
<Radio
{...controlProps('c')}
sx={{
'& .MuiSvgIcon-root': {
fontSize: 28,
},
}}
/>
</Box>
"use client";
import React from 'react';
import { Box, RadioGroup, FormControlLabel } from '@mui/material';
import { styled } from '@mui/material/styles';
import Radio, { RadioProps } from '@mui/material/Radio';
const BpIcon = styled('span')(({ theme }) => ({
borderRadius: '50%',
width: 21,
height: 21,
boxShadow:
theme.palette.mode === 'dark'
? '0 0 0 1px {theme.palette.grey[200]}'
: 'inset 0 0 0 1px {theme.palette.grey[300]}',
backgroundColor: 'transparent',
'.Mui-focusVisible &': {
outline:
theme.palette.mode === 'dark'
? '0px auto {theme.palette.grey[200]}'
: '0px auto {theme.palette.grey[300]}',
outlineOffset: 2,
},
'input:hover ~ &': {
backgroundColor: theme.palette.primary,
},
'input:disabled ~ &': {
boxShadow: 'none',
background: theme.palette.grey[100],
},
}));
const BpCheckedIcon = styled(BpIcon)(({ theme }) => ({
boxShadow: 'none',
'&:before': {
display: 'block',
width: 21,
height: 21,
backgroundImage:
theme.palette.mode === 'dark'
? 'radial-gradient({theme.palette.background.paper},{theme.palette.background.paper} 28%,transparent 32%)'
: 'radial-gradient(#fff,#fff 28%,transparent 32%)',
content: '""',
},
}));
function CustomRadio(props: RadioProps) {
return (
<Radio
disableRipple
color="default"
checkedIcon={
<BpCheckedIcon
sx={{
backgroundColor: props.color ? '{props.color}.main' : 'primary.main',
}}
/>
}
icon={<BpIcon />}
inputProps={{ 'aria-label': 'Checkbox demo' }}
{...props}
/>
);
}
<Box textAlign="center">
<RadioGroup row aria-label="position" name="position" defaultValue="top">
<FormControlLabel value="top" control={<CustomRadio />} label="Top" labelPlacement="top" />
<FormControlLabel
value="start"
control={<CustomRadio />}
label="Start"
labelPlacement="start"
/>
<FormControlLabel
value="bottom"
control={<CustomRadio />}
label="Bottom"
labelPlacement="bottom"
/>
<FormControlLabel value="end" control={<CustomRadio />} label="End" />
</RadioGroup>
</Box>