58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
import { styled } from '@mui/material/styles';
|
|
import Switch from '@mui/material/Switch';
|
|
|
|
const IOSSwitch = styled((props) => (
|
|
<Switch focusVisibleClassName=".Mui-focusVisible" disableRipple {...props} />
|
|
))(({ theme }) => ({
|
|
width: 42,
|
|
height: 26,
|
|
padding: 0,
|
|
'& .MuiSwitch-switchBase': {
|
|
padding: 0,
|
|
margin: 2,
|
|
transitionDuration: '300ms',
|
|
'&.Mui-checked': {
|
|
transform: 'translateX(16px)',
|
|
color: '#fff',
|
|
'& + .MuiSwitch-track': {
|
|
backgroundColor: theme.palette.primary.main,
|
|
opacity: 1,
|
|
border: 0,
|
|
},
|
|
'&.Mui-disabled + .MuiSwitch-track': {
|
|
opacity: 0.5,
|
|
},
|
|
},
|
|
'&.Mui-focusVisible .MuiSwitch-thumb': {
|
|
color: theme.palette.primary.main,
|
|
border: '6px solid #fff',
|
|
},
|
|
'&.Mui-disabled .MuiSwitch-thumb': {
|
|
color:
|
|
theme.palette.mode === 'light'
|
|
? theme.palette.grey[100]
|
|
: theme.palette.grey[600],
|
|
},
|
|
'&.Mui-disabled + .MuiSwitch-track': {
|
|
opacity: theme.palette.mode === 'light' ? 0.7 : 0.3,
|
|
},
|
|
},
|
|
'& .MuiSwitch-thumb': {
|
|
boxSizing: 'border-box',
|
|
width: 22,
|
|
height: 22,
|
|
borderRadius: 11,
|
|
},
|
|
'& .MuiSwitch-track': {
|
|
borderRadius: 26 / 2,
|
|
backgroundColor:
|
|
theme.palette.mode === 'light' ? '#E9E9EA' : 'rgba(255,255,255,0.35)',
|
|
opacity: 1,
|
|
transition: theme.transitions.create(['background-color'], {
|
|
duration: 500,
|
|
}),
|
|
},
|
|
}));
|
|
|
|
export default IOSSwitch;
|