diff --git a/docs/src/pages/components/switches/CustomizedSwitches.js b/docs/src/pages/components/switches/CustomizedSwitches.js
index 1dcb8778462c5a..4502784c0e5363 100644
--- a/docs/src/pages/components/switches/CustomizedSwitches.js
+++ b/docs/src/pages/components/switches/CustomizedSwitches.js
@@ -6,39 +6,134 @@ import Switch from '@material-ui/core/Switch';
import Stack from '@material-ui/core/Stack';
import Typography from '@material-ui/core/Typography';
+const MaterialUISwitch = styled(Switch)({
+ width: 62,
+ height: 34,
+ padding: 7,
+ '& .MuiSwitch-switchBase': {
+ margin: 1,
+ padding: 0,
+ transform: 'translateX(6px)',
+ '&.Mui-checked': {
+ color: '#fff',
+ transform: 'translateX(22px)',
+ '& .MuiSwitch-thumb:before': {
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ },
+ '& + .MuiSwitch-track': {
+ opacity: 1,
+ backgroundColor: '#aab4be',
+ },
+ },
+ },
+ '& .MuiSwitch-thumb': {
+ backgroundColor: '#001e3c',
+ width: 32,
+ height: 32,
+ '&:before': {
+ content: "''",
+ position: 'absolute',
+ width: '100%',
+ height: '100%',
+ left: 0,
+ top: 0,
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center',
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ },
+ },
+ '& .MuiSwitch-track': {
+ opacity: 1,
+ backgroundColor: '#aab4be',
+ borderRadius: 20 / 2,
+ },
+});
+
+const Android12Switch = styled(Switch)(({ theme }) => ({
+ padding: 8,
+ '& .MuiSwitch-track': {
+ borderRadius: 22 / 2,
+ '&:before, &:after': {
+ content: '""',
+ position: 'absolute',
+ top: '50%',
+ transform: 'translateY(-50%)',
+ width: 16,
+ height: 16,
+ },
+ '&:before': {
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ left: 12,
+ },
+ '&:after': {
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ right: 12,
+ },
+ },
+ '& .MuiSwitch-thumb': {
+ boxShadow: 'none',
+ width: 16,
+ height: 16,
+ margin: 2,
+ },
+}));
+
const IOSSwitch = styled((props) => (
))(({ theme }) => ({
width: 42,
height: 26,
padding: 0,
- margin: theme.spacing(1),
'& .MuiSwitch-switchBase': {
- padding: 1,
+ padding: 0,
+ margin: 2,
+ transitionDuration: '300ms',
'&.Mui-checked': {
transform: 'translateX(16px)',
- color: theme.palette.common.white,
+ color: '#fff',
'& + .MuiSwitch-track': {
- backgroundColor: '#52d869',
+ backgroundColor: '#65C466',
opacity: 1,
border: 0,
},
+ '&.Mui-disabled + .MuiSwitch-track': {
+ opacity: 0.5,
+ },
},
'&.Mui-focusVisible .MuiSwitch-thumb': {
- color: '#52d869',
+ color: '#33cf4d',
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': {
- width: 24,
- height: 24,
+ boxSizing: 'border-box',
+ width: 22,
+ height: 22,
},
'& .MuiSwitch-track': {
borderRadius: 26 / 2,
- border: `1px solid ${theme.palette.grey[400]}`,
- backgroundColor: theme.palette.grey[50],
+ backgroundColor: theme.palette.mode === 'light' ? '#E9E9EA' : '#39393D',
opacity: 1,
- transition: theme.transitions.create(['background-color', 'border-color']),
+ transition: theme.transitions.create(['background-color'], {
+ duration: 500,
+ }),
},
}));
@@ -52,7 +147,7 @@ const AntSwitch = styled(Switch)(({ theme }) => ({
color: theme.palette.grey[500],
'&.Mui-checked': {
transform: 'translateX(12px)',
- color: theme.palette.common.white,
+ color: '#fff',
'& + .MuiSwitch-track': {
opacity: 1,
backgroundColor: theme.palette.primary.main,
@@ -69,14 +164,26 @@ const AntSwitch = styled(Switch)(({ theme }) => ({
border: `1px solid ${theme.palette.grey[500]}`,
borderRadius: 16 / 2,
opacity: 1,
- backgroundColor: theme.palette.common.white,
+ backgroundColor: '#fff',
+ boxSizing: 'border-box',
},
}));
export default function CustomizedSwitches() {
return (
- } label="iOS style" />
+ }
+ label="Material-UI switch"
+ />
+ }
+ label="Android 12"
+ />
+ }
+ label="iOS style"
+ />
Off
diff --git a/docs/src/pages/components/switches/CustomizedSwitches.tsx b/docs/src/pages/components/switches/CustomizedSwitches.tsx
index 9dd13b3265d92d..c2bf6a6490ca21 100644
--- a/docs/src/pages/components/switches/CustomizedSwitches.tsx
+++ b/docs/src/pages/components/switches/CustomizedSwitches.tsx
@@ -6,39 +6,134 @@ import Switch, { SwitchProps } from '@material-ui/core/Switch';
import Stack from '@material-ui/core/Stack';
import Typography from '@material-ui/core/Typography';
+const MaterialUISwitch = styled(Switch)({
+ width: 62,
+ height: 34,
+ padding: 7,
+ '& .MuiSwitch-switchBase': {
+ margin: 1,
+ padding: 0,
+ transform: 'translateX(6px)',
+ '&.Mui-checked': {
+ color: '#fff',
+ transform: 'translateX(22px)',
+ '& .MuiSwitch-thumb:before': {
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ },
+ '& + .MuiSwitch-track': {
+ opacity: 1,
+ backgroundColor: '#aab4be',
+ },
+ },
+ },
+ '& .MuiSwitch-thumb': {
+ backgroundColor: '#001e3c',
+ width: 32,
+ height: 32,
+ '&:before': {
+ content: "''",
+ position: 'absolute',
+ width: '100%',
+ height: '100%',
+ left: 0,
+ top: 0,
+ backgroundRepeat: 'no-repeat',
+ backgroundPosition: 'center',
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ },
+ },
+ '& .MuiSwitch-track': {
+ opacity: 1,
+ backgroundColor: '#aab4be',
+ borderRadius: 20 / 2,
+ },
+});
+
+const Android12Switch = styled(Switch)(({ theme }) => ({
+ padding: 8,
+ '& .MuiSwitch-track': {
+ borderRadius: 22 / 2,
+ '&:before, &:after': {
+ content: '""',
+ position: 'absolute',
+ top: '50%',
+ transform: 'translateY(-50%)',
+ width: 16,
+ height: 16,
+ },
+ '&:before': {
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ left: 12,
+ },
+ '&:after': {
+ backgroundImage: `url('data:image/svg+xml;utf8,')`,
+ right: 12,
+ },
+ },
+ '& .MuiSwitch-thumb': {
+ boxShadow: 'none',
+ width: 16,
+ height: 16,
+ margin: 2,
+ },
+}));
+
const IOSSwitch = styled((props: SwitchProps) => (
))(({ theme }) => ({
width: 42,
height: 26,
padding: 0,
- margin: theme.spacing(1),
'& .MuiSwitch-switchBase': {
- padding: 1,
+ padding: 0,
+ margin: 2,
+ transitionDuration: '300ms',
'&.Mui-checked': {
transform: 'translateX(16px)',
- color: theme.palette.common.white,
+ color: '#fff',
'& + .MuiSwitch-track': {
- backgroundColor: '#52d869',
+ backgroundColor: '#65C466',
opacity: 1,
border: 0,
},
+ '&.Mui-disabled + .MuiSwitch-track': {
+ opacity: 0.5,
+ },
},
'&.Mui-focusVisible .MuiSwitch-thumb': {
- color: '#52d869',
+ color: '#33cf4d',
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': {
- width: 24,
- height: 24,
+ boxSizing: 'border-box',
+ width: 22,
+ height: 22,
},
'& .MuiSwitch-track': {
borderRadius: 26 / 2,
- border: `1px solid ${theme.palette.grey[400]}`,
- backgroundColor: theme.palette.grey[50],
+ backgroundColor: theme.palette.mode === 'light' ? '#E9E9EA' : '#39393D',
opacity: 1,
- transition: theme.transitions.create(['background-color', 'border-color']),
+ transition: theme.transitions.create(['background-color'], {
+ duration: 500,
+ }),
},
}));
@@ -52,7 +147,7 @@ const AntSwitch = styled(Switch)(({ theme }) => ({
color: theme.palette.grey[500],
'&.Mui-checked': {
transform: 'translateX(12px)',
- color: theme.palette.common.white,
+ color: '#fff',
'& + .MuiSwitch-track': {
opacity: 1,
backgroundColor: theme.palette.primary.main,
@@ -69,14 +164,26 @@ const AntSwitch = styled(Switch)(({ theme }) => ({
border: `1px solid ${theme.palette.grey[500]}`,
borderRadius: 16 / 2,
opacity: 1,
- backgroundColor: theme.palette.common.white,
+ backgroundColor: '#fff',
+ boxSizing: 'border-box',
},
}));
export default function CustomizedSwitches() {
return (
- } label="iOS style" />
+ }
+ label="Material-UI switch"
+ />
+ }
+ label="Android 12"
+ />
+ }
+ label="iOS style"
+ />
Off